|
@@ -1,12 +1,15 @@
|
|
package com.persagy.proxy.object.controller;
|
|
package com.persagy.proxy.object.controller;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
+import cn.hutool.core.map.MapUtil;
|
|
|
|
+import cn.hutool.core.util.ReflectUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
|
|
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
|
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
import com.persagy.dmp.basic.model.QueryCriteria;
|
|
import com.persagy.dmp.basic.model.QueryCriteria;
|
|
import com.persagy.dmp.basic.utils.JsonNodeUtils;
|
|
import com.persagy.dmp.basic.utils.JsonNodeUtils;
|
|
|
|
+import com.persagy.proxy.adm.constant.AdmDictConstant;
|
|
import com.persagy.proxy.adm.request.*;
|
|
import com.persagy.proxy.adm.request.*;
|
|
import com.persagy.proxy.adm.service.IAdmRelationService;
|
|
import com.persagy.proxy.adm.service.IAdmRelationService;
|
|
import com.persagy.proxy.adm.utils.AdmContextUtil;
|
|
import com.persagy.proxy.adm.utils.AdmContextUtil;
|
|
@@ -25,6 +28,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
import javax.ws.rs.QueryParam;
|
|
import javax.ws.rs.QueryParam;
|
|
|
|
+import java.lang.reflect.Field;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -119,6 +123,33 @@ public class AdmSpaceController {
|
|
@PostMapping("/update")
|
|
@PostMapping("/update")
|
|
public AdmResponse update(@RequestBody AdmCreateRequest<AdmSpace> createRequest, @QueryParam("projectId") String projectId) throws Exception {
|
|
public AdmResponse update(@RequestBody AdmCreateRequest<AdmSpace> createRequest, @QueryParam("projectId") String projectId) throws Exception {
|
|
List<AdmSpace> vos = CollUtil.newArrayList(createRequest.getContent());
|
|
List<AdmSpace> vos = CollUtil.newArrayList(createRequest.getContent());
|
|
|
|
+ // 特殊处理一下AdmSpace的infos
|
|
|
|
+ if (CollUtil.isEmpty(vos)){
|
|
|
|
+ return AdmResponse.success(new ArrayList<>());
|
|
|
|
+ }
|
|
|
|
+ Map<String, Field> fieldMap = JsonNodeUtils.getFieldMap(AdmSpace.class);
|
|
|
|
+ Set<String> fields = fieldMap.keySet();
|
|
|
|
+ for (AdmSpace space : vos) {
|
|
|
|
+ Map<String, Object> infos = space.getInfos();
|
|
|
|
+ if (MapUtil.isEmpty(infos)){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ Set<String> mapKeys = infos.keySet();
|
|
|
|
+ for (String mapKey : mapKeys) {
|
|
|
|
+ if ((AdmDictConstant.TABLE_INFOS.contains(mapKey)
|
|
|
|
+ && !AdmDictConstant.HEIGHT.equals(mapKey))
|
|
|
|
+ || AdmDictConstant.PIC.equals(mapKey)){
|
|
|
|
+ // 这些信息就算在infos也不更新,
|
|
|
|
+ // 和com.persagy.proxy.dictionary.service.impl.AbstractAdmDictBaseServiceImpl.handleObjectInfoPath
|
|
|
|
+ // 的判断逻辑保持一致
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ if (fields.contains(mapKey)){
|
|
|
|
+ // 如果属性值存在
|
|
|
|
+ ReflectUtil.setFieldValue(space,fieldMap.get(mapKey),infos.get(mapKey));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
return service.doUpdate(vos);
|
|
return service.doUpdate(vos);
|
|
}
|
|
}
|
|
|
|
|