|
@@ -1,35 +1,48 @@
|
|
|
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;
|
|
|
import com.zfjg.manage.api.domain.enforce.job.EnforceJobReport;
|
|
|
import com.zfjg.manage.api.domain.enforce.obj.EnforceObj;
|
|
|
+import com.zfjg.manage.api.domain.enforce.obj.EnforceObjArchitecture;
|
|
|
import com.zfjg.manage.api.domain.enforce.obj.EnforceObjTag;
|
|
|
import com.zfjg.manage.api.domain.enforce.obj.Tag;
|
|
|
import com.zfjg.manage.api.domain.enforce.video.EnforceVideo;
|
|
|
import com.zfjg.manage.api.domain.random.RandomTaskNotify;
|
|
|
+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;
|
|
|
import com.zfjg.manage.service.enforce.job.IEnforceJobService;
|
|
|
-import com.zfjg.manage.service.enforce.obj.IEnforceObjService;
|
|
|
-import com.zfjg.manage.service.enforce.obj.IEnforceObjTagService;
|
|
|
-import com.zfjg.manage.service.enforce.obj.ITagService;
|
|
|
+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;
|
|
@@ -38,11 +51,10 @@ 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.Arrays;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
-import java.util.Optional;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Slf4j
|
|
|
@RequiredArgsConstructor
|
|
@@ -55,8 +67,13 @@ 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;
|
|
|
private final IDeviceService deviceService;
|
|
|
private final ITagService tagService;
|
|
|
private final IEnforceObjTagService enforceObjTagService;
|
|
@@ -65,6 +82,8 @@ public class DefaultLjZfjgSyncDataService implements ILjZfjgSyncDataService {
|
|
|
private final IRandomTaskNotifyService randomTaskNotifyService;
|
|
|
private final IEnforceJobService enforceJobService;
|
|
|
private final IEnforceJobReportService enforceJobReportService;
|
|
|
+ private UserRedisCacheService userRedisCacheService;
|
|
|
+ private final IEnforceObjArchitectureService enforceObjArchitectureService;
|
|
|
|
|
|
/**
|
|
|
* 更新执法设备
|
|
@@ -299,6 +318,114 @@ public class DefaultLjZfjgSyncDataService implements ILjZfjgSyncDataService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void updateFireRoom() {
|
|
|
+ System.out.println("消控室接口");
|
|
|
+ System.out.println(enabled);
|
|
|
+ if (!enabled) {
|
|
|
+ System.out.println("未开启消控室接口");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (!fireRoomEnable) {
|
|
|
+ System.out.println("未开启消控室执行计划");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<EnforceJobFireRoomDTO> enforceJobFireRoomDTOS = enforceObjServiceExtend.enforceJobFireRoomList();
|
|
|
+ if (enforceJobFireRoomDTOS.isEmpty()) {
|
|
|
+ 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);
|
|
|
+
|
|
|
+ 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());
|
|
|
+
|
|
|
+ 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();
|
|
|
+ System.out.println("单位发送至发送数据到IRS交互应用: " + startEventString);
|
|
|
+ log.error("单位发送至发送数据到IRS交互应用: {}", startEventString);
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
private HttpHeaders auth(HttpHeaders requestHeaders) {
|
|
|
requestHeaders.set("Content-type", "application/json; charset=utf-8");
|