shjung 3 жил өмнө
parent
commit
bee0574276
38 өөрчлөгдсөн 1068 нэмэгдсэн , 554 устгасан
  1. 33 3
      src/main/java/com/its/op/controller/its/LoginController.java
  2. 79 0
      src/main/java/com/its/op/controller/its/vms/CsVmsFormController.java
  3. 1 1
      src/main/java/com/its/op/controller/its/vms/TbVmsFormController.java
  4. 43 20
      src/main/java/com/its/op/dao/repository/bis/BitStatusHistoryRepository.java
  5. 4 0
      src/main/java/com/its/op/dao/repository/its/vms/TbVmsFormRepository.java
  6. 30 0
      src/main/java/com/its/op/dto/bis/BitStatusHistoryInf.java
  7. 1 1
      src/main/java/com/its/op/entity/its/vms/TbVmsFormSimple.java
  8. 28 10
      src/main/java/com/its/op/scheduler/job/DbSvrSttsJobThread.java
  9. 8 2
      src/main/java/com/its/op/security/WebSecurityConfig.java
  10. 19 17
      src/main/java/com/its/op/service/bis/BitService.java
  11. 5 4
      src/main/java/com/its/op/service/its/vms/TbVmsFormService.java
  12. 6 6
      src/main/resources/application-dev.yml
  13. 30 10
      src/main/resources/application-prod.yml
  14. 2 2
      src/main/resources/application.yml
  15. 3 2
      src/main/resources/static/application/op/04-1.statistics/02.atrd-traffic/atrd-traffic.js
  16. 1 1
      src/main/resources/static/application/op/04-1.statistics/06.unit-syst-stts/unit-syst-stts.js
  17. 4 3
      src/main/resources/static/application/op/04-2.analysis/04.traf-hs/traf-hs.css
  18. 1 1
      src/main/resources/static/application/op/04-2.analysis/04.traf-hs/traf-hs.html
  19. 12 72
      src/main/resources/static/application/op/04-2.analysis/04.traf-hs/traf-hs.js
  20. 10 112
      src/main/resources/static/application/op/04-2.analysis/05.ptrn-data/ptrn-data.css
  21. 16 16
      src/main/resources/static/application/op/04-2.analysis/05.ptrn-data/ptrn-data.html
  22. 33 58
      src/main/resources/static/application/op/04-2.analysis/05.ptrn-data/ptrn-data.js
  23. 3 3
      src/main/resources/static/application/op/05.cctv/01.manager/manager.js
  24. 1 1
      src/main/resources/static/application/op/06.vms/01.system/02.control/control.js
  25. 1 1
      src/main/resources/static/application/op/06.vms/02.manager/03.symbl-vmp/02.symbl-vmp1/symbl-vmp1.html
  26. 29 0
      src/main/resources/static/application/op/06.vms/03.form/manage.css
  27. 1 1
      src/main/resources/static/application/op/06.vms/03.form/manage.html
  28. 557 165
      src/main/resources/static/application/op/06.vms/03.form/manage.js
  29. 4 1
      src/main/resources/static/application/op/06.vms/03.form/parse.html
  30. 5 0
      src/main/resources/static/application/op/06.vms/05.history/01.stts/stts.css
  31. 58 3
      src/main/resources/static/application/op/06.vms/05.history/01.stts/stts.js
  32. 3 7
      src/main/resources/static/application/op/08.database/06.clct-syst-stup/clct-syst-stup.html
  33. 6 5
      src/main/resources/static/application/op/99.common/common.css
  34. 2 2
      src/main/resources/static/application/wall/main/main-func.js
  35. 3 3
      src/main/resources/static/application/wall/main/main-top.html
  36. 6 7
      src/main/resources/static/application/wall/main/main.html
  37. 17 12
      src/main/resources/static/application/wall/main/main.js
  38. 3 2
      src/main/resources/static/js/constant/constant.js

+ 33 - 3
src/main/java/com/its/op/controller/its/LoginController.java

@@ -90,6 +90,36 @@ public class LoginController {
 //        this.service.logout(req);
 //    }
 
+    @PostMapping({"/userinfo.do"})
+    public String getUserInfo(HttpServletRequest request, HttpServletResponse response) {
+        Cookie[] cookies = request.getCookies();
+        for (int ii = 0; ii < cookies.length; ii++) {
+            log.error("getUserInfo: {}, {}", cookies[ii].getName(), cookies[ii].getValue());
+        }
+        String encUserId = "";
+        String loginHms = "";
+        if (cookies != null && cookies.length > 0) {
+            try {
+                encUserId = CookieUtils.getCookie(request, WebMvcConfig.USER_UUID);
+                loginHms = CookieUtils.getCookie(request, WebMvcConfig.USER_TIME);
+                expiredCookie(response, WebMvcConfig.USER_UUID);
+                expiredCookie(response, WebMvcConfig.USER_TIME);
+            } catch (Exception e) {
+                log.error("{}", e.getMessage());
+            }
+        }
+        if (!"".equals(encUserId)) {
+            String userId = WebMvcConfig.decUserId(encUserId);
+            LoginDto.LogoutReqDto req = LoginDto.LogoutReqDto.builder()
+                    .user_id(WebMvcConfig.decUserId(userId))
+                    .login_hms(loginHms)
+                    .build();
+            log.info("logout: {}", req.toString());
+            encUserId = userId;
+        }
+        return encUserId;
+    }
+
     /**
      * 로그아웃
      * @param request
@@ -99,9 +129,9 @@ public class LoginController {
     @GetMapping({"/logout.do"})
     public ModelAndView getLogout(HttpServletRequest request, HttpServletResponse response) {
         Cookie[] cookies = request.getCookies();
-//        for (int ii = 0; ii < cookies.length; ii++) {
-//            log.error("getLogout: {}, {}", cookies[ii].getName(), cookies[ii].getValue());
-//        }
+        for (int ii = 0; ii < cookies.length; ii++) {
+            log.error("getLogout: {}, {}", cookies[ii].getName(), cookies[ii].getValue());
+        }
         String encUserId = "";
         String loginHms = "";
         if (cookies != null && cookies.length > 0) {

+ 79 - 0
src/main/java/com/its/op/controller/its/vms/CsVmsFormController.java

@@ -0,0 +1,79 @@
+package com.its.op.controller.its.vms;
+
+import com.its.op.dto.its.vms.TbVmsFormDto;
+import com.its.op.dto.its.vms.TbVmsSymbLibDto;
+import com.its.op.service.its.vms.TbVmsFormService;
+import com.its.op.service.its.vms.TbVmsSymbLibVmp0Service;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.NoSuchElementException;
+
+@Slf4j
+@Api(tags = "12.VMS-2.폼관리-1.문자식/도형식 폼관리(CS-APP)")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/cs-api/vms/form/manage")
+public class CsVmsFormController {
+
+    private final TbVmsFormService service;
+    private final TbVmsSymbLibVmp0Service symbService;
+
+    @ApiOperation(value = "VMS FORM 정보변경-폼정보만 업데이트(TB_VMS_FORM)", response = TbVmsFormDto.class)
+    @PostMapping(value = "/update/{key}/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsFormDto updateById(@PathVariable final String key, @PathVariable final Integer id, @RequestBody @Valid final TbVmsFormDto.TbVmsFormUpdReq req) {
+        log.warn("Update Vms Form: {}, {}", key, id);
+        if (!StringUtils.equals(key, "abcdefg1234567890x")) {
+            throw new NoSuchElementException("Authentication key mismatched: " + id);
+        }
+        return this.service.updateById(id, req);
+    }
+
+    @ApiOperation(value = "VMS FORM 정보변경/생성/업데이트-개별-객체정보포함(TB_VMS_FORM)", response = TbVmsFormDto.class)
+    @PostMapping(value = "/merge/{key}/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsFormDto mergeInfo(@PathVariable final String key, @PathVariable("id") Integer id, @RequestBody @Valid final TbVmsFormDto.TbVmsFormUpdReq req) {
+        log.warn("Merge Vms Form: {}, {}", key, id);
+        if (!StringUtils.equals(key, "abcdefg1234567890x")) {
+            throw new NoSuchElementException("Authentication key mismatched: " + id);
+        }
+        return this.service.mergeInfo(req);
+    }
+
+    @ApiOperation(value = "VMS FORM 정보삭제-개별(TB_VMS_FORM)", response = TbVmsFormDto.class)
+    @PostMapping(value = "/delete/{key}/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsFormDto deleteById(@PathVariable final String key, @PathVariable("id") Integer id) {
+        log.warn("Delete Vms Form: {}, {}", key, id);
+        if (!StringUtils.equals(key, "abcdefg1234567890x")) {
+            throw new NoSuchElementException("Authentication key mismatched: " + id);
+        }
+        return this.service.deleteById(id);
+    }
+
+    @ApiOperation(value = "VMS FORM 복사 추가", response = TbVmsFormDto.class)
+    @PostMapping(value = "/copy/{key}/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsFormDto formCopyAdd(@PathVariable final String key, @PathVariable("id") Integer id, @RequestBody @Valid final TbVmsFormDto.TbVmsFormCopyReq req) {
+        log.warn("Copy Vms Form: {}, {}, {}, {}", key, id, req.getVmsFormId(), req.getVmsFormNm());
+        if (!StringUtils.equals(key, "abcdefg1234567890x")) {
+            throw new NoSuchElementException("Authentication key mismatched: " + id);
+        }
+        return this.service.formCopyAdd(req);
+    }
+
+    @ApiOperation(value = "VMS 심벌이미지 정보변경/생성-개별(TB_VMS_SYMB_LIB)", response = TbVmsSymbLibDto.class)
+    @PostMapping(value = "/symb/0/merge/{key}/{id}", produces = {"application/json; charset=utf8"})
+    public TbVmsSymbLibDto mergeVmsSymbInfo(@PathVariable final String key, @PathVariable("id") Integer id, @RequestBody @Valid final TbVmsSymbLibDto.TbVmsSymbLibUpdReq req) {
+        log.warn("Merge Vms Symbol0: {}, {}", key, id);
+        if (!StringUtils.equals(key, "abcdefg1234567890x")) {
+            throw new NoSuchElementException("Authentication key mismatched: " + id);
+        }
+        return this.symbService.mergeInfo(req);
+    }
+
+}

+ 1 - 1
src/main/java/com/its/op/controller/its/vms/TbVmsFormController.java

@@ -37,7 +37,7 @@ public class TbVmsFormController {
             @ApiParam(name = "type", value = "VMS 크기유형", example = "VMP2", required = true)
             @PathVariable final String type
     ) {
-        return service.findAllByType(type);
+        return service.findAllByTypeSimple(type);
     }
 
     @ApiOperation(value = "VMS FORM 개별조회(TB_VMS_FORM)", response = TbVmsFormDto.class)

+ 43 - 20
src/main/java/com/its/op/dao/repository/bis/BitStatusHistoryRepository.java

@@ -1,42 +1,65 @@
 package com.its.op.dao.repository.bis;
 
+import com.its.op.dto.bis.BitStatusHistoryInf;
+import com.its.op.dto.its.common.SttsHsErrCntInf;
 import com.its.op.entity.bis.BitStatusHistory;
 import com.its.op.entity.bis.BitStatusHistoryKey;
-import com.its.op.dto.its.common.SttsHsErrCntInf;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
-import java.time.LocalDateTime;
 import java.util.List;
 
 @Repository
 public interface BitStatusHistoryRepository extends JpaRepository<BitStatusHistory, BitStatusHistoryKey>, JpaSpecificationExecutor<BitStatusHistory> {
 
-    @Query("select p from BitStatusHistory p " +
-            " where (p.bitid, p.recorddate, p.recordtimestamp) " +
-            "    in (select h.bitid, max(h.recorddate), max(h.recordtimestamp) " +
-            "          from BitStatusHistory h " +
-            "         where h.recorddate >= :fromDt " +
-            "         group by h.bitid) ")
-    List<BitStatusHistory> findAllStts(@Param("fromDt") LocalDateTime fromDt);
+//    @Query("select p from BitStatusHistory p " +
+//            " where (p.bitid, p.recorddate, p.recordtimestamp) " +
+//            "    in (select h.bitid, max(h.recorddate), max(h.recordtimestamp) " +
+//            "          from BitStatusHistory h " +
+//            "         where h.recorddate >= :fromDt " +
+//            "         group by h.bitid) " +
+//            "   and p.recorddate >= :fromDt" )
+//     List<BitStatusHistory> findAllStts(@Param("fromDt") LocalDateTime fromDt);
 
-    @Query("select p from BitStatusHistory p " +
+    @Query(value =
+            "select to_char(p.recorddate, 'YYYYMMDDHH24MISS') as recorddate, p.bitid, p.temperature, "+
+            " p.wcommstatus, p.doorstatus, p.fanstatus, p.heateropstatus, p.monitorstatus " +
+            "  from BITSTATUS_HISTORY p " +
             " where (p.bitid, p.recorddate, p.recordtimestamp) " +
             "    in (select h.bitid, max(h.recorddate), max(h.recordtimestamp) " +
-            "          from BitStatusHistory h " +
-            "         where h.recorddate >= :fromDt " +
+            "          from BITSTATUS_HISTORY h " +
+            "         where h.recorddate >= trunc(sysdate) " +
             "         group by h.bitid) " +
-            "  and p.wcommstatus <> '1'")
-    List<BitStatusHistory> findAllCommError(@Param("fromDt") LocalDateTime fromDt);
+            "   and p.recorddate >= trunc(sysdate)",
+    nativeQuery = true)
+    List<BitStatusHistoryInf> findAllSttsNative();
+
+//    @Query("select p from BitStatusHistory p " +
+//            " where (p.bitid, p.recorddate, p.recordtimestamp) " +
+//            "    in (select h.bitid, max(h.recorddate), max(h.recordtimestamp) " +
+//            "          from BitStatusHistory h " +
+//            "         where h.recorddate >= :fromDt " +
+//            "         group by h.bitid) " +
+//            "   and p.recorddate >= :fromDt " +
+//            "   and p.wcommstatus <> '1'")
+//    List<BitStatusHistory> findAllCommError(@Param("fromDt") LocalDateTime fromDt);
+
+//    @Query("select p.bitid as nmbr, count(p.bitid) as errCnt " +
+//            "  from BitStatusHistory p " +
+//            " where p.recorddate >= :fromDt " +
+//            "   and p.wcommstatus <> '1' " +
+//            " group by p.bitid")
+//    List<SttsHsErrCntInf> findAllCommErrorCount(@Param("fromDt") LocalDateTime fromDt);
 
-    @Query("select p.bitid as nmbr, count(p.bitid) as errCnt " +
-            "  from BitStatusHistory p " +
-            " where p.recorddate >= :fromDt " +
+    @Query(value =
+            "select p.bitid as nmbr, count(p.bitid) as errCnt " +
+            "  from BITSTATUS_HISTORY p " +
+            " where p.recorddate >= trunc(sysdate) " +
             "   and p.wcommstatus <> '1' " +
-            " group by p.bitid")
-    List<SttsHsErrCntInf> findAllCommErrorCount(@Param("fromDt") LocalDateTime fromDt);
+            " group by p.bitid",
+            nativeQuery = true)
+    List<SttsHsErrCntInf> findAllCommErrorCountNative();
 
 }

+ 4 - 0
src/main/java/com/its/op/dao/repository/its/vms/TbVmsFormRepository.java

@@ -2,6 +2,7 @@ package com.its.op.dao.repository.its.vms;
 
 import com.its.op.entity.its.vms.TbVmsForm;
 import com.its.op.entity.its.vms.TbVmsFormObjectDetlInf;
+import com.its.op.entity.its.vms.TbVmsFormSimple;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
@@ -21,6 +22,9 @@ public interface TbVmsFormRepository extends JpaRepository<TbVmsForm, Integer>,
     @Query("select p from TbVmsForm p where p.vmsTypeCd = :vmsTypeCd order by p.vmsFormTypeCd, p.vmsFormId")
     List<TbVmsForm> findAllByVmsType(@Param("vmsTypeCd") String vmsTypeCd);
 
+    @Query("select p from TbVmsFormSimple p where p.vmsTypeCd = :vmsTypeCd order by p.vmsFormTypeCd, p.vmsFormId")
+    List<TbVmsFormSimple> findAllByVmsTypeSimple(@Param("vmsTypeCd") String vmsTypeCd);
+
     @Query("select p from TbVmsForm p where p.vmsTypeCd = :vmsTypeCd and p.vmsFormTypeCd in :formTypeCd order by p.vmsFormTypeCd, p.vmsFormId")
     List<TbVmsForm> findAllByVmsTypeAndFormType(@Param("vmsTypeCd") String vmsTypeCd, @Param("formTypeCd") List<Integer> formTypeCd);
 

+ 30 - 0
src/main/java/com/its/op/dto/bis/BitStatusHistoryInf.java

@@ -0,0 +1,30 @@
+package com.its.op.dto.bis;
+
+import java.math.BigDecimal;
+
+public interface BitStatusHistoryInf {
+    String getRecorddate();
+//    String getRecordtimestamp();
+    String getBitid();
+    BigDecimal getTemperature();
+    String getWcommstatus();
+    String getDoorstatus();
+    String getFanstatus();
+    String getHeateropstatus();
+    String getMonitorstatus();
+//    Integer humidity();
+//    String fanstatus();
+//    String fanopstatus();
+//    String wcommstatus();
+//    String wlcommstatus();
+//    String heaterstatus();
+//    String heateropstatus();
+//    String camerastatus();
+//    String doorstatus();
+//    String monitorstatus();
+//    Integer memorycapacity();
+//    String lcdlight();
+//    Integer illumination();
+//    Integer soundvolume();
+
+}

+ 1 - 1
src/main/java/com/its/op/entity/its/vms/TbVmsFormSimple.java

@@ -75,7 +75,7 @@ public class TbVmsFormSimple implements Serializable {
                 .vmsFormExpl(this.vmsFormExpl)
                 .vmsMsgDsplDrctCd(this.vmsMsgDsplDrctCd)
                 .symbLibNmbr(this.symbLibNmbr)
-                .imagFmt("png")
+                .imagFmt("")
                 .vmsMsgDsplMthdCd(this.vmsMsgDsplMthdCd)
                 .cctvMngmNmbr(this.cctvMngmNmbr)
                 .build();

+ 28 - 10
src/main/java/com/its/op/scheduler/job/DbSvrSttsJobThread.java

@@ -72,17 +72,35 @@ public class DbSvrSttsJobThread {
                 "          FROM DBA_FREE_SPACE Y " +
                 "         GROUP BY Y.TABLESPACE_NAME) B " +
                 " WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME(+) " +
-                "   AND A.TABLESPACE_NAME IN (  'ITS_HIST_DATA' " +
-                "                             , 'ITS_HIST_INDX' " +
-                "                             , 'ITS_TBS_DATA' " +
-                "                             , 'ITS_TBS_INDX' " +
-                "                             , 'UTIS_HIST_DATA' " +
+                "   AND A.TABLESPACE_NAME IN (   'UTIS_HIST_DATA6' " +
                 "                             , 'UTIS_HIST_INDX' " +
-                "                             , 'X' " +
-                "                             , 'Y' " +
-                "                             , 'D' " +
-                "                             , 'D' " +
-                "                             , 'D' " +
+                "                             , 'UTIS_TBS_DATA' " +
+                "                             , 'UTIS_TBS_INDX' " +
+                "                             , 'TS_BIS01_DAT' " +
+                "                             , 'TS_BIS01_IDX' " +
+                "                             , 'TS_BIS02_DAT' " +
+                "                             , 'TS_BIS02_IDX' " +
+                "                             , 'TS_BIS03_DAT' " +
+                "                             , 'TS_BIS03_IDX' " +
+                "                             , 'TS_BIS04_DAT' " +
+                "                             , 'TS_BIS04_IDX' " +
+                "                             , 'TS_BIS05_DAT' " +
+                "                             , 'TS_BIS05_IDX' " +
+                "                             , 'TS_BIS06_DAT' " +
+                "                             , 'TS_BIS06_IDX' " +
+                "                             , 'TS_EXT01_DAT' " +
+                "                             , 'TS_EXT01_IDX' " +
+                "                             , 'TS_MST01_DAT' " +
+                "                             , 'TS_MST01_IDX' " +
+                "                             , 'ITS_HIST_DATA' " +
+                "                             , 'ITS_HIST_INDX' " +
+                "                             , 'TS_GIS01_DAT' " +
+                "                             , 'TS_SIG01_DAT' " +
+                "                             , 'TS_SIG01_IDX' " +
+                "                             , 'TS_MST01_DAT' " +
+                "                             , 'TS_MST01_IDX' " +
+                "                             , 'TS_ITS02_DAT' " +
+                "                             , 'TS_ITS02_IDX' " +
                 "                             )";
 
         String sql2 =

+ 8 - 2
src/main/java/com/its/op/security/WebSecurityConfig.java

@@ -39,6 +39,12 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
         web.ignoring().antMatchers("/js/**", "/images/**", "/libs/**", "/css/**", "/application/fonts/**");
         //web.ignoring().requestMatchers(PathRequest.toStaticResources().atCommonLocations());    // 정적 리소스 접근 가능하게
         web.ignoring().antMatchers(HttpMethod.GET, "/api/**");  // GET Method 는 모두 통과
+
+        // cs-api
+        web.ignoring().antMatchers(HttpMethod.GET, "/cs-api/**");  // GET Method 는 모두 통과
+        web.ignoring().antMatchers(HttpMethod.POST, "/cs-api/**");  // GET Method 는 모두 통과
+        web.ignoring().antMatchers(HttpMethod.PUT, "/cs-api/**");  // GET Method 는 모두 통과
+        web.ignoring().antMatchers(HttpMethod.DELETE, "/cs-api/**");  // GET Method 는 모두 통과
     }
 
     @Override
@@ -95,8 +101,8 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
                 .sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)   // 스프링 시큐리티가 필요 시 생성 (default)
                 // 인증에 성공할 때 마다 세션 ID나 세션을 변경해서 발급해줌으로써
                 // 세션을 중간에서 가로채더라도 해당 세션이 유효하지 않게 하는 기능
-                //.invalidSessionUrl("/application/login/login.html")    // 세션이 유효하지 않을 경우 이동 할 페이지
-                .invalidSessionUrl("/api/auth/login.do")    // 세션이 유효하지 않을 경우 이동 할 페이지
+                .invalidSessionUrl("/application/login/login.html")    // 세션이 유효하지 않을 경우 이동 할 페이지
+                //.invalidSessionUrl("/api/auth/login.do")    // 세션이 유효하지 않을 경우 이동 할 페이지
                 .sessionFixation().changeSessionId()        // changeSessionId : 새로운 세션 ID를 발급해서 전달(default)
                 // none            : 아무 동작 안함
                 // migrateSession  : 새로운 세션을 생성해서 전달 (속성값 유지)

+ 19 - 17
src/main/java/com/its/op/service/bis/BitService.java

@@ -1,20 +1,17 @@
 package com.its.op.service.bis;
 
-import com.its.op.dto.bis.BitDto;
-import com.its.op.entity.bis.Bit;
-import com.its.op.entity.bis.BitStatusHistory;
 import com.its.op.dao.repository.bis.BitRepository;
 import com.its.op.dao.repository.bis.BitStatusHistoryRepository;
-import com.its.op.global.CodeManager;
+import com.its.op.dto.bis.BitDto;
+import com.its.op.dto.bis.BitStatusHistoryInf;
 import com.its.op.dto.its.common.*;
+import com.its.op.entity.bis.Bit;
+import com.its.op.global.CodeManager;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -72,8 +69,9 @@ public class BitService {
 
         Map<String, FcltSttsDto> resultMap = new HashMap<>();
         List<Bit> ctlrList = this.repo.findAllList();
-        LocalDateTime fromDt = LocalDate.now().atTime(0, 0, 0);
-        List<BitStatusHistory> sttsList = this.sttsHsRepo.findAllStts(fromDt);
+        //LocalDateTime fromDt = LocalDate.now().atTime(0, 0, 0);
+        //List<BitStatusHistory> sttsList = this.sttsHsRepo.findAllStts(fromDt);
+        List<BitStatusHistoryInf> sttsList = this.sttsHsRepo.findAllSttsNative();
         int total = ctlrList.size();
         AtomicInteger normal = new AtomicInteger();
         // 전체 BIT 상태정보 초기화
@@ -129,11 +127,13 @@ public class BitService {
         List<SttsCommErrDto> result = new ArrayList<>();
         Map<String, SttsCommErrDto> resultMap = new HashMap<>();
 
-        LocalDateTime fromDt = LocalDate.now().atTime(0, 0, 0);
+        //LocalDateTime fromDt = LocalDate.now().atTime(0, 0, 0);
         //log.error("{}", fromDt);
         List<Bit> ctlrList = this.repo.findAllList();
-        List<BitStatusHistory> sttsList = this.sttsHsRepo.findAllStts(fromDt);
-        List<SttsHsErrCntInf> errList = this.sttsHsRepo.findAllCommErrorCount(fromDt);
+        //List<BitStatusHistory> sttsList = this.sttsHsRepo.findAllStts(fromDt);
+        List<BitStatusHistoryInf> sttsList = this.sttsHsRepo.findAllSttsNative();
+        //List<SttsHsErrCntInf> errList = this.sttsHsRepo.findAllCommErrorCount(fromDt);
+        List<SttsHsErrCntInf> errList = this.sttsHsRepo.findAllCommErrorCountNative();
 
         // 전체 BIT 상태정보 초기화
         ctlrList.forEach(obj -> {
@@ -202,9 +202,10 @@ public class BitService {
 
         List<FcltSttsDto> sttsDtoList = new ArrayList<>();
         List<Bit> ctlrList = this.repo.findAllList();
-        LocalDateTime fromDt = LocalDate.now().atTime(0, 0, 0);
+        //LocalDateTime fromDt = LocalDate.now().atTime(0, 0, 0);
         //log.error("{}", fromDt);
-        List<BitStatusHistory> sttsList = this.sttsHsRepo.findAllStts(fromDt);
+        //List<BitStatusHistory> sttsList = this.sttsHsRepo.findAllStts(fromDt);
+        List<BitStatusHistoryInf> sttsList = this.sttsHsRepo.findAllSttsNative();
 
         // 전체 BIT 상태정보 초기화
         ctlrList.forEach(obj -> {
@@ -231,8 +232,9 @@ public class BitService {
             }
 
             if (obj.getRecorddate() != null) {
-                String collDt = DateTimeFormatter.ofPattern("yyyyMMddHHmmss").format(obj.getRecorddate());
-                stts.setUpdtDt(collDt);
+                //String collDt = DateTimeFormatter.ofPattern("yyyyMMddHHmmss").format(obj.getRecorddate());
+                //stts.setUpdtDt(collDt);
+                stts.setUpdtDt(obj.getRecorddate());
             }
             if (("1").equals(obj.getWcommstatus())) {
                 // 유선통신 정상
@@ -255,7 +257,7 @@ public class BitService {
             }
         });
 
-        if (total) {
+         if (total) {
             resultMap.forEach((key, obj) -> {
                 sttsDtoList.add(obj);
             });

+ 5 - 4
src/main/java/com/its/op/service/its/vms/TbVmsFormService.java

@@ -12,6 +12,7 @@ import com.its.op.dto.its.vms.TbVmsFormObjectDto;
 import com.its.op.entity.its.vms.TbVmsForm;
 import com.its.op.entity.its.vms.TbVmsFormObject;
 import com.its.op.entity.its.vms.TbVmsFormObjectDetlInf;
+import com.its.op.entity.its.vms.TbVmsFormSimple;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -246,11 +247,11 @@ public class TbVmsFormService {
      * @return
      */
     @Transactional(readOnly = true)
-    public List<TbVmsFormDto> findAllByType(String type) {
+    public List<TbVmsFormDto> findAllByTypeSimple(String type) {
         List<TbVmsFormDto> result = new ArrayList<>();
-        List<TbVmsForm> data = this.repo.findAllByVmsType(type);
-        for (TbVmsForm entity : data) {
-            result.add(entity.toDtoSimple());
+        List<TbVmsFormSimple> data = this.repo.findAllByVmsTypeSimple(type);
+        for (TbVmsFormSimple entity : data) {
+            result.add(entity.toDto());
         }
         return result;
     }

+ 6 - 6
src/main/resources/application-dev.yml

@@ -7,8 +7,8 @@ spring:
   datasource:
     hikari:
       driver-class-name: com.tmax.tibero.jdbc.TbDriver
-      #jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
-      jdbc-url: jdbc:tibero:thin:@192.168.20.99:8629:tibero
+      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
+      #jdbc-url: jdbc:tibero:thin:@192.168.20.99:8629:tibero
       username: ENC(07xt40GoahE=)
       password: ENC(07xt40GoahE=)
       minimumIdle: 5
@@ -25,8 +25,8 @@ spring:
   utis-datasource:
     hikari:
       driver-class-name: com.tmax.tibero.jdbc.TbDriver
-      #jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
-      jdbc-url: jdbc:tibero:thin:@192.168.20.99:8629:tibero
+      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
+      #jdbc-url: jdbc:tibero:thin:@192.168.20.99:8629:tibero
       username: ENC(SDpa2UMdPqw=)
       password: ENC(SDpa2UMdPqw=)
       minimumIdle: 3
@@ -43,8 +43,8 @@ spring:
   bis-datasource:
     hikari:
       driver-class-name: com.tmax.tibero.jdbc.TbDriver
-      #jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
-      jdbc-url: jdbc:tibero:thin:@192.168.20.99:8629:tibero
+      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
+      #jdbc-url: jdbc:tibero:thin:@192.168.20.99:8629:tibero
       username: ENC(07xt40GoahE=)
       password: ENC(07xt40GoahE=)
       minimumIdle: 3

+ 30 - 10
src/main/resources/application-prod.yml

@@ -1,10 +1,21 @@
 spring:
+  devtools:
+    livereload:
+      enabled: true
+  freemarker:
+    cache: false
   datasource:
     hikari:
       driver-class-name: com.tmax.tibero.jdbc.TbDriver
-      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
-      username: yiits
-      password: yiits
+      #jdbc-url: jdbc:tibero:thin:@172.16.11.52:8800:new_yiitsdb
+      jdbc-url: jdbc:tibero:thin:@(DESCRIPTION=(FAILOVER=ON)(LOAD_BALANCE=ON)(ADDRESS_LIST=(ADDRESS=(HOST=172.16.11.52)(PORT=8800))(ADDRESS=(HOST=172.16.11.62)(PORT=8629)))(DATABASE_NAME=new_yiitsdb))
+      username: ENC(07xt40GoahE=)
+      password: ENC(07xt40GoahE=)
+      minimumIdle: 5
+      maximumIdle: 10
+      maximumPoolSize: 20
+      idleTimeout: 30000
+      connectTimeout: 10000
   jpa:
     database-platform: org.hibernate.dialect.Oracle10gDialect
     properties:
@@ -14,9 +25,14 @@ spring:
   utis-datasource:
     hikari:
       driver-class-name: com.tmax.tibero.jdbc.TbDriver
-      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
-      username: rutis
-      password: rutis
+      jdbc-url: jdbc:tibero:thin:@172.16.11.71:8629:rutis
+      username: ENC(SDpa2UMdPqw=)
+      password: ENC(SDpa2UMdPqw=)
+      minimumIdle: 3
+      maximumIdle: 10
+      maximumPoolSize: 20
+      idleTimeout: 30000
+      connectTimeout: 10000
   utis-jpa:
     database-platform: org.hibernate.dialect.Oracle10gDialect
     properties:
@@ -26,12 +42,16 @@ spring:
   bis-datasource:
     hikari:
       driver-class-name: com.tmax.tibero.jdbc.TbDriver
-      jdbc-url: jdbc:tibero:thin:@115.91.94.42:8629:tibero
-      username: yiits
-      password: yiits
+      jdbc-url: jdbc:tibero:thin:@(DESCRIPTION=(FAILOVER=ON)(LOAD_BALANCE=ON)(ADDRESS_LIST=(ADDRESS=(HOST=172.16.11.162)(PORT=8800))(ADDRESS=(HOST=172.16.11.152)(PORT=8629)))(DATABASE_NAME=yiitsdb))
+      username: ENC(07xt40GoahE=)
+      password: ENC(07xt40GoahE=)
+      minimumIdle: 3
+      maximumIdle: 10
+      maximumPoolSize: 20
+      idleTimeout: 30000
+      connectTimeout: 10000
   bis-jpa:
     database-platform: org.hibernate.dialect.Oracle10gDialect
     properties:
       hibernate:
         dialect: org.hibernate.dialect.Oracle10gDialect
-

+ 2 - 2
src/main/resources/application.yml

@@ -18,7 +18,7 @@ application:
     base-dbms: false
     fclt-stts: false
     unit-stts: false
-    db-svr-stts: true
+    db-svr-stts: false
 
 server:
   port: 8999
@@ -48,7 +48,7 @@ spring:
 #      max-request-size: 215MB
 
   profiles:
-    active: dev
+    active: prod
   main:
     banner-mode: off
   application:

+ 3 - 2
src/main/resources/static/application/op/04-1.statistics/02.atrd-traffic/atrd-traffic.js

@@ -1393,7 +1393,7 @@ function sectEvent( uri, updateData ){
     trafficTable.refresh();
     trafficTable.clearSelection();
     trafficTable.option('focusedRowIndex', -1);
-    alertMessage('데이터 조회가 완료 되었습니다. [' + trafficData[0].length + '건]')
+    alertConfirm('데이터 조회가 완료 되었습니다. [' + trafficData[0].length + '건]')
 }
 
 //테이블 및 차트 세팅
@@ -1419,7 +1419,8 @@ function atrdEvent( uri, updateData ){
     trafficTable.refresh();
     trafficTable.clearSelection();
     trafficTable.option('focusedRowIndex', -1);
-    alertMessage('데이터 조회가 완료 되었습니다. [' + trafficData[0].length + '건]')
+    console.log('ㅎㅎ')
+    alertConfirm('데이터 조회가 완료 되었습니다. [' + trafficData[0].length + '건]')
 }
 
 //각 이벤트 별 링크 필터링

+ 1 - 1
src/main/resources/static/application/op/04-1.statistics/06.unit-syst-stts/unit-syst-stts.js

@@ -142,7 +142,7 @@ $(()=>{
                 dataSource[0].name = item.name
                 dataSource[0].icon = item.type
                 info.component.option('dataSource', dataSource);
-                trafficChart.update({
+                unitSystChart.update({
                     chart: {
                         type: item.type,
                     }

+ 4 - 3
src/main/resources/static/application/op/04-2.analysis/04.traf-hs/traf-hs.css

@@ -73,8 +73,9 @@ body{
 }
 
 .line-bar{
-    width: 250px;
+    width: 222px;
     height: 100%;
+    margin-left: 10px;
     display: flex;
     align-items: center;
     flex-direction: column;
@@ -118,7 +119,7 @@ body{
 }
 .pointer {
     position : absolute;
-    left     : 110px;
+    left     : 117px;
     width    : 0px;
     height   : 0px;
     border-top : 8px solid #e9e0e0;
@@ -145,12 +146,12 @@ body{
     height: 30px;
     display: flex;
 }
-.right-box > div:nth-child(2) > div:nth-child(1),
 .right-box > div:nth-child(2) > div:nth-child(2),
 .right-box > div:nth-child(2) > div:nth-child(4),
 .right-box > div:nth-child(2) > div:nth-child(5){
     margin-left: 5px;
 }
+
 .right-box > div:nth-child(2) > div:nth-child(3){
     margin-left: 15px;
 }

+ 1 - 1
src/main/resources/static/application/op/04-2.analysis/04.traf-hs/traf-hs.html

@@ -93,7 +93,7 @@
                 <div class="right-box">
                     <div class="serve-title b2">소통정보 표출</div>
                     <div>
-                       <div class="map-bar"></div>
+                       <div class="serve-title map-bar b2"></div>
                     </div>
                     <div>
                         <div id="traf-hs-map"></div>

+ 12 - 72
src/main/resources/static/application/op/04-2.analysis/04.traf-hs/traf-hs.js

@@ -23,8 +23,8 @@ let trafHsLinkSelect = null;
 let trafHsPlaySecn = null;
 let playBtn = null;
 let stopBtn = null;
-let rightMove = 11;
-let leftMove = 33;
+let rightMove = 22;
+let leftMove = 22;
 
 //공통
 let commonUri = "/api/analysis/traf-hs/";
@@ -136,7 +136,7 @@ $(() => {
                 return;
             }
             _trafHsIndex = 0;
-            $('.pointer').css('left',  110);
+            $('.pointer').css('left',  117);
             fetchHistData();
             $(".line-bar").off('click');
             trafHsTable.option('disabled', true);
@@ -160,65 +160,7 @@ $(() => {
         },
     });
 
-    // //맵 저장 버튼
-    // $(".save-btn").dxButton({
-    //     icon: "save",
-    //     stylingMode: "text",
-    //     hint: "저장",
-    //     width: 30,
-    //     height: 30,
-    //     onClick() {
-    //         _mapManager.saveImage(pageName, "image-download");
-    //     },
-    // });
-
-    // //표준 영역 버튼
-    // $(".globe-btn").dxButton({
-    //     icon: "globe",
-    //     stylingMode: "text",
-    //     hint: "표준 영역",
-    //     width: 30,
-    //     height: 30,
-    //     onClick() {
-    //         _mapManager.stdExtent();
-    //     },
-    // });
-
-    // //맵 확대 버튼
-    // $(".zoom-btn").dxButton({
-    //     icon: "plus",
-    //     stylingMode: "text",
-    //     hint: "확대",
-    //     width: 30,
-    //     height: 30,
-    //     onClick() {
-    //         _mapManager.zoomIn();
-    //     },
-    // });
-
-    // //맵 축소 버튼
-    // $(".zoom-out-btn").dxButton({
-    //     icon: "minus",
-    //     stylingMode: "text",
-    //     hint: "축소",
-    //     width: 30,
-    //     height: 30,
-    //     onClick() {
-    //         _mapManager.zoomOut();
-    //     },
-    // });
-
-    // //새로고침 버튼
-    // $(".refresh-btn").dxButton({
-    //     icon: "refresh",
-    //     stylingMode: "text",
-    //     hint: "새로고침",
-    //     width: 30,
-    //     height: 30,
-    //     onClick() {
-    //         _mapManager.refreshMap();
-    //     },
-    // });
+  
 
     //좌측 하단 눈금 바
     $(".line-bar").on("click", (e) => {
@@ -325,14 +267,12 @@ $(() => {
 function lineBarClick(e){
     const x = e.clientX;
     const left = $(".pointer").offset().left;
-    console.log($(".pointer").offset());
-    console.log(e.offsetX);
     switch (true) {
-        case x <= 126 && left - 27 <= 110:
-            $(".pointer").css("left", 110 + "px");
+        case x <= 126 && left - leftMove <= 117:
+            $(".pointer").css("left", 117);
             break;
-        case x >= 340 && left + 13.3 >= 329:
-            $(".pointer").css("left", 329);
+        case x >= 337 && left + rightMove >= 337:
+            $(".pointer").css("left", 337);
             break;
         case x === left:
             break;
@@ -390,15 +330,15 @@ function finalEvent(uri, updateData) {
         $(".small-line").empty();
         const lineWidth = $(".line").width();
 
-        leftMove = lineWidth / _trafHsData[0].length + 11;
-        rightMove = lineWidth / _trafHsData[0].length - 11;
+        leftMove = lineWidth / _trafHsData[0].length;
+        rightMove = lineWidth / _trafHsData[0].length;
         for (let ii = 0; ii < _trafHsData[0].length + 1; ii++) {
             $(".small-line").append("<div>");
             if (ii !== 0) {
                 $(".small-line > div:nth-child(" + (ii + 1) + ")").css("margin-left", "calc(220px/" + _trafHsData[0].length + " - 1px)");
             }
         };
-        $('.pointer').css('left',  110);
+        $('.pointer').css('left',  117);
     }
 
     trafHsTable.option("dataSource", _trafHsData[0]);
@@ -476,7 +416,7 @@ function fetchHistData() {
     }
     else {
         window.setTimeout(()=>{
-            $('.pointer').css('left',  110);
+            $('.pointer').css('left',  117);
             trafHsTable.clearSelection();
             trafHsTable.option('focusedRowIndex', -1);
             trafHsTable.option('disabled', false);

+ 10 - 112
src/main/resources/static/application/op/04-2.analysis/05.ptrn-data/ptrn-data.css

@@ -13,37 +13,6 @@ body{
     min-width: 800px;
     min-height: 640px;
 }
-.container{
-    position: relative;
-    border: 1px solid #515159;
-    width: 100%;
-    height: 100%;
-}
-.title-box{
-    display: flex;
-    width: 100%;
-    height: 40px;
-    min-height: 35px;
-    border-bottom: 1px solid #515159;
-}
-.title-box > div:nth-child(1){
-    position: relative;
-    font-size: 18px;
-    display: flex;
-    align-items: center;
-    left: 20px;
-}
-.title-box > div:nth-child(2),
-.title-box > div:nth-child(3){
-    position: relative;
-    align-items: center;
-    display: flex;
-    margin-right: 10px;
-}
-
-.title-box > div:nth-child(2){
-    margin-left: auto;
-}
 
 .label{
     width: 100px;
@@ -52,7 +21,6 @@ body{
 .left-section{
     width: 350px;
     height: 100%;
-    border-right: 1px solid #515159;
 }
 
 .left-section > div:nth-child(2),
@@ -84,37 +52,31 @@ body{
     align-items: center;
     justify-content: right;
 }
-.table-box{
+.right-box{
     width: calc(100% - 351px);
     height: 100%;
 }
-.table-box > div:nth-child(2){
+.right-box > div:nth-child(2){
     width: calc(100% - 4px);
     height: calc(100% - 431px);
     padding: 2px;
-    border-bottom: 1px solid #515159;
 }
-.table-box > div:nth-child(2) > div:nth-child(1){
-    border-top: 1px solid #515159;
-    border-left: 1px solid #515159;
-    border-right: 1px solid #515159;
-}
-.table-box > div:nth-child(3){
+
+.right-box > div:nth-child(3){
     width: 100%;
     height: 400px;
 }
-.table-box > div:nth-child(3) > div:nth-child(1){
+.right-box > div:nth-child(3) > div:nth-child(1){
     width: 100%;
     height: 50px;
-    border-bottom: 1px solid #515159;
     display: flex;
     align-items: center;
     justify-content: right;
 }
-.table-box > div:nth-child(3) > div:nth-child(1) > div:nth-child(1){
+.right-box > div:nth-child(3) > div:nth-child(1) > div:nth-child(1){
     margin-left: 10px;
 }
-.table-box > div:nth-child(3) > div:nth-child(2){
+.right-box > div:nth-child(3) > div:nth-child(2){
     width: calc(100% - 4px);
     height: 344px;
     display: flex;
@@ -122,10 +84,9 @@ body{
     justify-content: center;
     padding: 2px;
 }
-.table-box > div:nth-child(3) > div:nth-child(2) > div:nth-child(1){
+.right-box > div:nth-child(3) > div:nth-child(2) > div:nth-child(1){
     width: calc(100% - 2px);
     height: calc(100% - 2px);
-    border: 1px solid #515159;
 }
 .body-box{
     width: 100%;
@@ -133,53 +94,10 @@ body{
     display: flex;
     flex-direction: row;
 }
-.table-box > div:nth-child(3) > div:nth-child(1) > div:nth-child(2){
+.right-box > div:nth-child(3) > div:nth-child(1) > div:nth-child(2){
     margin-left: 5px;
 }
-.tooltip-header {
-    margin-bottom: 5px;
-    font-size: 13px;
-    font-weight: 500;
-    padding-bottom: 5px;
-    border-bottom: 1px solid #c5c5c5;
-}
-
-.tooltip-body {
-    width: 170px;
-}
-
-.tooltip-body .series-name {
-    font-weight: normal;
-    opacity: 0.6;
-    display: inline-block;
-    line-height: 1.5;
-    padding-right: 10px;
-    width: 126px;
-}
 
-.tooltip-body .value-text {
-    display: inline-block;
-    line-height: 1.5;
-    width: 30px;
-}
-.chage-box{
-    display: none;
-    position: absolute;
-    list-style: none;
-    font-size: 16px;
-    z-index: 1;
-    width: 160px;
-    height: 150px;
-    background: #363640;
-    border: 1px solid #515159;
-}
-.chage-box > li{
-    padding: 10px;
-    cursor: pointer;
-}
-.chage-box > li:hover{
-    background-color: #3e3e49;
-}
 .page-box{
     display: flex;
     margin-right: 5px;
@@ -187,7 +105,6 @@ body{
     height: 38px;
     width: 150px;
     border-radius: 2px;
-    border: 1px solid #66666e;
     align-items: center;
     justify-content: center;
 }
@@ -198,14 +115,12 @@ body{
     display: flex;
     align-items: center;
     justify-content: center;
-    border: 1px solid #66666e;
 }
 .page-box > div > i{
     font-size: 20px;
 }
 .page-box > div:hover{
     cursor: pointer;
-    background-color: #3e3e49;
 }
 
 .dx-texteditor-input{
@@ -215,27 +130,10 @@ body{
 .link-padding{
     padding: 5px !important;
 }
-.serve-title{
-    background-color: #2f2f38;
-    display: flex;
-    align-items: center;
-    padding-left: 20px;
-    width: calc(100% - 20px);
-    height: 25px;
-    border-bottom: 1px solid #515159;
-}
-.b1{
-    border-top: 1px solid #515159;
-}
-.dx-multiview-item-content{
+.right-container{
     width: 100%;
     height: 100%;
-    padding: 2px;
 }
 .table-container{
-    width: 100%;
     height: 100%;
-    border-top: 1px solid #515159;
-    border-left: 1px solid #515159;
-    border-right: 1px solid #515159;
 }

+ 16 - 16
src/main/resources/static/application/op/04-2.analysis/05.ptrn-data/ptrn-data.html

@@ -12,16 +12,16 @@
     <title>패턴데이터 분석</title>
 </head>
 <body class="dx-viewport">
-    <div class="container">
-        <div class="title-box">
+    <div class="container b0">
+        <div class="title-box b2">
             <div>패턴데이터 분석</div>
             <div>
                 <div class="cancle-button"></div>
             </div>
         </div>
         <div class="body-box">
-            <div class="left-section">
-                <div class="serve-title">검색 조건</div>
+            <div class="left-section b4">
+                <div class="serve-title b2">검색 조건</div>
                 <div>
                     <div class="label">패턴/요일구분</div>
                     <div>
@@ -55,43 +55,43 @@
                         <div class="ptrn-data-search-btn"></div>
                     </div>
                 </div>
-                <div class="serve-title b1">
+                <div class="serve-title b2 b1">
                     링크 선택
                 </div>
                 <div>
                     <div class="link-tabs"></div>
                 </div>
             </div>
-            <div class="table-box">
-                <div class="serve-title">검색결과</div>
+            <div class="right-box">
+                <div class="serve-title b2">검색결과</div>
                 <div>
-                    <div class="ptrn-data-table"></div>
+                    <div class="ptrn-data-table b1 b3 b4"></div>
                 </div>
                 <div>
-                    <div>
+                    <div class="b1">
                         <div>
                             <div class="export-button"></div>
                         </div>
                         <div>
                             <div class="chart-change"></div>
                         </div>
-                        <div class="page-box">
-                            <div class="first-page">
+                        <div class="page-box menu-border">
+                            <div class="first-page menu-border">
                                 <i class="dx-icon-chevrondoubleleft"></i>
                             </div>
-                            <div class="prev-page">
+                            <div class="prev-page menu-border">
                                 <i class="dx-icon-chevronleft"></i>
                             </div>
-                            <div class="next-page">
+                            <div class="next-page menu-border">
                                 <i class="dx-icon-chevronright"></i>
                             </div>
-                            <div class="end-page">
+                            <div class="end-page menu-border">
                                 <i class="dx-icon-chevrondoubleright"></i>
                             </div>
                         </div>
                     </div>
-                    <div>
-                        <div>
+                    <div class="b1">
+                        <div class="b0">
                             <div id="ptrn-data-chart"></div>
                         </div>
                     </div>

+ 33 - 58
src/main/resources/static/application/op/04-2.analysis/05.ptrn-data/ptrn-data.js

@@ -92,12 +92,7 @@ series = [
 ]
 
 $(()=>{
-    //차트 변경 박스
-    $("body").append($('<ul class="chage-box">'
-    +'<li class="bar-chart">Bar diagram</li>'
-    +'<li class="column-chart">Column diagram</li>'
-    +'<li class="line-chart">Line diagram</li>'
-    +'</ul>'))
+  
 
     
     //검색시작일시 년월일
@@ -161,11 +156,12 @@ $(()=>{
         setValue(ptrnSelect, ptrnSelectData[0])
     }
     
-    //링크레벨구분
+    //패턴 요일 구분
     ptrnDaySelect = $('.ptrn-day-select').dxSelectBox({
         stylingMode     : 'outlined',
         items           : dayTypeData,
         displayExpr     : 'day_type_desc',
+        valueExpr       : 'day_type_cd',
         width           : 125,
         height          : 28,
         onItemClick(e){
@@ -212,55 +208,34 @@ $(()=>{
     })
 
     //차트 변경 버튼
-    $(".chart-change").dxButton({
-        icon        : 'chart',
-        stylingMode : 'outlined',
-        text        : 'Line diagram',
-        height      : '40px',
-        width       : '150px',
-        onClick(){
-            event.stopPropagation();
-            let x = event.clientX;
-            let y = event.clientY;
-            $(".chage-box").css('display','block');
-            $(".chage-box").css('position','absolute');
-            $(".chage-box").css('left',x);
-            $(".chage-box").css('top',y);
-        }
-    }).dxButton("instance");
-
-    //차트 변경 이외 클릭 시 발생 이벤트
-    $('body').on('click',()=>{
-        $(".chage-box").css('display','none');
-    })
-    
-    //bar 차트 변경
-    $('.bar-chart').on('click',()=>{
-        ptrnChart.update({
-            chart: {
-                type: 'bar',
-            }
-        })    
-    })
-    
-    //column 차트 변경
-    $('.column-chart').on('click',()=>{
-        ptrnChart.update({
-            chart: {
-                type: 'column',
+    $(".chart-change").dxMenu({
+        dataSource: chartDataSource,
+        hideSubmenuOnMouseLeave: true,
+        cssClass:'menu-border',
+        height: 40,
+        showFirstSubmenuMode: {
+            name: "onClick",
+            delay: { show: 0, hide: 100 },
+        },
+        displayExpr: "name",
+        submenuDirection: "auto",
+        visible: true,
+        onItemClick(info){
+            const item = info.itemData;
+            if(item.type){
+                const dataSource = [...info.component.option('dataSource')]
+                dataSource[0].name = item.name
+                dataSource[0].icon = item.type
+                info.component.option('dataSource', dataSource);
+                ptrnChart.update({
+                    chart: {
+                        type: item.type,
+                    }
+                })
             }
-        })
-    })
+        }
+    }).dxMenu("instance");
 
-    //line 차트 변경
-    $('.line-chart').on('click',()=>{
-        ptrnChart.update({
-            chart: {
-                type: 'line',
-            }
-        })
-    })
-    
     //교통정보 제공결과분석 통계 차트
     ptrnChart = Highcharts.chart('ptrn-data-chart', {
         chart: {
@@ -807,9 +782,9 @@ $(()=>{
 //구간별 데이터 세팅
 function offrResultEvent() {
 
-    let PTRN_DATA     = ptrnSelect.option('value').PTRN_DATA
-    let PTRN_WEEK     = ptrnDaySelect.option('value').day_type_cd
-    let PTRN_TYPE     = linkTabs.option('selectedItems')[0].id
+    let PTRN_DATA     = ptrnSelect.option('value').PTRN_DATA;
+    let PTRN_WEEK     = ptrnDaySelect.option('value');
+    let PTRN_TYPE     = linkTabs.option('selectedItems')[0].id;
     let BASE_MN       = null;
     let COMP_MN       = null;
     let FROM_HM       = null;
@@ -890,5 +865,5 @@ function finalEvent( uri, updateData ){
     
     pageNation(ptrnChart, xAxis);
 
-    alertConfirm('데이터 조회가 완료 되었습니다. [' + ptrnData[0].length + '건]')
+    alertConfirm('데이터 조회가 완료 되었습니다. [' + ptrnData[0].length + '건]');
 }

+ 3 - 3
src/main/resources/static/application/op/05.cctv/01.manager/manager.js

@@ -505,7 +505,7 @@ $(() => {
             .dxTextBox({
                 width: item.option,
                 stylingMode: "outlined",
-                disabled: true,
+                readOnly: true,
                 maxLength: item.max,
                 height: 27,
             })
@@ -747,7 +747,7 @@ function eventCancel() {
     dsblOffBtn(_managerTable);
 
     inputArr.map((item) => {
-        item.box.option("disabled", true);
+        item.box.option("readOnly", true);
     });
 
     if(_managerTable.getSelectedRowsData().length > 0){
@@ -759,7 +759,7 @@ function eventOn() {
     dsblOnBtn(_managerTable);
 
     inputArr.map((item) => {
-        item.box.option("disabled", item.disabled);
+        item.box.option("readOnly", item.disabled);
     });
 }
 

+ 1 - 1
src/main/resources/static/application/op/06.vms/01.system/02.control/control.js

@@ -91,7 +91,7 @@ $(()=>{
                             if ( val === '자동' ){
                                 classNm = 'green';
                             }
-                            else if (val === '자동'){
+                            else if (val === '고정'){
                                 classNm = 'red';
                             }
                             else {

+ 1 - 1
src/main/resources/static/application/op/06.vms/02.manager/03.symbl-vmp/02.symbl-vmp1/symbl-vmp1.html

@@ -73,7 +73,7 @@
                         </div>
                     </div>
                     <div class="serve-title color">
-                        <div>구간 정보 설정 <span class="red">배경 이미지의 셀을 클릭한 후 셀적용 버튼을 클릭하면 해당 영역이 선택됩니다.</span></div>
+                        <div>구간 정보 설정</div><span class="red">배경 이미지의 셀을 클릭한 후 셀적용 버튼을 클릭하면 해당 영역이 선택됩니다.</span>
                     </div>
                     <div class="prep-sect">
                         <div class="b0">

+ 29 - 0
src/main/resources/static/application/op/06.vms/03.form/manage.css

@@ -381,6 +381,7 @@ body{
 .img-x-btn,
 .simbol-x-btn,
 .name-x-btn,
+.ifsc-x-btn,
 .modal-container > div:nth-child(1) > div:nth-child(3) > div:nth-child(1){
     margin-left: auto;
     margin-right: 10px;
@@ -410,6 +411,15 @@ body{
     display: flex;
     flex-direction: column;
 }
+.ifsc-modal-screen {
+    z-index: 200;
+    background: #363640;
+    position: absolute;
+    width: 650px;
+    height: 600px;
+    display: flex;
+    flex-direction: column;
+}
 .name-modal-btn-box{
     width: 100%;
     height: 40px;
@@ -466,8 +476,27 @@ body{
     width: 320px;
     height: 64px;
     background-color: black;
+    overflow: hidden;
+}
+.dr-canvas > div:nth-child(1){
+    width: 100%;
+    height: 100%;
 }
 .dx-htmleditor-content{
     background-color: rgba(0,0,0) !important;
     margin: 1px !important;
+}
+
+.trfc-fill-label{
+    width: 43px;
+    color: rgb(255, 0, 0);
+    display: flex;
+    align-items: center;
+    justify-content: right;
+    display: none;
+}
+
+.vms-ifsc-label{
+    color: rgb(255, 0, 0);
+    display: none;
 }

+ 1 - 1
src/main/resources/static/application/op/06.vms/03.form/manage.html

@@ -8,7 +8,6 @@
     <script src="/libs/include-common.js"></script>
     <script src="/libs/include-excel.js"></script>
     <link rel="stylesheet" href="/application/op/99.common/common.css">
-    <script src="/libs/dx-21.2.6/js/showdown.min.js"></script>
     <link rel="stylesheet" href="./manage.css">
     <script src="/libs/floodfill/floodfill.js"></script>
     <script src="/libs/html2.canvas/html2.canvas-1.4.1.js"></script>
@@ -66,5 +65,6 @@
             </div>
          </div>
     </div>
+    <div class="test"></div>
 </body>
 </html>

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 557 - 165
src/main/resources/static/application/op/06.vms/03.form/manage.js


+ 4 - 1
src/main/resources/static/application/op/06.vms/03.form/parse.html

@@ -41,10 +41,13 @@
           <div id="value-content" class="value-content"></div>
         </div>
       </div>
+    </div>
+    <div class="select-box">
+
     </div>
     <script>
       htmlEditor()
-      
+    
        
     
     </script>

+ 5 - 0
src/main/resources/static/application/op/06.vms/05.history/01.stts/stts.css

@@ -148,3 +148,8 @@ body{
 .dx-texteditor-input{
     text-align: center;
 }
+
+.tdBox{
+    width: 100%;
+    height: 100%;
+}

+ 58 - 3
src/main/resources/static/application/op/06.vms/05.history/01.stts/stts.js

@@ -212,9 +212,9 @@ $(()=>{
                                 cellTemplate(c,e){
                                     c.css('padding', '3px');
                                     c.css('height', '1px');
-                                    const div = $('<span class="tdBox '+e.data.cmnc_stts_cd+'">').text(e.displayValue)
-                                    c.append(div)
-                                    return c
+                                    const div = $('<span class="tdBox '+e.data.cmnc_stts_cd+'">').text(e.displayValue);
+                                    div.text(e.displayValue);
+                                    return c.append(div);
                                 }
                             },
                         ]
@@ -228,12 +228,34 @@ $(()=>{
                                 caption      : "모듈상태",
                                 width        : 110,
                                 alignment    : "center",
+                                cellTemplate(c,e){
+                                    c.css('padding','2px');
+                                    c.css('height','1px');
+                                    let classNm = e.data.modl_stts_cd;
+                                    if(!e.data.modl_stts_cd){
+                                        classNm = 'gray'
+                                    }
+                                    const div = $('<div class="tdBox '+classNm+'">');
+                                    div.text(e.displayValue);
+                                    return c.append(div);
+                                }
                             },
                             {
                                 dataField    : "pwer_stts_desc",
                                 caption      : "전원상태",
                                 width        : 110,
                                 alignment    : "center",
+                                cellTemplate(c,e){
+                                    c.css('padding','2px');
+                                    c.css('height','1px');
+                                    let classNm = e.data.pwer_stts_cd;
+                                    if(!e.data.pwer_stts_cd){
+                                        classNm = 'gray'
+                                    }
+                                    const div = $('<div class="tdBox '+classNm+'">');
+                                    div.text(e.displayValue);
+                                    return c.append(div);
+                                }
                             },
                             {
                                 dataField    : "brgh_val",
@@ -252,18 +274,51 @@ $(()=>{
                                 caption      : "도어",
                                 width        : 85,
                                 alignment    : "center",
+                                cellTemplate(c,e){
+                                    c.css('padding','2px');
+                                    c.css('height','1px');
+                                    let classNm = e.data.cbox_door_stts_cd;
+                                    if(!e.data.cbox_door_stts){
+                                        classNm = 'gray'
+                                    }
+                                    const div = $('<div class="tdBox '+classNm+'">');
+                                    div.text(e.displayValue);
+                                    return c.append(div);
+                                }
                             },
                             {
                                 dataField    : "fan_stts_desc",
                                 caption      : "팬상태",
                                 width        : 110,
                                 alignment    : "center",
+                                cellTemplate(c,e){
+                                    c.css('padding','2px');
+                                    c.css('height','1px');
+                                    let classNm = e.data.fan_stts_cd;
+                                    if(!e.data.fan_stts_cd){
+                                        classNm = 'gray'
+                                    }
+                                    const div = $('<div class="tdBox '+classNm+'">');
+                                    div.text(e.displayValue);
+                                    return c.append(div);
+                                }
                             },
                             {
                                 dataField    : "hetr_stts_desc",
                                 caption      : "히터상태",
                                 width        : 110,
                                 alignment    : "center",
+                                cellTemplate(c,e){
+                                    c.css('padding','2px');
+                                    c.css('height','1px');
+                                    let classNm = e.data.hetr_stts_cd;
+                                    if(!e.data.hetr_stts_cd){
+                                        classNm = 'gray'
+                                    }
+                                    const div = $('<div class="tdBox '+classNm+'">');
+                                    div.text(e.displayValue);
+                                    return c.append(div);
+                                }
                             },
                             {
                                 dataField    : "cbox_tmpr",

+ 3 - 7
src/main/resources/static/application/op/08.database/06.clct-syst-stup/clct-syst-stup.html

@@ -4,19 +4,15 @@
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <script src="./../../../../libs/jquery/jquery-3.6.0.min.js"></script>
-    <link rel="stylesheet" type="text/css" class="main-css" href="./../../../../libs/dx-21.2.6/css/dx.material.blue.dark.compact.css" />
-    <script src="./../../../../libs/dx-21.2.6/js/dx.all.js"></script>
-    <script src="./../../99.common/common.js"></script>
-    <link rel="stylesheet" href="./../../99.common/common.css">
+    <script src="/libs/include-common.js"></script>
     <script src="./clct-syst-stup.js"></script>
     <link rel="stylesheet" href="./clct-syst-stup.css">
 
     <title>가공파라미터 관리</title>
 </head>
 <body class="dx-viewport">
-    <div class="container">
-        <div class="title-box">
+    <div class="container b0">
+        <div class="title-box b2">
             <div>가공파라미터 관리</div>
             <div>
                 <div class="search-button"></div>

+ 6 - 5
src/main/resources/static/application/op/99.common/common.css

@@ -212,7 +212,8 @@
 .CMS0,.CMS1,.CMS2,.PAS0,.HTS0,
 .MOS0,.PAS1,.HTS1,.MOS1,.PAS2,
 .HTS2,.MOS2,.gray,.CDS0,.CDS1,
-.CDS2,.green,.red,.yellow
+.CDS2,.green,.red,.yellow,.PWS2,
+.PWS1,.PWS0
 {
     display: flex;
     align-items: center;
@@ -226,7 +227,7 @@
 .MOS0,
 .PWS0,
 .green{
-    background-color: #15B337;
+    background-color: #15B337  !important;
     width:100%;
     height:100%;
 }
@@ -238,11 +239,11 @@
 .MOS1,
 .PWS1,
 .wanrning{
-    background-color: #ff0000;
+    background-color: #ff0000  !important;
 }
 
 .yellow{
-    background-color: #FFAA00;
+    background-color: #FFAA00  !important;
 }
 
 .CMS2,
@@ -252,5 +253,5 @@
 .CDS2,
 .PWS2,
 .gray{
-    background-color: #888888;
+    background-color: #888888 !important;
 }

+ 2 - 2
src/main/resources/static/application/wall/main/main-func.js

@@ -3,7 +3,7 @@ import { requestGet, apiGet } from "/js/utils/restApi.js";
 import { TMapMngr } from "/js/vworld/map-mngr.js";
 import { LayerType, LayerIndex } from "/js/vworld/map-const.js";
 import { TWebSocket } from "/js/websocket/websocket.js";
-import * as BIS from "./main-bis.js";
+// import * as BIS from "./main-bis.js";
 
 export let _mapManager = null;
 let _webSocket = null;
@@ -101,7 +101,7 @@ export function doMap() {
     _mapManager.onSelectObjFunc = onSelectObjFunc; // 객체 선택 이벤트 반환
     _mapManager.onFcltDragEndFunc = onFcltDragEndFunc; // 객체(시설물) 편집시 객체 이동후 좌표 반환
 
-    BIS.initBisMap(); // BIS 용 지도 초기화
+    // BIS.initBisMap(); // BIS 용 지도 초기화
 
     websocketConnect("wall");
 

+ 3 - 3
src/main/resources/static/application/wall/main/main-top.html

@@ -9,10 +9,10 @@
         </div>
         <div id="clockTime"></div>
         <div class="headerBtn">
-            <img class="itsBtn" alt="its보기" src="/images/application_wall/header/itsOnBtn.png" />
-            <img class="bisBtn" alt="bis보기" src="/images/application_wall/header/bisOffBtn.png" />
+            <img class="itsBtn" alt="its보기" style="visibility: hidden;" src="/images/application_wall/header/itsOnBtn.png" />
+            <img class="bisBtn" alt="bis보기" style="visibility: hidden;" src="/images/application_wall/header/bisOffBtn.png" />
             <img class="mapBtn" alt="지도화면보기" src="/images/application_wall/header/mapOnBtn.png" />
-            <!-- <img class="satalBtn" alt="위성화면보기" src="/images/application_wall/header/satalOffBtn.png"> -->
+            <img class="satalBtn" alt="위성화면보기" src="/images/application_wall/header/satalOffBtn.png">
         </div>
         <div class="itsFclt">
             <img class="itsFcltTitle" alt="현장시설물" src="/images/application_wall/header/itsFcltBtn.png" />

+ 6 - 7
src/main/resources/static/application/wall/main/main.html

@@ -6,7 +6,6 @@
         <meta name="viewport" content="width=device-width, initial-scale=1.0" />
         <script src="/libs/jquery/jquery-3.6.0.min.js"></script>
         <script src="/libs/jquery/jquery-ui.min.js"></script>
-        <script src="/js/constant/constant.js"></script>
 
         <link rel="icon" href="data:;base64,iVBORw0KGgo=">
         <link rel="stylesheet" href="./main.css" type="text/css" />
@@ -290,13 +289,13 @@
 
         <script type="module">
             import { startApp } from "./main.js";
-            import { leftMenuSearchClick } from "./main-bis.js";
+            // import { leftMenuSearchClick } from "./main-bis.js";
 
-            $("#busSearch").on("keydown", (e) => {
-                if (event.keyCode == 13) {
-                    leftMenuSearchClick();
-                }
-            });
+            // $("#busSearch").on("keydown", (e) => {
+            //     if (event.keyCode == 13) {
+            //         leftMenuSearchClick();
+            //     }
+            // });
             startApp();
         </script>
     </body>

+ 17 - 12
src/main/resources/static/application/wall/main/main.js

@@ -1,5 +1,5 @@
 import { _mapManager, doMap } from "./main-func.js";
-import * as BIS from "./main-bis.js";
+//import * as BIS from "./main-bis.js";
 
 //TODO
 //ITS: CCTV 영상
@@ -10,7 +10,6 @@ import * as BIS from "./main-bis.js";
  */
  export function startApp() {
     doMap();
-    toggleMap();
     registerUiEvent();
 }
 
@@ -23,18 +22,24 @@ function registerUiEvent() {
 //맵토글
 function mapToggle() {
     $(".mapBtn").on("click", function (e) {
-        toggleMap();
+        if ($(".mapBtn").attr("src") == "/images/application_wall/header/mapOffBtn.png") {
+            $(".mapBtn").attr("src", "/images/application_wall/header/mapOnBtn.png");
+            $(".satalBtn").attr("src", "/images/application_wall/header/satalOffBtn.png");
+             _mapManager.toggleBaseMap();
+        }
+            
+    });
+        
+    $(".satalBtn").on("click", function (e) {
+        if ($(".satalBtn").attr("src") == "/images/application_wall/header/satalOffBtn.png") {
+            $(".mapBtn").attr("src", "/images/application_wall/header/mapOffBtn.png");
+            $(".satalBtn").attr("src", "/images/application_wall/header/satalOnBtn.png");
+            _mapManager.toggleBaseMap();
+            //_mapManager.toggleTrafficPolyBackColor();
+        } 
     });
 }
-function toggleMap() {
-    if ($(".mapBtn").attr("src") == "/images/application_wall/header/mapOnBtn.png") {
-        $(".mapBtn").attr("src", "/images/application_wall/header/satalOnBtn.png");
-    } else {
-        $(".mapBtn").attr("src", "/images/application_wall/header/mapOnBtn.png");
-    }
-    _mapManager.toggleBaseMap();
-    //_mapManager.toggleTrafficPolyBackColor();
-}
+
 
 function facilityMenuToggles() {
     facilityMenuToggle("VDS");

+ 3 - 2
src/main/resources/static/js/constant/constant.js

@@ -1,8 +1,9 @@
 // common.js restApi.js, websocket.js
+// const _apiUrl = "http://localhost:8999";
+// const _mapHostUrl = "http://115.91.94.42:8080";
 const _apiUrl = "";
-
-// map-config.js
 const _mapHostUrl = "";
+
 const _normalUrl = _mapHostUrl + "/MAPDATA/YONGIN/Base/{z}/{x}/{y}.png";
 const _satelliteUrl = _mapHostUrl + "/MAPDATA/YONGIN/Satellite/{z}/{x}/{y}.jpeg";
 const _hybridUrl = _mapHostUrl + "/MAPDATA/YONGIN/Hybrid/{z}/{x}/{y}.png";

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно