From 664db98c9e8595ce4dd636a27f480e3a08b81ff5 Mon Sep 17 00:00:00 2001
From: xyc <jc_xiong@hotmail.com>
Date: 星期五, 21 二月 2025 11:13:51 +0800
Subject: [PATCH] 新增可忽略的维修时间
---
modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskService.java | 599 ++++++++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 469 insertions(+), 130 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 c0d7577..0e5a5ad 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
@@ -22,11 +22,11 @@
/**
* task
*
- * @author zt generator
+ * @author zt generator
* @since 1.0.0 2024-03-15
*/
@Service
-public class TaskService extends BaseService<TaskDao, Task> {
+public class TaskService extends BaseService<TaskDao, Task> {
@Autowired
private OperatConditModelDao operatConditModelDao;
@@ -35,11 +35,15 @@
@Autowired
private ModelRbdDao modelRbdDao;
@Autowired
+ private AlgorithmDao algorithmDao;
+ @Autowired
private XhProductModelDao xhProductModelDao;
@Autowired
private ParamDataDao paramDataDao;
@Autowired
private TaskBinoParamDao taskBinoParamDao;
+ @Autowired
+ private ReliabilityAssessDao reliabilityAssessDao;
/**
* 鍒嗛〉鏌ヨ
@@ -61,109 +65,235 @@
}
public List<Task> getTaskList(Long productId) {
- return baseDao.getTaskList(productId);
+ return baseDao.getTaskList(productId);
}
/**
- * 瀵逛换鍔″彲闈犳�фā鍨嬪強鍏跺弬鏁伴厤缃繘琛屽畬鏁存�ф鏌ワ紝骞舵寚鍑轰互涓�5绫婚敊璇細
- * 0锛変换鍔℃�绘椂闀挎湭閰嶇疆
- * 1锛夐樁娈垫椂闀挎湭閰嶇疆
- * 2锛夊伐鍐垫椂闀挎湭閰嶇疆
- * 3锛夊伐鍐垫ā鍨嬫爲涓嶅畬鏁�
- * 4锛夊缓妯℃湭瀹屾垚
- * 5锛夎澶囧弬鏁版湭閰嶇疆
+ * 鍙潬鎬т豢鐪熻瘎浼帮細瀵逛换鍔″彲闈犳�фā鍨嬪強鍏跺弬鏁伴厤缃繘琛屽畬鏁存�ф鏌ワ紝骞舵寚鍑轰互涓�6绫婚敊璇細
+ * 1锛変换鍔℃�绘椂闀挎湭閰嶇疆
+ * 2锛夐樁娈垫椂闀挎湭閰嶇疆
+ * 3锛夊伐鍐垫椂闀挎湭閰嶇疆
+ * 4锛夊伐鍐垫ā鍨嬫爲涓嶅畬鏁�
+ * 5锛夊缓妯℃湭瀹屾垚
+ * 6锛夎澶囧弬鏁版湭閰嶇疆
* 鍙互瀵规墍鏈変换鍔℃ā鍨嬭繘琛屾鏌ワ紝涔熷彲浠ュ彧妫�鏌ュ叆鍙傛寚瀹氱殑浜у搧鑺傜偣涓嬬殑浠诲姟妯″瀷锛涘墠鑰呴�傚悎鍦ㄩ〉闈㈠垪琛ㄦ樉绀哄叏浣撳缓妯$姸鎬侊紝鍚庤�呴�傚悎瀵规煇浠诲姟杩涜浠跨湡鏃剁殑妫�鏌ャ��
+ *
* @param productId 浜у搧鑺傜偣ID锛堜竴鑸负鎬讳綋锛�
* @return 妫�鏌ュ嚭鐨勯敊璇殑List锛岄暱搴︿负0琛ㄧず娌℃湁閿欒锛屼笉浼氳繑鍥瀗ull
*/
- public List<TaskModelCheckResultDto> checkTaskModel(Long productId, Long taskModelId) {
+ public List<TaskModelCheckResultDto> checkTaskModel(Long productId, Long taskId) {
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.1 鑾峰彇鎵�鏈変换鍔℃暟鎹甃ist
+ List<Task> taskList = baseDao.getTasks(productId, taskId);
+ // 1.2 鑾峰彇鎵�鏈変换鍔¢樁娈垫暟鎹甃ist
+ List<TaskPhase> taskPhaseList = baseDao.getTaskPhases(productId, taskId);
+ // 1.3 鑾峰彇鎵�鏈変换鍔″伐鍐垫暟鎹甃ist
+ List<TaskPhaseModel> taskPhaseModelList = baseDao.getTaskPhaseModels(productId, taskId);
// 1.4 鑾峰彇浜у搧缁撴瀯鏍戠粨鏋勬暟鎹�
List<XhProductModel> productTreeList = xhProductModelDao.getProductTree(productId);
- // 1.5 鑾峰彇鎵�鏈夋ā鍨嬪寘鍚殑鑺傜偣鏁版嵁
- List<ModelNodeAlgorithm> rbdNodeList = modelNodeAlgorithmDao.getRbdNodes();
- // 1.6 鑾峰彇鎵�鏈夊伐鍐垫ā鍨嬫爲鏁版嵁List
+ // 1.5 鑾峰彇鎵�鏈夊伐鍐垫ā鍨嬫爲鏁版嵁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
+ // 1.6 鑾峰彇鎵�鏈塕BD鏁版嵁List
+ List<ModelRbd> modelRbdList = modelRbdDao.getListAll();
+ // 1.7 鑾峰彇鎵�鏈夋ā鍨嬪寘鍚殑鑺傜偣鏁版嵁
+ List<ModelNodeAlgorithm> rbdNodeList = modelNodeAlgorithmDao.getRbdNodes();
+ // 1.8 鑾峰彇璇ヨ埞鐨勬墍鏈夎澶囧弬鏁癓ist
List<ParamData> paramDataList = paramDataDao.getDeviceParams(productId);
- List<TaskBinoParam> binoParamList = taskBinoParamDao.getBinoParams(taskModelId);
+ // 1.8 鑾峰彇璇ヤ换鍔$殑浜岄」鍒嗗竷鍙傛暟List
+ List<TaskBinoParam> binoParamList = taskBinoParamDao.getBinoParams(taskId);
- // 2. 妫�鏌ユ瘡涓换鍔℃ā鍨嬬殑鏁版嵁瀹屾暣鎬э紙閫掑綊锛�
- for (Task taskModel : taskModelList) {
- if (null == taskModel.getTaskDuration() || 0.0 == taskModel.getTaskDuration()) {
+ // 2. 妫�鏌ユ瘡涓换鍔℃ā鍨嬬殑鏁版嵁瀹屾暣鎬�
+ for (Task task : taskList) {
+ if (null == task.getTaskDuration() || 0.0 == task.getTaskDuration()) {
// 2.1 浠诲姟鎬绘椂闀挎湭閰嶇疆
- setTaskModelCheckResult(taskModel,
- null,
- null, null, null,
+ setTaskModelCheckResult(task, null, null,
+ null, null, null, null,
TaskModelCheckResultDto.CATEGORY_TASK_TIME, checkResult);
}
- List<TaskPhase> phases = taskModelPhaseList.stream().filter(item ->
- taskModel.getId().equals(item.getTaskId())).collect(Collectors.toList());
+ List<TaskPhase> phases = taskPhaseList.stream().filter(item ->
+ task.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,
+ setTaskModelCheckResult(task, phase, null,
+ null, null, null, null,
TaskModelCheckResultDto.CATEGORY_PHASE_TIME, checkResult);
}
- List<TaskPhaseModel> phaseModels = taskModelPhaseModelList.stream().filter(item ->
- phase.getId().equals(item.getPhaseId())).collect(Collectors.toList());
+ List<TaskPhaseModel> phaseModels = taskPhaseModelList.stream().filter(item ->
+ phase.getId().equals(item.getPhaseId()) && 0.0 != item.getOperatConditDurationRate()).
+ collect(Collectors.toList());
if (phaseModels.size() <= 0) {
- // 鏃犲伐鍐垫ā鍨嬫暟鎹�
// 2.3 宸ュ喌鏃堕暱鏈厤缃�
- setTaskModelCheckResult(taskModel,
- phase,
- null, null, null,
+ setTaskModelCheckResult(task, phase, null,
+ null, 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) {
- // 鏃犲伐鍐垫ā鍨嬫爲鏍硅妭鐐癸紝鍗虫剰鍛崇潃鏃犲伐鍐垫ā鍨嬫爲
+ // 鏈夊伐鍐佃閫夌敤锛屾鏌ラ�夌敤鐨勫伐鍐�
+ for (TaskPhaseModel taskPhaseModel : phaseModels) {
+ List<OperatConditModel> gkModelTree = gkModelList.stream().filter(item ->
+ taskPhaseModel.getOperatConditId().equals(item.getOperatConditId())).collect(Collectors.toList());
+ if (gkModelTree.size() <= 0) {
+ // 鏃犲伐鍐垫ā鍨嬫爲
+ XhProductModel node = (XhProductModel) productTreeList.stream().filter(item ->
+ task.getProductId().equals(item.getId())).collect(Collectors.toList()).get(0);
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, null, null, null,
+ TaskModelCheckResultDto.CATEGORY_GK_MODEL, checkResult);
+ } else {
+ // 鏈夊伐鍐垫ā鍨嬫爲锛屾鏌ュ叾瀹屾暣鎬�
+ for (OperatConditModel gkModel : gkModelTree) {
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);
+ gkModel.getProductId().equals(item.getId())).collect(Collectors.toList()).get(0);
+ if (isNodeInRbdOfParent(node, gkModelTree, rbdNodeList)) {
+ if (null == gkModel.getModelId()) {
+ // 宸ュ喌妯″瀷鏍戜笉瀹屾暣
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, null, null, null,
+ TaskModelCheckResultDto.CATEGORY_GK_MODEL, checkResult);
+ } else {
+ List<ModelRbd> modelRbds = modelRbdList.stream().filter(item ->
+ gkModel.getModelId().equals(item.getId())).collect(Collectors.toList());
+ if (modelRbds.size() == 0) {
+ // 寤烘ā鏈畬鎴�
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, null, null, null,
+ TaskModelCheckResultDto.CATEGORY_MODEL, checkResult);
+ } else {
+ if (!"宸插畬鎴�".equals(modelRbds.get(0).getModelState())) {
+ // 寤烘ā鏈畬鎴�
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), null, null,
+ TaskModelCheckResultDto.CATEGORY_MODEL, checkResult);
+ } else {
+ List<ModelNodeAlgorithm> deviceNodes = rbdNodeList.stream().filter(item ->
+ gkModel.getModelId().equals(item.getModelId())).collect(Collectors.toList());
+ for (ModelNodeAlgorithm deviceNode : deviceNodes) {
+ XhProductModel device = (XhProductModel) productTreeList.stream().filter(item ->
+ deviceNode.getDataId().equals(item.getId())).collect(Collectors.toList()).get(0);
+ if ("5".equals(device.getProductType())) {
+ // 璁惧
+ List<ParamData> params = paramDataList.stream().filter(item ->
+ deviceNode.getDataId().equals(item.getProductId())).collect(Collectors.toList());
+ if (params.size() == 0) {
+ // 璁惧鍙傛暟鏈厤缃�
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), device, null,
+ TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+ } else {
+ ParamData param = params.get(0);
+ if (param.getReliabDistribType() == null) {
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), device, "鍙潬鎬у垎甯冪被鍨�",
+ TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+ } else {
+ if (param.getReliabDistribType() == 1) {
+ // 鎸囨暟鍒嗗竷
+ if (param.getTaskMtbcfRegulate() == null) {
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), device, "MTBCF",
+ TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+ }
+ }
+ if (param.getReliabDistribType() == 2) {
+ // 濞佸竷灏斿垎甯�
+ if (param.getTaskMtbcfRegulate() == null) {
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), device, "MTBCF",
+ TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+ }
+ if (param.getTaskMtbcfOtherParams2() == null) {
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), device, "MTBCF鍙傛暟2",
+ TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+ }
+ if (param.getTaskMtbcfOtherParams3() == null) {
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), device, "MTBCF鍙傛暟3",
+ TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+ }
+ }
+ if (param.getReliabDistribType() == 3) {
+ // 浜岄」鍒嗗竷
+ List<TaskBinoParam> binoParams = binoParamList.stream().filter(item ->
+ phase.getId().equals(item.getPhaseId()) &&
+ taskPhaseModel.getOperatConditId().equals(item.getOperatConditId()) &&
+// modelRbds.get(0).getId().equals(item.getModelId()) &&
+ device.getId().equals(item.getProductId())).collect(Collectors.toList());
+ if (binoParams.size() == 0) {
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), device, "浜岄」鍒嗗竷鍙傛暟",
+ TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+ } else {
+ TaskBinoParam binoParam = binoParams.get(0);
+ if (binoParam.getSuccessRate() == null) {
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), device, "鎴愬姛鐜�",
+ TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+ } else {
+ if (binoParam.getSuccessTimes() != null && binoParam.getSimulatTimes() == null) {
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), device, "鎬绘鏁�",
+ TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+ }
+ if (binoParam.getSuccessTimes() == null && binoParam.getSimulatTimes() != null) {
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), device, "鎴愬姛娆℃暟",
+ TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+ }
+ }
+ }
+ }
+ if (param.getRepairable() == null) {
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), device, "鏄惁鍙淮淇�",
+ TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+ } else {
+ if (1 == param.getRepairable()) {
+ // 鍙淮淇�
+ if (param.getRepairDistribType() == null) {
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), device, "缁翠慨鍒嗗竷绫诲瀷",
+ TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+ }
+ if (param.getRepairDistribType() == 1) {
+ // 鎸囨暟鍒嗗竷
+ if (param.getRepairMttcr() == null) {
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), device, "MTTCR",
+ TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+ }
+ }
+ if (param.getRepairDistribType() == 2) {
+ // 濞佸竷灏斿垎甯�
+ if (param.getRepairMttcr() == null) {
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), device, "MTTCR",
+ TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+ }
+ if (param.getRepairMttcrOtherParams2() == null) {
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), device, "MTTCR鍙傛暟2",
+ TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+ }
+ if (param.getRepairMttcrOtherParams3() == null) {
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), device, "MTTCR鍙傛暟3",
+ TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
}
}
@@ -176,69 +306,278 @@
}
- // 閫掑綊鍑芥暟
- 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 boolean isNodeInRbdOfParent(XhProductModel node,
+ List<OperatConditModel> gkModelTree,
+ List<ModelNodeAlgorithm> rbdNodeList) {
+ boolean result = false;
+ List<OperatConditModel> parents = gkModelTree.stream().filter(item ->
+ item.getProductId().equals(node.getPid())).collect(Collectors.toList());
+ if (parents.size() > 0) {
+ OperatConditModel parent = parents.get(0);
+ if (parent.getModelId() != null) {
+ List<ModelNodeAlgorithm> nodes = rbdNodeList.stream().filter(item ->
+ item.getModelId().equals(parent.getModelId()) && item.getDataId().equals(node.getId())).collect(Collectors.toList());
+ if (nodes.size() > 0) {
+ result = true;
+ }
+ }
}
+
+ return result;
}
- private void setTaskModelCheckResult(Task taskModel,
- TaskPhase taskModelPhase,
- TaskPhaseModel taskModelPhaseModel,
- OperatConditModel gkModel,
+ /**
+ * 鍙潬鎬ц瘎瀹氾細瀵逛换鍔″彲闈犳�фā鍨嬨�佸弬鏁伴厤缃�佸彲闈犳�ц瘎瀹氭暟鎹繘琛屽畬鏁存�ф鏌ワ紝骞舵寚鍑轰互涓�11绫婚敊璇細
+ * 1锛変换鍔℃�绘椂闀挎湭閰嶇疆
+ * 2锛夌洰鍓嶄笉鏀寔澶氶樁娈�
+ * 3锛夐樁娈垫椂闀挎湭閰嶇疆
+ * 4锛夌洰鍓嶄笉鏀寔澶氬伐鍐�
+ * 5锛夊伐鍐垫椂闀挎湭閰嶇疆
+ * 6锛夊伐鍐垫ā鍨嬫爲涓嶅畬鏁�
+ * 7锛夊缓妯℃湭瀹屾垚
+ * 8锛夌洰鍓嶄笉鏀寔涓茶仈銆佸苟鑱斿拰琛ㄥ喅浠ュ鐨勬ā鍨�
+ * 9锛夎澶囧弬鏁版湭閰嶇疆
+ * 10锛夌洰鍓嶄笉鏀寔浜岄」鍒嗗竷鍜屾寚鏁板垎甯冧互澶栫殑鍒嗗竷绫诲瀷
+ * 11锛夎瘎瀹氭暟鎹湭褰曞叆
+ * 鍙互瀵规墍鏈変换鍔℃ā鍨嬭繘琛屾鏌ワ紝涔熷彲浠ュ彧妫�鏌ュ叆鍙傛寚瀹氱殑浜у搧鑺傜偣涓嬬殑浠诲姟妯″瀷锛涘墠鑰呴�傚悎鍦ㄩ〉闈㈠垪琛ㄦ樉绀哄叏浣撳缓妯$姸鎬侊紝鍚庤�呴�傚悎瀵规煇浠诲姟杩涜浠跨湡鏃剁殑妫�鏌ャ��
+ *
+ * @param productId 浜у搧鑺傜偣ID锛堜竴鑸负鎬讳綋锛�
+ * @return 妫�鏌ュ嚭鐨勯敊璇殑List锛岄暱搴︿负0琛ㄧず娌℃湁閿欒锛屼笉浼氳繑鍥瀗ull
+ */
+ public List<TaskModelCheckResultDto> checkTaskModelAssess(Long productId, Long taskId, Long itemId) {
+ List<TaskModelCheckResultDto> checkResult = new ArrayList<>();
+ List<XhProductModel> deviceUsedList = new ArrayList<>(); // 妫�鏌ュ璞℃ā鍨嬩腑浣跨敤鍒扮殑鎵�鏈夎澶�
+
+ // 1. 鑾峰彇鏁版嵁
+ // 1.1 鑾峰彇鎵�鏈変换鍔℃暟鎹甃ist
+ List<Task> taskList = baseDao.getTasks(productId, taskId);
+ // 1.2 鑾峰彇鎵�鏈変换鍔¢樁娈垫暟鎹甃ist
+ List<TaskPhase> taskPhaseList = baseDao.getTaskPhases(productId, taskId);
+ // 1.3 鑾峰彇鎵�鏈変换鍔″伐鍐垫暟鎹甃ist
+ List<TaskPhaseModel> taskPhaseModelList = baseDao.getTaskPhaseModels(productId, taskId);
+ // 1.4 鑾峰彇浜у搧缁撴瀯鏍戠粨鏋勬暟鎹�
+ List<XhProductModel> productTreeList = xhProductModelDao.getProductTree(productId);
+ // 1.5 鑾峰彇鎵�鏈夊伐鍐垫ā鍨嬫爲鏁版嵁List
+ List<OperatConditModel> gkModelList = operatConditModelDao.getGKModelTrees(productId);
+ // 1.6 鑾峰彇鎵�鏈塕BD鏁版嵁List
+ List<ModelRbd> modelRbdList = modelRbdDao.getListAll();
+ // 1.7 鑾峰彇鎵�鏈夋ā鍨嬪寘鍚殑鑺傜偣鏁版嵁
+ List<ModelNodeAlgorithm> rbdNodeList = modelNodeAlgorithmDao.getRbdNodes();
+ // 1.8 鑾峰彇璇ヨ埞鐨勬墍鏈夎澶囧弬鏁癓ist
+ List<ParamData> paramDataList = paramDataDao.getDeviceParams(productId);
+ // 1.8 鑾峰彇璇勫畾鏁版嵁List
+ List<ReliabilityAssess> assessDataList = reliabilityAssessDao.getProductList(productId, itemId);
+
+ // 2. 妫�鏌ユ瘡涓换鍔℃ā鍨嬬殑鏁版嵁瀹屾暣鎬�
+ for (Task task : taskList) {
+ if (null == task.getTaskDuration() || 0.0 == task.getTaskDuration()) {
+ // 2.1 浠诲姟鎬绘椂闀挎湭閰嶇疆
+ setTaskModelCheckResult(task, null, null,
+ null, null, null, null,
+ TaskModelCheckResultDto.CATEGORY_TASK_TIME, checkResult);
+ }
+ List<TaskPhase> phases = taskPhaseList.stream().filter(item ->
+ task.getId().equals(item.getTaskId())).collect(Collectors.toList());
+ if (phases.size() > 1) {
+ // 2.2 鐩墠涓嶆敮鎸佸闃舵
+ setTaskModelCheckResult(task, null, null,
+ null, null, null, null,
+ TaskModelCheckResultDto.CATEGORY_MULTI_PHASE, checkResult);
+ } else if (phases.size() <= 0){
+ // 2.3 闃舵鏃堕暱鏈厤缃�
+ setTaskModelCheckResult(task, null, null,
+ null, null, null, null,
+ TaskModelCheckResultDto.CATEGORY_PHASE_TIME, checkResult);
+ } else {
+ TaskPhase phase = phases.get(0);
+ if (null == phase.getPhaseDurationRate() || 0.0 == phase.getPhaseDurationRate()) {
+ // 2.3 闃舵鏃堕暱鏈厤缃�
+ setTaskModelCheckResult(task, phase, null,
+ null, null, null, null,
+ TaskModelCheckResultDto.CATEGORY_PHASE_TIME, checkResult);
+ }
+ List<TaskPhaseModel> phaseModels = taskPhaseModelList.stream().filter(item ->
+ phase.getId().equals(item.getPhaseId()) && 0.0 != item.getOperatConditDurationRate()).
+ collect(Collectors.toList());
+ if (phaseModels.size() > 1) {
+ // 2.4 鐩墠涓嶆敮鎸佸宸ュ喌
+ setTaskModelCheckResult(task, phase, null,
+ null, null, null, null,
+ TaskModelCheckResultDto.CATEGORY_MULTI_GK, checkResult);
+ } else if (phaseModels.size() <= 0) {
+ // 2.5 宸ュ喌鏃堕暱鏈厤缃�
+ setTaskModelCheckResult(task, phase, null,
+ null, null, null, null,
+ TaskModelCheckResultDto.CATEGORY_GK_TIME, checkResult);
+ } else {
+ // 鏈夊伐鍐佃閫夌敤锛屾鏌ラ�夌敤鐨勫伐鍐�
+ TaskPhaseModel taskPhaseModel = phaseModels.get(0);
+ List<OperatConditModel> gkModelTree = gkModelList.stream().filter(item ->
+ taskPhaseModel.getOperatConditId().equals(item.getOperatConditId())).collect(Collectors.toList());
+ if (gkModelTree.size() <= 0) {
+ // 鏃犲伐鍐垫ā鍨嬫爲
+ XhProductModel node = productTreeList.stream().filter(item ->
+ task.getProductId().equals(item.getId())).collect(Collectors.toList()).get(0);
+ // 2.6 宸ュ喌妯″瀷鏍戜笉瀹屾暣
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, null, null, null,
+ TaskModelCheckResultDto.CATEGORY_GK_MODEL, checkResult);
+ } else {
+ // 鏈夊伐鍐垫ā鍨嬫爲锛屾鏌ュ叾瀹屾暣鎬�
+ for (OperatConditModel gkModel : gkModelTree) {
+ XhProductModel node = productTreeList.stream().filter(item ->
+ gkModel.getProductId().equals(item.getId())).collect(Collectors.toList()).get(0);
+ if (isNodeInRbdOfParent(node, gkModelTree, rbdNodeList)) {
+ if (null == gkModel.getModelId()) {
+ // 2.6 宸ュ喌妯″瀷鏍戜笉瀹屾暣
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, null, null, null,
+ TaskModelCheckResultDto.CATEGORY_GK_MODEL, checkResult);
+ } else {
+ List<ModelRbd> modelRbds = modelRbdList.stream().filter(item ->
+ gkModel.getModelId().equals(item.getId())).collect(Collectors.toList());
+ if (modelRbds.size() == 0) {
+ // 2.7 寤烘ā鏈畬鎴�
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, null, null, null,
+ TaskModelCheckResultDto.CATEGORY_MODEL, checkResult);
+ } else {
+ if (!"宸插畬鎴�".equals(modelRbds.get(0).getModelState())) {
+ // 2.7 寤烘ā鏈畬鎴�
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), null, null,
+ TaskModelCheckResultDto.CATEGORY_MODEL, checkResult);
+ } else {
+ List<Algorithm> algorithmList = algorithmDao.getListByModelId(gkModel.getModelId());
+ if (hasNotSupportModel(algorithmList)) {
+ // 2.8 鐩墠涓嶆敮鎸佷覆鑱斻�佸苟鑱斿拰琛ㄥ喅浠ュ鐨勬ā鍨�
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), null, null,
+ TaskModelCheckResultDto.CATEGORY_MODEL_NOT_SUPPORT, checkResult);
+ } else {
+ List<ModelNodeAlgorithm> deviceNodes = rbdNodeList.stream().filter(item ->
+ gkModel.getModelId().equals(item.getModelId())).collect(Collectors.toList());
+ for (ModelNodeAlgorithm deviceNode : deviceNodes) {
+ XhProductModel device = (XhProductModel) productTreeList.stream().filter(item ->
+ deviceNode.getDataId().equals(item.getId())).collect(Collectors.toList()).get(0);
+ if ("5".equals(device.getProductType())) {
+ // 璁惧
+ List<ParamData> params = paramDataList.stream().filter(item ->
+ deviceNode.getDataId().equals(item.getProductId())).collect(Collectors.toList());
+ if (params.size() == 0) {
+ // 2.9 璁惧鍙傛暟鏈厤缃�
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), device, null,
+ TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+ } else {
+ ParamData param = params.get(0);
+ if (param.getReliabDistribType() == null) {
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), device, "鍙潬鎬у垎甯冪被鍨�",
+ TaskModelCheckResultDto.CATEGORY_PARAM, checkResult);
+ } else {
+ if (param.getReliabDistribType() != 1 && param.getReliabDistribType() != 3) {
+ // 2.10 鐩墠涓嶆敮鎸佷簩椤瑰垎甯冨拰鎸囨暟鍒嗗竷浠ュ鐨勫垎甯冪被鍨�
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), device, "鍙潬鎬у垎甯冪被鍨�",
+ TaskModelCheckResultDto.CATEGORY_DISTRIBUTION_NOT_SUPPORT, checkResult);
+ } else {
+ List<ReliabilityAssess> assessDatas = assessDataList.stream().filter(item ->
+ item.getId().equals(device.getId())).collect(Collectors.toList());
+ if (assessDatas.size() ==0) {
+ // 2.11 璇勫畾鏁版嵁鏈綍鍏�
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), device, null,
+ TaskModelCheckResultDto.CATEGORY_NO_ASSESS_DATA, checkResult);
+ } else {
+ ReliabilityAssess assessData = assessDatas.get(0);
+ if (assessData.getFailNum() == null || assessData.getFailNum() == 0) {
+ // 2.11 璇勫畾鏁版嵁鏈綍鍏�
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), device, "鏁呴殰娆℃暟",
+ TaskModelCheckResultDto.CATEGORY_NO_ASSESS_DATA, checkResult);
+ }
+ if (param.getReliabDistribType() == 1 &&
+ (assessData.getRunTimes() == null || assessData.getRunTimes() == 0.0)) {
+ // 2.11 璇勫畾鏁版嵁鏈綍鍏�
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), device, "璇曢獙鏃堕棿",
+ TaskModelCheckResultDto.CATEGORY_NO_ASSESS_DATA, checkResult);
+ }
+ if (param.getReliabDistribType() == 3 &&
+ (assessData.getRunNum() == null || assessData.getRunNum() == 0.0)) {
+ // 2.11 璇勫畾鏁版嵁鏈綍鍏�
+ setTaskModelCheckResult(task, phase, taskPhaseModel,
+ node, modelRbds.get(0), device, "璇曢獙娆℃暟",
+ TaskModelCheckResultDto.CATEGORY_NO_ASSESS_DATA, checkResult);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ // 3. 杩斿洖妫�鏌ョ粨鏋�
+ return checkResult;
+
+ }
+
+ private boolean hasNotSupportModel(List<Algorithm> algorithmList) {
+ boolean result = false;
+ for (Algorithm algorithm : algorithmList) {
+ if ("switch,bridge".contains(algorithm.getAlgorithmType())) {
+ result = true;
+ break;
+ }
+ }
+ return result;
+ }
+
+ private void setTaskModelCheckResult(Task task,
+ TaskPhase taskPhase,
+ TaskPhaseModel taskPhaseModel,
XhProductModel node,
+ ModelRbd model,
+ XhProductModel device,
+ String paramName,
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;
+ result.setProductId(task.getProductId());
+ result.setTaskId(task.getId());
+ result.setTaskName(task.getTaskName());
+ if (taskPhase != null) {
+ result.setTaskPhaseId(taskPhase.getId());
+ result.setTaskPhaseName(taskPhase.getPhaseName());
}
+ if (taskPhaseModel != null) {
+ result.setGkId(taskPhaseModel.getOperatConditId());
+ result.setGkName(taskPhaseModel.getOperatConditName());
+ }
+ if (node != null) {
+ result.setNodeId(node.getId());
+ result.setNodeName(node.getName());
+ }
+ if (model != null) {
+ result.setModelId(model.getId());
+ result.setModelName(model.getModelName());
+ }
+ if (device != null) {
+ result.setDeviceId(device.getId());
+ result.setDeviceName(device.getName());
+ }
+ result.setParamName(paramName);
checkResult.add(result);
}
}
--
Gitblit v1.9.1