123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- package com.hhwy.qbeqsjy.controller;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.hhwy.qbeqsjy.common.CommonUtil;
- import com.hhwy.qbeqsjy.common.Constants;
- import com.hhwy.qbeqsjy.domain.AjaxResult;
- import com.hhwy.qbeqsjy.dto.CtrlDTO;
- 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.jdbc.core.JdbcTemplate;
- import org.springframework.web.bind.annotation.*;
- import javax.annotation.Resource;
- import java.util.*;
- @Slf4j
- @RestController
- @RequestMapping("/api/v1/")
- public class CtrlController {
- @Autowired
- private CtrlService ctrlService;
- @GetMapping("/test")
- public AjaxResult test(){
- return AjaxResult.success("测试接口");
- }
- /**
- * 下发布控任务,不支持批量操作,并记录布控任务对应的区域信息
- * @param ctrlDTO
- * @return
- *
- * 请求参数:
- * {
- * "taskId":"59275350793392128",
- * "endCtrlTime":"2025-03-20 00:00:00",
- * "resourceIdList":["aaaa","bbbb","cccc"],
- * "areaIdList":["dddd","eeee"],
- * "clueList":[
- * {
- * "clue":"13500000000",
- * "clueType":"D201005",
- * },
- * {
- * "clue":"120101000000000000",
- * "clueType":"D310111",
- * }
- * ......
- * ]
- *
- * }
- */
- @PostMapping("/ctrl")
- public AjaxResult ctrl(@RequestBody CtrlDTO ctrlDTO){
- String taskId = ctrlDTO.getTaskId();
- List<Map<String, Object>> clueList = ctrlDTO.getClueList();
- List<String> modelIdList = ctrlDTO.getModelIdList();
- List<String> areaIdList = ctrlDTO.getAreaIdList();
- if(StringUtils.isBlank(taskId) || clueList.size() == 0 || modelIdList.size() == 0){
- return AjaxResult.error(Constants.PARAMS_EMPTY_MSG);
- }
- String endCtrlTime = ctrlDTO.getEndCtrlTime();
- try {
- List<String> resourceCodeList = new ArrayList<>();
- // 将用户域传入的布控模型编号转换为烽火盘古平台数据资源编码
- Iterator<String> iterator = modelIdList.iterator();
- while (iterator.hasNext()){
- String modelId = iterator.next();
- String fhResourceCode = CommonUtil.getConfValueByKeyApp(modelId);
- // 集合中只添加数据资源编码值不为[yhybk]和[deving]的元素
- if(!"yhybk".equals(fhResourceCode) && !"deving".equals(fhResourceCode)){
- resourceCodeList.add(fhResourceCode);
- } else { // 将集合中数据资源编码值为[yhybk]或[deving]的原始模型编号元素删除
- iterator.remove();
- }
- }
- // 对集合中的元素去重,如 DRYJ-WSLJ-JRBDYJ和DRYJ-BSMGQY-JRMGQY两个模型对应的烽火数据资源编码值相同(134B102),均对应网安AUTH认证数据,保留一个即可
- List<String> newResourceCodeList = CommonUtil.deduplicateList(resourceCodeList);
- String modelIdListStr = modelIdList.toString();
- // 任务仅包含单人预警
- if(modelIdListStr.contains("DRYJ") && !modelIdListStr.contains("JJYJ")){
- ctrlService.processDRYJCtrl(taskId, clueList, newResourceCodeList, areaIdList, endCtrlTime);
- }
- // 任务仅包含聚集预警
- else if(modelIdListStr.contains("JJYJ") && !modelIdListStr.contains("DRYJ")){
- ctrlService.processJJYJCtrl(taskId, clueList, newResourceCodeList, areaIdList);
- }
- // 任务既包含单人预警,又包含聚集预警
- else {
- // 分别筛选出单人预警和聚集预警各自所对应的布控模型编号,并转换为对应的烽火数据资源编码
- List<String> dryjResourceCodeList = new ArrayList<>();
- List<String> jjyjResourceCodeList = new ArrayList<>();
- for (String modelId : modelIdList) {
- if(modelId.contains("DRYJ")){
- dryjResourceCodeList.add(CommonUtil.getConfValueByKeyApp(modelId));
- } else {
- jjyjResourceCodeList.add(CommonUtil.getConfValueByKeyApp(modelId));
- }
- }
- ctrlService.processDRYJCtrl(taskId, clueList, CommonUtil.deduplicateList(dryjResourceCodeList), areaIdList, endCtrlTime);
- ctrlService.processJJYJCtrl(taskId, clueList, CommonUtil.deduplicateList(jjyjResourceCodeList), areaIdList);
- }
- 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
- */
- @PostMapping("/saveCtrlTaskInfo")
- public AjaxResult saveCtrlTaskInfo(@RequestBody JSONObject reqBody){
- JSONObject taskInfo = reqBody.getJSONObject("taskInfo");
- JSONArray modelIdListInfo = reqBody.getJSONArray("modelIdListInfo");
- JSONArray clueInfo = reqBody.getJSONArray("clueInfo");
- JSONArray modelInfo = reqBody.getJSONArray("modelInfo");
- if(taskInfo == null || modelIdListInfo.isEmpty() || clueInfo.isEmpty() || modelInfo.isEmpty()){
- return AjaxResult.error(Constants.PARAMS_EMPTY_MSG);
- }
- try{
- JSONArray areaInfo = reqBody.getJSONArray("areaInfo");
- return ctrlService.saveCtrlTaskInfo(taskInfo, modelIdListInfo, areaInfo, clueInfo, modelInfo)? AjaxResult.success() : AjaxResult.error();
- } catch (Exception e){
- log.error("保存用户域任务相关信息发生异常", e);
- }
- return AjaxResult.error(Constants.SERVER_ERROR_MSG);
- }
- /**
- * 增量查询布控任务预警结果数据
- * @return
- */
- @PostMapping("/getCtrlWarningInfo")
- public AjaxResult getCtrlWarningInfo(@RequestBody JSONObject reqBody){
- try{
- return AjaxResult.success(ctrlService.getWarningInfoByInc());
- } catch (Exception e){
- log.error("增量查询布控任务预警结果数据发生异常", e);
- }
- return AjaxResult.error(Constants.SERVER_ERROR_MSG);
- }
- /**
- * 保存(用户域)预警接收群组信息
- */
- @PostMapping("/saveGroupInfo")
- public AjaxResult saveGroupInfo(@RequestBody JSONObject reqBody){
- JSONArray groupInfoList = reqBody.getJSONArray("groupInfo");
- if(groupInfoList.isEmpty()){
- return AjaxResult.error(Constants.PARAMS_EMPTY_MSG);
- }
- try{
- return ctrlService.saveGroupInfo(groupInfoList)? AjaxResult.success() : AjaxResult.error();
- } catch (Exception e){
- log.error("保存预警接收群组信息发生异常", e);
- }
- return AjaxResult.error(Constants.SERVER_ERROR_MSG);
- }
- }
|