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/resources/mapper/zgyw/WorkOrderMapper.xml                             |   19 ++++
 ycl-pojo/src/main/java/com/ycl/platform/domain/query/DistributeWorkOrderQuery.java        |    2 
 ycl-server/src/main/resources/mapper/zgyw/WorkOrderErrorTypeMapper.xml                    |   17 ++++
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java                        |    2 
 ycl-server/src/main/resources/mapper/zgyw/WorkOrderDistributeRecordMapper.xml             |    4 
 pom.xml                                                                                   |    2 
 ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderErrorTypeMapper.java            |   17 ++++
 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrderErrorType.java             |    2 
 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderErrorTypeServiceImpl.java |   14 +++
 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrderDistributeRecord.java      |    4 
 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java                      |    5 +
 ycl-server/src/main/java/com/ycl/platform/service/WorkOrderErrorTypeService.java          |   11 ++
 ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java   |   30 ++++++-
 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java          |  100 +++++++++++++-----------
 ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java                     |    2 
 15 files changed, 169 insertions(+), 62 deletions(-)

diff --git a/pom.xml b/pom.xml
index 7d28752..c2ea5e9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,7 +35,7 @@
         <aliyun.sdk.oss.version>3.10.2</aliyun.sdk.oss.version>
         <knife4j.version>3.0.2</knife4j.version>
         <aspectj.version>1.9.4</aspectj.version>
-        <mybatis-plus.version>3.5.4</mybatis-plus.version>
+        <mybatis-plus.version>3.5.4.1</mybatis-plus.version>
         <jwt.version>0.9.1</jwt.version>
         <jaxb-api.version>2.3.1</jaxb-api.version>
         <poi.version>4.1.2</poi.version>
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java
index 33fd914..11b5d0e 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 
 import java.time.LocalDateTime;
+import java.util.List;
 
 import com.ycl.platform.base.AbsEntity;
 import enumeration.general.WorkOrderStatusEnum;
@@ -81,4 +82,8 @@
     @ApiModelProperty("鏄惁鎵h繃绉垎")
     @TableField("deduct")
     private Boolean deduct;
+
+
+    @TableField(exist=false)
+    private List<String> errorTypeList;
 }
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrderDistributeRecord.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrderDistributeRecord.java
index 9921ce6..05fb50d 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrderDistributeRecord.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrderDistributeRecord.java
@@ -28,8 +28,8 @@
     private static final long serialVersionUID = 1L;
 
     @ApiModelProperty("宸ュ崟ID")
-    @TableField("work_order_id")
-    private Integer workOrderId;
+    @TableField("work_order_no")
+    private String workOrderNo;
 
     @ApiModelProperty("涓嬪彂浜�")
     @TableField("user_id")
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrderErrorType.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrderErrorType.java
index 8fd7185..f828bdc 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrderErrorType.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrderErrorType.java
@@ -1,6 +1,7 @@
 package com.ycl.platform.domain.entity;
 
 
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.ycl.platform.base.AbsEntity;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -15,6 +16,7 @@
 @NoArgsConstructor
 @AllArgsConstructor
 @EqualsAndHashCode(callSuper = true)
+@TableName("t_work_order_error_type")
 public class WorkOrderErrorType extends AbsEntity {
 
     /**
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DistributeWorkOrderQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DistributeWorkOrderQuery.java
index c1f4c82..fab30c1 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DistributeWorkOrderQuery.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DistributeWorkOrderQuery.java
@@ -35,7 +35,7 @@
      * 宸ュ崟id
      */
     @JsonProperty("ids")
-    private List<Integer> ids;
+    private List<String> workOrderNOList;
 
     /**
      * 鍏抽敭璇�
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java
index 0f1824c..3ac3500 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java
@@ -54,7 +54,7 @@
     private Boolean important;
 
     /** 鏁呴殰绫诲瀷 */
-    private String errorType;
+    private List<String> errorTypeList;
 
     /** 杩愮淮浜哄憳 */
     private Integer ywPeopleId;
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderErrorTypeMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderErrorTypeMapper.java
index 650e14a..21fef3c 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderErrorTypeMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderErrorTypeMapper.java
@@ -2,6 +2,8 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ycl.platform.domain.entity.WorkOrderErrorType;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.security.core.parameters.P;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
@@ -69,4 +71,19 @@
      */
     int insertWorkOrderErrorTypeList(List<WorkOrderErrorType> workOrderErrorTypeList);
 
+    /**
+     * 鏌ヨ鏈畬鎴愮殑宸ュ崟鐨勯敊璇被鍨�
+     *
+     * @param workOrderNo
+     * @return
+     */
+    List<String> getNotFinishWorkOrderErrors(@Param("workOrderNo") String workOrderNo);
+
+    /**
+     * 鎵归噺娣诲姞宸ュ崟鏁呴殰
+     *
+     * @param errorTypeList
+     * @return
+     */
+    int addMany(@Param("errorTypeList") List<WorkOrderErrorType> errorTypeList);
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
index fdbf66b..bb16fb9 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
@@ -70,4 +70,6 @@
      * @return
      */
     List<DeviceInfoVO> hasErrorWorkOrderList();
+
+    int addMany(@Param("workOrderList") List<WorkOrder> workOrderList);
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderErrorTypeService.java b/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderErrorTypeService.java
new file mode 100644
index 0000000..3e104be
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderErrorTypeService.java
@@ -0,0 +1,11 @@
+package com.ycl.platform.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ycl.platform.domain.entity.WorkOrderErrorType;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/8/23 11:36
+ */
+public interface WorkOrderErrorTypeService extends IService<WorkOrderErrorType> {
+}
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java
index d48d425..d68398a 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java
@@ -9,7 +9,10 @@
 import enumeration.general.WorkOrderStatusEnum;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -30,18 +33,26 @@
      */
     @Override
     public void imageDetectionCheck(List<ImageDetectionResult> dataList) {
-        List<WorkOrder> workOrderList = dataList.stream().map(item -> {
+        List<WorkOrder> workOrderList = dataList.stream().filter(item -> 0 == item.getSigna1()
+                || 0 == item.getColor()
+                || 0 == item.getSnow()
+                || 0 == item.getStripe()
+                || 0 == item.getShade()
+                || 0 == item.getBlur()
+                || 0 == item.getLight()
+        )
+        .map(item -> {
             WorkOrder workOrder = new WorkOrder();
             // 淇″彿缂哄け
-            if (0 == item.getSigna1()) {
+            if (0 == item.getSigna1() ) {
                 this.genWorkOrder(workOrder, ErrorType.SIGNAL_LOSS, item.getDeviceId());
             }
             // 鐢婚潰鍋忚壊
-            if (0 == item.getColor()) {
+            if ( 0 == item.getColor()) {
                 this.genWorkOrder(workOrder, ErrorType.SCREEN_COLOR_DEVIATION, item.getDeviceId());
             }
             // 闆姳骞叉壈
-            if (0 == item.getSnow()) {
+            if ( 0 == item.getSnow()) {
                 this.genWorkOrder(workOrder, ErrorType.SNOW_STORM, item.getDeviceId());
             }
             // 鏉$汗骞叉壈
@@ -130,8 +141,15 @@
      * @param serialNumber 鍥芥爣鐮�
      */
     private void genWorkOrder(WorkOrder workOrder, ErrorType errorType, String serialNumber) {
-        workOrder.setWorkOrderNo(IdUtils.timeAddRandomNO(5));
-        workOrder.setErrorType(errorType.getValue());
+        if (! StringUtils.hasText(workOrder.getWorkOrderNo())) {
+            workOrder.setWorkOrderNo(IdUtils.timeAddRandomNO(5));
+        }
+        if (CollectionUtils.isEmpty(workOrder.getErrorTypeList())) {
+            workOrder.setErrorTypeList(new ArrayList<>());
+            workOrder.getErrorTypeList().add(errorType.getValue());
+        } else {
+            workOrder.getErrorTypeList().add(errorType.getValue());
+        }
         workOrder.setStatus(WorkOrderStatusEnum.DISTRIBUTED);
         workOrder.setSerialNumber(serialNumber);
     }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderErrorTypeServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderErrorTypeServiceImpl.java
new file mode 100644
index 0000000..3026a32
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderErrorTypeServiceImpl.java
@@ -0,0 +1,14 @@
+package com.ycl.platform.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ycl.platform.domain.entity.WorkOrderErrorType;
+import com.ycl.platform.mapper.WorkOrderErrorTypeMapper;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/8/23 11:36
+ */
+@Service
+public class WorkOrderErrorTypeServiceImpl extends ServiceImpl<WorkOrderErrorTypeMapper, WorkOrderErrorType> {
+}
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()
         );
     }
diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderDistributeRecordMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderDistributeRecordMapper.xml
index 7266faf..5578c87 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderDistributeRecordMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderDistributeRecordMapper.xml
@@ -4,10 +4,10 @@
 
 
     <insert id="insertBatch">
-        insert into t_work_order_distribute_record (work_order_id, user_id, create_time, deleted, distribute_way)
+        insert into t_work_order_distribute_record (work_order_no, user_id, create_time, deleted, distribute_way)
         values
         <foreach collection="list" item="item" separator=",">
-            (#{item.workOrderId}, #{item.userId}, now(), '0', #{item.distributeWay})
+            (#{item.workOrderNo}, #{item.userId}, now(), '0', #{item.distributeWay})
         </foreach>
     </insert>
 </mapper>
diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderErrorTypeMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderErrorTypeMapper.xml
index 5c80034..5505241 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderErrorTypeMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderErrorTypeMapper.xml
@@ -82,4 +82,19 @@
         </foreach>
     </insert>
 
-</mapper>
\ No newline at end of file
+    <select id="getNotFinishWorkOrderErrors" resultType="string">
+        SELECT
+               ot.error_name
+        FROM
+             t_work_order_error_type ot
+                 INNER JOIN t_work_order wo ON wo.work_order_no = ot.work_order_no AND wo.work_order_no = #{workOrderNo} AND wo.status != 'AUDITING_SUCCESS'
+    </select>
+
+    <insert id="addMany">
+        INSERT INTO t_work_order_error_type (work_order_no, error_name, create_time, update_time, deleted) VALUES
+        <foreach collection="errorTypeList" item="errorType" separator=",">
+            (#{errorType.workOrderNo}, #{errorType.errorName}, #{errorType.createTime}, #{errorType.updateTime}, 0)
+        </foreach>
+    </insert>
+
+</mapper>
diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
index 2c4687d..4111b0c 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -15,9 +15,19 @@
         <result column="yw_check_result" property="ywCheckResult"/>
         <result column="overtime" property="overtime"/>
         <result column="deduct" property="deduct"/>
+        <collection property="errorTypeList" select="getErrorType" ofType="string" column="work_order_no">
+        </collection>
     </resultMap>
 
-    <select id="page" resultType="com.ycl.platform.domain.vo.WorkOrderVO">
+    <select id="getErrorType" resultType="string">
+        SELECT DISTINCT da.dict_label
+        FROM
+            t_work_order_error_type et
+                 LEFT JOIN sys_dict_data da ON da.dict_value = et.error_name AND da.dict_type = 'error_type'
+        WHERE et.work_order_no = #{work_order_no}
+    </select>
+
+    <select id="page" resultMap="BaseResultMap">
         SELECT
             wo.*,
             u.unit_name,
@@ -182,4 +192,11 @@
                  INNER JOIN t_device_info di ON wo.serial_number = di.device_id
     </select>
 
+    <insert id="addMany">
+        INSERT INTO t_work_order (work_order_no, status, serial_number, unit_id, create_time, update_time, deleted)
+        VALUES <foreach collection="workOrderList" item="workOrder" separator=",">
+        (#{workOrder.workOrderNo}, #{workOrder.status}, #{workOrder.serialNumber}, #{workOrder.unitId}, #{workOrder.createTime}, #{workOrder.updateTime}, 0)
+    </foreach>
+    </insert>
+
 </mapper>

--
Gitblit v1.8.0