From 64f046ed41c2ae607dc065c82b6d454f64e90584 Mon Sep 17 00:00:00 2001 From: whyclxw <810412026@qq.com> Date: 星期四, 19 六月 2025 21:52:33 +0800 Subject: [PATCH] 预警分析管理-电源告警 --- src/main/java/com/whyc/service/WorkflowLinkService.java | 233 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 233 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/whyc/service/WorkflowLinkService.java b/src/main/java/com/whyc/service/WorkflowLinkService.java new file mode 100644 index 0000000..86b2328 --- /dev/null +++ b/src/main/java/com/whyc/service/WorkflowLinkService.java @@ -0,0 +1,233 @@ +package com.whyc.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.whyc.constant.WorkflowEnum; +import com.whyc.dto.Response; +import com.whyc.mapper.*; +import com.whyc.pojo.db_user.User; +import com.whyc.pojo.web_site.WorkflowDevice; +import com.whyc.pojo.web_site.WorkflowLink; +import com.whyc.pojo.web_site.WorkflowMain; +import com.whyc.util.CommonUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +@Service +public class WorkflowLinkService { + + @Resource + private WorkflowLinkMapper mapper; + + @Autowired + @Lazy + private WorkflowMainService mainService; + + @Autowired + private WorkflowDeviceService deviceService; + + + public void addBatch(List<WorkflowLink> links) { + mapper.insertBatchSomeColumn(links); + } + + public List<WorkflowLink> getWorkflowInfo(Integer mainId) { + QueryWrapper<WorkflowLink> wrapper = Wrappers.query(); + wrapper.eq("main_id", mainId); + return mapper.selectList(wrapper); + } + + @Transactional + public Response updateLink(WorkflowLink link) { + //鑾峰彇褰撳墠鑺傜偣鐨勮褰� + WorkflowLink linkInDB = mapper.selectById(link.getId()); + User user = CommonUtil.getUser(); + Date now = new Date(); + //鏍规嵁id.鏌ヨ鍏宠仈鐨勪富琛� + WorkflowMain mainInDB = mainService.getById(linkInDB.getMainId()); + //鏌ョ湅鐢宠娴佺▼绫诲瀷 + switch (mainInDB.getType()) { + case 1: { //璁惧缁翠慨鐢宠 + //鏌ョ湅涓昏〃鐨勭姸鎬� + //鍥犱负鏄崟涓摼璺妭鐐�,鎵�浠ヤ笉闇�瑕佸垽鏂槸涓嶆槸寰呭鐞�,鑲畾鍙湁1涓妭鐐�. 瀹℃壒閫氳繃鎴栬�呴┏鍥� + //if(main.getStatus() == WorkflowEnum.MAIN_STATUS_DEALING.getValue().intValue()){ //寰呭鐞�,涓嬩竴姝ユ槸瀹℃壒閫氳繃,寰呭鐞� 鎴栬�呴┏鍥� + if(link.getStatus() == WorkflowEnum.LINK_STATUS_PASS.getValue().intValue()){ + mainInDB.setStatus(WorkflowEnum.MAIN_STATUS_WAIT_FOR_DEALING.getValue()); + mainService.updateById(mainInDB); + }else if(link.getStatus() == WorkflowEnum.LINK_STATUS_REJECT.getValue().intValue()){ + mainInDB.setStatus(WorkflowEnum.MAIN_STATUS_END_REJECT.getValue()); + mainInDB.setEndReason(link.getDealRejectReason()); + mainInDB.setEndTime(now); + mainService.updateById(mainInDB); + link.setDealAndClose(1); + } + }break; + //璁惧鍏ュ簱鐢宠 + case 2: + //璁惧鎶ュ簾鐢宠 + case 3:{ + if(link.getStatus() == WorkflowEnum.LINK_STATUS_PASS.getValue().intValue()){ + mainInDB.setStatus(WorkflowEnum.MAIN_STATUS_END_PASS.getValue()); + mainInDB.setEndTime(now); + mainInDB.setEndReason(link.getDealReason()); + mainService.updateById(mainInDB); + }else if(link.getStatus() == WorkflowEnum.LINK_STATUS_REJECT.getValue().intValue()){ + mainInDB.setStatus(WorkflowEnum.MAIN_STATUS_END_REJECT.getValue()); + mainInDB.setEndReason(link.getDealRejectReason()); + mainInDB.setEndTime(now); + //妫�鏌ユ槸鍚︽湁鍏宠仈宸ュ崟. + // 濡傛灉鏈夊叧鑱斿伐鍗�,鍏宠仈宸ュ崟鐘舵�侀噸缃负瀹岀粨寰呭鐞�,瀹屾垚鏃堕棿閲嶇疆涓虹┖ + if(mainInDB.getRelatedId() != null){ + Integer relatedId = mainInDB.getRelatedId(); + mainService.resetRepairStatus(relatedId); + //鍏宠仈宸ュ崟鐨勮澶囬檮灞炶〃鏈鐞嗘暟閲忎篃瑕佸洖閫�,绛変簬涓昏〃璁惧鏁伴噺 + List<WorkflowDevice> deviceRelatedListInDB = deviceService.getByMainId(mainInDB.getRelatedId()); + List<WorkflowDevice> deviceListInDB = deviceService.getByMainId(mainInDB.getId()); + for (int i = 0; i < deviceListInDB.size(); i++) { + WorkflowDevice deviceInDB = deviceListInDB.get(i); + for (int j = 0; j < deviceRelatedListInDB.size(); j++) { + WorkflowDevice deviceRelatedInDB = deviceRelatedListInDB.get(j); + if (deviceInDB.getName().equals(deviceRelatedInDB.getName()) + && deviceInDB.getModel().equals(deviceRelatedInDB.getModel()) + && deviceInDB.getVersion().equals(deviceRelatedInDB.getVersion()) + && deviceInDB.getBrand().equals(deviceRelatedInDB.getBrand()) + && deviceInDB.getType().equals(deviceRelatedInDB.getType()) + && deviceInDB.getSupplier().equals(deviceRelatedInDB.getSupplier()) + ) { + deviceRelatedInDB.setQuantityUnprocessed(deviceInDB.getQuantity()); + //鍏宠仈宸ュ崟褰撳墠璁惧闄勫睘鐨勬湭澶勭悊鏁伴噺鍥為��瀹屾垚,涓嬩竴涓� + break; + } + } + } + deviceService.updateQuantityUnprocessedBatch(deviceRelatedListInDB); + } + mainService.updateById(mainInDB); + link.setDealAndClose(1); + } + }break; + case 4:{ //TODO 鍑哄簱鐢宠 + if(link.getStatus() == WorkflowEnum.LINK_STATUS_PASS.getValue().intValue()){ + mainInDB.setStatus(WorkflowEnum.MAIN_STATUS_WAIT_FOR_DEALING.getValue()); + mainService.updateById(mainInDB); + }else if(link.getStatus() == WorkflowEnum.LINK_STATUS_REJECT.getValue().intValue()){ + mainInDB.setStatus(WorkflowEnum.MAIN_STATUS_END_REJECT.getValue()); + mainInDB.setEndReason(link.getDealRejectReason()); + mainInDB.setEndTime(now); + //妫�鏌ユ槸鍚︽湁鍏宠仈宸ュ崟.濡傛灉鏈夊叧鑱斿伐鍗�,鍏宠仈宸ュ崟鐘舵�侀噸缃负瀹岀粨寰呭鐞�,瀹屾垚鏃堕棿閲嶇疆涓虹┖ + if(mainInDB.getRelatedId() != null){ + Integer relatedId = mainInDB.getRelatedId(); + //mainService.resetRepairStatus(relatedId,mainInDB.getQuantity()); + } + mainService.updateById(mainInDB); + link.setDealAndClose(1); + } + }break; + default: + break; + + } + + link.setId(linkInDB.getId()); + link.setDealUserId(user.getId()); + link.setDealTime(now); + + mapper.updateById(link); + + return new Response().setII(1,"鏇存柊瀹屾垚"); + } + + /** + * + * @param mainId 鐗瑰畾鐨勫崟鎹� + * @param processLevel 鐗瑰畾鐨勮繃绋� + * @return 鐗瑰畾鍗曟嵁,鐗瑰畾杩囩▼,鏈畬鎴愮殑浼氱鐨勬暟閲� + */ + private int getLeftAssignNum(Integer mainId, String processLevel) { + QueryWrapper<WorkflowLink> query = Wrappers.query(); + query.select("count(*) as id").eq("main_id",mainId).eq("process_level",processLevel).ne("status",WorkflowEnum.LINK_STATUS_PASS.getValue()); + return mapper.selectOne(query).getId(); + } + + /** + * 鏇存柊鑺傜偣,涓昏妭鐐逛笉瀹岀粨 + * @param link 鍙傛暟id,status,dealReason鎴栬�卍ealRejectReason + */ + private void updateLinkField(WorkflowLink link) { + Date now = new Date(); + link.setDealTime(now); + mapper.updateById(link); + } + + + public Map<Integer, Integer> getReceivedStatistics(int type, User user) { + Map<Integer,Integer> statistics = new HashMap<>(); + statistics.put(1,0); + statistics.put(6,0); + statistics.put(58,0); + List<WorkflowLink> links = mapper.getReceivedList(type,user); + Map<Integer, List<WorkflowLink>> receivedListMap = links.stream().collect(Collectors.groupingBy(WorkflowLink::getStatus)); + Set<Integer> statusSet = receivedListMap.keySet(); + for (Integer status : statusSet) { + if (status == 5 || status == 8) { + statistics.put(58, statistics.get(58) + receivedListMap.get(status).size()); + } else { + statistics.put(status, receivedListMap.get(status).size()); + } + } + return statistics; + } + + /** + * + * 浜屾鏍稿鍜岄殣鎮f晠闅滅殑缁熻 + * + * 澧炲姞浜嗗叏閮� 0 + * 0:鍏ㄩ儴 + * 1:瀹℃壒涓� + * 2:閫氳繃 + * 3:椹冲洖 + * + * status鍚箟:1-寰呮帴鍗�,6-寰呭鏍�,58-宸插鏍� + * @param type + * @param user + * @return + */ + public Response getReceivedStatistics2(int type, User 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); + } + + +} -- Gitblit v1.9.1