Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/master'

zhangcl 3 nedēļas atpakaļ
vecāks
revīzija
5aa86da85a

+ 6 - 9
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/IotInfoClassifyController.java

@@ -25,9 +25,6 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 @RequestMapping("/rq/iot-info-classify")
 @Validated
 public class IotInfoClassifyController {
-
-    @Resource
-    private IotInfoClassifyService IotInfoClassifyService;
     @Autowired
     private IotInfoClassifyService iotInfoClassifyService;
 
@@ -35,7 +32,7 @@ public class IotInfoClassifyController {
     @Operation(summary = "创建资料分类")
     @PreAuthorize("@ss.hasPermission('iot:info-classify:create')")
     public CommonResult<Long> createIotInfoClassify(@Valid @RequestBody IotInfoClassifySaveReqVO createReqVO) {
-        Long deptId = IotInfoClassifyService.createIotInfoClassify(createReqVO);
+        Long deptId = iotInfoClassifyService.createIotInfoClassify(createReqVO);
         return success(deptId);
     }
 
@@ -43,7 +40,7 @@ public class IotInfoClassifyController {
     @Operation(summary = "更新资料分类")
     @PreAuthorize("@ss.hasPermission('iot:info-classify:update')")
     public CommonResult<Boolean> updateIotInfoClassify(@Valid @RequestBody IotInfoClassifySaveReqVO updateReqVO) {
-        IotInfoClassifyService.updateIotInfoClassify(updateReqVO,"update");
+        iotInfoClassifyService.updateIotInfoClassify(updateReqVO,"update");
         return success(true);
     }
 
@@ -63,7 +60,7 @@ public class IotInfoClassifyController {
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
     @PreAuthorize("@ss.hasPermission('iot:info-classify:delete')")
     public CommonResult<Boolean> deleteIotInfoClassify(@RequestParam("id") Long id) {
-        IotInfoClassifyService.deleteIotInfoClassify(id);
+        iotInfoClassifyService.deleteIotInfoClassify(id);
         return success(true);
     }
 
@@ -71,14 +68,14 @@ public class IotInfoClassifyController {
     @Operation(summary = "获取资料分类列表")
     @PreAuthorize("@ss.hasPermission('iot:info-classify:query')")
     public CommonResult<List<IotInfoClassifyRespVO>> getIotInfoClassifyList(IotInfoClassifyListReqVO reqVO) {
-        List<IotInfoClassifyDO> list = IotInfoClassifyService.getIotInfoClassifyList(reqVO);
+        List<IotInfoClassifyDO> list = iotInfoClassifyService.getIotInfoClassifyList(reqVO);
         return success(BeanUtils.toBean(list, IotInfoClassifyRespVO.class));
     }
 
     @GetMapping(value = {"/list-all-simple", "/simple-list"})
     @Operation(summary = "获取资料分类精简信息列表", description = "只包含被开启的资料分类,主要用于前端的下拉选项")
     public CommonResult<List<IotInfoClassifySimpleRespVO>> getSimpleIotInfoClassifyList(Long deviceId) {
-        List<IotInfoClassifyDO> list = IotInfoClassifyService.getIotInfoClassifyList(
+        List<IotInfoClassifyDO> list = iotInfoClassifyService.getIotInfoClassifyList(
                 new IotInfoClassifyListReqVO().setStatus(CommonStatusEnum.ENABLE.getStatus()).setDeviceId(deviceId));
         return success(BeanUtils.toBean(list, IotInfoClassifySimpleRespVO.class));
     }
@@ -88,7 +85,7 @@ public class IotInfoClassifyController {
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
     @PreAuthorize("@ss.hasPermission('iot:info-classify:query')")
     public CommonResult<IotInfoClassifyRespVO> getIotInfoClassify(@RequestParam("id") Long id) {
-        IotInfoClassifyDO dept = IotInfoClassifyService.getIotInfoClassify(id);
+        IotInfoClassifyDO dept = iotInfoClassifyService.getIotInfoClassify(id);
         return success(BeanUtils.toBean(dept, IotInfoClassifyRespVO.class));
     }
 

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

@@ -10,11 +10,17 @@ import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoSaveReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotInfoDO;
+import cn.iocoder.yudao.module.pms.service.IotDeviceService;
 import cn.iocoder.yudao.module.pms.service.IotInfoService;
+import cn.iocoder.yudao.module.system.api.dept.DeptApi;
+import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
+import com.xingyuv.captcha.util.StringUtils;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -24,6 +30,8 @@ import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.io.IOException;
 import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@@ -37,6 +45,10 @@ public class IotInfoController {
 
     @Resource
     private IotInfoService iotInfoService;
+    @Autowired
+    private IotDeviceService iotDeviceService;
+    @Autowired
+    private DeptApi deptApi;
 
     @PostMapping("/create")
     @Operation(summary = "创建资料")
@@ -86,10 +98,40 @@ public class IotInfoController {
     @Operation(summary = "获得资料分页")
     @PreAuthorize("@ss.hasPermission('rq:iot-info:query')")
     public CommonResult<PageResult<IotInfoRespVO>> getIotInfoFilePage(@Valid IotInfoPageReqVO pageReqVO) {
-//        Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
-//        pageReqVO.setCreator(String.valueOf(loginUserId));
         PageResult<IotInfoDO> pageResult = iotInfoService.getIotInfoFilePage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, IotInfoRespVO.class));
+        List<IotInfoDO> list = pageResult.getList();
+        List<IotInfoRespVO> collect = list.stream().map(e -> {
+            IotInfoRespVO vo = BeanUtils.toBean(e, IotInfoRespVO.class);
+            if (Objects.nonNull(e.getDeviceId())) {
+                IotDeviceDO iotDevice = iotDeviceService.getIotDevice(e.getDeviceId());
+                if (Objects.nonNull(iotDevice)) {
+                    vo.setDeviceName(iotDevice.getDeviceName());
+                }
+            }
+            if (Objects.nonNull(e.getDeptId())) {
+                DeptRespDTO dept = deptApi.getDept(e.getDeptId());
+                if (Objects.nonNull(dept)) {
+                    vo.setDeptName(dept.getName());
+                }
+            }
+            return vo;
+        }).collect(Collectors.toList());
+        return success(new PageResult<>(collect, pageResult.getTotal()));
+    }
+
+    @PostMapping("/child/content-file")
+    @Operation(summary = "获得资料库的分类目录及文件")
+    @PreAuthorize("@ss.hasPermission('rq:iot-info:query')")
+    public CommonResult<List<IotInfoRespVO>> getChildContentFile(@Valid IotInfoPageReqVO pageReqVO) {
+        Long classId = pageReqVO.getClassId();
+        List<IotInfoRespVO> contentFiles = iotInfoService.getChildContentFile(classId).stream().filter(e ->{
+            if (StringUtils.isNotBlank(pageReqVO.getFilename())) {
+                return e.getFilename().contains(pageReqVO.getFilename());
+            } else {
+                return true;
+            }
+        }).collect(Collectors.toList());
+        return success(contentFiles);
     }
 
     @GetMapping("/export-excel")

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

@@ -17,6 +17,7 @@ import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import org.apache.commons.collections4.map.LinkedMap;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -26,7 +27,10 @@ import javax.annotation.security.PermitAll;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.io.IOException;
+import java.util.HashMap;
+import java.util.LinkedList;
 import java.util.List;
+import java.util.Map;
 
 import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@@ -120,4 +124,30 @@ public class IotTreeController {
     public void initTree() {
         iotTreeService.initTree();
     }
+
+
+    @GetMapping("/ids/{id}")
+    @Operation(summary = "获取某个节点的所有上级节点")
+    public CommonResult<LinkedList<Map<String, Object>>> getTreeIds(@PathVariable("id") Long id) {
+        List<IotTreeDO> allParentIds = iotTreeService.getAllParentIds(id);
+        LinkedList<Map<String, Object>> list = new LinkedList<>();
+        allParentIds.forEach(e -> {
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", e.getId());
+            map.put("name", e.getName());
+            if (e.getName().contains("科瑞石油技术")) {
+                map.put("type", "root");
+            }
+            list.add(map);
+        });
+        IotTreeDO iotTree = iotTreeService.getIotTree(id);
+        Map<String, Object> map = new HashMap<>();
+        map.put("id", iotTree.getId());
+        map.put("name", iotTree.getName());
+        if (iotTree.getName().contains("科瑞石油技术")){
+            map.put("type", "root");
+        }
+        list.add(map);
+        return success(list);
+    }
 }

+ 45 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/stat/IotStaticController.java

@@ -12,6 +12,7 @@ import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.module.pms.controller.admin.failure.vo.IotFailureReportPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.inspect.plan.vo.IotInspectPlanPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotdevicerunlog.vo.IotDeviceRunLogPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotdevicerunlog.vo.IotDeviceRunLogRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.iotmainworkorder.vo.IotMainWorkOrderPageReqVO;
@@ -27,6 +28,7 @@ import cn.iocoder.yudao.module.pms.dal.dataobject.IotProductClassifyDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.failure.IotFailureReportDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDetailDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectPlanDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotcountdata.IotCountDataDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotmainworkorder.IotMainWorkOrderDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotoutbound.IotOutboundDO;
@@ -38,6 +40,7 @@ import cn.iocoder.yudao.module.pms.dal.mysql.TDDeviceMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.failure.IotFailureReportMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectOrderDetailMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectOrderMapper;
+import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectPlanMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotdevicerunlog.IotDeviceRunLogMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotmainworkorder.IotMainWorkOrderMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.iotopeationfill.IotOpeationFillMapper;
@@ -53,8 +56,11 @@ import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
 import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
 import cn.iocoder.yudao.module.system.service.dict.DictDataService;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
+import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.Data;
 import org.apache.commons.lang3.StringUtils;
@@ -126,6 +132,8 @@ public class IotStaticController {
     private TDDeviceMapper deviceMapper;
     @Autowired
     private IotOutboundMapper iotOutboundMapper;
+    @Autowired
+    private IotInspectPlanMapper iotInspectPlanMapper;
 
     @GetMapping("/main/day")
     public CommonResult<Map<String, Object>> getMaintainDay() {
@@ -1019,5 +1027,42 @@ public class IotStaticController {
         return success(ImmutableMap.of("xAxis", lastYearMonthRanges, "series", ImmutableList.of(fillResult)));
 
     }
+
+    @GetMapping("/number")
+    @Operation(summary = "获取巡检计划数量")
+    @PermitAll
+    public CommonResult<ImmutableMap> getPlanDeviceNumber() {
+        Set<Long> rhids = getDeptIds("rh");
+        Set<Long> rdids = getDeptIds("rd");
+        Set<Long> ryids = getDeptIds("ry");
+        IotInspectPlanPageReqVO rh = new IotInspectPlanPageReqVO();
+        rh.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<IotInspectPlanDO> rhplans = iotInspectPlanMapper.selectPage(rh, rhids).getList().stream().filter(e -> !e.getDeleted()).collect(Collectors.toList());
+        List<IotInspectPlanDO> rdplans = iotInspectPlanMapper.selectPage(rh, rdids).getList().stream().filter(e -> !e.getDeleted()).collect(Collectors.toList());
+        List<IotInspectPlanDO> ryplans = iotInspectPlanMapper.selectPage(rh, ryids).getList().stream().filter(e -> !e.getDeleted()).collect(Collectors.toList());
+
+        AtomicInteger rhcount = new AtomicInteger();
+        rhplans.forEach(e ->{
+            JSONArray objects = JSON.parseArray(e.getDeviceIds());
+            int size = objects.size();
+            rhcount.set(rhcount.get() + size);
+        });
+
+        AtomicInteger rdcount = new AtomicInteger();
+        rdplans.forEach(e ->{
+            JSONArray objects = JSON.parseArray(e.getDeviceIds());
+            int size = objects.size();
+            rdcount.set(rdcount.get() + size);
+        });
+
+        AtomicInteger rycount = new AtomicInteger();
+        ryplans.forEach(e ->{
+            JSONArray objects = JSON.parseArray(e.getDeviceIds());
+            int size = objects.size();
+            rycount.set(rycount.get() + size);
+        });
+
+        return success(ImmutableMap.of("瑞恒", rhcount.get(),"瑞都",rdcount.get(),"瑞鹰",rycount.get()));
+    }
 }
 

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

@@ -50,4 +50,12 @@ public class IotInfoRespVO {
 
     @Schema(description = "文件大小")
     private String fileSize;
+
+    @Schema(description = "设备名称")
+    private String deviceName;
+
+    @Schema(description = "部门名称")
+    private String deptName;
+
+    private String fileClassify;
 }

+ 3 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotInfoClassifyService.java

@@ -2,7 +2,9 @@ package cn.iocoder.yudao.module.pms.service;
 
 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoClassifyListReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoClassifyRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoClassifySaveReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoRespVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotInfoClassifyDO;
 import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
 
@@ -37,6 +39,7 @@ public interface IotInfoClassifyService {
      */
     void deleteIotInfoClassify(Long id);
 
+    List<IotInfoClassifyRespVO> getChildContentFile(Long classId);
     /**
      * 获得产品分类信息
      *

+ 12 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotInfoClassifyServiceImpl.java

@@ -6,7 +6,9 @@ import cn.iocoder.yudao.framework.common.exception.ServiceException;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoClassifyListReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoClassifyRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoClassifySaveReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoRespVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotInfoClassifyDO;
 import cn.iocoder.yudao.module.pms.dal.mysql.IotInfoClassifyMapper;
@@ -16,6 +18,7 @@ import cn.iocoder.yudao.module.pms.dal.mysql.IotTreeMapper;
 import cn.iocoder.yudao.module.system.dal.redis.RedisKeyConstants;
 import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants;
 import com.google.common.annotations.VisibleForTesting;
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -144,6 +147,15 @@ public class IotInfoClassifyServiceImpl implements IotInfoClassifyService {
         iotInfoMapper.deleteByMap(ImmutableMap.of("class_id", id));
     }
 
+    @Override
+    public List<IotInfoClassifyRespVO> getChildContentFile(Long classId) {
+        List<IotInfoClassifyDO> classifyList = getChildIotInfoClassifyList(ImmutableList.of(classId));
+
+
+        BeanUtils.toBean(classifyList, IotInfoRespVO.class);
+        return Collections.emptyList();
+    }
+
     @VisibleForTesting
     void validateIotInfoClassifyExists(Long id) {
         if (id == null) {

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

@@ -5,6 +5,7 @@ import javax.validation.*;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoSaveReqVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotInfoDO;
 
@@ -14,7 +15,7 @@ import cn.iocoder.yudao.module.pms.dal.dataobject.IotInfoDO;
  * @author 芋道源码
  */
 public interface IotInfoService {
-
+    List<IotInfoRespVO> getChildContentFile(Long classId);
     /**
      * 创建资料
      *

+ 57 - 5
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotInfoServiceImpl.java

@@ -4,15 +4,16 @@ import cn.hutool.core.collection.CollUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.io.FileUtils;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.pms.controller.admin.vo.IotInfoClassifyListReqVO;
-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.controller.admin.vo.IotTreeListReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.vo.*;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
 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.IotInfoClassifyMapper;
 import cn.iocoder.yudao.module.pms.dal.mysql.IotInfoMapper;
+import cn.iocoder.yudao.module.pms.dal.mysql.IotTreeMapper;
+import cn.iocoder.yudao.module.system.api.dept.DeptApi;
+import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -43,9 +44,60 @@ public class IotInfoServiceImpl implements IotInfoService {
     @Resource
     private IotInfoClassifyService iotInfoClassifyService;
     @Autowired
+    private IotDeviceService iotDeviceService;
+    @Autowired
     private IotTreeService iotTreeService;
+    @Resource
+    private DeptApi deptApi;
     @Autowired
-    private IotDeviceService iotDeviceService;
+    private IotTreeMapper iotTreeMapper;
+
+    @Override
+    public List<IotInfoRespVO> getChildContentFile(Long classId) {
+        List<IotTreeDO> contents = iotTreeMapper.selectList("parent_id", classId);
+        List<IotInfoDO> files = iotInfoMapper.selectList("class_id", classId);
+        List<IotInfoRespVO> contentVos = contents.stream().map(e -> {
+            IotInfoRespVO iotInfoRespVO = new IotInfoRespVO();
+            iotInfoRespVO.setFilename(e.getName());
+            iotInfoRespVO.setId(e.getId());
+            iotInfoRespVO.setFileType("content");//设置为文件夹
+//            if (Objects.nonNull(e.get())) {
+//                IotDeviceDO iotDevice = iotDeviceService.getIotDevice(e.getDeviceId());
+//                if (Objects.nonNull(iotDevice)) {
+//                    iotInfoRespVO.setDeviceName(iotDevice.getDeviceName());
+//                }
+//            }
+            if (Objects.nonNull(e.getDeptId())) {
+                DeptRespDTO dept = deptApi.getDept(e.getDeptId());
+                if (Objects.nonNull(dept)) {
+                    iotInfoRespVO.setDeptName(dept.getName());
+                }
+            }
+            return iotInfoRespVO;
+        }).collect(Collectors.toList());
+        List<IotInfoRespVO> fileVos = files.stream().map(e -> {
+            IotInfoRespVO iotInfoRespVO = new IotInfoRespVO();
+            BeanUtils.copyProperties(e, iotInfoRespVO);
+            if (Objects.nonNull(e.getDeviceId())) {
+                IotDeviceDO iotDevice = iotDeviceService.getIotDevice(e.getDeviceId());
+                if (Objects.nonNull(iotDevice)) {
+                    iotInfoRespVO.setDeviceName(iotDevice.getDeviceName());
+                }
+            }
+            if (Objects.nonNull(e.getDeptId())) {
+                DeptRespDTO dept = deptApi.getDept(e.getDeptId());
+                if (Objects.nonNull(dept)) {
+                    iotInfoRespVO.setDeptName(dept.getName());
+                }
+            }
+            String docOrPdf = StringUtils.substringAfterLast(iotInfoRespVO.getFilename(), ".");
+            iotInfoRespVO.setFileClassify(docOrPdf);
+            iotInfoRespVO.setFileType("file");
+            return iotInfoRespVO;
+        }).collect(Collectors.toList());
+        contentVos.addAll(fileVos);
+        return contentVos;
+    }
 
     @Override
     public void createIotInfo(IotInfoSaveReqVO createReqVO) {

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

@@ -75,4 +75,5 @@ public interface IotTreeService {
      */
     void deviceAllotTree(List<Long> ids, Long targetDeptId) throws ServiceException;
     void initTree();
+    List<IotTreeDO> getAllParentIds(Long classId);
 }

+ 26 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/IotTreeServiceImpl.java

@@ -1,6 +1,7 @@
 package cn.iocoder.yudao.module.pms.service;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.lang.tree.Node;
 import cn.iocoder.yudao.framework.common.exception.ServiceException;
 import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
@@ -218,5 +219,30 @@ public class IotTreeServiceImpl implements IotTreeService {
 
     }
 
+    @Override
+    public List<IotTreeDO> getAllParentIds(Long nodeId) {
+        List<IotTreeDO> parents = new ArrayList<>();
+
+        // 从当前节点开始向上查找所有父节点
+        Long currentParentId = getParentId(nodeId);
+
+        while (currentParentId != null) {
+            IotTreeDO parentNode = iotTreeMapper.selectById(currentParentId);
+            if (Objects.isNull(parentNode)) {
+                break; // 父节点不存在时终止查找
+            }
+            parents.add(parentNode);
+            currentParentId = parentNode.getParentId();
+        }
+
+        // 反转列表,使顶级父节点排在最前面
+        Collections.reverse(parents);
+        return parents;
+    }
+
+    private Long getParentId(Long nodeId) {
+        IotTreeDO nodeOpt = iotTreeMapper.selectById(nodeId);
+        return Objects.isNull(nodeOpt) ? null : nodeOpt.getParentId();
+    }
 
 }