Selaa lähdekoodia

[修复]两江执法推送URL为本地

xuxiaodong 5 kuukautta sitten
vanhempi
commit
be16ae2628

+ 2 - 0
zfjg-api/zfjg-api-manage/src/main/java/com/zfjg/manage/api/dto/enforce/job/EnforceJobFireRoomDTO.java

@@ -13,4 +13,6 @@ public class EnforceJobFireRoomDTO {
     private String staticNoticeResult;
 
     private String enforceObjId;
+
+    private String jobId;
 }

+ 6 - 0
zfjg-modules/zfjg-manage/src/main/java/com/zfjg/manage/controller/api/ApiController.java

@@ -143,7 +143,13 @@ public class ApiController extends BaseController {
 
     @GetMapping("/fire/room/test")
     public void updateFireRoomTest() {
+        log.error("消控室查询测试");
+        log.info("消控室查询测试");
+        System.out.println("消控室查询测试");
         ljZfjgSyncDataService.updateFireRoom();
+        log.error("消控室查询测试完成");
+        log.info("消控室查询测试完成");
+        System.out.println("消控室查询测试完成");
     }
 
 }

+ 107 - 12
zfjg-modules/zfjg-manage/src/main/java/com/zfjg/manage/sync/remote/DefaultLjZfjgSyncDataService.java

@@ -1,14 +1,18 @@
 package com.zfjg.manage.sync.remote;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ReflectUtil;
 import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.zfjg.common.core.constant.CacheConstants;
 import com.zfjg.common.core.enums.JobTypeEnum;
 import com.zfjg.common.core.exception.ServiceException;
+import com.zfjg.common.core.utils.StringUtils;
 import com.zfjg.common.core.web.domain.AjaxResult;
 import com.zfjg.manage.api.domain.device.Device;
 import com.zfjg.manage.api.domain.enforce.job.EnforceJob;
@@ -23,6 +27,8 @@ import com.zfjg.manage.api.dto.enforce.job.EnforceJobFireRoomDTO;
 import com.zfjg.manage.api.sync.EnforceJobSyncReport;
 import com.zfjg.manage.api.sync.EnforceVideoSync;
 import com.zfjg.manage.config.Constant;
+import com.zfjg.manage.mapper.CommMapper;
+import com.zfjg.manage.service.UserRedisCacheService;
 import com.zfjg.manage.service.approve.IEnforceApproveTempleteService;
 import com.zfjg.manage.service.device.IDeviceService;
 import com.zfjg.manage.service.enforce.job.IEnforceJobReportService;
@@ -30,9 +36,13 @@ import com.zfjg.manage.service.enforce.job.IEnforceJobService;
 import com.zfjg.manage.service.enforce.obj.*;
 import com.zfjg.manage.service.enforce.video.IEnforceVideoService;
 import com.zfjg.manage.service.random.IRandomTaskNotifyService;
+import com.zfjg.manage.task.job.StartEventDto;
+import com.zfjg.manage.utils.GaoDeMapUtil;
+import com.zfjg.system.api.domain.SysDictData;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
@@ -41,6 +51,7 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
 
+import javax.annotation.Resource;
 import java.io.Serializable;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -56,6 +67,10 @@ public class DefaultLjZfjgSyncDataService implements ILjZfjgSyncDataService {
     private String LJ_ZFJD_BASE_URL;
     @Value("${data.sync.enabled}")
     private Boolean enabled;
+    @Value("${data.sync.fireRoomEnable}")
+    private Boolean fireRoomEnable;
+    @Resource
+    private CommMapper commMapper;
     private final RestTemplate restTemplate;
     private final IEnforceObjService enforceObjService;
     private final IEnforceObjServiceExtend enforceObjServiceExtend;
@@ -67,6 +82,7 @@ public class DefaultLjZfjgSyncDataService implements ILjZfjgSyncDataService {
     private final IRandomTaskNotifyService randomTaskNotifyService;
     private final IEnforceJobService enforceJobService;
     private final IEnforceJobReportService enforceJobReportService;
+    private UserRedisCacheService userRedisCacheService;
     private final IEnforceObjArchitectureService enforceObjArchitectureService;
 
     /**
@@ -304,32 +320,111 @@ public class DefaultLjZfjgSyncDataService implements ILjZfjgSyncDataService {
 
     @Override
     public void updateFireRoom() {
+        System.out.println("消控室接口");
+        System.out.println(enabled);
         if (!enabled) {
-            log.info("未开启消控室接口");
+            System.out.println("未开启消控室接口");
+            return;
+        }
+        if (!fireRoomEnable) {
+            System.out.println("未开启消控室执行计划");
             return;
         }
         List<EnforceJobFireRoomDTO> enforceJobFireRoomDTOS = enforceObjServiceExtend.enforceJobFireRoomList();
         if (enforceJobFireRoomDTOS.isEmpty()) {
-            log.info("未找到不合格的消控室");
+            System.out.println("未找到不合格的消控室");
             return;
         }
+        System.out.println("不合格的消控室" + enforceJobFireRoomDTOS);
+        Map<String, String> stringStringMap = enforceJobFireRoomDTOS.stream().collect(Collectors.toMap(EnforceJobFireRoomDTO::getEnforceObjId, EnforceJobFireRoomDTO::getJobId));
         List<String> ids = enforceJobFireRoomDTOS.stream().map(EnforceJobFireRoomDTO::getEnforceObjId).collect(Collectors.toList());
+        List<EnforceObj> enforceObjs = enforceObjService.listByIds(ids);
+        System.out.println("不合格的消控室执法对象" + enforceObjs);
+        for (EnforceObj enforceObj : enforceObjs) {
+            String eventCondition = "A11";
+            if (ObjectUtil.isNotEmpty(enforceObj.getPlaceType())) {
+                SysDictData dictDataCache = commMapper.selectDeptByQuery(CacheConstants.PLACE_TYPE, enforceObj.getPlaceType());
+                String dictLabel = dictDataCache.getDictLabel();
+                if ("生产、制造火灾危险性较大的烟草、汽车、冶金、造纸、纺织、电器、电子工业等中型以上企业、劳动密集型生产、加工企业".contains(dictLabel)) {
+                    eventCondition = "A01";
+                }
+                if (dictLabel.contains("学校")) {
+                    eventCondition = "A2";
+                }
+                if (dictLabel.contains("养老院") || dictLabel.contains("福利院")) {
+                    eventCondition = "A3";
+                }
+                if (dictLabel.contains("物业服务企业") || dictLabel.contains("高层居住建筑")) {
+                    eventCondition = "A4";
+                }
+                if (dictLabel.contains("客运车站") || dictLabel.contains("码头") || dictLabel.contains("民用机场")) {
+                    eventCondition = "A5";
+                }
+                if (dictLabel.contains("粮") || dictLabel.contains("棉") || dictLabel.contains("百货") || dictLabel.contains("仓库") || dictLabel.contains("堆场")) {
+                    eventCondition = "A6";
+                }
+                if ("宾馆(饭店)、托儿所、幼儿园、公共娱乐场所、公共图书馆、展览馆、博物馆、档案馆、医院、文物保护单位、旅游、宗教活动场所".contains(dictLabel)) {
+                    eventCondition = "A7";
+                }
+                if ("地下铁道、地下观光隧道交通隧道等地下公共建筑、体育场所、会堂、国家机关单位、区县级以下的(外资)银行、保险机构、其他公众聚集场所、高层公共建筑、重要的科研单位".contains(dictLabel)) {
+                    eventCondition = "A9";
+                }
+                if ("易燃易爆化学物品的生产充装、储存、供应、销售单位、发电厂(站)和电网经营企业、广播电台、电视台和邮政、通信枢纽".contains(dictLabel)) {
+                    eventCondition = "A10";
+                }
+            }
+            System.out.println(enforceObj.getEnforceObjName() + " 发送至发送数据到IRS交互应用不是两江新区走的情形为: " + eventCondition);
+            //发送数据到IRS交互应用
+            String address = Optional.of(enforceObj).map(EnforceObj::getEnforceObjAddress).orElse("");
+            if (!address.contains("两江新区")) {
+                System.out.println(enforceObj.getEnforceObjName() + " 发送至发送数据到IRS交互应用不是两江新区");
+                continue;
+            }
+            if (!stringStringMap.containsKey(enforceObj.getId())) {
+                System.out.println(enforceObj.getEnforceObjName() + " 发送至发送数据到IRS交互应用找不到ID");
+                continue;
+            }
+            String jobId = stringStringMap.get(enforceObj.getId());
+            EnforceJob enforceJob = enforceJobService.getById(jobId);
 
-        List<EnforceObjArchitecture> enforceObjArchitectures = enforceObjArchitectureService.list(new LambdaQueryWrapper<EnforceObjArchitecture>().in(EnforceObjArchitecture::getEnforceObjId, ids));
-        if (ObjectUtil.isEmpty(enforceObjArchitectures)) {
-            log.info("未找到消控室一件事儿建筑信息");
-            return;
-        }
+            JSONObject response = GaoDeMapUtil.geoEncode(enforceJob.getStartLongitude(), enforceJob.getStartLatitude());
+            String streetName = Optional.of(response).filter(it -> it.containsKey("regeocode"))
+                    .map(it -> it.getJSONObject("regeocode"))
+                    .filter(it -> it.containsKey("addressComponent"))
+                    .map(it -> it.getJSONObject("addressComponent"))
+                    .filter(it -> it.containsKey("township"))
+                    .map(it -> it.getString("township")).orElse("");
+            if (StringUtils.isEmpty(streetName)) {
+                System.out.println(enforceObj.getEnforceObjName() + "发送至发送数据到IRS交互应用找不到街道");
+                continue;
+            }
+
+            StartEventDto startEventDto = new StartEventDto();
+            startEventDto.setAreaName("两江新区");
+            startEventDto.setEventCondition(eventCondition);
+            startEventDto.setEventType(5);
+            startEventDto.setBelongCounty("500199");
+            startEventDto.setEventContent(enforceObj.getEnforceObjName() + "消控室执法检查");
+            startEventDto.setEventTitle(enforceObj.getEnforceObjName() + "消控室执法检查");
+            startEventDto.setProcessId(" ");
+            startEventDto.setSource("zfjg");
+            startEventDto.setAddress(enforceObj.getEnforceObjAddress());
+            startEventDto.setStreetName(streetName);
+            startEventDto.setPhoneNumber(enforceObj.getContactPhone());
+            startEventDto.setLon(enforceJob.getStartLongitude());
+            startEventDto.setLat(enforceJob.getStartLatitude());
 
-        List<String> remoteArchitectureIds = enforceObjArchitectures.stream().map(EnforceObjArchitecture::getArchitectureId).collect(Collectors.toList());
-        for (String remoteArchitectureId : remoteArchitectureIds) {
-            String response = HttpUtil.createPost("https://zzgl.cq119.gov.cn/api/fams-base/base/task/" + remoteArchitectureId + "/fireRoom?describe=消控室隐患上报")
+            Map<String, Object> param = BeanUtil.beanToMap(startEventDto, false, true);
+            log.error("单位发送至发送数据到IRS交互应用参数: {}", JSON.toJSONString(param));
+            String startEventString = HttpUtil.createPost("http://183.66.101.165:9408/api/event/start/v1")
+                    .body(JSON.toJSONString(param))
                     .execute()
                     .sync()
                     .body();
-            log.info("执行消控室建筑推送: {}", response);
-        }
+            System.out.println("单位发送至发送数据到IRS交互应用: " + startEventString);
+            log.error("单位发送至发送数据到IRS交互应用: {}", startEventString);
 
+        }
     }
 
     private HttpHeaders auth(HttpHeaders requestHeaders) {

+ 47 - 0
zfjg-modules/zfjg-manage/src/main/java/com/zfjg/manage/task/job/StartEventDto.java

@@ -0,0 +1,47 @@
+package com.zfjg.manage.task.job;
+
+import lombok.Data;
+
+/**
+ * @author xxd
+ * @version 1.0
+ */
+@Data
+public class StartEventDto {
+    private String eventContent;
+    //事件单标题
+    private String eventTitle;
+
+
+    private String eventCondition;
+
+    private String belongCounty;
+
+    //区域名称
+    private String areaName;
+
+    //区域ID
+    private String areaId;
+
+    private Integer eventType;
+
+    private String processId;
+
+    private String source;
+
+    private String streetCode;
+
+    private String streetName;
+
+    private String address;
+
+    private String phoneNumber;
+
+    private String lon;
+
+    private String lat;
+
+    private String remark;
+
+    private String eventLevel;
+}

+ 53 - 0
zfjg-modules/zfjg-manage/src/main/java/com/zfjg/manage/utils/GaoDeMapUtil.java

@@ -0,0 +1,53 @@
+package com.zfjg.manage.utils;
+
+import cn.hutool.http.HttpUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.zfjg.common.core.utils.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.HashMap;
+
+/**
+ * 高德地址解析
+ *
+ * @author xxd
+ * @version 1.0
+ */
+@Slf4j
+public class GaoDeMapUtil {
+    /**
+     * 逆地理编码
+     */
+    public static JSONObject geoEncode(String lng, String lat) {
+        try {
+            String url = "http://restapi.amap.com/v3/geocode/regeo";
+            HashMap<String, Object> param = new HashMap<>();
+            param.put("output", "json");
+            param.put("location", lng + "," + lat);
+            param.put("key", "466a66c443f59667591d8b6e6f92e883");
+            param.put("radius", "0");
+            param.put("extensions", "base");
+            String responseOrigin = HttpUtil.createGet(url)
+                    .form(param)
+                    .setConnectionTimeout(1000)
+                    .setReadTimeout(2000)
+                    .execute()
+                    .body();
+            log.info("获取到高德地址逆地址{},{}: {}", lng, lat, responseOrigin);
+            if (StringUtils.isBlank(responseOrigin)) {
+                return null;
+            }
+            return JSON.parseObject(responseOrigin);
+        } catch (Exception e) {
+            log.error("获取到高德地址逆地址报错: {}", e.getMessage());
+            return null;
+        }
+
+    }
+
+    public static void main(String[] args) {
+        JSONObject jsonObject = GaoDeMapUtil.geoEncode("106.5348693529704", "29.5518826582039");
+        System.out.println(jsonObject);
+    }
+}

+ 1 - 1
zfjg-modules/zfjg-manage/src/main/resources/mapper/enforce/obj/EnforceObjMapper.xml

@@ -280,7 +280,7 @@
     AND a.extract_num = 0
     </select>
     <select id="getEnforceJobFireRoom" resultType="com.zfjg.manage.api.dto.enforce.job.EnforceJobFireRoomDTO">
-        SELECT DISTINCT enforce_obj_id
+        SELECT DISTINCT enforce_obj_id,job_id
         FROM enforce_job_node_item
         WHERE TO_DAYS(NOW()) - TO_DAYS(update_time) <![CDATA[ <= ]]> 1
           AND enforce_obj_class = '消防控制室'