Browse Source

数据迁移 兼容时间查询

lvxianyun 2 years ago
parent
commit
b32b0f5deb

+ 35 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/migrate/controller/DigitalMigrateLogController.java

@@ -1,15 +1,19 @@
 package com.persagy.dmp.rwd.migrate.controller;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
 import com.persagy.dmp.basic.utils.QueryCriteriaHelper;
 import com.persagy.dmp.common.constant.CommonConstant;
 import com.persagy.dmp.common.constant.ResponseCode;
 import com.persagy.dmp.common.context.AppContext;
 import com.persagy.dmp.common.exception.BusinessException;
+import com.persagy.dmp.common.model.entity.AuditableEntity;
 import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.common.utils.ParamCheckUtil;
 import com.persagy.dmp.common.utils.ResultHelper;
@@ -53,6 +57,7 @@ public class DigitalMigrateLogController {
         // 添加所属项目条件
         ConditionUtil.ensureProjectCriteriaDirectly(wrapper);
         // 转换查询条件
+        processCreateTime(criteria, wrapper);
         QueryCriteriaHelper.toWrapper(wrapper, criteria, SyncData.class);
         Page page = QueryCriteriaHelper.toPage(criteria);
         if(criteria.isOnlyCount()) {
@@ -86,6 +91,7 @@ public class DigitalMigrateLogController {
         // 添加所属项目条件
         ConditionUtil.ensureProjectCriteriaDirectly(wrapper);
         // 转换查询条件
+        processCreateTime(criteria, wrapper);
         QueryCriteriaHelper.toWrapper(wrapper, criteria, SyncData.class);
         service.remove(wrapper);
         return ResultHelper.success();
@@ -107,4 +113,33 @@ public class DigitalMigrateLogController {
             }
         }
     }
+
+    /**
+     * 兼容
+     * {
+     *     "order": "lastUpdate asc, objId asc",
+     *     "pageNumber": 1,
+     *     "pageSize": 15,
+     *     "filters": "projectId='Pj9909990004';sign=2;type='create';tableName='dt_relation';creationTime in ['20220120121146','20220123121146']"
+     * }
+     * 特殊处理creation_time in ['20220120121146', '20220122121146'] 转化为时间段查询 -> creation_time >= '20220120121146' AND creation_time <= '20220122121146'
+     * @param criteria
+     * @param wrapper
+     */
+    private void processCreateTime(QueryCriteria criteria, QueryWrapper<SyncData> wrapper){
+        if(criteria == null){
+            return;
+        }
+        ObjectNode objectNode = criteria.getCriteria();
+        if(objectNode.get(AuditableEntity.DO_PROP_CREATIONTIME).isArray()){
+            ArrayNode arrayNode = (ArrayNode) objectNode.get(AuditableEntity.DO_PROP_CREATIONTIME);
+            if(arrayNode.size() != 2 || CollUtil.isEmpty(arrayNode)){
+                return;
+            }
+            wrapper.ge(AuditableEntity.PROP_CREATIONTIME,arrayNode.get(0).textValue())
+                    .le(AuditableEntity.PROP_CREATIONTIME,arrayNode.get(1).textValue());
+            objectNode.remove(AuditableEntity.DO_PROP_CREATIONTIME);
+            criteria.setCriteria(objectNode);
+        }
+    }
 }