Explorar el Código

Merge remote-tracking branch 'origin/master'

zhangcl hace 5 meses
padre
commit
7bc4a7e8a7

+ 8 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotInfoController.java

@@ -78,6 +78,14 @@ public class IotInfoController {
         return success(BeanUtils.toBean(pageResult, IotInfoRespVO.class));
     }
 
+    @GetMapping("/file/page")
+    @Operation(summary = "获得资料分页")
+    @PreAuthorize("@ss.hasPermission('rq:iot-info:query')")
+    public CommonResult<PageResult<IotInfoRespVO>> getIotInfoFilePage(@Valid IotInfoPageReqVO pageReqVO) {
+        PageResult<IotInfoDO> pageResult = iotInfoService.getIotInfoFilePage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, IotInfoRespVO.class));
+    }
+
     @GetMapping("/export-excel")
     @Operation(summary = "导出资料 Excel")
     @PreAuthorize("@ss.hasPermission('rq:iot-info:export')")

+ 5 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/IotTreeMapper.java

@@ -5,9 +5,11 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotTreeListReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotTreePageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.IotInfoClassifyDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotTreeDO;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.Collection;
 import java.util.List;
 
 /**
@@ -17,6 +19,9 @@ import java.util.List;
  */
 @Mapper
 public interface IotTreeMapper extends BaseMapperX<IotTreeDO> {
+    default List<IotTreeDO> selectListByParentId(Collection<Long> parentIds) {
+        return selectList(IotTreeDO::getParentId, parentIds);
+    }
     default List<IotTreeDO> selectList(IotTreeListReqVO reqVO) {
         return selectList(new LambdaQueryWrapperX<IotTreeDO>()
                 .likeIfPresent(IotTreeDO::getName, reqVO.getName())

+ 1 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotInfoService.java

@@ -52,5 +52,6 @@ public interface IotInfoService {
      * @return 资料分页
      */
     PageResult<IotInfoDO> getIotInfoPage(IotInfoPageReqVO pageReqVO);
+    PageResult<IotInfoDO> getIotInfoFilePage(IotInfoPageReqVO pageReqVO);
 
 }

+ 25 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotInfoServiceImpl.java

@@ -4,8 +4,10 @@ import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoSaveReqVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotInfoClassifyDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotInfoDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.IotTreeDO;
 import cn.iocoder.yudao.module.pms.dal.mysql.IotInfoMapper;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
@@ -34,6 +36,8 @@ public class IotInfoServiceImpl implements IotInfoService {
     private IotInfoMapper iotInfoMapper;
     @Resource
     private IotInfoClassifyService iotInfoClassifyService;
+    @Autowired
+    private IotTreeService iotTreeService;
 
     @Override
     public Long createIotInfo(IotInfoSaveReqVO createReqVO) {
@@ -77,6 +81,25 @@ public class IotInfoServiceImpl implements IotInfoService {
     public PageResult<IotInfoDO> getIotInfoPage(IotInfoPageReqVO pageReqVO) {
         return iotInfoMapper.selectPage(pageReqVO, getInfoCondition(pageReqVO.getClassId()));
     }
+
+    @Override
+    public PageResult<IotInfoDO> getIotInfoFilePage(IotInfoPageReqVO pageReqVO) {
+        return iotInfoMapper.selectPage(pageReqVO, getInfoFileCondition(pageReqVO.getClassId()));
+    }
+
+    private Set<Long> getInfoFileCondition(Long classId) {
+        if (Objects.isNull(classId)) {
+            return Collections.emptySet();
+        }
+        IotTreeDO iotTree = iotTreeService.getIotTree(classId);
+        if (Objects.isNull(iotTree)) {
+            throw exception(IOT_INFO_NOT_EXISTS);
+        }
+        Set<Long> fileIds = convertSet(iotTreeService.getChildTreeList(classId), IotTreeDO::getOriginId);
+        fileIds.add(iotTree.getOriginId()); // 包括自身
+        return fileIds;
+    }
+
     private Set<Long> getInfoCondition(Long classId) {
         if (classId == null) {
             return Collections.emptySet();
@@ -85,4 +108,6 @@ public class IotInfoServiceImpl implements IotInfoService {
         deptIds.add(classId); // 包括自身
         return deptIds;
     }
+
+
 }

+ 7 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotTreeService.java

@@ -5,9 +5,12 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotTreeListReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotTreePageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotTreeSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.IotInfoClassifyDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotTreeDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
 
+import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -58,4 +61,8 @@ public interface IotTreeService {
      */
     PageResult<IotTreeDO> getIotTreePage(IotTreePageReqVO pageReqVO);
 
+    default List<IotTreeDO> getChildTreeList(Long id) {
+        return getChildTreeList(Collections.singleton(id));
+    }
+    List<IotTreeDO> getChildTreeList(Collection<Long> ids);
 }

+ 23 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotTreeServiceImpl.java

@@ -8,6 +8,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotTreeListReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotTreePageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotTreeSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.IotInfoClassifyDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotTreeDO;
 import cn.iocoder.yudao.module.pms.dal.mysql.IotTreeMapper;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
@@ -17,8 +18,9 @@ import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
-import java.util.Comparator;
-import java.util.List;
+import java.util.*;
+
+import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
 
 /**
  * pms树 Service 实现类
@@ -113,4 +115,23 @@ public class IotTreeServiceImpl implements IotTreeService {
         return iotTreeMapper.selectPage(pageReqVO);
     }
 
+
+    @Override
+    public List<IotTreeDO> getChildTreeList(Collection<Long> ids) {
+        List<IotTreeDO> children = new LinkedList<>();
+        // 遍历每一层
+        Collection<Long> parentIds = ids;
+        for (int i = 0; i < Short.MAX_VALUE; i++) { // 使用 Short.MAX_VALUE 避免 bug 场景下,存在死循环
+            // 查询当前层,所有的子产品分类
+            List<IotTreeDO> depts = iotTreeMapper.selectListByParentId(parentIds);
+            // 1. 如果没有子产品分类,则结束遍历
+            if (CollUtil.isEmpty(depts)) {
+                break;
+            }
+            // 2. 如果有子产品分类,继续遍历
+            children.addAll(depts);
+            parentIds = convertSet(depts, IotTreeDO::getId);
+        }
+        return children;
+    }
 }