From 96e520a9c5407310d03792b6012195f516f0233b Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 23 八月 2024 15:15:57 +0800
Subject: [PATCH] 定时任务工单生成bug修改

---
 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java |  100 ++++++++++++++++++++++++++-----------------------
 1 files changed, 53 insertions(+), 47 deletions(-)

diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
index c298405..f763df1 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -83,7 +83,7 @@
     private final WorkOrderYwConditionRecordMapper workOrderYwConditionRecordMapper;
     private final NotifyService notifyService;
     private final WorkOrderDistributeRecordMapper workOrderDistributeRecordMapper;
-    private final WorkOrderErrorTypeMapper workOrderErrorTypeMapper;
+    private final WorkOrderErrorTypeServiceImpl workOrderErrorTypeService;
     private final SysConfigMapper configMapper;
     private final ServerConfig serverConfig;
     private final ReportMapper reportMapper;
@@ -111,41 +111,35 @@
         List<String> serialNumberList = workOrderList.stream().map(WorkOrder::getSerialNumber).collect(Collectors.toList());
         // 鏌ュ嚭鏁版嵁搴撲腑鍥芥爣鐮佸搴旂殑鏈畬鎴愮殑宸ュ崟
         List<WorkOrder> inDatabaseWorkOrderList = new LambdaQueryChainWrapper<>(baseMapper)
-                .select(WorkOrder::getId, WorkOrder::getSerialNumber, WorkOrder::getStatus, WorkOrder::getErrorType)
+                .select(WorkOrder::getId, WorkOrder::getSerialNumber, WorkOrder::getStatus, WorkOrder::getWorkOrderNo)
                 .in(WorkOrder::getSerialNumber, serialNumberList)
                 .ne(WorkOrder::getStatus, WorkOrderStatusEnum.AUDITING_SUCCESS)
                 .list();
         Map<String, WorkOrder> mapping = inDatabaseWorkOrderList.stream().collect((Collectors.toMap(WorkOrder::getSerialNumber, workOrder -> workOrder)));
         List<WorkOrder> waitAddList = new ArrayList<>(48);
+        List<WorkOrderErrorType> waitAddErrorTypeList = new ArrayList<>(48);
         Integer updateNum = 0;
-
+        Date now = new Date();
         for (WorkOrder workOrder : workOrderList) {
             WorkOrder databaseWorkOrder = mapping.get(workOrder.getSerialNumber());
             if (Objects.nonNull(databaseWorkOrder)) {
-                List<WorkOrderErrorType> workOrderErrorTypeList = new LambdaQueryChainWrapper<>(workOrderErrorTypeMapper)
-                        .select(WorkOrderErrorType::getErrorName)
-                        .eq(WorkOrderErrorType::getWorkOrderNo, workOrder.getWorkOrderNo())
-                        .list();
-                List<String> errorNameList = workOrderErrorTypeList.stream().map(WorkOrderErrorType::getErrorName).collect(Collectors.toList());
-                String errorType = databaseWorkOrder.getErrorType();
-                if (errorNameList.contains(errorType)) {
+                List<String> errorNameList = workOrderErrorTypeService.getBaseMapper().getNotFinishWorkOrderErrors(workOrder.getWorkOrderNo());
+                List<String> errorTypes = workOrder.getErrorTypeList();
+                if (errorNameList.containsAll(errorTypes)) {
                     // 濡傛灉锛屽浗鏍囩爜銆佹晠闅滅被鍨嬮兘涓�鏍凤紝鍒欒烦杩囦笉澶勭悊
                     continue;
                 } else {
-                    // 閿欒绫诲瀷涓嶄竴鏍凤紝灏辨柊澧炰竴涓敊璇被鍨嬶紝骞朵笖閲嶇疆宸ュ崟鐘舵�佷负寰呭鐞�
-                    List<SysDictData> errorTypeDictList = dictDataMapper.selectDictDataByType("error_type");
-                    String finalErrorType = errorType;
-                    List<SysDictData> targetErrorTypes = errorTypeDictList.stream().filter(item -> finalErrorType.equals(item.getDictValue())).collect(Collectors.toList());
-                    if (! CollectionUtils.isEmpty(targetErrorTypes)) {
-                        errorType = targetErrorTypes.get(0).getDictValue();
+                    for (String errorType : errorTypes) {
+                        if (! errorNameList.contains(errorType)) {
+                            // 閿欒绫诲瀷涓嶄竴鏍凤紝灏辨柊澧炰竴涓敊璇被鍨嬶紝骞朵笖閲嶇疆宸ュ崟鐘舵�佷负寰呭鐞�
+                            WorkOrderErrorType workOrderErrorType = new WorkOrderErrorType();
+                            workOrderErrorType.setWorkOrderNo(databaseWorkOrder.getWorkOrderNo());
+                            workOrderErrorType.setCreateTime(now);
+                            workOrderErrorType.setUpdateTime(now);
+                            workOrderErrorType.setErrorName(errorType);
+                            workOrderErrorTypeService.save(workOrderErrorType);
+                        }
                     }
-                    WorkOrderErrorType workOrderErrorType = new WorkOrderErrorType();
-                    workOrderErrorType.setWorkOrderNo(databaseWorkOrder.getWorkOrderNo());
-                    Date now = new Date();
-                    workOrderErrorType.setCreateTime(now);
-                    workOrderErrorType.setUpdateTime(now);
-                    workOrderErrorTypeMapper.insert(workOrderErrorType);
-
                     databaseWorkOrder.setStatus(WorkOrderStatusEnum.DISTRIBUTED);
                     databaseWorkOrder.setUpdateTime(now);
                     baseMapper.updateById(databaseWorkOrder);
@@ -190,26 +184,40 @@
                 continue;
             }
             workOrder.setWorkOrderNo(IdUtils.timeAddRandomNO(5));
-            workOrder.setUnitId(Math.toIntExact(point.getUnitId()));
+            if (Objects.nonNull(point.getUnitId())) {
+                workOrder.setUnitId(Math.toIntExact(point.getUnitId()));
+            }
             if (point.getImportantTag() || point.getImportantCommandImageTag()) {
                 workOrder.setProcessingPeriod(Integer.valueOf(important.getConfigValue()));
             } else {
                 workOrder.setProcessingPeriod(Integer.valueOf(normal.getConfigValue()));
+            }
+            // 淇濆瓨閿欒绫诲瀷
+            for (String errorType : workOrder.getErrorTypeList()) {
+                WorkOrderErrorType workOrderErrorType = new WorkOrderErrorType();
+                workOrderErrorType.setWorkOrderNo(workOrder.getWorkOrderNo());
+                workOrderErrorType.setCreateTime(now);
+                workOrderErrorType.setUpdateTime(now);
+                workOrderErrorType.setErrorName(errorType);
+                waitAddErrorTypeList.add(workOrderErrorType);
             }
         }
         waitAddList.removeAll(notAddList);
         if (CollectionUtils.isEmpty(waitAddList)) {
             return Boolean.TRUE;
         }
-        this.saveBatch(waitAddList);
+        // 淇濆瓨宸ュ崟鍜屾晠闅滅被鍨�
+        baseMapper.addMany(waitAddList);
+        if (! CollectionUtils.isEmpty(waitAddErrorTypeList)) {
+            workOrderErrorTypeService.getBaseMapper().addMany(waitAddErrorTypeList);
+        }
         // 濡傛灉鏄洿鎺ヤ笅鍙戯紝娣诲姞涓嬪彂璁板綍
         if (WorkOrderStatusEnum.DISTRIBUTED.equals(waitAddList.get(0).getStatus())) {
             List<WorkOrderDistributeRecord> distributedRecordList = waitAddList.stream().map(item -> {
                 WorkOrderDistributeRecord workOrderDistributeRecord = new WorkOrderDistributeRecord();
-                workOrderDistributeRecord.setWorkOrderId(item.getId());
+                workOrderDistributeRecord.setWorkOrderNo(item.getWorkOrderNo());
                 workOrderDistributeRecord.setDistributeWay(WorkOrderDistributeWayEnum.DIRECT_DISTRIBUTE);
                 workOrderDistributeRecord.setUserId(1L);
-                Date now = new Date();
                 workOrderDistributeRecord.setCreateTime(now);
                 workOrderDistributeRecord.setUpdateTime(now);
                 return workOrderDistributeRecord;
@@ -236,7 +244,7 @@
         entity.setUpdateTime(now);
         entity.setErrorType(String.join(",", form.getErrorType()));
         List<WorkOrderErrorType> workOrderErrorTypes = form.getErrorType().stream().map(errorType -> new WorkOrderErrorType(entity.getWorkOrderNo(), errorType)).toList();
-        workOrderErrorTypeMapper.insertWorkOrderErrorTypeList(workOrderErrorTypes);
+        workOrderErrorTypeService.getBaseMapper().insertWorkOrderErrorTypeList(workOrderErrorTypes);
         if(baseMapper.insert(entity) > 0) {
             return Result.ok("娣诲姞鎴愬姛");
         }
@@ -421,7 +429,6 @@
     public Result page(WorkOrderQuery query) {
         IPage<WorkOrderVO> page = PageUtil.getPage(query, WorkOrderVO.class);
         baseMapper.page(page, query);
-        page.getRecords().forEach(item -> item.setErrorType(ErrorTypeEnum.getEnumValue(item.getErrorType())));
         return Result.ok().data(page.getRecords()).total(page.getTotal());
     }
 
@@ -429,7 +436,6 @@
     public Result distributePage(DistributeWorkOrderQuery query) {
         IPage<WorkOrderVO> page = PageUtil.getPage(query, WorkOrderVO.class);
         baseMapper.distributePage(page, query);
-        page.getRecords().forEach(item -> item.setErrorType(ErrorTypeEnum.getEnumValue(item.getErrorType())));
         return Result.ok().data(page).total(page.getTotal());
     }
 
@@ -464,20 +470,20 @@
                 .orderByDesc(WorkOrder::getCreateTime)
                 .last("limit " + data.getFastNumLimit())
                 .list();
-        List<Integer> ids = list.stream().map(WorkOrder::getId).toList();
+        List<String> workOrderNoList = list.stream().map(WorkOrder::getWorkOrderNo).toList();
         List<String> serialNumberList = list.stream().map(WorkOrder::getSerialNumber).toList();
 
-        if (ids.isEmpty()) { return Result.error("娌℃湁绗﹀悎鏉′欢鐨勫伐鍗�"); }
+        if (workOrderNoList.isEmpty()) { return Result.error("娌℃湁绗﹀悎鏉′欢鐨勫伐鍗�"); }
         if (!getDistributeLock()) { return Result.error("姝ゅ埢鏈変汉涓嬪彂涓紝涓洪伩鍏嶅啿绐侊紝璇风◢鍚庨噸璇�"); }
         try {
             new LambdaUpdateChainWrapper<>(baseMapper)
                     .set(WorkOrder::getStatus, WorkOrderStatusEnum.DISTRIBUTED)
-                    .in(WorkOrder::getId, ids)
+                    .in(WorkOrder::getWorkOrderNo, workOrderNoList)
                     .update();
-            addDistributeRecord(ids, WorkOrderDistributeWayEnum.FAST_DISTRIBUTE);
+            addDistributeRecord(workOrderNoList, WorkOrderDistributeWayEnum.FAST_DISTRIBUTE);
             // 鍚屾鐐逛綅鐘舵��
             ywPointService.updateRecovery(serialNumberList, 1);
-            return Result.ok("鎴愬姛涓嬪彂" + ids.size() + "鏉″伐鍗�");
+            return Result.ok("鎴愬姛涓嬪彂" + workOrderNoList.size() + "鏉″伐鍗�");
         } catch (Exception e) {
             return Result.error("鎿嶄綔澶辫触");
         } finally {
@@ -491,27 +497,27 @@
         WorkOrderDistributeWayEnum distributeWayEnum = WorkOrderDistributeWayEnum.SELECTED_DISTRIBUTE;
         if (!getDistributeLock()) { return Result.error("姝ゅ埢鏈変汉涓嬪彂涓紝涓洪伩鍏嶅啿绐侊紝璇风◢鍚庨噸璇�"); }
         try {
-            if (query.getIds().isEmpty()) {
-                query.setIds(new LambdaQueryChainWrapper<>(baseMapper)
+            if (query.getWorkOrderNOList().isEmpty()) {
+                query.setWorkOrderNOList(new LambdaQueryChainWrapper<>(baseMapper)
                         .eq(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE)
                         .eq(Objects.nonNull(query.getUnitId()), WorkOrder::getUnitId, query.getUnitId())
                         .select(WorkOrder::getId)
                         .list()
                         .stream()
-                        .map(WorkOrder::getId)
+                        .map(WorkOrder::getWorkOrderNo)
                         .collect(Collectors.toList()));
                 distributeWayEnum = WorkOrderDistributeWayEnum.ALL_DISTRIBUTE;
             }
-            if (query.getIds().isEmpty()) { return Result.error("娌℃湁宸ュ崟寰呬笅鍙�"); }
+            if (query.getWorkOrderNOList().isEmpty()) { return Result.error("娌℃湁宸ュ崟寰呬笅鍙�"); }
             new LambdaUpdateChainWrapper<>(baseMapper)
                     .set(WorkOrder::getStatus, WorkOrderStatusEnum.DISTRIBUTED)
-                    .in(WorkOrder::getId, query.getIds())
+                    .in(WorkOrder::getWorkOrderNo, query.getWorkOrderNOList())
                     .update();
-            addDistributeRecord(query.getIds(), distributeWayEnum);
+            addDistributeRecord(query.getWorkOrderNOList(), distributeWayEnum);
             // 鍚屾鐐逛綅鐘舵��
-            List<String> serialNumberList = new LambdaQueryChainWrapper<>(baseMapper).select(WorkOrder::getSerialNumber).in(WorkOrder::getId, query.getIds()).list().stream().map(WorkOrder::getSerialNumber).toList();
+            List<String> serialNumberList = new LambdaQueryChainWrapper<>(baseMapper).select(WorkOrder::getSerialNumber).in(WorkOrder::getId, query.getWorkOrderNOList()).list().stream().map(WorkOrder::getSerialNumber).toList();
             ywPointService.updateRecovery(serialNumberList, 1);
-            return Result.ok("鎴愬姛涓嬪彂" + query.getIds().size() + "鏉″伐鍗�");
+            return Result.ok("鎴愬姛涓嬪彂" + query.getWorkOrderNOList().size() + "鏉″伐鍗�");
         } catch (Exception e) {
             return Result.error("鎿嶄綔澶辫触");
         } finally {
@@ -541,13 +547,13 @@
 
     /**
      * 娣诲姞宸ュ崟涓嬪彂璁板綍
-     * @param ids 宸ュ崟id
+     * @param workOrderNoList 宸ュ崟id
      */
-    private void addDistributeRecord(List<Integer> ids, WorkOrderDistributeWayEnum distributeWay) {
+    private void addDistributeRecord(List<String> workOrderNoList, WorkOrderDistributeWayEnum distributeWay) {
         LoginUser loginUser = SecurityUtils.getLoginUser();
         workOrderDistributeRecordMapper.insertBatch(
-                ids.stream()
-                        .map(id -> new WorkOrderDistributeRecord(id, loginUser.getUserId(), distributeWay))
+                workOrderNoList.stream()
+                        .map(no -> new WorkOrderDistributeRecord(no, loginUser.getUserId(), distributeWay))
                         .toList()
         );
     }

--
Gitblit v1.8.0