From b25b814a949d2065a61fd3167206ffb51a57af65 Mon Sep 17 00:00:00 2001
From: whyclxw <810412026@qq.com>
Date: 星期日, 28 四月 2024 15:31:09 +0800
Subject: [PATCH] 修改告警阈值重启线程

---
 src/main/java/com/whyc/service/WorkflowLinkService.java |  320 +++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 295 insertions(+), 25 deletions(-)

diff --git a/src/main/java/com/whyc/service/WorkflowLinkService.java b/src/main/java/com/whyc/service/WorkflowLinkService.java
index d7fb82d..f4a3231 100644
--- a/src/main/java/com/whyc/service/WorkflowLinkService.java
+++ b/src/main/java/com/whyc/service/WorkflowLinkService.java
@@ -44,7 +44,32 @@
     private BattInfMapper binfMapper;
 
     @Autowired(required = false)
+    private StationInfMapper stationInfMapper;
+
+    @Autowired(required = false)
     private WorkflowMainMapper mainMapper;
+
+    @Autowired(required = false)
+    private WorkflowLinkMapper linkMapper;
+
+    @Autowired(required = false)
+    private FaultUploadMapper faultUploadMapper;
+
+    @Autowired(required = false)
+    private BattAlarmDataVerifyMapper alarmDataVerifyMapper;
+
+    @Autowired(required = false)
+    private DevAlarmDataVerifyMapper devAlarmDataVerifyMapper;
+
+    @Autowired(required = false)
+    private PwrDevAlarmVerifyMapper pwrDevAlarmVerifyMapper;
+
+
+    @Autowired(required = false)
+    private AlarmManualClearMapper alarmManualClearMapper;
+
+    @Autowired
+    private FaultUploadApplicationService faultUploadApplicationService;
 
     public void addBatch(List<WorkflowLink> links) {
         mapper.insertBatchSomeColumn(links);
@@ -67,6 +92,28 @@
         Date now = new Date();
         int userId = ActionUtil.getUser().getUId().intValue();
         switch (processLevel){
+            case "P0":{ //褰撳墠鑺傜偣杩囩▼0-涓撳憳瀹℃牳
+                link.setDealUserId(userId);
+                if(link.getStatus() == WorkflowEnum.STATUS_REJECT.getValue().intValue()){ //椹冲洖
+                    updateLinkFieldAndFinish(link);
+                }else{ //閫氳繃
+                    updateLinkField(link);
+                    //鏂板缓涓嬩竴鑺傜偣-绠$悊灞�
+                    WorkflowLink linkNew = new WorkflowLink();
+                    linkNew.setMainId(link.getMainId());
+                    linkNew.setParentId(link.getId());
+                    linkNew.setProcessLevel(WorkflowDischargePlanEnum.PROCESS_MANAGER1SIGN.getProcessLevel());
+                    linkNew.setProcessLevelName(WorkflowDischargePlanEnum.PROCESS_MANAGER1SIGN.getProcessLevelName());
+                    linkNew.setCreateTime(now);
+                    linkNew.setDealRoleId(RoleEnum.ADMIN.getId());
+                    linkNew.setDealType(WorkflowEnum.TYPE_TRANSFER_DISPATCH.getValue());
+                    String dealUserName = ActionUtil.getUser().getUName();
+                    linkNew.setDealDesc(dealUserName+"瀹℃牳瀹屾垚");
+                    linkNew.setStatus(WorkflowEnum.STATUS_TAKING.getValue());
+                    mapper.insert(linkNew);
+                }
+                break;
+            }
             case "P1"://褰撳墠鑺傜偣涓鸿繃绋�1-浼氱,鏈満鏅病鏈夋嫆缁濋�夐」
             {
                 battDischargePlanTempService.updateList(tempList);
@@ -88,7 +135,7 @@
                 }
                 break;
             }
-            case "P2"://褰撳墠鑺傜偣涓鸿繃绋�2-绠$悊瀹℃牳
+            case "P2"://褰撳墠鑺傜偣涓鸿繃绋�2-绠$悊涓撹矗瀹℃牳
             {
                 link.setDealUserId(userId);
                 if(link.getStatus() == WorkflowEnum.STATUS_REJECT.getValue().intValue()){ //椹冲洖
@@ -115,17 +162,79 @@
             {
                 link.setDealUserId(userId);
                 updateLinkFieldAndFinish(link);
-
-                Integer mainId = link.getMainId();
-                WorkflowMain main = mainService.getOne(mainId);
-                if(main.getType()==1){ //灏嗚鍒掕浆绉诲埌姝e紡琛�
-                    List<BattDischargePlanTemp> tempListByMain = battDischargePlanTempService.getListByMainId(mainId);
-                    planService.insertConfirmDischargePlan(tempListByMain);
+                if(link.getStatus().intValue() == WorkflowEnum.STATUS_FINISH.getValue()) {
+                    Integer mainId = link.getMainId();
+                    WorkflowMain main = mainService.getOne(mainId);
+                    if (main.getType() == 1) { //灏嗚鍒掕浆绉诲埌姝e紡琛�
+                        List<BattDischargePlanTemp> tempListByMain = battDischargePlanTempService.getListByMainId(mainId);
+                        planService.insertConfirmDischargePlan(tempListByMain);
+                    }
                 }
                 break;
             }
         }
         return new Response().setII(1,"鏇存柊瀹屾垚");
+    }
+
+    public Response updateLink(WorkflowLinkDTO linkDTO) {
+        int userId = ActionUtil.getUser().getUId().intValue();
+        if(linkDTO.getType().intValue() == WorkflowEnum.MAIN_TYPE_FAULT_UPLOAD.getValue()) { //鏁呴殰闅愭偅娴佺▼
+            updateLinkOfFaultUpload(linkDTO, userId);
+        }
+        return new Response().setII(1,"鏇存柊瀹屾垚");
+    }
+
+    private void updateLinkOfFaultUpload(WorkflowLinkDTO linkDTO, int userId) {
+        Date now = new Date();
+        WorkflowLink link = linkDTO.getLink();
+        String processLevel = link.getProcessLevel();
+        FaultUpload faultUpload = linkDTO.getFaultUpload();
+        switch (processLevel){
+            case "P2"://褰撳墠鑺傜偣涓鸿繃绋�1-绠$悊灞傚鏍�
+            {
+                link.setDealUserId(userId);
+                if(link.getStatus() == WorkflowEnum.STATUS_REJECT.getValue().intValue()){ //椹冲洖
+                    updateLinkFieldAndFinish(link);
+                }else{ //閫氳繃
+                    //涓昏〃鏇存柊灞傜骇
+                    mainService.updateProcessLevel("P3",link.getMainId());
+                    updateLinkField(link);
+                    //鏂板缓涓嬩竴鑺傜偣-棰嗗灞�
+                    WorkflowLink linkNew = new WorkflowLink();
+                    linkNew.setMainId(link.getMainId());
+                    linkNew.setParentId(link.getId());
+                    linkNew.setProcessLevel(WorkflowDischargePlanEnum.PROCESS_MANAGER2SIGN.getProcessLevel());
+                    linkNew.setProcessLevelName(WorkflowDischargePlanEnum.PROCESS_MANAGER2SIGN.getProcessLevelName());
+                    linkNew.setCreateTime(now);
+                    linkNew.setDealRoleId(RoleEnum.LEADER.getId());
+                    linkNew.setDealType(WorkflowEnum.TYPE_TRANSFER_DISPATCH.getValue());
+                    String dealUserName = ActionUtil.getUser().getUName();
+                    linkNew.setDealDesc(dealUserName+"瀹℃牳瀹屾垚");
+                    linkNew.setStatus(WorkflowEnum.STATUS_TAKING.getValue());
+                    mapper.insert(linkNew);
+
+                    //绠$悊灞傛彁鍑虹敵鎶�,鐢熸垚鐢虫姤搴撳唴鐨勮褰�
+                    FaultUploadApplication application = new FaultUploadApplication();
+                    application.setAlarmNum(faultUpload.getAlarmNum());
+                    application.setAlarmType(faultUpload.getAlarmType());
+                    application.setStationId(faultUpload.getStationId());
+                    application.setType(faultUpload.getType());
+                    application.setDescription(faultUpload.getDescription());
+                    application.setUploadUserId(userId);
+                    application.setCreateTime(now);
+                    application.setMainId(link.getMainId());
+                    faultUploadApplicationService.add(application);
+
+                }
+                break;
+            }
+            case "P3"://褰撳墠鑺傜偣涓鸿繃绋�3-棰嗗灞傚鎵�
+            {
+                link.setDealUserId(userId);
+                updateLinkFieldAndFinish(link);
+                break;
+            }
+        }
     }
 
     /**
@@ -147,7 +256,6 @@
     private void updateLinkField(WorkflowLink link) {
         Date now = new Date();
         link.setDealTime(now);
-        link.setDealDesc("绠$悊鍛樺鐞嗛�氳繃");
         mapper.updateById(link);
     }
 
@@ -183,6 +291,47 @@
         return statistics;
     }
 
+    /**
+     *
+     * 浜屾鏍稿鍜岄殣鎮f晠闅滅殑缁熻
+     *
+     * 澧炲姞浜嗗叏閮� 0
+     * 0:鍏ㄩ儴
+     * 1:瀹℃壒涓�
+     * 2:閫氳繃
+     * 3:椹冲洖
+     *
+     * status鍚箟:1-寰呮帴鍗�,6-寰呭鏍�,58-宸插鏍�
+     * @param type
+     * @param user
+     * @return
+     */
+    public Response getReceivedStatistics2(int type, UserInf user) {
+        Map<Integer,Integer> statistics = new HashMap<>();
+        statistics.put(0,0);
+        statistics.put(1,0);
+        statistics.put(2,0);
+        statistics.put(3,0);
+        List<WorkflowLink> links = mapper.getReceivedList2(type,user);
+        Map<Integer, List<WorkflowLink>> receivedListMap = links.stream().collect(Collectors.groupingBy(WorkflowLink::getStatus));
+        Set<Integer> statusSet = receivedListMap.keySet();
+        int sum = 0;
+        for (Integer status : statusSet) {
+            int size = receivedListMap.get(status).size();
+            if (status == 1 || status == 6) { //瀹℃壒涓�
+                statistics.put(1, statistics.get(1) + size);
+            } else if(status == 5){ //閫氳繃
+                statistics.put(2, size);
+            }else if(status == 8){ //椹冲洖
+                statistics.put(3,size);
+            }
+            sum+=size;
+        }
+        statistics.put(0,sum);
+        return new Response().set(1,statistics);
+    }
+
+
     public void add(WorkflowLink link) {
         mapper.insert(link);
     }
@@ -196,28 +345,37 @@
             case 0://褰撳墠鑺傜偣涓鸿繃绋�0-绠$悊鍛樺鎵�
             {
                 link.setDealUserId(userId);
+                link.setDealDesc("绠$悊鍛樺鐞嗛�氳繃");
                 if (link.getStatus() == WorkflowEnum.STATUS_REJECT.getValue().intValue()) { //椹冲洖
+                    link.setDealDesc("绠$悊鍛橀┏鍥�");
                     updateLinkFieldAndFinish(link);
                 } else { //閫氳繃
                     updateLinkField(link);
                     //鏂板缓涓嬩竴鑺傜偣-棰嗗灞�
                     WorkflowLink linkNew = new WorkflowLink();
                     linkNew.setMainId(link.getMainId());
+                    linkNew.setProcessLevel("P3");
+                    linkNew.setProcessLevelName("棰嗗瀹℃壒");
                     linkNew.setParentId(link.getId());
                     linkNew.setCreateTime(now);
                     linkNew.setDealRoleId(RoleEnum.LEADER.getId());
                     linkNew.setDealType(WorkflowEnum.TYPE_TRANSFER_DISPATCH.getValue());
-                    String dealUserName = ActionUtil.getUser().getUName();
                     linkNew.setDealDesc("棰嗗灞傚鐞嗕腑");
-                    linkNew.setStatus(WorkflowEnum.STATUS_WAIT_FOR_APPROVE.getValue());
+                    linkNew.setStatus(WorkflowEnum.STATUS_TAKING.getValue());
                     mapper.insert(linkNew);
+                    //淇敼涓昏〃鐨勬祦绋�
+                    mainService.updateProcessLevel("P3", link.getMainId());
                 }
                 break;
             }
             case 10://褰撳墠鑺傜偣涓鸿繃绋�10-棰嗗灞傚鎵�
             {
                 link.setDealUserId(userId);
-                link.setDealDesc("棰嗗灞傚鎵归�氳繃");
+                if (link.getStatus() == WorkflowEnum.STATUS_REJECT.getValue().intValue()) { //椹冲洖
+                    link.setDealDesc("棰嗗灞傞┏鍥�");
+                } else {
+                    link.setDealDesc("棰嗗灞傚鎵归�氳繃");
+                }
                 updateLinkFieldAndFinish(link);
             }
         }
@@ -225,17 +383,79 @@
     }
 
     //鏌ヨ鑺傜偣(闄ゆ斁鐢佃鍒掍箣澶栫殑)
-    public Response searchTmp(int type, int status, int pageNum, int pageSize) {
-        UserInf uinf = ActionUtil.getUser();
+    public Response searchTmp(int uId, int uRole, int type, int status, int pageNum, int pageSize) {
         //鏌ヨ鑷繁闇�瑕佸鐞嗘垨鑰呭鎵圭殑
         PageHelper.startPage(pageNum, pageSize);
-        List<WorkflowLink> list = mapper.searchTmp(uinf.getUId().intValue(), uinf.getURole(), type, status);
+        List<WorkflowLink> list = mapper.searchTmp(uId, uRole, type, status);
         PageInfo pageInfo = new PageInfo(list);
-        return new Response().setII(1, list == null ? false : true, list, "鏌ヨ鑺傜偣(闄ゆ斁鐢佃鍒掍箣澶栫殑)");
+        //杩藉姞鏈烘埧淇℃伅
+        if(type !=1) { //1涓烘煡璇㈡斁鐢佃鍒�,涓嶈拷鍔犳満鎴夸俊鎭�
+            List<Integer> mainIdList = list.stream().map(WorkflowLink::getMainId).collect(Collectors.toList());
+            //浠庝簩娆℃牳瀹规煡璇�
+            List<StationInf> stationInfList = tmpMapper.getStationInfWithSpecificMainId(mainIdList);
+            //浠庢晠闅滈殣鎮f煡璇�
+            List<StationInf> stationInfList2 = faultUploadApplicationService.getStationInfWithSpecificMainId(mainIdList);
+
+            list.forEach(link -> {
+                if(link.getWorkflowMain().getType().intValue() == WorkflowEnum.MAIN_TYPE_DISCHARGE_DIST.getValue()){
+                    for (StationInf stationInf : stationInfList) {
+                        if(stationInf.getTogetherFlag() == link.getMainId()){
+                            link.setStationInf(stationInf);
+                            break;
+                        }
+                    }
+                }
+                else if(link.getWorkflowMain().getType().intValue() == WorkflowEnum.MAIN_TYPE_FAULT_UPLOAD.getValue()){
+                    for (StationInf stationInf : stationInfList2) {
+                        if(stationInf.getTogetherFlag() == link.getMainId()){
+                            link.setStationInf(stationInf);
+                            break;
+                        }
+                    }
+                }
+            });
+        }
+
+
+
+        return new Response().setII(1, list == null ? false : true, pageInfo, "鏌ヨ鑺傜偣(闄ゆ斁鐢佃鍒掍箣澶栫殑)");
     }
 
     //鑺傜偣涓轰簩娆℃斁鐢垫椂鏌ヨ浜屾鏀剧數鍙傛暟鍜屾湰骞翠笂涓�娆℃湁鏁堟牳瀹规暟鎹�
     public Response searchLastHrById(int mid) {
+        Map<String, Object> map = searchHrByMId(mid);
+        return new Response().setII(1, true, map, "鑺傜偣涓轰簩娆℃斁鐢垫椂鏌ヨ浜屾鏀剧數鍙傛暟鍜屾湰骞翠笂涓�娆℃湁鏁堟牳瀹规暟鎹�");
+    }
+
+    //鑺傜偣涓烘晠闅滈殣鎮�
+    public Response searcFaultById(int mid) {
+        Map<String, Object> map = searchFaultByMId(mid);
+        return new Response().setII(1, true, map, "鑺傜偣涓轰簩娆℃斁鐢垫椂鏌ヨ浜屾鏀剧數鍙傛暟鍜屾湰骞翠笂涓�娆℃湁鏁堟牳瀹规暟鎹�");
+    }
+
+    //鏌ヨ鑷繁鐢宠鐨勫伐鍗�(鍘婚櫎鏀剧數璁″垝)
+    public Response getFlowMainByUid(int uId, int type, int status, int pageNum, int pageSize) {
+        //鏌ヨ鑷繁闇�瑕佸鐞嗘垨鑰呭鎵圭殑
+        PageHelper.startPage(pageNum, pageSize);
+        List<WorkflowMain> list = mapper.getFlowMainByUid(uId, type, status);
+        if (list != null && list.size() > 0) {
+            for (WorkflowMain main : list) {
+                if (main.getType() == 2) {
+                    Map<String, Object> map = searchHrByMId(main.getId());
+                    main.setHrMap(map);
+                }
+                if (main.getType() == 3) {
+                    Map<String, Object> map = searchFaultByMId(main.getId());
+                    main.setFaultMap(map);
+                }
+            }
+        }
+        PageInfo pageInfo = new PageInfo(list);
+        return new Response().setII(1, list == null ? false : true, pageInfo, "鏌ヨ鑷繁鐢宠鐨勫伐鍗�(鍘婚櫎鏀剧數璁″垝)");
+    }
+
+    //鑺傜偣涓轰簩娆℃斁鐢垫椂鏌ヨ浜屾鏀剧數鍙傛暟鍜屾湰骞翠笂涓�娆℃湁鏁堟牳瀹规暟鎹�
+    public Map searchHrByMId(int mid) {
         Map<String, Object> map = new HashMap<>();
         //鏌ヨ浜屾鏀剧數鍙傛暟
         QueryWrapper tmpWrapper = Wrappers.query();
@@ -249,6 +469,12 @@
         mainWrapper.last("limit 1");
         WorkflowMain main = mainMapper.selectOne(mainWrapper);
         map.put("main", main);
+        //link琛ㄥ崟淇℃伅
+        QueryWrapper linkWrapper = Wrappers.query();
+        linkWrapper.eq("main_id", mid);
+        linkWrapper.orderByAsc("parent_id");
+        List<WorkflowLink> linkList = linkMapper.selectList(linkWrapper);
+        map.put("linkList", linkList);
         //鏈勾涓婁竴娆℃湁鏁堟牳瀹规暟鎹�
         if (tmp != null) {
             BatttestdataInf tinf = testInfMapper.searchHrYear(tmp.getBattGroupId());
@@ -259,17 +485,61 @@
             Battinf binf = binfMapper.selectOne(infWrapper);
             map.put("binf", binf);
         }
-
-        return new Response().setII(1, true, map, "鑺傜偣涓轰簩娆℃斁鐢垫椂鏌ヨ浜屾鏀剧數鍙傛暟鍜屾湰骞翠笂涓�娆℃湁鏁堟牳瀹规暟鎹�");
+        return map;
     }
 
-    //鏌ヨ鑷繁鐢宠鐨勫伐鍗�(鍘婚櫎鏀剧數璁″垝)
-    public Response getFlowMainByUid(int type, int status, int pageNum, int pageSize) {
-        UserInf uinf = ActionUtil.getUser();
-        //鏌ヨ鑷繁闇�瑕佸鐞嗘垨鑰呭鎵圭殑
-        PageHelper.startPage(pageNum, pageSize);
-        List<WorkflowMain> list = mapper.getFlowMainByUid(uinf.getUId().intValue(), type, status);
-        PageInfo pageInfo = new PageInfo(list);
-        return new Response().setII(1, list == null ? false : true, list, "鏌ヨ鑷繁鐢宠鐨勫伐鍗�(鍘婚櫎鏀剧數璁″垝)");
+    //鑺傜偣涓烘晠闅滈殣鎮f椂
+    public Map searchFaultByMId(int mid) {
+        Map<String, Object> map = new HashMap<>();
+        //鏌ヨ鏁呴殰闅愭偅鐢宠琛�
+        QueryWrapper faultWrapper = Wrappers.query();
+        faultWrapper.eq("main_id", mid);
+        faultWrapper.last("limit 1");
+        FaultUpload faultUpload = faultUploadMapper.selectOne(faultWrapper);
+        map.put("faultUpload", faultUpload);
+        if (faultUpload != null) {
+            QueryWrapper infWrapper = new QueryWrapper();
+            infWrapper.eq("stationid", faultUpload.getStationId());
+            infWrapper.last("limit 1");
+            StationInf sinf = stationInfMapper.selectOne(infWrapper);
+            map.put("sinf", sinf);
+            QueryWrapper almWrapper = new QueryWrapper();
+            almWrapper.eq("alm_solekey", faultUpload.getAlarmNum());
+            almWrapper.last("limit 1");
+            if (faultUpload.getAlarmType() == 1) {//鐢垫睜鍛婅
+                BattAlarmDataVerify battAlm = alarmDataVerifyMapper.selectOne(almWrapper);
+                map.put("alarm", battAlm);
+            } else if (faultUpload.getAlarmType() == 2) {//璁惧鍛婅
+                DevAlarmDataVerify devAlm = devAlarmDataVerifyMapper.selectOne(almWrapper);
+                map.put("alarm", devAlm);
+            } else if (faultUpload.getAlarmType() == 3) {//鐢垫簮鍛婅
+                PwrDevAlarmVerify pwrAlm = pwrDevAlarmVerifyMapper.selectOne(almWrapper);
+                map.put("alarm", pwrAlm);
+            }
+        }
+        //鏌ヨ鏄惁瑙e喅
+        //鏌ヨ鏁呴殰闅愭偅鐢宠琛�
+        QueryWrapper clearWrapper = Wrappers.query();
+        clearWrapper.eq("main_id", mid);
+        clearWrapper.last("limit 1");
+        AlarmManualClear alarmManualClear = alarmManualClearMapper.selectOne(clearWrapper);
+        if (alarmManualClear != null) {
+            map.put("clearFlag", true);
+        } else {
+            map.put("clearFlag", false);
+        }
+        //main琛ㄥ崟淇℃伅
+        QueryWrapper mainWrapper = Wrappers.query();
+        mainWrapper.eq("id", mid);
+        mainWrapper.last("limit 1");
+        WorkflowMain main = mainMapper.selectOne(mainWrapper);
+        map.put("main", main);
+        //link琛ㄥ崟淇℃伅
+        QueryWrapper linkWrapper = Wrappers.query();
+        linkWrapper.eq("main_id", mid);
+        linkWrapper.orderByAsc("parent_id");
+        List<WorkflowLink> linkList = linkMapper.selectList(linkWrapper);
+        map.put("linkList", linkList);
+        return map;
     }
 }

--
Gitblit v1.9.1