shjung 3 rokov pred
rodič
commit
75e7326687
18 zmenil súbory, kde vykonal 120 pridanie a 77 odobranie
  1. 15 13
      src/main/java/com/its/op/dao/repository/bis/BisProcessRepository.java
  2. 1 1
      src/main/java/com/its/op/dao/repository/bis/BisProcessStatusHistoryRepository.java
  3. 1 0
      src/main/java/com/its/op/dao/repository/its/vds/TbVdsDtctRawPnstRepository.java
  4. 1 1
      src/main/java/com/its/op/entity/its/ifsc/TbIfscTrafSimple.java
  5. 1 1
      src/main/java/com/its/op/entity/its/link/TbLinkTrafSimple.java
  6. 1 1
      src/main/java/com/its/op/entity/its/road/TbRoadTrafSimple.java
  7. 1 1
      src/main/java/com/its/op/entity/its/vms/TbVmsCmtrInfr.java
  8. 33 8
      src/main/java/com/its/op/service/bis/BisProcessService.java
  9. 7 1
      src/main/java/com/its/op/service/its/vds/TbVdsCtlrService.java
  10. 3 3
      src/main/resources/mybatis/mapper/its/vds/VdsDtctTfvlStatMapper.xml
  11. 24 30
      src/main/resources/static/application/op/00.main/main-func.js
  12. 1 1
      src/main/resources/static/application/op/00.main/main.js
  13. 20 6
      src/main/resources/static/application/op/01.traffic-manager/02.syop-traf/syop-traf.js
  14. 0 1
      src/main/resources/static/application/op/03.history/04.traf-hs/traf-hs.js
  15. 1 1
      src/main/resources/static/application/op/04-1.statistics/02.atrd-traffic/atrd-traffic.css
  16. 3 3
      src/main/resources/static/application/op/04-1.statistics/02.atrd-traffic/atrd-traffic.html
  17. 6 4
      src/main/resources/static/application/op/04-1.statistics/02.atrd-traffic/atrd-traffic.js
  18. 1 1
      src/main/resources/static/application/op/06.vms/01.system/01.monitoring/01.phase/phase.js

+ 15 - 13
src/main/java/com/its/op/dao/repository/bis/BisProcessRepository.java

@@ -13,19 +13,21 @@ import java.util.List;
 @Repository
 public interface BisProcessRepository extends JpaRepository<BisProcess, String>, JpaSpecificationExecutor<Process> {
 
-    @Query("select p from BisProcess p where p.processid in (110201, " +
+    @Query("select p from BisProcess p where p.processid in ( " +
+            "110201, " +
             "160101, " +
-            "90201, " +
-            "90202, " +
-            "90203, " +
-            "90204, " +
-            "90205, " +
-            "90101, " +
-            "90102, " +
-            "90103, " +
-            "90104, " +
-            "90105, " +
-            "80101, " +
-            "80201)")
+            "90201,  " +
+            "90202,  " +
+            "90203,  " +
+            "90204,  " +
+            "90205,  " +
+            "90101,  " +
+            "90102,  " +
+            "90103,  " +
+            "90104,  " +
+            "90105,  " +
+            "80101,  " +
+            "80102,  " +
+            "80201)  ")
     List<BisProcess> findAllList();
 }

+ 1 - 1
src/main/java/com/its/op/dao/repository/bis/BisProcessStatusHistoryRepository.java

@@ -18,7 +18,7 @@ public interface BisProcessStatusHistoryRepository extends JpaRepository<BisProc
     @Query("select p from BisProcessStatusHistory p                                              " +
            " where (p.processid, p.collectdate) in (select m.processid, max(m.collectdate)       " +
            "                                          from BisProcessStatusHistory m             " +
-           "                                         where m.processstatekind in ('4') " +
+           "                                         where m.processstatekind in ('4')           " +
            "                                           and m.collectdate > (sysdate - 60)        " +
            "                                         group by m.processid)                       " +
            "   and p.processstatekind in ('4') ")

+ 1 - 0
src/main/java/com/its/op/dao/repository/its/vds/TbVdsDtctRawPnstRepository.java

@@ -18,6 +18,7 @@ public interface TbVdsDtctRawPnstRepository extends JpaRepository<TbVdsDtctRawPn
     @Query("select m.ctlrMngmNmbr as nmbr, count(p.dtctNmbr) as errCnt " +
             "  from TbVdsDtct m, TbVdsDtctRawPnst p " +
             " where m.dtctNmbr = p.dtctNmbr  " +
+            "   and p.tfvl > 0 " +
             "   and p.ocrrDt >= TO_CHAR(SYSDATE-10/1440, 'YYYYMMDDHH24MISS') " +
             " group by m.ctlrMngmNmbr")
     List<SttsHsErrCntInf> findAllCommError();

+ 1 - 1
src/main/java/com/its/op/entity/its/ifsc/TbIfscTrafSimple.java

@@ -73,7 +73,7 @@ public class TbIfscTrafSimple implements Serializable {
                 .build();
 
         dto.setMissYn(ItsUtils.getMissYn(this.prcnDt, this.cmtrGradCd));
-        if (this.cmtrGradCd == null || dto.getMissYn().equals("Y")) {
+        if (this.cmtrGradCd == null) { // || dto.getMissYn().equals("Y")) {
             dto.setSped(0);
             dto.setTrvlHh(0);
             dto.setCmtrGradCd(CodeManager.MISS_SPED_GRAD);

+ 1 - 1
src/main/java/com/its/op/entity/its/link/TbLinkTrafSimple.java

@@ -98,7 +98,7 @@ public class TbLinkTrafSimple implements Serializable {
                 .build();
 
         dto.setMissYn(("N").equals(this.missYn) ? ItsUtils.getMissYn(this.prcnDt, this.cmtrGradCd) : "Y");
-        if (this.cmtrGradCd == null || dto.getMissYn().equals("Y")) {
+        if (this.cmtrGradCd == null) { //|| dto.getMissYn().equals("Y")) {
             dto.setSped(0);
             dto.setTrvlHh(0);
             dto.setCmtrGradCd(CodeManager.MISS_SPED_GRAD);

+ 1 - 1
src/main/java/com/its/op/entity/its/road/TbRoadTrafSimple.java

@@ -73,7 +73,7 @@ public class TbRoadTrafSimple implements Serializable {
                 .build();
 
         dto.setMissYn(ItsUtils.getMissYn(this.prcnDt, this.cmtrGradCd));
-        if (this.cmtrGradCd == null || dto.getMissYn().equals("Y")) {
+        if (this.cmtrGradCd == null) { // || dto.getMissYn().equals("Y")) {
             dto.setSped(0);
             dto.setTrvlHh(0);
             dto.setCmtrGradCd(CodeManager.MISS_SPED_GRAD);

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

@@ -99,7 +99,7 @@ public class TbVmsCmtrInfr implements Serializable {
                 .build();
 
         dto.setMissYn(ItsUtils.getMissYn(this.rgstDt, dto.getCmtrGradCd()));
-        if (this.cmtrGradCd == null || dto.getMissYn().equals("Y")) {
+        if (this.cmtrGradCd == null) { // || dto.getMissYn().equals("Y")) {
             dto.setSped(0);
             dto.setTrvlHh(0);
             dto.setCmtrGradCd(CodeManager.MISS_SPED_GRAD);

+ 33 - 8
src/main/java/com/its/op/service/bis/BisProcessService.java

@@ -1,19 +1,23 @@
 package com.its.op.service.bis;
 
-import com.its.op.dto.bis.BisProcessDto;
-import com.its.op.entity.bis.BisProcess;
-import com.its.op.entity.bis.BisProcessStatusHistory;
 import com.its.op.dao.repository.bis.BisProcessRepository;
 import com.its.op.dao.repository.bis.BisProcessStatusHistoryRepository;
-import com.its.op.global.CodeManager;
+import com.its.op.dto.bis.BisProcessDto;
 import com.its.op.dto.its.unit.TbUnitSystSttsDto;
+import com.its.op.entity.bis.BisProcess;
+import com.its.op.entity.bis.BisProcessStatusHistory;
+import com.its.utils.ItsUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.annotation.Profile;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 @Profile("bis")
 @Slf4j
@@ -42,9 +46,9 @@ public class BisProcessService {
     @Transactional(readOnly = true)
     public List<TbUnitSystSttsDto> findAllStts() {
 
+        String updtDt = ItsUtils.getSysTime();
         Map<Integer, TbUnitSystSttsDto> result = new HashMap<>();
-
-        Map<String, TbUnitSystSttsDto> unitMap = new HashMap<>();
+        //Map<String, TbUnitSystSttsDto> unitMap = new HashMap<>();
         List<BisProcess> unit = this.repo.findAllList();
         unit.forEach(obj -> {
             Integer systId = obj.getProcessid();
@@ -59,7 +63,7 @@ public class BisProcessService {
                     .systNm(obj.getProcessname())
                     .systSttsCd("1")
                     .systSttsDesc("이상")
-                    .updtDt(CodeManager.CMNC_STTS_ERROR_DT)
+                    .updtDt(updtDt)//CodeManager.CMNC_STTS_ERROR_DT)
                     .runSts("1")
                     .comSts("1")
                     .dbSts("1")
@@ -69,6 +73,7 @@ public class BisProcessService {
 
         List<BisProcessStatusHistory> sttsList = this.sttsRepo.findAllStts();
 
+        AtomicBoolean isBisProcessStts = new AtomicBoolean(true);
         // 실행 상태먼저 체크
         sttsList.forEach(obj -> {
             TbUnitSystSttsDto stts = result.get(obj.getProcessid());
@@ -83,9 +88,29 @@ public class BisProcessService {
                         stts.setComSts("0");
                         stts.setDbSts("0");
                     }
+                    // 시내버스 가공1, 2
+                    if (80101 == obj.getProcessid() || 80102 == obj.getProcessid()) {
+                        if (!("1").equals(obj.getProcessstatus())) {
+                            isBisProcessStts.set(false);
+                        }
+                    }
                 }
             }
         });
+
+        Integer systId = 80199;
+        TbUnitSystSttsDto stts = TbUnitSystSttsDto.builder()
+                .systId(String.valueOf(systId))
+                .systNm("시내버스 가공")
+                .systSttsCd(isBisProcessStts.get() ? "0" : "1")
+                .systSttsDesc(isBisProcessStts.get() ? "정상" : "이상")
+                .updtDt(updtDt)
+                .runSts(isBisProcessStts.get() ? "0" : "1")
+                .comSts(isBisProcessStts.get() ? "0" : "1")
+                .dbSts(isBisProcessStts.get() ? "0" : "1")
+                .build();
+        result.put(systId, stts);
+
         // 실행 상태가 정상인 경우 나머지 상태정보 업데이트
 //        sttsList.forEach(obj -> {
 //            TbUnitSystSttsDto stts = result.get(obj.getProcessid());

+ 7 - 1
src/main/java/com/its/op/service/its/vds/TbVdsCtlrService.java

@@ -226,6 +226,7 @@ public class TbVdsCtlrService {
         List<SttsHsErrCntInf> colList = this.rawPnstRepo.findAllCommError();
         List<FcltSttsDto> sttsDtoList = new ArrayList<>();
         List<TbVdsCtlr> ctlrList = this.repo.findAllList();
+
         // 수집이상 조회
         Map<String, SttsCommErrDto> errDtoMap = new HashMap<>();
         colList.forEach(obj -> {
@@ -255,9 +256,14 @@ public class TbVdsCtlrService {
             }
 
             if (CodeManager.CMNC_STTS_NORMAL.equals(dto.getCmncSttsCd())) {
+                // 통신상태가 정상인 경우
                 normal.getAndIncrement();
                 SttsCommErrDto commErrorDto = errDtoMap.get(dto.getCtlrMngmNmbr());
-                if (commErrorDto != null) {
+                if (commErrorDto == null) {
+                    // 수집건수 조회 맵에 데이터가 존재하지 않으면 수집한 데이터가 없는 것으로 수집이상임.
+                    colErr.getAndIncrement();
+                }
+                else {
                     if (commErrorDto.getColCnt() == 0) {
                         // 통신상태가 정상인 경우인데 수집건수가 0건 이면 수집오류로 처리
                         colErr.getAndIncrement();

+ 3 - 3
src/main/resources/mybatis/mapper/its/vds/VdsDtctTfvlStatMapper.xml

@@ -100,7 +100,7 @@
                    AND B.DEL_YN = 'N'
                    AND A.CTLR_MNGM_NMBR = B.CTLR_MNGM_NMBR
              ) LY
-        WHERE LY.DTCT_NMBR  = LX.DTCT_NMBR
+        WHERE LY.DTCT_NMBR  = LX.DTCT_NMBR(+)
         ORDER BY LY.VDS_CTLR_NMBR, LY.DTCT_NMBR, LY.ISTL_LANE
         ]]>
     </select>
@@ -239,7 +239,7 @@
                    AND B.DEL_YN = 'N'
                    AND A.CTLR_MNGM_NMBR = B.CTLR_MNGM_NMBR
              ) LY
-        WHERE LY.DTCT_NMBR  = LX.DTCT_NMBR
+        WHERE LY.DTCT_NMBR  = LX.DTCT_NMBR(+)
         ORDER BY LY.VDS_CTLR_NMBR, LY.DTCT_NMBR, LY.ISTL_LANE
         ]]>
     </select>
@@ -326,7 +326,7 @@
                    AND B.DEL_YN = 'N'
                    AND A.CTLR_MNGM_NMBR = B.CTLR_MNGM_NMBR
              ) LY
-        WHERE LY.DTCT_NMBR  = LX.DTCT_NMBR
+        WHERE LY.DTCT_NMBR  = LX.DTCT_NMBR(+)
         ORDER BY LY.VDS_CTLR_NMBR, LY.DTCT_NMBR, LY.ISTL_LANE
         ]]>
     </select>

+ 24 - 30
src/main/resources/static/application/op/00.main/main-func.js

@@ -281,16 +281,15 @@ export function vmsMessageCtrl(obj, X, Y){
         let phaseNumPosition    = vmsDiv.children().eq(2).children().eq(0);
         let intervalNumPosition = vmsDiv.children().eq(2).children().eq(1);
         let closePosition       = vmsDiv.children().eq(0).children().eq(0);
-        let intervalArr         = setVmsInterval(msgs, imgPosition, phaseNumPosition, intervalNumPosition);
         let vmsInfo = _vmsMap.get(obj.ID);
         vmsInfo.set('div', vmsDiv);
-        vmsInfo.set('intervalArr', intervalArr);
+        setVmsInterval(msgs, imgPosition, phaseNumPosition, intervalNumPosition, 0, obj.ID);
+        //vmsInfo.set('intervalArr', intervalArr);
         
         dragEvent(vmsDiv, 'vms-box');
         
         closePosition.on('click', function(){
-            clearInterval(vmsInfo.get('intervalArr')[0]);
-            clearInterval(vmsInfo.get('intervalArr')[1]);
+            clearTimeout(vmsInfo.get('interval'));
             vmsInfo.get('div').remove();
             vmsInfo.delete('div');
         });
@@ -342,35 +341,30 @@ export function vmsMessageCtrl(obj, X, Y){
  * @param {*} position vms 이미지 위치
  * @param {*} phase phase 번호 텍스트 위치
  * @param {*} num 카운트 텍스트 위치
- * @returns 인터벌 배열
  */
-export function setVmsInterval(data, position, phase, num){
-    let idx = 1;
-    let intervalNum = 4;
-    $(position).prop('src', 'data:image/png;base64,'+ data[0].vms_dspl_msg_imag);
-    $(phase).text(`1/${data.length}`);
-    $(num).text(intervalNum--);
-    
-    //카운트 표시 인터벌
-    let timeInterval = setInterval(()=>{
+export function setVmsInterval(data, position, phase, num, idx, id){
+    if (data[idx]) {
+        $(position).prop('src', 'data:image/png;base64,'+ data[idx].vms_dspl_msg_imag);
+        let time = data[idx].dspl_hh;
+        let intervalNum = data[idx].dspl_hh;
+        idx++;
         $(num).text(intervalNum--);
-        if(intervalNum === 0){
-            intervalNum = 4;
-        };
-    }, 1000);
-
-    //4초마다 이미지 변경 인터벌
-    let interval = setInterval(() => {
-        if(data[1]){
-            $(position).prop('src', 'data:image/png;base64,'+ data[idx++].vms_dspl_msg_imag);
-            $(phase).text(`${idx}/${data.length}`);
-            if(idx === data.length){
-                idx = 0;
-            } 
+        $(phase).text(idx + '/' + data.length);
+        let timeInterval = setInterval(()=>{
+            $(num).text(intervalNum--);
+            if(intervalNum === 0){
+                clearInterval(timeInterval);
+            }
+        }, 1000);
+        if(idx === data.length){
+            idx = 0;
         }
-    }, 4000);
-    
-    return [interval, timeInterval];
+        let interval = setTimeout(() => {
+            window.clearTimeout(interval);
+            setVmsInterval(data, position, phase, num, idx, id);
+        }, time * 1000);
+        _vmsMap.get(id).set('interval', interval);
+    }
 }
 
 /**

+ 1 - 1
src/main/resources/static/application/op/00.main/main.js

@@ -1,4 +1,4 @@
-import { _mapManager, _cctvMap, _vmsMap, camCtrl, vmsMessageCtrl, createVideoDiv, createMessageDiv, dragEvent, setVmsInterval, _sttsMap } from "./main-func.js";
+import { _mapManager, _cctvMap, _vmsMap, camCtrl, vmsMessageCtrl, createVideoDiv, _sttsMap } from "./main-func.js";
 import { LayerIndex, LayerType } from "/js/vworld/map-const.js";
 
 // TODO:

+ 20 - 6
src/main/resources/static/application/op/01.traffic-manager/02.syop-traf/syop-traf.js

@@ -462,7 +462,7 @@ function delEvent(){
             link_id : link_id,
         })
     }
-    confirmMessage('제보 소통정보 목록을 삭제 하시겠습니까?').done((yes) => {
+    confirmMessage('소통정보제보 목록을 삭제 하시겠습니까?').done((yes) => {
         if (yes) {
             const result =  deleteDataIds(commonUri, delData);
             if (result > 0) {
@@ -535,8 +535,8 @@ function getParams(){
  * @param data 추가 된 데이터
  */
 function editInsertData(data){
-    let dataSource = [];
     dsblOnBtn(deleteBtn);
+    const dataSource = [];
     if (syopTable.hasEditData()){
         syopTable.option('editing.changes').map((item)=>{
             syopTable.byKey(item.key).done((obj)=>{
@@ -544,12 +544,26 @@ function editInsertData(data){
             })
         })
     }
-
     for(let idx in data){
         dataSource.push(data[idx]);
-    };
-    
-    syopTable.option('dataSource', dataSource);
+    }
+    const beforeDataSource = syopTable.option('dataSource');
+    let sameData = new Map();
+    dataSource.map((obj)=>{
+        sameData.set(obj.link_id, obj);
+    });
+
+    beforeDataSource.map((obj, idx)=>{
+        let editData = sameData.get(obj.link_id);
+        if (editData && editData.crtn_dt === obj.crtn_dt){
+            beforeDataSource[idx] = editData;
+            sameData.delete(obj.link_id);
+        }
+    })
+    sameData.forEach((obj)=>{
+        beforeDataSource.push(obj);
+    })
+    syopTable.option('dataSource', beforeDataSource);
     syopTable.refresh().then(()=>{
         for(let idx in dataSource){
             for(let key in dataSource[idx]){

+ 0 - 1
src/main/resources/static/application/op/03.history/04.traf-hs/traf-hs.js

@@ -2,7 +2,6 @@ let trafHsData       = [];
 let trafHsTable      = null;
 let trafHsChart      = null;
 let searchBtn        = null;
-let userCnnsHsUri    = '/api/history/user-cnns-hs';
 let strtDateBox      = null;
 let strtTimeBox      = null;
 let endDateBox       = null;

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

@@ -233,7 +233,7 @@ body{
 }
 .right-box > div:nth-child(3) > div:nth-child(2){
     width: calc(100% - 6px);
-    height: 334px;
+    height: 337px;
     padding: 3px;
     display: flex;
     align-items: center;

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

@@ -50,13 +50,13 @@
                     </div>
                 </div>
             </div>
-            <div class="right-box b2">
-                <div class="serve-title">검색결과</div>
+            <div class="right-box">
+                <div class="serve-title b2">검색결과</div>
                 <div>
                     <div class="traffic-table"></div>
                 </div>
                 <div class="chart-box">
-                    <div>
+                    <div class="b1 b2">
                         <div>
                             <div class="export-button"></div>
                         </div>

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

@@ -205,7 +205,6 @@ $(()=>{
         stylingMode : "outlined",
         value       : '15분 통계',
         onItemClick(e){
-            console.log(e.itemData);
             sectSearchBtn.off('click');
             termSearchBtn.off('click');
             switch (e.itemData) {
@@ -1129,7 +1128,7 @@ $(()=>{
     trafficChart = Highcharts.chart('traffic-chart', {
         chart: {
             type: 'line',
-            height: 334,
+            height: 337,
             backgroundColor: '#3f3f4b',
             borderWidth: 1,
             borderColor: '#534b4b',
@@ -1282,6 +1281,8 @@ function hourSettings( table, idName, uri, eventType){
     let tableData        = table.dxDataGrid('instance').getSelectedRowsData();
     let FROM_HM          = null;
     let TO_HM            = null;
+    let FROM_DT          = null;
+    let TO_DT            = null;
     let updateData       = {};
     let timeFormatLength = 16;
     if( eventType === 'sect' && tableData.length <= 0 ){
@@ -1326,6 +1327,7 @@ function hourSettings( table, idName, uri, eventType){
 //구간별 데이터 세팅
 function termSettings( table, idName, uri, condition, eventType ) {
     let tableData  = table.dxDataGrid('instance').getSelectedRowsData();
+    let FROM_DT    = null;
     let TO_DT      = null;
     let updateData = {};
     let timeFormatLength = null;
@@ -1353,7 +1355,7 @@ function termSettings( table, idName, uri, condition, eventType ) {
             if ( !validationCheck( termStartDate, termEndDate )) return false;
             FROM_DT = dateFormmater(new Date(termStartDate.option('value')));
             TO_DT   = dateFormmater(new Date(termEndDate.option('value')));
-            timeFormatLength = 13;
+            timeFormatLength = 10;
             break;
         case '월 통계(1개월)' :
             if ( !validationCheck( termStartDate, termEndDate )) return false;
@@ -1458,7 +1460,7 @@ function atrdEvent( uri, updateData, timeFormatLength ){
             trafficTable.columnOption('id','sortOrder', 'asc');
             hideColumn( trafficTable, 'ord' );
             $('.chart-box').css('display','none');
-            $('.right-box > div:nth-child(2)').css('height','calc(100% - 34.7px)');
+            $('.right-box > div:nth-child(2)').css('height','calc(100% - 31px)');
             trafficTable.refresh();
             trafficTable.clearSelection();
             trafficTable.option('focusedRowIndex', -1);

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

@@ -372,10 +372,10 @@ function stateColorSelector(value) {
 function intervalEvent(value, position, phase, idx){
     if (value[idx]) {
         $(position).prop('src', 'data:image/png;base64,'+ value[idx].vms_dspl_msg_imag);
+        let dspl_hh = value[idx].dspl_hh;
         idx++;
         $(phase).text(`${idx}/${value.length}`);
         if(idx === value.length) idx = 0;
-        let dspl_hh = value[idx].dspl_hh;
         let timer = setTimeout(()=>{
             window.clearInterval(timer);
             intervalEvent(value, position, phase, idx);