|
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.map.MapUtil;
|
|
|
import cn.hutool.core.util.ReflectUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
@@ -14,9 +15,13 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
|
import com.persagy.dmp.common.constant.ValidEnum;
|
|
|
import com.persagy.dmp.common.context.AppContext;
|
|
|
import com.persagy.dmp.common.model.entity.BaseEntity;
|
|
|
+import com.persagy.dmp.common.model.response.CommonResult;
|
|
|
+import com.persagy.dmp.common.utils.ResultHelper;
|
|
|
import com.persagy.dmp.define.entity.ObjectInfoDefine;
|
|
|
import com.persagy.dmp.digital.entity.ObjectDigital;
|
|
|
import com.persagy.dmp.rwd.basic.constant.DigitalMessageConstant;
|
|
|
+import com.persagy.dmp.rwd.basic.constant.DigitalRelCode;
|
|
|
+import com.persagy.dmp.rwd.basic.dto.RequestData;
|
|
|
import com.persagy.dmp.rwd.basic.utils.DigitalCommonUtils;
|
|
|
import com.persagy.dmp.rwd.basic.utils.DigitalMessageHelper;
|
|
|
import com.persagy.dmp.rwd.define.service.IObjectInfoService;
|
|
@@ -24,6 +29,7 @@ import com.persagy.dmp.rwd.define.service.IObjectTypeService;
|
|
|
import com.persagy.dmp.rwd.digital.dao.ObjectDigitalMapper;
|
|
|
import com.persagy.dmp.rwd.digital.service.IObjectDigitalService;
|
|
|
import com.persagy.dmp.rwd.parser.service.InfoDataFactory;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -39,16 +45,14 @@ import java.util.*;
|
|
|
*/
|
|
|
@Service
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
+@RequiredArgsConstructor
|
|
|
public class ObjectDigitalServiceImpl implements IObjectDigitalService {
|
|
|
|
|
|
- @Resource
|
|
|
- private ObjectDigitalMapper dao;
|
|
|
- @Autowired
|
|
|
- private DigitalMessageHelper messageSender;
|
|
|
- @Autowired
|
|
|
- private IObjectInfoService infoService;
|
|
|
- @Autowired
|
|
|
- private IObjectTypeService typeService;
|
|
|
+ private final ObjectDigitalMapper dao;
|
|
|
+ private final DigitalMessageHelper messageSender;
|
|
|
+ private final IObjectInfoService infoService;
|
|
|
+ private final IObjectTypeService typeService;
|
|
|
+ private final ObjectDigitalMapper objectDigitalMapper;
|
|
|
|
|
|
@Override
|
|
|
public ObjectDigital load(String id) {
|
|
@@ -161,6 +165,107 @@ public class ObjectDigitalServiceImpl implements IObjectDigitalService {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ /***
|
|
|
+ * Description: 根据上级id查询下级关联对象
|
|
|
+ * @param requestData : 请求参数
|
|
|
+ * @return : com.persagy.dmp.common.model.response.CommonResult<java.util.List<com.persagy.dmp.digital.entity.ObjectDigital>>
|
|
|
+ * @author : lijie
|
|
|
+ * @date :2021/8/24 16:37
|
|
|
+ * Update By lijie 2021/8/24 16:37
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public CommonResult<List<ObjectDigital>> queryObjectListSuperiorId(RequestData requestData) {
|
|
|
+ // 1.计算分页参数
|
|
|
+ Long page = requestData.getPage();
|
|
|
+ Long size = requestData.getSize();
|
|
|
+ // 防止人不自觉,最大仅允许查500条数据
|
|
|
+ if (null==page){
|
|
|
+ page=1L;
|
|
|
+ }
|
|
|
+ if (null==size){
|
|
|
+ size=500L;
|
|
|
+ }
|
|
|
+ requestData.setSkip((page-1)*size);
|
|
|
+ // 2.当只有项目id时不查询关系,直接根据项目id筛选所有对象
|
|
|
+ if (StrUtil.isBlank(requestData.getBuildingId())
|
|
|
+ && StrUtil.isBlank(requestData.getFloorId())
|
|
|
+ && StrUtil.isBlank(requestData.getEquipmentId())){
|
|
|
+ return queryObjectListByProjectId(requestData);
|
|
|
+ }
|
|
|
+ // 3.存在建筑id/楼层id/设备id,获取关系code列表
|
|
|
+ querySubordinateRelCode(requestData);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ /***
|
|
|
+ * Description: 根据对象id获取下级关系code数组
|
|
|
+ * @param requestData : 请求参数
|
|
|
+ * @return : void
|
|
|
+ * @author : lijie
|
|
|
+ * @date :2021/8/24 21:20
|
|
|
+ * Update By lijie 2021/8/24 21:20
|
|
|
+ */
|
|
|
+ private void querySubordinateRelCode(RequestData requestData) {
|
|
|
+ if (StrUtil.isNotBlank(requestData.getEquipmentId())){
|
|
|
+ // 设备下的部件
|
|
|
+ requestData.setRelCodes(CollUtil.newHashSet(DigitalRelCode.EQ_2_EC.getIndex()));
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (StrUtil.isNotBlank(requestData.getFloorId())){
|
|
|
+ // 楼层下的部件
|
|
|
+ requestData.setRelCodes(CollUtil.newHashSet(DigitalRelCode.FL_2_SP.getIndex(),
|
|
|
+ DigitalRelCode.EQ_2_FL.getIndex(),DigitalRelCode.SY_2_FL.getIndex(),
|
|
|
+ DigitalRelCode.EQ_2_EC.getIndex()));
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /***
|
|
|
+ * Description: 根据项目id查询对象列表
|
|
|
+ * @param requestData : 请求参数
|
|
|
+ * @return : com.persagy.dmp.common.model.response.CommonResult<java.util.List<com.persagy.dmp.digital.entity.ObjectDigital>>
|
|
|
+ * @author : lijie
|
|
|
+ * @date :2021/8/24 16:40
|
|
|
+ * Update By lijie 2021/8/24 16:40
|
|
|
+ */
|
|
|
+ private CommonResult<List<ObjectDigital>> queryObjectListByProjectId(RequestData requestData) {
|
|
|
+ // 1.查询结果集
|
|
|
+ List<List<ObjectDigital>> resultList =
|
|
|
+ objectDigitalMapper.queryObjectDigitalsByProjectId(requestData,requestData.getSkip(),requestData.getSize());
|
|
|
+ if (CollUtil.isEmpty(resultList)){
|
|
|
+ return ResultHelper.multi(new ArrayList<>(),0);
|
|
|
+ }
|
|
|
+ List<ObjectDigital> pageResult = resultList.get(0);
|
|
|
+ List<ObjectDigital> totalCount = resultList.get(1);
|
|
|
+ if (CollUtil.isEmpty(pageResult)){
|
|
|
+ return ResultHelper.multi(new ArrayList<>(),0);
|
|
|
+ }
|
|
|
+ if (requestData.isOnlyCount()){
|
|
|
+ // 只返回数
|
|
|
+ return ResultHelper.multi(new ArrayList<>(),totalCount.get(0).getTotalCount());
|
|
|
+ }
|
|
|
+ if (CollUtil.isEmpty(requestData.getReturnInfos())){
|
|
|
+ return ResultHelper.multi(pageResult,totalCount.get(0).getTotalCount());
|
|
|
+ }
|
|
|
+ // 2.过滤信息点
|
|
|
+ for (ObjectDigital objectDigital : pageResult) {
|
|
|
+ ObjectNode infos = objectDigital.getInfos();
|
|
|
+ if (null==infos || infos.size()<=0){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ infos.retain(requestData.getReturnInfos());
|
|
|
+ }
|
|
|
+ return ResultHelper.multi(pageResult,totalCount.get(0).getTotalCount());
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 保存校验
|
|
|
* 编码全局唯一
|