From 9f58ccbd8ed371f8e20b37b45b412c33a7f0dfcc Mon Sep 17 00:00:00 2001 From: jinlin <jinlin> Date: 星期二, 22 十月 2024 14:43:20 +0800 Subject: [PATCH] 关于修改可靠性产品重复 --- modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java | 762 ++++++++++++++++++++++++++++++++++------------------------ 1 files changed, 444 insertions(+), 318 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 0b4b201..e9557ad 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; @@ -25,6 +24,7 @@ import com.zt.life.modules.mainPart.taskReliability.dto.TaskPhaseConstraintDto; import com.zt.life.modules.mainPart.taskReliability.model.*; import com.zt.life.modules.mainPart.utils.GetStringSpace; +import io.swagger.models.auth.In; import org.apache.commons.io.IOUtils; import org.dom4j.Document; import org.dom4j.DocumentHelper; @@ -44,7 +44,10 @@ import org.springframework.transaction.annotation.Transactional; import java.io.*; +import java.nio.file.FileAlreadyExistsException; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -75,8 +78,6 @@ private RedisTemplate redisTemplate; @Autowired private TaskService taskService; - @Autowired - private XhProductModelService xhProductModelService; @Autowired private SimulatAssessTaskPhaseModelService simulatAssessTaskPhaseModelService; @Autowired @@ -110,6 +111,7 @@ String templetStr = "{\"cells\":[]}"; Map<String, JSONObject> templetsMap = new HashMap<>(); Map<String, String> templetsStrMap = new HashMap<>(); + Map<Integer, String> templetsStrMap2 = new HashMap<>(); private JSONObject xmlJSONObj; @@ -153,7 +155,10 @@ return baseDao.getChildren(productId, taskId); } - public String getTimeDiagram(Long productId, Long taskId, Long fzId) { + public TimeDiagramDto getTimeDiagram(Long productId, Long taskId, Long fzId, double smallWidth, double minPointNum) { + TimeDiagramDto timeDiagramDto = new TimeDiagramDto(); + timeDiagramDto.setSmallWidth(smallWidth); + timeDiagramDto.setMinPointNum(minPointNum); String filePath = path + "/" + fzId + "/" + "status.json"; ObjectMapper mapper = new ObjectMapper(); String jsonStr = null; @@ -181,41 +186,64 @@ JSONObject jsonObject = new JSONObject(templetStr); JSONArray jsonArray = jsonObject.getJSONArray("cells"); - this.getPetsInfo(); + JSONObject jsonObject3 = new JSONObject(templetStr); + JSONArray jsonArray3 = jsonObject3.getJSONArray("cells"); + + String modelStr2 = this.getPetsInfo(); double x1 = 0; double x2 = 0; - int y = 0; + int y = -10; int groupY = 0; int spaceHeight = 20; int groupHeight = 20; double pointNumPerHour = 60.0 / simulatAssess.getSamplPeriod(); + //鏃跺簭鍥剧嚎 + List<TimeDiagramStatusDto> statusDtoList = new ArrayList<>(); + List<TimeDiagramStatusDto> statusDtoListOld = new ArrayList<>(); for (int i = 0; i < list.size(); i++) { x1 = 0; groupY = groupHeight * i; ProductStatusDto dto = list.get(i); + double startTime = 0.0; + int status2 = 5; for (StatusDto status : dto.getStatusList()) { switch (status.getStatus()) { case "O": y = groupY; + status2 = 5; break; case "F": y = groupY;// + spaceHeight; + status2 = 1; break; case "I": + y = groupY;// + spaceHeight; + status2 = 3; + break; case "S": + y = groupY;// + spaceHeight; + status2 = 2; + break; case "M": y = groupY;// + 2 * spaceHeight; + status2 = 4; break; } x2 = x1 + status.getTimes() * pointNumPerHour + 5; + if (i == 0) { + statusDtoList.add(new TimeDiagramStatusDto(x1, x2, status2)); + } else { + statusDtoListOld.add(new TimeDiagramStatusDto(x1, x2, status2)); + } 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); } @@ -224,33 +252,18 @@ JsonUtils2.setJsonValueByPath(textJson, "attrs/label/textWrap/text".split("/"), dto.getName()); JsonUtils2.setJsonValueByPath(textJson, "position/x".split("/"), 20); JsonUtils2.setJsonValueByPath(textJson, "position/y".split("/"), y - 15); - jsonArray.add(textJson); - - } - - //鍥句緥 - int spaceWitdth = 80; - x1 = -spaceWitdth; - x2 = -11; - y = -130; - String[] tlArr = "O,F,I,S,M".split(","); - for (String s : tlArr) { - JSONObject f = templetsMap.get(s); - x1 = x1 + spaceWitdth; - x2 = x2 + spaceWitdth; - setlineXy(f, x1, y, x2, y, null); - jsonArray.add(f); + jsonArray3.add(textJson); } //闃舵妯″瀷鍙婂埢搴� x1 = 0; x2 = 0; - double y1 = -100; - y = -70; - double y2 = -50; + double y1 = -60; + y = -40; + double y2 = -30; JSONObject modelJson = new JSONObject(templetsStrMap.get("model")); - setlineXy(modelJson, 2, y1, 2, y2, null); + setlineXy(modelJson, 1, y1, 1, y2, null); jsonArray.add(modelJson); double totalHours = 0; for (int i = 0; i < modelDtoList.size(); i++) { @@ -274,25 +287,28 @@ modelName = modelRbd.getModelName(); modelId = modelRbd.getId().toString(); } - Map<String, Integer> mapSpace = GetStringSpace.getStringSpaceSize(modelName, null, 18); + Map<String, Integer> mapSpace = GetStringSpace.getStringSpaceSize(modelName, null, 12); 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("/"), modelName); + 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") + 20); + JsonUtils2.setJsonValueByPath(textJson, "size/width".split("/"), mapSpace.get("width") + 10); - double x11 = x1 + ((gkPoint - mapSpace.get("width") - 20) / 2); + double x11 = x1 + ((gkPoint - mapSpace.get("width") + 12) / 2); JsonUtils2.setJsonValueByPath(textJson, "position/x".split("/"), x11); - JsonUtils2.setJsonValueByPath(textJson, "position/y".split("/"), y1); + JsonUtils2.setJsonValueByPath(textJson, "position/y".split("/"), y1 - 10); jsonArray.add(textJson); x1 = x2; } + JSONObject modelJson3 = new JSONObject(templetsStrMap.get("model")); setlineXy(modelJson3, 0, y, x2, y, null); jsonArray.add(modelJson3); - Integer curPointHour = 50, periodHour = 50; + //鍒诲害 + Integer curPointHour = 100, periodHour = 100; while (curPointHour < totalHours) { JSONObject modelJson4 = new JSONObject(templetsStrMap.get("model")); double x = curPointHour * pointNumPerHour; @@ -308,15 +324,134 @@ double x11 = x - mapSpace.get("width") / 2 - 5; JsonUtils2.setJsonValueByPath(textJson, "position/x".split("/"), x11); - JsonUtils2.setJsonValueByPath(textJson, "position/y".split("/"), y2); + JsonUtils2.setJsonValueByPath(textJson, "position/y".split("/"), y2 - 10); jsonArray.add(textJson); curPointHour += periodHour; } + List<TimeDiagramStatusDto> statusDtoListNew = new ArrayList<>(); + while (statusDtoListOld.size() > 0) { + statusDtoListOld.stream().sorted(Comparator.comparing(TimeDiagramStatusDto::getX1)).collect(Collectors.toList()); + TimeDiagramStatusDto nextStatusDto = statusDtoListOld.get(0); + if (statusDtoListNew.size() == 0) { + statusDtoListNew.add(nextStatusDto); + } else { + TimeDiagramStatusDto currentStatusDto = statusDtoListNew.get(statusDtoListNew.size() - 1); + if (nextStatusDto.getStatus() < currentStatusDto.getStatus()) { + if (nextStatusDto.getX1() == currentStatusDto.getX1() && nextStatusDto.getX2() == currentStatusDto.getX2()) { + currentStatusDto.setStatus(nextStatusDto.getStatus()); + } else if (nextStatusDto.getX1() == currentStatusDto.getX1() && nextStatusDto.getX2() < currentStatusDto.getX2()) { + statusDtoListOld.add(new TimeDiagramStatusDto(nextStatusDto.getX2(), currentStatusDto.getX2(), currentStatusDto.getStatus())); + currentStatusDto.setStatus(nextStatusDto.getStatus()); + currentStatusDto.setX2(nextStatusDto.getX2()); + } else if (nextStatusDto.getX1() == currentStatusDto.getX1() && nextStatusDto.getX2() > currentStatusDto.getX2()) { + currentStatusDto.setStatus(nextStatusDto.getStatus()); + currentStatusDto.setX2(nextStatusDto.getX2()); + } else if (nextStatusDto.getX1() > currentStatusDto.getX1() && nextStatusDto.getX2() >= currentStatusDto.getX2()) { + currentStatusDto.setX2(nextStatusDto.getX1()); + statusDtoListNew.add(new TimeDiagramStatusDto(nextStatusDto.getX1(), nextStatusDto.getX2(), nextStatusDto.getStatus())); + } else if (nextStatusDto.getX1() > currentStatusDto.getX1() && nextStatusDto.getX2() < currentStatusDto.getX2()) { + currentStatusDto.setX2(nextStatusDto.getX1()); + statusDtoListNew.add(new TimeDiagramStatusDto(nextStatusDto.getX1(), nextStatusDto.getX2(), nextStatusDto.getStatus())); + statusDtoListOld.add(new TimeDiagramStatusDto(nextStatusDto.getX2(), currentStatusDto.getX2(), currentStatusDto.getStatus())); + } + } else { + if (nextStatusDto.getX2() > currentStatusDto.getX2()) { + statusDtoListOld.add(new TimeDiagramStatusDto(currentStatusDto.getX2(), nextStatusDto.getX2(), nextStatusDto.getStatus())); + } + } + } + statusDtoListOld.remove(0); + } + timeDiagramDto.setTotalWidth(x2); + double pointRate = timeDiagramDto.getTotalWidth() / timeDiagramDto.getSmallWidth(); - return jsonObject.toString(); + List<List<TimeDiagramStatusDto>> lineArray = new ArrayList(); + lineArray.add(statusDtoList); + lineArray.add(statusDtoListNew); + + List<List<TimeDiagramStatusDto>> smallStatusDtoList = new ArrayList<>(); + for (int j = 0; j < lineArray.size(); j++) { + List<TimeDiagramStatusDto> tmpStatusDtoList = new ArrayList<>(); + int lastStatus = 5; + Boolean isFirst = true; + x1 = 0; + for (double i = 0; i < timeDiagramDto.getSmallWidth(); i = i + timeDiagramDto.getMinPointNum()) { + int netStatus = getPointStatus(lineArray.get(j), i * pointRate, (i + timeDiagramDto.getMinPointNum()) * pointRate - 1); + if (!isFirst) { + if (lastStatus != netStatus) { + tmpStatusDtoList.add(new TimeDiagramStatusDto(x1, x2, lastStatus)); + lastStatus = netStatus; + x1 = i; + } + } else { + lastStatus = netStatus; + isFirst = false; + } + x2 = i + timeDiagramDto.getMinPointNum() - 1; + } + tmpStatusDtoList.add(new TimeDiagramStatusDto(x1, x2, lastStatus)); + smallStatusDtoList.add(tmpStatusDtoList); + } + + JSONObject jsonObject2 = new JSONObject(modelStr2); + JSONArray jsonArray2 = jsonObject2.getJSONArray("cells"); + y = 10; + for (int i = 0; i < smallStatusDtoList.size(); i++) { + for (TimeDiagramStatusDto status : smallStatusDtoList.get(i)) { + JSONObject lineJson = new JSONObject(templetsStrMap2.get(status.getStatus())); + setlineXy(lineJson, status.getX1(), y, status.getX2() + 5, y, ""); + JsonUtils2.setJsonValueByPath(lineJson, "data/status".split("/"), status.getStatus()); + JsonUtils2.setJsonValueByPath(lineJson, "id".split("/"), UUIDUtil.generateId().toString()); + jsonArray2.add(lineJson); + } + y = y + 25; + } + + //鍥句緥 + int spaceWitdth = 80; + x1 = 0; + x2 = spaceWitdth - 11; + y = 60; + String[] tlArr = "O,F,I,S,M".split(","); + for (String s : tlArr) { + JSONObject f = templetsMap.get(s); + x1 = x1 + spaceWitdth; + x2 = x2 + spaceWitdth; + setlineXy(f, x1, y, x2, y, null); + jsonArray2.add(f); + } + timeDiagramDto.setDiagramJson(jsonObject.toString()); + timeDiagramDto.setSmallDiagramJson(jsonObject2.toString()); + timeDiagramDto.setTextDiagramJson(jsonObject3.toString()); + + return timeDiagramDto; } + + private int getPointStatus(List<TimeDiagramStatusDto> dtoList, double x1, double x2) { + int status = 5; + boolean findStart = false; + for (int i = 0; i < dtoList.size(); i++) { + if (x2 <= dtoList.get(i).getX1()) { + break; + } + + if (!findStart) { + if (dtoList.get(i).getX1() >= x1 && x1 <= dtoList.get(i).getX2()) { + status = dtoList.get(i).getStatus(); + findStart = true; + } + } + + if (dtoList.get(i).getX2() >= x2) { + if (dtoList.get(i).getStatus() < status) + status = dtoList.get(i).getStatus(); + } + } + return status; + } + public void setlineXy(JSONObject lineJson, double x1, double y1, double x2, double y2, String text) { JsonUtils2.setJsonValueByPath(lineJson, "source/x".split("/"), x1); @@ -329,12 +464,14 @@ } } - public void getPetsInfo() { + public String getPetsInfo() { Map<String, Object> params = new HashMap<String, Object>(); params.put("projectId", 10000); params.put("diagramId", 10000); + String modelStr2 = ""; List<TimeDiagram> list_style = baseDao.getTimeDiagram(params); if (list_style.size() > 0) { + modelStr2 = list_style.get(0).getContent2(); String modelStr = list_style.get(0).getContent(); JSONObject modelJson = new JSONObject(modelStr); JSONArray modelJsonArray = modelJson.getJSONArray("cells"); @@ -348,22 +485,27 @@ if ("杩愯".equals(nodeMarker)) { templetsMap.put("O", jsonObject); templetsStrMap.put("O", jsonObject.toString()); + templetsStrMap2.put(5, jsonObject.toString()); } if ("鏁呴殰".equals(nodeMarker)) { templetsMap.put("F", jsonObject); templetsStrMap.put("F", jsonObject.toString()); + templetsStrMap2.put(1, jsonObject.toString()); } if ("绌洪棽".equals(nodeMarker)) { templetsMap.put("I", jsonObject); templetsStrMap.put("I", jsonObject.toString()); + templetsStrMap2.put(3, jsonObject.toString()); } if ("澶囦唤".equals(nodeMarker)) { templetsMap.put("S", jsonObject); templetsStrMap.put("S", jsonObject.toString()); + templetsStrMap2.put(2, jsonObject.toString()); } if ("鏈敤".equals(nodeMarker)) { templetsMap.put("M", jsonObject); templetsStrMap.put("M", jsonObject.toString()); + templetsStrMap2.put(4, jsonObject.toString()); } if ("妯″瀷".equals(nodeMarker)) { JsonUtils2.setJsonValueByPath(tmpJSONObject, "attrs/text/text".split("/"), ""); @@ -402,6 +544,7 @@ } } } + return modelStr2; } public List<ProductStatusDto> getStatusData(Long productId, Long taskId) { @@ -474,220 +617,21 @@ timeDiagramDao.updateById(diagram); } -/* public void combineDiagram(TimeDiagram networkDiagram) { - - if (!networkDiagram.getDiagramId().equals(1L) && !networkDiagram.getDiagramId().equals(2L)) - return null; - Map<String, Object> params = new HashMap<String, Object>(); - params.put("projectId", networkDiagram.getProjectId()); - - ProjectNetworkDiagram combineDiagram = null; - params.put("diagramId", 100); - List<ProjectNetworkDiagram> list = baseDao.getList(params); - if (list.size() > 0) { - combineDiagram = list.get(0); - } - - ProjectNetworkDiagram phaseDiagram = null; - params.put("diagramId", 1); - List<ProjectNetworkDiagram> list1 = baseDao.getList(params); - if (list1.size() > 0) { - phaseDiagram = list1.get(0); - } - - ProjectNetworkDiagram inspectDiagram = null; - params.put("diagramId", 2); - List<ProjectNetworkDiagram> list2 = baseDao.getList(params); - if (list2.size() > 0) { - inspectDiagram = list2.get(0); - } - - String jsonStr = ""; - Map<String, Map<String, String>> leftMap = new Hashtable<>(); - Map<String, Map<String, String>> rightMap = new Hashtable<>(); - if (phaseDiagram != null && inspectDiagram != null) { - String inspectJsonStr = inspectDiagram.getContent(); - JSONObject inspectJsonObj = new JSONObject(inspectJsonStr); - JSONArray inspectJsonArray = inspectJsonObj.getJSONArray("cells"); - - String phaseJsonStr = phaseDiagram.getContent(); - JSONObject phaseJsonObj = new JSONObject(phaseJsonStr); - JSONArray phaseJsonArray = phaseJsonObj.getJSONArray("cells"); - - JSONArray leftArray = inspectJsonArray.stream().filter(iter -> "edge".equals(((JSONObject) iter).get("shape")) - && "left".equals(((JSONObject) iter).get("phaseType"))).collect(Collectors.toCollection(JSONArray::new)); - int leftPhaseMaxX = 0; - int phaseY = 0; - String leftPhaseMaxId = ""; - for (int i = 0; i < leftArray.size(); i++) { - Map<String, String> tmpMap = new Hashtable<>(); - - JSONObject lineObject = (JSONObject) leftArray.get(i); - String phaseId = lineObject.getStr("phaseId"); - JSONArray phaseArray = phaseJsonArray.stream().filter(iter -> "custom-circle".equals(((JSONObject) iter).get("shape")) - && phaseId.equals(((JSONObject) iter).get("id"))).collect(Collectors.toCollection(JSONArray::new)); - - tmpMap.put("lineId", lineObject.getStr("id")); - tmpMap.put("phaseId", phaseId); - String portId = ""; - if (phaseArray.size() > 0) { - JSONObject phaseObject = (JSONObject) phaseArray.get(0); - Object portIdObject = JsonUtils2.getArrJsonValueByPath(phaseObject, "ports/items/".split("/"), "group", "right", "id"); - //portId = portIdObject == null ? "" : portIdObject.toString(); - Object xObject = JsonUtils2.getJsonValueByPath(phaseObject, "position/x".split("/")); - int x = xObject == null ? 0 : Convert.toInt(xObject.toString()); - if (x > leftPhaseMaxX) { - leftPhaseMaxX = x; - leftPhaseMaxId = phaseObject.getStr("id"); - } - if (phaseY == 0) { - Object yObject = JsonUtils2.getJsonValueByPath(phaseObject, "position/y".split("/")); - phaseY = yObject == null ? 0 : Convert.toInt(yObject.toString()); - } - } - tmpMap.put("portId", portId); - leftMap.put(lineObject.getStr("id"), tmpMap); - } - - JSONArray rightArray = inspectJsonArray.stream().filter(iter -> "edge".equals(((JSONObject) iter).get("shape")) - && "right".equals(((JSONObject) iter).get("phaseType"))).collect(Collectors.toCollection(JSONArray::new)); - int rightPhaseMinX = 10000000; - String rightPhaseMinId = ""; - for (int i = 0; i < rightArray.size(); i++) { - Map<String, String> tmpMap = new Hashtable<>(); - - JSONObject lineObject = (JSONObject) rightArray.get(i); - String phaseId = lineObject.getStr("phaseId"); - JSONArray phaseArray = phaseJsonArray.stream().filter(iter -> "custom-circle".equals(((JSONObject) iter).get("shape")) - && phaseId.equals(((JSONObject) iter).get("id"))).collect(Collectors.toCollection(JSONArray::new)); - - tmpMap.put("lineId", lineObject.getStr("id")); - tmpMap.put("phaseId", phaseId); - String portId = ""; - if (phaseArray.size() > 0) { - JSONObject phaseObject = (JSONObject) phaseArray.get(0); - Object portIdObject = JsonUtils2.getArrJsonValueByPath(phaseObject, "ports/items/".split("/"), "group", "left", "id"); - //portId = portIdObject == null ? "" : portIdObject.toString(); - Object xObject = JsonUtils2.getJsonValueByPath(phaseObject, "position/x".split("/")); - int x = xObject == null ? 100000000 : Convert.toInt(xObject.toString()); - if (x < rightPhaseMinX) { - rightPhaseMinX = x; - rightPhaseMinId = phaseObject.getStr("id"); - } - } - tmpMap.put("portId", portId); - rightMap.put(lineObject.getStr("id"), tmpMap); - } - - - JSONArray startArray = inspectJsonArray.stream().filter(iter -> "custom-circle".equals(((JSONObject) iter).get("shape")) - && "10000".equals(((JSONObject) iter).get("id"))).collect(Collectors.toCollection(JSONArray::new)); - int inspectBeginX = 0; - int inspectY = 0; - if (startArray.size() > 0) { - JSONObject inspectObject = (JSONObject) startArray.get(0); - Object xObject = JsonUtils2.getJsonValueByPath(inspectObject, "position/x".split("/")); - inspectBeginX = xObject == null ? 0 : Convert.toInt(xObject.toString()); - Object yObject = JsonUtils2.getJsonValueByPath(inspectObject, "position/y".split("/")); - inspectY = yObject == null ? 0 : Convert.toInt(yObject.toString()); - } - - JSONArray endArray = inspectJsonArray.stream().filter(iter -> "custom-circle".equals(((JSONObject) iter).get("shape")) - && "20000".equals(((JSONObject) iter).get("id"))).collect(Collectors.toCollection(JSONArray::new)); - int inspectEndX = 10000000; - if (endArray.size() > 0) { - JSONObject inspectObject = (JSONObject) endArray.get(0); - Object xObject = JsonUtils2.getJsonValueByPath(inspectObject, "position/x".split("/")); - inspectEndX = xObject == null ? 100000000 : Convert.toInt(xObject.toString()); - } - - JSONObject beginObject = null; - JSONObject endObject = null; - for (int i = 0; i < inspectJsonArray.size(); i++) { - JSONObject inspectObject = (JSONObject) inspectJsonArray.get(i); - String inspectObjectId = inspectObject.getStr("id"); - if (leftMap.get(inspectObjectId) != null) { - JsonUtils2.setJsonValueByPath(inspectObject, "target/cell".split("/"), leftMap.get(inspectObjectId).get("phaseId")); - JsonUtils2.setJsonValueByPath(inspectObject, "target/port".split("/"), leftMap.get(inspectObjectId).get("portId")); - } - if (rightMap.get(inspectObjectId) != null) { - JsonUtils2.setJsonValueByPath(inspectObject, "target/cell".split("/"), rightMap.get(inspectObjectId).get("phaseId")); - JsonUtils2.setJsonValueByPath(inspectObject, "target/port".split("/"), rightMap.get(inspectObjectId).get("portId")); - } - if ("10000".equals(inspectObjectId)) { - //inspectJsonArray.remove(inspectObject); - beginObject = inspectObject; - } - if ("20000".equals(inspectObjectId)) { - //inspectJsonArray.remove(inspectObject); - endObject = inspectObject; - } - } - - if (endObject != null) - inspectJsonArray.remove(endObject); - if (beginObject != null) - inspectJsonArray.remove(beginObject); - - for (int i = 0; i < phaseJsonArray.size(); i++) { - JSONObject phaseObject = (JSONObject) phaseJsonArray.get(i); - if ("custom-circle".equals(phaseObject.getStr("shape"))) { - Object xObject = JsonUtils2.getJsonValueByPath(phaseObject, "position/x".split("/")); - Object yObject = JsonUtils2.getJsonValueByPath(phaseObject, "position/y".split("/")); - int x = Convert.toInt(xObject.toString()); - int y = Convert.toInt(yObject.toString()); - if (x <= leftPhaseMaxX) - x = x + (inspectBeginX - leftPhaseMaxX); - else if (x >= rightPhaseMinX) - x = x + (inspectEndX - rightPhaseMinX); - y = y + (inspectY - phaseY); - JsonUtils2.setJsonValueByPath(phaseObject, "position/x".split("/"), x); - JsonUtils2.setJsonValueByPath(phaseObject, "position/y".split("/"), y); - } - } - - for (int i = 0; i < phaseJsonArray.size(); i++) { - JSONObject phaseObject = (JSONObject) phaseJsonArray.get(i); - if ("edge".equals(phaseObject.getStr("shape"))) { - Object sourceId = JsonUtils2.getJsonValueByPath(phaseObject, "source/cell".split("/")); - Object targetId = JsonUtils2.getJsonValueByPath(phaseObject, "target/cell".split("/")); - if (leftPhaseMaxId.equals(sourceId) && rightPhaseMinId.equals(targetId)) { - phaseJsonArray.remove(phaseObject); - } - } - } - inspectJsonArray.addAll(phaseJsonArray); - jsonStr = inspectJsonObj.toString(); - } else if (phaseDiagram != null) { - jsonStr = phaseDiagram.getContent(); - } else if (inspectDiagram != null) { - jsonStr = inspectDiagram.getContent(); - } - - if (combineDiagram != null) { - combineDiagram.setContent(jsonStr); - baseDao.updateById(combineDiagram); - } else { - combineDiagram = new ProjectNetworkDiagram(); - combineDiagram.setProjectId(networkDiagram.getProjectId()); - combineDiagram.setDiagramId(100L); - combineDiagram.setContent(jsonStr); - baseDao.insert(combineDiagram); - } - return combineDiagram; - }*/ - @Transactional(rollbackFor = Exception.class) - public Result simulate(SimulatAssess simulatAssess) { - Result result = null; + public List<TaskModelCheckResultDto> simulateChecK(SimulatAssess simulatAssess) { + List<TaskModelCheckResultDto> result = null; // 1. 妫�鏌ユā鍨嬪畬鏁存�� List<TaskModelCheckResultDto> chkResult = taskService.checkTaskModel(simulatAssess.getProductId(), simulatAssess.getTaskModelId()); if (chkResult.size() > 0) { - result = Result.error("妯″瀷涓嶅畬鏁达紝璇锋鏌ユā鍨嬪畾涔夊強鍙傛暟閰嶇疆銆�"); - return result; + return chkResult; } + return result; + } + @Transactional(rollbackFor = Exception.class) + public Boolean simulate(SimulatAssess simulatAssess) { + Boolean result = false; // 2. 缁勮渚涚畻娉曞簱浠跨湡鐨勬ā鍨媥ml assembleModelXml(simulatAssess); @@ -697,12 +641,16 @@ return result; } - private Result callReliaSimLib(SimulatAssess simulatAssess) { - Result result = null; + private Boolean callReliaSimLib(SimulatAssess simulatAssess) { + Boolean result = false; InputStream is = null; BufferedReader br = null; try { - setParamToRedis(simulatAssess); + try { + setParamToRedis(simulatAssess); + } catch (Exception e) { + throw new RenException("璁块棶Redis澶辫触銆傝妫�鏌edis鏄惁宸插惎鍔ㄣ��"); + } Process process = null; String command = "python " + reliaSimMain; @@ -714,7 +662,7 @@ } else if (System.getProperty("os.name").toLowerCase().indexOf("linux") > -1) { process = Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c", command}); } else { - throw new Exception("鏆備笉鏀寔璇ユ搷浣滅郴缁燂紝杩涜鍚姩绠楁硶搴撹绠楋紒"); + throw new RenException("鏆備笉鏀寔璇ユ搷浣滅郴缁燂紝杩涜鍚姩绠楁硶搴撹绠楋紒"); } is = process.getInputStream(); // 浠ュ懡浠よ鏂瑰紡璋冪敤绠楁硶搴撴椂锛屾帴鍙g害瀹氳繑鍥炵殑缁撴灉鏄痷tf-8缂栫爜 @@ -725,17 +673,17 @@ if (line != null) { ReliaSimLibResult rtn = com.alibaba.fastjson.JSONObject.parseObject(line, ReliaSimLibResult.class); if ("0".equals(rtn.getCode())) { - logger.info("鍚姩绠楁硶搴撴垚鍔熴��"); - result = Result.ok(); + logger.info("鍚姩鍙潬鎬т豢鐪熻瘎浼扮畻娉曞簱鎴愬姛銆�"); + result = true; } else { String errorMsg = rtn.getErrorMsg(); - throw new RuntimeException("鍚姩绠楁硶搴撳け璐�: errorMsg=" + errorMsg); + throw new RenException("鍚姩鍙潬鎬т豢鐪熻瘎浼扮畻娉曞簱澶辫触: errorMsg=" + errorMsg); } } - } catch (Exception e) { - logger.error("鍚姩绠楁硶搴撲豢鐪熸椂鍙戠敓Exception锛�", e); + } catch (IOException e) { + logger.error("鍚姩鍙潬鎬т豢鐪熻瘎浼扮畻娉曞簱浠跨湡鏃跺彂鐢烢xception锛�", e); e.printStackTrace(); - result = Result.error(e.getMessage()); + throw new RenException("鍚姩鍙潬鎬т豢鐪熻瘎浼扮畻娉曞簱澶辫触: errorMsg=" + e.getMessage()); } finally { if (is != null) { try { @@ -783,10 +731,14 @@ 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(); Task task = taskService.get(taskId); + if (simulatAssess.getTaskDuration() != null) { + task.setTaskDuration(simulatAssess.getTaskDuration()); + } List<TaskBinoParam> binoParams = taskBinoParamDao.getBinoParams(taskId); // 1. 璁$畻鍚勪换鍔¢樁娈电殑杩愯鏃堕暱 @@ -808,6 +760,8 @@ addTasksTag(taskPhaseModelAll, root); addModelsTag(taskId, productId, + product.getName(), + product.getNamePath(), productList, paramDataList, taskPhaseModelAll, @@ -834,10 +788,10 @@ if (xmlWriter != null) xmlWriter.close(); } // XML瀛樼洏 - update(simulatAssess); + insert(simulatAssess); } catch (Exception e) { e.printStackTrace(); - throw new RuntimeException("缁勮绠楁硶搴撲豢鐪熻绠楃敤妯″瀷XML澶辫触: " + e.getMessage()); + throw new RenException("缁勮绠楁硶搴撲豢鐪熻绠楃敤妯″瀷XML澶辫触: " + e.getMessage()); } } @@ -870,8 +824,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"); @@ -947,8 +901,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; @@ -967,7 +921,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; @@ -985,6 +939,8 @@ private void addModelsTag(Long taskId, Long productId, + String productName, + String productNamePath, List<XhProductModel> productList, List<ParamData> paramDataList, List<TaskPhaseModel> taskPhaseModelAll, @@ -1011,6 +967,8 @@ taskPhaseModel, gkModelTop.getModelId(), productId, + productName, + productNamePath, productList, paramDataList, gkModelsAssembled, @@ -1027,6 +985,8 @@ TaskPhaseModel taskPhaseModel, Long modelId, Long productId, + String productName, + String productNamePath, List<XhProductModel> productList, List<ParamData> paramDataList, List<OperatConditModel> gkModelsAssembled, @@ -1055,6 +1015,8 @@ taskPhaseModel, gkModel.getModelId(), product.getId(), + product.getName(), + product.getNamePath(), productList, paramDataList, gkModelsAssembled, @@ -1067,6 +1029,8 @@ // 璁惧 Element nodeTag = parent.addElement("node"); nodeTag.addAttribute("name", dataId.toString()); + nodeTag.addAttribute("real_name", product.getName()); + nodeTag.addAttribute("name_path", product.getNamePath()); nodeTag.addAttribute("type", "node"); ParamData paramData = paramDataList.stream().filter(item -> @@ -1112,6 +1076,8 @@ element.addAttribute("name", algo.getId().toString()); } else { element.addAttribute("name", productId.toString()); + element.addAttribute("real_name", productName); + element.addAttribute("name_path", productNamePath); } if ("series".equals(algo.getAlgorithmType())) { element.addAttribute("type", "series"); @@ -1122,6 +1088,7 @@ element.addAttribute("k", algo.getVoteNum().toString()); } else if ("switch".equals(algo.getAlgorithmType())) { element.addAttribute("type", "standby"); + element.addAttribute("k", algo.getVoteNum().toString()); } else if ("bridge".equals(algo.getAlgorithmType())) { element.addAttribute("type", "bridge"); } @@ -1132,6 +1099,8 @@ node2DOM(taskId, taskPhaseModel, modelId, + null, + null, null, productList, paramDataList, @@ -1162,7 +1131,8 @@ break; case 3: // 浜岄」鍒嗗竷 - if (taskBinoParam.getSimulatTimes().intValue() == taskBinoParam.getSuccessTimes().intValue()) { + if ((taskBinoParam.getSimulatTimes() == null && taskBinoParam.getSuccessTimes() == null) || + (taskBinoParam.getSimulatTimes().intValue() == taskBinoParam.getSuccessTimes().intValue())) { // 鐩哥瓑鍒欎负鎴愯触鍨� failureModel.setType(FailureModel.TYPE_FIX); failureModel.setParam1(taskBinoParam.getSuccessRate()); @@ -1210,19 +1180,23 @@ 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); xml = IOUtils.toString(in); } catch (IOException e) { e.printStackTrace(); + throw new RenException("鏂囦欢涓嶅瓨鍦ㄦ垨鑰呮枃浠舵墦涓嶅紑"); } finally { try { - in.close(); + if (in != null) { + in.close(); + } } catch (IOException e) { e.printStackTrace(); } + } List<WeakDto> productList = baseDao.getProductList(taskId, productId); @@ -1233,39 +1207,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; } @@ -1287,62 +1267,78 @@ } } - public SchemeComparDto SchemeCompar(String[] taskList, Long showProductId) { - SchemeComparDto dto = new SchemeComparDto(); + public SimulatResult SchemeCompar(String[] taskList, Long showProductId, Integer samplPeriod, Integer simulatFrequency) { + SimulatResult simulatResult = new SimulatResult(); + List<Long> idList = new ArrayList<>(); + List<TaskModelCheckResultDto> result = null; +/* SchemeComparDto dto = new SchemeComparDto(); List<SimulaDataDto> dataDtoList = new ArrayList<>(); List<SchemeComparCurve> curveList = new ArrayList<>(); List<Double> xData = new ArrayList<>(); - SimulatAssess simulatAssess; - SimulaDataDto data; + + SimulaDataDto data;*/ + + List<SimulatAssess> simulatAssessList = new ArrayList<>(); Task task; + double maxTaskDuration = 0.0; for (String taskId : taskList) { - Long taskModelId = Long.parseLong(taskId); - task = taskService.get(taskModelId); - simulatAssess = this.getByTaskId(taskModelId); - SimulaDataDto resultData; - if (showProductId!=null){ - simulatAssess.setShowProductId(showProductId); - resultData =this.getResultData(simulatAssess); - }else{ - resultData = this.getResultXML(simulatAssess); + task = taskService.get(Long.parseLong(taskId)); + if (task.getTaskDuration() > maxTaskDuration) { + maxTaskDuration = task.getTaskDuration(); } - data = resultData; - data.setName(task.getTaskName()); - dataDtoList.add(data); - xData = resultData.getCurveParam().getXData(); + SimulatAssess simulatAssess = new SimulatAssess(); + Long id = UUIDUtil.generateId(); + simulatAssess.setId(id); + simulatAssess.setName(""); + simulatAssess.setProductId(showProductId); + simulatAssess.setSamplPeriod(samplPeriod); + simulatAssess.setSimulatFrequency(simulatFrequency); + simulatAssess.setTaskDuration(maxTaskDuration); + simulatAssess.setTaskModelId(Long.parseLong(taskId)); - SchemeComparCurve curve = new SchemeComparCurve(); - curve.setName(task.getTaskName()); - curve.setSmooth(true); - curve.setType("line"); - curve.setData(resultData.getCurveParam().getYData()); - curveList.add(curve); + simulatAssessList.add(simulatAssess); + result = simulateChecK(simulatAssess); + if (result!=null){ + simulatResult.setType("errorList"); + simulatResult.setErrList(result); + return simulatResult; + } + idList.add(id); } - dto.setXDataList(xData); - dto.setDataList(dataDtoList); - dto.setCurveList(curveList); - return dto; + + for (SimulatAssess simulatAssess : simulatAssessList) { + simulatAssess.setTaskDuration(maxTaskDuration); + this.simulate(simulatAssess); + } + + simulatResult.setType("idList"); + simulatResult.setIdList(idList); + return simulatResult; } public SimulaDataDto getResultXML(SimulatAssess simulatAssess) { if (simulatAssess.getDataType() != null && simulatAssess.getDataType().equals("fz")) { Integer num = this.getNumById(simulatAssess.getProductId(), simulatAssess.getTaskModelId()); simulatAssess.setName("浠跨湡璁板綍" + (num + 1)); - this.insert(simulatAssess); + this.update(simulatAssess); } String filePath = path + "/" + simulatAssess.getId() + "/" + "result.xml"; - String xml = null; + String xml; InputStream in = null; + try { in = new FileInputStream(filePath); xml = IOUtils.toString(in); } catch (IOException e) { e.printStackTrace(); + throw new RenException("鏂囦欢涓嶅瓨鍦ㄦ垨鑰呮枃浠舵墦涓嶅紑"); } finally { try { - in.close(); + if (in != null) { + in.close(); + } } catch (IOException e) { e.printStackTrace(); } @@ -1406,4 +1402,134 @@ } return data; } + + public String verify(Long taskId) { + StringBuilder result = new StringBuilder(); + Task task = taskService.get(taskId); + double taskTime = task.getTaskDuration(); + List<OperatConditModel> list = baseDao.getModel(taskId); + List<Double> reliabiyList = new ArrayList<>(); + String modelStr2 = ""; + for (OperatConditModel model : list) { + if (model.getProductId().equals(task.getProductId())) { + modelStr2 = model.getContent(); + continue; + } + List<verifyDto> listNodes = baseDao.getNode(model.getModelId()); + for (verifyDto node : listNodes) { + //lmd,reliabiy,failRate + double lmd = 1 / node.getMtbf(); + double reliabiy = Math.exp(-1 * lmd * taskTime); + double failRate = 1 - reliabiy; + node.setLmd(lmd); + node.setReliabiy(reliabiy); + node.setFailRate(failRate); + } + int total = listNodes.size(); + String modelStr = model.getContent(); + //鎵惧埌琛ㄥ喅鏁伴噺 + + if (modelStr.contains("switch")) { + double a = 0; + double lmd = listNodes.get(0).getLmd(); + result.append("\n").append(total).append("涓浉鍚岃澶囨梺鑱�,3閫�1,MTTBCF鏄�").append(listNodes.get(0).getMtbf()).append("\n"); + for (int i = 0; i <= total - 1; i++) { + double ijc = getjc(i); + double b = Math.pow(taskTime * lmd, i) * Math.exp(-1 * lmd * taskTime) / ijc; + a = a + b; + result.append("鏈�").append(i + 1).append("涓澶囧ソ鐨勭殑姒傜巼涓�").append(b).append("\n"); + } + result.append("鏁翠釜鏃佽仈绯荤粺鐨勫彲闈犲害涓�").append(new Formatter().format("%.4f", a)).append("\n"); + reliabiyList.add(a); + } else if (modelStr.contains("parallel")) { + double a = 1; + result.append("\n骞惰仈璁惧鏈�").append(total).append("涓猏n"); + for (int i = 0; i < listNodes.size(); i++) { + a = a * listNodes.get(i).getFailRate(); + result.append("绗�").append(i + 1).append("涓澶囩殑MTBCF涓�").append(listNodes.get(i).getMtbf()).append(",").append(i + 1).append("涓澶囧苟鑱旂殑澶辨晥鐜囦负").append(a).append("\n"); + } + double reliabiy = 1 - a; + result.append("鏁翠釜骞惰仈绯荤粺鐨勫け鏁堢巼涓�").append(a).append("鏁翠釜骞惰仈绯荤粺鐨勫彲闈犲害涓�").append(new Formatter().format("%.4f", reliabiy)).append("\n"); + reliabiyList.add(reliabiy); + } else if (modelStr.contains("vote")) { + Integer voteNum = baseDao.getVoteNum(model.getModelId()); + if (voteNum != null) { + result.append("\n").append(total).append("涓浉鍚岃澶囪〃鍐�,MTBCF涓�").append(listNodes.get(0).getMtbf()).append("琛ㄥ喅鏁伴噺涓�").append(voteNum).append("涓猏n"); + double a = 0; + double zjc = getjc(total); + double reliabiy = listNodes.get(0).getReliabiy(); + for (int i = voteNum; i <= total; i++) { + double ijc = getjc(i); + double nijc = getjc(total - i); + double b = (zjc / (ijc * nijc)) * Math.pow(reliabiy, i) * Math.pow(1 - reliabiy, total - i); + a = a + b; + result.append("鏈�").append(i).append("涓澶囨槸濂界殑姒傜巼涓�").append(b).append("\n"); + } + result.append("鏁翠釜琛ㄥ喅绯荤粺鐨勫彲闈犲害涓�").append(new Formatter().format("%.4f", a)).append("\n"); + reliabiyList.add(a); + } + + } + } + double totalReliabiy = 1; + if (modelStr2.contains("parallel")) { + for (Double reliabiy : reliabiyList) { + totalReliabiy = totalReliabiy * (1 - reliabiy); + } + totalReliabiy = 1 - totalReliabiy; + } else { + for (Double reliabiy : reliabiyList) { + totalReliabiy = totalReliabiy * reliabiy; + } + } + result.append("\n鏁翠釜鎬讳綋绯荤粺鐨勫彲闈犲害涓�").append(totalReliabiy).append("\n"); + return String.valueOf(result); + } + + Double getjc(int a) { + double result = 1.0; + for (int i = a; i > 0; i--) + result = result * i; + return result; + } + + public SchemeComparDto getEcharts(String[] taskList, Long showProductId) { + SchemeComparDto dto = new SchemeComparDto(); + List<SimulaDataDto> dataDtoList = new ArrayList<>(); + List<SchemeComparCurve> curveList = new ArrayList<>(); + List<Double> xData = new ArrayList<>(); + SimulatAssess simulatAssess; + SimulaDataDto data; + + Task task; + for (String taskId : taskList) { + Long taskModelId = Long.parseLong(taskId); + task = taskService.get(taskModelId); + simulatAssess = this.getByTaskId(taskModelId); + simulatAssess.setDataType("fz"); + SimulaDataDto resultData; + if (showProductId != null) { + simulatAssess.setProductId(showProductId); + resultData = this.getResultXML(simulatAssess); + } else { + resultData = this.getResultXML(simulatAssess); + } + + data = resultData; + data.setName(task.getTaskName()); + dataDtoList.add(data); + xData = resultData.getCurveParam().getXData(); + + SchemeComparCurve curve = new SchemeComparCurve(); + curve.setName(task.getTaskName()); + curve.setSmooth(true); + curve.setType("line"); + curve.setData(resultData.getCurveParam().getYData()); + curveList.add(curve); + } + dto.setXDataList(xData); + dto.setDataList(dataDtoList); + dto.setCurveList(curveList); + return dto; + } } -- Gitblit v1.9.1