Memory_LG преди 7 месеца
родител
ревизия
5c72be76a0

+ 0 - 1
src/main/java/com/sooka/sponest/lawenforcement/record/controller/LawenforcementRecordController.java

@@ -46,7 +46,6 @@ public class LawenforcementRecordController extends BaseController {
     @PostMapping("/insertEnforceLawInfoByList")
     public AjaxResult insertEnforceLawInfoByList(@RequestBody JSONArray records){
         //判断数据是否为空
-        log.info("对接省平台数据:==》{}", records);
         if(records.isEmpty()){
             log.error("平台数据为空:==> {}", records);
             return AjaxResult.error("数据为空");

+ 205 - 0
src/main/java/com/sooka/sponest/lawenforcement/record/controller/TaskHandler.java

@@ -0,0 +1,205 @@
+package com.sooka.sponest.lawenforcement.record.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.ruoyi.common.core.utils.SpringUtils;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.sooka.sponest.lawenforcement.feign.service.RemoteEnforcementDeptService;
+import com.sooka.sponest.lawenforcement.record.domain.vo.LawenforcementPersonDetailVO;
+import com.sooka.sponest.lawenforcement.record.domain.vo.LawenforcementRecordDetailVO;
+import com.sooka.sponest.lawenforcement.record.domain.vo.LawenforcementStandardDetailVO;
+import com.sooka.sponest.lawenforcement.record.domain.vo.LawenforcementSubitemDetailVO;
+import com.sooka.sponest.lawenforcement.record.service.ILawenforcementRecordService;
+import com.sooka.sponest.lawenforcement.record.setter.RecordIdSetter;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.MapUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.*;
+
+@RestController
+@RequestMapping("/taskMessageHandler")
+@Slf4j
+public class TaskHandler {
+
+    @Autowired
+    private ILawenforcementRecordService recordService;
+
+    @GetMapping("/startMessageToRecord")
+    public void startMessageToRecord(Long timeRadius) {
+        //获取需要处理的报文数据:{id, jsonData}
+        List<Map<String, Object>> jsonArray = recordService.getJsonDataMessage(timeRadius);
+        if (StringUtils.isNotEmpty(jsonArray)) {
+            clearMessageRecord(jsonArray);
+        }
+    }
+
+    @GetMapping("/clearMessageAll")
+    public void clearMessageAll(){
+        //设置每次数据量
+        int pageSize = 100;
+        //获取总数据量
+        int total = recordService.getTotal();//10001 /100  101
+        //计算页码最大值
+        int size = total / pageSize + 1;
+        //遍历获取数据,如果数据为空,则停止运行
+        for (int pageNum = 1; pageNum <= size; pageNum++) {
+            List<Map<String, Object>> jsonArray = recordService.getJsonDataMessageByPage(pageNum, pageSize);
+
+            if(StringUtils.isNotEmpty(jsonArray)){
+                clearMessageRecord(jsonArray);
+            }else{
+                return;
+            }
+        }
+    }
+
+
+    private void clearMessageRecord(List<Map<String, Object>> jsonArray) {
+
+        //存放需要处理的数据的id集合
+        List<String> ids = new ArrayList<>();
+        Map<String, LawenforcementRecordDetailVO> jsonMessage = new HashMap<>();
+        jsonArray.forEach(map -> {
+            log.info("=====>{}", MapUtils.getString(map, "id"));
+            if(!"0121eff8949481a3aaf6408f624b81ac".equals(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");
+            System.out.println("record.getId() ====> " + id);
+            LawenforcementRecordDetailVO lawenforcementRecordDetailVO = jsonMessage.get(id);
+            deleteIds.add(id);
+            //存储数据到list,等待批量新增
+            addRecordByRemote(lawenforcementRecordDetailVO, standardAddList, subitemAddList, personAddList);
+            //更新工单主表
+            recordService.updateRecord(lawenforcementRecordDetailVO);
+            //移除已经操作的记录
+            jsonMessage.remove(id);
+        });
+
+        //处理需要新增的工单集合
+        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);
+    }
+
+
+    /**
+     * 新增工单方法:对接省平台数据
+     *
+     * @param record
+     */
+    private void addRecordByRemote(LawenforcementRecordDetailVO record, List<LawenforcementStandardDetailVO> standardAddList, List<LawenforcementSubitemDetailVO> subitemAddList, List<LawenforcementPersonDetailVO> personAddList) {
+
+        //处理subitem信息
+        List<LawenforcementSubitemDetailVO> subitems = record.getSubitems();
+        if (StringUtils.isNotEmpty(subitems)) {
+            subitems.forEach(subitem -> {
+                //处理standard信息
+                List<LawenforcementStandardDetailVO> standards = subitem.getStandards();
+                //设置父id
+                if (StringUtils.isNotEmpty(standards)) {
+                    setSubItemId(subitem.getId(), standards);
+                    standardAddList.addAll(standards);
+                }
+            });
+            setRecordIdToItems(record.getId(), subitems);
+            subitemAddList.addAll(subitems);
+        }
+
+        //处理person信息
+        List<LawenforcementPersonDetailVO> persons = record.getPersons();
+        if (StringUtils.isNotEmpty(persons)) {
+            setRecordIdToItems(record.getId(), persons);
+            setDeptId(persons);
+            personAddList.addAll(persons);
+        }
+    }
+
+    /**
+     * 对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
+     *
+     * @param persons
+     */
+    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(RemoteEnforcementDeptService.class).selectDeptListByDeptNames(deptNames);
+        //取出部门集合
+        List<Map<String, Object>> deptList = (List<Map<String, Object>>) ajaxResult.get("data");
+        //如果部门集合不为空,则转换为key-value    部门名称-部门id
+        HashMap<String, Object> deptMap = new HashMap<>();
+        if (StringUtils.isNotEmpty(deptList)) {
+            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);
+        });
+    }
+
+}

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

@@ -13,7 +13,7 @@ import lombok.*;
 @AllArgsConstructor
 @NoArgsConstructor
 @ToString
-public class LawenforcementPersonDetailVO extends BaseBusinessEntity implements RecordIdSetter {
+public class LawenforcementPersonDetailVO implements RecordIdSetter {
 
     /**
      * 父id
@@ -75,6 +75,17 @@ public class LawenforcementPersonDetailVO extends BaseBusinessEntity implements
      */
     private String remark;
 
+
+
+
+    private String createBy;
+//    private String updateBy;
+//    private Long createTime;
+//    private Long updateTime;
+    private String isDelete;
+    private String xaddress;
+    private String yaddress;
+
     @Override
     public void setRecordId(String recordId) {
         this.recordId = recordId;

+ 12 - 0
src/main/java/com/sooka/sponest/lawenforcement/record/domain/vo/LawenforcementRecordDetailVO.java

@@ -249,4 +249,16 @@ public class LawenforcementRecordDetailVO {
 
     private List<LawenforcementRecordLog> recordLogList;
 
+
+    private String areaLevel;
+    private String isDelete;
+    private String isTurn;
+    private String isTurnLast;
+    private String updateBy;
+    private Long updateTime;
+    private String verifyCode;
+    private String verifyCodeCreateTime;
+    private String verifyX;
+    private String verifyY;
+
 }

+ 9 - 0
src/main/java/com/sooka/sponest/lawenforcement/record/domain/vo/LawenforcementStandardDetailVO.java

@@ -67,4 +67,13 @@ public class LawenforcementStandardDetailVO {
      * 备注
      */
     private String remark;
+
+
+
+    private String createBy;
+    private String updateBy;
+    private String createTime;
+    private String updateTime;
+    private String isDelete;
+    private String randomStatus;
 }

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

@@ -125,6 +125,15 @@ public class LawenforcementSubitemDetailVO implements RecordIdSetter {
      */
     private List<LawenforcementStandardDetailVO> standards;
 
+
+    private String createBy;
+    private String createTime;
+    private String isDelete;
+    private String isSubitemLast;
+    private String randomStatus;
+    private String updateBy;
+    private String updateTime;
+
     @Override
     public void setRecordId(String recordId) {
         this.recordId = recordId;

+ 15 - 4
src/main/java/com/sooka/sponest/lawenforcement/record/mapper/LawenforcementRecordMapper.java

@@ -27,19 +27,19 @@ public interface LawenforcementRecordMapper {
      * 删除事项要点
      * @param id
      */
-    void removeStandardInfoById(String id);
+    void removeStandardInfoById(List<String> id);
 
     /**
      * 删除子项数据
      * @param id
      */
-    void removeSubitemInfoById(String id);
+    void removeSubitemInfoById(List<String> id);
 
     /**
      * 删除子项数据
      * @param id
      */
-    void removePersonInfoById(String id);
+    void removePersonInfoById(List<String> id);
 
     /**
      * 写入事项要点集合
@@ -135,9 +135,20 @@ public interface LawenforcementRecordMapper {
 
     int selectJsonDataById(String id);
 
-    void updateJsonData(@Param("id") String id, @Param("jsonData") String jsonData, @Param("updateTime") Date updateTime);
+    void updateJsonData(Map<String, Object> addMessage);
 
     void batchInsert(@Param("list") List<Map<String, Object>> list);
 
     void updateRecord(LawenforcementRecordDetailVO remoteRecord);
+
+    //=======================新的报文逻辑==========================
+    List<Map<String, Object>> getExistMessage(List<String> idArray);
+
+    List<Map<String, String>> getExistRecord(List<String> ids);
+
+    List<Map<String, Object>> getJsonDataMessage(@Param("timeRadius") Long timeRadius);
+
+    int getTotal();
+
+    List<Map<String, Object>> getJsonDataMessageByPage(@Param("pageNum") int pageNum, @Param("pageSize") int pageSize);
 }

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

@@ -4,9 +4,13 @@ import com.alibaba.fastjson.JSONArray;
 import com.sooka.sponest.lawenforcement.record.domain.LawenforcementRecord;
 import com.sooka.sponest.lawenforcement.record.domain.bo.LawenforcementBindDeviceBO;
 import com.sooka.sponest.lawenforcement.record.domain.bo.LawenforcementFillFormBO;
+import com.sooka.sponest.lawenforcement.record.domain.vo.LawenforcementPersonDetailVO;
 import com.sooka.sponest.lawenforcement.record.domain.vo.LawenforcementRecordDetailVO;
+import com.sooka.sponest.lawenforcement.record.domain.vo.LawenforcementStandardDetailVO;
+import com.sooka.sponest.lawenforcement.record.domain.vo.LawenforcementSubitemDetailVO;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 任务数据Service接口
@@ -100,4 +104,18 @@ public interface ILawenforcementRecordService {
     int updateRecordLogEndTime(LawenforcementBindDeviceBO bo);
 
     List<LawenforcementRecord> getRecordList(LawenforcementRecord record);
+
+    List<Map<String, String>> getExistRecord(List<String> ids);
+
+    void updateRecord(LawenforcementRecordDetailVO remoteRecord);
+
+    void deleteSSPToList(List<String> ids);
+
+    void insertSSPToList(List<LawenforcementStandardDetailVO> standardAddList, List<LawenforcementSubitemDetailVO> subitemAddList, List<LawenforcementPersonDetailVO> personAddList, List<LawenforcementRecordDetailVO> recordAddList);
+
+    List<Map<String, Object>> getJsonDataMessage(Long timeRadius);
+
+    int getTotal();
+
+    List<Map<String, Object>> getJsonDataMessageByPage(int pageNum, int pageSize);
 }

+ 115 - 96
src/main/java/com/sooka/sponest/lawenforcement/record/service/impl/LawenforcementRecordServiceImpl.java

@@ -70,9 +70,9 @@ public class LawenforcementRecordServiceImpl extends BaseServiceImpl implements
     @Override
     public int insertEnforceLawInfoByList(JSONArray records) {
         //存储原始报文
-        insertJsonData(records);
+        return insertJsonData(records);
 
-        //创建转换结果集合
+        /*//创建转换结果集合
         List<LawenforcementRecordDetailVO> remoteRecordList = JSONArray.parseArray(records.toJSONString(), LawenforcementRecordDetailVO.class);
         //创建新增集合
         List<LawenforcementRecordDetailVO> recordAddList = new ArrayList<>();
@@ -127,7 +127,7 @@ public class LawenforcementRecordServiceImpl extends BaseServiceImpl implements
             return i;
         }
         log.error("数据转换后为空");
-        return 0;
+        return 0;*/
     }
 
     /**
@@ -345,116 +345,135 @@ public class LawenforcementRecordServiceImpl extends BaseServiceImpl implements
     }
 
     /**
-     * 新增工单方法:对接省平台数据
-     *
-     * @param record
+     * 报文处理
+     * @param messageArray
      */
-    private JSONObject addRecordByRemote(LawenforcementRecordDetailVO record) {
-        //创建返回集合
-        List<LawenforcementStandardDetailVO> standardAddList = new ArrayList<>();
-        List<LawenforcementSubitemDetailVO> subitemAddList = new ArrayList<>();
-        List<LawenforcementPersonDetailVO> personAddList = new ArrayList<>();
+    private int insertJsonData(JSONArray messageArray) {
+        try{
+            //格式化时间
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+            //转换为实体类集合
+            List<LawenforcementRecordDetailVO> recordListMessage = JSONArray.parseArray(messageArray.toJSONString(), LawenforcementRecordDetailVO.class);
+
+            //存储数据的id
+            List<String> idArray = new ArrayList<>();
+
+            //以id为key,数据对象为value
+            Map<String, LawenforcementRecordDetailVO> recordMap = new HashMap<>();
+
+            //遍历报文数据,存储需要的信息
+            recordListMessage.forEach(message->{
+                idArray.add(message.getId());
+                recordMap.put(message.getId(), message);
+            });
 
-        //处理subitem信息
-        List<LawenforcementSubitemDetailVO> subitems = record.getSubitems();
-        if (StringUtils.isNotEmpty(subitems)) {
-            subitems.forEach(subitem -> {
-                //处理standard信息
-                List<LawenforcementStandardDetailVO> standards = subitem.getStandards();
-                //设置父id
-                if (StringUtils.isNotEmpty(standards)) {
-                    setSubItemId(subitem.getId(), standards);
-                    log.info("放入standards =》 {}", standards);
-                    standardAddList.addAll(standards);
+            //调用获取数据方法,查出存在的数据
+            List<Map<String, Object>> existMessage = recordMapper.getExistMessage(idArray);
+
+            //对存在的数据进行遍历更新;并且在recordMap中移除已经更新的数据
+            existMessage.forEach(existMap->{
+                //取出本次报文中id存在的数据
+                LawenforcementRecordDetailVO message = recordMap.get(MapUtils.getString(existMap, "id"));
+
+                //报文数据的更新时间不是空,证明有更新
+                if(!Objects.equals(MapUtils.getLong(existMap, "dataUpdateTime"), message.getUpdateTime())){
+                    Map<String, Object> addMessage = new HashMap<>();
+                    addMessage.put("id", message.getId());
+                    addMessage.put("jsonData", message);
+                    addMessage.put("updateTime", simpleDateFormat.format(new Date()));
+                    addMessage.put("dataUpdateTime", message.getUpdateTime());
+                    recordMapper.updateJsonData(addMessage);
                 }
+
+                //移除更新的记录
+                recordMap.remove(message.getId());
             });
-            setRecordIdToItems(record.getId(), subitems);
-            log.info("放入subitems =》 {}", subitems);
-            subitemAddList.addAll(subitems);
-        }
 
-        //处理person信息
-        List<LawenforcementPersonDetailVO> persons = record.getPersons();
-        if (StringUtils.isNotEmpty(persons)) {
-            setRecordIdToItems(record.getId(), persons);
-            setDeptId(persons);
-            log.info("放入persons =》 {}", persons);
-            personAddList.addAll(persons);
+
+            //创建List用于新增报文
+            List<Map<String, Object>> addMessageList = new ArrayList<>();
+            //遍历剩余的map数据,用于新增报文
+            recordMap.keySet().forEach(messageId->{
+                LawenforcementRecordDetailVO lawenforcementRecordDetailVO = recordMap.get(messageId);
+
+                Date date = new Date();
+                Map<String, Object> addMessage = new HashMap<>();
+                addMessage.put("id", messageId);
+                addMessage.put("jsonData", lawenforcementRecordDetailVO);
+                addMessage.put("createTime", simpleDateFormat.format(date));
+                addMessage.put("updateTime", simpleDateFormat.format(date));
+                addMessage.put("dataCreateTime", lawenforcementRecordDetailVO.getCreateTime());
+                addMessage.put("dataUpdateTime", lawenforcementRecordDetailVO.getUpdateTime());
+                addMessageList.add(addMessage);
+            });
+            //如果新增的数据集合中不是空,则批量写入报文数据
+            if (StringUtils.isNotEmpty(addMessageList)) {
+                recordMapper.batchInsert(addMessageList);
+            }
+            return 1;
+        }catch (Exception e){
+            log.error(e.getMessage());
+            return 0;
         }
-        //创建返回对象
-        JSONObject result = new JSONObject();
-        //设置返回值
-        result.put("personAddList", personAddList);
-        result.put("subitemAddList", subitemAddList);
-        result.put("standardAddList", standardAddList);
-        return result;
     }
 
-    /**
-     * 对standard 设置父id
-     *
-     * @param subItemId
-     * @param standards
-     */
-    private void setSubItemId(String subItemId, List<LawenforcementStandardDetailVO> standards) {
-        standards.forEach(standard -> standard.setSubitemId(subItemId));
+    @Override
+    public List<Map<String, String>> getExistRecord(List<String> ids) {
+        return recordMapper.getExistRecord(ids);
+    }
+
+    @Override
+    public void updateRecord(LawenforcementRecordDetailVO remoteRecord){
+        recordMapper.updateRecord(remoteRecord);
     }
 
-    // 对工单子级设置父id
-    private <T extends RecordIdSetter> void setRecordIdToItems(String recordId, List<T> items) {
-        items.forEach(item -> item.setRecordId(recordId));
+    /**
+     * 定时任务批量删除
+     * @param ids 要删除的工单id集合
+     */
+    @Override
+    public void deleteSSPToList(List<String> ids){
+        recordMapper.removeStandardInfoById(ids);
+        recordMapper.removeSubitemInfoById(ids);
+        recordMapper.removePersonInfoById(ids);
     }
 
-    private void setDeptId(List<LawenforcementPersonDetailVO> persons) {
-        //获取persons中的deptName放入到deptNames中
-        Set<String> deptNameSet = new HashSet<>();
-        for (LawenforcementPersonDetailVO person : persons) {
-            deptNameSet.add(person.getDeptName());
+    /**
+     * 定时任务批量新增
+     * @param standardAddList 子项的子集集合
+     * @param subitemAddList 子项集合
+     * @param personAddList 执法人员集合
+     * @param recordAddList 工单集合
+     */
+    @Override
+    public void insertSSPToList(List<LawenforcementStandardDetailVO> standardAddList, List<LawenforcementSubitemDetailVO> subitemAddList, List<LawenforcementPersonDetailVO> personAddList, List<LawenforcementRecordDetailVO> recordAddList){
+        if (StringUtils.isNotEmpty(standardAddList)) {
+            recordMapper.insertStandardByList(standardAddList);
         }
-//        deptNameSet.add("四平市");
-        String[] deptNames = deptNameSet.toArray(new String[0]);
-
-        //根据部门名称查询部门id
-        AjaxResult ajaxResult = SpringUtils.getBean(RemoteEnforcementDeptService.class).selectDeptListByDeptNames(deptNames);
-        //取出部门集合
-        List<Map<String, Object>> deptList = (List<Map<String, Object>>) ajaxResult.get("data");
-        //如果部门集合不为空,则转换为key-value    部门名称-部门id
-        HashMap<String, Object> deptMap = new HashMap<>();
-        if (StringUtils.isNotEmpty(deptList)) {
-            deptList.forEach(dept -> {
-                deptMap.put(MapUtils.getString(dept, "deptName"), MapUtils.getString(dept, "deptId"));
-            });
+        if (StringUtils.isNotEmpty(subitemAddList)) {
+            recordMapper.insertSubitemByList(subitemAddList);
+        }
+        if (StringUtils.isNotEmpty(personAddList)) {
+            recordMapper.insertPersonByList(personAddList);
+        }
+        if (StringUtils.isNotEmpty(recordAddList)) {
+            recordMapper.insertRecordByList(recordAddList);
         }
-        //设置部门id,如果deptMap不存在key,则设置deptId为null
-        persons.forEach(person -> {
-            person.setDeptId(deptMap.containsKey(person.getDeptName()) ? MapUtils.getString(deptMap, person.getDeptName()) : null);
-        });
     }
 
+    @Override
+    public List<Map<String, Object>> getJsonDataMessage(Long timeRadius) {
+        return recordMapper.getJsonDataMessage(timeRadius);
+    }
 
-    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);
-            }
-        }
+    @Override
+    public int getTotal() {
+        return recordMapper.getTotal();
+    }
 
-        if (StringUtils.isNotEmpty(listToInsert)) {
-            recordMapper.batchInsert(listToInsert);
-        }
+    @Override
+    public List<Map<String, Object>> getJsonDataMessageByPage(int pageNum, int pageSize) {
+        return recordMapper.getJsonDataMessageByPage(pageNum, pageSize);
     }
 }

+ 63 - 8
src/main/resources/mapper/lawenforcement/LawenforcementRecordMapper.xml

@@ -204,21 +204,30 @@
         from lawenforcement_record
     </sql>
 
-    <delete id="removeStandardInfoById" parameterType="string">
+    <delete id="removeStandardInfoById" parameterType="list">
         delete from lawenforcement_standard
         where subitem_id in (
-            select id from lawenforcement_subitem where record_id = #{id}
+            select id from lawenforcement_subitem where record_id in
+            <foreach collection="list" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
         )
     </delete>
 
     <delete id="removeSubitemInfoById" parameterType="string">
         delete from lawenforcement_subitem
-        where record_id = #{id}
+        where record_id in
+        <foreach collection="list" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
     </delete>
 
     <delete id="removePersonInfoById" parameterType="string">
         delete from lawenforcement_person
-        where record_id = #{id}
+        where record_id in
+        <foreach collection="list" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
     </delete>
 
     <insert id="insertStandardByList" parameterType="list">
@@ -638,19 +647,23 @@
         select count(*) from lawenforcement_json_data where id = #{id}
     </select>
 
-    <update id="updateJsonData">
-        update lawenforcement_json_data set json_data = #{jsonData}, update_time = #{updateTime}
+    <update id="updateJsonData" parameterType="map">
+        update lawenforcement_json_data
+        set json_data = #{jsonData}, update_time = #{updateTime}, data_update_time = #{dataUpdateTime}
         where id = #{id}
     </update>
 
     <insert id="batchInsert" parameterType="list">
         insert into lawenforcement_json_data
-        (id, json_data, create_time)
+        (id, json_data, create_time, update_time, data_create_time, data_update_time)
         values
         <foreach collection="list" open="(" separator="),(" close=")" item="item">
             #{item.id},
             #{item.jsonData},
-            #{item.createTime}
+            #{item.createTime},
+            #{item.updateTime},
+            #{item.dataCreateTime},
+            #{item.dataUpdateTime}
         </foreach>
     </insert>
 
@@ -703,4 +716,46 @@
         where id = #{id}
     </update>
 
+
+    <select id="getExistMessage" parameterType="list" resultType="map">
+        select id,
+               json_data as jsonData,
+               create_time as crateTime,
+               update_time as updateTime,
+               data_create_time as dataCreateTime,
+               data_update_time as dataUpdateTime
+        from lawenforcement_json_data
+        where id in
+            <foreach collection="list" item="item" open="(" close=")" separator=",">
+                #{item}
+            </foreach>
+    </select>
+
+    <select id="getExistRecord" parameterType="list" resultType="map">
+        select
+            id
+        from lawenforcement_record
+        where id in
+        <foreach collection="list" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </select>
+
+    <select id="getJsonDataMessage" resultType="map">
+        SELECT id, json_data as jsonData
+        FROM json_data
+        WHERE update_time &gt;= DATE_SUB(NOW(), INTERVAL #{timeRadius} SECOND)
+        AND update_time &lt;= NOW()
+    </select>
+
+    <select id="getTotal" resultType="int">
+        select count(1) from json_data
+    </select>
+
+    <select id="getJsonDataMessageByPage" resultType="map">
+        SELECT id, json_data as jsonData
+        FROM json_data
+        limit ${pageNum}, ${pageSize}
+    </select>
+
 </mapper>