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