Browse Source

调整初始化语句

lijie 3 years ago
parent
commit
4282235cda

dmp-business/dmp-dic/src/main/resources/db.init/schema.sql → dmp-business/dmp-dic/src/main/resources/db/init/schema.sql


+ 18 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/basic/dto/RequestData.java

@@ -3,11 +3,13 @@ package com.persagy.dmp.rwd.basic.dto;
 import com.alibaba.fastjson.annotation.JSONField;
 import com.fasterxml.jackson.annotation.JsonAlias;
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.persagy.dmp.rwd.basic.validations.QueryVadition;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import javax.validation.constraints.NotBlank;
 import java.util.Set;
 
 /***
@@ -81,7 +83,23 @@ public class RequestData {
     @JsonAlias({"floor_id","floorId"})
     @JsonProperty("floorId")
     @JSONField(name = "floorId",alternateNames = {"floor_id","floorId"})
+    @NotBlank(message = "缺少必填项:空间id", groups = {QueryVadition.class})
     private String floorId;
+    /** 空间功能类型 */
+    @JsonAlias({"room_func_type","roomFuncType"})
+    @JsonProperty("roomFuncType")
+    @JSONField(name = "roomFuncType",alternateNames = {"room_func_type","roomFuncType"})
+    private String roomFuncType;
+    /** 关系Code */
+    @JsonAlias({"rel_code","relCode"})
+    @JsonProperty("relCode")
+    @JSONField(name = "relCode",alternateNames = {"rel_code","relCode"})
+    private String relCode;
+    /** 对象分类 */
+    @JsonAlias({"obj_type","objType"})
+    @JsonProperty("objType")
+    @JSONField(name = "objType",alternateNames = {"obj_type","objType"})
+    private String objType;
     /** 设备id */
     @JsonAlias({"equipment_id","equipmentId"})
     @JsonProperty("equipmentId")

+ 6 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/basic/validations/QueryVadition.java

@@ -0,0 +1,6 @@
+package com.persagy.dmp.rwd.basic.validations;
+
+import javax.validation.groups.Default;
+
+public interface QueryVadition extends Default {
+}

+ 20 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/controller/ObjectDigitalController.java

@@ -19,11 +19,13 @@ import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.mybatis.utils.ConditionUtil;
 import com.persagy.dmp.basic.utils.QueryCriteriaHelper;
 import com.persagy.dmp.rwd.basic.dto.RequestData;
+import com.persagy.dmp.rwd.basic.validations.QueryVadition;
 import com.persagy.dmp.rwd.digital.service.IObjectDigitalService;
 import com.persagy.dmp.rwd.digital.service.ProjectBusinessService;
 import com.persagy.dmp.rwd.digital.utils.ObjectDigitalCriteriaHelper;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -196,6 +198,24 @@ public class ObjectDigitalController{
         return service.queryObjectListSuperiorId(requestData);
     }
 
+    /***
+     * Description: 查询指定楼层下所有指定空间类型的空间
+     * @param requestData : 请求参数
+     * @return : com.persagy.dmp.common.model.response.CommonResult<java.util.List<com.persagy.dmp.digital.entity.ObjectDigital>>  
+     * @author : lijie
+     * @date :2021/8/30 9:41
+     * Update By lijie 2021/8/30 9:41
+     */
+    @PostMapping("/querySpaceListByFloorIdAndRoomFuncType")
+    public CommonResult<List<ObjectDigital>> querySpaceListByFloorIdAndRoomFuncType(@Validated({QueryVadition.class})
+                                                                                    @RequestBody RequestData requestData) {
+        //基础参数校验
+        ParamCheckUtil.checkParam(CommonConstant.QUERY_GROUPCODE);
+        return service.querySpaceListByFloorIdAndRoomFuncType(requestData);
+    }
+
+
+
 
     /**
      * 创建默认条件

+ 9 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/dao/ObjectDigitalMapper.java

@@ -33,4 +33,13 @@ public interface ObjectDigitalMapper extends BaseMapper<ObjectDigital> {
      * Update By lijie 2021/8/25 9:49
      */
     List<List<ObjectDigital>> queryObjectListBySuperiorId(@Param("param") RequestData requestData);
+    /***
+     * Description: 查询指定楼层下所有指定空间类型的空间
+     * @param requestData : 请求参数
+     * @return : java.util.List<java.util.List<com.persagy.dmp.digital.entity.ObjectDigital>>
+     * @author : lijie
+     * @date :2021/8/30 10:26
+     * Update By lijie 2021/8/30 10:26
+     */
+    List<List<ObjectDigital>> queryObjectListByFloorIdAndRoomFuncType(@Param("param") RequestData requestData);
 }

+ 9 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/IObjectDigitalService.java

@@ -82,4 +82,13 @@ public interface IObjectDigitalService {
      * Update By lijie 2021/8/24 16:37
      */
     CommonResult<List<ObjectDigital>> queryObjectListSuperiorId(RequestData requestData);
+    /***
+     * Description: 查询指定楼层下所有指定空间类型的空间
+     * @param requestData : 请求参数
+     * @return : com.persagy.dmp.common.model.response.CommonResult<java.util.List<com.persagy.dmp.digital.entity.ObjectDigital>>
+     * @author : lijie
+     * @date :2021/8/30 9:54
+     * Update By lijie 2021/8/30 9:54
+     */
+    CommonResult<List<ObjectDigital>> querySpaceListByFloorIdAndRoomFuncType(RequestData requestData);
 }

+ 58 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/impl/ObjectDigitalServiceImpl.java

@@ -12,8 +12,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.dmp.common.constant.CommonConstant;
 import com.persagy.dmp.common.constant.ValidEnum;
 import com.persagy.dmp.common.context.AppContext;
+import com.persagy.dmp.common.helper.SpringHelper;
 import com.persagy.dmp.common.model.entity.BaseEntity;
 import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.common.utils.ResultHelper;
@@ -211,6 +213,62 @@ public class ObjectDigitalServiceImpl implements IObjectDigitalService {
         return analysisQueryResultList(objectDigitalMapper.queryObjectListBySuperiorId(requestData),requestData,false);
     }
     /***
+     * Description: 查询指定楼层下所有指定空间类型的空间
+     * @param requestData : 请求参数
+     * @return : com.persagy.dmp.common.model.response.CommonResult<java.util.List<com.persagy.dmp.digital.entity.ObjectDigital>>
+     * @author : lijie
+     * @date :2021/8/30 9:54
+     * Update By lijie 2021/8/30 9:54
+     */
+    @Override
+    public CommonResult<List<ObjectDigital>> querySpaceListByFloorIdAndRoomFuncType(RequestData requestData) {
+        // 1.计算分页参数
+        computePageParam(requestData);
+        // 2.使用Fl2Sp关系查询楼层下的空间
+        requestData.setRelCode(DigitalRelCode.FL_2_SP.getIndex());
+        requestData.setObjType(DigitalObjectType.SPACE.getIndex());
+        List<List<ObjectDigital>> dataResult = objectDigitalMapper.queryObjectListByFloorIdAndRoomFuncType(requestData);
+        return commonAnalysisPageResult(dataResult);
+    }
+    /***
+     * Description: 通用处理分页数据方法
+     * @param dataResult : 分页数据
+     * @return : com.persagy.dmp.common.model.response.CommonResult<java.util.List<com.persagy.dmp.digital.entity.ObjectDigital>>
+     * @author : lijie
+     * @date :2021/8/30 14:15
+     * Update By lijie 2021/8/30 14:15
+     */
+    private CommonResult<List<ObjectDigital>> commonAnalysisPageResult(List<List<ObjectDigital>> dataResult) {
+        if (CollUtil.isEmpty(dataResult) || dataResult.size()<2){
+            return ResultHelper.multi(new ArrayList<>(),0L);
+        }
+        List<ObjectDigital> objectDigitals = dataResult.get(0);
+        if (CollUtil.isEmpty(objectDigitals)){
+            return ResultHelper.multi(new ArrayList<>(),0L);
+        }
+        ObjectDigital pageParam = dataResult.get(1).get(0);
+        return ResultHelper.multi(objectDigitals,pageParam.getTotalCount());
+    }
+
+    /***
+     * Description: 计算分页参数
+     * @param requestData : 请求参数
+     * @return : void
+     * @author : lijie
+     * @date :2021/8/30 10:01
+     * Update By lijie 2021/8/30 10:01
+     */
+    private void computePageParam(RequestData requestData) {
+        if (null==requestData.getPage()){
+            requestData.setPage(1L);
+        }
+        if (null==requestData.getSize()){
+            requestData.setSize(SpringHelper.getLong(CommonConstant.QUERY_PAGE_SIZE_KEY, CommonConstant.QUERY_DEFAULT_PAGE_SIZE));
+        }
+        requestData.setSkip((requestData.getPage()-1)*requestData.getSize());
+    }
+
+    /***
      * Description: 根据对象id获取下级关系code数组
      * @param requestData : 请求参数
      * @return : void

+ 4 - 4
dmp-business/dmp-rwd/src/main/resources/db/init/schema.sql

@@ -123,8 +123,8 @@ CREATE TABLE IF NOT EXISTS `dt_object` (
   KEY `idx_project_1` (`project_id`,`class_code`,`creation_time`) USING BTREE,
   KEY `idx_project_2` (`project_id`,`creation_time`) USING BTREE,
   KEY `idx_project_3` (`project_id`,`modified_time`) USING BTREE,
-  KEY "idx_project_4" ("obj_type") USING BTREE,
-  KEY "idx_project_5" ("project_id") USING BTREE
+  KEY `idx_project_4` ("obj_type") USING BTREE,
+  KEY `idx_project_5` ("project_id") USING BTREE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='对象实例表';
 
 CREATE TABLE IF NOT EXISTS `dt_relation` (
@@ -151,6 +151,6 @@ CREATE TABLE IF NOT EXISTS `dt_relation` (
   KEY `idx_2` (`graph_id`,`rel_code`,`obj_from`,`obj_to`,`project_id`) USING BTREE,
   KEY `idx_3` (`graph_code`,`rel_code`,`obj_to`,`project_id`) USING BTREE,
   KEY `idx_4` (`graph_id`,`rel_code`,`obj_to`,`project_id`) USING BTREE,
-  KEY "idx_5" ("obj_from") USING BTREE,
-  KEY "idx_6" ("obj_to") USING BTREE
+  KEY `idx_5` ("obj_from") USING BTREE,
+  KEY `idx_6` ("obj_to") USING BTREE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='关系实例表';

+ 32 - 0
dmp-business/dmp-rwd/src/main/resources/mapper/ObjectDigitalMapper.xml

@@ -195,6 +195,38 @@
         ;
         SELECT FOUND_ROWS()	AS totalCount;
     </select>
+    <select id="queryObjectListByFloorIdAndRoomFuncType" resultMap="BaseResultMap,count">
+       SELECT DISTINCT
+            dto.*,
+            JSON_ARRAYAGG( dtr.obj_from ) AS objFromIds,
+            JSON_ARRAYAGG( dtr.obj_to ) AS objToIds
+        FROM
+            dt_object AS dto
+            INNER JOIN ( SELECT * FROM dt_relation AS dtrA WHERE 1=1
+        <if test="null!=param.floorId and param.floorId.length>0">
+            AND dtrA.obj_from = #{param.floorId}
+        </if>
+        <if test="null!=param.projectId and param.projectId.length>0">
+            AND dtrA.project_id = #{param.projectId}
+        </if>
+        <if test="null!=param.relCode and param.relCode.length>0">
+            AND dtrA.rel_code = #{param.relCode}
+        </if>
+        ) AS dtr ON dtr.obj_to = dto.id
+        WHERE
+            1 = 1
+        <if test="null!=param.projectId and param.projectId.length>0">
+            AND dto.obj_from = #{param.projectId}
+        </if>
+        <if test="null!=param.objType and param.objType.length>0">
+            AND dto.obj_type = #{param.objType}
+        </if>
+            AND dto.valid = TRUE
+        GROUP BY
+            dto.id;
+        SELECT
+            FOUND_ROWS( ) AS totalCount;
+    </select>
 
 
 </mapper>

+ 6 - 0
dmp-common/src/main/java/com/persagy/dmp/common/constant/CommonConstant.java

@@ -21,4 +21,10 @@ public interface CommonConstant {
 
     /** 应用id */
     String QUERY_APPID = "appId";
+
+    /** 默认配置的分页key */
+    String QUERY_PAGE_SIZE_KEY = "persagy.bdtp.page.size";
+
+    /** 默认配置的分页key */
+    Long QUERY_DEFAULT_PAGE_SIZE = 500L;
 }

+ 1 - 2
dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/basic/utils/QueryCriteriaHelper.java

@@ -88,10 +88,9 @@ public class QueryCriteriaHelper {
                 wrapper.or(orWrapper -> addOrCondition(orWrapper, fieldValue));
                 continue;
             }
-            // 20210827增加or条件支持
+            // 20210827增加and(condition OR condition)条件支持
             if(QueryOperator.AND_OR.getIndex().equalsIgnoreCase(field)) {
                 // 内部重新创建QueryWrapper
-
                 wrapper.and(orWrapper -> addAndOrCondition(orWrapper, fieldValue));
                 continue;
             }