Browse Source

添加上传excel变更记录

fengyanjie 4 years ago
parent
commit
853768af54

+ 8 - 0
dmp-rwd-edit/pom.xml

@@ -87,6 +87,14 @@
             <groupId>com.google.code.gson</groupId>
             <artifactId>gson</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi-ooxml</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

+ 16 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/controller/ClassDefChangeRecordController.java

@@ -7,7 +7,9 @@ import com.persagy.dmp.rwd.edit.entity.ClassDefChangeRecord;
 import com.persagy.dmp.rwd.edit.service.ClassDefChangeRecordService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
 import java.util.List;
 
 @RestController
@@ -42,4 +44,18 @@ public class ClassDefChangeRecordController {
         return service.addVersion(version, idList);
     }
 
+    @PostMapping("/upload")
+    public MapResponse upload(@RequestParam("file") MultipartFile file) {
+        List<ClassDefChangeRecord> classDefChangeRecordList = null;
+        try {
+            classDefChangeRecordList = service.CompareDataExcelRead(file);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        for (ClassDefChangeRecord classDefChangeRecord : classDefChangeRecordList) {
+            service.create(classDefChangeRecord);
+        }
+        return new MapResponse();
+    }
+
 }

+ 16 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/controller/FuncidDefChangeRecordController.java

@@ -7,7 +7,9 @@ import com.persagy.dmp.rwd.edit.entity.FuncidDefChangeRecord;
 import com.persagy.dmp.rwd.edit.service.FuncidDefChangeRecordService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
 import java.util.List;
 
 @RestController
@@ -41,4 +43,18 @@ public class FuncidDefChangeRecordController {
     public MapResponse addVersion(@RequestParam String version, @RequestBody List<Integer> idList) {
         return service.addVersion(version, idList);
     }
+
+    @PostMapping("/upload")
+    public MapResponse upload(@RequestParam("file") MultipartFile file) {
+        List<FuncidDefChangeRecord> funcidDefChangeRecordList = null;
+        try {
+            funcidDefChangeRecordList = service.CompareDataExcelRead(file);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        for (FuncidDefChangeRecord funcidDefChangeRecord : funcidDefChangeRecordList) {
+            service.create(funcidDefChangeRecord);
+        }
+        return new MapResponse();
+    }
 }

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

@@ -3,8 +3,11 @@ 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.MapResponse;
 import com.persagy.common.web.PagedResponse;
+import com.persagy.dmp.common.excel.ExcelUtils;
+import com.persagy.dmp.common.excel.SheetReadInfo;
 import com.persagy.dmp.rwd.edit.config.web.UserUtils;
 import com.persagy.dmp.rwd.edit.entity.ClassDef;
 import com.persagy.dmp.rwd.edit.entity.ClassDefChangeRecord;
@@ -13,13 +16,18 @@ import com.persagy.dmp.rwd.edit.enumeration.EnumOperationType;
 import com.persagy.dmp.rwd.edit.enumeration.EnumVersionState;
 import com.persagy.dmp.rwd.edit.repository.ClassDefChangeRecordRepository;
 import com.persagy.dmp.rwd.edit.repository.ClassDefRepository;
+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.apache.commons.collections.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.transaction.Transactional;
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.*;
 
 @Slf4j
@@ -321,9 +329,72 @@ public class ClassDefChangeRecordService {
         if (codeList != null) {
             criteria.add("code").in(codeList);
         }
-        PagedResponse<ClassDefModel> query = classDefService.query(criteria);
+        ListResponse<ClassDefModel> query = classDefService.queryClass(criteria);
         List<ClassDefModel> data = query.getData();
         return data;
     }
+
+    public List<ClassDefChangeRecord> CompareDataExcelRead(MultipartFile file) throws IOException {
+        SheetReadInfo info = new SheetReadInfo();
+        info.setStartRow(1);
+        info.add(0, "code", "string");
+        info.add(1, "objType", "string");
+        info.add(2, "name", "string");
+        info.add(3, "aliasCode", "string");
+        info.add(4, "aliasName", "string");
+        info.add(5, "majorCode", "string");
+        info.add(6, "systemCode", "string");
+        info.add(7, "equipmentCode", "string");
+        info.add(8, "parentCode", "string");
+        info.add(9, "operationType", "string");
+
+        InputStream inputStream = file.getInputStream();
+        List<Map<String, Object>> result = ExcelUtils.read(inputStream, info);
+
+        List<ClassDefChangeRecord> classDefChangeRecordList = new ArrayList<>();
+        for (Map<String, Object> map : result) {
+            String code = MapUtils.getString(map, "code");
+            String objType = MapUtils.getString(map, "objType");
+            String name = MapUtils.getString(map, "name");
+            String aliasCode = MapUtils.getString(map, "aliasCode");
+            String aliasName = MapUtils.getString(map, "aliasName");
+            String majorCode = MapUtils.getString(map, "majorCode");
+            String systemCode = MapUtils.getString(map, "systemCode");
+            String equipmentCode = MapUtils.getString(map, "equipmentCode");
+            String parentCode = MapUtils.getString(map, "parentCode");
+            String operationType = MapUtils.getString(map, "operationType");
+            if (code == null) {
+                return null;
+            }
+            if (objType == null) {
+                return null;
+            }
+            if (operationType == null) {
+                return null;
+            }
+
+            ClassDefChangeRecord classDefChangeRecord = new ClassDefChangeRecord();
+            classDefChangeRecord.setCode(code);
+            classDefChangeRecord.setName(name);
+            classDefChangeRecord.setObjType(ObjType.valueOf(objType));
+            classDefChangeRecord.setAliasCode(aliasCode);
+            classDefChangeRecord.setAliasName(aliasName);
+            classDefChangeRecord.setMajorCode(majorCode);
+            classDefChangeRecord.setSystemCode(systemCode);
+            classDefChangeRecord.setEquipmentCode(equipmentCode);
+            classDefChangeRecord.setParentCode(parentCode);
+            classDefChangeRecord.setOperationType(EnumOperationType.valueOf(operationType));
+
+            classDefChangeRecord.setType("common");
+            classDefChangeRecord.setOperationUser(UserUtils.currentUserId() + "");
+            classDefChangeRecord.setOperationTime(new Date());
+            classDefChangeRecord.setValid(true);
+            classDefChangeRecord.setState(EnumVersionState.INIT);
+            classDefChangeRecord.setGroupCode("0");
+            classDefChangeRecord.setProjectId("0");
+            classDefChangeRecordList.add(classDefChangeRecord);
+        }
+        return classDefChangeRecordList;
+    }
 }
 

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

@@ -5,8 +5,11 @@ 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.MapResponse;
 import com.persagy.common.web.PagedResponse;
+import com.persagy.dmp.common.excel.ExcelUtils;
+import com.persagy.dmp.common.excel.SheetReadInfo;
 import com.persagy.dmp.rwd.edit.config.web.UserUtils;
 import com.persagy.dmp.rwd.edit.entity.FuncidDef;
 import com.persagy.dmp.rwd.edit.entity.FuncidDefChangeRecord;
@@ -16,14 +19,19 @@ import com.persagy.dmp.rwd.edit.enumeration.EnumOperationType;
 import com.persagy.dmp.rwd.edit.enumeration.EnumVersionState;
 import com.persagy.dmp.rwd.edit.repository.FuncidDefChangeRecordRepository;
 import com.persagy.dmp.rwd.edit.repository.FuncidDefRepository;
+import com.persagy.dmp.rwd.enums.FuncidCategory;
 import com.persagy.dmp.rwd.enums.FuncidDataType;
 import com.persagy.dmp.rwd.model.FuncidDefModel;
 import com.querydsl.core.types.dsl.BooleanExpression;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.transaction.Transactional;
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.*;
 
 @Slf4j
@@ -438,12 +446,109 @@ public class FuncidDefChangeRecordService {
         criteria.add("type", "common");
         criteria.add("code", code);
         criteria.add("classCode", classCode);
-        PagedResponse<FuncidDefModel> query = funcidDefService.query(criteria);
+        ListResponse<FuncidDefModel> query = funcidDefService.queryFuncid(criteria);
         List<FuncidDefModel> data = query.getData();
         if (data != null && data.size() != 0) {
             return data.get(0);
         }
         return null;
     }
+
+    public List<FuncidDefChangeRecord> CompareDataExcelRead(MultipartFile file) throws IOException {
+        SheetReadInfo info = new SheetReadInfo();
+        info.setStartRow(1);
+        info.add(0, "code", "string");
+        info.add(1, "name", "string");
+        info.add(2, "aliasCode", "string");
+        info.add(3, "aliasName", "string");
+        info.add(4, "classCode", "string");
+        info.add(5, "category", "string");
+        info.add(6, "firstTag", "string");
+        info.add(7, "secondTag", "string");
+        info.add(8, "priority", "string");
+        info.add(9, "inputMode", "string");
+        info.add(10, "unit", "string");
+        info.add(11, "dataType", "string");
+        info.add(12, "isMultiple", "integer");
+        info.add(13, "isRegion", "integer");
+        info.add(14, "formater", "string");
+        info.add(15, "dataSource", "string");
+        info.add(16, "note", "string");
+        info.add(17, "subFlag", "integer");
+        info.add(18, "weakPoint", "integer");
+        info.add(19, "operationType", "string");
+
+        InputStream inputStream = file.getInputStream();
+        List<Map<String, Object>> result = ExcelUtils.read(inputStream, info);
+
+        List<FuncidDefChangeRecord> funcidDefChangeRecordList = new ArrayList<>();
+        for (Map<String, Object> map : result) {
+            String code = MapUtils.getString(map, "code");
+            String name = MapUtils.getString(map, "name");
+            String aliasCode = MapUtils.getString(map, "aliasCode");
+            String aliasName = MapUtils.getString(map, "aliasName");
+            String classCode = MapUtils.getString(map, "classCode");
+            String category = MapUtils.getString(map, "category");
+            String firstTag = MapUtils.getString(map, "firstTag");
+            String secondTag = MapUtils.getString(map, "secondTag");
+            String priority = MapUtils.getString(map, "priority");
+            String inputMode = MapUtils.getString(map, "inputMode");
+            String unit = MapUtils.getString(map, "unit");
+            String dataType = MapUtils.getString(map, "dataType");
+            Boolean isMultiple = MapUtils.getBoolean(map, "isMultiple");
+            Boolean isRegion = MapUtils.getBoolean(map, "isRegion");
+            String formater = MapUtils.getString(map, "formater");
+            String dataSource = MapUtils.getString(map, "dataSource");
+            String note = MapUtils.getString(map, "note");
+            Boolean subFlag = MapUtils.getBoolean(map, "subFlag");
+            Boolean weakPoint = MapUtils.getBoolean(map, "weakPoint");
+            String operationType = MapUtils.getString(map, "operationType");
+            if (code == null) {
+                return null;
+            }
+            if (classCode == null) {
+                return null;
+            }
+            if (category == null) {
+                return null;
+            }
+            if (operationType == null) {
+                return null;
+            }
+
+            FuncidDefChangeRecord funcidDefChangeRecord = new FuncidDefChangeRecord();
+            funcidDefChangeRecord.setCode(code);
+            funcidDefChangeRecord.setName(name);
+            funcidDefChangeRecord.setAliasCode(aliasCode);
+            funcidDefChangeRecord.setAliasName(aliasName);
+            funcidDefChangeRecord.setClassCode(classCode);
+            funcidDefChangeRecord.setCategory(FuncidCategory.valueOf(category));
+            funcidDefChangeRecord.setFirstTag(firstTag);
+            funcidDefChangeRecord.setSecondTag(secondTag);
+            funcidDefChangeRecord.setPriority(priority);
+            funcidDefChangeRecord.setInputMode(inputMode);
+            funcidDefChangeRecord.setUnit(unit);
+            funcidDefChangeRecord.setDataType(FuncidDataType.valueOf(dataType));
+            funcidDefChangeRecord.setIsMultiple(isMultiple);
+            funcidDefChangeRecord.setIsRegion(isRegion);
+            funcidDefChangeRecord.setFormater(formater);
+            ArrayNode dataSourceArray = JacksonMapper.toObject(dataSource, ArrayNode.class);
+            funcidDefChangeRecord.setDataSource(dataSourceArray);
+            funcidDefChangeRecord.setNote(note);
+            funcidDefChangeRecord.setSubFlag(subFlag);
+            funcidDefChangeRecord.setWeakPoint(weakPoint);
+            funcidDefChangeRecord.setOperationType(EnumOperationType.valueOf(operationType));
+
+            funcidDefChangeRecord.setType("common");
+            funcidDefChangeRecord.setOperationUser(UserUtils.currentUserId() + "");
+            funcidDefChangeRecord.setOperationTime(new Date());
+            funcidDefChangeRecord.setValid(true);
+            funcidDefChangeRecord.setState(EnumVersionState.INIT);
+            funcidDefChangeRecord.setGroupCode("0");
+            funcidDefChangeRecord.setProjectId("0");
+            funcidDefChangeRecordList.add(funcidDefChangeRecord);
+        }
+        return funcidDefChangeRecordList;
+    }
 }