Parcourir la source

修改数据源

fengyanjie il y a 4 ans
Parent
commit
96f7f9d615

+ 0 - 71
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/controller/DmpGatewayController.java

@@ -1,71 +0,0 @@
-package com.persagy.dmp.rwd.edit.controller;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.persagy.common.web.ServletUtils;
-import com.persagy.dmp.common.http.HttpUtils;
-import com.persagy.dmp.rwd.edit.config.web.UserUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * @author: yaoll
- * @date: 2020-12-29
- * @verison: 1.0
- */
-@RestController
-@RequestMapping("/rwdedit/dmp")
-public class DmpGatewayController {
-
-    @Autowired
-    private HttpUtils httpUtils;
-
-    @Value("${persagy.dmp.server}")
-    private String dmpServer;
-
-    @PostMapping("/dic/**")
-    public void dic(HttpServletRequest request, HttpServletResponse response, @RequestBody JsonNode param) {
-        dispatch(request, response, param);
-    }
-
-    @PostMapping("/org/**")
-    public void org(HttpServletRequest request, HttpServletResponse response, @RequestBody JsonNode param) {
-        dispatch(request, response, param);
-    }
-
-    @PostMapping("/rwd/**")
-    public void rwd(HttpServletRequest request, HttpServletResponse response, @RequestBody JsonNode param) {
-        dispatch(request, response, param);
-    }
-
-    private void dispatch(HttpServletRequest request, HttpServletResponse response, @RequestBody JsonNode param) {
-        StringBuilder url = new StringBuilder(dmpServer);
-        String uri = request.getRequestURI().replace("/rwdedit/dmp", "");
-        url.append(uri);
-        String queryString = request.getQueryString();
-        if (!"/rwd/def/class".equalsIgnoreCase(uri) && !"/rwd/def/funcid".equalsIgnoreCase(uri)) {
-            queryString = appendParamIfNotExists(queryString, "appId", "datautils");
-            queryString = appendParamIfNotExists(queryString, "userId", "admin" + UserUtils.currentUserId());
-        }
-        url.append("?").append(queryString);
-
-        HttpUtils.HttpResult post = httpUtils.post(url.toString(), param.toString(), 30000);
-        String content = post.getContent();
-        ServletUtils.writeJson(response, content);
-    }
-
-    private String appendParamIfNotExists(String queryString, String key, String value) {
-        if (queryString == null) {
-            return key + "=" + value;
-        } else {
-            return queryString + "&" + key + "=" + value;
-        }
-    }
-
-}

+ 70 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/entity/ClassDef.java

@@ -0,0 +1,70 @@
+package com.persagy.dmp.rwd.edit.entity;
+
+import com.persagy.dmp.rwd.enums.ObjType;
+import com.persagy.dmp.rwd.model.ClassDefModel;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.persistence.*;
+
+@Setter
+@Getter
+@Entity
+@Table(name = "rwd_def_class")
+@IdClass(GroupPK.class)
+public class ClassDef {
+
+	@Id
+	private String id;
+	@Id
+	private String groupCode;
+	private String code;
+	@Enumerated(value = EnumType.STRING)
+	private ObjType objType;
+	private String name;
+	private String aliasCode;
+	private String aliasName;
+	private String type;
+	private String projectId;
+	private String majorCode;
+	private String systemCode;
+	private String equipmentCode;
+	private String parentCode;
+
+	public static ClassDef fromModel(ClassDefModel model) {
+		ClassDef entity = new ClassDef();
+		entity.setId(model.getId());
+		entity.setCode(model.getCode());
+		entity.setObjType(model.getObjType());
+		entity.setName(model.getName());
+		entity.setAliasCode(model.getAliasCode());
+		entity.setAliasName(model.getAliasName());
+		entity.setType(model.getType());
+		entity.setGroupCode(model.getGroupCode());
+		entity.setProjectId(model.getProjectId());
+		entity.setMajorCode(model.getMajorCode());
+		entity.setSystemCode(model.getSystemCode());
+		entity.setEquipmentCode(model.getEquipmentCode());
+		entity.setParentCode(model.getParentCode());
+		return entity;
+	}
+
+	public ClassDefModel toModel() {
+		ClassDefModel model = new ClassDefModel();
+		model.setId(this.getId());
+		model.setCode(this.getCode());
+		model.setObjType(this.getObjType());
+		model.setName(this.getName());
+		model.setAliasCode(this.getAliasCode());
+		model.setAliasName(this.getAliasName());
+		model.setType(this.getType());
+		model.setGroupCode(this.getGroupCode());
+		model.setProjectId(this.getProjectId());
+		model.setMajorCode(this.getMajorCode());
+		model.setSystemCode(this.getSystemCode());
+		model.setEquipmentCode(this.getEquipmentCode());
+		model.setParentCode(this.getParentCode());
+		return model;
+	}
+
+}

+ 114 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/entity/FuncidDef.java

@@ -0,0 +1,114 @@
+package com.persagy.dmp.rwd.edit.entity;
+
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.persagy.dmp.rwd.enums.FuncidCategory;
+import com.persagy.dmp.rwd.enums.FuncidDataType;
+import com.persagy.dmp.rwd.model.FuncidDefModel;
+import lombok.Getter;
+import lombok.Setter;
+import org.hibernate.annotations.Type;
+
+import javax.persistence.*;
+
+@Setter
+@Getter
+@Entity
+@Table(name = "rwd_def_funcid")
+@IdClass(GroupPK.class)
+public class FuncidDef {
+
+    @Id
+    private String id;
+    @Id
+    private String groupCode;
+    @Column(updatable = false)
+    private String projectId;
+    private String code;
+    private String origCode;
+    private String name;
+    private String aliasCode;
+    private String aliasName;
+    @Column(updatable = false)
+    private String classCode;
+    @Enumerated(EnumType.STRING)
+    private FuncidCategory category;
+    private String type;
+    private String firstTag;
+    private String secondTag;
+    private String priority;
+    private String inputMode;
+    private String unit;
+    @Enumerated(EnumType.STRING)
+    private FuncidDataType dataType;
+    private String origDataType;
+    private Boolean isMultiple = false;
+    private Boolean isRegion = false;
+    private String formater;
+
+    @Type(type = "json")
+    private ArrayNode dataSource;
+    private String note;
+    private Boolean subFlag;
+    private Boolean weakPoint;
+
+    public static FuncidDef fromModel(FuncidDefModel model) {
+        FuncidDef entity = new FuncidDef();
+        entity.setId(model.getId());
+        entity.setCode(model.getCode());
+        entity.setOrigCode(model.getOrigCode());
+        entity.setName(model.getName());
+        entity.setAliasCode(model.getAliasCode());
+        entity.setAliasName(model.getAliasName());
+        entity.setClassCode(model.getClassCode());
+        entity.setCategory(model.getCategory());
+        entity.setType(model.getType());
+        entity.setGroupCode(model.getGroupCode());
+        entity.setProjectId(model.getProjectId());
+        entity.setFirstTag(model.getFirstTag());
+        entity.setSecondTag(model.getSecondTag());
+        entity.setPriority(model.getPriority());
+        entity.setInputMode(model.getInputMode());
+        entity.setUnit(model.getUnit());
+        entity.setDataType(model.getDataType());
+        entity.setOrigDataType(model.getOrigDataType());
+        entity.setIsMultiple(model.getIsMultiple());
+        entity.setIsRegion(model.getIsRegion());
+        entity.setFormater(model.getFormater());
+        entity.setDataSource(model.getDataSource());
+        entity.setNote(model.getNote());
+        entity.setSubFlag(model.getSubFlag());
+        entity.setWeakPoint(model.getWeakPoint());
+        return entity;
+    }
+
+    public FuncidDefModel toModel() {
+        FuncidDefModel model = new FuncidDefModel();
+        model.setId(this.id);
+        model.setCode(this.getCode());
+        model.setOrigCode(this.getOrigCode());
+        model.setName(this.getName());
+        model.setAliasCode(this.aliasCode);
+        model.setAliasName(this.aliasName);
+        model.setClassCode(this.getClassCode());
+        model.setCategory(this.getCategory());
+        model.setType(this.getType());
+        model.setGroupCode(this.getGroupCode());
+        model.setProjectId(this.getProjectId());
+        model.setFirstTag(this.getFirstTag());
+        model.setSecondTag(this.getSecondTag());
+        model.setPriority(this.getPriority());
+        model.setInputMode(this.getInputMode());
+        model.setUnit(this.getUnit());
+        model.setDataType(this.getDataType());
+        model.setOrigDataType(this.getOrigDataType());
+        model.setIsMultiple(this.getIsMultiple());
+        model.setIsRegion(this.getIsRegion());
+        model.setFormater(this.getFormater());
+        model.setDataSource(this.getDataSource());
+        model.setNote(this.getNote());
+        model.setSubFlag(this.getSubFlag());
+        model.setWeakPoint(this.getWeakPoint());
+        return model;
+    }
+
+}

+ 48 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/entity/GroupPK.java

@@ -0,0 +1,48 @@
+package com.persagy.dmp.rwd.edit.entity;
+
+import javax.persistence.Column;
+import javax.persistence.Embeddable;
+import java.io.Serializable;
+import java.util.Objects;
+
+/**
+ * @author: yaoll
+ * @date: 2020-11-01
+ * @verison: 1.0
+ */
+@Embeddable
+public class GroupPK implements Serializable {
+
+	@Column
+	private String id;
+
+	@Column
+	private String groupCode;
+
+	public GroupPK() {
+	}
+
+	public GroupPK(String id, String groupCode) {
+		this.id = id;
+		this.groupCode = groupCode;
+	}
+
+	@Override
+	public boolean equals(Object o) {
+		if (this == o) return true;
+		if (o == null || getClass() != o.getClass()) return false;
+		GroupPK groupPK = (GroupPK) o;
+		return id.equals(groupPK.id) &&
+				groupCode.equals(groupPK.groupCode);
+	}
+
+	@Override
+	public int hashCode() {
+		return Objects.hash(id, groupCode);
+	}
+
+	@Override
+	public String toString() {
+		return "GroupPK{id=\"" + id + "\", groupCode=\"" + groupCode + "\"}";
+	}
+}

+ 13 - 6
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/ChangeRecordService.java

@@ -280,12 +280,14 @@ public class ChangeRecordService {
                     }
                     break;
             }
-            sql.append(" where 1=1");
-            if (changeRecord.getInfoCode() == null) {
-                sql.append(" and code = '" + changeRecord.getCode() + "'");
-            } else {
-                sql.append(" and class_code = '" + changeRecord.getCode() + "'");
-                sql.append(" and code = '" + changeRecord.getInfoCode() + "'");
+            if (!EnumOperationType.create.equals(changeRecord.getOperationType())) {
+                sql.append(" where 1=1");
+                if (changeRecord.getInfoCode() == null) {
+                    sql.append(" and code = '" + changeRecord.getCode() + "'");
+                } else {
+                    sql.append(" and class_code = '" + changeRecord.getCode() + "'");
+                    sql.append(" and code = '" + changeRecord.getInfoCode() + "'");
+                }
             }
             sql.append(";");
             sqlList.add(sql.toString());
@@ -293,6 +295,11 @@ public class ChangeRecordService {
         return sqlList;
     }
 
+    public static void main(String[] args) {
+        String uuid = UUID.randomUUID().toString().replace("-", "");
+        System.err.println(uuid);
+    }
+
     private static Map<String, Object> json2map(String str_json) {
         Map<String, Object> res = null;
         try {

+ 70 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/ClassDefService.java

@@ -0,0 +1,70 @@
+package com.persagy.dmp.rwd.edit.service;
+
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.common.criteria.CriteriaUtils;
+import com.persagy.common.criteria.JacksonCriteria;
+import com.persagy.common.web.ListResponse;
+import com.persagy.common.web.PagedResponse;
+import com.persagy.dmp.rwd.edit.entity.ClassDef;
+import com.persagy.dmp.rwd.edit.entity.QClassDef;
+import com.persagy.dmp.rwd.enums.ObjType;
+import com.persagy.dmp.rwd.model.ClassDefModel;
+import com.querydsl.core.types.dsl.BooleanExpression;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Service
+public class ClassDefService {
+
+    @Autowired
+    private CriteriaUtils criteriaUtils;
+
+    public ListResponse<ClassDefModel> queryClass(JacksonCriteria criteria) {
+        ListResponse<ClassDefModel> resp = new ListResponse<>();
+
+        Map<String, ClassDefModel> map = new HashMap<>();
+        // 查询平台级
+        JacksonCriteria jacksonCriteria = JacksonCriteria.newInstance();
+        jacksonCriteria.getCriteria().setAll(criteria.getCriteria());
+        jacksonCriteria.add("type", "common");
+        jacksonCriteria.add("groupCode", "0");
+        jacksonCriteria.setWithoutCount(true);
+        PagedResponse<ClassDefModel> queryResponse = query(jacksonCriteria);
+        for (ClassDefModel model : queryResponse.getData()) {
+            map.put(model.getCode(), model);
+        }
+
+        List<ClassDefModel> data = new ArrayList<>(map.size());
+        data.addAll(map.values());
+        resp.setData(data);
+        return resp;
+    }
+
+    private List<BooleanExpression> parse(ObjectNode object) {
+        List<BooleanExpression> list = new LinkedList<>();
+        QClassDef qt = QClassDef.classDef;
+        list.addAll(CriteriaUtils.parse(qt.objType, object.get("objType"), ObjType.class));
+        return list;
+    }
+
+    public PagedResponse<ClassDefModel> query(JacksonCriteria criteria) {
+        PagedResponse<ClassDef> resp = criteriaUtils.query(QClassDef.classDef, this::parse, criteria);
+        PagedResponse<ClassDefModel> result = new PagedResponse<>();
+        result.setCount(resp.getCount());
+        List<ClassDef> dataList = resp.getData();
+        if (dataList != null && dataList.size() > 0) {
+            List<ClassDefModel> collect = dataList.stream().map(entity -> {
+                ClassDefModel model = entity.toModel();
+                return model;
+            }).collect(Collectors.toList());
+            result.setData(collect);
+        }
+        return result;
+    }
+}
+

+ 127 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/FuncidDefService.java

@@ -0,0 +1,127 @@
+package com.persagy.dmp.rwd.edit.service;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.common.criteria.CriteriaUtils;
+import com.persagy.common.criteria.JacksonCriteria;
+import com.persagy.common.json.JacksonMapper;
+import com.persagy.common.web.ListResponse;
+import com.persagy.common.web.PagedResponse;
+import com.persagy.dmp.rwd.edit.entity.FuncidDef;
+import com.persagy.dmp.rwd.edit.entity.QFuncidDef;
+import com.persagy.dmp.rwd.edit.util.ClassCodeUtils;
+import com.persagy.dmp.rwd.enums.FuncidCategory;
+import com.persagy.dmp.rwd.enums.FuncidDataType;
+import com.persagy.dmp.rwd.model.ClassDefModel;
+import com.persagy.dmp.rwd.model.FuncidDefModel;
+import com.querydsl.core.types.dsl.BooleanExpression;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Service
+public class FuncidDefService {
+
+    @Autowired
+    private ClassDefService classDefService;
+
+    @Autowired
+    private ClassCodeUtils classCodeUtils;
+
+    @Autowired
+    private CriteriaUtils criteriaUtils;
+
+
+    public ListResponse<FuncidDefModel> queryFuncid(String groupCode, String schemaId, String projectId, String appId, JacksonCriteria request) {
+        ListResponse<FuncidDefModel> resp = new ListResponse<>();
+        log.info("queryFuncid: {} {} {} {} {}", groupCode, schemaId, projectId, appId, JacksonMapper.toSimpleJson(request));
+
+        List<FuncidDefModel> list = null;
+        boolean hasClassCode = request.getCriteria().has("classCode");
+        if (hasClassCode) {
+            list = queryWithClassCode(request);
+        }
+
+        resp.setData(list);
+        return resp;
+    }
+
+    public PagedResponse<FuncidDefModel> query(JacksonCriteria criteria) {
+        // 预处理criteria
+        classCodeUtils.prepareCriteriaForFuncid(criteria, "classCode");
+
+        PagedResponse<FuncidDef> resp = criteriaUtils.query(QFuncidDef.funcidDef, this::parse, criteria);
+        PagedResponse<FuncidDefModel> result = new PagedResponse<>();
+        result.setCount(resp.getCount());
+        List<FuncidDef> dataList = resp.getData();
+        if (dataList != null && dataList.size() > 0) {
+            List<FuncidDefModel> collect = dataList.stream().map(entity -> {
+                FuncidDefModel model = entity.toModel();
+                return model;
+            }).collect(Collectors.toList());
+            result.setData(collect);
+        }
+        return result;
+    }
+
+    private List<BooleanExpression> parse(ObjectNode object) {
+        // TODO
+        List<BooleanExpression> list = new LinkedList<>();
+        QFuncidDef qt = QFuncidDef.funcidDef;
+        list.addAll(criteriaUtils.parse(qt.category, object.get("category"), FuncidCategory.class));
+        list.addAll(criteriaUtils.parse(qt.dataType, object.get("dataType"), FuncidDataType.class));
+        return list;
+    }
+
+    private List<FuncidDefModel> queryWithClassCode(JacksonCriteria request) {
+        JsonNode classCode = request.getCriteria().get("classCode");
+        JacksonCriteria criteria = JacksonCriteria.newInstance();
+        criteria.getCriteria().set("code", classCode);
+        criteria.setWithoutCount(true);
+        ListResponse<ClassDefModel> classDefModelListResponse = classDefService.queryClass(criteria);
+        List<ClassDefModel> classDefModelList = classDefModelListResponse.getData();
+        List<FuncidDefModel> list = new LinkedList<>();
+        if (classDefModelList.size() > 0) {
+            for (ClassDefModel classDefModel : classDefModelList) {
+                JacksonCriteria funcidCriteria = JacksonCriteria.newInstance();
+                funcidCriteria.getCriteria().setAll(request.getCriteria());
+                if (classDefModel.getParentCode() != null) {
+                    funcidCriteria.add("classCode").in(Arrays.asList(classDefModel.getCode(), classDefModel.getParentCode()));
+                } else {
+                    funcidCriteria.add("classCode", classDefModel.getCode());
+                }
+                List<FuncidDefModel> funcidDefModels = queryWithoutClassCode(funcidCriteria);
+                funcidDefModels.forEach(model -> model.setClassCode(classDefModel.getCode()));
+                list.addAll(funcidDefModels);
+            }
+        }
+        return list;
+    }
+
+    private List<FuncidDefModel> queryWithoutClassCode(JacksonCriteria request) {
+        Map<String, FuncidDefModel> cache = new HashMap<>();
+        // 预处理criteria
+        classCodeUtils.prepareCriteriaForFuncid(request, "classCode");
+
+        ObjectNode requestCriteria = request.getCriteria();
+        // 查询平台级
+        JacksonCriteria criteria = JacksonCriteria.newInstance();
+        criteria.getCriteria().setAll(requestCriteria);
+        criteria.add("type", "common");
+        criteria.add("groupCode", "0");
+        criteria.setWithoutCount(true);
+        PagedResponse<FuncidDefModel> queryResp = query(criteria);
+
+        queryResp.getData().forEach(model -> cache.put(model.getClassCode() + "-" + model.getCode(), model));
+
+        // 继承父级信息点
+        List<FuncidDefModel> list = new LinkedList<>();
+        list.addAll(cache.values());
+        return list;
+    }
+}
+

+ 65 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/util/ClassCodeUtils.java

@@ -0,0 +1,65 @@
+package com.persagy.dmp.rwd.edit.util;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.JsonNodeType;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.common.criteria.JacksonCriteria;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author: yaoll
+ * @date: 2020-09-22
+ * @verison: 1.0
+ */
+@Component
+public class ClassCodeUtils {
+
+    public void prepareCriteriaForFuncid(JacksonCriteria criteria, String codeName) {
+        ObjectNode objectNode = criteria.getCriteria();
+        if (objectNode.has(codeName)) {
+            JsonNode classCodeNode = objectNode.get(codeName);
+            JsonNodeType nodeType = classCodeNode.getNodeType();
+            if (nodeType == JsonNodeType.ARRAY) {
+                ArrayNode array = JsonNodeFactory.instance.arrayNode();
+                for (JsonNode jsonNode : ((ArrayNode) classCodeNode)) {
+                    String str = jsonNode.asText();
+                    if (str.indexOf("&") == -1) {
+                        array.add(str);
+                    } else {
+                        array.add(str.substring(str.indexOf("&")));
+                    }
+                }
+                objectNode.remove(codeName);
+                objectNode.set(codeName, array);
+            } else if (nodeType == JsonNodeType.OBJECT) {
+                ObjectNode obj = (ObjectNode) classCodeNode;
+                if (obj.has("$in")) {
+                    JsonNode $in = obj.get("$in");
+                    if ($in.getNodeType() == JsonNodeType.ARRAY) {
+                        ArrayNode array = JsonNodeFactory.instance.arrayNode();
+                        for (JsonNode jsonNode : ((ArrayNode) $in)) {
+                            String str = jsonNode.asText();
+                            if (str.indexOf("&") == -1) {
+                                array.add(str);
+                            } else {
+                                array.add(str.substring(str.indexOf("&")));
+                            }
+                        }
+                        obj.remove("$in");
+                        obj.set("$in", array);
+                    }
+                }
+            } else if (nodeType == JsonNodeType.STRING) {
+                String code = classCodeNode.asText();
+                int idx = code.indexOf("&");
+                if (idx > -1) {
+                    criteria.add(codeName, code.substring(0, idx));
+                }
+            }
+        }
+    }
+
+
+}