Explorar el Código

pms bug修改

zhangcl hace 1 mes
padre
commit
43d469d262

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

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.MapKey;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
 import java.util.List;
 import java.util.Map;
@@ -87,6 +88,9 @@ public interface IotMainWorkOrderMapper extends BaseMapperX<IotMainWorkOrderDO>
                 .orderByAsc(IotMainWorkOrderDO::getCreateTime));
     }
 
+    @Select("SELECT IFNULL(MAX(mwo.id), 0) maxId FROM rq_iot_main_work_order mwo")
+    Long theMaxWorkOrderId();
+
     @MapKey("result")
     List<Map<String, Integer>> allWorkOrderCountByResult();
 

+ 9 - 3
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/job/mainworkorder/CreateMainWorkOrderJob.java

@@ -41,6 +41,7 @@ import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicLong;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -197,7 +198,7 @@ public class CreateMainWorkOrderJob implements JobHandler {
             }
             // 暂时使用以保养计划为维度,生成保养工单
             // 查询最新的保养工单id
-            AtomicReference<Long> theMaxId = new AtomicReference<>(iotMainWorkOrderService.theMaxId());
+            AtomicLong theMaxId = new AtomicLong(iotMainWorkOrderService.theMaxWorkOrderId());
             List<IotMainWorkOrderDO> workOrders = new ArrayList<>();
             List<IotMainWorkOrderBomDO> workOrderBOMs = new ArrayList<>();
             // 组装 工单明细 集合
@@ -265,8 +266,8 @@ public class CreateMainWorkOrderJob implements JobHandler {
                                 // k保养计划id   v已经触发的保养工单明细
                                 IotMaintenancePlanDO plan = maintenancePair.get(Long.valueOf(planIdDeviceIdStrS[0]));
                                 IotMainWorkOrderDO workOrder = new IotMainWorkOrderDO();
-                                theMaxId.getAndSet(theMaxId.get() + 1);
-                                workOrder.setId(theMaxId.get());
+                                long newId = theMaxId.incrementAndGet(); // 原子操作:+1并返回新值
+                                workOrder.setId(newId);
                                 // 设备多个责任人关联工单标识
                                 workOrder.setOrderGroupId(orderGroupId);
                                 // 查询设备对应的部门
@@ -276,6 +277,11 @@ public class CreateMainWorkOrderJob implements JobHandler {
                                     workOrder.setDeptId(devices.get(Long.valueOf(planIdDeviceIdStrS[1])).getDeptId());
                                     workOrder.setName(devices.get(Long.valueOf(planIdDeviceIdStrS[1])).getDeviceCode() + " "
                                             + devices.get(Long.valueOf(planIdDeviceIdStrS[1])).getDeviceName() + currentDate + " 保养工单");
+                                } else {
+                                    // 如果设备列表没有包含需要保养的设备id 不生成保养工单 提示
+                                    System.out.println("不存在数据 - 待保养的设备id:" + planIdDeviceIdStrS[1]);
+                                    // 跳过当前循环 继续下次循环
+                                    return;
                                 }
                                 workOrder.setPlanId(plan.getId());
                                 workOrder.setOrderNumber(iotMainWorkOrderService.createWorkOrderNumber());

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

@@ -72,6 +72,13 @@ public interface IotMainWorkOrderService {
      */
     Long theMaxId();
 
+    /**
+     * 查询工单表中最大的id
+     *
+     * @return 最大的工单id
+     */
+    Long theMaxWorkOrderId();
+
     /**
      * 生成保养工单号
      *

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

@@ -539,6 +539,11 @@ public class IotMainWorkOrderServiceImpl implements IotMainWorkOrderService {
         return CollUtil.isNotEmpty(workOrderDOS) ? workOrderDOS.get(0).getId() : 0l;
     }
 
+    @Override
+    public Long theMaxWorkOrderId() {
+        return iotMainWorkOrderMapper.theMaxWorkOrderId();
+    }
+
     @Override
     public String createWorkOrderNumber() {
         return bizNoRedisDAO.generate(BizNoRedisDAO.MAIN_WORK_ORDER_NO_PREFIX);

+ 0 - 2
yudao-module-supplier/yudao-module-supplier-biz/src/main/java/cn/iocoder/yudao/module/supplier/controller/admin/product/SupplierController.java

@@ -5,7 +5,6 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 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.datapermission.core.annotation.DataPermission;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
 import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.SupplierPageReqVO;
 import cn.iocoder.yudao.module.supplier.controller.admin.product.vo.SupplierRespVO;
@@ -83,7 +82,6 @@ public class SupplierController {
     @GetMapping("/page")
     @Operation(summary = "获得供应商主数据分页")
     @PreAuthorize("@ss.hasPermission('supplier:base:query')")
-    @DataPermission
     public CommonResult<PageResult<SupplierRespVO>> getPage(@Valid SupplierPageReqVO pageReqVO) {
         PageResult<SupplierDO> pageResult = supplierService.getPage(pageReqVO);
         return success(BeanUtils.toBean(pageResult, SupplierRespVO.class));