Browse Source

楼层:增加验证

lvxianyun 3 years ago
parent
commit
4667e0a050
1 changed files with 109 additions and 6 deletions
  1. 109 6
      src/main/java/com/persagy/proxy/adm/controller/AdmFloorController.java

+ 109 - 6
src/main/java/com/persagy/proxy/adm/controller/AdmFloorController.java

@@ -1,12 +1,19 @@
 package com.persagy.proxy.adm.controller;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.persagy.dmp.common.model.entity.BaseEntity;
 import com.persagy.proxy.adm.constant.AdmCommonConstant;
+import com.persagy.proxy.adm.model.AdmEquipment;
 import com.persagy.proxy.adm.model.AdmFloor;
+import com.persagy.proxy.adm.model.AdmISpace;
+import com.persagy.proxy.adm.model.AdmSpace;
 import com.persagy.proxy.adm.request.AdmCreateRequest;
 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.adm.service.*;
+import com.persagy.proxy.adm.utils.ObjectNameUtil;
+import com.persagy.proxy.common.entity.DmpResult;
 import com.persagy.proxy.common.entity.InstanceUrlParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -17,6 +24,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.ws.rs.QueryParam;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Adm 楼层 API
@@ -29,6 +37,12 @@ import java.util.List;
 public class AdmFloorController {
     @Autowired
     private IAdmFloorService service;
+    @Autowired
+    private IAdmEquipmentService equipmentService;
+    @Autowired
+    private IAdmISpaceService iAdmISpaceService;
+    @Autowired
+    private IAdmSpaceService spaceService;
     @Value("${middleware.group.code}")
     private String groupCode;
 
@@ -42,8 +56,41 @@ public class AdmFloorController {
     public AdmResponse create(@RequestBody AdmCreateRequest<AdmFloor> createRequest, @QueryParam("projectId") String projectId) throws Exception {
         // 组装上下文条件
         InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
-        //List<AdmFloor> vos = CollUtil.newArrayList(createRequest.getContent());
         List<AdmFloor> vos = service.doInsert(context, AdmFloor.class, createRequest.getContent());
+        for(AdmFloor floor : vos){
+            if(StrUtil.isEmpty(floor.getName())){
+                floor.setName(ObjectNameUtil.objectName("楼层-"));
+            }
+            if(floor.getFloorSequenceID() == null){
+                return AdmResponse.failure("楼层顺序号不可以为空或类型错误");
+            }
+        }
+        Map<String, AdmFloor> admFloorMap = CollUtil.fieldValueMap(vos, "buildingId");
+        if (CollUtil.isNotEmpty(admFloorMap)){
+            AdmQueryCriteria admQueryCriteria = new AdmQueryCriteria();
+            StringBuilder stringBuilder = new StringBuilder();
+            stringBuilder.append("buildingId in [");
+            admFloorMap.keySet().stream().forEach(buildingId -> {
+                stringBuilder.append("'").append(buildingId).append("'").append(",");
+            });
+            String filters = StrUtil.sub(stringBuilder.toString(),0, -1);
+            filters+= "]";
+            admQueryCriteria.setFilters(filters);
+            admQueryCriteria.setName("floor");
+            AdmResponse admResponseF = service.doQuery(context, admQueryCriteria, AdmFloor.class);
+            if(DmpResult.SUCCESS.equals(admResponseF.getResult()) && admResponseF.getTotal() > 0){
+                List<AdmFloor> vosOld = (List<AdmFloor>) admResponseF.getContent();
+                for(AdmFloor admFloorOld : vosOld){
+                    if(admFloorMap.containsKey(admFloorOld.getBuildingId())){
+                        AdmFloor admFloorNew = admFloorMap.get(admFloorOld.getBuildingId());
+                        //楼层序列号相同
+                        if(admFloorOld.getFloorSequenceID() !=null && admFloorNew.getFloorSequenceID().equals(admFloorOld.getFloorSequenceID())){
+                           return AdmResponse.failure("楼层顺序号不可以重复");
+                        }
+                    }
+                }
+            }
+        }
         return AdmResponse.success(vos);
     }
 
@@ -57,6 +104,37 @@ public class AdmFloorController {
     public AdmResponse delete(@QueryParam("projectId") String projectId, @RequestBody List<AdmFloor> vos) throws Exception {
         // 组装上下文条件
         InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
+        String msg = "楼层下包含其他对象实例,请解除关系后删除";
+        Map<String, AdmFloor> admFloorMap = CollUtil.fieldValueMap(vos, BaseEntity.PROP_ID);
+
+        AdmQueryCriteria admQueryCriteria = new AdmQueryCriteria();
+        StringBuilder stringBuilder = new StringBuilder();
+        stringBuilder.append("floorId in [");
+        admFloorMap.keySet().stream().forEach(buildingId -> {
+            stringBuilder.append("'").append(buildingId).append("'").append(",");
+        });
+        String filters = StrUtil.sub(stringBuilder.toString(),0, -1);
+        filters+= "]";
+
+        admQueryCriteria.setFilters(filters);
+        admQueryCriteria.setOnlyCount(true);
+
+        admQueryCriteria.setName("space");
+        AdmResponse admResponseSpace = spaceService.doQuery(context, admQueryCriteria, AdmSpace.class);
+        if(admResponseSpace.getResult().equals(DmpResult.SUCCESS) && admResponseSpace.getTotal() > 0){
+            return AdmResponse.failure(msg);
+        }
+        admQueryCriteria.setName("ispace");
+        AdmResponse admResponseISpace = iAdmISpaceService.doQuery(context, admQueryCriteria, AdmISpace.class);
+        if(admResponseISpace.getResult().equals(DmpResult.SUCCESS) && admResponseISpace.getTotal() > 0){
+            return AdmResponse.failure(msg);
+        }
+
+        admQueryCriteria.setName("equipment");
+        AdmResponse admResponseEuip = equipmentService.doQuery(context, admQueryCriteria, AdmEquipment.class);
+        if(admResponseEuip.getResult().equals(DmpResult.SUCCESS) && admResponseEuip.getTotal() > 0){
+            return AdmResponse.failure(msg);
+        }
         service.doDelete(context, vos);
         return AdmResponse.success();
     }
@@ -69,10 +147,8 @@ public class AdmFloorController {
      */
     @PostMapping("/single/delete")
     public AdmResponse deleteSingle(@QueryParam("projectId") String projectId, @RequestBody List<AdmFloor> vos) throws Exception {
-        // 组装上下文条件
-        InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
-        service.doDelete(context, vos);
-        return AdmResponse.success();
+       delete(projectId,vos);
+       return AdmResponse.success();
     }
 
     /**
@@ -86,6 +162,33 @@ public class AdmFloorController {
         // 组装上下文条件
         InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
         List<AdmFloor> vos = CollUtil.newArrayList(admFloor.getContent());
+        /** 遍历楼层列表 */
+        Map<String, AdmFloor> admFloorBdMap = CollUtil.fieldValueMap(vos, "buildingId");
+        if (CollUtil.isNotEmpty(admFloorBdMap)){
+            AdmQueryCriteria admQueryCriteria = new AdmQueryCriteria();
+            StringBuilder stringBuilder = new StringBuilder();
+            stringBuilder.append("buildingId in [");
+            admFloorBdMap.keySet().stream().forEach(buildingId -> {
+                stringBuilder.append("'").append(buildingId).append("'").append(",");
+            });
+            String filters = StrUtil.sub(stringBuilder.toString(),0, -1);
+            filters+= "]";
+            admQueryCriteria.setFilters(filters);
+            admQueryCriteria.setName("floor");
+            AdmResponse admResponseF = service.doQuery(context, admQueryCriteria, AdmFloor.class);
+            if(DmpResult.SUCCESS.equals(admResponseF.getResult()) && admResponseF.getTotal() > 0 && CollUtil.isNotEmpty(admResponseF.getContent())){
+                List<AdmFloor> vosOld = (List<AdmFloor>) admResponseF.getContent();
+                for(AdmFloor admFloorOld : vosOld){
+                    if(admFloorBdMap.containsKey(admFloorOld.getBuildingId())){
+                        AdmFloor admFloorNew = admFloorBdMap.get(admFloorOld.getBuildingId());
+                        //楼层序列号相同
+                        if(!admFloorOld.getId().equals(admFloorNew.getId()) && admFloorOld.getFloorSequenceID()!=null && admFloorNew.getFloorSequenceID().equals(admFloorOld.getFloorSequenceID())){
+                            return AdmResponse.failure("楼层顺序号不可以重复");
+                        }
+                    }
+                }
+            }
+        }
         vos = service.doUpdate(context, AdmFloor.class, vos);
         return AdmResponse.success(vos);
     }