package com.hhwy.qbeqsjy.controller; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.hhwy.qbeqsjy.common.Constants; import com.hhwy.qbeqsjy.domain.AjaxResult; import com.hhwy.qbeqsjy.dto.CtrlDTO; import com.hhwy.qbeqsjy.dto.QueryDTO; import com.hhwy.qbeqsjy.service.CtrlService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; @Slf4j @RestController @RequestMapping("/api/v1/") public class CtrlController { @Autowired private CtrlService ctrlService; /** * 下发布控任务,不支持批量操作,并记录布控任务对应的区域信息 * @param ctrlDTO * @return * * 请求参数: * { * "taskId":"59275350793392128", * "taskName":"", * "endCtrlTime":"2025-03-20 00:00:00", * "resourceIdList":["aaaa","bbbb","cccc"], * "areaIdList":["dddd","eeee"], * "clueList":[ * { * "clue":"",90 * "clueType":"D201005", * }, * ...... * ], * --- 因为用户域需保存一份来自数据域的预警结果数据,此处参数用作数据回填,避免在用户域出现预警结果值大量关联查询原始线索信息的情况 * "yhyTaskInfo":{ --- 用户域布控任务信息 * "yjry_xm":"", * "yjry_sfzh":"", * "yjry_sjh":"", * "rwmc":"", * "":"", * } * * } */ @PostMapping("/ctrl") public AjaxResult ctrl(@RequestBody CtrlDTO ctrlDTO){ String taskId = ctrlDTO.getTaskId(); List> clueList = ctrlDTO.getClueList(); List resourceIdList = ctrlDTO.getResourceIdList(); if(StringUtils.isBlank(taskId) || clueList == null || clueList.size() == 0 || resourceIdList == null || resourceIdList.size() == 0){ return AjaxResult.error(Constants.PARAMS_EMPTY_MSG); } try { ctrlService.processCtrl(ctrlDTO); return AjaxResult.success(Constants.CTRL_ING_MSG); }catch (Exception e){ log.error("任务布控发生异常", e); } return AjaxResult.error(Constants.SERVER_ERROR_MSG); } /** * 停止布控任务,不支持批量操作 * @param reqBody * @return * * 请求参数: * { * "taskId":"59275350793392128", * "clueList":[ * { * "clue":"13502082832", * "clueType":"D201005" * } * ] * } */ @PostMapping("/stopCtrl") public AjaxResult stopCtrl(@RequestBody JSONObject reqBody){ String taskId = reqBody.getString("taskId"); JSONArray clueList = reqBody.getJSONArray("clueList"); if(StringUtils.isBlank(taskId) || clueList == null || clueList.size() == 0){ return AjaxResult.error(Constants.PARAMS_EMPTY_MSG); } try{ ctrlService.processStopCtrl(taskId, clueList); return AjaxResult.success(Constants.STOP_CTRL_ING_MSG); } catch (Exception e){ log.error("任务停控发生异常", e); } return AjaxResult.error(Constants.SERVER_ERROR_MSG); } /** * 保存用户域提交的布控任务对应的区域信息 * @param reqBody * @return * * 请求参数: * { * "taskId":"59275350793392128", * "areaList":[ * { * "areaId":"xxx", * "areaName":"xxx", * "areaGeoType":1, --- 0:圆形,1:一般多边形 * "location":[ * { * "lon":"xxx", --- 顶点坐标 * "lat":"xxx" * }, * { * "lon":"xxx", * "lat":"xxx" * } * ...... * ] * 或者 * "areaId":"xxx", * "areaName":"xxx", * "areaGeoType":0, * "location":[ * { * "lon":"xxx", --- 圆心点坐标 * "lat":"xxx", * "radius":"100" --- 半径,单位:米 * } * ] * } * ] * } */ @PostMapping("/saveCtrlAreaInfo") public AjaxResult saveCtrlAreaInfo(@RequestBody JSONObject reqBody){ String taskId = reqBody.getString("taskId"); JSONArray areaList = reqBody.getJSONArray("areaList"); if(StringUtils.isBlank(taskId) || areaList == null || areaList.size() == 0){ return AjaxResult.error(Constants.PARAMS_EMPTY_MSG); } try{ return ctrlService.saveCtrlAreaInfo(taskId, areaList)? AjaxResult.success() : AjaxResult.error(); } catch (Exception e){ log.error("保存任务区域信息发生异常", e); } return AjaxResult.error(Constants.SERVER_ERROR_MSG); } /** * 条件查询布控任务预警结果数据,支持分页查询,一次查询默认最大返回1000条数据 * @param queryDTO * @return */ @PostMapping("/getWarningInfo") public AjaxResult getWarningInfo(@RequestBody QueryDTO queryDTO){ try{ return AjaxResult.success(ctrlService.getWarningInfo(queryDTO)); } catch (Exception e){ log.error("查询布控任务预警结果数据发生异常", e); } return AjaxResult.error(Constants.SERVER_ERROR_MSG); } /** * 保存用户域提交的布控任务对应的线索人员信息 * @param reqBody * @return * * 请求参数: * { * "taskId":"59275350793392128", * "clueList":[ * { * "ryxm":"xxx", * "zjlxdm":"xxx", * "zjhm":"xxx", * ...... * } * ] * } */ @PostMapping("/saveCtrlClueInfo") public AjaxResult saveCtrlClueInfo(@RequestBody JSONObject reqBody){ String taskId = reqBody.getString("taskId"); JSONArray clueList = reqBody.getJSONArray("clueList"); if(StringUtils.isBlank(taskId) || clueList == null || clueList.size() == 0){ return AjaxResult.error(Constants.PARAMS_EMPTY_MSG); } try{ return ctrlService.saveCtrlClueInfo(taskId, clueList)? AjaxResult.success() : AjaxResult.error(); } catch (Exception e){ log.error("保存任务线索人员信息发生异常", e); } return AjaxResult.error(Constants.SERVER_ERROR_MSG); } }