Przeglądaj źródła

巡检工单异常设备列表

lipenghui 3 dni temu
rodzic
commit
f8d32f6cf8

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

@@ -12,14 +12,20 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
 import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.*;
+import cn.iocoder.yudao.module.pms.controller.admin.stat.DeptUtil;
 import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceSimple;
 import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
-import cn.iocoder.yudao.module.pms.dal.dataobject.inspect.*;
+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.inspect.IotInspectRouteDO;
 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.IotInspectOrderDeviceMapper;
+import cn.iocoder.yudao.module.pms.dal.mysql.inspect.IotInspectOrderMapper;
 import cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant;
 import cn.iocoder.yudao.module.pms.service.IotDeviceService;
 import cn.iocoder.yudao.module.pms.service.inspect.IotInspectOrderDetailService;
@@ -28,6 +34,9 @@ import cn.iocoder.yudao.module.pms.service.inspect.IotInspectPlanService;
 import cn.iocoder.yudao.module.pms.service.inspect.IotInspectRouteService;
 import cn.iocoder.yudao.module.system.api.dept.DeptApi;
 import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
+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 io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -46,7 +55,6 @@ import javax.validation.Valid;
 import java.io.IOException;
 import java.time.ZoneId;
 import java.util.*;
-import java.util.concurrent.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
@@ -78,6 +86,12 @@ public class IotInspectOrderController {
     private IotDeviceMapper iotDeviceMapper;
     @Autowired
     private IotInspectOrderDeviceMapper iotInspectOrderDeviceMapper;
+    @Autowired
+    private DeptUtil deptUtil;
+    @Autowired
+    private DeptService deptService;
+    @Autowired
+    private IotInspectOrderMapper iotInspectOrderMapper;
 
     @PostMapping("/create")
     @Operation(summary = "创建巡检工单")
@@ -374,4 +388,21 @@ public class IotInspectOrderController {
         }).collect(Collectors.toList());
         return success(new PageResult<>(collect, pageResult.getTotal()));
     }
+
+    @GetMapping("/exception/device")
+    public CommonResult<PageResult<IotDeviceSimple>> getExceptionDevice(@Valid IotInspectOrderPageReqVO pageReqVO) {
+        Set<Long> ids;
+        if (Objects.isNull(pageReqVO.getDeptId())){
+            Long loginUserDeptId = SecurityFrameworkUtils.getLoginUserDeptId();
+            String companyCode = deptUtil.getCompanyCode(loginUserDeptId);
+            ids = deptUtil.getDeptIds(companyCode);
+        } else {
+            ids = deptService.getChildDeptIdListFromCache(pageReqVO.getDeptId());
+            ids.add(pageReqVO.getDeptId());
+        }
+        pageReqVO.setDeptIds(ids);
+        IPage<IotDeviceSimple> exceptionDevicePage = iotInspectOrderDetailMapper.getExceptionDevicePage(new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO);
+        PageResult<IotDeviceSimple> result = new PageResult<>(exceptionDevicePage.getRecords(), exceptionDevicePage.getTotal());
+        return success(result);
+    }
 }

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

@@ -42,4 +42,6 @@ public class IotInspectOrderPageReqVO extends PageParam {
     private Long charge;
 
     private Collection<Long> idList;
+    @Schema(description = "部门ids")
+    private Set<Long> deptIds;
 }

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

@@ -7,4 +7,5 @@ public class IotDeviceSimple {
     private Long id;
     private String deviceCode;
     private String deviceName;
+    private Long orderCount;
 }

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

@@ -121,8 +121,8 @@ public interface IotDeviceMapper extends BaseMapperX<IotDeviceDO> {
                 .likeIfPresent(IotDeviceDO::getYfDeviceCode, reqVO.getYfDeviceCode())
                 .likeIfPresent(IotDeviceDO::getDeviceCode, reqVO.getDeviceCode())
                 .likeIfPresent(IotDeviceDO::getDeviceName, reqVO.getDeviceName())
-                .eqIfPresent(IotDeviceDO::getDeptId, reqVO.getDeptId())
-                .inIfPresent(IotDeviceDO::getDeptId, reqVO.getDeptIds())
+//                .eqIfPresent(IotDeviceDO::getDeptId, reqVO.getDeptId())
+//                .inIfPresent(IotDeviceDO::getDeptId, reqVO.getDeptIds())
                 .eqIfPresent(IotDeviceDO::getBrand, reqVO.getBrand())
                 .eqIfPresent(IotDeviceDO::getModel, reqVO.getModel())
                 .eqIfPresent(IotDeviceDO::getDeviceStatus, reqVO.getDeviceStatus())

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

@@ -5,6 +5,8 @@ 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.IotInspectDeviceVo;
 import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderDetailPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.inspect.order.vo.IotInspectOrderPageReqVO;
+import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceSimple;
 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;
@@ -104,5 +106,6 @@ public interface IotInspectOrderDetailMapper extends BaseMapperX<IotInspectOrder
     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);
     IPage<IotInspectDeviceVo> getDeviceStatusIgnore(IPage<IotInspectOrderDetailPageReqVO> page, @Param("reqVO")  IotInspectOrderDetailPageReqVO reqVO, @Param("deptIds") Collection<Long> deptIds);
-
+    //异常设备信息
+    IPage<IotDeviceSimple> getExceptionDevicePage(IPage<IotInspectOrderPageReqVO> page, @Param("reqVO") IotInspectOrderPageReqVO reqVO);
 }

+ 3 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/inspect/IotInspectOrderServiceImpl.java

@@ -257,6 +257,7 @@ public class IotInspectOrderServiceImpl implements IotInspectOrderService {
     @Transactional(rollbackFor = Exception.class)
     public void createPlan(IotInspectPlanDO iotInspectPlan)  {
         Map<Long, List<IotInspectRouteRespVO>> generate = generate(iotInspectPlan.getDeviceIds());
+//        List<IotDeviceSimple> iotDeviceDOS = iotDeviceMapper.selectCodeAndNameList();
         generate.forEach((k, v)->{
             List<IotInspectOrderDetailDO> results = new ArrayList<>();
             //处理巡检项
@@ -343,7 +344,6 @@ public class IotInspectOrderServiceImpl implements IotInspectOrderService {
             CompletableFuture.runAsync(()->{
                 //发送消息
                 pmsMessage.sendMessage(iotInspectOrderDO.getId(), iotInspectOrderDO.getInspectOrderTitle(), PmsConstants.GENERATE_INSPECT, k, user.getMobile());
-//                List<IotDeviceSimple> iotDeviceDOS = iotDeviceMapper.selectCodeAndNameList();
                 //写入子表
 //                Set<Long> collect = results.stream().map(IotInspectOrderDetailDO::getDeviceId).collect(Collectors.toSet());
 //                List<IotInspectOrderDeviceDO> inspectDevices = new ArrayList<>();
@@ -352,11 +352,12 @@ public class IotInspectOrderServiceImpl implements IotInspectOrderService {
 //                    iotInspectOrderDeviceDO.setDeviceId(deviceId);
 //                    iotInspectOrderDeviceDO.setOrderId(iotInspectOrderDO.getId());
 //                    iotInspectOrderDeviceDO.setDeviceName(iotDeviceDO.getDeviceName());
+//                    iotInspectOrderDeviceDO.setDeptId(iotInspectOrderDO.getDeptId());
 //                    iotInspectOrderDeviceDO.setDeviceCode(iotDeviceDO.getDeviceCode());
 //                    iotInspectOrderDeviceDO.setDeleted(false);
 //                    inspectDevices.add(iotInspectOrderDeviceDO);
 //                }));
-//                iotInspectOrderDeviceMapper.insertBatch(inspectDevices);
+//                TenantUtils.execute(1L, () -> iotInspectOrderDeviceMapper.insertBatch(inspectDevices));
             });
         });
     }

+ 20 - 0
yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotInspectOrderDetailMapper.xml

@@ -139,4 +139,24 @@
         </where>
         order by create_time desc
     </select>
+
+
+    <select id="getExceptionDevicePage" resultType="cn.iocoder.yudao.module.pms.controller.admin.vo.IotDeviceSimple">
+        select device_id, device_code, device_name,count(order_id) AS orderCount from rq_iot_inspect_order_device a
+        <where>
+            <if test="reqVO.createTime[0] != null">
+                AND a.create_time &gt;= #{reqVO.createTime[0]}
+            </if>
+            <if test="reqVO.createTime.length > 1 and reqVO.createTime[1] != null">
+                AND a.create_time &lt;= #{reqVO.createTime[1]}
+            </if>
+            <if test="reqVO.deptIds != null and reqVO.deptIds.size &gt; 0">
+                AND a.dept_id IN
+                <foreach collection="reqVO.deptIds" index="index" item="key" open="(" separator="," close=")">
+                    #{key}
+                </foreach>
+            </if>
+        </where>
+        group by device_id
+    </select>
 </mapper>