Bladeren bron

pms 保养工单列表查询优化 根据新旧油服号搜索 状态(全部)查询

zhangcl 2 dagen geleden
bovenliggende
commit
200d90e6ab

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

@@ -141,7 +141,9 @@ public interface IotDeviceMapper extends BaseMapperX<IotDeviceDO> {
         if (StrUtil.isNotBlank(reqVO.getDeviceName())) {
             queryWrapper.and(i -> i.like(IotDeviceDO::getDeviceName, reqVO.getDeviceName())
                     .or()
-                    .like(IotDeviceDO::getDeviceCode, reqVO.getDeviceName()));
+                    .like(IotDeviceDO::getDeviceCode, reqVO.getDeviceName())
+                    .or()
+                    .like(IotDeviceDO::getYfDeviceCode, reqVO.getDeviceName()));
         }
         return selectList(queryWrapper);
     }

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

@@ -106,5 +106,6 @@ public interface IotMainWorkOrderMapper extends BaseMapperX<IotMainWorkOrderDO>
      * @return
      */
     IPage<IotMainWorkOrderRespVO> sortedMainWorkOrders(IPage<IotMainWorkOrderDO> page, @Param("reqVO") IotMainWorkOrderPageReqVO reqVO,
-                                              @Param("alarmWorkOrderIds") Collection<Long> alarmWorkOrderIds, @Param("deptIds") Collection<Long> deptIds);
+                                              @Param("alarmWorkOrderIds") Collection<Long> alarmWorkOrderIds,
+                                                       @Param("deptIds") Collection<Long> deptIds, @Param("eligibleWorkOrderIds") Collection<Long> eligibleWorkOrderIds);
 }

+ 45 - 2
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/service/iotmainworkorder/IotMainWorkOrderServiceImpl.java

@@ -61,6 +61,7 @@ import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertListByFlatMap;
 import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_MAIN_WORK_ORDER_EXECUTED;
 import static cn.iocoder.yudao.module.pms.enums.ErrorCodeConstant.IOT_MAIN_WORK_ORDER_NOT_EXISTS;
@@ -158,7 +159,46 @@ public class IotMainWorkOrderServiceImpl implements IotMainWorkOrderService {
 
     @Override
     public PageResult<IotMainWorkOrderRespVO> sortedMainWorkOrderPage(IotMainWorkOrderPageReqVO pageReqVO) {
-        // 查询 未执行 计划生成 的工单
+        // 根据 设备编码 新旧油服号 搜索
+        // 如果 pageReqVO.getName() 有值 先根据 name 值查询 新旧油服号都匹配的保养工单
+        List<Long> eligibleDeviceIds = new ArrayList<>();
+        List<Long> eligibleWorkOrderIds = new ArrayList<>();
+        if (StrUtil.isNotBlank(pageReqVO.getName())) {
+            IotDevicePageReqVO reqVO = new IotDevicePageReqVO();
+            reqVO.setDeviceName(pageReqVO.getName());
+            List<IotDeviceDO> eligibleDevices = iotDeviceMapper.selectListAlone(reqVO);
+            if (CollUtil.isNotEmpty(eligibleDevices)) {
+                eligibleDeviceIds = convertList(eligibleDevices, IotDeviceDO::getId);
+                // 如果有相关的设备 查询对应的保养工单
+                if (CollUtil.isNotEmpty(eligibleDeviceIds)) {
+                    IotMainWorkOrderBomPageReqVO bomReqVO = new IotMainWorkOrderBomPageReqVO();
+                    bomReqVO.setDeviceIds(eligibleDeviceIds);
+                    List<IotMainWorkOrderBomDO> boms = iotMainWorkOrderBomMapper.selectList(bomReqVO);
+                    if (CollUtil.isNotEmpty(boms)) {
+                        Set<Long> workOrderIds = new HashSet<>();
+                        boms.forEach(bom -> {
+                            workOrderIds.add(bom.getWorkOrderId());
+                        });
+                        eligibleWorkOrderIds.addAll(workOrderIds);
+                    }
+                }
+            }
+            // 根据保养工单名称搜索
+            IotMainWorkOrderPageReqVO orderReqVO = new IotMainWorkOrderPageReqVO();
+            orderReqVO.setName(pageReqVO.getName());
+            List<IotMainWorkOrderDO> likeNameWorkOrders = iotMainWorkOrderMapper.selectList(orderReqVO);
+            if (CollUtil.isNotEmpty(likeNameWorkOrders)) {
+                likeNameWorkOrders.forEach(order -> {
+                    if (!eligibleWorkOrderIds.contains(order.getId())) {
+                        eligibleWorkOrderIds.add(order.getId());
+                    }
+                });
+            }
+            if (CollUtil.isEmpty(eligibleWorkOrderIds)) {
+                return PageResult.empty();
+            }
+        }
+        // 查询 未执行 计划生成 的工单 计算距离保养使用
         IotMainWorkOrderPageReqVO reqVO = new IotMainWorkOrderPageReqVO();
         reqVO.setResult(1);
         reqVO.setType(1);
@@ -173,6 +213,9 @@ public class IotMainWorkOrderServiceImpl implements IotMainWorkOrderService {
         IotMainWorkOrderBomPageReqVO bomReqVO = new IotMainWorkOrderBomPageReqVO();
         if (CollUtil.isNotEmpty(workOrderIds)) {
             bomReqVO.setWorkOrderIds(workOrderIds);
+            if (CollUtil.isNotEmpty(eligibleDeviceIds)) {
+                bomReqVO.setDeviceIds(eligibleDeviceIds);
+            }
             // 查询 未执行的计划生成的工单 的保养项明细
             workOrderBomS= iotMainWorkOrderBomMapper.selectList(bomReqVO);
         }
@@ -320,7 +363,7 @@ public class IotMainWorkOrderServiceImpl implements IotMainWorkOrderService {
             }
             // 查询所有设备列表 通过SQL形式 使用 FIELD 字段
             IPage<IotMainWorkOrderRespVO> page = iotMainWorkOrderMapper.sortedMainWorkOrders(
-                    new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO, sortedWorkOrderIds, ids);
+                    new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO, sortedWorkOrderIds, ids, eligibleWorkOrderIds);
             if (CollUtil.isNotEmpty(page.getRecords())) {
                 Map<Long, String> finalResultMap = resultMap;
                 page.getRecords().forEach(order -> {

+ 6 - 3
yudao-module-pms/yudao-module-pms-biz/src/main/resources/mapper/static/IotMainWorkOrderMapper.xml

@@ -38,10 +38,13 @@
                 #{key}
             </foreach>
         </if>
-          <if test="reqVO.name != null and reqVO.name != ''">
-            AND mwo.name LIKE concat(concat("%",#{reqVO.name}),"%")
+        <if test="eligibleWorkOrderIds != null and eligibleWorkOrderIds.size &gt; 0">
+            AND mwo.id IN
+            <foreach collection="eligibleWorkOrderIds" index="index" item="key" open="(" separator="," close=")">
+                #{key}
+            </foreach>
         </if>
-        <if test="reqVO.result != null">
+        <if test="reqVO.result != null and reqVO.result != 0">
             AND mwo.result = #{reqVO.result}
         </if>
         <if test="reqVO.createTime != null and reqVO.createTime.length > 0">