Explorar o código

本地自测,缺陷修改

yucheng %!s(int64=3) %!d(string=hai) anos
pai
achega
d8511c52fe

+ 7 - 7
dc-business/dc-digital/src/main/java/com/persagy/dc/basic/constant/DigitalMessageConstant.java

@@ -8,20 +8,20 @@ package com.persagy.dc.basic.constant;
 public interface DigitalMessageConstant {
 
     /** 消息-exchange */
-    String MESSAGE_EXCHANGE = "exchange-dmp";
+    String MESSAGE_EXCHANGE = "exchange-digital";
     /** 消息-路由Key */
-    String MESSAGE_ROUTING = "routing-dmp-data-change";
+    String MESSAGE_ROUTING = "routing-digital-change";
 
     /** 新增前 */
     String OPERATE_BEFORE_INSERT = "BeforeInsert";
     /** 修改前 */
-    String OPERATE_BEFORE_UPDATE = "BeforeInsert";
+    String OPERATE_BEFORE_UPDATE = "BeforeUpdate";
     /** 删除前 */
-    String OPERATE_BEFORE_DELETE = "BeforeInsert";
+    String OPERATE_BEFORE_DELETE = "BeforeDelete";
     /** 新增后 */
-    String OPERATE_AFTER_INSERT = "BeforeInsert";
+    String OPERATE_AFTER_INSERT = "AfterInsert";
     /** 修改后 */
-    String OPERATE_AFTER_UPDATE = "BeforeInsert";
+    String OPERATE_AFTER_UPDATE = "AfterUpdate";
     /** 删除后 */
-    String OPERATE_AFTER_DELETE = "BeforeInsert";
+    String OPERATE_AFTER_DELETE = "AfterDelete";
 }

+ 7 - 5
dc-business/dc-digital/src/main/java/com/persagy/dc/basic/model/QueryCriteria.java

@@ -1,5 +1,6 @@
 package com.persagy.dc.basic.model;
 
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.OrderItem;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -75,7 +76,7 @@ public class QueryCriteria {
         }
         // 没有每页行数表示不分页
         if(size == null || size < 1) {
-            size = Long.MAX_VALUE;
+            size = -1L;
         }
         Page pageInfo = new Page();
         pageInfo.setCurrent(page);
@@ -98,14 +99,15 @@ public class QueryCriteria {
         while(fields.hasNext()) {
             String field = fields.next();
             JsonNode fieldValue = criteria.get(field);
+            String dbField = StrUtil.toUnderlineCase(field);
             // 值节点
             if(fieldValue.isValueNode()) {
-                wrapper.eq(field, JsonNodeUtils.getNodeValue(fieldValue));
+                wrapper.eq(dbField, JsonNodeUtils.getNodeValue(fieldValue));
                 continue;
             }
             // 数组
             if(fieldValue.isArray()) {
-                wrapper.in(field, JsonNodeUtils.getListValue(fieldValue));
+                wrapper.in(dbField, JsonNodeUtils.getListValue(fieldValue));
                 continue;
             }
             // 对象
@@ -113,8 +115,8 @@ public class QueryCriteria {
                 Iterator<String> valueOperators = fieldValue.fieldNames();
                 while(valueOperators.hasNext()) {
                     String valueOperator = valueOperators.next();
-                    JsonNode operatorValue = criteria.get(field);
-                    addCondition(wrapper, field, valueOperator,operatorValue);
+                    JsonNode operatorValue = fieldValue.get(valueOperator);
+                    addCondition(wrapper, dbField, valueOperator,operatorValue);
                 }
             }
         }

+ 2 - 2
dc-business/dc-digital/src/main/java/com/persagy/dc/basic/utils/DigitalCommonUtils.java

@@ -34,7 +34,7 @@ public class DigitalCommonUtils {
         if(StrUtil.isNotBlank(AppContext.getContext().getProjectId())) {
             inSql.add(AppContext.getContext().getProjectId());
         }
-        wrapper.in(AppContext.PROJECT_ID, inSql);
+        wrapper.in(StrUtil.toUnderlineCase(AppContext.PROJECT_ID), inSql);
     }
 
     /**
@@ -52,7 +52,7 @@ public class DigitalCommonUtils {
         if(StrUtil.isNotBlank(projectId)) {
             inSql.add(projectId);
         }
-        wrapper.in(AppContext.PROJECT_ID, inSql);
+        wrapper.in(StrUtil.toUnderlineCase(AppContext.PROJECT_ID), inSql);
     }
 
     /**

+ 3 - 3
dc-business/dc-digital/src/main/java/com/persagy/dc/define/controller/GraphDefineController.java

@@ -24,14 +24,14 @@ import org.springframework.web.bind.annotation.RestController;
  * @date 2021-06-25
  */
 @RestController
-@RequestMapping("/rwd/def/funcid")
+@RequestMapping("/define/graph")
 public class GraphDefineController {
 
     @Autowired
     private IGraphDefineService service;
 
-    @PostMapping("")
-    public CommonResult<PageList<ObjectType>> queryClass(@RequestBody QueryCriteria criteria) {
+    @PostMapping("query")
+    public CommonResult<PageList<ObjectType>> query(@RequestBody QueryCriteria criteria) {
         if(criteria == null) {
             throw new BusinessException(ResponseCode.A0400.getCode(), ResponseCode.A0400.getDesc());
         }

+ 7 - 5
dc-business/dc-digital/src/main/java/com/persagy/dc/define/controller/ObjectInfoController.java

@@ -27,14 +27,14 @@ import java.util.List;
  * @date 2021-06-25
  */
 @RestController
-@RequestMapping("/rwd/def/class")
+@RequestMapping("/define/info")
 public class ObjectInfoController {
 
     @Autowired
     private IObjectInfoService service;
 
-    @PostMapping("")
-    public CommonResult<PageList<ObjectInfo>> queryClass(@RequestBody QueryCriteria criteria) {
+    @PostMapping("query")
+    public CommonResult<PageList<ObjectInfo>> query(@RequestBody QueryCriteria criteria) {
         if(criteria == null) {
             throw new BusinessException(ResponseCode.A0400.getCode(), ResponseCode.A0400.getDesc());
         }
@@ -74,12 +74,14 @@ public class ObjectInfoController {
     }
 
     @PostMapping("/delete")
-    public void delete(@RequestBody String id){
+    public CommonResult delete(@RequestBody String id){
         service.delete(CollUtil.newArrayList(id));
+        return ResultHelper.success();
     }
 
     @PostMapping("/deleteBatch")
-    public void deleteBatch(@RequestBody List<String> id){
+    public CommonResult deleteBatch(@RequestBody List<String> id){
         service.delete(id);
+        return ResultHelper.success();
     }
 }

+ 8 - 6
dc-business/dc-digital/src/main/java/com/persagy/dc/define/controller/ObjectTypeController.java

@@ -27,14 +27,14 @@ import java.util.List;
  * @date 2021-06-25
  */
 @RestController
-@RequestMapping("/rwd/def/object/type")
+@RequestMapping("/define/type")
 public class ObjectTypeController {
 
     @Autowired
     private IObjectTypeService service;
 
-    @PostMapping("")
-    public CommonResult<PageList<ObjectType>> queryClass(@RequestBody QueryCriteria criteria) {
+    @PostMapping("query")
+    public CommonResult<PageList<ObjectType>> query(@RequestBody QueryCriteria criteria) {
         if(criteria == null) {
             throw new BusinessException(ResponseCode.A0400.getCode(), ResponseCode.A0400.getDesc());
         }
@@ -44,7 +44,7 @@ public class ObjectTypeController {
         // 转换查询条件
         criteria.toWrapper(wrapper);
         Page page = service.queryByCondition(criteria.toPage(), wrapper);
-        return ResultHelper.multi(page.getRecords());
+        return ResultHelper.multi(page.getRecords(), page.getTotal());
     }
 
     @PostMapping("/create")
@@ -74,12 +74,14 @@ public class ObjectTypeController {
     }
 
 	@PostMapping("/delete")
-	public void delete(@RequestBody String id){
+	public CommonResult delete(@RequestBody String id){
         service.delete(CollUtil.newArrayList(id));
+        return ResultHelper.success();
 	}
 
     @PostMapping("/deleteBatch")
-    public void deleteBatch(@RequestBody List<String> id){
+    public CommonResult deleteBatch(@RequestBody List<String> id){
         service.delete(id);
+        return ResultHelper.success();
     }
 }

+ 3 - 3
dc-business/dc-digital/src/main/java/com/persagy/dc/define/controller/RelationDefineController.java

@@ -24,14 +24,14 @@ import org.springframework.web.bind.annotation.RestController;
  * @date 2021-06-25
  */
 @RestController
-@RequestMapping("/rwd/def/rel")
+@RequestMapping("/define/relation")
 public class RelationDefineController {
 
     @Autowired
     private IRelationDefineService service;
 
-    @PostMapping("")
-    public CommonResult<PageList<ObjectType>> queryClass(@RequestBody QueryCriteria criteria) {
+    @PostMapping("query")
+    public CommonResult<PageList<ObjectType>> query(@RequestBody QueryCriteria criteria) {
         if(criteria == null) {
             throw new BusinessException(ResponseCode.A0400.getCode(), ResponseCode.A0400.getDesc());
         }

+ 6 - 6
dc-business/dc-digital/src/main/java/com/persagy/dc/define/service/impl/ObjectInfoServiceImpl.java

@@ -53,8 +53,8 @@ public class ObjectInfoServiceImpl implements IObjectInfoService {
         }
         validateOnSave(voList, false);
         voList.forEach(vo -> {
-            // 新增前消息
-            messageSender.sendMessage(DigitalMessageConstant.OPERATE_BEFORE_INSERT, null, vo, true);
+            // 新增前消息 - 暂不提供同步消息
+///            messageSender.sendMessage(DigitalMessageConstant.OPERATE_BEFORE_INSERT, null, vo, true);
             // 新增
             dao.insert(vo);
             // 新增后消息
@@ -78,8 +78,8 @@ public class ObjectInfoServiceImpl implements IObjectInfoService {
             if(dbVO == null) {
                 return;
             }
-            // 修改前消息
-            messageSender.sendMessage(DigitalMessageConstant.OPERATE_BEFORE_UPDATE, dbVO, vo, true);
+            // 修改前消息 - 暂不提供同步消息
+///            messageSender.sendMessage(DigitalMessageConstant.OPERATE_BEFORE_UPDATE, dbVO, vo, true);
             // 修改
             dao.updateById(vo);
             // 修改后消息
@@ -137,8 +137,8 @@ public class ObjectInfoServiceImpl implements IObjectInfoService {
             if(dbVO == null) {
                 return;
             }
-            // 删除前消息
-            messageSender.sendMessage(DigitalMessageConstant.OPERATE_BEFORE_DELETE, null, dbVO, true);
+            // 删除前消息 - 暂不提供同步消息
+///            messageSender.sendMessage(DigitalMessageConstant.OPERATE_BEFORE_DELETE, null, dbVO, true);
             // 删除
             ObjectInfo vo = new ObjectInfo();
             vo.setId(id);

+ 8 - 6
dc-business/dc-digital/src/main/java/com/persagy/dc/define/service/impl/ObjectTypeServiceImpl.java

@@ -19,6 +19,7 @@ import com.persagy.dc.define.dao.ObjectTypeMapper;
 import com.persagy.dc.define.entity.ObjectType;
 import com.persagy.dc.define.service.IObjectTypeService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.CacheConfig;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
@@ -34,6 +35,7 @@ import java.util.*;
  */
 @Service
 @Transactional(rollbackFor = Exception.class)
+@CacheConfig(cacheNames = {"dt_object_type"})
 public class ObjectTypeServiceImpl implements IObjectTypeService {
 
     @Resource
@@ -94,8 +96,8 @@ public class ObjectTypeServiceImpl implements IObjectTypeService {
         }
         validateOnSave(voList, false);
         voList.forEach(vo -> {
-            // 新增前消息
-            messageSender.sendMessage(DigitalMessageConstant.OPERATE_BEFORE_INSERT, null, vo, true);
+            // 新增前消息 - 暂不提供同步消息
+///            messageSender.sendMessage(DigitalMessageConstant.OPERATE_BEFORE_INSERT, null, vo, true);
             // 新增
             dao.insert(vo);
             // 新增后消息
@@ -120,8 +122,8 @@ public class ObjectTypeServiceImpl implements IObjectTypeService {
             if(dbVO == null) {
                 return;
             }
-            // 修改前消息
-            messageSender.sendMessage(DigitalMessageConstant.OPERATE_BEFORE_UPDATE, dbVO, vo, true);
+            // 修改前消息 - 暂不提供同步消息
+///            messageSender.sendMessage(DigitalMessageConstant.OPERATE_BEFORE_UPDATE, dbVO, vo, true);
             // 修改
             dao.updateById(vo);
             // 修改后消息
@@ -180,8 +182,8 @@ public class ObjectTypeServiceImpl implements IObjectTypeService {
             if(dbVO == null) {
                 return;
             }
-            // 删除前消息
-            messageSender.sendMessage(DigitalMessageConstant.OPERATE_BEFORE_DELETE, null, dbVO, true);
+            // 删除前消息 - 暂不提供同步消息
+///            messageSender.sendMessage(DigitalMessageConstant.OPERATE_BEFORE_DELETE, null, dbVO, true);
             // 删除
             ObjectType vo = new ObjectType();
             vo.setId(id);

+ 1 - 1
dc-business/dc-digital/src/main/resources/bootstrap.yml

@@ -1,5 +1,5 @@
 server:
-  port: 9001
+  port: 8832
 spring:
   application:
     # 应用名称

+ 39 - 0
dc-business/dc-digital/src/main/resources/db.init/migrate.sql

@@ -25,3 +25,42 @@ SELECT `id`,`code`,`name`,`alias_code`,
   '0',date_format(now(), '%Y%m%d%h%i%s'),null,null,1
 FROM `dmp_rwd`.`rwd_def_funcid`;
 
+-- 图类型定义
+replace into `dc_dic`.`dt_define_graph`(`id`,`code`,`name`,`first_category`,
+  `second_category`,`remark`,`object_types`,
+  `creator`,`creation_time`,`modifier`,`modified_time`,`valid`)
+SELECT `id`,`code`,`name`,`first_category`,
+  `second_category`,`category_remark`,`object_types`,
+  '0',date_format(now(), '%Y%m%d%h%i%s'),null,null,1
+FROM `dmp_rwd`.`rwd_def_graph`;
+
+-- 关系定义
+replace into `dc_dic`.`dt_define_rel`(`id`,`code`,`name`,`graph_code`,
+  `directional`,`attribute`,`target_objs`,`remark`,
+  `creator`,`creation_time`,`modifier`,`modified_time`,`valid`)
+SELECT `id`,`code`,`name`,`graph_code`,
+  `directional`,`attribute`,`target_objs`,`remark`,
+  '0',date_format(now(), '%Y%m%d%h%i%s'),null,null,1
+FROM `dmp_rwd`.`rwd_def_rel`;
+
+-- 对象
+replace into `dc_dic`.`dt_object`(`id`,`name`,`local_id`,
+  `local_name`,`group_code`,`project_id`,`obj_type`,`class_code`,
+  `grouping`,`infos`,`virtual_codes`,`create_app`,`update_app`,
+  `creator`,`creation_time`,`modifier`,`modified_time`,`valid`)
+SELECT `id`,`name`,`local_id`,
+  `local_name`,`group_code`,`project_id`,`obj_type`,`class_code`,
+  `grouping`,`infos`,`virtual_info_codes`,`create_app`,`update_app`,
+  '0',date_format(now(), '%Y%m%d%h%i%s'),null,null,1
+FROM `dmp_rwd`.`rwd_object`;
+
+-- 关系
+replace into `dc_dic`.`dt_relation`(`id`,`graph_id`,`graph_code`,
+  `rel_code`,`rel_value`,`group_code`,`project_id`,`obj_from`,`obj_to`,
+  `create_app`,`update_app`,
+  `creator`,`creation_time`,`modifier`,`modified_time`,`valid`)
+SELECT `id`,`graph_id`,`graph_code`,
+  `rel_code`,`rel_value`,`group_code`,`project_id`,`obj_from`,`obj_to`,
+  `create_app`,`update_app`,
+  '0',date_format(now(), '%Y%m%d%h%i%s'),null,null,1
+FROM `dmp_rwd`.`rwd_relation`;

+ 2 - 0
dc-common/src/main/java/com/persagy/dc/common/model/entity/BaseEntity.java

@@ -1,5 +1,6 @@
 package com.persagy.dc.common.model.entity;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.persagy.dc.common.lang.PsDateTime;
 import lombok.AccessLevel;
 import lombok.Data;
@@ -37,6 +38,7 @@ public abstract class BaseEntity<T> implements IBaseEntity,Serializable,Cloneabl
 	protected String id;
 
 	/** 时间戳 - 数据库自更新属性,与审计信息不同,审计信息是业务触发更新,ts是随数据更新 */
+	@JsonIgnore
 	protected transient PsDateTime ts;
 
 	/** 实体状态 - 有效标识 */

+ 6 - 1
dc-common/src/main/java/com/persagy/dc/common/utils/ResultHelper.java

@@ -91,7 +91,12 @@ public class ResultHelper {
      * @param <T>
      * @return
      */
-    private static <T> CommonResult<PageList<T>> multi(List<T> records, long total) {
+    public static <T> CommonResult<PageList<T>> multi(List<T> records, long total) {
+        // 容错处理,出现总数比实际数少时,以实际数为准(page查询全部时,total为0)
+        int size = CollUtil.size(records);
+        if(total < CollUtil.size(records)) {
+            total = size;
+        }
         PageList<T> pageList = new PageList<>(records, total);
         return new CommonResult(ResponseCode.A00000.getCode(), ResponseCode.A00000.getDesc(), pageList);
     }

+ 39 - 7
dc-comp/dc-mybatis/src/main/java/com/persagy/dc/mybatis/handler/AuditInfoHandler.java

@@ -13,6 +13,9 @@ import org.apache.ibatis.plugin.Invocation;
 import org.apache.ibatis.plugin.Signature;
 import org.springframework.stereotype.Component;
 
+import java.util.Collection;
+import java.util.Map;
+
 /**
  * 审计信息拦截器
  * 保存前审计信息赋值公共处理
@@ -32,20 +35,49 @@ public class AuditInfoHandler implements Interceptor {
         if(SqlCommandType.INSERT != sqlCommandType && SqlCommandType.UPDATE != sqlCommandType) {
             return invocation.proceed();
         }
-        Object parameter = invocation.getArgs()[1];
-        // 只处理审计对象
-        if (parameter == null || !(parameter instanceof AuditableEntity)) {
-            return invocation.proceed();
+        doSetting(invocation.getArgs()[1], SqlCommandType.INSERT == sqlCommandType);
+        return invocation.proceed();
+    }
+
+    /**
+     * 递归查找对象,并修改审计信息
+     * @param parameter
+     */
+    private void doSetting(Object parameter, boolean isInsert) {
+        if(parameter == null) {
+            return;
+        }
+        // 如果是Map,则取所有value递归
+        if(parameter instanceof Map) {
+            ((Map) parameter).values().forEach(p -> doSetting(p, isInsert));
+        } else if(parameter instanceof Collection) {
+            // 如果是集合,则按对象递归
+            ((Collection) parameter).forEach(p -> doSetting(p, isInsert));
+        } else {
+            // 如果是对象,则执行审计信息修改
+            setAuditInfo(parameter, isInsert);
+        }
+    }
+
+    /**
+     * 修改审计信息
+     * @param parameter
+     * @param isInsert 是否为新增
+     */
+    private void setAuditInfo(Object parameter, boolean isInsert) {
+        // 只处理AuditableEntity
+        if(!(parameter instanceof AuditableEntity)) {
+            return;
         }
-        // 审计信息默认值
         AuditableEntity entity = (AuditableEntity) parameter;
-        if (SqlCommandType.INSERT == sqlCommandType) {
+        // 新增 - 创建人、创建时间赋值
+        if (isInsert) {
             entity.setCreator(AppContext.getContext().getAccountId());
             entity.setCreationTime(new PsDateTime());
         } else {
+            // 修改 - 修改人、修改时间更新
             entity.setModifier(AppContext.getContext().getAccountId());
             entity.setModifiedTime(new PsDateTime());
         }
-        return invocation.proceed();
     }
 }