Kaynağa Gözat

批量上传修改及代码调整

linhuili 3 yıl önce
ebeveyn
işleme
75fbbc5bbc

+ 11 - 5
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/controller/DownloadController.java

@@ -3,6 +3,7 @@ package com.persagy.dmp.rwd.edit.controller;
 import com.persagy.dmp.rwd.edit.service.DownloadService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -13,10 +14,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.io.BufferedInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
+import java.io.*;
 import java.net.URLEncoder;
 
 @Slf4j
@@ -39,11 +37,19 @@ public class DownloadController {
 //    }
 
     @GetMapping("/download")
-    private void download(@RequestParam String type, HttpServletRequest req, HttpServletResponse resp){
+    private void download(@RequestParam String type, HttpServletRequest req, HttpServletResponse resp) throws Exception{
         //读取文件
         InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("static/file/批量上传变更记录模板.xlsx");
         String fileName = "批量上传变更记录模板.xlsx";
         InputStream inputStream = new BufferedInputStream(resourceAsStream);
+        Workbook workbook = new XSSFWorkbook(inputStream);
+        downloadService.fillFuncIndexDataToWorkbook(workbook);
+
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        workbook.write(bos);
+        byte[] brray = bos.toByteArray();
+        inputStream = new ByteArrayInputStream(brray);
+
         OutputStream out = null;
         try {
             String resultFileName = URLEncoder.encode(fileName, "UTF-8");

+ 37 - 7
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/ClassDefChangeRecordService.java

@@ -1,5 +1,6 @@
 package com.persagy.dmp.rwd.edit.service;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ArrayNode;
@@ -23,11 +24,11 @@ import com.persagy.dmp.rwd.edit.repository.ClassDefRepository;
 import com.persagy.dmp.rwd.edit.util.MapObjUtil;
 import com.persagy.dmp.rwd.model.ClassDefModel;
 import com.querydsl.core.types.dsl.BooleanExpression;
+import lombok.Data;
 import org.apache.commons.lang.ObjectUtils;
 import org.apache.commons.lang.StringUtils;
 
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.beanutils.BeanMap;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -136,14 +137,16 @@ public class ClassDefChangeRecordService {
         }
 
         List<ClassDefModel> classDefList = queryClassDef(code, null, null);
+        CacheModel cache = new CacheModel();
         if (EnumOperationType.create.equals(param.getOperationType())) {
             if (classDefList.size() > 0) {
                 response.setFail("code is exists");
                 return response;
             }
             //记录所有变更内容
-            Map<String, Object> afterParamMap = MapObjUtil.object2Map(param);
-            ArrayNode arrayNode = funcidDefChangeRecordService.addCreateRecord(afterParamMap);
+            BeanUtils.copyProperties(param,cache);
+            Map<String, Object> afterParamMap = MapObjUtil.object2Map(cache);
+            ArrayNode arrayNode = addCreateRecord(afterParamMap);
             if(arrayNode!=null && arrayNode.size()>0){
                 param.setOperationContentAfter(arrayNode);
             }
@@ -169,7 +172,8 @@ public class ClassDefChangeRecordService {
             param.setEquipmentCode(classDef.getEquipmentCode());
             param.setParentCode(classDef.getParentCode());
             //添加变更记录
-            addChangeRecord(classDef, param);
+            BeanUtils.copyProperties(param,cache);
+            addChangeRecord(classDef, param,cache);
         }
         /*QClassDefChangeRecord qt = QClassDefChangeRecord.classDefChangeRecord;
         BooleanExpression ex = qt.code.eq(code).and(qt.state.eq(EnumVersionState.INIT)).and(qt.version.isNull());
@@ -426,17 +430,18 @@ public class ClassDefChangeRecordService {
      * 添加变更记录
      * @param classDef
      * @param param
+     * @param cache
      */
-    private void addChangeRecord(ClassDefModel classDef, ClassDefChangeRecord param){
+    private void addChangeRecord(ClassDefModel classDef, ClassDefChangeRecord param,CacheModel cache){
         Map<String, Object> beforeParamMap = MapObjUtil.object2Map(classDef);
-        Map<String, Object> afterParamMap = MapObjUtil.object2Map(param);
+        Map<String, Object> afterParamMap = MapObjUtil.object2Map(cache);
 
         //比较变更记录
         ArrayNode operationContentBefore = JsonNodeFactory.instance.arrayNode();
         ArrayNode operationContentAfter = JsonNodeFactory.instance.arrayNode();
         Set<?> keySets = Collections.unmodifiableSet(beforeParamMap.keySet());
         for (Map.Entry<?, ?> afterEntry : afterParamMap.entrySet()) {
-            if(!keySets.contains(afterEntry.getKey()) || "id".equals(afterEntry.getKey()) || "version".equals(afterEntry.getKey())){
+            if(!keySets.contains(afterEntry.getKey())){
                 continue;
             }
             Object afterValue = afterEntry.getValue();
@@ -467,5 +472,30 @@ public class ClassDefChangeRecordService {
         param.setOperationContentAfter(operationContentAfter);
     }
 
+    /**
+     * 获取新增记录
+     * @param afterParamMap
+     */
+    public ArrayNode addCreateRecord(Map<?, ?> afterParamMap){
+        ArrayNode operationContentAfter = JsonNodeFactory.instance.arrayNode();
+        for (Map.Entry<?, ?> afterEntry : afterParamMap.entrySet()) {
+            Object value = afterEntry.getValue();
+            if(value == null){
+                continue;
+            }
+            ObjectNode object = JsonNodeFactory.instance.objectNode();
+            object.put(afterEntry.getKey().toString(),value.toString());
+            operationContentAfter.add(object);
+        }
+        return operationContentAfter;
+    }
+
+    @Data
+    private static class CacheModel {
+        private String code;
+        private String name;
+        private String aliasCode;
+        private String aliasName;
+    }
 }
 

+ 46 - 6
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/DownloadService.java

@@ -1,23 +1,27 @@
 package com.persagy.dmp.rwd.edit.service;
 
+import cn.hutool.core.util.StrUtil;
+import com.persagy.common.criteria.JacksonCriteria;
 import com.persagy.dmp.common.excel.ExcelUtils;
 import com.persagy.dmp.common.excel.SheetWriteInfo;
 import com.persagy.dmp.rwd.edit.entity.ClassDefChangeRecord;
 import com.persagy.dmp.rwd.edit.entity.FuncidDefChangeRecord;
 import com.persagy.dmp.rwd.edit.model.DownloadModel;
+import com.persagy.dmp.rwd.model.FuncidDefModel;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.poi.ss.usermodel.HorizontalAlignment;
-import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.usermodel.*;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
 
 @Slf4j
 @Service
 public class DownloadService {
 
+    @Autowired
+    private FuncidDefService funcidDefService;
+
     public DownloadModel download(String type) {
         if ("changeDataTemplate".equals(type)) {
             return downloadChangeDataTemplate();
@@ -124,5 +128,41 @@ public class DownloadService {
         });
         return info;
     }
-}
 
+    /**
+     * 信息点位置数据填充
+     *
+     * @param workbook
+     */
+    public void fillFuncIndexDataToWorkbook(Workbook workbook) throws Exception {
+        // 信息点位置sheet页数据填充
+        Sheet listSheet = workbook.getSheetAt(3);
+        fillFuncIdDefData(listSheet);
+    }
+
+    /**
+     * 列表数据填充
+     * @param sheet
+     */
+    private void fillFuncIdDefData(Sheet sheet) {
+        //查询所有信息点
+        List<FuncidDefModel> funcidDefModelList = funcidDefService.queryWithoutClassCode(JacksonCriteria.newInstance());
+        funcidDefModelList.sort((k1,k2)->{
+            int compareTo = StrUtil.blankToDefault(k1.getClassCode(),"").compareTo(StrUtil.blankToDefault(k2.getClassCode(),""));
+            if (0==compareTo) {
+                return k1.getOrderSeq().compareTo(k2.getOrderSeq());
+            }
+            return compareTo;
+        });
+        int rowIndex = 1;
+        //数据填充
+        if (funcidDefModelList != null) {
+            for (FuncidDefModel datum : funcidDefModelList) {
+                Row row = sheet.createRow(rowIndex++);
+                row.createCell(0).setCellValue(datum.getClassCode());
+                row.createCell(1).setCellValue(datum.getName());
+                row.createCell(2).setCellValue(datum.getOrderSeq());
+            }
+        }
+    }
+}

+ 49 - 9
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/FuncidDefChangeRecordService.java

@@ -25,18 +25,25 @@ import com.persagy.dmp.rwd.edit.repository.FuncidDefChangeRecordRepository;
 import com.persagy.dmp.rwd.edit.repository.FuncidDefRepository;
 import com.persagy.dmp.rwd.edit.repository.RwdeditRefTypeRepository;
 import com.persagy.dmp.rwd.edit.util.MapObjUtil;
+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.persagy.dmp.rwd.model.RwdeditRefTypeInfosModel;
 import com.querydsl.core.types.dsl.BooleanExpression;
 import io.micrometer.core.instrument.util.StringUtils;
+import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.beanutils.BeanMap;
 import org.apache.commons.lang.ObjectUtils;
+import org.hibernate.annotations.Type;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import javax.persistence.Column;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
 import javax.transaction.Transactional;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -174,13 +181,15 @@ public class FuncidDefChangeRecordService {
         if (funcidDefModelList != null) {
             funcidDef = funcidDefModelList.get(0);
         }
+        CacheModel cache = new CacheModel();
         if (EnumOperationType.create.equals(param.getOperationType())) {
             if (funcidDef != null) {
                 response.setFail("code is exists");
                 return response;
             }
             //记录所有变更内容
-            Map<String, Object> afterParamMap = MapObjUtil.object2Map(param);
+            BeanUtils.copyProperties(param,cache);
+            Map<String, Object> afterParamMap = MapObjUtil.object2Map(cache);
             ArrayNode arrayNode = addCreateRecord(afterParamMap);
             if(arrayNode!=null && arrayNode.size()>0){
                 param.setOperationContentAfter(arrayNode);
@@ -231,7 +240,8 @@ public class FuncidDefChangeRecordService {
             param.setSubFlag(funcidDef.getSubFlag());
             param.setWeakPoint(funcidDef.getWeakPoint());
            //添加变更记录
-            addChangeRecord(funcidDef,param);
+            BeanUtils.copyProperties(param,cache);
+            addChangeRecord(funcidDef,param,cache);
         }
 
         /*QFuncidDefChangeRecord qt = QFuncidDefChangeRecord.funcidDefChangeRecord;
@@ -247,6 +257,9 @@ public class FuncidDefChangeRecordService {
         param.setOperationTime(new Date());
         param.setValid(true);
         param.setState(EnumVersionState.INIT);
+        if(StringUtils.isEmpty(param.getShareType())){
+            param.setShareType(FuncidShareTypeEnum.SELF.getValue());
+        }
         repository.save(param);
         response.add("id", param.getId());
         return response;
@@ -764,17 +777,18 @@ public class FuncidDefChangeRecordService {
      * 添加变更记录
      * @param funcidDef
      * @param param
+     * @param cache
      */
-    private void addChangeRecord(FuncidDefModel funcidDef,FuncidDefChangeRecord param){
+    private void addChangeRecord(FuncidDefModel funcidDef,FuncidDefChangeRecord param,CacheModel cache){
         Map<String, Object> beforeParamMap = MapObjUtil.object2Map(funcidDef);
-        Map<String, Object> afterParamMap = MapObjUtil.object2Map(param);
+        Map<String, Object> afterParamMap = MapObjUtil.object2Map(cache);
         //比较变更记录
         ArrayNode operationContentBefore = JsonNodeFactory.instance.arrayNode();
         ArrayNode operationContentAfter = JsonNodeFactory.instance.arrayNode();
         Set<?> keySets = Collections.unmodifiableSet(beforeParamMap.keySet());
         for (Map.Entry<?, ?> afterEntry : afterParamMap.entrySet()) {
             String key = afterEntry.getKey().toString();
-            if(!keySets.contains(key) || "id".equals(key) || "version".equals(key)|| "orderSeq".equals(key) || "shareType".equals(key)){
+            if(!keySets.contains(key)){
                 continue;
             }
             Object afterValue = afterEntry.getValue();
@@ -817,10 +831,6 @@ public class FuncidDefChangeRecordService {
         for (Map.Entry<?, ?> afterEntry : afterParamMap.entrySet()) {
             String key = afterEntry.getKey().toString();
             Object value = afterEntry.getValue();
-            if("groupCode".equals(key) || "projectId".equals(key) || "type".equals(key)|| "operationType".equals(key)
-                 || "classCode".equals(key) || "objType".equals(key) || "parentCode".equals(key)|| "orderSeq".equals(key) || "shareType".equals(key)){
-                continue;
-            }
             if(value == null){
                 continue;
             }
@@ -841,5 +851,35 @@ public class FuncidDefChangeRecordService {
         }
         return operationContentAfter;
     }
+
+
+    @Data
+    private static class CacheModel {
+        private String code;
+        private String origCode;
+        private String name;
+        private String aliasCode;
+        private String aliasName;
+        @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;
+    }
+
 }
 

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

@@ -161,7 +161,7 @@ public class FuncidDefService {
         return list;
     }
 
-    private List<FuncidDefModel> queryWithoutClassCode(JacksonCriteria request) {
+    public List<FuncidDefModel> queryWithoutClassCode(JacksonCriteria request) {
         Map<String, FuncidDefModel> cache = new HashMap<>();
         // 预处理criteria
         classCodeUtils.prepareCriteriaForFuncid(request, "classCode");

+ 15 - 12
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/UploadService.java

@@ -86,18 +86,19 @@ public class UploadService {
         info2.add(0, "classCode", "string");
         info2.add(2, "firstTag", "string");
         info2.add(3, "secondTag", "string");
-        info2.add(4, "code", "string");
-        info2.add(5, "aliasCode", "string");
-        info2.add(6, "name", "string");
-        info2.add(7, "category", "string");
-        info2.add(8, "priority", "string");
-        info2.add(9, "unit", "string");
-        info2.add(10, "dataType", "string");
-        info2.add(11, "isMultiple", "integer");
-        info2.add(12, "isRegion", "integer");
-        info2.add(13, "dataSource", "string");
-        info2.add(14, "formater", "string");
-        info2.add(15, "note", "string");
+        info2.add(4, "orderSeq", "integer");
+        info2.add(5, "code", "string");
+        info2.add(6, "aliasCode", "string");
+        info2.add(7, "name", "string");
+        info2.add(8, "category", "string");
+        info2.add(9, "priority", "string");
+        info2.add(10, "unit", "string");
+        info2.add(11, "dataType", "string");
+        info2.add(12, "isMultiple", "integer");
+        info2.add(13, "isRegion", "integer");
+        info2.add(14, "dataSource", "string");
+        info2.add(15, "formater", "string");
+        info2.add(16, "note", "string");
 
         List<List<Map<String, Object>>> result = ExcelUtils.read(file.getInputStream(), Arrays.asList(info1, info2), Arrays.asList("类型变更", "信息点变更"));
         List<ClassDefChangeRecord> classDefChangeRecordList = compareDataExcelReadClass(result.get(0));
@@ -197,6 +198,7 @@ public class UploadService {
             String classCode = MapUtils.getString(map, "classCode");
             String firstTag = MapUtils.getString(map, "firstTag");
             String secondTag = MapUtils.getString(map, "secondTag");
+            Integer orderSeq = MapUtils.getInteger(map, "orderSeq");
             String code = MapUtils.getString(map, "code");
             String aliasCode = MapUtils.getString(map, "aliasCode");
             String name = MapUtils.getString(map, "name");
@@ -321,6 +323,7 @@ public class UploadService {
             changeRecord.setNote(note);
             changeRecord.setFirstTag(firstTag);
             changeRecord.setSecondTag(secondTag);
+            changeRecord.setOrderSeq(orderSeq);
             funcidDefChangeRecordList.add(changeRecord);
         }
         return funcidDefChangeRecordList;

BIN
dmp-rwd-edit/src/main/resources/static/file/批量上传变更记录模板.xlsx