|  |  |  | 
|---|
|  |  |  | import cn.hutool.json.JSONArray; | 
|---|
|  |  |  | import cn.hutool.json.JSONObject; | 
|---|
|  |  |  | import cn.hutool.json.XML; | 
|---|
|  |  |  | import com.fasterxml.jackson.databind.ObjectMapper; | 
|---|
|  |  |  | 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.validator.AssertUtils; | 
|---|
|  |  |  | import com.zt.common.validator.ValidatorUtils; | 
|---|
|  |  |  | 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.dto.SimulaDataDto; | 
|---|
|  |  |  | import com.zt.life.modules.mainPart.taskReliability.dto.ProductStatusDto; | 
|---|
|  |  |  | import com.zt.life.modules.mainPart.taskReliability.dto.StatusDto; | 
|---|
|  |  |  | import com.zt.life.modules.mainPart.taskReliability.model.CurveParam; | 
|---|
|  |  |  | import com.zt.life.modules.mainPart.taskReliability.model.SimulatAssess; | 
|---|
|  |  |  | import com.zt.life.modules.mainPart.taskReliability.model.Task; | 
|---|
|  |  |  | import com.zt.life.modules.mainPart.taskReliability.model.TimeDiagram; | 
|---|
|  |  |  | import com.zt.life.modules.mainPart.taskReliability.service.SimulatAssessService; | 
|---|
|  |  |  | import com.zt.life.modules.mainPart.taskReliability.service.TaskService; | 
|---|
|  |  |  | import io.swagger.annotations.Api; | 
|---|
|  |  |  | import io.swagger.annotations.ApiImplicitParam; | 
|---|
|  |  |  | import io.swagger.annotations.ApiImplicitParams; | 
|---|
|  |  |  | import io.swagger.annotations.ApiOperation; | 
|---|
|  |  |  | import org.apache.commons.io.IOUtils; | 
|---|
|  |  |  | import org.apache.commons.lang3.StringUtils; | 
|---|
|  |  |  | import org.slf4j.Logger; | 
|---|
|  |  |  | import org.slf4j.LoggerFactory; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Value; | 
|---|
|  |  |  | import org.springframework.data.redis.core.RedisTemplate; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.*; | 
|---|
|  |  |  | import springfox.documentation.annotations.ApiIgnore; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.io.File; | 
|---|
|  |  |  | import java.io.FileInputStream; | 
|---|
|  |  |  | import java.io.IOException; | 
|---|
|  |  |  | import java.io.InputStream; | 
|---|
|  |  |  | import java.util.ArrayList; | 
|---|
|  |  |  | import java.util.HashMap; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  | import java.util.Map; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private TaskService taskService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${data.reliaSimLib.resultHome}") | 
|---|
|  |  |  | private String path; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private SimulatAssessService simulatAssessService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private JSONObject xmlJSONObj; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /* @GetMapping("page") | 
|---|
|  |  |  | @ApiOperation("分页") | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @GetMapping("getSimulatList") | 
|---|
|  |  |  | @ApiOperation("信息") | 
|---|
|  |  |  | public Result<List<SimulatAssess>> getSimulatList(Long productId,Long taskModelId) { | 
|---|
|  |  |  | List<SimulatAssess> data = simulatAssessService.getList(productId,taskModelId); | 
|---|
|  |  |  | public Result<List<SimulatAssess>> getSimulatList(Long productId, Long taskModelId) { | 
|---|
|  |  |  | List<SimulatAssess> data = simulatAssessService.getList(productId, taskModelId); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return Result.ok(data); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @GetMapping("getSimulatParams") | 
|---|
|  |  |  | @ApiOperation("信息") | 
|---|
|  |  |  | public Result<List<SimulatAssess>> getSimulatParams(Long id,Long taskModelId) { | 
|---|
|  |  |  | List<SimulatAssess> data = simulatAssessService.getParams(id,taskModelId); | 
|---|
|  |  |  | public Result<SimulatAssess> getSimulatParams(Long id, Long taskModelId) { | 
|---|
|  |  |  | SimulatAssess data = simulatAssessService.getParams(id, taskModelId); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return Result.ok(data); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | @PostMapping("analyze") | 
|---|
|  |  |  | public Result<Long> analyze(@RequestBody SimulatAssess simulatAssess) { | 
|---|
|  |  |  | //效验数据 | 
|---|
|  |  |  | /* | 
|---|
|  |  |  | ValidatorUtils.validateEntity(simulatAssess, AddGroup.class, DefaultGroup.class); | 
|---|
|  |  |  | Long taskId = UUIDUtil.generateId(); | 
|---|
|  |  |  | Integer time = simulatAssess.getSamplPeriod(); | 
|---|
|  |  |  | Integer Frequency = simulatAssess.getSimulatFrequency(); | 
|---|
|  |  |  | HashMap<String, Object> paramMap = new HashMap<>(); | 
|---|
|  |  |  | paramMap.put("taskId", taskId); | 
|---|
|  |  |  | paramMap.put("time", time); | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | //        Result result = pythonLib.callPython(simulatAssess); | 
|---|
|  |  |  | Result result = simulatAssessService.simulate(simulatAssess); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @PostMapping("getResultXML") | 
|---|
|  |  |  | public Result<SimulaDataDto> getResultXML(@RequestBody SimulatAssess simulatAssess) { | 
|---|
|  |  |  | if (simulatAssess.getDataType().equals("fz")){ | 
|---|
|  |  |  | Integer num = simulatAssessService.getNumById(simulatAssess.getProductId(),simulatAssess.getTaskModelId()); | 
|---|
|  |  |  | simulatAssess.setName("仿真记录" + (num+1)); | 
|---|
|  |  |  | if (simulatAssess.getDataType().equals("fz")) { | 
|---|
|  |  |  | Integer num = simulatAssessService.getNumById(simulatAssess.getProductId(), simulatAssess.getTaskModelId()); | 
|---|
|  |  |  | simulatAssess.setName("仿真记录" + (num + 1)); | 
|---|
|  |  |  | simulatAssessService.insert(simulatAssess); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String filePath = path + "/" + simulatAssess.getId() + "/" + "result.xml"; | 
|---|
|  |  |  | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | InputStream in = new FileInputStream(filePath); | 
|---|
|  |  |  | xml = IOUtils.toString(in); | 
|---|
|  |  |  | in.close(); | 
|---|
|  |  |  | } catch (IOException e) { | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | public SimulaDataDto getResultData(SimulatAssess simulatAssess) { | 
|---|
|  |  |  | SimulaDataDto data = new SimulaDataDto(); | 
|---|
|  |  |  | CurveParam param = new CurveParam(); | 
|---|
|  |  |  | Double samplPeriod = simulatAssess.getSamplPeriod().doubleValue(); | 
|---|
|  |  |  | Double samplPeriod = Double.valueOf(simulatAssess.getSamplPeriod()); | 
|---|
|  |  |  | Task task = taskService.get(simulatAssess.getTaskModelId()); | 
|---|
|  |  |  | samplPeriod = samplPeriod / 60; | 
|---|
|  |  |  | List<Double> xList = new ArrayList<>(); | 
|---|
|  |  |  | 
|---|
|  |  |  | if (nameValue instanceof Long) { | 
|---|
|  |  |  | productId = (Long) nameValue; | 
|---|
|  |  |  | if (productId.equals(simulatAssess.getShowProductId())) { | 
|---|
|  |  |  | JSONArray jsonArray2 = jsonArray.getJSONObject(i).getJSONArray("phase"); | 
|---|
|  |  |  | Object object = jsonArray.getJSONObject(i).get("phase"); | 
|---|
|  |  |  | List<Double> doubleArray = new ArrayList<>(); | 
|---|
|  |  |  | String availability = null; | 
|---|
|  |  |  | for (int j = 0; j < jsonArray2.size(); j++) { | 
|---|
|  |  |  | if (availability != null) { | 
|---|
|  |  |  | availability = availability + " " + jsonArray2.getJSONObject(j).get("availability"); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | availability = (String) jsonArray2.getJSONObject(j).get("availability"); | 
|---|
|  |  |  | if (object instanceof JSONArray) { | 
|---|
|  |  |  | JSONArray jsonArray2 = jsonArray.getJSONObject(i).getJSONArray("phase"); | 
|---|
|  |  |  | for (int j = 0; j < jsonArray2.size(); j++) { | 
|---|
|  |  |  | if (availability != null) { | 
|---|
|  |  |  | availability = availability + " " + jsonArray2.getJSONObject(j).get("availability"); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | availability = (String) jsonArray2.getJSONObject(j).get("availability"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | JSONObject jsonObject2 = jsonArray.getJSONObject(i).getJSONObject("phase"); | 
|---|
|  |  |  | availability = (String) jsonObject2.get("availability"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String[] arr = availability.split(" "); | 
|---|
|  |  |  | // 遍历子字符串数组,将每个元素转换为double并存储到double数组中 | 
|---|
|  |  |  | for (int a = 0; a < arr.length; a++) { | 
|---|
|  |  |  | doubleArray.add(Double.parseDouble(arr[a])); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | param.setYData(doubleArray); | 
|---|
|  |  |  | data.setMtbf((Double) jsonArray.getJSONObject(i).get("mttf")); | 
|---|
|  |  |  | data.setMttr((Double) jsonArray.getJSONObject(i).get("mttr")); | 
|---|
|  |  |  | 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.setCurveParam(param); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return data; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @GetMapping("getStatus") | 
|---|
|  |  |  | public Result<String> getTimeDiagram(Long productId, Long taskId, Long fzId) { | 
|---|
|  |  |  | String data = simulatAssessService.getTimeDiagram(productId, taskId, fzId); | 
|---|
|  |  |  | return Result.ok(data); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @GetMapping("getDiagram") | 
|---|
|  |  |  | @ApiOperation("查询流程图") | 
|---|
|  |  |  | @LogOperation("查询流程图") | 
|---|
|  |  |  | public Result<TimeDiagram> getDiagram(String projectId, String diagramId, String showType, String isShow, String digramParams, String majorId, Integer winWidth, Integer winHeight) throws Exception { | 
|---|
|  |  |  | if (StringUtils.isBlank(diagramId)) | 
|---|
|  |  |  | diagramId = projectId; | 
|---|
|  |  |  | TimeDiagram diagram = simulatAssessService.getDiagram(projectId, diagramId, showType, isShow, digramParams, majorId, winWidth, winHeight); | 
|---|
|  |  |  | return Result.ok(diagram); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @PutMapping("saveDiagram") | 
|---|
|  |  |  | @ApiOperation("查询流程图") | 
|---|
|  |  |  | @LogOperation("查询流程图") | 
|---|
|  |  |  | public Result saveDiagram(@RequestBody TimeDiagram diagram) { | 
|---|
|  |  |  | // 效验数据 | 
|---|
|  |  |  | //ValidatorUtils.validateEntity(project.getProject(), UpdateGroup.class, DefaultGroup.class); | 
|---|
|  |  |  | if (diagram.getConfigChange() == null) | 
|---|
|  |  |  | diagram.setConfigChange(0); | 
|---|
|  |  |  | diagram.setSaveStatus(2); | 
|---|
|  |  |  | simulatAssessService.updateDiagram(diagram); | 
|---|
|  |  |  | //simulatAssessService.combineDiagram(diagram); | 
|---|
|  |  |  | return Result.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @GetMapping("getCalcProgress") | 
|---|
|  |  |  | 
|---|
|  |  |  | return Result.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|