浏览代码

【情报二期】数据域服务 - 布控资源表消费逻辑开发

peifj 1 月之前
父节点
当前提交
7f5857590e

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

@@ -163,7 +163,7 @@ public class CtrlDao {
      */
     public List<Map<String, Object>> queryCtrlTaskModelInfo(String taskId){
         List<Map<String, Object>> ctrlTaskInfoModelList = new ArrayList<>();
-        String sql = "select rwbh, mxbh, mddSheng, mddShi, bkqybh, yjrsyz, yjsjjgyz, yjsjjgyzdw, yjxwdm, yjtj, wifiMac from t_ctrl_task_model_info where rwbh = ?";
+        String sql = "select rwbh, mxbh, mdd_sheng, mdd_shi, bkqybh, yjrsyz, yjsjjgyz, yjsjjgyzdw, yjxwdm, yjtj, wifi_mac from t_ctrl_task_model_info where rwbh = ?";
         try {
             ctrlTaskInfoModelList = gaussdbJdbcTemplate.queryForList(sql, taskId);
         } catch (Exception e){

+ 247 - 186
src/main/java/com/hhwy/qbeqsjy/kafka/service/ConsumeService.java

@@ -47,8 +47,8 @@ public class ConsumeService implements ApplicationListener<ContextRefreshedEvent
     private String radiusHcz;
     @Value("${res.code.auth}")
     private String resCodeAUTH;
-    @Value("${res.code.tldp}")
-    private String resCodeTldp;
+    /*@Value("${res.code.tldp}")
+    private String resCodeTldp;*/
     @Value("${res.code.mhdp}")
     private String resCodeMhdp;
     @Value("${res.code.jnryzs}")
@@ -69,6 +69,10 @@ public class ConsumeService implements ApplicationListener<ContextRefreshedEvent
     private String resCodeDzwl;
     @Value("${res.code.rlgz}")
     private String resCodeRlgz;
+    @Value("${res.code.gmszy}")
+    private String resCodeGmszy;
+
+
     @Resource
     private CtrlDao ctrlDao;
     private SnowflakeIdGenerator generator = new SnowflakeIdGenerator(1);
@@ -194,11 +198,6 @@ public class ConsumeService implements ApplicationListener<ContextRefreshedEvent
                             double[] latAndLon84 = GpsCoordinateUtils.calBD09toWGS84(Double.valueOf(latBD), Double.valueOf(lonBD));
                             String lat84 = String.valueOf(latAndLon84[0]);
                             String lon84 = String.valueOf(latAndLon84[1]);
-                            yjxxsm.append(",点位坐标:(");
-                            yjxxsm.append(lon84);
-                            yjxxsm.append(",");
-                            yjxxsm.append(lat84);
-                            yjxxsm.append(")");
                             // 3. ========================= 如果存在布控区域,则过滤不在布控区域范围的数据
                             JSONArray areaInfoList = JSON.parseArray(bkqyxx);
                             if(areaInfoList != null && areaInfoList.size() > 0){
@@ -327,134 +326,95 @@ public class ConsumeService implements ApplicationListener<ContextRefreshedEvent
                                 }
                             }
                             yjxxsm.setLength(0);
-                        }
-                        /*else if (resCodeTldp.equals(resourceCode)) {   // =========== 铁路订票数据
-                            String ph = oriField.getString("TRAIN_TIC_NO");               // 票号
-                            String ccrXm = oriField.getString("NAME");                    // 乘车人姓名
-                            String ccrSfzh = oriField.getString("CRED_NUM");              // 乘车人身份证号
-                            String ccrSjh = StringUtils.isBlank(oriField.getString("CTCT_TEL"))? yjrySjh : oriField.getString("CTCT_TEL");// 乘车人电话
-                            String cc = oriField.getString("TRAIN_NO");                   // 车次
-                            String cxh = oriField.getString("COACH_NO");                  // 车厢号
-                            String zwh = oriField.getString("SEAT_NO");                   // 座位号
-                            String fzmc = oriField.getString("DEP_STAT_DESIG");           // 发站名称
-                            String dzmc = oriField.getString("ARR_STAT_DESIG");           // 到站名称
-                            String spsj = oriField.getString("TIC_DATE");                 // 售票时间
-                            String ccrq = oriField.getString("RIDING_DATE");              // 乘车日期
-                            String fcsj = oriField.getString("DEP_TIME");                 // 发车时间
-                            String ddsj = oriField.getString("ARR_TIME");                 // 到达时间
-                            String spfs = oriField.getString("TIC_METH_NAME");            // 售票方式
-                            String dpfs = oriField.getString("BOOTIC_METH");              // 订票方式
-                            String cpzt = oriField.getString("VEHTIC_STAT_NAME");         // 车票状态
-                            String xb = oriField.getString("TRAI_SEATYP_NAME");           // 席别
-                            String pj = oriField.getString("VEHTIC_PRIC");                // 票价
-                            String dprSfzh = oriField.getString("BOOK_PERS_CRED_NUM");    // 订票人身份证号
-                            String lxrXm = oriField.getString("CTCT_PERSON_NAME");        // 联系人姓名
-                            String lxrLxdh = oriField.getString("CTCT_PERSON_CTCT_TEL");  // 联系人联系电话
-                            String hcz = oriField.getString("TRASTA_NAME");               // 火车站
-                            String captureTimeTldp = TimeTool.timeStampToDateString(Long.valueOf(oriField.getString("CAPTURE_TIME")));
-                            yjxxsm.append("铁路订票 - 票号:");
-                            yjxxsm.append(ph);
-                            yjxxsm.append(",订票人身份证号:");
-                            yjxxsm.append(dprSfzh);
-                            yjxxsm.append(",车次:");
-                            yjxxsm.append(cc);
-                            yjxxsm.append(",售票时间:");
-                            yjxxsm.append(spsj);
-                            yjxxsm.append(",售票方式:");
-                            yjxxsm.append(spfs);
-                            yjxxsm.append(",订票方式:");
-                            yjxxsm.append(dpfs);
-                            yjxxsm.append(",发车时间:");
-                            yjxxsm.append(fcsj);
-                            yjxxsm.append(",到达时间:");
-                            yjxxsm.append(ddsj);
-                            yjxxsm.append(",发站名称:");
-                            yjxxsm.append(fzmc);
-                            yjxxsm.append(",到站名称:");
-                            yjxxsm.append(dzmc);
-                            yjxxsm.append(",乘车人姓名:");
-                            yjxxsm.append(ccrXm);
-                            yjxxsm.append(",乘车人身份证号:");
-                            yjxxsm.append(ccrSfzh);
-                            yjxxsm.append(",乘车人电话:");
-                            yjxxsm.append(ccrSjh);
-                            yjxxsm.append(",乘车日期:");
-                            yjxxsm.append(ccrq);
-                            yjxxsm.append(",车厢号:");
-                            yjxxsm.append(cxh);
-                            yjxxsm.append(",座位号:");
-                            yjxxsm.append(zwh);
-                            yjxxsm.append(",席别:");
-                            yjxxsm.append(xb);
-                            yjxxsm.append(",票价:");
-                            yjxxsm.append(pj);
-                            yjxxsm.append(",车票状态:");
-                            yjxxsm.append(cpzt);
-                            yjxxsm.append(",联系人姓名:");
-                            yjxxsm.append(lxrXm);
-                            yjxxsm.append(",联系人联系电话:");
-                            yjxxsm.append(lxrLxdh);
-                            yjxxsm.append(",火车站:");
-                            yjxxsm.append(hcz);
-                            warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, ccrXm, ccrSfzh, ccrSjh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, captureTimeTldp, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKey(zrdwbm), zrbmbm, CommonUtil.getConfValueByKey(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, null, null, currentTime, currentTime, null, null, null, null, null});
-                            yjxxsm.setLength(0);
-                        } */
-                        else if (resCodeMhdp.equals(resourceCode)) {   // =========== 民航订票数据
-                            String dzjlbh = oriField.getString("ORDSEAT_RECO_NO");             // 订座记录编号
-                            String dph = oriField.getString("BOOTIC_NO");                      // 订票号
-                            String lkzwm = oriField.getString("PASS_NAME");                    // 旅客中文名
-                            String zjhm = oriField.getString("CRED_NUM");                      // 旅客证件号码
-                            String lklxdh = oriField.getString("PASS_CTCT_TEL");               // 旅客联系电话
-                            String cyhkgs = oriField.getString("CARR_ORGA_AIRLINE_NAME");      // 承运航空公司
-                            String zrhkgs = oriField.getString("RESP_UNIT_AIRLINE_NAME");      // 责任航空公司
-                            String hbh = oriField.getString("FLINUM");                         // 航班号
-                            String qfjc = oriField.getString("FLY_INIT_NRT_AIRPORT_NAME");     // 起飞机场
-                            String qfzcs = oriField.getString("FLY_INIT_ADDR_CITY_NAME");      // 起飞站城市
-                            String ddjc = oriField.getString("ARR_AT_AIR_AIRPORT_NAME");       // 到达机场
-                            String ddzcs = oriField.getString("ARR_ADDR_CITY_NAME");           // 到达站城市
-                            String cfrq = oriField.getString("STAOFF_DATE");                   // 出发日期
-                            String cfsj = oriField.getString("STAOFF_TIME");                   // 出发时间
-                            String ddrq = oriField.getString("ARR_DATE");                      // 到达日期
-                            String ddsj = oriField.getString("ARR_TIME");                      // 到达时间
-                            String kpzt = oriField.getString("ELE_TIC_STAT_NAME");             // 客票状态
-                            String cw = oriField.getString("CHISHI_SEAT");                     // 舱位
-                            String dpsj = oriField.getString("BOOTIC_TIME");                   // 订票时间
-                            String captureTimeMhdp = TimeTool.timeStampToDateString(Long.valueOf(oriField.getString("CAPTURE_TIME")));
+                        } else if (resCodeMhdp.equals(resourceCode)) {   // =========== 民航订票数据
+                            // 订座记录编号
+                            String ordseatRecoNo = oriField.getString("ORDSEAT_RECO_NO");
+                            String dzjlbh = StringUtils.isNotBlank(ordseatRecoNo)? ordseatRecoNo : "暂无";
+                            // 旅客中文名
+                            String passName = oriField.getString("PASS_NAME");
+                            String lkzwm = StringUtils.isNotBlank(passName)? passName : "暂无";
+                            // 旅客证件号码
+                            String credNum = oriField.getString("CRED_NUM");
+                            String zjhm = StringUtils.isNotBlank(credNum)? credNum : "暂无";
+//                            String lklxdh = oriField.getString("PASS_CTCT_TEL");               // 旅客联系电话
+                            // 承运航空公司
+                            String carrOrgaAirlineName = oriField.getString("CARR_ORGA_AIRLINE_NAME");
+                            String cyhkgs = StringUtils.isNotBlank(carrOrgaAirlineName)? carrOrgaAirlineName : "暂无";
+                            // 责任航空公司
+                            String respUnitAirlineName = oriField.getString("RESP_UNIT_AIRLINE_NAME");
+                            String zrhkgs = StringUtils.isNotBlank(respUnitAirlineName)? respUnitAirlineName : "暂无";
+                            // 航班号
+                            String flinum = oriField.getString("FLINUM");
+                            String hbh = StringUtils.isNotBlank(flinum)? flinum : "暂无";
+                            // 起飞机场
+                            String flyInitNrtAirportName = oriField.getString("FLY_INIT_NRT_AIRPORT_NAME");
+                            String qfjcmc = StringUtils.isNotBlank(flyInitNrtAirportName)? flyInitNrtAirportName : "暂无";
+                            // 起飞机场代码
+                            String flyInitNrtAirportCode = oriField.getString("FLY_INIT_NRT_AIRPORT_CODE");
+                            String qfjcdm = StringUtils.isNotBlank(flyInitNrtAirportCode)? flyInitNrtAirportCode : "暂无";
+//                            String qfzcs = oriField.getString("FLY_INIT_ADDR_CITY_NAME");      // 起飞站城市
+                            // 到达机场
+                            String arrAtAirAirportName = oriField.getString("ARR_AT_AIR_AIRPORT_NAME");
+                            String ddjcmc = StringUtils.isNotBlank(arrAtAirAirportName)? arrAtAirAirportName : "暂无";
+                            // 到达机场代码
+                            String arrAtAirAirportCode = oriField.getString("ARR_AT_AIR_AIRPORT_CODE");
+                            String ddjcdm = StringUtils.isNotBlank(arrAtAirAirportCode)? arrAtAirAirportCode : "暂无";
+//                            String ddzcs = oriField.getString("ARR_ADDR_CITY_NAME");           // 到达站城市
+//                            String cfrq = oriField.getString("STAOFF_DATE");                   // 出发日期
+                            // 出发时间   ---样例:20200929061228
+                            String staoffTime = oriField.getString("STAOFF_TIME");
+                            String cfsj = StringUtils.isNotBlank(staoffTime)? TimeTool.timeStampToDateString(TimeTool.dateStringToTimeStamp3(staoffTime)) : "暂无";
+//                            String ddrq = oriField.getString("ARR_DATE");                      // 到达日期
+                            // 到达时间
+                            String arrTime = oriField.getString("ARR_TIME");
+                            String ddsj = StringUtils.isNotBlank(arrTime)? arrTime : "暂无";
+//                            String kpzt = oriField.getString("ELE_TIC_STAT_NAME");             // 客票状态
+//                            String cw = oriField.getString("CHISHI_SEAT");                     // 舱位
+//                            String dpsj = oriField.getString("BOOTIC_TIME");                   // 订票时间
+                            // 截获时间   ---样例:20200929061228
+                            String captureTime = oriField.getString("CAPTURE_TIME");
+                            String captureTimeMhdp = StringUtils.isNotBlank(captureTime)? TimeTool.timeStampToDateString(TimeTool.dateStringToTimeStamp3(captureTime)) : "暂无";
                             yjxxsm.append("民航订票 - 订座记录编号:");
                             yjxxsm.append(dzjlbh);
-                            yjxxsm.append(",订票号:");
-                            yjxxsm.append(dph);
-                            yjxxsm.append(",订票时间:");
-                            yjxxsm.append(dpsj);
                             yjxxsm.append(",旅客中文名:");
                             yjxxsm.append(lkzwm);
                             yjxxsm.append(",旅客证件号码:");
                             yjxxsm.append(zjhm);
-                            yjxxsm.append(",旅客联系电话:");
-                            yjxxsm.append(lklxdh);
                             yjxxsm.append(",承运航空公司:");
                             yjxxsm.append(cyhkgs);
                             yjxxsm.append(",责任航空公司:");
                             yjxxsm.append(zrhkgs);
                             yjxxsm.append(",航班号:");
                             yjxxsm.append(hbh);
-                            yjxxsm.append(",舱位:");
-                            yjxxsm.append(cw);
+                            yjxxsm.append(",起飞机场:");
+                            yjxxsm.append(qfjcmc);
                             yjxxsm.append(",出发时间:");
                             yjxxsm.append(cfsj);
+                            yjxxsm.append(",到达机场:");
+                            yjxxsm.append(ddjcmc);
                             yjxxsm.append(",到达时间:");
                             yjxxsm.append(ddsj);
-                            yjxxsm.append(",起飞机场:");
-                            yjxxsm.append(qfjc);
-                            yjxxsm.append(",起飞站城市:");
-                            yjxxsm.append(qfzcs);
-                            yjxxsm.append(",到达机场:");
-                            yjxxsm.append(ddjc);
-                            yjxxsm.append(",到达站城市:");
-                            yjxxsm.append(ddzcs);
-                            yjxxsm.append(",客票状态:");
-                            yjxxsm.append(kpzt);
-                            warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, lkzwm, zjhm, lklxdh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, captureTimeMhdp, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKey(zrdwbm), zrbmbm, CommonUtil.getConfValueByKey(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, null, null, currentTime, currentTime, null, null, null, null, null});
+                            for (Map<String, Object> modelInfoMap : modelInfoList) {
+                                String mxbh = (String) modelInfoMap.get("mxbh");
+                                if("DRYJ-WSLJ-MHDP".equals(mxbh)){   // 单人预警-外省来津-民航订票
+                                    if(StringUtils.isNotBlank(ddjcdm)){
+                                        // 业务需求:到达机场代码为TSN(中国-天津-天津滨海国际机场)
+                                        if("TSN".equals(ddjcdm.trim())){
+                                            warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, lkzwm, zjhm, yjrySjh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, captureTimeMhdp, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKey(zrdwbm), zrbmbm, CommonUtil.getConfValueByKey(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, null, null, currentTime, currentTime, null, null, null, null, ddjcmc});
+                                            break;
+                                        }
+                                    }
+                                } else if ("DRYJ-KSGJ-MHDP".equals(mxbh)) {   // 单人预警-跨省轨迹-民航订票
+                                    if(StringUtils.isNotBlank(qfjcdm) && StringUtils.isNotBlank(ddjcmc)){
+                                        String mddShi = (String) modelInfoMap.get("mdd_shi");
+                                        // 业务需求:起飞机场代码为TSN(中国-天津-天津滨海国际机场),到达机场处在当前任务所记录的目的地市境内
+                                        if("TSN".equals(qfjcdm.trim()) && ddjcmc.contains(mddShi)){
+                                            warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, lkzwm, zjhm, yjrySjh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, captureTimeMhdp, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKey(zrdwbm), zrbmbm, CommonUtil.getConfValueByKey(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, null, null, currentTime, currentTime, null, null, null, null, ddjcmc});
+                                            break;
+                                        }
+                                    }
+                                }
+                            }
                             yjxxsm.setLength(0);
                         } else if (resCodeJnryzs.equals(resourceCode)) {   // =========== 境内人员住宿数据
                             // 旅馆编号
@@ -524,10 +484,12 @@ public class ConsumeService implements ApplicationListener<ContextRefreshedEvent
                             yjxxsm.append(fjh);
                             for (Map<String, Object> modelInfoMap : modelInfoList) {
                                 String mxbh = (String) modelInfoMap.get("mxbh");
-                                if("DRYJ-BSJJ-LKZD".equals(mxbh)){   // 单人预警-本市进京-旅客住店
+                                /*if("DRYJ-BSJJ-LKZD".equals(mxbh)){   // 单人预警-本市进京-旅客住店
                                     // --- todo
                                     // 该需求不合理,待定
-                                } else if("DRYJ-BSMGQY-LKZD".equals(mxbh)){   // 单人预警-本市敏感区域-旅客住店
+                                }
+                                else*/
+                                if("DRYJ-BSMGQY-LKZD".equals(mxbh)){   // 单人预警-本市敏感区域-旅客住店
                                     JSONArray areaInfoList = JSON.parseArray(bkqyxx);
                                     for (Object obj : areaInfoList) {
                                         JSONObject ctrlAreaInfo = (JSONObject) obj;
@@ -566,7 +528,6 @@ public class ConsumeService implements ApplicationListener<ContextRefreshedEvent
                                             }
                                         }
                                     }
-
                                 }
                             }
                             yjxxsm.setLength(0);
@@ -773,7 +734,6 @@ public class ConsumeService implements ApplicationListener<ContextRefreshedEvent
                             // 终端串号简要情况
                             String zhdChaJyqk = oriField.getString("ZHD_CHA_JYQK");
                             String zdchjyqk = StringUtils.isNotBlank(zhdChaJyqk)? zhdChaJyqk : "暂无";
-
                             // 盘查时间   ---样例:20250329061228
                             String pacJdsj = oriField.getString("PAC_JDSJ");
                             String pcsj = StringUtils.isNotBlank(pacJdsj)? TimeTool.timeStampToDateString(TimeTool.dateStringToTimeStamp3(pacJdsj)) : "暂无";
@@ -878,24 +838,38 @@ public class ConsumeService implements ApplicationListener<ContextRefreshedEvent
                             yjxxsm.setLength(0);
                         } else if (resCodeZdjc.equals(resourceCode)) {   // =========== 站点检查(人员)
                             // 人员姓名
-                            String xm = oriField.getString("XM");
+                            String xmSrc = oriField.getString("XM");
+                            String xm = StringUtils.isNotBlank(xmSrc)? xmSrc : "暂无";
                             // 人员身份证号
-                            String sfzh = oriField.getString("GMSFHM");
+                            String gmsfhm = oriField.getString("GMSFHM");
+                            String sfzh = StringUtils.isNotBlank(gmsfhm)? gmsfhm : "暂无";
                             // 民族
-                            String mz = oriField.getString("MZMZWZ");
+                            String mzmzwz = oriField.getString("MZMZWZ");
+                            String mz = StringUtils.isNotBlank(mzmzwz)? mzmzwz : "暂无";
                             // 地址
-                            String dz = oriField.getString("DZMC");
-                            // 发证机关
-                            String fzjg = oriField.getString("FZJG_MC");
+                            String dzmc = oriField.getString("DZMC");
+                            String dz = StringUtils.isNotBlank(dzmc)? dzmc : "暂无";
+                            // 发证机关名称
+                            String fzjgMc = oriField.getString("FZJG_MC");
+                            String fzjg = StringUtils.isNotBlank(fzjgMc)? fzjgMc : "暂无";
                             // 证件有效起始日期
-                            String zjyxqsrq = oriField.getString("ZJYXQ_KS_RQ");
+                            String zjyxqKsRq = oriField.getString("ZJYXQ_KS_RQ");
+                            String zjyxqsrq = StringUtils.isNotBlank(zjyxqKsRq)? zjyxqKsRq : "暂无";
                             // 证件有效终止日期
-                            String zjyxzzrq = oriField.getString("ZJYXQ_JSH_RQ");
+                            String zjyxqJshRq = oriField.getString("ZJYXQ_JSH_RQ");
+                            String zjyxzzrq = StringUtils.isNotBlank(zjyxqJshRq)? zjyxqJshRq : "暂无";
                             // 警员编号
-                            String jybh = oriField.getString("JYU_BH");
+                            String jyuBh = oriField.getString("JYU_BH");
+                            String jybh = StringUtils.isNotBlank(jyuBh)? jyuBh : "暂无";
+                            // 人员照片地址
+                            String ryzpWz = oriField.getString("RYZP_WZ");
+                            String ryzpUrl = StringUtils.isNotBlank(ryzpWz)? ryzpWz : "暂无";
                             // 检查站名称
-                            String jczmc = oriField.getString("JICZ_MC");
-                            String jcsj = TimeTool.timeStampToDateString(Long.valueOf(oriField.getString("JIC_JDSJ")));   // 检查时间
+                            String jiczMc = oriField.getString("JICZ_MC");
+                            String jczmc = StringUtils.isNotBlank(jiczMc)? jiczMc : "暂无";
+                            // 检查时间   ---样例:20250329061228
+                            String jicJdsj = oriField.getString("JIC_JDSJ");
+                            String jcsj = StringUtils.isNotBlank(jicJdsj)? TimeTool.timeStampToDateString(TimeTool.dateStringToTimeStamp3(jicJdsj)) : "暂无";
                             String captureTimeZdjc = TimeTool.timeStampToDateString(Long.valueOf(oriField.getString("CAPTURE_TIME")));
                             yjxxsm.append("站点检查 - 人员姓名:");
                             yjxxsm.append(xm);
@@ -913,26 +887,55 @@ public class ConsumeService implements ApplicationListener<ContextRefreshedEvent
                             yjxxsm.append(zjyxqsrq);
                             yjxxsm.append(",证件有效终止日期:");
                             yjxxsm.append(zjyxzzrq);
+                            yjxxsm.append(",人员照片:");
+                            yjxxsm.append(ryzpUrl);
                             yjxxsm.append(",警员编号:");
                             yjxxsm.append(jybh);
                             yjxxsm.append(",检查站名称:");
                             yjxxsm.append(jczmc);
-                            warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, xm, sfzh, yjrySjh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, captureTimeZdjc, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKey(zrdwbm), zrbmbm, CommonUtil.getConfValueByKey(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, null, null, currentTime, currentTime, null, null, null, null, null});
+                            for (Map<String, Object> modelInfoMap : modelInfoList) {
+                                String mxbh = (String) modelInfoMap.get("mxbh");
+                                if("DRYJ-BSJJ-ZDJC".equals(mxbh)){   // 单人预警-本市进京-站点检查
+                                    // 暂时不做过滤处理
+                                    warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, xm, sfzh, yjrySjh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, captureTimeZdjc, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKey(zrdwbm), zrbmbm, CommonUtil.getConfValueByKey(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, null, null, currentTime, currentTime, null, null, null, null, jczmc});
+                                    break;
+                                }
+                            }
                             yjxxsm.setLength(0);
                         } else if (resCodeDzwl.equals(resourceCode)) {   // =========== 电子围栏(火车站)
-                            String yddh = oriField.getString("MOB");                         // 移动电话
-                            String imsi = oriField.getString("IMSI");                        // 国际移动用户识别码
-                            String imei = oriField.getString("IMEI");                        // 国际移动设备识别码
-                            String sjMac = oriField.getString("MOBPHO_MAC");                 // 手机MAC地址
-                            String yysmc = oriField.getString("SP_NAME");                    // 运营商名称
-                            String sbbh = oriField.getString("EQUIPMENT_NO");                // 设备编号
-                            String szdqbh = oriField.getString("IN_THE_AREA_NO");            // 所在地区编号
-                            String csbh = oriField.getString("COMP_NO");                     // 厂商编号
-                            String wllxmc = oriField.getString("NET_TYPE_NAME");             // 网络类型名称
-                            String pd = oriField.getString("FREPOI");                        // 频点
-                            String jzdqJd = oriField.getString("BASSTA_LON");                // 基站地球经度
-                            String jzdqWd = oriField.getString("BASSTA_LAT");                // 基站地球纬度
-                            String captureTimeDzwl = TimeTool.timeStampToDateString(Long.valueOf(oriField.getString("CAPTURE_TIME")));
+                            // 移动电话
+                            String mob = oriField.getString("MOB");
+                            String yddh = StringUtils.isNotBlank(mob)? mob : yjrySjh;
+                            // 国际移动用户识别码
+                            String imsiSrc = oriField.getString("IMSI");
+                            String imsi = StringUtils.isNotBlank(imsiSrc)? imsiSrc : "暂无";
+                            // 国际移动设备识别码
+                            String imeiSrc = oriField.getString("IMEI");
+                            String imei = StringUtils.isNotBlank(imeiSrc)? imeiSrc : "暂无";
+                            // 手机MAC地址
+                            String mobphoMac = oriField.getString("MOBPHO_MAC");
+                            String sjMac = StringUtils.isNotBlank(mobphoMac)? mobphoMac : "暂无";
+                            // 运营商名称
+//                            String spName = oriField.getString("SP_NAME");
+//                            String yysmc = StringUtils.isNotBlank(spName)? spName : "暂无";
+                            // 设备编号
+                            String equipmentNo = oriField.getString("EQUIPMENT_NO");
+                            String sbbh = StringUtils.isNotBlank(equipmentNo)? equipmentNo : "暂无";
+                            // 所在地区编号
+//                            String szdqbh = oriField.getString("IN_THE_AREA_NO");
+                            // 厂商编号
+//                            String csbh = oriField.getString("COMP_NO");
+                            // 网络类型名称
+//                            String wllxmc = oriField.getString("NET_TYPE_NAME");
+                            // 频点
+//                            String pd = oriField.getString("FREPOI");
+                            // 基站地球经度
+                            String jzdqJd = oriField.getString("BASSTA_LON");
+                            // 基站地球纬度
+                            String jzdqWd = oriField.getString("BASSTA_LAT");
+                            // 截获时间   ---样例:20250329061228
+                            String captureTime = oriField.getString("CAPTURE_TIME");
+                            String captureTimeDzwl = StringUtils.isNotBlank(captureTime)? TimeTool.timeStampToDateString(TimeTool.dateStringToTimeStamp3(captureTime)) : "暂无";
                             String addressName = null;
                             if(StringUtils.isNotBlank(jzdqWd) && StringUtils.isNotBlank(jzdqJd)){
                                 double[] jwdBD = GpsCoordinateUtils.calWGS84toBD09(Double.valueOf(jzdqWd), Double.valueOf(jzdqJd));
@@ -940,7 +943,7 @@ public class ConsumeService implements ApplicationListener<ContextRefreshedEvent
                                 JSONObject rspJSONObj = JSON.parseObject(rspStr);
                                 addressName = rspJSONObj.getString("fullAddress");
                             }
-                            yjxxsm.append("电子围栏(火车站) - 移动电话:");
+                            yjxxsm.append("火车站电围 - 移动电话:");
                             yjxxsm.append(yddh);
                             yjxxsm.append(",IMSI:");
                             yjxxsm.append(imsi);
@@ -948,34 +951,47 @@ public class ConsumeService implements ApplicationListener<ContextRefreshedEvent
                             yjxxsm.append(imei);
                             yjxxsm.append(",手机MAC地址:");
                             yjxxsm.append(sjMac);
-                            yjxxsm.append(",运营商名称:");
-                            yjxxsm.append(yysmc);
                             yjxxsm.append(",设备编号:");
                             yjxxsm.append(sbbh);
-                            yjxxsm.append(",所在地区编号:");
-                            yjxxsm.append(szdqbh);
-                            yjxxsm.append(",厂商编号:");
-                            yjxxsm.append(csbh);
-                            yjxxsm.append(",网络类型名称:");
-                            yjxxsm.append(wllxmc);
-                            yjxxsm.append(",频点:");
-                            yjxxsm.append(pd);
-                            // 只保留命中点位在火车站区域内的数据
-                            if(GeoUtils.isPointInCircle(Double.valueOf(jzdqWd), Double.valueOf(jzdqJd), Double.valueOf(centerPointLatHcz), Double.valueOf(centerPointLonHcz), Double.valueOf(radiusHcz))){
-                                warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, yjryXm, yjrySfzh, yddh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, captureTimeDzwl, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKey(zrdwbm), zrbmbm, CommonUtil.getConfValueByKey(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, jzdqJd, jzdqWd, currentTime, currentTime, null, null, null, "火车站", addressName});
+                            for (Map<String, Object> modelInfoMap : modelInfoList) {
+                                String mxbh = (String) modelInfoMap.get("mxbh");
+                                if("DRYJ-BSJJ-HCZDW".equals(mxbh)){   // 单人预警-本市进京-火车站电围
+                                    // 只保留命中点位在火车站区域内的数据
+                                    if(GeoUtils.isPointInCircle(Double.valueOf(jzdqWd), Double.valueOf(jzdqJd), Double.valueOf(centerPointLatHcz), Double.valueOf(centerPointLonHcz), Double.valueOf(radiusHcz))){
+                                        warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, yjryXm, yjrySfzh, yddh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, captureTimeDzwl, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKey(zrdwbm), zrbmbm, CommonUtil.getConfValueByKey(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, jzdqJd, jzdqWd, currentTime, currentTime, null, null, null, "火车站", addressName});
+                                        break;
+                                    }
+                                }
                             }
                             yjxxsm.setLength(0);
                         } else if (resCodeRlgz.equals(resourceCode)) {   // =========== 人脸感知(火车站)
-                            String zpjmc = oriField.getString("SNASHO_MACH_DESIG");             // 抓拍机名称
-                            String gjryXm = oriField.getString("ALARM_PERSON_NAME");            // 告警人员姓名
-                            String gjryZjhm = oriField.getString("CRED_NUM");                   // 证件号码
-                            String gjsj = oriField.getString("ALARM_TIME");                     // 告警时间
-                            String dzmc = oriField.getString("ADDR_NAME");                      // 地址名称
-                            String jd = oriField.getString("LON");                              // 经度
-                            String wd = oriField.getString("LAT");                              // 纬度
-                            String yjxsd = oriField.getString("EARALA_SIMILA");                 // 预警相似度
-                            String gjxxcljg = oriField.getString("ALARM_INFO_PROC_RESU");       // 告警信息处理结果
-                            String zprlwjlj = oriField.getString("SNASHO_PER_FACE_FILE_PATH");  // 抓拍人脸文件路径
+                            // 抓拍机编号
+                            String snashoMachNo = oriField.getString("SNASHO_MACH_NO");
+                            String zpjbh = StringUtils.isNotBlank(snashoMachNo)? snashoMachNo : "暂无";
+                            // 抓拍机名称
+                            String snashoMachDesig = oriField.getString("SNASHO_MACH_DESIG");
+                            String zpjmc = StringUtils.isNotBlank(snashoMachDesig)? snashoMachDesig : "暂无";
+                            // 告警人员姓名
+//                            String gjryXm = oriField.getString("ALARM_PERSON_NAME");
+                            // 证件号码
+                            String credNum = oriField.getString("CRED_NUM");
+                            String gjryZjhm = StringUtils.isNotBlank(credNum)? credNum : "暂无";
+                            // 告警时间   ---样例:20250329061228
+                            String alarmTime = oriField.getString("ALARM_TIME");
+                            String gjsj = StringUtils.isNotBlank(alarmTime)? TimeTool.timeStampToDateString(TimeTool.dateStringToTimeStamp3(alarmTime)) : "暂无";
+                            // 地址名称
+//                            String dzmc = oriField.getString("ADDR_NAME");
+                            // 预警相似度
+//                            String yjxsd = oriField.getString("EARALA_SIMILA");
+                            // 告警信息处理结果
+//                            String gjxxcljg = oriField.getString("ALARM_INFO_PROC_RESU");
+                            // 人脸图片文件路径
+                            String perFacePictureFilePath = oriField.getString("PER_FACE_PICTURE_FILE_PATH");
+                            String rltpwjlj = StringUtils.isNotBlank(perFacePictureFilePath)? perFacePictureFilePath : "暂无";
+                            // 经度
+                            String jd = oriField.getString("LON");
+                            // 纬度
+                            String wd = oriField.getString("LAT");
                             String addressName = null;
                             if(StringUtils.isNotBlank(wd) && StringUtils.isNotBlank(jd)){
                                 double[] jwdBD = GpsCoordinateUtils.calWGS84toBD09(Double.valueOf(wd), Double.valueOf(jd));
@@ -983,25 +999,70 @@ public class ConsumeService implements ApplicationListener<ContextRefreshedEvent
                                 JSONObject rspJSONObj = JSON.parseObject(rspStr);
                                 addressName = rspJSONObj.getString("fullAddress");
                             }
-                            yjxxsm.append("人脸感知(火车站) - 抓拍机名称:");
+                            yjxxsm.append("火车站人脸感知 - 抓拍机编号:");
+                            yjxxsm.append(zpjbh);
+                            yjxxsm.append(",抓拍机名称:");
                             yjxxsm.append(zpjmc);
-                            yjxxsm.append(",告警人员姓名:");
-                            yjxxsm.append(gjryXm);
                             yjxxsm.append(",告警人员证件号码:");
                             yjxxsm.append(gjryZjhm);
-                            yjxxsm.append(",地址名称:");
-                            yjxxsm.append(dzmc);
                             yjxxsm.append(",告警时间:");
                             yjxxsm.append(gjsj);
-                            yjxxsm.append(",预警相似度:");
-                            yjxxsm.append(yjxsd);
-                            yjxxsm.append(",告警信息处理结果:");
-                            yjxxsm.append(gjxxcljg);
-                            yjxxsm.append(",抓拍人脸文件路径:");
-                            yjxxsm.append(zprlwjlj);
-                            // 只保留命中点位在火车站区域内的数据
-                            if(GeoUtils.isPointInCircle(Double.valueOf(wd), Double.valueOf(jd), Double.valueOf(centerPointLatHcz), Double.valueOf(centerPointLonHcz), Double.valueOf(radiusHcz))){
-                                warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, gjryXm, gjryZjhm, yjrySjh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, gjsj, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKey(zrdwbm), zrbmbm, CommonUtil.getConfValueByKey(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, jd, wd, currentTime, currentTime, null, null, null, "火车站", addressName});
+                            yjxxsm.append(",人脸图片文件路径:");
+                            yjxxsm.append(rltpwjlj);
+                            for (Map<String, Object> modelInfoMap : modelInfoList) {
+                                String mxbh = (String) modelInfoMap.get("mxbh");
+                                if("DRYJ-BSJJ-HCZRLGZ".equals(mxbh)){   // 单人预警-本市进京-火车站人脸感知
+                                    // 只保留命中点位在火车站区域内的数据
+                                    if(GeoUtils.isPointInCircle(Double.valueOf(wd), Double.valueOf(jd), Double.valueOf(centerPointLatHcz), Double.valueOf(centerPointLonHcz), Double.valueOf(radiusHcz))){
+                                        warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, yjryXm, gjryZjhm, yjrySjh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, gjsj, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKey(zrdwbm), zrbmbm, CommonUtil.getConfValueByKey(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, jd, wd, currentTime, currentTime, null, null, null, "火车站", addressName});
+                                        break;
+                                    }
+                                }
+                            }
+                            yjxxsm.setLength(0);
+                        } else if (resCodeGmszy.equals(resourceCode)) {   // =========== 购买散装油
+                            // 抓拍机编号
+                            String snashoMachNo = oriField.getString("SNASHO_MACH_NO");
+                            String zpjbh = StringUtils.isNotBlank(snashoMachNo)? snashoMachNo : "暂无";
+                            // 抓拍机名称
+                            String snashoMachDesig = oriField.getString("SNASHO_MACH_DESIG");
+                            String zpjmc = StringUtils.isNotBlank(snashoMachDesig)? snashoMachDesig : "暂无";
+                            // 证件号码
+                            String credNum = oriField.getString("CRED_NUM");
+                            String gjryZjhm = StringUtils.isNotBlank(credNum)? credNum : "暂无";
+                            // 告警时间   ---样例:20250329061228
+                            String alarmTime = oriField.getString("ALARM_TIME");
+                            String gjsj = StringUtils.isNotBlank(alarmTime)? TimeTool.timeStampToDateString(TimeTool.dateStringToTimeStamp3(alarmTime)) : "暂无";
+                            // 人脸图片文件路径
+                            String perFacePictureFilePath = oriField.getString("PER_FACE_PICTURE_FILE_PATH");
+                            String rltpwjlj = StringUtils.isNotBlank(perFacePictureFilePath)? perFacePictureFilePath : "暂无";
+                            // 经度
+                            String jd = oriField.getString("LON");
+                            // 纬度
+                            String wd = oriField.getString("LAT");
+                            String addressName = null;
+                            if(StringUtils.isNotBlank(wd) && StringUtils.isNotBlank(jd)){
+                                double[] jwdBD = GpsCoordinateUtils.calWGS84toBD09(Double.valueOf(wd), Double.valueOf(jd));
+                                String rspStr = httpClient.sendGetRequst(addressQueryUrl.replace("x", String.valueOf(jwdBD[1])).replace("y", String.valueOf(jwdBD[0])), null);
+                                JSONObject rspJSONObj = JSON.parseObject(rspStr);
+                                addressName = rspJSONObj.getString("fullAddress");
+                            }
+                            yjxxsm.append("购买散装油 - 抓拍机编号:");
+                            yjxxsm.append(zpjbh);
+                            yjxxsm.append(",抓拍机名称:");
+                            yjxxsm.append(zpjmc);
+                            yjxxsm.append(",告警人员证件号码:");
+                            yjxxsm.append(gjryZjhm);
+                            yjxxsm.append(",告警时间:");
+                            yjxxsm.append(gjsj);
+                            yjxxsm.append(",人脸图片文件路径:");
+                            yjxxsm.append(rltpwjlj);
+                            for (Map<String, Object> modelInfoMap : modelInfoList) {
+                                String mxbh = (String) modelInfoMap.get("mxbh");
+                                if("DRYJ-FXXW-GMSZY".equals(mxbh)){   // 单人预警-风险行为-购买散装油
+                                    warningInfoList.add(new Object[]{rwbh, rwmc, rwlx, rwlxmc, rwdxlxmc, yjxxbh, yjryXm, gjryZjhm, yjrySjh, yjxxsm.toString(), yjzt, Constants.YJZT_WD, gjsj, zrjz, zrmjid, zrmjxm, zrmjjh, zrmjlxfs, zrdwbm, CommonUtil.getConfValueByKey(zrdwbm), zrbmbm, CommonUtil.getConfValueByKey(zrbmbm), sqrXm, sqrSfzh, sqrJh, sqrDwbm, sqrDwmc, yjryLb, yjryBq, gkjb, gkjbmc, resourceCode, jd, wd, currentTime, currentTime, null, null, null, "火车站", addressName});
+                                    break;
+                                }
                             }
                             yjxxsm.setLength(0);
                         }

+ 113 - 111
src/main/resources/application.properties

@@ -106,13 +106,15 @@ res.code.zdjc=01C1200002316
 res.code.dzwl=991C1356
 # \u4EBA\u8138\u611F\u77E5\uFF08\u706B\u8F66\u7AD9\uFF09
 res.code.rlgz=991C2304
+# \u8D2D\u4E70\u6563\u88C5\u6CB9
+res.code.gmszy=991C3201000512
 
 
 # \u706B\u8F66\u7AD9\uFF08\u5929\u6D25\u7AD9\uFF09\u5706\u5F62\u533A\u57DF\u5706\u5FC3\u70B9\u7ECF\u7EAC\u5EA6\uFF0884\u5750\u6807\u7CFB\uFF09
 centerPoint.lon.hcz=117.xxx
 centerPoint.lat.hcz=39.xxx
 # \u534A\u5F84\uFF0C\u5355\u4F4D\uFF1A\u7C73
-radius.hcz=300
+radius.hcz=500
 
 
 # \u540C\u884C\u7C7B\u6570\u636E\u8D44\u6E90\u6807\u8BC6\u7B26
@@ -192,121 +194,121 @@ JJYJ-TRZ-LG=01A1200002660
 
 
 # \u673A\u573A\u4EE3\u7801\u5B57\u5178
-PEK=\u9996\u90FD\u56FD\u9645\u673A\u573A
-NAY=\u5357\u82D1\u673A\u573A
-TSN=\u6EE8\u6D77\u56FD\u9645\u673A\u573A
-CDE=\u627F\u5FB7\u673A\u573A
-SJW=\u6B63\u5B9A\u56FD\u9645\u673A\u573A
-YCU=\u5173\u516C\u673A\u573A
-TYN=\u6B66\u5BBF\u673A\u573A
-CIH=\u738B\u6751\u673A\u573A
-WUT=\u5FFB\u5DDE\u673A\u573A
-DAT=\u6000\u4EC1\u673A\u573A
-LFQ=\u4E34\u6C7E\u673A\u573A
-CIF=\u571F\u57CE\u5B50\u673A\u573A
-HLH=\u4E4C\u5170\u6D69\u7279\u673A\u573A
-HET=\u767D\u5854\u56FD\u9645\u673A\u573A
-HLD=\u4E1C\u5C71\u673A\u573A
-XIL=\u9521\u6797\u6D69\u7279
+PEK=\u5317\u4EAC\u9996\u90FD\u56FD\u9645\u673A\u573A
+NAY=\u5317\u4EAC\u5357\u82D1\u673A\u573A
+TSN=\u5929\u6D25\u6EE8\u6D77\u56FD\u9645\u673A\u573A
+CDE=\u627F\u5FB7\u666E\u5B81\u673A\u573A
+SJW=\u77F3\u5BB6\u5E84\u6B63\u5B9A\u56FD\u9645\u673A\u573A
+YCU=\u8FD0\u57CE\u5173\u516C\u673A\u573A
+TYN=\u592A\u539F\u6B66\u5BBF\u56FD\u9645\u673A\u573A
+CIH=\u957F\u6CBB\u738B\u6751\u673A\u573A
+WUT=\u5FFB\u5DDE\u4E94\u53F0\u5C71\u673A\u573A
+DAT=\u5927\u540C\u6000\u4EC1\u673A\u573A
+LFQ=\u4E34\u6C7E\u5C27\u90FD\u673A\u573A
+CIF=\u8D64\u5CF0\u7389\u9F99\u673A\u573A
+HLH=\u4E4C\u5170\u6D69\u7279\u4E49\u52D2\u529B\u7279\u673A\u573A
+HET=\u547C\u548C\u6D69\u7279\u767D\u5854\u56FD\u9645\u673A\u573A
+HLD=\u547C\u4F26\u8D1D\u5C14\u6D77\u62C9\u5C14\u4E1C\u5C71\u673A\u573A
+XIL=\u9521\u6797\u6D69\u7279\u673A\u573A
 WUA=\u4E4C\u6D77\u673A\u573A
-NZH=\u897F\u90CA\u673A\u573A
-NZL=\u547C\u4F26\u8D1D\u5C14\u673A\u573A
-BAV=\u6D77\u5170\u6CE1\u673A\u573A
+NZH=\u6EE1\u6D32\u91CC\u897F\u90CA\u673A\u573A
+NZL=\u547C\u4F26\u8D1D\u5C14\u624E\u5170\u5C6F\u6210\u5409\u601D\u6C57\u673A\u573A
+BAV=\u5305\u5934\u673A\u573A
 CHG=\u671D\u9633\u673A\u573A
-DLC=\u5468\u6C34\u5B50\u56FD\u9645\u673A\u573A
-TNH=\u901A\u5316\u673A\u573A
-NBS=\u767D\u5C71\u673A\u573A
-CGQ=\u9F99\u5609\u56FD\u9645\u673A\u573A
-YSQ=\u677E\u539F\u673A\u573A
-HRB=\u592A\u5E73\u56FD\u9645\u673A\u573A
-NDG=\u4E09\u5BB6\u5B50\u673A\u573A
-DQA=\u8428\u5C14\u56FE\u673A\u573A
-MDG=\u6D77\u6D6A\u673A\u573A
-JXA=\u9E21\u897F\u673A\u573A
-PVG=\u6D66\u4E1C\u56FD\u9645\u673A\u573A
-SHA=\u8679\u6865\u56FD\u9645\u673A\u573A
-YTY=\u626C\u5DDE\u6CF0\u5DDE\u673A\u573A
-NKG=\u7984\u53E3\u56FD\u9645\u673A\u573A
-NTG=\u5174\u4E1C\u673A\u573A
-HSN=\u666E\u9640\u5C71\u673A\u573A
-HGH=\u8427\u5C71\u56FD\u9645\u673A\u573A
-WNZ=\u6C38\u5F3A\u673A\u573A
-YIW=\u4E49\u4E4C\u673A\u573A
-NGB=\u680E\u793E\u673A\u573A
-HFE=\u65B0\u6865\u56FD\u9645\u673A\u573A
-TXN=\u5C6F\u6EAA\u673A\u573A
-FUG=\u897F\u5173\u673A\u573A
-JUH=\u4E5D\u534E\u5C71\u673A\u573A
-FOC=\u957F\u4E50\u56FD\u9645\u673A\u573A
-JJN=\u664B\u6C5F\u673A\u573A
-XMN=\u9AD8\u5D0E\u56FD\u9645\u673A\u573A
-JDZ=\u7F57\u5BB6\u673A\u573A
-KOW=\u9EC4\u91D1\u673A\u573A
-KHN=\u660C\u5317\u673A\u573A
-YIC=\u5B9C\u6625\u673A\u573A
-YNT=\u83B1\u5C71\u673A\u573A
-LYI=\u4E34\u6C82\u673A\u573A
-TAO=\u6D41\u4EAD\u56FD\u9645\u673A\u573A
-DOY=\u6C38\u5B89\u673A\u573A
-WEH=\u5927\u6C34\u6CCA\u673A\u573A
-NNY=\u59DC\u8425\u673A\u573A
-CGO=\u65B0\u90D1\u56FD\u9645\u673A\u573A
-YIH=\u4E09\u5CE1\u673A\u573A
-ENH=\u8BB8\u5BB6\u576A\u673A\u573A
-SHS=\u6C99\u5E02\u673A\u573A
-XFN=\u5218\u96C6\u673A\u573A
-HPG=\u7EA2\u576A\u673A\u573A
-WDS=\u6B66\u5F53\u5C71\u673A\u573A
-WUH=\u5929\u6CB3\u56FD\u9645\u673A\u573A
-DYG=\u8377\u82B1\u673A\u573A
-CGD=\u6843\u82B1\u6E90\u673A\u573A
-CSX=\u9EC4\u82B1\u56FD\u9645\u673A\u573A
-HJJ=\u82B7\u6C5F\u673A\u573A
-HNY=\u8861\u9633\u673A\u573A
-SWA=\u63ED\u9633\u6F6E\u6C55\u673A\u573A
-CAN=\u767D\u4E91\u56FD\u9645\u673A\u573A
-SZX=\u5B9D\u5B89\u56FD\u9645\u673A\u573A
-ZHA=\u6E5B\u6C5F\u673A\u573A
-ZUH=\u4E09\u7076\u673A\u573A
-NNG=\u5434\u5729\u673A\u573A
-BHY=\u798F\u57CE\u673A\u573A
-AEB=\u7530\u9633\u673A\u573A
-KWL=\u4E24\u6C5F\u56FD\u9645\u673A\u573A
-LZH=\u767D\u83B2\u673A\u573A
-SYX=\u51E4\u51F0\u56FD\u9645\u673A\u573A
-HAK=\u7F8E\u5170\u56FD\u9645\u673A\u573A
-CKG=\u6C5F\u5317\u56FD\u9645\u673A\u573A
-WXN=\u4E07\u53BF\u673A\u573A
-NAO=\u90FD\u5C09\u575D\u673A\u573A
-MIG=\u5357\u90CA\u673A\u573A
-CTU=\u53CC\u6D41\u56FD\u9645\u673A\u573A
-XIC=\u9752\u5C71\u673A\u573A
-LZO=\u8431\u7530\u673A\u573A
-KWE=\u9F99\u6D1E\u5821\u673A\u573A
+DLC=\u5927\u8FDE\u5468\u6C34\u5B50\u56FD\u9645\u673A\u573A
+TNH=\u901A\u5316\u4E09\u6E90\u6D66\u673A\u573A
+NBS=\u767D\u5C71\u957F\u767D\u5C71\u673A\u573A
+CGQ=\u957F\u6625\u9F99\u5609\u56FD\u9645\u673A\u573A
+YSQ=\u677E\u539F\u67E5\u5E72\u6E56\u673A\u573A
+HRB=\u54C8\u5C14\u6EE8\u592A\u5E73\u56FD\u9645\u673A\u573A
+NDG=\u9F50\u9F50\u54C8\u5C14\u4E09\u5BB6\u5B50\u673A\u573A
+DQA=\u5927\u5E86\u8428\u5C14\u56FE\u673A\u573A
+MDG=\u7261\u4E39\u6C5F\u6D77\u6D6A\u56FD\u9645\u673A\u573A
+JXA=\u9E21\u897F\u5174\u51EF\u6E56\u673A\u573A
+PVG=\u4E0A\u6D77\u6D66\u4E1C\u56FD\u9645\u673A\u573A
+SHA=\u4E0A\u6D77\u8679\u6865\u56FD\u9645\u673A\u573A
+YTY=\u626C\u5DDE\u6CF0\u5DDE\u56FD\u9645\u673A\u573A
+NKG=\u5357\u4EAC\u7984\u53E3\u56FD\u9645\u673A\u573A
+NTG=\u5357\u901A\u5174\u4E1C\u56FD\u9645\u673A\u573A
+HSN=\u821F\u5C71\u666E\u9640\u5C71\u56FD\u9645\u673A\u573A
+HGH=\u676D\u5DDE\u8427\u5C71\u56FD\u9645\u673A\u573A
+WNZ=\u6E29\u5DDE\u9F99\u6E7E\u56FD\u9645\u673A\u573A
+YIW=\u91D1\u534E\u4E49\u4E4C\u673A\u573A
+NGB=\u5B81\u6CE2\u680E\u793E\u56FD\u9645\u673A\u573A
+HFE=\u5408\u80A5\u65B0\u6865\u56FD\u9645\u673A\u573A
+TXN=\u9EC4\u5C71\u5C6F\u6EAA\u56FD\u9645\u673A\u573A
+FUG=\u961C\u9633\u897F\u5173\u673A\u573A
+JUH=\u6C60\u5DDE\u4E5D\u534E\u5C71\u673A\u573A
+FOC=\u798F\u5DDE\u957F\u4E50\u56FD\u9645\u673A\u573A
+JJN=\u6CC9\u5DDE\u664B\u6C5F\u56FD\u9645\u673A\u573A
+XMN=\u53A6\u95E8\u9AD8\u5D0E\u56FD\u9645\u673A\u573A
+JDZ=\u666F\u5FB7\u9547\u7F57\u5BB6\u673A\u573A
+KOW=\u8D63\u5DDE\u9EC4\u91D1\u673A\u573A
+KHN=\u5357\u660C\u660C\u5317\u56FD\u9645\u673A\u573A
+YIC=\u5B9C\u6625\u660E\u6708\u5C71\u673A\u573A
+YNT=\u70DF\u53F0\u83B1\u5C71\u56FD\u9645\u673A\u573A
+LYI=\u4E34\u6C82\u542F\u9633\u56FD\u9645\u673A\u573A
+TAO=\u9752\u5C9B\u6D41\u4EAD\u56FD\u9645\u673A\u573A
+DOY=\u4E1C\u8425\u80DC\u5229\u673A\u573A
+WEH=\u5A01\u6D77\u5927\u6C34\u6CCA\u56FD\u9645\u673A\u573A
+NNY=\u5357\u9633\u59DC\u8425\u673A\u573A
+CGO=\u90D1\u5DDE\u65B0\u90D1\u56FD\u9645\u673A\u573A
+YIH=\u5B9C\u660C\u4E09\u5CE1\u56FD\u9645\u673A\u573A
+ENH=\u6069\u65BD\u8BB8\u5BB6\u576A\u56FD\u9645\u673A\u573A
+SHS=\u8346\u5DDE\u6C99\u5E02\u673A\u573A
+XFN=\u8944\u9633\u5218\u96C6\u673A\u573A
+HPG=\u795E\u519C\u67B6\u7EA2\u576A\u673A\u573A
+WDS=\u5341\u5830\u6B66\u5F53\u5C71\u673A\u573A
+WUH=\u6B66\u6C49\u5929\u6CB3\u56FD\u9645\u673A\u573A
+DYG=\u5F20\u5BB6\u754C\u8377\u82B1\u56FD\u9645\u673A\u573A
+CGD=\u5E38\u5FB7\u6843\u82B1\u6E90\u673A\u573A
+CSX=\u957F\u6C99\u9EC4\u82B1\u56FD\u9645\u673A\u573A
+HJJ=\u6000\u5316\u82B7\u6C5F\u673A\u573A
+HNY=\u8861\u9633\u5357\u5CB3\u673A\u573A
+SWA=\u63ED\u9633\u6F6E\u6C55\u56FD\u9645\u673A\u573A
+CAN=\u5E7F\u5DDE\u767D\u4E91\u56FD\u9645\u673A\u573A
+SZX=\u6DF1\u5733\u5B9D\u5B89\u56FD\u9645\u673A\u573A
+ZHA=\u6E5B\u6C5F\u5434\u5DDD\u56FD\u9645\u673A\u573A
+ZUH=\u73E0\u6D77\u91D1\u6E7E\u56FD\u9645\u673A\u573A
+NNG=\u5357\u5B81\u5434\u5729\u56FD\u9645\u673A\u573A
+BHY=\u5317\u6D77\u798F\u6210\u673A\u573A
+AEB=\u767E\u8272\u5DF4\u9A6C\u673A\u573A
+KWL=\u6842\u6797\u4E24\u6C5F\u56FD\u9645\u673A\u573A
+LZH=\u67F3\u5DDE\u767D\u83B2\u673A\u573A
+SYX=\u4E09\u4E9A\u51E4\u51F0\u56FD\u9645\u673A\u573A
+HAK=\u6D77\u53E3\u7F8E\u5170\u56FD\u9645\u673A\u573A
+CKG=\u91CD\u5E86\u6C5F\u5317\u56FD\u9645\u673A\u573A
+WXN=\u91CD\u5E86\u4E07\u5DDE\u4E94\u6865\u673A\u573A
+NAO=\u5357\u5145\u9AD8\u576A\u673A\u573A
+MIG=\u7EF5\u9633\u5357\u90CA\u673A\u573A
+CTU=\u6210\u90FD\u53CC\u6D41\u56FD\u9645\u673A\u573A
+XIC=\u51C9\u5C71\u897F\u660C\u9752\u5C71\u673A\u573A
+LZO=\u6CF8\u5DDE\u4E91\u9F99\u673A\u573A
+KWE=\u8D35\u9633\u9F99\u6D1E\u5821\u56FD\u9645\u673A\u573A
 WMT=\u9075\u4E49\u8305\u53F0\u673A\u573A
-TEN=\u5927\u5174\u673A\u573A
+TEN=\u94DC\u4EC1\u51E4\u51F0\u673A\u573A
 ZYI=\u9075\u4E49\u65B0\u821F\u673A\u573A
-LJG=\u4E3D\u6C5F\u673A\u573A
-LUM=\u8292\u5E02\u673A\u573A
-JHG=\u666F\u6D2A\u673A\u573A
-BSD=\u4FDD\u5C71\u673A\u573A
-LLV=\u9646\u826F\u673A\u573A
-KMG=\u957F\u6C34\u56FD\u9645\u673A\u573A
+LJG=\u4E3D\u6C5F\u4E09\u4E49\u56FD\u9645\u673A\u573A
+LUM=\u5FB7\u5B8F\u8292\u5E02\u56FD\u9645\u673A\u573A
+JHG=\u897F\u53CC\u7248\u7EB3\u666F\u6D2A\u560E\u6D12\u56FD\u9645\u673A\u573A
+BSD=\u4FDD\u5C71\u4E91\u745E\u673A\u573A
+LLV=\u66F2\u9756\u9646\u826F\u673A\u573A
+KMG=\u6606\u660E\u957F\u6C34\u56FD\u9645\u673A\u573A
 AKA=\u5B89\u5EB7\u4E94\u91CC\u94FA\u673A\u573A
-XIY=\u54B8\u9633\u56FD\u9645\u673A\u573A
-ENY=\u4E8C\u5341\u91CC\u94FA\u673A\u573A
-UYN=\u897F\u6C99\u673A\u573A
-IQN=\u897F\u5CF0\u9547\u673A\u573A
-THQ=\u5929\u6C34\u673A\u573A
-LHW=\u4E2D\u5DDD\u673A\u573A
-JGN=\u5609\u5CEA\u5173\u673A\u573A
-XNN=\u66F9\u5BB6\u5821\u673A\u573A
-GYU=\u5B81\u590F\u673A\u573A
-INC=\u6CB3\u4E1C\u673A\u573A
-HTN=\u548C\u7530\u673A\u573A
-URC=\u5730\u7A9D\u5821\u56FD\u9645\u673A\u573A
-YIN=\u4F0A\u5B81\u673A\u573A
-KRL=\u5E93\u5C14\u52D2\u673A\u573A
+XIY=\u897F\u5B89\u54B8\u9633\u56FD\u9645\u673A\u573A
+ENY=\u5EF6\u5B89\u4E8C\u5341\u91CC\u5821\u673A\u573A
+UYN=\u6986\u6797\u897F\u6C99\u673A\u573A
+IQN=\u5E86\u9633\u897F\u5CF0\u9547\u673A\u573A
+THQ=\u5929\u6C34\u9EA6\u79EF\u5C71\u673A\u573A
+LHW=\u5170\u5DDE\u4E2D\u5DDD\u56FD\u9645\u673A\u573A
+JGN=\u5609\u5CEA\u5173\u9152\u6CC9\u673A\u573A
+XNN=\u897F\u5B81\u66F9\u5BB6\u5821\u56FD\u9645\u673A\u573A
+GYU=\u5B81\u590F\u56FA\u539F\u516D\u76D8\u5C71\u673A\u573A
+INC=\u94F6\u5DDD\u6CB3\u4E1C\u56FD\u9645\u673A\u573A
+HTN=\u548C\u7530\u6606\u5188\u673A\u573A
+URC=\u4E4C\u9C81\u6728\u9F50\u5730\u7A9D\u5821\u56FD\u9645\u673A\u573A
+YIN=\u200C\u4F0A\u7281\u4F0A\u5B81\u56FD\u9645\u673A\u573A
+KRL=\u5E93\u5C14\u52D2\u68A8\u57CE\u673A\u573A
 
 
 # \u5BBE\u9986\u4EE3\u7801\u5B57\u5178