浏览代码

修改执法报文处理逻辑,假删除的数据去除.只保留有效数据.

Memory_LG 6 月之前
父节点
当前提交
bd4c8cc1cb

+ 88 - 54
src/main/java/com/sooka/sponest/lawenforcement/record/controller/TaskHandler.java

@@ -70,59 +70,78 @@ public class TaskHandler {
 
         //存放需要处理的数据的id集合
         List<String> ids = new ArrayList<>();
+        List<String> deleteRecordIds = new ArrayList<>();
         Map<String, LawenforcementRecordDetailVO> jsonMessage = new HashMap<>();
         jsonArray.forEach(map -> {
-            log.info("=====>{}", MapUtils.getString(map, "id"));
-            ids.add(MapUtils.getString(map, "id"));
+            //将报文转换为实体类
             JSONObject parse = JSONObject.parseObject(map.get("jsonData").toString());
             LawenforcementRecordDetailVO javaObject = JSON.toJavaObject(parse, LawenforcementRecordDetailVO.class);
-            jsonMessage.put(MapUtils.getString(map, "id"), javaObject);
-        });
 
-        //根据id获取存在的数据  list<LawenforcementRecordDetailVO>
-        List<Map<String, String>> list = recordService.getExistRecord(ids);
-        //需要删除子表的工单id集合
-        List<String> deleteIds = new ArrayList<>();
-
-        List<LawenforcementStandardDetailVO> standardAddList = new ArrayList<>();
-        List<LawenforcementSubitemDetailVO> subitemAddList = new ArrayList<>();
-        List<LawenforcementPersonDetailVO> personAddList = new ArrayList<>();
-        List<LawenforcementRecordDetailVO> recordAddList = new ArrayList<>();
-
-        list.forEach(record -> {
-            String id = MapUtils.getString(record, "id");
-            LawenforcementRecordDetailVO lawenforcementRecordDetailVO = jsonMessage.get(id);
-            deleteIds.add(id);
-            //存储数据到list,等待批量新增
-            addRecordByRemote(lawenforcementRecordDetailVO, standardAddList, subitemAddList, personAddList);
-            //更新工单主表
-            recordService.updateRecord(lawenforcementRecordDetailVO);
-            //移除已经操作的记录
-            jsonMessage.remove(id);
+            //将报文中工单是加删除的过滤掉, 不做处理
+            if("0".equals(javaObject.getIsDelete())){
+                ids.add(MapUtils.getString(map, "id"));
+                jsonMessage.put(MapUtils.getString(map, "id"), javaObject);
+            }else{
+                deleteRecordIds.add(MapUtils.getString(map, "id"));
+            }
         });
 
-        //处理需要新增的工单集合
-        jsonMessage.keySet().forEach(id -> {
-            //取出报文数据
-            LawenforcementRecordDetailVO message = jsonMessage.get(id);
+        if(StringUtils.isNotEmpty(deleteRecordIds)){
+            //删除更新后数据为加删除的工单表以及子表
+            recordService.deleteSSPToList(deleteRecordIds, true);
+        }
 
-            //判断报文中工单状态,如果为3设置为完成
-            if (StringUtils.isNotEmpty(message.getStatus()) && "3".equals(message.getStatus())) {
-                message.setRecordStatus("lawenforcement_type_2");
-            } else {
-                message.setRecordStatus("lawenforcement_type_1");
-            }
+        if(StringUtils.isNotEmpty(ids)){
+            //根据id获取存在的数据  list<LawenforcementRecordDetailVO>
+            List<Map<String, String>> list = recordService.getExistRecord(ids);
+            //需要删除子表的工单id集合
+            List<String> deleteIds = new ArrayList<>();
+
+            List<LawenforcementStandardDetailVO> standardAddList = new ArrayList<>();
+            List<LawenforcementSubitemDetailVO> subitemAddList = new ArrayList<>();
+            List<LawenforcementPersonDetailVO> personAddList = new ArrayList<>();
+            List<LawenforcementRecordDetailVO> recordAddList = new ArrayList<>();
+
+            list.forEach(record -> {
+                //取出业务表中存在的工单id
+                String id = MapUtils.getString(record, "id");
+                //获取存在的业务对象
+                LawenforcementRecordDetailVO lawenforcementRecordDetailVO = jsonMessage.get(id);
+                //放入需要删除子表的工单id
+                deleteIds.add(id);
+                //存储数据到list,等待批量新增
+                addRecordByRemote(lawenforcementRecordDetailVO, standardAddList, subitemAddList, personAddList);
+                //更新工单主表
+                recordService.updateRecord(lawenforcementRecordDetailVO);
+                //移除已经操作的记录
+                jsonMessage.remove(id);
+            });
 
-            //存储新增子项数据到list,等待批量新增
-            addRecordByRemote(message, standardAddList, subitemAddList, personAddList);
-            //将工单放入到集合
-            recordAddList.add(message);
-        });
+            //处理需要新增的工单集合
+            jsonMessage.keySet().forEach(id -> {
+                //取出报文数据
+                LawenforcementRecordDetailVO message = jsonMessage.get(id);
+
+                //判断报文中工单状态,如果为3设置为完成
+                if (StringUtils.isNotEmpty(message.getStatus()) && "3".equals(message.getStatus())) {
+                    message.setRecordStatus("lawenforcement_type_2");
+                } else {
+                    message.setRecordStatus("lawenforcement_type_1");
+                }
+
+                //存储新增子项数据到list,等待批量新增
+                addRecordByRemote(message, standardAddList, subitemAddList, personAddList);
+                //将工单放入到集合
+                recordAddList.add(message);
+            });
 
-        //先执行批量删除
-        recordService.deleteSSPToList(ids);
-        //再执行批量新增
-        recordService.insertSSPToList(standardAddList, subitemAddList, personAddList, recordAddList);
+            if(StringUtils.isNotEmpty(deleteIds)){
+                //先执行批量删除
+                recordService.deleteSSPToList(deleteIds, false);
+            }
+            //再执行批量新增
+            recordService.insertSSPToList(standardAddList, subitemAddList, personAddList, recordAddList);
+        }
     }
 
 
@@ -141,39 +160,54 @@ public class TaskHandler {
                 List<LawenforcementStandardDetailVO> standards = subitem.getStandards();
                 //设置父id
                 if (StringUtils.isNotEmpty(standards)) {
-                    setSubItemId(subitem.getId(), standards);
-                    standardAddList.addAll(standards);
+                    //设置父级id
+//                    setSubItemId(subitem.getId(), standards);
+                    //
+                    standards.forEach(standard->{
+                        if("0".equals(standard.getIsDelete())){
+                            standardAddList.add(standard);
+                        }
+                    });
+                }
+            });
+//            setRecordIdToItems(record.getId(), subitems);
+            subitems.forEach(subitem->{
+                if("0".equals(subitem.getIsDelete())){
+                    subitemAddList.add(subitem);
                 }
             });
-            setRecordIdToItems(record.getId(), subitems);
-            subitemAddList.addAll(subitems);
         }
 
         //处理person信息
         List<LawenforcementPersonDetailVO> persons = record.getPersons();
         if (StringUtils.isNotEmpty(persons)) {
-            setRecordIdToItems(record.getId(), persons);
+//            setRecordIdToItems(record.getId(), persons);
             setDeptId(persons);
-            personAddList.addAll(persons);
+            //遍历, 不是假删除的数据,放入到新增集合中.
+            persons.forEach(person->{
+                if("0".equals(person.getIsDelete())){
+                    personAddList.add(person);
+                }
+            });
         }
     }
 
-    /**
+   /* *//**
      * 对standard 设置父id
      *
      * @param subItemId
      * @param standards
-     */
+     *//*
     private void setSubItemId(String subItemId, List<LawenforcementStandardDetailVO> standards) {
         standards.forEach(standard -> standard.setSubitemId(subItemId));
     }
 
-    /**
+    *//**
      * 对工单子级设置父id
-     */
+     *//*
     private <T extends RecordIdSetter> void setRecordIdToItems(String recordId, List<T> items) {
         items.forEach(item -> item.setRecordId(recordId));
-    }
+    }*/
 
     /**
      * 对执法人员设置部门id

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

@@ -85,6 +85,7 @@ public class LawenforcementPersonDetailVO implements RecordIdSetter {
     private String isDelete;
     private String xaddress;
     private String yaddress;
+    private String jobId;
 
     @Override
     public void setRecordId(String recordId) {

+ 1 - 0
src/main/java/com/sooka/sponest/lawenforcement/record/domain/vo/LawenforcementSubitemDetailVO.java

@@ -133,6 +133,7 @@ public class LawenforcementSubitemDetailVO implements RecordIdSetter {
     private String randomStatus;
     private String updateBy;
     private String updateTime;
+    private String jobId;
 
     @Override
     public void setRecordId(String recordId) {

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

@@ -160,4 +160,5 @@ public interface LawenforcementRecordMapper {
 
     void stopRecord(LawenforcementBindDeviceBO bindDeviceBO);
 
+    void removeRecordInfoByIds(List<String> ids);
 }

+ 1 - 1
src/main/java/com/sooka/sponest/lawenforcement/record/service/ILawenforcementRecordService.java

@@ -111,7 +111,7 @@ public interface ILawenforcementRecordService {
 
     void updateRecord(LawenforcementRecordDetailVO remoteRecord);
 
-    void deleteSSPToList(List<String> ids);
+    void deleteSSPToList(List<String> ids, boolean type);
 
     void insertSSPToList(List<LawenforcementStandardDetailVO> standardAddList, List<LawenforcementSubitemDetailVO> subitemAddList, List<LawenforcementPersonDetailVO> personAddList, List<LawenforcementRecordDetailVO> recordAddList);
 

+ 5 - 1
src/main/java/com/sooka/sponest/lawenforcement/record/service/impl/LawenforcementRecordServiceImpl.java

@@ -424,10 +424,14 @@ public class LawenforcementRecordServiceImpl extends BaseServiceImpl implements
      * @param ids 要删除的工单id集合
      */
     @Override
-    public void deleteSSPToList(List<String> ids) {
+    public void deleteSSPToList(List<String> ids, boolean type) {
         recordMapper.removeStandardInfoById(ids);
         recordMapper.removeSubitemInfoById(ids);
         recordMapper.removePersonInfoById(ids);
+        if(type){
+            //删除主表
+            recordMapper.removeRecordInfoByIds(ids);
+        }
     }
 
     /**

+ 12 - 5
src/main/resources/mapper/lawenforcement/LawenforcementRecordMapper.xml

@@ -254,7 +254,7 @@
             #{subitem.id}, #{subitem.subitemName}, #{subitem.subitemCode}, #{subitem.checkResult}, #{subitem.checkResultType},
             #{subitem.decisionReason}, #{subitem.measures}, #{subitem.measuresDetail}, #{subitem.fillTime}, #{subitem.punishResult},
             #{subitem.punishContent}, #{subitem.punishTime}, #{subitem.timeout}, #{subitem.randomResult}, #{subitem.randomResultDetail},
-            #{subitem.resultPersonId}, #{subitem.isProofOut}, #{subitem.remark}, #{subitem.recordId}
+            #{subitem.resultPersonId}, #{subitem.isProofOut}, #{subitem.remark}, #{subitem.jobId}
         </foreach>
     </insert>
 
@@ -263,7 +263,7 @@
         (id, person_id, random_id, person_name, person_code, person_phone, dept_id, dept_name, person_type, main_person, remark, record_id )
         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}
+            #{person.id}, #{person.personId}, #{person.randomId}, #{person.personName}, #{person.personCode}, #{person.personPhone}, #{person.deptId}, #{person.deptName}, #{person.personType}, #{person.mainPerson}, #{person.remark}, #{person.jobId}
         </foreach>
     </insert>
 
@@ -276,7 +276,7 @@
         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)
+        last_job_type, source, create_method, is_cross_dept,device_id,device_name,record_status, is_delete)
         values
         <foreach collection="list" item="record" open="(" separator="),(" close=")">
             #{record.id}, #{record.jobType}, #{record.creatorId}, #{record.creatorName}, #{record.deptId}, #{record.deptName}, #{record.areaId}, #{record.jobName},
@@ -285,8 +285,8 @@
             #{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}
+            #{record.status}, #{record.createTime}, #{record.createBy}, #{record.isLast}, #{record.jobId},#{record.lastJobType},
+            #{record.source}, #{record.createMethod}, #{record.isCrossDept}, #{record.deviceId}, #{record.deviceName}, #{record.recordStatus}, #{record.isDelete}
         </foreach>
     </insert>
 
@@ -800,4 +800,11 @@
         where id = #{recordId}
     </update>
 
+    <delete id="removeRecordInfoByIds" parameterType="list">
+        delete from lawenforcement_record where id in
+        <foreach collection="list" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </delete>
+
 </mapper>