From 1ab5999f546adcca439eb32ea5ecd34819a13ff6 Mon Sep 17 00:00:00 2001 From: xyc <jc_xiong@hotmail.com> Date: 星期六, 12 十月 2024 09:31:07 +0800 Subject: [PATCH] 修改RBD识别算法 --- modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java | 132 ++++++++++++++++++++++++++----------------- 1 files changed, 79 insertions(+), 53 deletions(-) diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java index 4eccb68..0ba3797 100644 --- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java +++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java @@ -14,7 +14,6 @@ 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.basicInfo.service.XhProductModelService; import com.zt.life.modules.mainPart.taskReliability.dao.*; import com.zt.common.utils.JsonUtils2; import com.zt.life.modules.mainPart.taskReliability.dao.SimulatAssessDao; @@ -188,11 +187,13 @@ int groupHeight = 20; double pointNumPerHour = 60.0 / simulatAssess.getSamplPeriod(); + //鏃跺簭鍥剧嚎 for (int i = 0; i < list.size(); i++) { x1 = 0; groupY = groupHeight * i; ProductStatusDto dto = list.get(i); + double startTime = 0.0; for (StatusDto status : dto.getStatusList()) { switch (status.getStatus()) { case "O": @@ -211,9 +212,10 @@ JSONObject lineJson = new JSONObject(templetsStrMap.get(status.getStatus())); setlineXy(lineJson, x1, y, x2, y, ""); JsonUtils2.setJsonValueByPath(lineJson, "data/status".split("/"), status.getStatus()); - JsonUtils2.setJsonValueByPath(lineJson, "data/startTimes".split("/"), String.format("%.4f", x1)); - JsonUtils2.setJsonValueByPath(lineJson, "data/endTimes".split("/"), String.format("%.4f", x1 + status.getTimes())); + JsonUtils2.setJsonValueByPath(lineJson, "data/startTimes".split("/"), String.format("%.1f", startTime)); + JsonUtils2.setJsonValueByPath(lineJson, "data/endTimes".split("/"), String.format("%.1f", startTime + status.getTimes())); JsonUtils2.setJsonValueByPath(lineJson, "id".split("/"), UUIDUtil.generateId().toString()); + startTime = startTime + status.getTimes(); x1 = x2 - 5; jsonArray.add(lineJson); } @@ -275,14 +277,14 @@ JSONObject textJson = new JSONObject(templetsStrMap.get("text")); JsonUtils2.setJsonValueByPath(textJson, "data/dataId".split("/"), modelId); JsonUtils2.setJsonValueByPath(textJson, "id".split("/"), UUIDUtil.generateId().toString()); - JsonUtils2.setJsonValueByPath(textJson, "attrs/label/textWrap/text".split("/"), "妯″瀷"+(i+1)); + JsonUtils2.setJsonValueByPath(textJson, "attrs/label/textWrap/text".split("/"), "妯″瀷" + (i + 1)); JsonUtils2.setJsonValueByPath(textJson, "attrs/label/textWrap/modelName".split("/"), modelName); - JsonUtils2.setJsonValueByPath(textJson, "size/width".split("/"), mapSpace.get("width")+10); + JsonUtils2.setJsonValueByPath(textJson, "size/width".split("/"), mapSpace.get("width") + 10); - double x11 = x1 + ((gkPoint - mapSpace.get("width")+12) / 2); + double x11 = x1 + ((gkPoint - mapSpace.get("width") + 12) / 2); JsonUtils2.setJsonValueByPath(textJson, "position/x".split("/"), x11); - JsonUtils2.setJsonValueByPath(textJson, "position/y".split("/"), y1-10); + JsonUtils2.setJsonValueByPath(textJson, "position/y".split("/"), y1 - 10); jsonArray.add(textJson); x1 = x2; } @@ -307,7 +309,7 @@ double x11 = x - mapSpace.get("width") / 2 - 5; JsonUtils2.setJsonValueByPath(textJson, "position/x".split("/"), x11); - JsonUtils2.setJsonValueByPath(textJson, "position/y".split("/"), y2-10); + JsonUtils2.setJsonValueByPath(textJson, "position/y".split("/"), y2 - 10); jsonArray.add(textJson); curPointHour += periodHour; @@ -480,7 +482,8 @@ List<TaskModelCheckResultDto> chkResult = taskService.checkTaskModel(simulatAssess.getProductId(), simulatAssess.getTaskModelId()); if (chkResult.size() > 0) { - result = Result.error("妯″瀷涓嶅畬鏁达紝璇锋鏌ユā鍨嬪畾涔夊強鍙傛暟閰嶇疆銆�"); +// result = Result.error("妯″瀷涓嶅畬鏁达紝璇锋鏌ユā鍨嬪畾涔夊強鍙傛暟閰嶇疆銆�"); + result = Result.ok(chkResult); return result; } @@ -579,6 +582,7 @@ private void assembleModelXml(SimulatAssess simulatAssess) { Long productId = simulatAssess.getProductId(); + XhProductModel product = xhProductModelDao.getById(productId); List<XhProductModel> productList = xhProductModelDao.getByShipId(productId); List<ParamData> paramDataList = paramDataDao.getDeviceParams(productId); Long taskId = simulatAssess.getTaskModelId(); @@ -604,6 +608,8 @@ addTasksTag(taskPhaseModelAll, root); addModelsTag(taskId, productId, + product.getName(), + product.getNamePath(), productList, paramDataList, taskPhaseModelAll, @@ -666,8 +672,8 @@ } } - private void addTasksTag(List<TaskPhaseModel> taskPhaseModelAll, - Element root) { + public void addTasksTag(List<TaskPhaseModel> taskPhaseModelAll, + Element root) { Element tasksTag = root.addElement("tasks"); for (TaskPhaseModel taskPhaseModel : taskPhaseModelAll) { Element taskTag = tasksTag.addElement("task"); @@ -743,8 +749,8 @@ } } - private void calcTaskPhaseModelDuration(TaskPhase taskPhase, - List<TaskPhaseModel> taskPhaseModelAll) { + public void calcTaskPhaseModelDuration(TaskPhase taskPhase, + List<TaskPhaseModel> taskPhaseModelAll) { List<TaskPhaseModel> taskPhaseModels = taskPhaseModelDao.getListByPhaseId(taskPhase.getId()); double totalRate = taskPhaseModels.stream().mapToDouble(TaskPhaseModel::getOperatConditDurationRate).sum(); double sum = 0.0; @@ -763,7 +769,7 @@ taskPhaseModels.get(taskPhaseModels.size() - 1).setOperatConditDuration(duration + taskPhase.getPhaseDuration() - sum); } - private List<TaskPhase> calcTaskPhaseDuration(Task task) { + public List<TaskPhase> calcTaskPhaseDuration(Task task) { List<TaskPhase> taskPhases = taskPhaseDao.getListByTaskId(task.getId()); double totalRate = taskPhases.stream().mapToDouble(TaskPhase::getPhaseDurationRate).sum(); double sum = 0.0; @@ -781,6 +787,8 @@ private void addModelsTag(Long taskId, Long productId, + String productName, + String productNamePath, List<XhProductModel> productList, List<ParamData> paramDataList, List<TaskPhaseModel> taskPhaseModelAll, @@ -803,11 +811,12 @@ "end".equals(item.getAlgorithmType())).collect(Collectors.toList()).get(0); ModelNode computerNode = modelNodeAndVnodeList.stream().filter(item -> endAlgo.getComputerList().equals(item.getId().toString())).collect(Collectors.toList()).get(0); - XhProductModel product = xhProductModelDao.getById(productId); node2DOM(taskId, taskPhaseModel, gkModelTop.getModelId(), - product, + productId, + productName, + productNamePath, productList, paramDataList, gkModelsAssembled, @@ -823,7 +832,9 @@ private void node2DOM(Long taskId, TaskPhaseModel taskPhaseModel, Long modelId, - XhProductModel productTop, + Long productId, + String productName, + String productNamePath, List<XhProductModel> productList, List<ParamData> paramDataList, List<OperatConditModel> gkModelsAssembled, @@ -851,7 +862,9 @@ node2DOM(taskId, taskPhaseModel, gkModel.getModelId(), - productTop, + product.getId(), + product.getName(), + product.getNamePath(), productList, paramDataList, gkModelsAssembled, @@ -907,12 +920,12 @@ Algorithm algo = algorithmList.stream().filter(item -> node.getId().equals(item.getId())).collect(Collectors.toList()).get(0); Element element = parent.addElement("logic"); - if (null == productTop) { + if (null == productId) { element.addAttribute("name", algo.getId().toString()); } else { - element.addAttribute("name", productTop.getId().toString()); - element.addAttribute("real_name", productTop.getName()); - element.addAttribute("name_path", productTop.getNamePath()); + element.addAttribute("name", productId.toString()); + element.addAttribute("real_name", productName); + element.addAttribute("name_path", productNamePath); } if ("series".equals(algo.getAlgorithmType())) { element.addAttribute("type", "series"); @@ -933,6 +946,8 @@ node2DOM(taskId, taskPhaseModel, modelId, + null, + null, null, productList, paramDataList, @@ -1011,7 +1026,7 @@ String filePath = path + "/" + fzId + "/" + "result.xml"; List<WeakDto> list = new ArrayList<>(); Map<Long, WeakDto> map = new HashMap<>(); - String xml = null; + String xml; InputStream in = null; try { in = new FileInputStream(filePath); @@ -1021,10 +1036,13 @@ throw new RenException("鏂囦欢涓嶅瓨鍦ㄦ垨鑰呮枃浠舵墦涓嶅紑"); } finally { try { - in.close(); + if (in != null) { + in.close(); + } } catch (IOException e) { e.printStackTrace(); } + } List<WeakDto> productList = baseDao.getProductList(taskId, productId); @@ -1035,39 +1053,45 @@ JSONArray jsonArray = xmlJSONObj.getJSONObject("ResultNodes").getJSONArray("ResultNode"); for (int i = 0; i < jsonArray.size(); i++) { WeakDto data = new WeakDto(); - Long productId1 = null; + Long productId1; Object nameValue = jsonArray.getJSONObject(i).get("name"); if (nameValue instanceof Long) { productId1 = (Long) nameValue; - WeakDto weakDto = map.get(productId1); - Double mtbfTime = null; + if (map.get(productId1) != null) { + WeakDto weakDto = map.get(productId1); + Double mtbfTime = null; - Double mtbf = (Double) jsonArray.getJSONObject(i).get("mttf"); - Double mttr = (Double) jsonArray.getJSONObject(i).get("mttr"); - Double msr = (Double) jsonArray.getJSONObject(i).get("msr"); + Double mtbf = (Double) jsonArray.getJSONObject(i).get("mttf"); + Double mttr = (Double) jsonArray.getJSONObject(i).get("mttr"); + Double msr = (Double) jsonArray.getJSONObject(i).get("msr"); - data.setMtbf(mtbf); - data.setMttr(mttr); - data.setMsr(msr); + data.setMtbf(mtbf); + data.setMttr(mttr); + data.setMsr(msr); - if (weakDto != null) { - data.setId(weakDto.getId()); - data.setSort(weakDto.getSort()); - data.setPid(weakDto.getPid()); - data.setName(weakDto.getName()); - data.setProductType(weakDto.getProductType()); - data.setTimeRate(weakDto.getTimeRate()); - mtbfTime = mtbf / weakDto.getTimeRate(); + if (weakDto != null) { + data.setId(weakDto.getId()); + data.setSort(weakDto.getSort()); + data.setPid(weakDto.getPid()); + data.setName(weakDto.getName()); + data.setProductType(weakDto.getProductType()); + data.setTimeRate(weakDto.getTimeRate()); + mtbfTime = mtbf / weakDto.getTimeRate(); + } + + data.setMtbfTime(mtbfTime); + data.setIsWeak(0); + + list.add(data); } - - data.setMtbfTime(mtbfTime); - data.setIsWeak(0); - - list.add(data); } } - List<WeakDto> treeList = TreeUtils.build(list); - this.getIsweak(treeList.get(0).getChildren()); + List<WeakDto> treeList = new ArrayList<>(); + if (list.size() > 0) { + treeList = TreeUtils.build(list); + this.getIsweak(treeList.get(0).getChildren()); + } + return treeList; } @@ -1103,10 +1127,10 @@ task = taskService.get(taskModelId); simulatAssess = this.getByTaskId(taskModelId); SimulaDataDto resultData; - if (showProductId!=null){ + if (showProductId != null) { simulatAssess.setProductId(showProductId); - resultData =this.getResultXML(simulatAssess); - }else{ + resultData = this.getResultXML(simulatAssess); + } else { resultData = this.getResultXML(simulatAssess); } @@ -1135,7 +1159,7 @@ this.update(simulatAssess); } String filePath = path + "/" + simulatAssess.getId() + "/" + "result.xml"; - String xml = null; + String xml; InputStream in = null; try { @@ -1146,7 +1170,9 @@ throw new RenException("鏂囦欢涓嶅瓨鍦ㄦ垨鑰呮枃浠舵墦涓嶅紑"); } finally { try { - in.close(); + if (in != null) { + in.close(); + } } catch (IOException e) { e.printStackTrace(); } -- Gitblit v1.9.1