TrainFaultDiagnoseController.java 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package com.gyee.impala.controller.diagnose;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.gyee.impala.common.result.JsonResult;
  4. import com.gyee.impala.common.result.ResultCode;
  5. import com.gyee.impala.common.util.DateUtil;
  6. import com.gyee.impala.model.custom.diagnose.DataInfo;
  7. import com.gyee.impala.model.custom.diagnose.ExecuteInfo;
  8. import com.gyee.impala.model.master.Casefault;
  9. import com.gyee.impala.model.master.diagnose.Diagnosepoint;
  10. import com.gyee.impala.service.custom.diagnose.DataPointService;
  11. import com.gyee.impala.service.custom.diagnose.TrainFaultDiagnoseService;;
  12. import lombok.extern.slf4j.Slf4j;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
  15. import org.springframework.web.bind.annotation.*;
  16. import javax.annotation.Resource;
  17. import java.util.Calendar;
  18. import java.util.List;
  19. import java.util.Map;
  20. import java.util.stream.Collectors;
  21. /**
  22. * 故障诊断
  23. */
  24. @Slf4j
  25. @CrossOrigin
  26. @RestController
  27. @RequestMapping("/api/diagnose")
  28. public class TrainFaultDiagnoseController {
  29. @Autowired
  30. private TrainFaultDiagnoseService trainFaultDiagnoseService;
  31. private ExecuteInfo executeInfo;
  32. @Autowired
  33. private DataPointService dataService;
  34. /**
  35. * 线程池
  36. */
  37. @Resource
  38. private ThreadPoolTaskExecutor taskExecutor;
  39. private static final Object locker = new Object();
  40. /** 开始诊断 查询 golden 所有原始数据
  41. * flag ture: 所有数据 ;false: 前10条数据
  42. * **/
  43. @PostMapping("/pointdata")
  44. public JSONObject getPointData(@RequestBody JSONObject json){
  45. if (json == null)
  46. return JsonResult.error(ResultCode.PARAM_IS_BLANK);
  47. log.info("进入诊断程序");
  48. boolean flag = json.getBooleanValue("flag");
  49. List<Diagnosepoint> points = JSONObject.parseArray(json.getJSONArray("points").toString(), Diagnosepoint.class);
  50. List<Casefault> faults = JSONObject.parseArray(json.getJSONArray("faults").toString(), Casefault.class);
  51. /** 组装数据 删除添加的故障类型**/
  52. dataService.formatUniformcode(points.stream().filter(a -> !a.getUniformcode().equals("faulttype")).collect(Collectors.toList()));
  53. executeInfo = new ExecuteInfo();
  54. Calendar cal = Calendar.getInstance();
  55. DataInfo[] dataInfos = new DataInfo[faults.size()];
  56. for (int i = 0; i < faults.size(); i++){
  57. DataInfo data = new DataInfo();
  58. data.setId(Long.valueOf(faults.get(i).getId()));
  59. data.setStationId(faults.get(i).getStationen());
  60. data.setThingId(faults.get(i).getWindturbineid());
  61. data.setModelId(faults.get(i).getModel());
  62. data.setTag(faults.get(i).getFaultcode());
  63. data.setFaultTime(faults.get(i).getStarttime());
  64. cal.setTime(DateUtil.parseStrtoDate(faults.get(i).getStarttime(), DateUtil.YYYY_MM_DD_HH_MM_SS));
  65. cal.add(Calendar.MINUTE, -30);
  66. data.setStartTs(cal.getTimeInMillis() + "");
  67. cal.add(Calendar.MINUTE, 30);
  68. data.setEndTs(cal.getTimeInMillis() + "");
  69. dataInfos[i] = data;
  70. }
  71. executeInfo.setDataInfos(dataInfos);
  72. if (flag){
  73. if (!trainFaultDiagnoseService.isComplete()) {
  74. return JsonResult.error(4000, "已有正在诊断的故障模型...");
  75. }
  76. synchronized (locker) {
  77. taskExecutor.submit(this::execute);
  78. }
  79. return JsonResult.success(ResultCode.SUCCESS);
  80. }else {
  81. Map<String, Object> mp = dataService.getFormData(executeInfo);
  82. return JsonResult.successData(ResultCode.SUCCESS, mp);
  83. }
  84. }
  85. /**
  86. * 调用执行脚本
  87. */
  88. private void execute() {
  89. }
  90. }