From ada810aa38609da55b0f348b86cc8a8d8ace0efb Mon Sep 17 00:00:00 2001 From: xyc <jc_xiong@hotmail.com> Date: 星期二, 15 十月 2024 15:08:39 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskService.java | 205 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 203 insertions(+), 2 deletions(-) diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskService.java index b4e4d06..c0d7577 100644 --- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskService.java +++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskService.java @@ -1,12 +1,22 @@ package com.zt.life.modules.mainPart.taskReliability.service; import com.zt.common.service.BaseService; -import com.zt.life.modules.mainPart.taskReliability.dao.TaskDao; -import com.zt.life.modules.mainPart.taskReliability.model.Task; +import com.zt.life.modules.mainPart.basicInfo.dao.ParamDataDao; +import com.zt.life.modules.mainPart.basicInfo.dao.XhProductModelDao; +import com.zt.life.modules.mainPart.basicInfo.model.ParamData; +import com.zt.life.modules.mainPart.basicInfo.model.XhProductModel; +import com.zt.life.modules.mainPart.taskReliability.dao.*; +import com.zt.life.modules.mainPart.taskReliability.dto.TaskModelCheckResultDto; +import com.zt.life.modules.mainPart.taskReliability.model.*; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.zt.common.db.query.QueryFilter; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** @@ -17,6 +27,19 @@ */ @Service public class TaskService extends BaseService<TaskDao, Task> { + + @Autowired + private OperatConditModelDao operatConditModelDao; + @Autowired + private ModelNodeAlgorithmDao modelNodeAlgorithmDao; + @Autowired + private ModelRbdDao modelRbdDao; + @Autowired + private XhProductModelDao xhProductModelDao; + @Autowired + private ParamDataDao paramDataDao; + @Autowired + private TaskBinoParamDao taskBinoParamDao; /** * 鍒嗛〉鏌ヨ @@ -40,4 +63,182 @@ public List<Task> getTaskList(Long productId) { return baseDao.getTaskList(productId); } + + /** + * 瀵逛换鍔″彲闈犳�фā鍨嬪強鍏跺弬鏁伴厤缃繘琛屽畬鏁存�ф鏌ワ紝骞舵寚鍑轰互涓�5绫婚敊璇細 + * 0锛変换鍔℃�绘椂闀挎湭閰嶇疆 + * 1锛夐樁娈垫椂闀挎湭閰嶇疆 + * 2锛夊伐鍐垫椂闀挎湭閰嶇疆 + * 3锛夊伐鍐垫ā鍨嬫爲涓嶅畬鏁� + * 4锛夊缓妯℃湭瀹屾垚 + * 5锛夎澶囧弬鏁版湭閰嶇疆 + * 鍙互瀵规墍鏈変换鍔℃ā鍨嬭繘琛屾鏌ワ紝涔熷彲浠ュ彧妫�鏌ュ叆鍙傛寚瀹氱殑浜у搧鑺傜偣涓嬬殑浠诲姟妯″瀷锛涘墠鑰呴�傚悎鍦ㄩ〉闈㈠垪琛ㄦ樉绀哄叏浣撳缓妯$姸鎬侊紝鍚庤�呴�傚悎瀵规煇浠诲姟杩涜浠跨湡鏃剁殑妫�鏌ャ�� + * @param productId 浜у搧鑺傜偣ID锛堜竴鑸负鎬讳綋锛� + * @return 妫�鏌ュ嚭鐨勯敊璇殑List锛岄暱搴︿负0琛ㄧず娌℃湁閿欒锛屼笉浼氳繑鍥瀗ull + */ + public List<TaskModelCheckResultDto> checkTaskModel(Long productId, Long taskModelId) { + List<TaskModelCheckResultDto> checkResult = new ArrayList<>(); + List<XhProductModel> deviceUsedList = new ArrayList<>(); // 妫�鏌ュ璞℃ā鍨嬩腑浣跨敤鍒扮殑鎵�鏈夎澶� + + // 1. 鑾峰彇鏁版嵁 + // 1.1 鑾峰彇鎵�鏈変换鍔℃ā鍨嬫暟鎹甃ist + List<Task> taskModelList = baseDao.getTaskModels(productId, taskModelId); + // 1.2 鑾峰彇鎵�鏈変换鍔℃ā鍨嬮樁娈垫暟鎹甃ist + List<TaskPhase> taskModelPhaseList = baseDao.getTaskModelPhases(productId, taskModelId); + // 1.3 鑾峰彇鎵�鏈変换鍔℃ā鍨嬪伐鍐垫暟鎹甃ist + List<TaskPhaseModel> taskModelPhaseModelList = baseDao.getTaskModelPhaseModels(productId, taskModelId); + // 1.4 鑾峰彇浜у搧缁撴瀯鏍戠粨鏋勬暟鎹� + List<XhProductModel> productTreeList = xhProductModelDao.getProductTree(productId); + // 1.5 鑾峰彇鎵�鏈夋ā鍨嬪寘鍚殑鑺傜偣鏁版嵁 + List<ModelNodeAlgorithm> rbdNodeList = modelNodeAlgorithmDao.getRbdNodes(); + // 1.6 鑾峰彇鎵�鏈夊伐鍐垫ā鍨嬫爲鏁版嵁List + List<OperatConditModel> gkModelList = operatConditModelDao.getGKModelTrees(productId); + // 1.7 鑾峰彇鎵�鏈塕BD鏁版嵁List + Map<String, Object> mapFilter = new HashMap<>(); + mapFilter.put("productId", productId); + List<ModelRbd> modelRbdList = modelRbdDao.getList(mapFilter); + // 1.8 鑾峰彇鎵�鏈夎澶囧弬鏁帮紙鍚换鍔℃ā鍨嬬殑浜岄」鍒嗗竷鍙傛暟锛塋ist + List<ParamData> paramDataList = paramDataDao.getDeviceParams(productId); + List<TaskBinoParam> binoParamList = taskBinoParamDao.getBinoParams(taskModelId); + + // 2. 妫�鏌ユ瘡涓换鍔℃ā鍨嬬殑鏁版嵁瀹屾暣鎬э紙閫掑綊锛� + for (Task taskModel : taskModelList) { + if (null == taskModel.getTaskDuration() || 0.0 == taskModel.getTaskDuration()) { + // 2.1 浠诲姟鎬绘椂闀挎湭閰嶇疆 + setTaskModelCheckResult(taskModel, + null, + null, null, null, + TaskModelCheckResultDto.CATEGORY_TASK_TIME, checkResult); + } + List<TaskPhase> phases = taskModelPhaseList.stream().filter(item -> + taskModel.getId().equals(item.getTaskId())).collect(Collectors.toList()); + for (TaskPhase phase : phases) { + if (null == phase.getPhaseDurationRate() || 0.0 == phase.getPhaseDurationRate()) { + // 2.2 闃舵鏃堕暱鏈厤缃� + setTaskModelCheckResult(taskModel, + phase, + null, null, null, + TaskModelCheckResultDto.CATEGORY_PHASE_TIME, checkResult); + } + List<TaskPhaseModel> phaseModels = taskModelPhaseModelList.stream().filter(item -> + phase.getId().equals(item.getPhaseId())).collect(Collectors.toList()); + if (phaseModels.size() <= 0) { + // 鏃犲伐鍐垫ā鍨嬫暟鎹� + // 2.3 宸ュ喌鏃堕暱鏈厤缃� + setTaskModelCheckResult(taskModel, + phase, + null, null, null, + TaskModelCheckResultDto.CATEGORY_GK_TIME, checkResult); + } else { + // 鏈夊伐鍐垫ā鍨嬫暟鎹� + List<TaskPhaseModel> phaseModelWithDurations = taskModelPhaseModelList.stream().filter(item -> + 0.0 != item.getOperatConditDurationRate()).collect(Collectors.toList()); + if (phaseModelWithDurations.size() <= 0) { + // 鏃犲伐鍐垫ā鍨嬭閫夌敤 + // 2.3 宸ュ喌鏃堕暱鏈厤缃� + for (TaskPhaseModel taskPhaseModel : phaseModels) { + setTaskModelCheckResult(taskModel, + phase, + taskPhaseModel, + null, null, + TaskModelCheckResultDto.CATEGORY_GK_TIME, checkResult); + } + } else { + // 鏈夊伐鍐垫ā鍨嬭閫夌敤锛屾鏌ラ�夌敤鐨勫伐鍐垫ā鍨� + for (TaskPhaseModel taskPhaseModel : phaseModelWithDurations) { + // 棣栧厛鎵惧埌椤跺眰妯″瀷 + List<OperatConditModel> gkModelTops = gkModelList.stream().filter(item -> + taskPhaseModel.getOperatConditId().equals(item.getOperatConditId()) + && taskModel.getProductId().equals(item.getProductId())).collect(Collectors.toList()); + if (gkModelTops.size() <= 0) { + // 鏃犲伐鍐垫ā鍨嬫爲鏍硅妭鐐癸紝鍗虫剰鍛崇潃鏃犲伐鍐垫ā鍨嬫爲 + XhProductModel node = (XhProductModel) productTreeList.stream().filter(item -> + taskModel.getProductId().equals(item.getId())).collect(Collectors.toList()).get(0); + setTaskModelCheckResult(taskModel, + phase, + taskPhaseModel, + null, + node, + TaskModelCheckResultDto.CATEGORY_GK_MODEL, checkResult); + } else { + // 鏈夊伐鍐垫ā鍨嬫爲锛屾鏌ュ叾瀹屾暣鎬� +// checkGkModel(taskModel, phase, taskPhaseModel, gkModelTops.get(0), +// deviceUsedList, checkResult); + } + } + } + } + + } + } + // 3. 杩斿洖妫�鏌ョ粨鏋� + return checkResult; + + } + + // 閫掑綊鍑芥暟 + private void checkGkModel(Task taskModel, + TaskPhase phase, + TaskPhaseModel taskPhaseModel, + OperatConditModel gkModelTreeTop, + List<OperatConditModel> gkModelList, + List<ModelNodeAlgorithm> rbdNodeList, + List<XhProductModel> productTreeList, + List<XhProductModel> deviceUsedList, + List<TaskModelCheckResultDto> checkResult) { + // 棣栧厛鎵惧埌椤跺眰妯″瀷 + List<OperatConditModel> gkModelTops = gkModelList.stream().filter(item -> + taskPhaseModel.getOperatConditId().equals(item.getOperatConditId()) + && taskModel.getProductId().equals(item.getProductId())).collect(Collectors.toList()); + if (gkModelTops.size() <= 0) { + // 宸ュ喌妯″瀷鏍戜笉瀹屾暣锛堥《灞傝妭鐐规湭閰嶇疆妯″瀷锛� + XhProductModel node = (XhProductModel) productTreeList.stream().filter(item -> + taskModel.getProductId().equals(item.getId())).collect(Collectors.toList()).get(0); + setTaskModelCheckResult(taskModel, + phase, + taskPhaseModel, + null, + node, + TaskModelCheckResultDto.CATEGORY_GK_MODEL, checkResult); + } + } + + private void setTaskModelCheckResult(Task taskModel, + TaskPhase taskModelPhase, + TaskPhaseModel taskModelPhaseModel, + OperatConditModel gkModel, + XhProductModel node, + String category, + List<TaskModelCheckResultDto> checkResult) { + TaskModelCheckResultDto result = new TaskModelCheckResultDto(); + result.setCategory(category); + result.setProductId(taskModel.getProductId()); + result.setTaskModelId(taskModel.getId()); + result.setTaskModelName(taskModel.getTaskName()); + switch(category) { + case TaskModelCheckResultDto.CATEGORY_TASK_TIME: + break; + case TaskModelCheckResultDto.CATEGORY_PHASE_TIME: + result.setTaskModelPhaseId(taskModelPhase.getId()); + result.setTaskModelPhaseName(taskModelPhase.getPhaseName()); + break; + case TaskModelCheckResultDto.CATEGORY_GK_TIME: + result.setTaskModelPhaseId(taskModelPhase.getId()); + result.setTaskModelPhaseName(taskModelPhase.getPhaseName()); + if (null != taskModelPhaseModel) { + result.setGkId(taskModelPhaseModel.getOperatConditId()); + result.setGkName(taskModelPhaseModel.getOperatConditName()); + } + break; + case TaskModelCheckResultDto.CATEGORY_GK_MODEL: + result.setTaskModelPhaseId(taskModelPhase.getId()); + result.setTaskModelPhaseName(taskModelPhase.getPhaseName()); + result.setGkId(taskModelPhaseModel.getOperatConditId()); + result.setGkName(taskModelPhaseModel.getOperatConditName()); + result.setNodeId(node.getId()); + result.setNodeName(node.getName()); + break; + } + checkResult.add(result); + } } -- Gitblit v1.9.1