|
@@ -1,36 +1,47 @@
|
|
|
package com.persagy.dmp.rwd.edit.service;
|
|
|
|
|
|
+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.ObjectNode;
|
|
|
import com.persagy.common.criteria.CriteriaUtils;
|
|
|
import com.persagy.common.criteria.JacksonCriteria;
|
|
|
+import com.persagy.common.json.JacksonMapper;
|
|
|
import com.persagy.common.web.MapResponse;
|
|
|
import com.persagy.common.web.PagedResponse;
|
|
|
+import com.persagy.dmp.common.http.HttpUtils;
|
|
|
import com.persagy.dmp.rwd.edit.config.web.UserUtils;
|
|
|
import com.persagy.dmp.rwd.edit.entity.ChangeRecord;
|
|
|
import com.persagy.dmp.rwd.edit.entity.QChangeRecord;
|
|
|
+import com.persagy.dmp.rwd.edit.enumeration.EnumOperationType;
|
|
|
import com.persagy.dmp.rwd.edit.repository.ChangeRecordRepository;
|
|
|
+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.beans.factory.annotation.Value;
|
|
|
import org.springframework.boot.actuate.endpoint.OperationType;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.transaction.Transactional;
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.LinkedList;
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
|
|
|
@Slf4j
|
|
|
@Service
|
|
|
public class ChangeRecordService {
|
|
|
|
|
|
+ @Value("${persagy.dmp.server}")
|
|
|
+ private String dmpServer;
|
|
|
+
|
|
|
@Autowired
|
|
|
ChangeRecordRepository repository;
|
|
|
|
|
|
@Autowired
|
|
|
CriteriaUtils criteriaUtils;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ HttpUtils httpUtils;
|
|
|
+
|
|
|
private List<BooleanExpression> parse(ObjectNode object) {
|
|
|
List<BooleanExpression> list = new LinkedList<>();
|
|
|
QChangeRecord qt = QChangeRecord.changeRecord;
|
|
@@ -58,6 +69,13 @@ public class ChangeRecordService {
|
|
|
@Transactional
|
|
|
public MapResponse create(ChangeRecord param) {
|
|
|
MapResponse response = new MapResponse();
|
|
|
+ if (EnumOperationType.create.equals(param.getOperationType())) {
|
|
|
+ Boolean isExists = isExists(param.getCode(), param.getInfoCode());
|
|
|
+ if(!isExists){
|
|
|
+ response.setFail("code is exists");
|
|
|
+ return response;
|
|
|
+ }
|
|
|
+ }
|
|
|
param.setOperationUser(UserUtils.currentUserId() + "");
|
|
|
param.setOperationTime(new Date());
|
|
|
param.setValid(true);
|
|
@@ -67,6 +85,39 @@ public class ChangeRecordService {
|
|
|
return response;
|
|
|
}
|
|
|
|
|
|
+ private Boolean isExists(String code, String infoCode) {
|
|
|
+ JacksonCriteria criteria = JacksonCriteria.newInstance();
|
|
|
+ HttpUtils.HttpResult result;
|
|
|
+ if (infoCode != null) {
|
|
|
+ criteria.add("classCode", code);
|
|
|
+ StringBuilder url = new StringBuilder(dmpServer);
|
|
|
+ url.append("/rwd/def/funcid");
|
|
|
+ url.append("?groupCode=0");
|
|
|
+ result = httpUtils.post(url.toString(), JacksonMapper.toSimpleJson(criteria), 300000);
|
|
|
+ } else {
|
|
|
+ criteria.add("type", "common");
|
|
|
+ StringBuilder url = new StringBuilder(dmpServer);
|
|
|
+ url.append("/rwd/def/funcid");
|
|
|
+ url.append("?groupCode=0");
|
|
|
+ result = httpUtils.post(url.toString(), JacksonMapper.toSimpleJson(criteria), 300000);
|
|
|
+ }
|
|
|
+ if (result.success()) {
|
|
|
+ List<String> codeList = new ArrayList<>();
|
|
|
+ String content = result.getContent();
|
|
|
+ ObjectNode object = JacksonMapper.toObject(content, ObjectNode.class);
|
|
|
+ ArrayNode data = JacksonMapper.getArray(object, "data", JsonNodeFactory.instance.arrayNode());
|
|
|
+ for (JsonNode datum : data) {
|
|
|
+ ObjectNode funcJson = (ObjectNode) datum;
|
|
|
+ FuncidDefModel funcidDefModel = JacksonMapper.toObject(funcJson.toString(), FuncidDefModel.class);
|
|
|
+ codeList.add(funcidDefModel.getCode());
|
|
|
+ }
|
|
|
+ if (codeList.contains(infoCode) || codeList.contains(code)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
@Transactional
|
|
|
public MapResponse update(ChangeRecord param) {
|
|
|
MapResponse response = new MapResponse();
|