lipenghui hai 4 semanas
pai
achega
0829753c0f
Modificáronse 10 ficheiros con 201 adicións e 13 borrados
  1. 1 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/item/IotInspectItemController.java
  2. 31 1
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/IotInspectOrderController.java
  3. 71 4
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/IotInspectOrderDetailController.java
  4. 1 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderDetailPageReqVO.java
  5. 6 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderDetailRespVO.java
  6. 4 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderRespVO.java
  7. 19 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/inspect/IotInspectOrderDetailMapper.java
  8. 4 2
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/inspect/IotInspectOrderMapper.java
  9. 9 0
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/inspect/IotInspectOrderDetailService.java
  10. 55 6
      yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/inspect/IotInspectOrderDetailServiceImpl.java

+ 1 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/item/IotInspectItemController.java

@@ -81,6 +81,7 @@ public class IotInspectItemController {
         return success(BeanUtils.toBean(iotInspectItem, IotInspectItemRespVO.class));
     }
 
+
     @GetMapping("/page")
     @Operation(summary = "获得巡检项分页")
     @PreAuthorize("@ss.hasPermission('rq:iot-inspect-item:query')")

+ 31 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/IotInspectOrderController.java

@@ -40,6 +40,7 @@ import javax.validation.Valid;
 import java.io.IOException;
 import java.time.ZoneId;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
@@ -102,7 +103,14 @@ public class IotInspectOrderController {
             OrderDetail orderDetail = new OrderDetail();
             orderDetail.setDeviceId(k);
             if (CollUtil.isNotEmpty(v)) {
+                long normal = v.stream().filter(e -> Objects.nonNull(e.getIfNormal())&&e.getIfNormal()).count();
+                long exception = v.stream().filter(e -> Objects.nonNull(e.getIfNormal())&&!e.getIfNormal()).count();
+                long count = v.stream().filter(e -> Objects.isNull(e.getIfNormal())).count();
+                orderDetail.setItemNormal(normal);
+                orderDetail.setItemException(exception);
+                orderDetail.setItemNeed(count);
                 orderDetail.setRouteIndex(v.get(0).getRouteIndex());
+
             }
             if (Objects.nonNull(iotDevice)) {
                 orderDetail.setDeviceName(iotDevice.getDeviceCode() + iotDevice.getDeviceName());
@@ -153,6 +161,10 @@ public class IotInspectOrderController {
         private String deviceCode;
         private Long routeIndex;
         private List<IotInspectOrderDetailDO> orderDetails;
+        private String ifException;
+        private Long itemNormal;
+        private Long itemException;
+        private Long itemNeed;
     }
 
     @GetMapping("/page")
@@ -160,7 +172,25 @@ public class IotInspectOrderController {
     @PreAuthorize("@ss.hasPermission('rq:iot-inspect-order:query')")
     public CommonResult<PageResult<IotInspectOrderRespVO>> getIotInspectOrderPage(@Valid IotInspectOrderPageReqVO pageReqVO) {
         PageResult<IotInspectOrderDO> pageResult = iotInspectOrderService.getIotInspectOrderPage(pageReqVO);
-        return success(BeanUtils.toBean(pageResult, IotInspectOrderRespVO.class));
+        List<IotInspectOrderRespVO> collect = pageResult.getList().stream().map(e -> {
+            IotInspectOrderRespVO iotInspectOrderRespVO = new IotInspectOrderRespVO();
+            BeanUtils.copyProperties(e, iotInspectOrderRespVO);
+            List<IotInspectOrderDetailDO> details = iotInspectOrderDetailMapper.selectList("order_id", e.getId());
+            long deviceCount = details.stream().map(IotInspectOrderDetailDO::getDeviceId).distinct().count();
+            long exceptionCount = details.stream().filter(f -> Objects.nonNull(f.getIfNormal()) && !f.getIfNormal()).map(IotInspectOrderDetailDO::getDeviceId).distinct().count();
+            Map<Long, List<IotInspectOrderDetailDO>> collect1 = details.stream().collect(Collectors.groupingBy(IotInspectOrderDetailDO::getDeviceId));
+            AtomicInteger needDevice = new AtomicInteger();
+            collect1.forEach((k, v) -> {
+                if (v.stream().anyMatch(gg -> Objects.isNull(gg.getIfNormal()))){
+                    needDevice.getAndIncrement();
+                }
+            });
+            iotInspectOrderRespVO.setDeviceCount(deviceCount);
+            iotInspectOrderRespVO.setExceptionCount(exceptionCount);
+            iotInspectOrderRespVO.setNeedDevice(needDevice.get());
+            return iotInspectOrderRespVO;
+        }).collect(Collectors.toList());
+        return success(new PageResult<>(collect, pageResult.getTotal()));
     }
 
     @GetMapping("/page/app")

+ 71 - 4
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/IotInspectOrderDetailController.java

@@ -6,14 +6,23 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderDetailPageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderDetailRespVO;
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderDetailSaveReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.*;
+import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
+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.iotcountdata.IotCountDataDO;
+import cn.iocoder.yudao.module.pms.service.IotDeviceService;
+import cn.iocoder.yudao.module.pms.service.IotDeviceServiceImpl;
 import cn.iocoder.yudao.module.pms.service.inspect.IotInspectOrderDetailService;
+import cn.iocoder.yudao.module.pms.service.inspect.IotInspectOrderService;
+import cn.iocoder.yudao.module.pms.service.inspect.IotInspectOrderServiceImpl;
+import cn.iocoder.yudao.module.system.service.dept.DeptService;
+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.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.*;
@@ -22,7 +31,10 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.io.IOException;
-import java.util.List;
+import java.io.Serializable;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
+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;
@@ -36,6 +48,14 @@ public class IotInspectOrderDetailController {
 
     @Resource
     private IotInspectOrderDetailService iotInspectOrderDetailService;
+    @Autowired
+    private IotInspectOrderServiceImpl iotInspectOrderServiceImpl;
+    @Autowired
+    private IotDeviceService iotDeviceService;
+    @Autowired
+    private IotInspectOrderService iotInspectOrderService;
+    @Autowired
+    private DeptService deptService;
 
     @PostMapping("/create")
     @Operation(summary = "创建巡检工单巡检明细")
@@ -91,4 +111,51 @@ public class IotInspectOrderDetailController {
                         BeanUtils.toBean(list, IotInspectOrderDetailRespVO.class));
     }
 
+
+    @GetMapping("/status")
+    @Operation(summary = "获得巡检项状态数量")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('rq:iot-inspect-item:query')")
+    public CommonResult<ImmutableList> getIotInspectItemStatus(IotCountDataDO vo) {
+        Set<Long> ids = new HashSet<>();
+        if (Objects.nonNull(vo.getDeptId())) {
+            ids = deptService.getChildDeptIdListFromCache(vo.getDeptId());
+            ids.add(vo.getDeptId());
+        }
+        List<IotInspectOrderDetailDO> all = iotInspectOrderDetailService.getListStat(vo, ids);
+        long need = all.stream().filter(e -> Objects.isNull(e.getIfNormal())).count();
+        long normal = all.stream().filter(e -> Objects.nonNull(e.getIfNormal())&&e.getIfNormal()).count();
+        long exception = all.stream().filter(e -> Objects.nonNull(e.getIfNormal())&&!e.getIfNormal()).count();
+        ImmutableMap<String, ? extends Serializable> map = ImmutableMap.of("name", "待填写", "value", need);
+        ImmutableMap<String, ? extends Serializable> map1 = ImmutableMap.of("name", "正常", "value", normal);
+        ImmutableMap<String, ? extends Serializable> map2 = ImmutableMap.of("name", "异常", "value", exception);
+        return success(ImmutableList.of(map,map1,map2));
+    }
+    @GetMapping("/item")
+    public CommonResult<PageResult<IotInspectOrderDetailRespVO>> getItemStatus(IotInspectOrderDetailPageReqVO pageReqVO){
+
+        PageResult<IotInspectOrderDetailDO> deviceStatus = iotInspectOrderDetailService.getOrderDetailItem(pageReqVO);
+        List<IotInspectOrderDetailRespVO> collect = deviceStatus.getList().stream().map(e -> {
+            IotInspectOrderDetailRespVO iotInspectOrderDetailRespVO = new IotInspectOrderDetailRespVO();
+            BeanUtils.copyProperties(e, iotInspectOrderDetailRespVO);
+
+            if (Objects.nonNull(e.getDeviceId())) {
+                IotDeviceDO iotDevice = iotDeviceService.getIotDevice(e.getDeviceId());
+                if (Objects.nonNull(iotDevice)) {
+                    iotInspectOrderDetailRespVO.setDeviceCode(iotDevice.getDeviceCode());
+                    iotInspectOrderDetailRespVO.setDeviceName(iotDevice.getDeviceName());
+                }
+            }
+            if (Objects.nonNull(e.getOrderId())) {
+                IotInspectOrderDO iotInspectOrder = iotInspectOrderService.getIotInspectOrder(e.getOrderId());
+                if (Objects.nonNull(iotInspectOrder)) {
+                    iotInspectOrderDetailRespVO.setOrderName(iotInspectOrder.getInspectOrderTitle());
+                    iotInspectOrderDetailRespVO.setCharge(iotInspectOrder.getChargeName());
+                }
+            }
+
+            return iotInspectOrderDetailRespVO;
+        }).collect(Collectors.toList());
+        return success(new PageResult<>(collect, deviceStatus.getTotal()));
+    }
 }

+ 1 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderDetailPageReqVO.java

@@ -48,4 +48,5 @@ public class IotInspectOrderDetailPageReqVO extends PageParam {
     private String deviceCode;
 
     private String deviceName;
+    private String orderName;
 }

+ 6 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderDetailRespVO.java

@@ -27,6 +27,7 @@ public class IotInspectOrderDetailRespVO {
     @Schema(description = "巡检项id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14105")
     @ExcelProperty("巡检项id")
     private Long itemId;
+    private String item;
 
     @Schema(description = "是否正常", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("是否正常")
@@ -52,4 +53,9 @@ public class IotInspectOrderDetailRespVO {
     @ExcelProperty("部门id")
     private Long deptId;
 
+    private String deviceName;
+    private String deviceCode;
+    private String orderName;
+    private String charge;
+
 }

+ 4 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/inspect/order/vo/IotInspectOrderRespVO.java

@@ -50,5 +50,9 @@ public class IotInspectOrderRespVO {
     private String chargeName;
     private String type;
 
+    private Long deviceCount;
+    private Long exceptionCount;
+    private Integer needDevice;
+
     private List<IotInspectOrderController.OrderDetail> details;
 }

+ 19 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/inspect/IotInspectOrderDetailMapper.java

@@ -46,6 +46,25 @@ public interface IotInspectOrderDetailMapper extends BaseMapperX<IotInspectOrder
         );
     }
 
+    default PageResult<IotInspectOrderDetailDO> selectItemPage(IotInspectOrderDetailPageReqVO reqVO, Set<Long> ids, Set<Long> deviceIds, Set<Long> orderIds) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<IotInspectOrderDetailDO>()
+                .eq(IotInspectOrderDetailDO::getIfNormal, reqVO.getIfNormal())
+                .inIfPresent(IotInspectOrderDetailDO::getDeptId, ids)
+                .inIfPresent(IotInspectOrderDetailDO::getDeviceId, deviceIds)
+                .inIfPresent(IotInspectOrderDetailDO::getOrderId, orderIds)
+                .betweenIfPresent(IotInspectOrderDetailDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(IotInspectOrderDetailDO::getId));
+    }
+
+    default PageResult<IotInspectOrderDetailDO> selectItemPageNull(IotInspectOrderDetailPageReqVO reqVO, Set<Long> ids, Set<Long> deviceIds, Set<Long> orderIds) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<IotInspectOrderDetailDO>()
+                .inIfPresent(IotInspectOrderDetailDO::getDeptId, ids)
+                .betweenIfPresent(IotInspectOrderDetailDO::getCreateTime, reqVO.getCreateTime())
+                .inIfPresent(IotInspectOrderDetailDO::getDeviceId, deviceIds)
+                .inIfPresent(IotInspectOrderDetailDO::getOrderId, orderIds)
+                .isNull(IotInspectOrderDetailDO::getIfNormal)
+                .orderByDesc(IotInspectOrderDetailDO::getId));
+    }
     IPage<IotInspectDeviceVo> getDeviceStatusWei(IPage<IotInspectOrderDetailPageReqVO> page, @Param("reqVO")  IotInspectOrderDetailPageReqVO reqVO, @Param("deptIds") Collection<Long> deptIds);
     IPage<IotInspectDeviceVo> getDeviceStatusYi(IPage<IotInspectOrderDetailPageReqVO> page, @Param("reqVO")  IotInspectOrderDetailPageReqVO reqVO, @Param("deptIds") Collection<Long> deptIds);
 

+ 4 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/dal/mysql/inspect/IotInspectOrderMapper.java

@@ -5,7 +5,6 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderPageReqVO;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDevicePageReqVO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotcountdata.IotCountDataDO;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -23,7 +22,10 @@ import java.util.Set;
  */
 @Mapper
 public interface IotInspectOrderMapper extends BaseMapperX<IotInspectOrderDO> {
-
+    default List<IotInspectOrderDO> selectList(IotInspectOrderPageReqVO reqVO) {
+        return selectList(new LambdaQueryWrapperX<IotInspectOrderDO>()
+                .likeIfPresent(IotInspectOrderDO::getInspectOrderTitle, reqVO.getInspectOrderTitle()).orderByDesc(IotInspectOrderDO::getId));
+    }
     default PageResult<IotInspectOrderDO> selectPage(IotInspectOrderPageReqVO reqVO, Collection<Long> ids, Collection<Long> idList) {
         return selectPage(reqVO, new LambdaQueryWrapperX<IotInspectOrderDO>()
                 .likeIfPresent(IotInspectOrderDO::getInspectOrderTitle, reqVO.getInspectOrderTitle())

+ 9 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/inspect/IotInspectOrderDetailService.java

@@ -3,10 +3,14 @@ package cn.iocoder.yudao.module.pms.service.inspect;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectDeviceVo;
 import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderDetailPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderDetailRespVO;
 import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderDetailSaveReqVO;
 import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.IotInspectOrderDetailDO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotcountdata.IotCountDataDO;
 
 import javax.validation.Valid;
+import java.util.List;
+import java.util.Set;
 
 /**
  * 巡检工单巡检明细 Service 接口
@@ -14,6 +18,8 @@ import javax.validation.Valid;
  * @author 芋道源码
  */
 public interface IotInspectOrderDetailService {
+    List<IotInspectOrderDetailDO> getListStat(IotCountDataDO vo, Set<Long> ids);
+
     PageResult<IotInspectDeviceVo> getDeviceStatus(IotInspectOrderDetailPageReqVO pageReqVO);
     /**
      * 创建巡检工单巡检明细
@@ -53,4 +59,7 @@ public interface IotInspectOrderDetailService {
      */
     PageResult<IotInspectOrderDetailDO> getIotInspectOrderDetailPage(IotInspectOrderDetailPageReqVO pageReqVO);
 
+    List<IotInspectOrderDetailDO> getAll();
+
+    PageResult<IotInspectOrderDetailDO> getOrderDetailItem(IotInspectOrderDetailPageReqVO pageReqVO);
 }

+ 55 - 6
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/inspect/IotInspectOrderDetailServiceImpl.java

@@ -2,23 +2,27 @@ package cn.iocoder.yudao.module.pms.service.inspect;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectDeviceVo;
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderDetailPageReqVO;
-import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderDetailSaveReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.*;
+import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDevicePageReqVO;
+import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
+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.iotcountdata.IotCountDataDO;
+import cn.iocoder.yudao.module.pms.dal.mysql.IotDeviceMapper;
 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.system.service.dept.DeptService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 
-import java.util.HashSet;
-import java.util.Objects;
-import java.util.Set;
+import java.util.*;
+import java.util.stream.Collectors;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_INSPECT_ORDER_DETAIL_NOT_EXISTS;
@@ -36,6 +40,10 @@ public class IotInspectOrderDetailServiceImpl implements IotInspectOrderDetailSe
     private IotInspectOrderDetailMapper iotInspectOrderDetailMapper;
     @Autowired
     private DeptService deptService;
+    @Autowired
+    private IotDeviceMapper iotDeviceMapper;
+    @Autowired
+    private IotInspectOrderMapper iotInspectOrderMapper;
 
     @Override
     public Long createIotInspectOrderDetail(IotInspectOrderDetailSaveReqVO createReqVO) {
@@ -79,6 +87,16 @@ public class IotInspectOrderDetailServiceImpl implements IotInspectOrderDetailSe
         return iotInspectOrderDetailMapper.selectPage(pageReqVO);
     }
 
+    @Override
+    public List<IotInspectOrderDetailDO> getAll() {
+        return iotInspectOrderDetailMapper.selectList();
+    }
+
+    @Override
+    public List<IotInspectOrderDetailDO> getListStat(IotCountDataDO vo, Set<Long> ids) {
+        return iotInspectOrderDetailMapper.selectListStat(vo, ids);
+    }
+
     @Override
     public PageResult<IotInspectDeviceVo> getDeviceStatus(IotInspectOrderDetailPageReqVO pageReqVO) {
         IPage<IotInspectDeviceVo> page;
@@ -98,4 +116,35 @@ public class IotInspectOrderDetailServiceImpl implements IotInspectOrderDetailSe
         return new PageResult<>(page.getRecords(), page.getTotal());
     }
 
+    public PageResult<IotInspectOrderDetailDO> getOrderDetailItem(IotInspectOrderDetailPageReqVO pageReqVO) {
+        PageResult<IotInspectOrderDetailDO> need = new PageResult<>();
+        Set<Long> ids = new HashSet<>();
+        if (Objects.nonNull(pageReqVO.getDeptId())) {
+            ids = deptService.getChildDeptIdListFromCache(pageReqVO.getDeptId());
+            ids.add(pageReqVO.getDeptId());
+        }
+        Set<Long> deviceIds = new HashSet<>();
+        if (StringUtils.isNotBlank(pageReqVO.getDeviceCode())) {
+            IotDevicePageReqVO devicePageReqVO = new IotDevicePageReqVO();
+            devicePageReqVO.setDeviceCode(pageReqVO.getDeviceCode());
+            deviceIds = iotDeviceMapper.selectList(devicePageReqVO).stream().map(IotDeviceDO::getId).collect(Collectors.toSet());
+        }
+        Set<Long> orderIds = new HashSet<>();
+        if (StringUtils.isNotBlank(pageReqVO.getOrderName())) {
+            IotInspectOrderPageReqVO iotInspectOrderPageReqVO = new IotInspectOrderPageReqVO();
+            iotInspectOrderPageReqVO.setInspectOrderTitle(pageReqVO.getOrderName());
+            orderIds = iotInspectOrderMapper.selectList(iotInspectOrderPageReqVO).stream().map(IotInspectOrderDO::getId).collect(Collectors.toSet());
+        }
+        if ("待填写".equals(pageReqVO.getStatus())){
+//            pageReqVO.setIfNormal(null);
+            need = iotInspectOrderDetailMapper.selectItemPageNull(pageReqVO, ids, deviceIds, orderIds);
+        } else if ("正常".equals(pageReqVO.getStatus())){
+            pageReqVO.setIfNormal(true);
+            need = iotInspectOrderDetailMapper.selectItemPage(pageReqVO, ids, deviceIds, orderIds);
+        } else if ("异常".equals(pageReqVO.getStatus())){
+            pageReqVO.setIfNormal(false);
+            need = iotInspectOrderDetailMapper.selectItemPage(pageReqVO, ids, deviceIds, orderIds);
+        }
+        return need;
+    }
 }