Procházet zdrojové kódy

新增接口:queryRelationCountByObjIds

lijie před 3 roky
rodič
revize
ba839aaf13

+ 63 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/simple/controller/RelationReportController.java

@@ -0,0 +1,63 @@
+package com.persagy.dmp.rwd.simple.controller;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.persagy.dmp.common.constant.CommonConstant;
+import com.persagy.dmp.common.constant.ResponseCode;
+import com.persagy.dmp.common.context.AppContext;
+import com.persagy.dmp.common.exception.BusinessException;
+import com.persagy.dmp.common.model.response.CommonResult;
+import com.persagy.dmp.common.utils.ParamCheckUtil;
+import com.persagy.dmp.common.utils.ResultHelper;
+import com.persagy.dmp.digital.entity.ObjectRelation;
+import com.persagy.dmp.rwd.simple.domain.CountRequestData;
+import com.persagy.dmp.rwd.simple.service.RelationReportService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/***
+ * Description: 关系数据相关的统计
+ * @author : lijie
+ * @date :2021/10/28 10:14
+ * Update By lijie 2021/10/28 10:14
+ */
+@Slf4j
+@RestController
+@RequestMapping("/api/report/relation/")
+@RequiredArgsConstructor
+public class RelationReportController {
+
+
+    private final RelationReportService relationReportService;
+
+
+    /***
+     * Description: 根据对象id统计关系数量
+     * @param requestData : 请求参数
+     * @author : lijie
+     * @date :2021/10/28 10:16
+     * Update By lijie 2021/10/28 10:16
+     */
+    @PostMapping("queryRelationCountByObjIds")
+    public CommonResult<List<ObjectRelation>> queryRelationCountByObjIds(@RequestBody CountRequestData requestData) {
+        //基础参数校验
+        ParamCheckUtil.checkParam(CommonConstant.QUERY_GROUPCODE);
+        if (CollUtil.isEmpty(requestData.getGroups())){
+            throw new BusinessException(ResponseCode.A0400.getCode(),ResponseCode.A0400.getDesc());
+        }
+        if (CollUtil.isEmpty(requestData.getProjectIds())
+                && StrUtil.isNotBlank(AppContext.getContext().getProjectId())){
+            requestData.setProjectIds(CollUtil.newHashSet(AppContext.getContext().getProjectId()));
+        }
+        return ResultHelper.multi(relationReportService.queryRelationCountByObjIds(requestData));
+    }
+
+}

+ 1 - 1
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/simple/dao/EquipmentReportMapper.java

@@ -1,7 +1,7 @@
 package com.persagy.dmp.rwd.simple.dao;
 
 import com.persagy.dmp.basic.dto.RequestData;
-import com.persagy.dmp.rwd.simple.dto.GroupDTO;
+import com.persagy.dmp.rwd.simple.domain.GroupDTO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;

+ 52 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/simple/domain/CountRequestData.java

@@ -0,0 +1,52 @@
+package com.persagy.dmp.rwd.simple.domain;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonAlias;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+import java.util.List;
+import java.util.Set;
+
+@Data
+@EqualsAndHashCode
+@ToString
+public class CountRequestData {
+    /**关系id数组*/
+    @JSONField(alternateNames = {"ids"})
+    @JsonAlias({"ids"})
+    private Set<String> ids;
+    /**关系左侧的对象id数组*/
+    @JSONField(alternateNames = {"objFromIds"})
+    @JsonAlias({"objFromIds"})
+    private Set<String> objFromIds;
+    /**关系右侧的对象id数组*/
+    @JSONField(alternateNames = {"objToIds"})
+    @JsonAlias({"objToIds"})
+    private Set<String> objToIds;
+    /**图类型编码数组*/
+    @JSONField(alternateNames = {"graphCodes"})
+    @JsonAlias({"graphCodes"})
+    private Set<String> graphCodes;
+    /**边类型编码数组*/
+    @JSONField(alternateNames = {"relCodes"})
+    @JsonAlias({"relCodes"})
+    private Set<String> relCodes;
+    /**关系值数组筛选*/
+    @JSONField(alternateNames = {"relValues"})
+    @JsonAlias({"relValues"})
+    private Set<String> relValues;
+    /**项目id数组筛选*/
+    @JSONField(alternateNames = {"projectIds"})
+    @JsonAlias({"projectIds"})
+    private Set<String> projectIds;
+    /**分组字段数组筛选*/
+    @JSONField(alternateNames = {"groups"})
+    @JsonAlias({"groups"})
+    private List<String> groups;
+
+
+
+
+}

+ 1 - 1
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/simple/dto/GroupDTO.java

@@ -1,4 +1,4 @@
-package com.persagy.dmp.rwd.simple.dto;
+package com.persagy.dmp.rwd.simple.domain;
 
 import lombok.Builder;
 import lombok.Data;

+ 24 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/simple/service/RelationReportService.java

@@ -0,0 +1,24 @@
+package com.persagy.dmp.rwd.simple.service;
+
+import com.persagy.dmp.digital.entity.ObjectRelation;
+import com.persagy.dmp.rwd.simple.domain.CountRequestData;
+
+import java.util.List;
+
+/***
+ * Description: 关系数据相关的统计逻辑处理类
+ * @author : lijie
+ * @date :2021/10/28 10:16
+ * Update By lijie 2021/10/28 10:16
+ */
+public interface RelationReportService {
+
+    /***
+     * Description: 根据对象id统计关系数量
+     * @param requestData : 请求参数
+     * @author : lijie
+     * @date :2021/10/28 10:16
+     * Update By lijie 2021/10/28 10:16
+     */
+    List<ObjectRelation> queryRelationCountByObjIds(CountRequestData requestData);
+}

+ 1 - 1
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/simple/service/impl/EquipmentReportServiceImpl.java

@@ -10,7 +10,7 @@ import com.persagy.dmp.common.utils.DateHelper;
 import com.persagy.dmp.rwd.basic.constant.DigitalObjectType;
 import com.persagy.dmp.rwd.digital.utils.ObjectDigitalCriteriaHelper;
 import com.persagy.dmp.rwd.simple.dao.EquipmentReportMapper;
-import com.persagy.dmp.rwd.simple.dto.GroupDTO;
+import com.persagy.dmp.rwd.simple.domain.GroupDTO;
 import com.persagy.dmp.rwd.simple.entity.CountTypeEquipmentVO;
 import com.persagy.dmp.rwd.simple.service.IEquipmentReportService;
 import lombok.extern.slf4j.Slf4j;

+ 55 - 0
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/simple/service/impl/RelationReportServiceImpl.java

@@ -0,0 +1,55 @@
+package com.persagy.dmp.rwd.simple.service.impl;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.persagy.dmp.common.constant.CommonConstant;
+import com.persagy.dmp.digital.entity.ObjectRelation;
+import com.persagy.dmp.rwd.digital.service.IObjectRelationService;
+import com.persagy.dmp.rwd.simple.domain.CountRequestData;
+import com.persagy.dmp.rwd.simple.service.RelationReportService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class RelationReportServiceImpl implements RelationReportService {
+
+    private final IObjectRelationService objectRelationService;
+
+    /***
+     * Description: 根据对象id统计关系数量
+     * @param requestData : 请求参数
+     * @author : lijie
+     * @date :2021/10/28 10:16
+     * Update By lijie 2021/10/28 10:16
+     */
+    @Override
+    public List<ObjectRelation> queryRelationCountByObjIds(CountRequestData requestData) {
+        QueryWrapper<ObjectRelation> groupWrapper = new QueryWrapper<>();
+        groupWrapper.eq(ObjectRelation.PROP_VALID,Boolean.TRUE);
+        groupWrapper.in(CollUtil.isNotEmpty(requestData.getIds()),ObjectRelation.PROP_ID,requestData.getIds());
+        groupWrapper.in(CollUtil.isNotEmpty(requestData.getGraphCodes()),
+                StrUtil.toUnderlineCase(ObjectRelation.GRAPH_CODE_HUM),requestData.getGraphCodes());
+        groupWrapper.in(CollUtil.isNotEmpty(requestData.getProjectIds()),
+                StrUtil.toUnderlineCase(CommonConstant.QUERY_PROJECTID),requestData.getProjectIds());
+        groupWrapper.in(CollUtil.isNotEmpty(requestData.getObjFromIds()),ObjectRelation.OBJ_FROM,requestData.getObjFromIds());
+        groupWrapper.in(CollUtil.isNotEmpty(requestData.getObjToIds()),ObjectRelation.OBJ_TO,requestData.getObjToIds());
+        groupWrapper.in(CollUtil.isNotEmpty(requestData.getRelCodes()),
+                StrUtil.toUnderlineCase(ObjectRelation.REL_CODE_HUM),requestData.getRelCodes());
+        groupWrapper.in(CollUtil.isNotEmpty(requestData.getRelValues()),
+                StrUtil.toUnderlineCase(ObjectRelation.REL_VALUE_HUM),requestData.getRelValues());
+        List<String> groups = requestData.getGroups();
+        String[] selectFields = groups.stream().map(StrUtil::toUnderlineCase).collect(Collectors.toList()).toArray(new String[groups.size() + 1]);
+        selectFields[groups.size()]="COUNT(id) AS count";
+        groupWrapper.select(selectFields);
+        groupWrapper.groupBy(groups.stream().map(StrUtil::toUnderlineCase).collect(Collectors.joining(StrUtil.COMMA)));
+        return CollUtil.defaultIfEmpty(objectRelationService.list(groupWrapper),CollUtil.newArrayList());
+    }
+}

+ 4 - 0
dmp-comp/dmp-digital-starter/src/main/java/com/persagy/dmp/digital/entity/ObjectRelation.java

@@ -1,6 +1,7 @@
 package com.persagy.dmp.digital.entity;
 
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
 import com.persagy.dmp.common.model.entity.AuditableEntity;
@@ -62,4 +63,7 @@ public class ObjectRelation extends AuditableEntity {
     /** 对象的outline平面坐标 */
     @TableField(exist = false,typeHandler = JacksonTypeHandler.class,value = "outLines")
     private List<LinkedHashMap<String,Object>> outLines;
+    /** 统计数 */
+    @TableField(exist = false)
+    private Integer count;
 }