CtrlController.java 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. package com.hhwy.qbeqsjy.controller;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.hhwy.qbeqsjy.common.Constants;
  5. import com.hhwy.qbeqsjy.domain.AjaxResult;
  6. import com.hhwy.qbeqsjy.dto.CtrlDTO;
  7. import com.hhwy.qbeqsjy.dto.QueryDTO;
  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.web.bind.annotation.*;
  13. import java.util.List;
  14. import java.util.Map;
  15. @Slf4j
  16. @RestController
  17. @RequestMapping("/api/v1/")
  18. public class CtrlController {
  19. @Autowired
  20. private CtrlService ctrlService;
  21. /**
  22. * 下发布控任务,不支持批量操作,并记录布控任务对应的区域信息
  23. * @param ctrlDTO
  24. * @return
  25. *
  26. * 请求参数:
  27. * {
  28. * "taskId":"59275350793392128",
  29. * "taskName":"",
  30. * "endCtrlTime":"2025-03-20 00:00:00",
  31. * "resourceIdList":["aaaa","bbbb","cccc"],
  32. * "areaIdList":["dddd","eeee"],
  33. * "clueList":[
  34. * {
  35. * "clue":"",90
  36. * "clueType":"D201005",
  37. * },
  38. * ......
  39. * ],
  40. * --- 因为用户域需保存一份来自数据域的预警结果数据,此处参数用作数据回填,避免在用户域出现预警结果值大量关联查询原始线索信息的情况
  41. * "yhyTaskInfo":{ --- 用户域布控任务信息
  42. * "yjry_xm":"",
  43. * "yjry_sfzh":"",
  44. * "yjry_sjh":"",
  45. * "rwmc":"",
  46. * "":"",
  47. * }
  48. *
  49. * }
  50. */
  51. @PostMapping("/ctrl")
  52. public AjaxResult ctrl(@RequestBody CtrlDTO ctrlDTO){
  53. String taskId = ctrlDTO.getTaskId();
  54. List<Map<String, Object>> clueList = ctrlDTO.getClueList();
  55. List<String> resourceIdList = ctrlDTO.getResourceIdList();
  56. if(StringUtils.isBlank(taskId) || clueList == null || clueList.size() == 0 || resourceIdList == null || resourceIdList.size() == 0){
  57. return AjaxResult.error(Constants.PARAMS_EMPTY_MSG);
  58. }
  59. try {
  60. ctrlService.processCtrl(ctrlDTO);
  61. return AjaxResult.success(Constants.CTRL_ING_MSG);
  62. }catch (Exception e){
  63. log.error("任务布控发生异常", e);
  64. }
  65. return AjaxResult.error(Constants.SERVER_ERROR_MSG);
  66. }
  67. /**
  68. * 停止布控任务,不支持批量操作
  69. * @param reqBody
  70. * @return
  71. *
  72. * 请求参数:
  73. * {
  74. * "taskId":"59275350793392128",
  75. * "clueList":[
  76. * {
  77. * "clue":"13502082832",
  78. * "clueType":"D201005"
  79. * }
  80. * ]
  81. * }
  82. */
  83. @PostMapping("/stopCtrl")
  84. public AjaxResult stopCtrl(@RequestBody JSONObject reqBody){
  85. String taskId = reqBody.getString("taskId");
  86. JSONArray clueList = reqBody.getJSONArray("clueList");
  87. if(StringUtils.isBlank(taskId) || clueList == null || clueList.size() == 0){
  88. return AjaxResult.error(Constants.PARAMS_EMPTY_MSG);
  89. }
  90. try{
  91. ctrlService.processStopCtrl(taskId, clueList);
  92. return AjaxResult.success(Constants.STOP_CTRL_ING_MSG);
  93. } catch (Exception e){
  94. log.error("任务停控发生异常", e);
  95. }
  96. return AjaxResult.error(Constants.SERVER_ERROR_MSG);
  97. }
  98. /**
  99. * 保存用户域提交的布控任务对应的区域信息
  100. * @param reqBody
  101. * @return
  102. *
  103. * 请求参数:
  104. * {
  105. * "taskId":"59275350793392128",
  106. * "areaList":[
  107. * {
  108. * "areaId":"xxx",
  109. * "areaName":"xxx",
  110. * "areaGeoType":1, --- 0:圆形,1:一般多边形
  111. * "location":[
  112. * {
  113. * "lon":"xxx", --- 顶点坐标
  114. * "lat":"xxx"
  115. * },
  116. * {
  117. * "lon":"xxx",
  118. * "lat":"xxx"
  119. * }
  120. * ......
  121. * ]
  122. * 或者
  123. * "areaId":"xxx",
  124. * "areaName":"xxx",
  125. * "areaGeoType":0,
  126. * "location":[
  127. * {
  128. * "lon":"xxx", --- 圆心点坐标
  129. * "lat":"xxx",
  130. * "radius":"100" --- 半径,单位:米
  131. * }
  132. * ]
  133. * }
  134. * ]
  135. * }
  136. */
  137. @PostMapping("/saveCtrlAreaInfo")
  138. public AjaxResult saveCtrlAreaInfo(@RequestBody JSONObject reqBody){
  139. String taskId = reqBody.getString("taskId");
  140. JSONArray areaList = reqBody.getJSONArray("areaList");
  141. if(StringUtils.isBlank(taskId) || areaList == null || areaList.size() == 0){
  142. return AjaxResult.error(Constants.PARAMS_EMPTY_MSG);
  143. }
  144. try{
  145. return ctrlService.saveCtrlAreaInfo(taskId, areaList)? AjaxResult.success() : AjaxResult.error();
  146. } catch (Exception e){
  147. log.error("保存任务区域信息发生异常", e);
  148. }
  149. return AjaxResult.error(Constants.SERVER_ERROR_MSG);
  150. }
  151. /**
  152. * 条件查询布控任务预警结果数据,支持分页查询,一次查询默认最大返回1000条数据
  153. * @param queryDTO
  154. * @return
  155. */
  156. @PostMapping("/getWarningInfo")
  157. public AjaxResult getWarningInfo(@RequestBody QueryDTO queryDTO){
  158. try{
  159. return AjaxResult.success(ctrlService.getWarningInfo(queryDTO));
  160. } catch (Exception e){
  161. log.error("查询布控任务预警结果数据发生异常", e);
  162. }
  163. return AjaxResult.error(Constants.SERVER_ERROR_MSG);
  164. }
  165. /**
  166. * 保存用户域提交的布控任务对应的线索人员信息
  167. * @param reqBody
  168. * @return
  169. *
  170. * 请求参数:
  171. * {
  172. * "taskId":"59275350793392128",
  173. * "clueList":[
  174. * {
  175. * "ryxm":"xxx",
  176. * "zjlxdm":"xxx",
  177. * "zjhm":"xxx",
  178. * ......
  179. * }
  180. * ]
  181. * }
  182. */
  183. @PostMapping("/saveCtrlClueInfo")
  184. public AjaxResult saveCtrlClueInfo(@RequestBody JSONObject reqBody){
  185. String taskId = reqBody.getString("taskId");
  186. JSONArray clueList = reqBody.getJSONArray("clueList");
  187. if(StringUtils.isBlank(taskId) || clueList == null || clueList.size() == 0){
  188. return AjaxResult.error(Constants.PARAMS_EMPTY_MSG);
  189. }
  190. try{
  191. return ctrlService.saveCtrlClueInfo(taskId, clueList)? AjaxResult.success() : AjaxResult.error();
  192. } catch (Exception e){
  193. log.error("保存任务线索人员信息发生异常", e);
  194. }
  195. return AjaxResult.error(Constants.SERVER_ERROR_MSG);
  196. }
  197. }