瀏覽代碼

对接平台数据,更新部门id

Memory_LG 7 月之前
父節點
當前提交
45f34aa554

+ 2 - 0
src/main/java/com/sooka/sponest/lawenforcement/device/domain/SensorEventVo.java

@@ -39,4 +39,6 @@ public class SensorEventVo {
 
     private String picture;// 图片
 
+    private String deptType;
+
 }

+ 2 - 0
src/main/java/com/sooka/sponest/lawenforcement/device/domain/StaticEntity.java

@@ -6,6 +6,8 @@ public class StaticEntity {
     public static final String EVENT_TYPE_XL = "1301";
     public static final String EVENT_NAME = "开机未执法预警";
 
+    public static final String DEPT_TYPE = "sys_dept_type_33";
+
 
     public static String setContent(String enterpriseName, String storagetankName, String eventName, String threshold, String current) {
         // 定义模板

+ 2 - 1
src/main/java/com/sooka/sponest/lawenforcement/device/service/impl/DeviceServiceImpl.java

@@ -64,7 +64,8 @@ public class DeviceServiceImpl implements IDeviceService {
                         bo.getName(),//传感器名称
                         new Date(),//上报时间
                         null,//地址
-                        null//图片
+                        null,//图片
+                        StaticEntity.DEPT_TYPE
                 );
                 //发送事件
                 eventService.sendEvent(sensorEventVo);

+ 2 - 1
src/main/java/com/sooka/sponest/lawenforcement/record/domain/vo/LawenforcementPersonDetailVO.java

@@ -1,5 +1,6 @@
 package com.sooka.sponest.lawenforcement.record.domain.vo;
 
+import com.sooka.sponest.lawenforcement.base.domain.BaseBusinessEntity;
 import com.sooka.sponest.lawenforcement.record.setter.RecordIdSetter;
 import lombok.*;
 
@@ -12,7 +13,7 @@ import lombok.*;
 @AllArgsConstructor
 @NoArgsConstructor
 @ToString
-public class LawenforcementPersonDetailVO implements RecordIdSetter {
+public class LawenforcementPersonDetailVO extends BaseBusinessEntity implements RecordIdSetter {
 
     /**
      * 父id

+ 11 - 0
src/main/java/com/sooka/sponest/lawenforcement/record/mapper/LawenforcementRecordMapper.java

@@ -11,6 +11,7 @@ import com.sooka.sponest.lawenforcement.record.domain.vo.LawenforcementStandardD
 import com.sooka.sponest.lawenforcement.record.domain.vo.LawenforcementSubitemDetailVO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -129,4 +130,14 @@ public interface LawenforcementRecordMapper {
     void startRecord(LawenforcementBindDeviceBO record);
 
     List<LawenforcementRecord> getRecordList(LawenforcementRecord record);
+
+    Map<String, Object> getDeptIdByDeptName(LawenforcementPersonDetailVO personVO);
+
+    int selectJsonDataById(String id);
+
+    void updateJsonData(@Param("id") String id, @Param("jsonData") String jsonData, @Param("updateTime") Date updateTime);
+
+    void batchInsert(@Param("list") List<Map<String, Object>> list);
+
+    void updateRecord(LawenforcementRecordDetailVO remoteRecord);
 }

+ 108 - 29
src/main/java/com/sooka/sponest/lawenforcement/record/service/impl/LawenforcementRecordServiceImpl.java

@@ -5,10 +5,11 @@ import com.alibaba.fastjson.JSONObject;
 import com.ruoyi.common.core.utils.SpringUtils;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.uuid.IdUtils;
+import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.system.api.RemoteConfigService;
-import com.ruoyi.system.api.domain.SysUser;
-import com.ruoyi.system.api.model.LoginUser;
+import com.ruoyi.system.api.RemoteDeptService;
+import com.sooka.sponest.lawenforcement.base.service.impl.BaseServiceImpl;
 import com.sooka.sponest.lawenforcement.device.service.IDeviceService;
 import com.sooka.sponest.lawenforcement.person.domain.LawenforcementPerson;
 import com.sooka.sponest.lawenforcement.person.mapper.LawenforcementPersonMapper;
@@ -31,10 +32,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -45,7 +43,7 @@ import java.util.stream.Collectors;
  */
 @Service
 @Slf4j
-public class LawenforcementRecordServiceImpl implements ILawenforcementRecordService {
+public class LawenforcementRecordServiceImpl extends BaseServiceImpl implements ILawenforcementRecordService {
 
 
     @Autowired
@@ -69,6 +67,9 @@ public class LawenforcementRecordServiceImpl implements ILawenforcementRecordSer
      */
     @Override
     public int insertEnforceLawInfoByList(JSONArray records) {
+        //存储原始报文
+        insertJsonData(records);
+
         //创建转换结果集合
         List<LawenforcementRecordDetailVO> remoteRecordList = JSONArray.parseArray(records.toJSONString(), LawenforcementRecordDetailVO.class);
         //创建新增集合
@@ -87,6 +88,10 @@ public class LawenforcementRecordServiceImpl implements ILawenforcementRecordSer
                     recordMapper.removeStandardInfoById(remoteRecord.getId());
                     recordMapper.removeSubitemInfoById(remoteRecord.getId());
                     recordMapper.removePersonInfoById(remoteRecord.getId());
+                    recordMapper.updateRecord(remoteRecord);
+                } else {
+                    remoteRecord.setRecordStatus("lawenforcement_type_1");
+                    recordAddList.add(remoteRecord);
                 }
                 //将工单子表信息整理
                 JSONObject dataList = addRecordByRemote(remoteRecord);
@@ -94,15 +99,25 @@ public class LawenforcementRecordServiceImpl implements ILawenforcementRecordSer
                 standardAddList.addAll(JSONArray.parseArray(dataList.getJSONArray("standardAddList").toJSONString(), LawenforcementStandardDetailVO.class));
                 subitemAddList.addAll(JSONArray.parseArray(dataList.getJSONArray("subitemAddList").toJSONString(), LawenforcementSubitemDetailVO.class));
                 personAddList.addAll(JSONArray.parseArray(dataList.getJSONArray("personAddList").toJSONString(), LawenforcementPersonDetailVO.class));
-                recordAddList.add(remoteRecord);
+
 
             });
             //新增子表信息
-            recordMapper.insertStandardByList(standardAddList);
-            recordMapper.insertSubitemByList(subitemAddList);
-            recordMapper.insertPersonByList(personAddList);
+            if (StringUtils.isNotEmpty(standardAddList)) {
+                recordMapper.insertStandardByList(standardAddList);
+            }
+            if (StringUtils.isNotEmpty(subitemAddList)) {
+                recordMapper.insertSubitemByList(subitemAddList);
+            }
+            if (StringUtils.isNotEmpty(personAddList)) {
+                recordMapper.insertPersonByList(personAddList);
+            }
+            int i = 0;
             //执行批量写入操作
-            return recordMapper.insertRecordByList(recordAddList);
+            if (StringUtils.isNotEmpty(recordAddList)) {
+                i = recordMapper.insertRecordByList(recordAddList);
+            }
+            return i;
         }
         log.error("数据转换后为空");
         return 0;
@@ -110,6 +125,7 @@ public class LawenforcementRecordServiceImpl implements ILawenforcementRecordSer
 
     /**
      * 查询任务数据列表
+     *
      * @param lawenforcementRecord 任务数据
      * @return 任务数据
      */
@@ -120,6 +136,7 @@ public class LawenforcementRecordServiceImpl implements ILawenforcementRecordSer
 
     /**
      * 查询详情
+     *
      * @param id
      * @return
      */
@@ -142,6 +159,7 @@ public class LawenforcementRecordServiceImpl implements ILawenforcementRecordSer
     /**
      * 新增任务数据:平台创建
      * 暂定没有子级信息
+     *
      * @param record 任务数据
      * @return 结果
      */
@@ -160,23 +178,27 @@ public class LawenforcementRecordServiceImpl implements ILawenforcementRecordSer
 
     /**
      * 查询任务数据
+     *
      * @param id 任务数据主键
      * @return 任务数据
      */
     @Override
     public LawenforcementRecord selectLawenforcementRecordById(String id) {
         LawenforcementRecord record = recordMapper.selectLawenforcementRecordById(id);
-        List<LawenforcementUser> personList = record.getPersonList();
-        personList.forEach(person -> {
-            if ("1".equals(person.getIsMainPerson())) {
-                record.setMainPerson(person.getCertificateNumber());
-            }
-        });
+        if (null != record && null != record.getPersonList()) {
+            List<LawenforcementUser> personList = record.getPersonList();
+            personList.forEach(person -> {
+                if ("1".equals(person.getIsMainPerson())) {
+                    record.setMainPerson(person.getCertificateNumber());
+                }
+            });
+        }
         return record;
     }
 
     /**
      * 修改任务数据
+     *
      * @param lawenforcementRecord 任务数据
      * @return 结果
      */
@@ -187,16 +209,17 @@ public class LawenforcementRecordServiceImpl implements ILawenforcementRecordSer
 
     /**
      * 工单执行日志
+     *
      * @param record
      * @return
      */
     @Override
     public int addRecordLog(LawenforcementBindDeviceBO record) {
-        if(null == record.getUserId() || record.getUserId().isEmpty()){
+        if (null == record.getUserId() || record.getUserId().isEmpty()) {
             record.setUserId(SecurityUtils.getLoginUser().getSysUser().getUserId().toString());
         }
         Map<String, Object> userCodeByUserId = userMapper.getUserCodeByUserId(record.getUserId());
-        record.setPersonCode(MapUtils.getString(userCodeByUserId,"personCode"));
+        record.setPersonCode(MapUtils.getString(userCodeByUserId, "personCode"));
 
         //检查当前绑定设备的执法人是否为主办人
         Map<String, Object> isMainPerson = recordMapper.getIsMainPerson(record);
@@ -207,7 +230,7 @@ public class LawenforcementRecordServiceImpl implements ILawenforcementRecordSer
         //将工单执行记录,写入到日志表中:数据id、任务id、执法人编号、设备编号、开始时间
         recordMapper.addRecordLog(lawenforcementRecordLog);
         //判断是否为主办人,如果是主办人则开始工单
-        if("1".equals(MapUtils.getString(isMainPerson,"mainPerson"))){
+        if ("1".equals(MapUtils.getString(isMainPerson, "mainPerson"))) {
             recordMapper.startRecord(record);
             //绑定设备后关闭定时任务
             deviceService.cancelTask(lawenforcementRecordLog.getDeviceId());
@@ -246,6 +269,7 @@ public class LawenforcementRecordServiceImpl implements ILawenforcementRecordSer
 
     /**
      * 工单填报
+     *
      * @param bo
      * @return
      */
@@ -261,6 +285,7 @@ public class LawenforcementRecordServiceImpl implements ILawenforcementRecordSer
 
     /**
      * 批量删除任务数据
+     *
      * @param ids 需要删除的任务数据主键
      * @return 结果
      */
@@ -277,15 +302,15 @@ public class LawenforcementRecordServiceImpl implements ILawenforcementRecordSer
      */
     @Override
     public int updateRecordLogEndTime(LawenforcementBindDeviceBO record) {
-        if(null == record.getUserId() || record.getUserId().isEmpty()){
+        if (null == record.getUserId() || record.getUserId().isEmpty()) {
             record.setUserId(SecurityUtils.getLoginUser().getSysUser().getUserId().toString());
         }
         Map<String, Object> userCodeByUserId = userMapper.getUserCodeByUserId(record.getUserId());
-        record.setPersonCode(MapUtils.getString(userCodeByUserId,"personCode"));
+        record.setPersonCode(MapUtils.getString(userCodeByUserId, "personCode"));
 
         //检查当前绑定设备的执法人是否为主办人
         Map<String, Object> isMainPerson = recordMapper.getIsMainPerson(record);
-        if("1".equals(MapUtils.getString(isMainPerson,"mainPerson"))){
+        if ("1".equals(MapUtils.getString(isMainPerson, "mainPerson"))) {
             //设置任务完成状态
             recordMapper.updateRecordStatus(record);
         }
@@ -294,7 +319,7 @@ public class LawenforcementRecordServiceImpl implements ILawenforcementRecordSer
         int i = recordMapper.updateRecordLogEndTime(record);
 
         Boolean isOpen = Boolean.valueOf(SpringUtils.getBean(RemoteConfigService.class).remotegetConfigKey("lawenforcement_open").getData());
-        if(isOpen){
+        if (isOpen) {
             //从正在执行任务的设备集合中移除信息
             deviceService.removeOpenedDevice(record.getDeviceId());
         }
@@ -303,7 +328,7 @@ public class LawenforcementRecordServiceImpl implements ILawenforcementRecordSer
 
     @Override
     public List<LawenforcementRecord> getRecordList(LawenforcementRecord record) {
-        if(null == record.getCreatorId() || record.getCreatorId().isEmpty()){
+        if (null == record.getCreatorId() || record.getCreatorId().isEmpty()) {
             record.setCreatorId(SecurityUtils.getLoginUser().getSysUser().getUserId().toString());
         }
 
@@ -343,6 +368,7 @@ public class LawenforcementRecordServiceImpl implements ILawenforcementRecordSer
         List<LawenforcementPersonDetailVO> persons = record.getPersons();
         if (StringUtils.isNotEmpty(persons)) {
             setRecordIdToItems(record.getId(), persons);
+            setDeptId(persons);
             log.info("放入persons =》 {}", persons);
             personAddList.addAll(persons);
         }
@@ -362,13 +388,66 @@ public class LawenforcementRecordServiceImpl implements ILawenforcementRecordSer
      * @param standards
      */
     private void setSubItemId(String subItemId, List<LawenforcementStandardDetailVO> standards) {
-        standards.forEach(standard -> {
-            standard.setSubitemId(subItemId);
-        });
+        standards.forEach(standard -> standard.setSubitemId(subItemId));
     }
 
     // 对工单子级设置父id
     private <T extends RecordIdSetter> void setRecordIdToItems(String recordId, List<T> items) {
         items.forEach(item -> item.setRecordId(recordId));
     }
+
+    private void setDeptId(List<LawenforcementPersonDetailVO> persons) {
+        //获取persons中的deptName放入到deptNames中
+        Set<String> deptNameSet = new HashSet<>();
+        for (LawenforcementPersonDetailVO person : persons) {
+            deptNameSet.add(person.getDeptName());
+        }
+//        deptNameSet.add("四平市");
+        String[] deptNames = deptNameSet.toArray(new String[0]);
+
+        //根据部门名称查询部门id
+        AjaxResult ajaxResult = SpringUtils.getBean(RemoteDeptService.class).selectDeptListByDeptNames(deptNames);
+        //取出部门集合
+        List<Map<String, Object>> deptList = (List<Map<String, Object>>) ajaxResult.get("data");
+        //如果部门集合不为空,则转换为key-value    部门名称-部门id
+        if (StringUtils.isNotEmpty(deptList)) {
+            HashMap<String, Object> deptMap = new HashMap<>();
+            deptList.forEach(dept -> {
+                deptMap.put(MapUtils.getString(dept, "deptName"), MapUtils.getString(dept, "deptId"));
+            });
+
+            //设置部门id,如果deptMap不存在key,则设置deptId为null
+            persons.forEach(person -> {
+                person.setDeptId(deptMap.containsKey(person.getDeptName()) ? MapUtils.getString(deptMap, person.getDeptName()) : null);
+            });
+
+        }
+    }
+
+
+    private void insertJsonData(JSONArray array) {
+        List<Map<String, Object>> listToInsert = new ArrayList<>();
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
+        for (int i = 0; i < array.size(); i++) {
+            JSONObject jsonObject = array.getJSONObject(i);
+            String id = jsonObject.getString("id");
+            int count = recordMapper.selectJsonDataById(id);
+            if (count > 0) {
+                //更新
+                recordMapper.updateJsonData(id, jsonObject.toString(), new Date());
+            } else {
+                // id 不存在,放入 List<Map>
+                Map<String, Object> map = new HashMap<>();
+                map.put("id", id);
+                map.put("jsonData", jsonObject.toString());
+                map.put("createTime", new Date());
+
+                listToInsert.add(map);
+            }
+        }
+
+        if (StringUtils.isNotEmpty(listToInsert)) {
+            recordMapper.batchInsert(listToInsert);
+        }
+    }
 }

+ 93 - 4
src/main/resources/mapper/lawenforcement/LawenforcementRecordMapper.xml

@@ -253,11 +253,25 @@
     </insert>
 
     <insert id="insertRecordByList" parameterType="list">
-        insert into lawenforcement_person
-        (id, person_id, random_id, person_name, person_code, person_phone, dept_id, dept_name, person_type, main_person, remark, record_id )
+        insert into lawenforcement_record
+        (id, job_type, creator_id, creator_name, dept_id, dept_name, area_id, job_name,
+        check_type, check_object_type, check_object_id,
+        check_object_code, check_object_name, check_object_phone, check_start_time,
+        check_end_time, subitem_count, remark, verify, unable_verify_reason, scan_id, scan_name,
+        scan_time, verify_people_id, verify_people_name, verify_time, evaluation,
+        evaluation_content, evaluation_time, result, result_time, result_person_id,
+        status, create_time, create_by, is_last, job_id,
+        last_job_type, source, create_method, is_cross_dept,device_id,device_name,record_status)
         values
-        <foreach collection="list" item="person" open="(" separator="),(" close=")">
-            #{person.id}, #{person.personId}, #{person.randomId}, #{person.personName}, #{person.personCode}, #{person.personPhone}, #{person.deptId}, #{person.deptName}, #{person.personType}, #{person.mainPerson}, #{person.remark}, #{person.recordId}
+        <foreach collection="list" item="record" open="(" separator="),(" close=")">
+            #{record.id}, #{record.jobType}, #{record.creatorId}, #{record.creatorName}, #{record.deptId}, #{record.deptName}, #{record.areaId}, #{record.jobName},
+            #{record.checkType}, #{record.checkObjectType}, #{record.checkObjectId},
+            #{record.checkObjectCode}, #{record.checkObjectName}, #{record.checkObjectPhone}, #{record.checkStartTime},
+            #{record.checkEndTime}, #{record.subitemCount}, #{record.remark}, #{record.verify}, #{record.unableVerifyReason}, #{record.scanId}, #{record.scanName},
+            #{record.scanTime}, #{record.verifyPeopleId}, #{record.verifyPeopleName}, #{record.verifyTime}, #{record.evaluation},
+            #{record.evaluationContent}, #{record.evaluationTime}, #{record.result}, #{record.resultTime}, #{record.resultPersonId},
+            #{record.status}, #{record.createTime}, #{record.createBy}, #{record.isLast}, #{record.jobId},
+            #{record.lastJobType}, #{record.source}, #{record.createMethod}, #{record.isCrossDept}, #{record.deviceId}, #{record.deviceName}, #{record.recordStatus}
         </foreach>
     </insert>
 
@@ -563,6 +577,12 @@
 
     </select>
 
+    <select id="getDeptIdByDeptName" parameterType="LawenforcementPersonDetailVO" resultType="map">
+        select dept_id as deptId
+        from ${database_system}.sys_dept
+        where dept_name = #{deptName}
+    </select>
+
     <update id="updateLawenforcementRecord" parameterType="LawenforcementRecord">
         update lawenforcement_record
         <trim prefix="SET" suffixOverrides=",">
@@ -613,4 +633,73 @@
         where id = #{id}
     </update>
 
+    <select id="selectJsonDataById" parameterType="string" resultType="int">
+        select count(*) from lawenforcement_json_data where id = #{id}
+    </select>
+
+    <update id="updateJsonData">
+        update lawenforcement_json_data set json_data = #{jsonData}, update_time = #{updateTime}
+        where id = #{id}
+    </update>
+
+    <insert id="batchInsert" parameterType="list">
+        insert into lawenforcement_json_data
+        (id, json_data, create_time)
+        values
+        <foreach collection="list" open="(" separator="),(" close=")" item="item">
+            #{item.id},
+            #{item.jsonData},
+            #{item.createTime}
+        </foreach>
+    </insert>
+
+    <update id="updateRecord" parameterType="LawenforcementRecordDetailVO">
+        update lawenforcement_record
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="jobType != null">job_type = #{jobType},</if>
+            <if test="creatorId != null">creator_id = #{creatorId},</if>
+            <if test="creatorName != null">creator_name = #{creatorName},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="deptName != null">dept_name = #{deptName},</if>
+            <if test="areaId != null">area_id = #{areaId},</if>
+            <if test="jobName != null">job_name = #{jobName},</if>
+            <if test="checkType != null">check_type = #{checkType},</if>
+            <if test="checkObjectType != null">check_object_type = #{checkObjectType},</if>
+            <if test="checkObjectId != null">check_object_id = #{checkObjectId},</if>
+            <if test="checkObjectCode != null">check_object_code = #{checkObjectCode},</if>
+            <if test="checkObjectName != null">check_object_name = #{checkObjectName},</if>
+            <if test="checkObjectPhone != null">check_object_phone = #{checkObjectPhone},</if>
+            <if test="checkStartTime != null">check_start_time = #{checkStartTime},</if>
+            <if test="checkEndTime != null">check_end_time = #{checkEndTime},</if>
+            <if test="subitemCount != null">subitem_count = #{subitemCount},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="verify != null">verify = #{verify},</if>
+            <if test="unableVerifyReason != null">unable_verify_reason = #{unableVerifyReason},</if>
+            <if test="scanId != null">scan_id = #{scanId},</if>
+            <if test="scanName != null">scan_name = #{scanName},</if>
+            <if test="scanTime != null">scan_time = #{scanTime},</if>
+            <if test="verifyPeopleId != null">verify_people_id = #{verifyPeopleId},</if>
+            <if test="verifyPeopleName != null">verify_people_name = #{verifyPeopleName},</if>
+            <if test="verifyTime != null">verify_time = #{verifyTime},</if>
+            <if test="evaluation != null">evaluation = #{evaluation},</if>
+            <if test="evaluationContent != null">evaluation_content = #{evaluationContent},</if>
+            <if test="evaluationTime != null">evaluation_time = #{evaluationTime},</if>
+            <if test="result != null">result = #{result},</if>
+            <if test="resultTime != null">result_time = #{resultTime},</if>
+            <if test="resultPersonId != null">result_person_id = #{resultPersonId},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="isLast != null">is_last = #{isLast},</if>
+            <if test="jobId != null">job_id = #{jobId},</if>
+            <if test="lastJobType != null">last_job_type = #{lastJobType},</if>
+            <if test="source != null">source = #{source},</if>
+            <if test="createMethod != null">create_method = #{createMethod},</if>
+            <if test="isCrossDept != null">is_cross_dept = #{isCrossDept},</if>
+            <if test="deviceId != null">device_id = #{deviceId},</if>
+            <if test="deviceName != null">device_name = #{deviceName},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
 </mapper>