Quellcode durchsuchen

修复批量查询不到项目的详细信息点

lijie vor 3 Jahren
Ursprung
Commit
6ab1b06d52

+ 6 - 0
dmp-rwd/pom.xml

@@ -45,6 +45,12 @@
             <artifactId>druid</artifactId>
             <artifactId>druid</artifactId>
             <version>1.1.20</version>
             <version>1.1.20</version>
         </dependency>-->
         </dependency>-->
+        <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.7.2</version>
+        </dependency>
         <dependency>
         <dependency>
             <groupId>com.alibaba</groupId>
             <groupId>com.alibaba</groupId>
             <artifactId>druid-spring-boot-starter</artifactId>
             <artifactId>druid-spring-boot-starter</artifactId>

+ 7 - 0
dmp-rwd/src/main/java/com/persagy/dmp/rwd/entity/ObjectInstance.java

@@ -1,6 +1,10 @@
 package com.persagy.dmp.rwd.entity;
 package com.persagy.dmp.rwd.entity;
 
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.dmp.rwd.handler.JsonTypeHandlerFactory;
 import com.persagy.dmp.rwd.model.ObjectInstanceModel;
 import com.persagy.dmp.rwd.model.ObjectInstanceModel;
 import com.vladmihalcea.hibernate.type.json.JsonStringType;
 import com.vladmihalcea.hibernate.type.json.JsonStringType;
 import lombok.Getter;
 import lombok.Getter;
@@ -20,6 +24,7 @@ import java.util.List;
 @Table(name = "rwd_object")
 @Table(name = "rwd_object")
 @TypeDef(name = "json", typeClass = JsonStringType.class)
 @TypeDef(name = "json", typeClass = JsonStringType.class)
 @IdClass(GroupProjectPK.class)
 @IdClass(GroupProjectPK.class)
+@TableName(autoResultMap = true)
 public class ObjectInstance {
 public class ObjectInstance {
 
 
 	@Id
 	@Id
@@ -40,9 +45,11 @@ public class ObjectInstance {
 	private Integer grouping;
 	private Integer grouping;
 
 
 	@Type(type = "json")
 	@Type(type = "json")
+	@TableField(value = "infos",typeHandler = JsonTypeHandlerFactory.ObjectNodeHandler.class)
 	private ObjectNode infos;
 	private ObjectNode infos;
 
 
 	@Type(type = "json")
 	@Type(type = "json")
+	@TableField(value = "virtual_info_codes", typeHandler = JacksonTypeHandler.class)
 	private List<String> virtualInfoCodes;
 	private List<String> virtualInfoCodes;
 
 
 	private Integer valid;
 	private Integer valid;

+ 47 - 0
dmp-rwd/src/main/java/com/persagy/dmp/rwd/handler/DbJsonTypeHandler.java

@@ -0,0 +1,47 @@
+package com.persagy.dmp.rwd.handler;
+
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.extension.handlers.AbstractJsonTypeHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.type.JdbcType;
+import org.apache.ibatis.type.MappedJdbcTypes;
+import org.apache.ibatis.type.MappedTypes;
+import org.springframework.util.Assert;
+
+/***
+ * Description: 针对mysql中json类型与Model映射处理器.用于处理集合的泛型不是String类型的
+ * @author : lijie
+ * @date :2021/4/27 15:18
+ * Update By lijie 2021/4/27 15:18
+ */
+@Slf4j
+@MappedTypes({ Object.class })
+@MappedJdbcTypes(JdbcType.VARCHAR)
+public class DbJsonTypeHandler extends AbstractJsonTypeHandler<Object> {
+
+    private final Class<?> clazz;
+
+    public DbJsonTypeHandler(Class<?> type, Class<?> innerType) {
+        if (log.isTraceEnabled()) {
+            log.trace("JacksonTypeHandler(" + type + ")");
+        }
+        Assert.notNull(type, "Type argument cannot be null");
+
+        this.clazz = innerType;
+    }
+
+    @Override
+    protected Object parse(String json) {
+        if (JSONUtil.isJsonArray(json)) {
+            return JSONUtil.toList(JSONUtil.parseArray(json), this.clazz);
+        } else {
+            return JSONUtil.toBean(json, this.clazz);
+        }
+    }
+
+    @Override
+    protected String toJson(Object obj) {
+        return JSONUtil.toJsonStr(obj);
+    }
+
+}

+ 2 - 1
dmp-rwd/src/main/java/com/persagy/dmp/rwd/repository/ProjectDao.java

@@ -1,6 +1,7 @@
 package com.persagy.dmp.rwd.repository;
 package com.persagy.dmp.rwd.repository;
 
 
 
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.persagy.dmp.rwd.entity.ObjectInstance;
 import com.persagy.dmp.rwd.entity.ObjectInstance;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
@@ -15,7 +16,7 @@ import java.util.List;
  */
  */
 @Mapper
 @Mapper
 @Repository
 @Repository
-public interface ProjectDao {
+public interface ProjectDao  extends BaseMapper<ObjectInstance> {
 
 
     /***
     /***
      * Description: 根据集团code查询所有集团下的表名称
      * Description: 根据集团code查询所有集团下的表名称

+ 3 - 3
dmp-rwd/src/main/java/com/persagy/dmp/rwd/service/ObjectInstanceQueryService.java

@@ -445,9 +445,9 @@ public class ObjectInstanceQueryService extends BaseService {
         }
         }
         // 2.去掉最后的UNION
         // 2.去掉最后的UNION
         String querySql = tableNames.substring(0, tableNames.lastIndexOf("UNION"));
         String querySql = tableNames.substring(0, tableNames.lastIndexOf("UNION"));
-//        Query nativeQuery = entityManager.createNativeQuery(querySql,ObjectInstance.class);
-//        List<ObjectInstance> projects = nativeQuery.getResultList();
-        List<ObjectInstance> projects = projectDao.queryAllProjects(querySql);
+        Query nativeQuery = entityManager.createNativeQuery(querySql,ObjectInstance.class);
+        List<ObjectInstance> projects = nativeQuery.getResultList();
+        //List<ObjectInstance> projects = projectDao.queryAllProjects(querySql);
         if (CollectionUtils.isEmpty(projects)){
         if (CollectionUtils.isEmpty(projects)){
             return result;
             return result;
         }
         }