|
@@ -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);
|
|
|
}
|