CtrlController.java 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. package com.hhwy.qbeqsjy.controller;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.hhwy.qbeqsjy.common.CommonUtil;
  5. import com.hhwy.qbeqsjy.common.Constants;
  6. import com.hhwy.qbeqsjy.domain.AjaxResult;
  7. import com.hhwy.qbeqsjy.dto.CtrlDTO;
  8. import com.hhwy.qbeqsjy.service.CtrlService;
  9. import lombok.extern.slf4j.Slf4j;
  10. import org.apache.commons.lang3.StringUtils;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.jdbc.core.JdbcTemplate;
  13. import org.springframework.web.bind.annotation.*;
  14. import javax.annotation.Resource;
  15. import java.util.ArrayList;
  16. import java.util.Collections;
  17. import java.util.List;
  18. import java.util.Map;
  19. @Slf4j
  20. @RestController
  21. @RequestMapping("/api/v1/")
  22. public class CtrlController {
  23. @Autowired
  24. private CtrlService ctrlService;
  25. @GetMapping("/test")
  26. public AjaxResult test(){
  27. return AjaxResult.success("测试接口");
  28. }
  29. /**
  30. * 下发布控任务,不支持批量操作,并记录布控任务对应的区域信息
  31. * @param ctrlDTO
  32. * @return
  33. *
  34. * 请求参数:
  35. * {
  36. * "taskId":"59275350793392128",
  37. * "endCtrlTime":"2025-03-20 00:00:00",
  38. * "resourceIdList":["aaaa","bbbb","cccc"],
  39. * "areaIdList":["dddd","eeee"],
  40. * "clueList":[
  41. * {
  42. * "clue":"13500000000",
  43. * "clueType":"D201005",
  44. * },
  45. * {
  46. * "clue":"120101000000000000",
  47. * "clueType":"D310111",
  48. * }
  49. * ......
  50. * ]
  51. *
  52. * }
  53. */
  54. @PostMapping("/ctrl")
  55. public AjaxResult ctrl(@RequestBody CtrlDTO ctrlDTO){
  56. String taskId = ctrlDTO.getTaskId();
  57. List<Map<String, Object>> clueList = ctrlDTO.getClueList();
  58. List<String> modelIdList = ctrlDTO.getModelIdList();
  59. List<String> areaIdList = ctrlDTO.getAreaIdList();
  60. if(StringUtils.isBlank(taskId) || clueList.size() == 0 || modelIdList.size() == 0){
  61. return AjaxResult.error(Constants.PARAMS_EMPTY_MSG);
  62. }
  63. String endCtrlTime = ctrlDTO.getEndCtrlTime();
  64. try {
  65. List<String> resourceCodeList = new ArrayList<>();
  66. // 将用户域传入的布控模型编号转换为烽火盘古平台数据资源编码
  67. for (String modelId : modelIdList) {
  68. resourceCodeList.add(CommonUtil.getConfValueByKeyApp(modelId));
  69. }
  70. // 对resourceCodeList集合中的元素去重
  71. List<String> newResourceCodeList = CommonUtil.deduplicateList(resourceCodeList);
  72. String modelIdListStr = modelIdList.toString();
  73. if(modelIdListStr.contains("DRYJ") && !modelIdListStr.contains("JJYJ")){ // 任务仅包含单人预警
  74. ctrlService.processDRYJCtrl(taskId, clueList, newResourceCodeList, areaIdList, endCtrlTime);
  75. } else if(modelIdListStr.contains("JJYJ") && !modelIdListStr.contains("DRYJ")){ // 任务仅包含聚集预警
  76. ctrlService.processJJYJCtrl(taskId, clueList, newResourceCodeList, areaIdList);
  77. } else { // 任务既包含单人预警,又包含聚集预警
  78. // 分别筛选出单人预警和聚集预警各自所对应的布控模型编号,并转换为对应的烽火数据资源编码
  79. List<String> dryjResourceCodeList = new ArrayList<>();
  80. List<String> jjyjResourceCodeList = new ArrayList<>();
  81. for (String modelId : modelIdList) {
  82. if(modelId.contains("DRYJ")){
  83. dryjResourceCodeList.add(CommonUtil.getConfValueByKeyApp(modelId));
  84. } else {
  85. jjyjResourceCodeList.add(CommonUtil.getConfValueByKeyApp(modelId));
  86. }
  87. }
  88. ctrlService.processDRYJCtrl(taskId, clueList, CommonUtil.deduplicateList(dryjResourceCodeList), areaIdList, endCtrlTime);
  89. ctrlService.processJJYJCtrl(taskId, clueList, CommonUtil.deduplicateList(jjyjResourceCodeList), areaIdList);
  90. }
  91. return AjaxResult.success(Constants.CTRL_ING_MSG);
  92. }catch (Exception e){
  93. log.error("任务布控发生异常", e);
  94. }
  95. return AjaxResult.error(Constants.SERVER_ERROR_MSG);
  96. }
  97. /**
  98. * 停止布控任务,不支持批量操作
  99. * @param reqBody
  100. * @return
  101. *
  102. * 请求参数:
  103. * {
  104. * "taskId":"59275350793392128",
  105. * "clueList":[
  106. * {
  107. * "clue":"13502082832",
  108. * "clueType":"D201005"
  109. * }
  110. * ]
  111. * }
  112. */
  113. @PostMapping("/stopCtrl")
  114. public AjaxResult stopCtrl(@RequestBody JSONObject reqBody){
  115. String taskId = reqBody.getString("taskId");
  116. JSONArray clueList = reqBody.getJSONArray("clueList");
  117. if(StringUtils.isBlank(taskId) || clueList == null || clueList.size() == 0){
  118. return AjaxResult.error(Constants.PARAMS_EMPTY_MSG);
  119. }
  120. try{
  121. ctrlService.processStopCtrl(taskId, clueList);
  122. return AjaxResult.success(Constants.STOP_CTRL_ING_MSG);
  123. } catch (Exception e){
  124. log.error("任务停控发生异常", e);
  125. }
  126. return AjaxResult.error(Constants.SERVER_ERROR_MSG);
  127. }
  128. /**
  129. * 保存用户域提交的布控任务相关信息
  130. * @param reqBody
  131. * @return
  132. */
  133. @PostMapping("/saveCtrlTaskInfo")
  134. public AjaxResult saveCtrlTaskInfo(@RequestBody JSONObject reqBody){
  135. JSONObject taskInfo = reqBody.getJSONObject("taskInfo");
  136. JSONArray modelIdListInfo = reqBody.getJSONArray("modelIdListInfo");
  137. JSONArray clueInfo = reqBody.getJSONArray("clueInfo");
  138. JSONArray modelInfo = reqBody.getJSONArray("modelInfo");
  139. if(taskInfo == null || modelIdListInfo.size() == 0 || clueInfo.size() == 0 || modelInfo.size() == 0){
  140. return AjaxResult.error(Constants.PARAMS_EMPTY_MSG);
  141. }
  142. try{
  143. JSONArray areaInfo = reqBody.getJSONArray("areaInfo");
  144. return ctrlService.saveCtrlTaskInfo(taskInfo, modelIdListInfo, areaInfo, clueInfo, modelInfo)? AjaxResult.success() : AjaxResult.error();
  145. } catch (Exception e){
  146. log.error("保存用户域任务相关信息发生异常", e);
  147. }
  148. return AjaxResult.error(Constants.SERVER_ERROR_MSG);
  149. }
  150. /**
  151. * 增量查询布控任务预警结果数据
  152. * @return
  153. */
  154. @PostMapping("/getCtrlWarningInfo")
  155. public AjaxResult getCtrlWarningInfo(){
  156. try{
  157. return AjaxResult.success(ctrlService.getWarningInfoByInc());
  158. } catch (Exception e){
  159. log.error("增量查询布控任务预警结果数据发生异常", e);
  160. }
  161. return AjaxResult.error(Constants.SERVER_ERROR_MSG);
  162. }
  163. }