Pārlūkot izejas kodu

【情报二期】数据域服务 - 同行类业务通查服务接口开发

peifj 2 mēneši atpakaļ
vecāks
revīzija
4219e46cea

+ 13 - 7
src/main/java/com/hhwy/qbeqsjy/APP.java

@@ -8,6 +8,7 @@ import com.hhwy.qbeqsjy.common.SnowflakeIdGenerator;
 import org.locationtech.jts.geom.Coordinate;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 
@@ -47,16 +48,12 @@ public class APP {
         System.out.println(warningMsgId2);
         System.out.println(warningMsgId3);*/
 
-        String ss = "{\"dataXq\":[{\"ADDDATETIME\":1370540095000,\"AJBH\":\"A1201111800002013060011\",\"COUNTRY\":\"156\",\"CSRQ\":655171200000,\"CYM\":\"无\",\"GZDW\":\"捷威动力公司\",\"HJD\":\"山东省泰安市宁阳县葛石镇葛石村\",\"IIDD\":\"A5D846DBB77044EB80D23944E7219B0E\",\"ISDEL\":\"0\",\"JGPROVINCE\":\"370000\",\"LXDH\":\"13752041110\",\"MZ\":\"01\",\"NL\":22,\"RKSJ_ZYK\":1370540095000,\"RYID\":\"R1201111800002013060022\",\"SFRDDB\":\"0\",\"SFZXWY\":\"0\",\"SXZM_MC\":\"聚众斗殴\",\"TJR\":\"3DC3AEC83778494F8526A80E5373F477\",\"TJRXM\":\"李欢\",\"WHCD\":\"30\",\"XB\":\"1\",\"XM\":\"张澎澎\",\"XZDXZ\":\"天津市西青区中北镇九川工业园宿舍3号楼616号\",\"ZJHM\":\"370921199010062113\",\"ZJLX\":\"11\",\"ZZMM\":\"13\"}],\"lyName\":\"神盾\",\"sarName\":\"嫌疑人\"}";
+        /*String ss = "{\"dataXq\":[{\"ADDDATETIME\":1370540095000,\"AJBH\":\"A1201111800002013060011\",\"COUNTRY\":\"156\",\"CSRQ\":655171200000,\"CYM\":\"无\",\"GZDW\":\"捷威动力公司\",\"HJD\":\"山东省泰安市宁阳县葛石镇葛石村\",\"IIDD\":\"A5D846DBB77044EB80D23944E7219B0E\",\"ISDEL\":\"0\",\"JGPROVINCE\":\"370000\",\"LXDH\":\"13752041110\",\"MZ\":\"01\",\"NL\":22,\"RKSJ_ZYK\":1370540095000,\"RYID\":\"R1201111800002013060022\",\"SFRDDB\":\"0\",\"SFZXWY\":\"0\",\"SXZM_MC\":\"聚众斗殴\",\"TJR\":\"3DC3AEC83778494F8526A80E5373F477\",\"TJRXM\":\"李欢\",\"WHCD\":\"30\",\"XB\":\"1\",\"XM\":\"张澎澎\",\"XZDXZ\":\"天津市西青区中北镇九川工业园宿舍3号楼616号\",\"ZJHM\":\"370921199010062113\",\"ZJLX\":\"11\",\"ZZMM\":\"13\"}],\"lyName\":\"神盾\",\"sarName\":\"嫌疑人\"}";
         JSONObject resultData =  JSONObject.parseObject(ss);
         JSONObject resultDataSrc =  new JSONObject();
         resultDataSrc.put("data",resultData);
-
         String[] responseMsgField =  "data.dataXq[0].XM@-@data.sarName@-@data.dataXq[0].AJBH".split("@");
-
-
         StringBuffer resultBJMsgSb = new StringBuffer();
-
         for(String tmprepField: responseMsgField){
             if(tmprepField.contains("data.")){
                 resultBJMsgSb.append(JSONPath.read(resultDataSrc.toJSONString(),tmprepField));
@@ -64,9 +61,18 @@ public class APP {
                 resultBJMsgSb.append(tmprepField);
             }
         }
+        System.out.println(resultBJMsgSb.toString());*/
 
-
-        System.out.println(resultBJMsgSb.toString());
+//        List<String> list = new ArrayList<>();
+//        list.add("2");
+//        list.add("45");
+//        list.add("46");
+//        list.add("80");
+//        list.add("20");
+//        Integer minId = Integer.valueOf(Collections.min(list));
+//        Integer maxId = Integer.valueOf(Collections.max(list));
+//        System.out.println(minId);
+//        System.out.println(maxId);
 
     }
 }

+ 3 - 0
src/main/java/com/hhwy/qbeqsjy/common/Constants.java

@@ -315,7 +315,10 @@ public class Constants {
     public static final int NUM_300 = 300;
     public static final int NUM_200 = 200;
     public static final int NUM_180 = 180;
+    public static final int NUM_81 = 81;
     public static final int NUM_60 = 60;
+    public static final int NUM_46 = 46;
+    public static final int NUM_45 = 45;
     public static final int NUM_30 = 30;
     public static final int NUM_25 = 25;
     public static final int NUM_20 = 20;

+ 24 - 10
src/main/java/com/hhwy/qbeqsjy/controller/CtrlController.java

@@ -10,6 +10,8 @@ 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.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
@@ -51,23 +53,35 @@ public class CtrlController {
      */
     @PostMapping("/ctrl")
     public AjaxResult ctrl(@RequestBody CtrlDTO ctrlDTO){
-        String taskFlag = ctrlDTO.getTaskFlag();
         String taskId = ctrlDTO.getTaskId();
         List<Map<String, Object>> clueList = ctrlDTO.getClueList();
         List<String> resourceIdList = ctrlDTO.getResourceIdList();
+        List<String> areaIdList = ctrlDTO.getAreaIdList();
         if(StringUtils.isBlank(taskId) || clueList.size() == 0 || resourceIdList.size() == 0){
             return AjaxResult.error(Constants.PARAMS_EMPTY_MSG);
         }
+        Integer minResId = Integer.valueOf(Collections.min(resourceIdList));
+        Integer maxResId = Integer.valueOf(Collections.max(resourceIdList));
+        String endCtrlTime = ctrlDTO.getEndCtrlTime();
         try {
-            if(Constants.TASK_DRYJ.equals(taskFlag)){
-                ctrlService.processDRYJCtrl(ctrlDTO);
-            }
-            if(Constants.TASK_JJYJ.equals(taskFlag)){
-                ctrlService.processJJYJCtrl(ctrlDTO);
-            }
-            if(StringUtils.isBlank(taskFlag)){
-                ctrlService.processDRYJCtrl(ctrlDTO);
-                ctrlService.processJJYJCtrl(ctrlDTO);
+            if(minResId >= Constants.NUM_1 && maxResId <= Constants.NUM_45){   // 任务仅包含单人预警
+                ctrlService.processDRYJCtrl(taskId, clueList, resourceIdList, areaIdList, endCtrlTime);
+            } else if(minResId >= Constants.NUM_46 && maxResId <= Constants.NUM_81){   // 任务仅包含聚集预警
+                ctrlService.processJJYJCtrl(taskId, clueList, resourceIdList, areaIdList);
+            } else {   // 任务既包含单人预警,又包含聚集预警
+                // 分别筛选出单人预警和聚集预警各自所对应的布控资源业务ID
+                List<String> dryjResIdList = new ArrayList<>();
+                List<String> jjyjResIdList = new ArrayList<>();
+                for (String resourceId : resourceIdList) {
+                    Integer resId = Integer.valueOf(resourceId);
+                    if(resId >= Constants.NUM_1 && resId <= Constants.NUM_45){
+                        dryjResIdList.add(resourceId);
+                    } else {
+                        jjyjResIdList.add(resourceId);
+                    }
+                }
+                ctrlService.processDRYJCtrl(taskId, clueList, dryjResIdList, areaIdList, endCtrlTime);
+                ctrlService.processJJYJCtrl(taskId, clueList, jjyjResIdList, areaIdList);
             }
             return AjaxResult.success(Constants.CTRL_ING_MSG);
         }catch (Exception e){

+ 19 - 4
src/main/java/com/hhwy/qbeqsjy/dao/CtrlDao.java

@@ -9,10 +9,7 @@ import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Repository;
 import javax.annotation.Resource;
 import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Slf4j
 @Repository
@@ -284,6 +281,24 @@ public class CtrlDao {
     }*/
 
 
+    /**
+     * 根据 数据资源业务ID 查询对应的模型配置字典信息
+     * @param resourceId
+     * @return
+     */
+    public Map<String, Object> queryModelDictInfo(Integer resourceId){
+        Map<String, Object> modelDictInfoMap = new HashMap<>();
+        String sql = "select id, yjzdlxbm, yjzdlxmc, ejzdlxbm, ejzdlxmc, sanjzdlxbm, sanjzdlxmc, sjzdlxbm, sjzdlxmc, wjzdlxbm, wjzdlxmc, ljzdlxbm, ljzdlxmc, bz from t_model_dict_info where id = ?";
+        try {
+            modelDictInfoMap = gaussDBJdbcTemplate.queryForMap(sql, resourceId);
+            log.info("【根据数据资源业务ID查询对应模型配置字典信息成功】");
+        } catch (Exception e){
+            log.error("【根据数据资源业务ID查询对应模型配置字典信息发生异常】 异常信息:", e);
+        }
+        return modelDictInfoMap;
+    }
+
+
 
 
 

+ 0 - 2
src/main/java/com/hhwy/qbeqsjy/dto/CtrlDTO.java

@@ -17,8 +17,6 @@ import java.util.Map;
 @NoArgsConstructor
 public class CtrlDTO {
 
-    // 任务标识(样例:"taskFlag":"DRYJ" || "taskFlag":"JJYJ" || 参数为空则代表当前任务配置中包含单人预警、聚集预警两种模型)
-    private String taskFlag;
     // 任务编号
     private String taskId;
     // 开始布控时间

+ 19 - 20
src/main/java/com/hhwy/qbeqsjy/service/CtrlService.java

@@ -5,10 +5,10 @@ import com.alibaba.fastjson.JSONObject;
 import com.hhwy.qbeqsjy.common.*;
 import com.hhwy.qbeqsjy.dao.CtrlDao;
 import com.hhwy.qbeqsjy.domain.AjaxResult;
-import com.hhwy.qbeqsjy.dto.CtrlDTO;
 import com.hhwy.qbeqsjy.task.CtrlTask;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -53,18 +53,16 @@ public class CtrlService {
     private String uniCtrlDelUrl;
     @Value("${uniCtrl.query.url}")
     private String uniCtrlQueryUrl;
+    @Autowired
+    private SameTravelService sameTravelService;
+    @Value("${clue.code.idCard}")
+    private String clueCodeIdCard;
 
 
     /**
      * 处理单人预警布控任务
-     * @param ctrlDTO
      */
-    public void processDRYJCtrl(CtrlDTO ctrlDTO) {
-        String taskId = ctrlDTO.getTaskId();
-        String endCtrlTime = ctrlDTO.getEndCtrlTime();
-        List<Map<String, Object>> clueList = ctrlDTO.getClueList();
-        List<String> resourceIdList = ctrlDTO.getResourceIdList();
-        List<String> areaIdList = ctrlDTO.getAreaIdList();
+    public void processDRYJCtrl(String taskId, List<Map<String, Object>> clueList, List<String> resourceIdList, List<String> areaIdList, String endCtrlTime) {
         // 默认只开启一个子线程处理任务
         if(!Constants.MULTI_THREAD_ENABLED_FLAG.equals(multiThreadEnabled)){
             ExecutorService executorService = Executors.newFixedThreadPool(Constants.NUM_1);
@@ -172,21 +170,22 @@ public class CtrlService {
 
     /**
      * 处理聚集预警布控任务
-     * @param ctrlDTO
      */
-    public void processJJYJCtrl(CtrlDTO ctrlDTO) {
-        String taskId = ctrlDTO.getTaskId();
-        List<Map<String, Object>> clueList = ctrlDTO.getClueList();
-        List<String> resourceIdList = ctrlDTO.getResourceIdList();
+    public void processJJYJCtrl(String taskId, List<Map<String, Object>> clueList, List<String> resourceIdList, List<String> areaIdList) {
         ExecutorService executorService = Executors.newFixedThreadPool(Constants.NUM_1);
         executorService.execute(() -> {
-            Date createTime = new Date();
-            // --- todo
-
-
-
-
-            log.info("--- > 任务ID:{},线索集合布控完成", taskId);
+            for (String resourceId : resourceIdList) {
+                // 根据数据资源业务ID查询对应的模型信息
+                Map<String, Object> modelDictInfoMap = ctrlDao.queryModelDictInfo(Integer.valueOf(resourceId));
+                for (Map<String, Object> clueMap : clueList) {
+                    String clue = String.valueOf(clueMap.get("clue"));
+                    String clueType = String.valueOf(clueMap.get("clueType"));
+                    if(clueCodeIdCard.equals(clueType)){
+                        sameTravelService.callFHUniQueryService(taskId, clue, "", "");
+                    }
+                }
+            }
+            log.info("--- > 任务ID:{},线索集合同行类业务查询完成", taskId);
 
         });
         executorService.shutdown();

+ 7 - 0
src/main/java/com/hhwy/qbeqsjy/service/SameTravelService.java

@@ -240,6 +240,7 @@ public class SameTravelService {
      */
     public String buildYjxxsmByResourceCode(String resourceCode, JSONObject data){
         String yjxxsm = "";
+        // 同火车
         if(Constants.RES_CODE_THC.equals(resourceCode)){
             String xm = data.getString("XM");
             String zjhm = data.getString("ZJHM");
@@ -256,6 +257,7 @@ public class SameTravelService {
             yjxxsm = xm + "(身份证号:" + zjhm + ",座位号:" + zwh + ")和" + xm2 + "(身份证号:" + zjhm2 + ",座位号:" + zwh2 + ")于" + facRq + "共同乘坐" + cc + "次列车第"
                     + cxh + "号车厢,出发站:" + sfazMc + ",到达站:" + ddzMc + ",位置关系:" + flagGx;
         }
+        // 同航班
         if (Constants.RES_CODE_THB.equals(resourceCode)){
             String zjhm = data.getString("FIRST_PER_ZJHM");
             String xm = data.getString("FIRST_PER_NAME");
@@ -269,6 +271,7 @@ public class SameTravelService {
             yjxxsm = xm + "(身份证号:" + zjhm + ")和" + xm2 + "(身份证号:" + zjhm2 + ")共同购买航班票,出发机场信息代码:" + cfjcXxdm + ",到达机场信息代码:" + ddjcXxdm
                     + ",出发日期:" + cfrq + ",到达日期:" + ddrq + "共同订票信息编号:" + gtdpXxbh;
         }
+        // 同宾馆
         if (Constants.RES_CODE_TBG.equals(resourceCode)) {
             String zjhm = data.getString("ZJHM");
             String xm = data.getString("XM");
@@ -283,6 +286,7 @@ public class SameTravelService {
             yjxxsm = xm + "(身份证号:" + zjhm + ")和" + xm2 + "(身份证号:" + zjhm2 + ")共同入住" + rzlgmc + ",房间号:" + rzfjh + "," + xm + "入住时间:" + rzsj + ","
                     + xm2 + "入住时间:" + rzsj2;
         }
+        // 同网吧
         if (Constants.RES_CODE_TWB.equals(resourceCode)) {
             String zjhm = data.getString("SWR_ZJHM");
             String csxxdm = data.getString("YYCS_XXDM02");
@@ -297,6 +301,7 @@ public class SameTravelService {
             yjxxsm = xm + "(身份证号:" + zjhm + ")和" + xm2 + "(身份证号:" + zjhm2 + ")于" + csmc + "(场所信息代码:" + csxxdm + ")共同上网," + xm + "上网开始时间:"
                     + swkssj + "(上网终端信息编号:"+ swxxzdbh + ")," + xm2 + "上网开始时间:" + swkssj2 + "(上网终端信息编号:"+ swxxzdbh2 + ")";
         }
+        // 同长途客运
         if (Constants.RES_CODE_TCTKY.equals(resourceCode)){
             String zjhm = data.getString("FIRST_PER_ZJHM");
             String xm = data.getString("FIRST_PER_NAME");
@@ -310,6 +315,7 @@ public class SameTravelService {
             yjxxsm = xm + "(身份证号:" + zjhm + ")和" + xm2 + "(身份证号:" + zjhm2 + ")于" + fcjdsj + "共同乘坐" + cc + "长途客车(乘车站ID:" + cczId + "),目的站:"
                     + mdzmc + "(目的站ID:" + mdzId + ")";
         }
+        // 同民航进港
         if (Constants.RES_CODE_TMHJG.equals(resourceCode)) {
             String zjhm = data.getString("ZJHM");
             String xm = data.getString("LVK_XM");
@@ -329,6 +335,7 @@ public class SameTravelService {
             yjxxsm = xm + "(身份证号:" + zjhm + ",座位号:" + zwh + ")和" + xm2 + "(身份证号:" + zjhm2 + ",座位号:" + zwh2 + ")于" + hbrq + "共同乘坐" + hbsxh + "次航班"
                     + ",出发机场:" + cfjcmc + ",到达机场:" + ddjcmc + ",进港时间:" + jgjdsj + ",位置关系:" + flagGx;
         }
+        // 同民航离港
         if (Constants.RES_CODE_TMHLG.equals(resourceCode)) {
             String zjhm = data.getString("ZJHM");
             String xm = data.getString("LVK_XM");