瀏覽代碼

楼层 处理properties特殊信息点

lvxianyun 3 年之前
父節點
當前提交
8f96a4b81c

+ 7 - 1
src/main/java/com/persagy/proxy/adm/controller/AdmFloorController.java

@@ -54,6 +54,7 @@ public class AdmFloorController {
     @PostMapping("/create")
     public AdmResponse create(@RequestBody AdmCreateRequest<AdmFloor> createRequest) throws Exception {
         List<AdmFloor> vos = createRequest.getContent();
+        service.ensureSpecialValues(AdmContextUtil.toDmpContext(), vos, false);
         for(AdmFloor floor : vos){
             if(StrUtil.isEmpty(floor.getName())){
                 floor.setName(ObjectNameUtil.objectName("楼层-"));
@@ -168,6 +169,7 @@ public class AdmFloorController {
     @PostMapping("/update")
     public AdmResponse update(@RequestBody AdmCreateRequest<AdmFloor> admFloor) throws Exception {
         List<AdmFloor> vos = CollUtil.newArrayList(admFloor.getContent());
+        service.ensureSpecialValues(AdmContextUtil.toDmpContext(), vos, false);
         /** 遍历楼层列表 */
         Map<String, AdmFloor> admFloorBdMap = CollUtil.fieldValueMap(vos, "buildingId");
         if (CollUtil.isNotEmpty(admFloorBdMap)){
@@ -242,7 +244,11 @@ public class AdmFloorController {
     @PostMapping("/query")
     public AdmResponse query(@RequestBody AdmQueryCriteria request) throws Exception {
         request.setName(AdmFloor.OBJ_TYPE);
-        return service.doQuery(AdmContextUtil.toDmpContext(), request, AdmFloor.class);
+        AdmResponse rs = service.doQuery(AdmContextUtil.toDmpContext(), request, AdmFloor.class);
+        List<AdmFloor> vos = (List<AdmFloor>) rs.getContent();
+        service.ensureSpecialValues(AdmContextUtil.toDmpContext(), vos, true);
+        rs.setContent(vos);
+        return rs;
     }
 
 

+ 5 - 2
src/main/java/com/persagy/proxy/adm/model/AdmFloor.java

@@ -6,7 +6,6 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * ADM 楼层 实体
@@ -62,7 +61,11 @@ public class AdmFloor extends AdmSBaseEntity<AdmFloor>{
     private String count;
 
     /** 自定义信息点 */
-    private Map<String, Object> properties;
+    private ObjectNode properties;
+    /**
+     * 中台存储自定义信息点 properties的string形式
+     */
+    private String propertiesInfo;
 
     /** 二维码图片 */
     private String qrcodePic;

+ 8 - 0
src/main/java/com/persagy/proxy/adm/service/IAdmFloorService.java

@@ -28,4 +28,12 @@ public interface IAdmFloorService extends IAdmBaseService<AdmFloor>{
      * @return
      */
     List<AdmFloor> queryFloorInBuilding(InstanceUrlParam context, String buildingId);
+
+    /**
+     * 楼层自定义信息点处理 新增,properties 转化为String类型,放到propertiesInfo信息点存储,查询相关,propertiesInfo转为为properties 页面展示
+     * @param context
+     * @param queryFlag true 查询,false 更新或者新增
+     * @return
+     */
+    void ensureSpecialValues(InstanceUrlParam context, List<AdmFloor> vos, boolean queryFlag);
 }

+ 49 - 2
src/main/java/com/persagy/proxy/adm/service/impl/AdmFloorServiceImpl.java

@@ -1,12 +1,19 @@
 package com.persagy.proxy.adm.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.proxy.adm.model.AdmFloor;
 import com.persagy.proxy.adm.request.AdmQueryCriteria;
 import com.persagy.proxy.adm.request.AdmResponse;
 import com.persagy.proxy.adm.service.IAdmFloorService;
 import com.persagy.proxy.common.entity.InstanceUrlParam;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -17,6 +24,8 @@ import java.util.List;
  */
 @Service
 public class AdmFloorServiceImpl extends AbstractAdmBaseServiceImpl<AdmFloor> implements IAdmFloorService {
+    @Autowired
+    private ObjectMapper objectMapper;
 
     @Override
     public AdmResponse doQueryOutLine(InstanceUrlParam context, AdmQueryCriteria request, Class<AdmFloor> clazz) {
@@ -32,7 +41,11 @@ public class AdmFloorServiceImpl extends AbstractAdmBaseServiceImpl<AdmFloor> im
         list.add("infos");
         list.add("properties");
         request.setProjection(list);
-        return doQuery(context, request, clazz);
+        AdmResponse rs = doQuery(context, request, clazz);
+        List<AdmFloor> vos = (List<AdmFloor>) rs.getContent();
+        ensureSpecialValues(context, vos, true);
+        rs.setContent(vos);
+        return rs;
     }
 
     @Override
@@ -42,6 +55,40 @@ public class AdmFloorServiceImpl extends AbstractAdmBaseServiceImpl<AdmFloor> im
         request.resetRelationCond(false, "ArchSubset", "Bd2Fl", buildingId);
         request.setOrders("floorSequenceId desc");
         AdmResponse rs = doQuery(context, request, AdmFloor.class);
-        return (List<AdmFloor>) rs.getContent();
+        List<AdmFloor> vos = (List<AdmFloor>) rs.getContent();
+        ensureSpecialValues(context, vos, true);
+        return vos;
+    }
+
+    /**
+     * 楼层自定义信息点处理 新增,properties 转化为String类型,放到propertiesInfo信息点存储,查询相关,propertiesInfo转为为properties 页面展示
+     * @param context
+     * @param queryFlag true 查询,false 更新或者新增
+     * @return
+     */
+    @Override
+    public void ensureSpecialValues(InstanceUrlParam context, List<AdmFloor> vos, boolean queryFlag) {
+        if(CollUtil.isNotEmpty(vos)){
+            if(queryFlag){//查询
+                vos.stream().forEach(admFloor -> {
+                    if(StrUtil.isNotEmpty(admFloor.getPropertiesInfo())){
+                        try {
+                            ObjectNode properties = (ObjectNode) objectMapper.readTree(admFloor.getPropertiesInfo());
+                            admFloor.setProperties(properties);
+                            admFloor.setPropertiesInfo(null);
+                        } catch (IOException e) {
+                            e.printStackTrace();
+                        }
+                    }
+                });
+            }else{//新增或者更新
+                vos.stream().forEach(admFloor -> {
+                    if(!JSONUtil.isNull(admFloor.getProperties())){
+                        admFloor.setPropertiesInfo(admFloor.getProperties().toString());
+                        admFloor.setProperties(null);
+                    }
+                });
+            }
+        }
     }
 }