From 413eae5cb4d5fe78fc25258bf7b5e3b53740b1f9 Mon Sep 17 00:00:00 2001 From: xyc <jc_xiong@hotmail.com> Date: 星期三, 24 七月 2024 11:08:01 +0800 Subject: [PATCH] 1)新增仿真时模型及参数完整性检查 2)增加调用算法库后端接口 --- modules/mainPart/src/main/java/com/zt/life/modules/mainPart/async/PythonLib.java | 196 ++++++++++++++++- starter/src/main/resources/application.yml | 8 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ModelNodeAlgorithmDao.java | 1 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/service/TaskService.java | 211 +++++++++++++++++++ modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/ModelLineController.java | 4 modules/mainPart/src/main/resources/mapper/taskReliability/TaskBinoParamDao.xml | 10 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/TaskController.java | 8 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/dao/XhProductModelDao.java | 2 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskDao.java | 6 modules/mainPart/src/main/resources/mapper/taskReliability/OperatConditModelDao.xml | 14 + modules/mainPart/src/main/resources/mapper/taskReliability/TaskDao.xml | 54 ++++ modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/OperatConditModelDao.java | 2 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskBinoParamDao.java | 1 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskModelCheckResult.java | 29 ++ modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/dao/ParamDataDao.java | 1 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/SimulatAssessController.java | 33 ++ modules/mainPart/src/main/resources/mapper/basicInfo/ParamDataDao.xml | 11 + modules/mainPart/src/main/resources/mapper/taskReliability/ModelNodeAlgorithmDao.xml | 9 modules/mainPart/src/main/resources/mapper/basicInfo/XhProductModelDao.xml | 8 modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/SimulatAssess.java | 6 20 files changed, 582 insertions(+), 32 deletions(-) diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/async/PythonLib.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/async/PythonLib.java index 3da299e..19139d5 100644 --- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/async/PythonLib.java +++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/async/PythonLib.java @@ -3,6 +3,7 @@ import com.alibaba.fastjson.JSONObject; import com.zt.common.servlet.Result; import com.zt.life.modules.mainPart.taskReliability.model.PythonResult; +import com.zt.life.modules.mainPart.taskReliability.model.SimulatAssess; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -23,22 +24,31 @@ private String redisHost; @Value("${spring.redis.port}") private String redisPort; + @Value("${data.reliaSimLib.mainPy}") + private String reliaSimMain; + @Value("${data.reliaSimLib.resultHome}") + private String resultHome; - private Long taskId = 123L; - private String taskFlag = "relia"; +// private Long taskId = 123L; +// private Long taskId = 124L; +// private Long taskId = 100L; // =銆� model1.xml1 + private String taskType = "calcreq"; @Autowired private RedisTemplate redisTemplate; - public Result callPython() { + public Result callPython(SimulatAssess simulatAssess) { Result result = null; InputStream is = null; BufferedReader br = null; try { + setParamToRedis(simulatAssess); + Process process = null; - String command = "python D:\\work\\python\\relia_calc.py"; - command += " " + redisHost + " " + redisPort; - command += " " + taskFlag + " " + taskId.toString(); +// String command = "python D:\\work\\python\\relia_calc.py"; + String command = "python " + reliaSimMain; + command += " -ip " + redisHost + " -port " + redisPort; + command += " -taskType " + taskType + " -taskId " + simulatAssess.getId().toString(); logger.info("cmd鍛戒护涓猴細" + command); if(System.getProperty("os.name").toLowerCase().indexOf("windows") > -1){ process = Runtime.getRuntime().exec(new String[]{"cmd", "/c", command}); @@ -48,12 +58,12 @@ throw new Exception("鏆備笉鏀寔璇ユ搷浣滅郴缁燂紝杩涜鍚姩python璁$畻锛�"); } is = process.getInputStream(); - // 浠ュ懡浠よ鏂瑰紡璋冪敤python鏃讹紝杩斿洖鐨勭粨鏋滄槸GBK缂栫爜鐨勶紝鑰岄潪utf-8 - br = new BufferedReader(new InputStreamReader(is,"gb2312")); + // 浠ュ懡浠よ鏂瑰紡璋冪敤python鏃讹紝杩斿洖鐨勭粨鏋滄槸utf-8缂栫爜 + br = new BufferedReader(new InputStreamReader(is,"utf-8")); String line = br.readLine(); logger.info("python杩斿洖缁撴灉锛�" + line); - int exitCode = process.waitFor(); - if (exitCode == 0) { +// int exitCode = process.waitFor(); +// if (exitCode == 0) { logger.info("鍚姩python璁$畻鎴愬姛"); if (line != null) { PythonResult rtn = JSONObject.parseObject(line, PythonResult.class); @@ -64,23 +74,23 @@ throw new RuntimeException("鍚姩python璁$畻澶辫触: errorMsg=" + errorMsg); } } - } else { - logger.error("鍚姩python璁$畻澶辫触: exitCode=" + exitCode); - throw new RuntimeException("鍚姩python璁$畻澶辫触: exitCode=" + exitCode); - } +// } else { +// logger.error("鍚姩python璁$畻澶辫触: exitCode=" + exitCode); +// throw new RuntimeException("鍚姩python璁$畻澶辫触: exitCode=" + exitCode); +// } } catch (Exception e) { logger.error("鍚姩python璁$畻鏃跺彂鐢烢xception锛�", e); e.printStackTrace(); result = Result.error(e.getMessage()); } finally { - if (is == null) { + if (is != null) { try { is.close(); } catch (Exception e) { e.printStackTrace(); } } - if (br == null) { + if (br != null) { try { br.close(); } catch (Exception e) { @@ -92,11 +102,163 @@ return result; } +/* public String getPythonCalcResult() { - String key = taskFlag + taskId.toString(); + String key = taskId.toString() + "calcprog"; logger.info("redis key锛�" + key); String progress = (String)redisTemplate.opsForValue().get(key); if (progress==null) progress = "0"; return progress; } +*/ + + private void setParamToRedis(SimulatAssess simulatAssess) { + String key = simulatAssess.getId().toString() + taskType; + logger.info("redis key锛�" + key); + String xmlfile = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + + "<des name=\"General system\">\n" + + " <tasks>\n" + + " <task duration=\"200\" model=\"model1\"/>\n" + + " <task duration=\"100\" model=\"model2\"/>\n" + + " </tasks>\n" + + " <models>\n" + + " <model name =\"model1\">\n" + + " <logic name=\"鎬讳綋\" type=\"series\"> \n" + + "\t\t\t\t<logic name=\"绯荤粺1\" type=\"series\"> \n" + + "\t\t\t\t\t<logic name=\"p1\" type=\"parallel\"> \n" + + "\t\t\t\t\t\t<node name=\"X1\" type=\"node\">\n" + + "\t\t\t\t\t\t\t<failure_model name=\"fm1\"/>\n" + + " <repair_model name=\"rm1\"/>\n" + + "\t\t\t\t\t\t</node> \n" + + "\t\t\t\t\t\t<node name=\"X2\" type=\"node\" cycon=\"15\" cycdown=\"5\">\n" + + "\t\t\t\t\t\t\t<failure_model name=\"fm1\"/>\n" + + "\t\t\t\t\t\t</node>\n" + + "\t\t\t\t\t</logic>\n" + + " <logic name=\"v1\" type=\"vote\" k=\"2\">\n" + + "\t\t\t\t\t\t<node name=\"X3\" type=\"node\">\n" + + "\t\t\t\t\t\t\t<failure_model name=\"fm1\"/>\n" + + " <repair_model name=\"rm2\"/>\n" + + "\t\t\t\t\t\t</node> \n" + + "\t\t\t\t\t\t<node name=\"X4\" type=\"node\">\n" + + "\t\t\t\t\t\t\t<failure_model name=\"fm2\"/>\n" + + "\t\t\t\t\t\t</node>\n" + + "\t\t\t\t\t\t<node name=\"X5\" type=\"node\">\n" + + "\t\t\t\t\t\t\t<failure_model name=\"fm1\"/>\n" + + "\t\t\t\t\t\t</node> \n" + + "\t\t\t\t\t</logic>\n" + + " <logic name=\"s1\" type=\"parallel\">\n" + + "\t\t\t\t\t\t<node name=\"X6\" type=\"node\">\n" + + "\t\t\t\t\t\t\t<failure_model name=\"fm1\"/>\n" + + "\t\t\t\t\t\t</node> \n" + + "\t\t\t\t\t\t<node name=\"X7\" type=\"node\">\n" + + "\t\t\t\t\t\t\t<failure_model name=\"fm2\"/>\n" + + "\t\t\t\t\t\t</node>\n" + + "\t\t\t\t\t\t<node name=\"X8\" type=\"node\">\n" + + "\t\t\t\t\t\t\t<failure_model name=\"fm1\"/>\n" + + "\t\t\t\t\t\t</node> \n" + + "\t\t\t\t\t</logic>\n" + + "\t\t\t\t</logic>\n" + + "\t\t\t\t<logic name=\"绯荤粺2\" type=\"series\"> \n" + + "\t\t\t\t\t<node name =\"X14\" type=\"node\">\n" + + "\t\t\t\t\t\t<failure_model name=\"fm1\"/>\n" + + "\t\t\t\t\t</node>\n" + + "\t\t\t\t\t<node name=\"X15\" type=\"node\">\n" + + "\t\t\t\t\t\t<failure_model name=\"fm2\"/>\n" + + "\t\t\t\t\t</node>\n" + + "\t\t\t\t\t<node name=\"X16\" type=\"node\">\n" + + "\t\t\t\t\t\t<failure_model name=\"fm3\"/>\n" + + "\t\t\t\t\t</node>\n" + + "\t\t\t\t</logic>\n" + + " </logic>\n" + + " </model>\n" + + " <model name =\"model2\">\n" + + " <logic name=\"鎬讳綋\" type=\"series\"> \n" + + "\t\t\t\t<logic name=\"绯荤粺1\" type=\"series\">\n" + + "\t\t\t\t\t<logic name=\"p1\" type=\"parallel\"> \n" + + "\t\t\t\t\t\t<node name=\"X1\" type=\"node\">\n" + + "\t\t\t\t\t\t\t<failure_model name=\"fm1\"/>\n" + + "\t\t\t\t\t\t</node> \n" + + "\t\t\t\t\t\t<node name=\"X2\" type=\"node\">\n" + + "\t\t\t\t\t\t\t<failure_model name=\"fm2\"/>\n" + + "\t\t\t\t\t\t</node>\n" + + "\t\t\t\t\t</logic>\n" + + " <logic name=\"v1\" type=\"vote\" k=\"2\">\n" + + "\t\t\t\t\t\t<node name=\"X3\" type=\"node\">\n" + + "\t\t\t\t\t\t\t<failure_model name=\"fm1\"/>\n" + + "\t\t\t\t\t\t</node> \n" + + "\t\t\t\t\t\t<node name=\"X4\" type=\"node\">\n" + + "\t\t\t\t\t\t\t<failure_model name=\"fm2\"/>\n" + + "\t\t\t\t\t\t</node>\n" + + "\t\t\t\t\t\t<node name=\"X5\" type=\"node\">\n" + + "\t\t\t\t\t\t\t<failure_model name=\"fm1\"/>\n" + + "\t\t\t\t\t\t</node> \n" + + "\t\t\t\t\t</logic>\n" + + " <logic name=\"s1\" type=\"parallel\">\n" + + "\t\t\t\t\t\t<node name=\"X6\" type=\"node\">\n" + + "\t\t\t\t\t\t\t<failure_model name=\"fm1\"/>\n" + + "\t\t\t\t\t\t</node> \n" + + "\t\t\t\t\t\t<node name=\"X7\" type=\"node\">\n" + + "\t\t\t\t\t\t\t<failure_model name=\"fm2\"/>\n" + + "\t\t\t\t\t\t</node>\n" + + "\t\t\t\t\t\t<node name=\"X8\" type=\"node\">\n" + + "\t\t\t\t\t\t\t<failure_model name=\"fm1\"/>\n" + + "\t\t\t\t\t\t</node> \n" + + "\t\t\t\t\t</logic>\n" + + "\t\t\t\t</logic>\n" + + "\t\t\t\t<logic name=\"绯荤粺2\" type=\"series\"> \n" + + "\t\t\t\t\t<logic name=\"p2\" type=\"parallel\"> \n" + + "\t\t\t\t\t\t<node name=\"X14\" type=\"node\">\n" + + "\t\t\t\t\t\t\t<failure_model name=\"fm1\"/>\n" + + "\t\t\t\t\t\t</node> \n" + + "\t\t\t\t\t\t<node name=\"X15\" type=\"node\">\n" + + "\t\t\t\t\t\t\t<failure_model name=\"fm2\"/>\n" + + "\t\t\t\t\t\t</node>\n" + + "\t\t\t\t\t</logic>\n" + + "\t\t\t\t\t<node name=\"X17\" type=\"node\">\n" + + "\t\t\t\t\t\t<failure_model name=\"fm1\"/>\n" + + "\t\t\t\t\t</node>\n" + + "\t\t\t\t</logic>\n" + + " </logic>\n" + + " </model>\n" + + " </models>\n" + + " <failure_models>\n" + + " <failure_model name=\"fm1\" type=\"exponential\">\n" + + " <failure-rate value=\"0.004\"/>\n" + + " </failure_model>\n" + + " <failure_model name=\"fm2\" type=\"fixed\">\n" + + " <unreliability value=\"0.04\"/>\n" + + " </failure_model>\n" + + " <failure_model name=\"fm3\" type=\"weibull\">\n" + + " <scale value=\"100\"/>\n" + + " <shape value=\"2\"/>\n" + + " </failure_model>\n" + + " </failure_models>\n" + + " <repair_models>\n" + + " <repair_model name=\"rm1\" type=\"exponential\">\n" + + " <repair-rate value=\"0.1\"/>\n" + + " </repair_model>\n" + + " <repair_model name=\"rm2\" type=\"weibull\">\n" + + " <scale value=\"13\"/>\n" + + " <shape value=\"2\"/>\n" + + " </repair_model>\n" + + " </repair_models>\n" + + "</des>"; + JSONObject jsonObject = new JSONObject(); +/* + Long simulate_times = 10000L; + Long timeslice = 10L; + jsonObject.put("xmlfile", xmlfile); + jsonObject.put("simulate_times", simulate_times); + jsonObject.put("seed", 1000); + jsonObject.put("timeslice", 1); +// jsonObject.put("timeslice", timeslice/60.0); +// jsonObject.put("timeslice", timeslice); +*/ + jsonObject.put("xmlfile", xmlfile); + jsonObject.put("simulate_times", simulatAssess.getSimulatFrequency()); + jsonObject.put("seed", 1000); + jsonObject.put("timeslice", simulatAssess.getSamplPeriod()/60.0); + jsonObject.put("result_home", resultHome); + redisTemplate.opsForValue().set(key, jsonObject.toJSONString()); + } } diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/dao/ParamDataDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/dao/ParamDataDao.java index bc3297c..92dd5f3 100644 --- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/dao/ParamDataDao.java +++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/dao/ParamDataDao.java @@ -22,6 +22,7 @@ ParamData getParamData(Long productId, String pageCode); List<ParamData> getByShipId(Long shipId); + List<ParamData> getDeviceParams(Long shipId); void deleteByShipId(Long shipId); diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/dao/XhProductModelDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/dao/XhProductModelDao.java index ca3a09a..164c3c5 100644 --- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/dao/XhProductModelDao.java +++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/basicInfo/dao/XhProductModelDao.java @@ -33,5 +33,7 @@ List<XhProductModel> getByShipId(Long shipId); + List<XhProductModel> getProductTree(Long shipId); + void deleteByShipId(Long shipId); } diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/ModelLineController.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/ModelLineController.java index 84fe38d..34ec34f 100644 --- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/ModelLineController.java +++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/ModelLineController.java @@ -50,6 +50,7 @@ @Autowired private PythonLib pythonLib; +/* @GetMapping("callPythonCalc") @ApiOperation("淇℃伅") public Result callPythonCalc() { @@ -57,7 +58,9 @@ return result; } +*/ +/* @GetMapping("getPythonCalcResult") @ApiOperation("淇℃伅") public Result<String> getPythonCalcResult() { @@ -65,6 +68,7 @@ return Result.ok(result); } +*/ @GetMapping("page") @ApiOperation("鍒嗛〉") diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/SimulatAssessController.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/SimulatAssessController.java index 88d71d9..c56ef67 100644 --- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/SimulatAssessController.java +++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/SimulatAssessController.java @@ -1,32 +1,29 @@ package com.zt.life.modules.mainPart.taskReliability.controller; -import cn.hutool.http.HttpUtil; import com.zt.common.annotation.LogOperation; import com.zt.common.constant.Constant; import com.zt.common.annotation.QueryParam; import com.zt.common.db.query.QueryFilter; import com.zt.common.servlet.Result; import com.zt.common.servlet.PageResult; -import com.zt.common.utils.UUIDUtil; import com.zt.common.validator.AssertUtils; import com.zt.common.validator.ValidatorUtils; -import com.zt.common.validator.group.AddGroup; import com.zt.common.validator.group.DefaultGroup; import com.zt.common.validator.group.UpdateGroup; +import com.zt.life.modules.mainPart.async.PythonLib; import com.zt.life.modules.mainPart.taskReliability.model.SimulatAssess; import com.zt.life.modules.mainPart.taskReliability.service.SimulatAssessService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; - -import javax.servlet.http.HttpServletResponse; -import java.util.HashMap; -import java.util.List; /** @@ -39,6 +36,15 @@ @RequestMapping("/taskReliability/SimulatAssess/") @Api(tags = "simulat_assess") public class SimulatAssessController { + private static final Logger logger = LoggerFactory.getLogger(SimulatAssessController.class); + private static final String taskTypeProgress = "calcreq"; + + @Autowired + private RedisTemplate redisTemplate; + + @Autowired + private PythonLib pythonLib; + @Autowired private SimulatAssessService simulatAssessService; @@ -66,6 +72,7 @@ @PostMapping("analyze") public Result<Long> analyze(@RequestBody SimulatAssess simulatAssess) { //鏁堥獙鏁版嵁 +/* ValidatorUtils.validateEntity(simulatAssess, AddGroup.class, DefaultGroup.class); Long taskId = UUIDUtil.generateId(); Integer time = simulatAssess.getSamplPeriod(); @@ -76,8 +83,10 @@ paramMap.put("Frequency", Frequency); paramMap.put("url", "http://localhost:8050/test-project//taskReliability/SimulatAssess/calculate"); String result1 = HttpUtil.get("http://localhost:8080/system/user/get", paramMap); +*/ + Result result = pythonLib.callPython(simulatAssess); - return Result.ok(taskId); + return result; } @GetMapping("calculate") @@ -92,6 +101,14 @@ return Result.ok(); } + @GetMapping("getCalcProgress") + public String getCalcProgress(Long taskId) { + String key = taskId.toString() + taskTypeProgress; + String progress = (String)redisTemplate.opsForValue().get(key); + if (progress==null) progress = "0"; + return progress; + } + @PutMapping @ApiOperation("淇敼") @LogOperation("淇敼") diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/TaskController.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/TaskController.java index 1bd2725..183d77c 100644 --- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/TaskController.java +++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/controller/TaskController.java @@ -11,6 +11,7 @@ import com.zt.common.validator.group.AddGroup; import com.zt.common.validator.group.DefaultGroup; import com.zt.common.validator.group.UpdateGroup; +import com.zt.life.modules.mainPart.taskReliability.dto.TaskModelCheckResult; import com.zt.life.modules.mainPart.taskReliability.model.Task; import com.zt.life.modules.mainPart.taskReliability.service.TaskService; import io.swagger.annotations.Api; @@ -62,6 +63,13 @@ return Result.ok(taskService.getTaskList(productId)); } + @GetMapping("checkTaskModel") + @ApiOperation("浠诲姟妯″瀷瀹屾暣鎬ф鏌�") + public Result<List<TaskModelCheckResult>> checkTaskModel(Long productId){ + List<TaskModelCheckResult> checkResult = taskService.checkTaskModel(productId); + return Result.ok(checkResult); + } + @PostMapping @ApiOperation("鏂板") @LogOperation("鏂板") diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ModelNodeAlgorithmDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ModelNodeAlgorithmDao.java index 6e356bc..e25e1d6 100644 --- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ModelNodeAlgorithmDao.java +++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/ModelNodeAlgorithmDao.java @@ -22,4 +22,5 @@ List<ModelNode> getListByModelId(Long modelId); void deleteByModelId(Long modelId); + List<ModelNodeAlgorithm> getRbdNodes(); } diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/OperatConditModelDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/OperatConditModelDao.java index 0ccc3be..9e9d362 100644 --- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/OperatConditModelDao.java +++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/OperatConditModelDao.java @@ -28,4 +28,6 @@ List<ModelNodes> getModelNodes(Long shipId); void deleteByOperatConditId(Long operatConditId); + + List<OperatConditModel> getGKModelTrees(Long productId); } diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskBinoParamDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskBinoParamDao.java index 075412c..54f9a60 100644 --- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskBinoParamDao.java +++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskBinoParamDao.java @@ -19,5 +19,6 @@ public interface TaskBinoParamDao extends BaseDao<TaskBinoParam> { List<TaskBinoParam> getList(Map<String, Object> params); + List<TaskBinoParam> getBinoParams(Long taskModelId); } diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskDao.java index 87c7740..92c01f3 100644 --- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskDao.java +++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dao/TaskDao.java @@ -2,6 +2,8 @@ import com.zt.common.dao.BaseDao; import com.zt.life.modules.mainPart.taskReliability.model.Task; +import com.zt.life.modules.mainPart.taskReliability.model.TaskPhase; +import com.zt.life.modules.mainPart.taskReliability.model.TaskPhaseModel; import org.apache.ibatis.annotations.Mapper; @@ -21,4 +23,8 @@ List<Task> getList(Map<String, Object> params); List<Task> getTaskList(Long productId); + + List<Task> getTaskModels(Long productId, Long taskModelId); + List<TaskPhase> getTaskModelPhases(Long productId, Long taskModelId); + List<TaskPhaseModel> getTaskModelPhaseModels(Long productId, Long taskModelId); } diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskModelCheckResult.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskModelCheckResult.java new file mode 100644 index 0000000..b7d307c --- /dev/null +++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/dto/TaskModelCheckResult.java @@ -0,0 +1,29 @@ +package com.zt.life.modules.mainPart.taskReliability.dto; + +import lombok.Data; + +@Data +public class TaskModelCheckResult { + public final static String CATEGORY_TASK_TIME = "浠诲姟鎬绘椂闀挎湭閰嶇疆"; + public final static String CATEGORY_PHASE_TIME = "闃舵鏃堕暱鏈厤缃�"; + public final static String CATEGORY_GK_TIME = "宸ュ喌鏃堕暱鏈厤缃�"; + public final static String CATEGORY_GK_MODEL = "宸ュ喌妯″瀷鏍戜笉瀹屾暣"; + public final static String CATEGORY_MODEL = "寤烘ā鏈畬鎴�"; + public final static String CATEGORY_PARAM = "璁惧鍙傛暟鏈厤缃�"; + private String category; // 妫�鏌ョ粨鏋滃垎绫� + private Long productId; // 浜у搧缁撴瀯鏍戣妭鐐笽D锛堜负浠诲姟鍙潬鎬у缓妯″璞¤妭鐐癸紝涓�鑸负鎬讳綋锛� + private Long taskModelId; // 浠诲姟妯″瀷ID + private String taskModelName; // 浠诲姟妯″瀷鍚嶇О + private Long taskModelPhaseId; // 浠诲姟闃舵ID + private String taskModelPhaseName; // 浠诲姟闃舵鍚嶇О + private Long gkId; // 宸ュ喌ID + private String gkName; // 宸ュ喌鍚嶇О + private Long nodeId; // 鑺傜偣ID + private String nodeName; // 鑺傜偣鍚嶇О + private Long modelId; // 鑺傜偣閫夋嫨鐨勬ā鍨婭D + private String modelName; // 鑺傜偣閫夋嫨鐨勬ā鍨嬪悕绉� + private Long deviceId; // 璁惧ID + private String deviceName; // 璁惧鍚嶇О + private Long paramId; // 璁惧鍙傛暟ID + private String paramName; // 璁惧鍙傛暟鍚嶇О +} diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/SimulatAssess.java b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/SimulatAssess.java index cb1ef09..f93e4b9 100644 --- a/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/SimulatAssess.java +++ b/modules/mainPart/src/main/java/com/zt/life/modules/mainPart/taskReliability/model/SimulatAssess.java @@ -31,9 +31,6 @@ @ApiModelProperty(value = "鎬讳綋浠诲姟妯″瀷ID") private Long taskModelId; - @ApiModelProperty(value = "浠跨湡ID") - private Long taskId; - @ApiModelProperty(value = "鏁版嵁绫诲瀷") private Integer dataType; @@ -54,4 +51,7 @@ private String errorMsg; private String curveData; + @ApiModelProperty(value = "浼犵粰绠楁硶搴撶殑xml") + private String xml; + } 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 b4e4d06..af3f35b 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 @@ -1,12 +1,22 @@ package com.zt.life.modules.mainPart.taskReliability.service; import com.zt.common.service.BaseService; -import com.zt.life.modules.mainPart.taskReliability.dao.TaskDao; -import com.zt.life.modules.mainPart.taskReliability.model.Task; +import com.zt.life.modules.mainPart.basicInfo.dao.ParamDataDao; +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.taskReliability.dao.*; +import com.zt.life.modules.mainPart.taskReliability.dto.TaskModelCheckResult; +import com.zt.life.modules.mainPart.taskReliability.model.*; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.zt.common.db.query.QueryFilter; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** @@ -17,6 +27,19 @@ */ @Service public class TaskService extends BaseService<TaskDao, Task> { + + @Autowired + private OperatConditModelDao operatConditModelDao; + @Autowired + private ModelNodeAlgorithmDao modelNodeAlgorithmDao; + @Autowired + private ModelRbdDao modelRbdDao; + @Autowired + private XhProductModelDao xhProductModelDao; + @Autowired + private ParamDataDao paramDataDao; + @Autowired + private TaskBinoParamDao taskBinoParamDao; /** * 鍒嗛〉鏌ヨ @@ -40,4 +63,188 @@ public List<Task> getTaskList(Long productId) { return baseDao.getTaskList(productId); } + + /** + * 瀵逛换鍔″彲闈犳�фā鍨嬪強鍏跺弬鏁伴厤缃繘琛屽畬鏁存�ф鏌ワ紝骞舵寚鍑轰互涓�5绫婚敊璇細 + * 0锛変换鍔℃�绘椂闀挎湭閰嶇疆 + * 1锛夐樁娈垫椂闀挎湭閰嶇疆 + * 2锛夊伐鍐垫椂闀挎湭閰嶇疆 + * 3锛夊伐鍐垫ā鍨嬫爲涓嶅畬鏁� + * 4锛夊缓妯℃湭瀹屾垚 + * 5锛夎澶囧弬鏁版湭閰嶇疆 + * 鍙互瀵规墍鏈変换鍔℃ā鍨嬭繘琛屾鏌ワ紝涔熷彲浠ュ彧妫�鏌ュ叆鍙傛寚瀹氱殑浜у搧鑺傜偣涓嬬殑浠诲姟妯″瀷锛涘墠鑰呴�傚悎鍦ㄩ〉闈㈠垪琛ㄦ樉绀哄叏浣撳缓妯$姸鎬侊紝鍚庤�呴�傚悎瀵规煇浠诲姟杩涜浠跨湡鏃剁殑妫�鏌ャ�� + * @param productId 浜у搧鑺傜偣ID锛堜竴鑸负鎬讳綋锛� + * @return 妫�鏌ュ嚭鐨勯敊璇殑List锛岄暱搴︿负0琛ㄧず娌℃湁閿欒锛屼笉浼氳繑鍥瀗ull + */ + public List<TaskModelCheckResult> checkTaskModel(Long productId) { + List<TaskModelCheckResult> result = new ArrayList<>(); + result = doCheckTaskModel(productId, null); + return result; + } + + private List<TaskModelCheckResult> doCheckTaskModel(Long productId, Long taskModelId) { + List<TaskModelCheckResult> 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.4 鑾峰彇浜у搧缁撴瀯鏍戠粨鏋勬暟鎹� + List<XhProductModel> productTreeList = xhProductModelDao.getProductTree(productId); + // 1.5 鑾峰彇鎵�鏈夋ā鍨嬪寘鍚殑鑺傜偣鏁版嵁 + List<ModelNodeAlgorithm> rbdNodeList = modelNodeAlgorithmDao.getRbdNodes(); + // 1.6 鑾峰彇鎵�鏈夊伐鍐垫ā鍨嬫爲鏁版嵁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 + List<ParamData> paramDataList = paramDataDao.getDeviceParams(productId); + List<TaskBinoParam> binoParamList = taskBinoParamDao.getBinoParams(taskModelId); + + // 2. 妫�鏌ユ瘡涓换鍔℃ā鍨嬬殑鏁版嵁瀹屾暣鎬э紙閫掑綊锛� + for (Task taskModel : taskModelList) { + if (null == taskModel.getTaskDuration() || 0.0 == taskModel.getTaskDuration()) { + // 2.1 浠诲姟鎬绘椂闀挎湭閰嶇疆 + setTaskModelCheckResult(taskModel, + null, + null, null, null, + TaskModelCheckResult.CATEGORY_TASK_TIME, checkResult); + } + List<TaskPhase> phases = taskModelPhaseList.stream().filter(item -> + taskModel.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, + TaskModelCheckResult.CATEGORY_PHASE_TIME, checkResult); + } + List<TaskPhaseModel> phaseModels = taskModelPhaseModelList.stream().filter(item -> + phase.getId().equals(item.getPhaseId())).collect(Collectors.toList()); + if (phaseModels.size() <= 0) { + // 鏃犲伐鍐垫ā鍨嬫暟鎹� + // 2.3 宸ュ喌鏃堕暱鏈厤缃� + setTaskModelCheckResult(taskModel, + phase, + null, null, null, + TaskModelCheckResult.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, + TaskModelCheckResult.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) { + // 鏃犲伐鍐垫ā鍨嬫爲鏍硅妭鐐癸紝鍗虫剰鍛崇潃鏃犲伐鍐垫ā鍨嬫爲 + XhProductModel node = (XhProductModel) productTreeList.stream().filter(item -> + taskModel.getProductId().equals(item.getId())).collect(Collectors.toList()).get(0); + setTaskModelCheckResult(taskModel, + phase, + taskPhaseModel, + null, + node, + TaskModelCheckResult.CATEGORY_GK_MODEL, checkResult); + } else { + // 鏈夊伐鍐垫ā鍨嬫爲锛屾鏌ュ叾瀹屾暣鎬� +// checkGkModel(taskModel, phase, taskPhaseModel, gkModelTops.get(0), +// deviceUsedList, checkResult); + } + } + } + } + + } + } + // 3. 杩斿洖妫�鏌ョ粨鏋� + return checkResult; + + } + + // 閫掑綊鍑芥暟 + private void checkGkModel(Task taskModel, + TaskPhase phase, + TaskPhaseModel taskPhaseModel, + OperatConditModel gkModelTreeTop, + List<OperatConditModel> gkModelList, + List<ModelNodeAlgorithm> rbdNodeList, + List<XhProductModel> productTreeList, + List<XhProductModel> deviceUsedList, + List<TaskModelCheckResult> 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, + TaskModelCheckResult.CATEGORY_GK_MODEL, checkResult); + } + } + + private void setTaskModelCheckResult(Task taskModel, + TaskPhase taskModelPhase, + TaskPhaseModel taskModelPhaseModel, + OperatConditModel gkModel, + XhProductModel node, + String category, + List<TaskModelCheckResult> checkResult) { + TaskModelCheckResult result = new TaskModelCheckResult(); + result.setCategory(category); + result.setProductId(taskModel.getProductId()); + result.setTaskModelId(taskModel.getId()); + result.setTaskModelName(taskModel.getTaskName()); + switch(category) { + case TaskModelCheckResult.CATEGORY_TASK_TIME: + break; + case TaskModelCheckResult.CATEGORY_PHASE_TIME: + result.setTaskModelPhaseId(taskModelPhase.getId()); + result.setTaskModelPhaseName(taskModelPhase.getPhaseName()); + break; + case TaskModelCheckResult.CATEGORY_GK_TIME: + result.setTaskModelPhaseId(taskModelPhase.getId()); + result.setTaskModelPhaseName(taskModelPhase.getPhaseName()); + if (null != taskModelPhaseModel) { + result.setGkId(taskModelPhaseModel.getOperatConditId()); + result.setGkName(taskModelPhaseModel.getOperatConditName()); + } + break; + case TaskModelCheckResult.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; + } + checkResult.add(result); + } } diff --git a/modules/mainPart/src/main/resources/mapper/basicInfo/ParamDataDao.xml b/modules/mainPart/src/main/resources/mapper/basicInfo/ParamDataDao.xml index 02d292a..388ff9c 100644 --- a/modules/mainPart/src/main/resources/mapper/basicInfo/ParamDataDao.xml +++ b/modules/mainPart/src/main/resources/mapper/basicInfo/ParamDataDao.xml @@ -51,4 +51,15 @@ and a.ship_id = #{shipId} </select> + <select id="getDeviceParams" resultType="com.zt.life.modules.mainPart.basicInfo.model.ParamData"> + SELECT a.* + FROM param_data a + inner join product_model b on b.id=a.product_id + where a.is_delete = 0 + and b.is_delete = 0 + and b.product_type = '5' + <if test="shipId!=null"> + and a.ship_id = #{shipId} + </if> + </select> </mapper> diff --git a/modules/mainPart/src/main/resources/mapper/basicInfo/XhProductModelDao.xml b/modules/mainPart/src/main/resources/mapper/basicInfo/XhProductModelDao.xml index d111bc8..d4016bb 100644 --- a/modules/mainPart/src/main/resources/mapper/basicInfo/XhProductModelDao.xml +++ b/modules/mainPart/src/main/resources/mapper/basicInfo/XhProductModelDao.xml @@ -121,4 +121,12 @@ and a.product_type > 2 </select> + <select id="getProductTree" resultType="com.zt.life.modules.mainPart.basicInfo.model.XhProductModel"> + select a.* + from product_model a + where a.is_delete = 0 + <if test="shipId!=null"> + and a.ship_id = #{shipId} + </if> + </select> </mapper> diff --git a/modules/mainPart/src/main/resources/mapper/taskReliability/ModelNodeAlgorithmDao.xml b/modules/mainPart/src/main/resources/mapper/taskReliability/ModelNodeAlgorithmDao.xml index 6dc4b80..08d8a54 100644 --- a/modules/mainPart/src/main/resources/mapper/taskReliability/ModelNodeAlgorithmDao.xml +++ b/modules/mainPart/src/main/resources/mapper/taskReliability/ModelNodeAlgorithmDao.xml @@ -24,6 +24,15 @@ and model_id=#{modelId} </select> + <select id="getRbdNodes" resultType="com.zt.life.modules.mainPart.taskReliability.model.ModelNodeAlgorithm"> + select a.* + from model_node_algorithm a + where + a.is_delete = 0 + and a.node_type = 'node' + order by a.model_id, a.data_id + </select> + <update id="deleteByModelId"> delete from model_node_algorithm where model_id=#{modelId} </update> diff --git a/modules/mainPart/src/main/resources/mapper/taskReliability/OperatConditModelDao.xml b/modules/mainPart/src/main/resources/mapper/taskReliability/OperatConditModelDao.xml index 900b8cb..84d252a 100644 --- a/modules/mainPart/src/main/resources/mapper/taskReliability/OperatConditModelDao.xml +++ b/modules/mainPart/src/main/resources/mapper/taskReliability/OperatConditModelDao.xml @@ -53,4 +53,18 @@ group by model_id </select> + <select id="getGKModelTrees" resultType="com.zt.life.modules.mainPart.taskReliability.model.OperatConditModel"> + select + a.* + FROM + operat_condit_model a + inner join operat_condit b on b.id=a.operat_condit_id + where + a.is_delete = 0 + and b.is_delete = 0 + <if test="productId!=null"> + and b.product_id=${productId} + </if> + ORDER BY a.operat_condit_id, a.product_id + </select> </mapper> diff --git a/modules/mainPart/src/main/resources/mapper/taskReliability/TaskBinoParamDao.xml b/modules/mainPart/src/main/resources/mapper/taskReliability/TaskBinoParamDao.xml index 94eee5f..bab87f4 100644 --- a/modules/mainPart/src/main/resources/mapper/taskReliability/TaskBinoParamDao.xml +++ b/modules/mainPart/src/main/resources/mapper/taskReliability/TaskBinoParamDao.xml @@ -62,4 +62,14 @@ order by a.phase_id, a.operat_condit_id, a.product_id </select> + <select id="getBinoParams" resultType="com.zt.life.modules.mainPart.taskReliability.model.TaskBinoParam"> + select a.* + from + task_bino_param a + where + a.IS_DELETE=0 + <if test="shipId!=null"> + and a.task_id = #{taskModelId} + </if> + </select> </mapper> diff --git a/modules/mainPart/src/main/resources/mapper/taskReliability/TaskDao.xml b/modules/mainPart/src/main/resources/mapper/taskReliability/TaskDao.xml index b2b188c..0f7f89b 100644 --- a/modules/mainPart/src/main/resources/mapper/taskReliability/TaskDao.xml +++ b/modules/mainPart/src/main/resources/mapper/taskReliability/TaskDao.xml @@ -26,4 +26,58 @@ and a.product_id=${productId} </select> + <select id="getTaskModels" resultType="com.zt.life.modules.mainPart.taskReliability.model.Task"> + select + a.* + FROM + task a + where + a.is_delete = 0 + <if test="productId!=null"> + and a.product_id=${productId} + </if> + <if test="taskModelId!=null"> + and a.id=${taskModelId} + </if> + ORDER BY a.task_sort + </select> + <select id="getTaskModelPhases" resultType="com.zt.life.modules.mainPart.taskReliability.model.TaskPhase"> + select + b.* + FROM + task a + inner join task_phase b on b.task_id=a.id + where + a.is_delete = 0 + and b.is_delete = 0 + <if test="productId!=null"> + and a.product_id=${productId} + </if> + <if test="taskModelId!=null"> + and a.id=${taskModelId} + </if> + ORDER BY a.task_sort, b.phase_sort + </select> + <select id="getTaskModelPhaseModels" resultType="com.zt.life.modules.mainPart.taskReliability.model.TaskPhaseModel"> + select + c.* + FROM + task a + inner join task_phase b on b.task_id=a.id + inner join task_phase_model c on c.phase_id=b.id + inner join operat_condit d on d.id=c.operat_condit_id + where + a.is_delete = 0 + and b.is_delete = 0 + and c.is_delete = 0 + and d.is_delete = 0 + <if test="productId!=null"> + and a.product_id=${productId} + and d.product_id=${productId} + </if> + <if test="taskModelId!=null"> + and a.id=${taskModelId} + </if> + ORDER BY a.task_sort, b.phase_sort + </select> </mapper> diff --git a/starter/src/main/resources/application.yml b/starter/src/main/resources/application.yml index 52ff66e..e529845 100644 --- a/starter/src/main/resources/application.yml +++ b/starter/src/main/resources/application.yml @@ -4,7 +4,7 @@ uri-encoding: UTF-8 max-threads: 1000 min-spare-threads: 30 - port: 8050 + port: 8066 servlet: context-path: /test-project session: @@ -145,4 +145,8 @@ tokenTimeout: 60 # 鍗曚綅鍒嗛挓 - + reliaSimLib: + # 绠楁硶搴撳惎鍔ㄨ剼鏈紙鍏ㄨ矾寰勶級 + mainPy: D:/relia_sim/main.py + # 绠楁硶搴撲豢鐪熺粨鏋滃瓨鏀炬牴鐩綍 + resultHome: d:/relia_sim/sim_result -- Gitblit v1.9.1