|
@@ -0,0 +1,618 @@
|
|
|
|
+package com.persagy.dmp.rwd.edit.service;
|
|
|
|
+
|
|
|
|
+import com.fasterxml.jackson.databind.node.ArrayNode;
|
|
|
|
+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;
|
|
|
|
+import com.persagy.dmp.rwd.edit.entity.QFuncidDefChangeRecord;
|
|
|
|
+import com.persagy.dmp.rwd.edit.entity.RwdeditRefTypeInfos;
|
|
|
|
+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.ClassDefModel;
|
|
|
|
+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
|
|
|
|
+@Service
|
|
|
|
+public class FuncidDefChangeRecordService {
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ FuncidDefChangeRecordRepository repository;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ FuncidDefService funcidDefService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ ClassDefService classDefService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ RwdeditRefTypeInfosService rwdeditRefTypeInfosService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ CriteriaUtils criteriaUtils;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ FuncidDefRepository funcidDefRepository;
|
|
|
|
+
|
|
|
|
+ private List<BooleanExpression> parse(ObjectNode object) {
|
|
|
|
+ List<BooleanExpression> list = new LinkedList<>();
|
|
|
|
+ QFuncidDefChangeRecord qt = QFuncidDefChangeRecord.funcidDefChangeRecord;
|
|
|
|
+ list.addAll(CriteriaUtils.parse(qt.id, object.get("id")));
|
|
|
|
+ list.addAll(CriteriaUtils.parse(qt.code, object.get("code")));
|
|
|
|
+ list.addAll(CriteriaUtils.parse(qt.operationType, object.get("operationType"), EnumOperationType.class));
|
|
|
|
+ list.addAll(CriteriaUtils.parse(qt.operationUser, object.get("operationUser")));
|
|
|
|
+ list.addAll(CriteriaUtils.parse(qt.operationTime, object.get("operationTime")));
|
|
|
|
+ list.addAll(CriteriaUtils.parse(qt.confirmUser, object.get("confirmUser")));
|
|
|
|
+ list.addAll(CriteriaUtils.parse(qt.confirmTime, object.get("confirmTime")));
|
|
|
|
+ list.addAll(CriteriaUtils.parse(qt.publishUser, object.get("publishUser")));
|
|
|
|
+ list.addAll(CriteriaUtils.parse(qt.publishTime, object.get("publishTime")));
|
|
|
|
+ list.addAll(CriteriaUtils.parse(qt.finishTime, object.get("finishTime")));
|
|
|
|
+ list.addAll(CriteriaUtils.parse(qt.state, object.get("state"), EnumVersionState.class));
|
|
|
|
+ list.addAll(CriteriaUtils.parse(qt.version, object.get("version")));
|
|
|
|
+ return list;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public PagedResponse<FuncidDefChangeRecord> query(JacksonCriteria criteria) {
|
|
|
|
+ PagedResponse<FuncidDefChangeRecord> result = criteriaUtils.query(QFuncidDefChangeRecord.funcidDefChangeRecord, this::parse, criteria);
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Transactional
|
|
|
|
+ public MapResponse create(FuncidDefChangeRecord param) {
|
|
|
|
+ MapResponse response = new MapResponse();
|
|
|
|
+ String code = param.getCode();
|
|
|
|
+ String classCode = param.getClassCode();
|
|
|
|
+ if (code == null) {
|
|
|
|
+ response.setFail("code is required");
|
|
|
|
+ return response;
|
|
|
|
+ }
|
|
|
|
+ if (classCode == null) {
|
|
|
|
+ response.setFail("classCode is required");
|
|
|
|
+ return response;
|
|
|
|
+ }
|
|
|
|
+ FuncidDefModel funcidDef = null;
|
|
|
|
+ List<FuncidDefModel> funcidDefModelList = queryFuncidDef(code, classCode, null);
|
|
|
|
+ if (funcidDefModelList != null) {
|
|
|
|
+ funcidDef = funcidDefModelList.get(0);
|
|
|
|
+ }
|
|
|
|
+ if (EnumOperationType.create.equals(param.getOperationType())) {
|
|
|
|
+ if (funcidDef != null) {
|
|
|
|
+ response.setFail("code is exists");
|
|
|
|
+ return response;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ if (funcidDef == null) {
|
|
|
|
+ response.setFail("code not exists");
|
|
|
|
+ return response;
|
|
|
|
+ }
|
|
|
|
+ param.setOrigCode(funcidDef.getOrigCode());
|
|
|
|
+ param.setName(funcidDef.getName());
|
|
|
|
+ if (param.getAliasCode() == null) {
|
|
|
|
+ param.setAliasCode(funcidDef.getAliasCode());
|
|
|
|
+ }
|
|
|
|
+ if (param.getAliasName() == null) {
|
|
|
|
+ param.setAliasName(funcidDef.getAliasName());
|
|
|
|
+ }
|
|
|
|
+ param.setClassCode(funcidDef.getClassCode());
|
|
|
|
+ param.setCategory(funcidDef.getCategory());
|
|
|
|
+ param.setType(funcidDef.getType());
|
|
|
|
+ param.setGroupCode(funcidDef.getGroupCode());
|
|
|
|
+ param.setProjectId(funcidDef.getProjectId());
|
|
|
|
+ if (param.getFirstTag() == null) {
|
|
|
|
+ param.setFirstTag(funcidDef.getFirstTag());
|
|
|
|
+ }
|
|
|
|
+ if (param.getSecondTag() == null) {
|
|
|
|
+ param.setSecondTag(funcidDef.getSecondTag());
|
|
|
|
+ }
|
|
|
|
+ param.setPriority(funcidDef.getPriority());
|
|
|
|
+ param.setInputMode(funcidDef.getInputMode());
|
|
|
|
+ param.setUnit(funcidDef.getUnit());
|
|
|
|
+ param.setDataType(funcidDef.getDataType());
|
|
|
|
+ param.setOrigDataType(funcidDef.getOrigDataType());
|
|
|
|
+ param.setIsMultiple(funcidDef.getIsMultiple());
|
|
|
|
+ param.setIsRegion(funcidDef.getIsRegion());
|
|
|
|
+ param.setFormater(funcidDef.getFormater());
|
|
|
|
+ param.setDataSource(funcidDef.getDataSource());
|
|
|
|
+ if (param.getNote() == null) {
|
|
|
|
+ param.setNote(funcidDef.getNote());
|
|
|
|
+ }
|
|
|
|
+ param.setSubFlag(funcidDef.getSubFlag());
|
|
|
|
+ param.setWeakPoint(funcidDef.getWeakPoint());
|
|
|
|
+ }
|
|
|
|
+ QFuncidDefChangeRecord qt = QFuncidDefChangeRecord.funcidDefChangeRecord;
|
|
|
|
+ BooleanExpression ex = qt.code.eq(code).and(qt.state.eq(EnumVersionState.INIT)).and(qt.version.isNull());
|
|
|
|
+ Iterable<FuncidDefChangeRecord> all = repository.findAll(ex);
|
|
|
|
+ List<FuncidDefChangeRecord> list = new ArrayList<>();
|
|
|
|
+ all.forEach(list::add);
|
|
|
|
+ if (list.size() > 0) {
|
|
|
|
+ repository.deleteAll(list);
|
|
|
|
+ }
|
|
|
|
+ param.setOperationUser(UserUtils.currentUserId() + "");
|
|
|
|
+ param.setOperationTime(new Date());
|
|
|
|
+ param.setValid(true);
|
|
|
|
+ param.setState(EnumVersionState.INIT);
|
|
|
|
+ repository.save(param);
|
|
|
|
+ response.add("id", param.getId());
|
|
|
|
+ return response;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Transactional
|
|
|
|
+ public MapResponse update(FuncidDefChangeRecord param) {
|
|
|
|
+ MapResponse response = new MapResponse();
|
|
|
|
+ Optional<FuncidDefChangeRecord> optional = repository.findById(param.getId());
|
|
|
|
+ if (!optional.isPresent()) {
|
|
|
|
+ response.setFail("code not exists");
|
|
|
|
+ return response;
|
|
|
|
+ }
|
|
|
|
+ FuncidDefChangeRecord changeRecord = optional.get();
|
|
|
|
+ if (EnumVersionState.INIT.equals(changeRecord.getState()) && changeRecord.getVersion() == null) {
|
|
|
|
+ if (param.getAliasCode() != null) {
|
|
|
|
+ changeRecord.setAliasCode(param.getAliasCode());
|
|
|
|
+ }
|
|
|
|
+ if (param.getAliasName() != null) {
|
|
|
|
+ changeRecord.setAliasName(param.getAliasName());
|
|
|
|
+ }
|
|
|
|
+ if (param.getFirstTag() != null) {
|
|
|
|
+ changeRecord.setFirstTag(param.getFirstTag());
|
|
|
|
+ }
|
|
|
|
+ if (param.getSecondTag() != null) {
|
|
|
|
+ changeRecord.setSecondTag(param.getSecondTag());
|
|
|
|
+ }
|
|
|
|
+ if (param.getNote() != null) {
|
|
|
|
+ changeRecord.setNote(param.getNote());
|
|
|
|
+ }
|
|
|
|
+ if (param.getPriority() != null) {
|
|
|
|
+ changeRecord.setPriority(param.getPriority());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ repository.save(changeRecord);
|
|
|
|
+ return response;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Transactional
|
|
|
|
+ public MapResponse addVersion(String version, List<Integer> idList) {
|
|
|
|
+ MapResponse response = new MapResponse();
|
|
|
|
+ Integer num = repository.addVersion(version, idList);
|
|
|
|
+ response.setMessage("update num: " + num);
|
|
|
|
+ return response;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Transactional
|
|
|
|
+ public MapResponse delete(FuncidDefChangeRecord param) {
|
|
|
|
+ MapResponse response = new MapResponse();
|
|
|
|
+ Optional<FuncidDefChangeRecord> optional = repository.findById(param.getId());
|
|
|
|
+ if (optional.isPresent()) {
|
|
|
|
+ FuncidDefChangeRecord changeRecord = optional.get();
|
|
|
|
+ if (!EnumVersionState.INIT.equals(changeRecord.getState()) || changeRecord.getVersion() != null) {
|
|
|
|
+ response.setFail(changeRecord.getId() + " 不可删除!");
|
|
|
|
+ return response;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ repository.delete(param);
|
|
|
|
+ return response;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public List<String> getSqlList(String version, Boolean isTotal) {
|
|
|
|
+ List<String> sqlList = new ArrayList<>();
|
|
|
|
+ JacksonCriteria criteria = JacksonCriteria.newInstance();
|
|
|
|
+ criteria.add("version", version);
|
|
|
|
+ PagedResponse<FuncidDefChangeRecord> response = query(criteria);
|
|
|
|
+ List<FuncidDefChangeRecord> data = response.getData();
|
|
|
|
+ if (isTotal) {
|
|
|
|
+ List<FuncidDefModel> funcidDefModelList = queryFuncidDef(null, null, version);
|
|
|
|
+ if (funcidDefModelList != null) {
|
|
|
|
+ for (FuncidDefModel funcidDefModel : funcidDefModelList) {
|
|
|
|
+ FuncidDefChangeRecord changeRecord = new FuncidDefChangeRecord();
|
|
|
|
+ changeRecord.setCode(funcidDefModel.getCode());
|
|
|
|
+ changeRecord.setGroupCode(funcidDefModel.getGroupCode());
|
|
|
|
+ changeRecord.setProjectId(funcidDefModel.getProjectId());
|
|
|
|
+ changeRecord.setOrigCode(funcidDefModel.getOrigCode());
|
|
|
|
+ changeRecord.setName(funcidDefModel.getName());
|
|
|
|
+ changeRecord.setAliasCode(funcidDefModel.getAliasCode());
|
|
|
|
+ changeRecord.setAliasName(funcidDefModel.getAliasName());
|
|
|
|
+ changeRecord.setClassCode(funcidDefModel.getClassCode());
|
|
|
|
+ changeRecord.setCategory(funcidDefModel.getCategory());
|
|
|
|
+ changeRecord.setType(funcidDefModel.getType());
|
|
|
|
+ changeRecord.setFirstTag(funcidDefModel.getFirstTag());
|
|
|
|
+ changeRecord.setSecondTag(funcidDefModel.getSecondTag());
|
|
|
|
+ changeRecord.setPriority(funcidDefModel.getPriority());
|
|
|
|
+ changeRecord.setInputMode(funcidDefModel.getInputMode());
|
|
|
|
+ changeRecord.setUnit(funcidDefModel.getUnit());
|
|
|
|
+ changeRecord.setDataType(funcidDefModel.getDataType());
|
|
|
|
+ changeRecord.setOrigDataType(funcidDefModel.getOrigDataType());
|
|
|
|
+ changeRecord.setIsMultiple(funcidDefModel.getIsMultiple());
|
|
|
|
+ changeRecord.setIsRegion(funcidDefModel.getIsRegion());
|
|
|
|
+ changeRecord.setFormater(funcidDefModel.getFormater());
|
|
|
|
+ changeRecord.setDataSource(funcidDefModel.getDataSource());
|
|
|
|
+ changeRecord.setNote(funcidDefModel.getNote());
|
|
|
|
+ changeRecord.setSubFlag(funcidDefModel.getSubFlag());
|
|
|
|
+ changeRecord.setWeakPoint(funcidDefModel.getWeakPoint());
|
|
|
|
+ changeRecord.setOperationType(EnumOperationType.create);
|
|
|
|
+ data.add(changeRecord);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ for (FuncidDefChangeRecord changeRecord : data) {
|
|
|
|
+ StringBuilder sql = new StringBuilder();
|
|
|
|
+ switch (changeRecord.getOperationType()) {
|
|
|
|
+ case create: {
|
|
|
|
+ String uuid = UUID.randomUUID().toString().replace("-", "");
|
|
|
|
+ sql.append("INSERT INTO `rwd_def_funcid`(`id`,`code`,`orig_code`,`name`,`alias_code`,`alias_name`,`class_code`,`type`," +
|
|
|
|
+ "`group_code`,`project_id`,`category`,`first_tag`,`second_tag`,`priority`,`input_mode`,`unit`,`data_type`,`orig_data_type`," +
|
|
|
|
+ "`is_multiple`,`is_region`,`formater`,`data_source`,`note`,`sub_flag`,`weak_point`) VALUES (");
|
|
|
|
+ sql.append("'" + uuid + "',");
|
|
|
|
+ sql.append("'" + changeRecord.getCode() + "',");
|
|
|
|
+ if (changeRecord.getOrigCode() == null) {
|
|
|
|
+ sql.append("null,");
|
|
|
|
+ } else {
|
|
|
|
+ sql.append("'" + changeRecord.getOrigCode() + "',");
|
|
|
|
+ }
|
|
|
|
+ sql.append("'" + changeRecord.getName() + "',");
|
|
|
|
+ sql.append("'" + changeRecord.getAliasCode() + "',");
|
|
|
|
+ sql.append("'" + changeRecord.getAliasName() + "',");
|
|
|
|
+ sql.append("'" + changeRecord.getClassCode() + "',");
|
|
|
|
+ if (changeRecord.getType() == null) {
|
|
|
|
+ sql.append("null,");
|
|
|
|
+ } else {
|
|
|
|
+ sql.append("'" + changeRecord.getType() + "',");
|
|
|
|
+ }
|
|
|
|
+ sql.append("'" + changeRecord.getGroupCode() + "',");
|
|
|
|
+ sql.append("'" + changeRecord.getProjectId() + "',");
|
|
|
|
+ if (changeRecord.getCategory() == null) {
|
|
|
|
+ sql.append("null,");
|
|
|
|
+ } else {
|
|
|
|
+ sql.append("'" + changeRecord.getCategory().name() + "',");
|
|
|
|
+ }
|
|
|
|
+ if (changeRecord.getFirstTag() == null) {
|
|
|
|
+ sql.append("null,");
|
|
|
|
+ } else {
|
|
|
|
+ sql.append("'" + changeRecord.getFirstTag() + "',");
|
|
|
|
+ }
|
|
|
|
+ if (changeRecord.getSecondTag() == null) {
|
|
|
|
+ sql.append("null,");
|
|
|
|
+ } else {
|
|
|
|
+ sql.append("'" + changeRecord.getSecondTag() + "',");
|
|
|
|
+ }
|
|
|
|
+ if (changeRecord.getPriority() == null) {
|
|
|
|
+ sql.append("null,");
|
|
|
|
+ } else {
|
|
|
|
+ sql.append("'" + changeRecord.getPriority() + "',");
|
|
|
|
+ }
|
|
|
|
+ if (changeRecord.getInputMode() == null) {
|
|
|
|
+ sql.append("null,");
|
|
|
|
+ } else {
|
|
|
|
+ sql.append("'" + changeRecord.getInputMode() + "',");
|
|
|
|
+ }
|
|
|
|
+ if (changeRecord.getUnit() == null) {
|
|
|
|
+ sql.append("null,");
|
|
|
|
+ } else {
|
|
|
|
+ sql.append("'" + changeRecord.getUnit() + "',");
|
|
|
|
+ }
|
|
|
|
+ boolean refenumBool = FuncidDataType.REFENUM.equals(changeRecord.getDataType());
|
|
|
|
+ if (refenumBool) {
|
|
|
|
+ sql.append("'ENUM',");
|
|
|
|
+ } else {
|
|
|
|
+ sql.append("'" + changeRecord.getDataType().name() + "',");
|
|
|
|
+ }
|
|
|
|
+ if (changeRecord.getOrigDataType() == null) {
|
|
|
|
+ sql.append("null,");
|
|
|
|
+ } else {
|
|
|
|
+ sql.append("'" + changeRecord.getOrigDataType() + "',");
|
|
|
|
+ }
|
|
|
|
+ if (changeRecord.getIsMultiple() == null) {
|
|
|
|
+ sql.append("null,");
|
|
|
|
+ } else {
|
|
|
|
+ sql.append("'" + changeRecord.getIsMultiple() + "',");
|
|
|
|
+ }
|
|
|
|
+ if (changeRecord.getFormater() == null) {
|
|
|
|
+ sql.append("null,");
|
|
|
|
+ } else {
|
|
|
|
+ sql.append("'" + changeRecord.getFormater() + "')");
|
|
|
|
+ }
|
|
|
|
+ if (refenumBool) {
|
|
|
|
+ ArrayNode dataSource = changeRecord.getDataSource();
|
|
|
|
+ String refKey = dataSource.get(0).get("refKey").asText();
|
|
|
|
+ JacksonCriteria queryRef = JacksonCriteria.newInstance();
|
|
|
|
+ queryRef.add("refKey", refKey);
|
|
|
|
+ List<RwdeditRefTypeInfos> refInfos = rwdeditRefTypeInfosService.query(queryRef).getData();
|
|
|
|
+ sql.append("'" + JacksonMapper.toSimpleJson(refInfos) + "')");
|
|
|
|
+ } else {
|
|
|
|
+ if (changeRecord.getDataSource() == null) {
|
|
|
|
+ sql.append("null,");
|
|
|
|
+ } else {
|
|
|
|
+ sql.append("'" + JacksonMapper.toSimpleJson(changeRecord.getDataSource()) + "')");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (changeRecord.getNote() == null) {
|
|
|
|
+ sql.append("null,");
|
|
|
|
+ } else {
|
|
|
|
+ sql.append("'" + changeRecord.getNote() + "')");
|
|
|
|
+ }
|
|
|
|
+ if (changeRecord.getSubFlag() == null) {
|
|
|
|
+ sql.append("null,");
|
|
|
|
+ } else {
|
|
|
|
+ sql.append("'" + changeRecord.getSubFlag() + "')");
|
|
|
|
+ }
|
|
|
|
+ if (changeRecord.getWeakPoint() == null) {
|
|
|
|
+ sql.append("null);\n");
|
|
|
|
+ } else {
|
|
|
|
+ sql.append("'" + changeRecord.getWeakPoint() + "');\n");
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ case update: {
|
|
|
|
+ sql.append("UPDATE `rwd_def_funcid` SET");
|
|
|
|
+ sql.append(" `alias_code` = '" + changeRecord.getAliasCode() + "',");
|
|
|
|
+ sql.append(" `alias_name` = '" + changeRecord.getAliasName() + "'");
|
|
|
|
+ sql.append(" WHERE `code` = '" + changeRecord.getCode() + "'");
|
|
|
|
+ sql.append(" WHERE `class_code` = '" + changeRecord.getClassCode() + "'");
|
|
|
|
+ sql.append(" and `group_code` = '" + changeRecord.getGroupCode() + "'");
|
|
|
|
+ sql.append(" and `project_id` = '" + changeRecord.getProjectId() + "';\n");
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ case delete: {
|
|
|
|
+ sql.append("DELETE FROM `rwd_def_funcid`");
|
|
|
|
+ sql.append(" WHERE `code` = '" + changeRecord.getCode() + "'");
|
|
|
|
+ sql.append(" WHERE `class_code` = '" + changeRecord.getClassCode() + "'");
|
|
|
|
+ sql.append(" and `group_code` = '" + changeRecord.getGroupCode() + "'");
|
|
|
|
+ sql.append(" and `project_id` = '" + changeRecord.getProjectId() + "';\n");
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ default: {
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ sqlList.add(sql.toString());
|
|
|
|
+ }
|
|
|
|
+ return sqlList;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void updateStateByVersion(EnumVersionState state, String version) {
|
|
|
|
+ JacksonCriteria criteria = JacksonCriteria.newInstance();
|
|
|
|
+ criteria.add("version", version);
|
|
|
|
+ PagedResponse<FuncidDefChangeRecord> query = query(criteria);
|
|
|
|
+ if (query.getCount() == 0) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ List<FuncidDefChangeRecord> data = query.getData();
|
|
|
|
+ for (FuncidDefChangeRecord changeRecord : data) {
|
|
|
|
+ switch (state) {
|
|
|
|
+ case CONFIRM: {
|
|
|
|
+ changeRecord.setConfirmUser(UserUtils.currentUserId() + "");
|
|
|
|
+ changeRecord.setConfirmTime(new Date());
|
|
|
|
+ changeRecord.setState(state);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ case PUBLISH: {
|
|
|
|
+ changeRecord.setPublishUser(UserUtils.currentUserId() + "");
|
|
|
|
+ changeRecord.setPublishTime(new Date());
|
|
|
|
+ changeRecord.setState(state);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ case FINISH: {
|
|
|
|
+ changeRecord.setFinishTime(new Date());
|
|
|
|
+ changeRecord.setState(state);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ default: {
|
|
|
|
+ changeRecord.setState(state);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (state == EnumVersionState.FINISH) {
|
|
|
|
+ updateFuncidDef(data, version);
|
|
|
|
+ }
|
|
|
|
+ repository.saveAll(data);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void updateFuncidDef(List<FuncidDefChangeRecord> data, String version) {
|
|
|
|
+ List<FuncidDef> funcidDefList = new ArrayList<>();
|
|
|
|
+ data.forEach(item -> {
|
|
|
|
+ String uuid = UUID.randomUUID().toString().replace("-", "");
|
|
|
|
+ FuncidDef funcidDef = new FuncidDef();
|
|
|
|
+ funcidDef.setId(uuid);
|
|
|
|
+ funcidDef.setCode(item.getCode());
|
|
|
|
+ funcidDef.setOrigCode(item.getOrigCode());
|
|
|
|
+ funcidDef.setName(item.getName());
|
|
|
|
+ funcidDef.setAliasCode(item.getAliasCode());
|
|
|
|
+ funcidDef.setAliasName(item.getAliasName());
|
|
|
|
+ funcidDef.setClassCode(item.getClassCode());
|
|
|
|
+ funcidDef.setCategory(item.getCategory());
|
|
|
|
+ funcidDef.setType(item.getType());
|
|
|
|
+ funcidDef.setGroupCode(item.getGroupCode());
|
|
|
|
+ funcidDef.setProjectId(item.getProjectId());
|
|
|
|
+ funcidDef.setFirstTag(item.getFirstTag());
|
|
|
|
+ funcidDef.setSecondTag(item.getSecondTag());
|
|
|
|
+ funcidDef.setPriority(item.getPriority());
|
|
|
|
+ funcidDef.setInputMode(item.getInputMode());
|
|
|
|
+ funcidDef.setUnit(item.getUnit());
|
|
|
|
+ funcidDef.setOrigDataType(item.getOrigDataType());
|
|
|
|
+ funcidDef.setIsMultiple(item.getIsMultiple());
|
|
|
|
+ funcidDef.setIsRegion(item.getIsRegion());
|
|
|
|
+ funcidDef.setFormater(item.getFormater());
|
|
|
|
+ funcidDef.setNote(item.getNote());
|
|
|
|
+ funcidDef.setSubFlag(item.getSubFlag());
|
|
|
|
+ funcidDef.setWeakPoint(item.getWeakPoint());
|
|
|
|
+ if (!FuncidDataType.REFENUM.equals(item.getDataType())) {
|
|
|
|
+ funcidDef.setDataType(item.getDataType());
|
|
|
|
+ funcidDef.setDataSource(item.getDataSource());
|
|
|
|
+ } else {
|
|
|
|
+ funcidDef.setDataType(FuncidDataType.ENUM);
|
|
|
|
+ ArrayNode dataSource = item.getDataSource();
|
|
|
|
+ String refKey = dataSource.get(0).get("refKey").asText();
|
|
|
|
+ JacksonCriteria queryRef = JacksonCriteria.newInstance();
|
|
|
|
+ queryRef.add("refKey", refKey);
|
|
|
|
+ List<RwdeditRefTypeInfos> refInfos = rwdeditRefTypeInfosService.query(queryRef).getData();
|
|
|
|
+ funcidDef.setDataSource(JacksonMapper.toObject(JacksonMapper.toSimpleJson(refInfos), ArrayNode.class));
|
|
|
|
+ }
|
|
|
|
+ funcidDef.setIsUsed(1);//状态 0.历史版本 1.使用中
|
|
|
|
+ funcidDef.setVersion(version);//版本
|
|
|
|
+ funcidDef.setLastUpdateTime(new Date());//发布时间
|
|
|
|
+ funcidDefList.add(funcidDef);
|
|
|
|
+ List<FuncidDefModel> funcidDefModelList = queryFuncidDef(item.getCode(), item.getClassCode(), null);
|
|
|
|
+ if (funcidDefModelList != null) {
|
|
|
|
+ FuncidDefModel funcidDefModel = funcidDefModelList.get(0);
|
|
|
|
+ funcidDefModel.setIsUsed(0);
|
|
|
|
+ funcidDefModel.setLastUpdateTime(new Date());
|
|
|
|
+ funcidDefList.add(FuncidDef.fromModel(funcidDefModel));
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ funcidDefRepository.saveAll(funcidDefList);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private List<FuncidDefModel> queryFuncidDef(String code, String classCode, String neVersion) {
|
|
|
|
+ List<FuncidDefModel> data = null;
|
|
|
|
+ JacksonCriteria criteria = JacksonCriteria.newInstance();
|
|
|
|
+ criteria.add("type", "common");
|
|
|
|
+ if (code != null) {
|
|
|
|
+ criteria.add("code", code);
|
|
|
|
+ }
|
|
|
|
+ if (classCode != null) {
|
|
|
|
+ criteria.add("classCode", classCode);
|
|
|
|
+ }
|
|
|
|
+ if (neVersion != null) {
|
|
|
|
+ JacksonCriteria queryClass = JacksonCriteria.newInstance();
|
|
|
|
+ queryClass.add("type", "common");
|
|
|
|
+ ListResponse<ClassDefModel> query = classDefService.queryClass(queryClass);
|
|
|
|
+ List<ClassDefModel> classDefModelList = query.getData();
|
|
|
|
+ data = new ArrayList<>();
|
|
|
|
+ for (ClassDefModel classDefModel : classDefModelList) {
|
|
|
|
+ criteria = JacksonCriteria.newInstance();
|
|
|
|
+ criteria.add("type", "common");
|
|
|
|
+ criteria.add("classCode", classDefModel.getCode());
|
|
|
|
+ criteria.add("version").ne(neVersion);
|
|
|
|
+ ListResponse<FuncidDefModel> queryFuncid = funcidDefService.queryFuncid(criteria);
|
|
|
|
+ data.addAll(queryFuncid.getData());
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ ListResponse<FuncidDefModel> queryFuncid = funcidDefService.queryFuncid(criteria);
|
|
|
|
+ data = queryFuncid.getData();
|
|
|
|
+ }
|
|
|
|
+ if (data != null && data.size() != 0) {
|
|
|
|
+ return data;
|
|
|
|
+ }
|
|
|
|
+ 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;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|