From cb356c816a56a633974b71927239592df6b9c8b1 Mon Sep 17 00:00:00 2001 From: xyc <jc_xiong@hotmail.com> Date: 星期二, 29 十月 2024 08:57:47 +0800 Subject: [PATCH] 修改 --- modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/SimulatAssessService.java | 86 +++++++++++++++++++++++++++++++++++------- 1 files changed, 71 insertions(+), 15 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 d8696a3..ae1baa0 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 @@ -5,6 +5,7 @@ import cn.hutool.json.XML; import com.fasterxml.jackson.databind.ObjectMapper; import com.spire.pdf.tables.table.convert.Convert; +import com.zt.common.db.query.QueryFilter; import com.zt.common.exception.RenException; import com.zt.common.service.BaseService; import com.zt.common.servlet.Result; @@ -24,6 +25,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 com.zt.life.modules.mainPart.utils.OSUtils.ProcessUtils; import io.swagger.models.auth.In; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; @@ -115,7 +117,6 @@ Map<Integer, String> templetsStrMap2 = new HashMap<>(); private JSONObject xmlJSONObj; - /** * 鍒嗛〉鏌ヨ @@ -354,9 +355,9 @@ 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())); + currentStatusDto.setX2(nextStatusDto.getX1()); } } else { if (nextStatusDto.getX1() >= currentStatusDto.getX2()) { @@ -581,6 +582,7 @@ this.processJSONArray(jsonArray, item, taskId); } } + childList.removeIf(item -> item.getStatusList().size() == 0); return childList; } @@ -655,7 +657,6 @@ return result; } - @Transactional(rollbackFor = Exception.class) public Boolean simulate(SimulatAssess simulatAssess) { Boolean result = false; // 2. 缁勮渚涚畻娉曞簱浠跨湡鐨勬ā鍨媥ml @@ -665,6 +666,11 @@ result = callReliaSimLib(simulatAssess); return result; + } + + public List<SimulatAssess> process(QueryFilter queryFilter) { + List<SimulatAssess> page = baseDao.getProcessList(queryFilter.getParams()); + return queryFilter.getPageList(page); } private Boolean callReliaSimLib(SimulatAssess simulatAssess) { @@ -690,6 +696,8 @@ } else { throw new RenException("鏆備笉鏀寔璇ユ搷浣滅郴缁燂紝杩涜鍚姩绠楁硶搴撹绠楋紒"); } + long pid = ProcessUtils.getProcessId(process); + logger.info("绠楁硶搴揚ID锛�" + pid); is = process.getInputStream(); // 浠ュ懡浠よ鏂瑰紡璋冪敤绠楁硶搴撴椂锛屾帴鍙g害瀹氳繑鍥炵殑缁撴灉鏄痷tf-8缂栫爜 br = new BufferedReader(new InputStreamReader(is, "utf-8")); @@ -700,6 +708,8 @@ ReliaSimLibResult rtn = com.alibaba.fastjson.JSONObject.parseObject(line, ReliaSimLibResult.class); if ("0".equals(rtn.getCode())) { logger.info("鍚姩鍙潬鎬т豢鐪熻瘎浼扮畻娉曞簱鎴愬姛銆�"); + newProcess(simulatAssess, pid, command); + update(simulatAssess); result = true; } else { String errorMsg = rtn.getErrorMsg(); @@ -728,6 +738,14 @@ } return result; + } + + public void newProcess(SimulatAssess simulatAssess, long pid, String command) { + simulatAssess.setPid(pid); + simulatAssess.setCommandLine(command); + simulatAssess.setProcessIsAlive(true); + simulatAssess.setProcessStartTime(new Date()); + simulatAssess.setProgress(0); } private void setParamToRedis(SimulatAssess simulatAssess) { @@ -784,7 +802,8 @@ Element root = document.addElement("des"); root.addAttribute("name", "General system"); addTasksTag(taskPhaseModelAll, root); - addModelsTag(taskId, + addModelsTag(simulatAssess, + taskId, productId, product.getName(), product.getNamePath(), @@ -921,6 +940,10 @@ ele = repairModelTag.addElement("shape"); ele.addAttribute("value", String.valueOf(repairModel.getParam3())); break; + case RepairModel.TYPE_DIRAC: + ele = repairModelTag.addElement("repair-time"); + ele.addAttribute("value", String.valueOf(repairModel.getParam1())); + break; default: break; } @@ -963,7 +986,8 @@ return taskPhases; } - private void addModelsTag(Long taskId, + private void addModelsTag(SimulatAssess simulatAssess, + Long taskId, Long productId, String productName, String productNamePath, @@ -989,7 +1013,8 @@ "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); - node2DOM(taskId, + node2DOM(simulatAssess, + taskId, taskPhaseModel, gkModelTop.getModelId(), productId, @@ -1007,7 +1032,8 @@ } // 閫掑綊鍑芥暟 - private void node2DOM(Long taskId, + private void node2DOM(SimulatAssess simulatAssess, + Long taskId, TaskPhaseModel taskPhaseModel, Long modelId, Long productId, @@ -1037,7 +1063,8 @@ "end".equals(item.getAlgorithmType())).collect(Collectors.toList()).get(0); ModelNode computerNode = modelNodeAndVnodeListSub.stream().filter(item -> endAlgo.getComputerList().equals(item.getId().toString())).collect(Collectors.toList()).get(0); - node2DOM(taskId, + node2DOM(simulatAssess, + taskId, taskPhaseModel, gkModel.getModelId(), product.getId(), @@ -1088,7 +1115,12 @@ if (1 == paramData.getRepairable()) { // 鍙淮淇� - RepairModel repairModel = createRepairModel(paramData); + RepairModel repairModel = null; + if (isRepairDirac(simulatAssess.getRepairDiracFlag(), taskPhaseModel, product.getId())) { + repairModel = createRepairModelDirac(0); + } else { + repairModel = createRepairModel(paramData); + } repairModels.add(repairModel); Element repairTag = nodeTag.addElement("repair_model"); repairTag.addAttribute("name", repairModel.getId().toString()); @@ -1123,7 +1155,8 @@ for (String nodeStr : computerNodeListStr) { ModelNode mn = modelNodeAndVnodeList.stream().filter(item -> nodeStr.equals(item.getId().toString())).collect(Collectors.toList()).get(0); - node2DOM(taskId, + node2DOM(simulatAssess, + taskId, taskPhaseModel, modelId, null, @@ -1178,23 +1211,46 @@ return failureModel; } + private boolean isRepairDirac(Boolean repairDiracFlag, TaskPhaseModel taskPhaseModel, Long productId) { + boolean result = false; + + if (repairDiracFlag != null && repairDiracFlag) { + if (taskPhaseModel.getPhaseConstraints() == null) { + result = true; + } else { + List<TaskPhaseConstraintDto> list = taskPhaseModel.getPhaseConstraints().stream().filter(item -> + productId.equals(item.getProductId())).collect(Collectors.toList()); + if (list.size() == 0) { + result = true; + } + } + } + + return result; + } + + private RepairModel createRepairModelDirac(double time) { + RepairModel repairModel = new RepairModel(); + repairModel.setId(UUIDUtil.generateId()); + repairModel.setType(RepairModel.TYPE_DIRAC); + repairModel.setParam1(0); + return repairModel; + } + private RepairModel createRepairModel(ParamData paramData) { RepairModel repairModel = new RepairModel(); repairModel.setId(UUIDUtil.generateId()); switch (paramData.getRepairDistribType()) { case 1: // 鎸囨暟鍒嗗竷 - repairModel.setType(FailureModel.TYPE_EXP); + repairModel.setType(RepairModel.TYPE_EXP); repairModel.setParam1(1.0 / paramData.getRepairMttcr()); break; case 2: // 濞佸竷灏斿垎甯� - repairModel.setType(FailureModel.TYPE_WBL); + repairModel.setType(RepairModel.TYPE_WBL); repairModel.setParam2(paramData.getRepairMttcrOtherParams2()); repairModel.setParam3(paramData.getRepairMttcrOtherParams3()); - break; - case 3: - // 浜岄」鍒嗗竷锛堢淮淇病鏈夛級 break; default: break; -- Gitblit v1.9.1