From 397eda7e04fd23016ba55b1b12af63bfeb00e482 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期二, 12 十一月 2024 11:16:55 +0800
Subject: [PATCH] bug+检测按钮+新的故障下拉框+工单删除+记录检测离线具体时间点等等

---
 ycl-server/src/main/resources/mapper/zgyw/YwUnitMapper.xml                              |    6 
 ycl-common/src/main/java/pojo/CascadeOption.java                                        |   18 ++
 ycl-pojo/src/main/java/com/ycl/platform/domain/result/SYS/TMonitorResult.java           |    6 
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderYwConditionRecordVO.java     |    3 
 ycl-server/src/main/java/com/ycl/task/ContractTask.java                                 |   48 +++---
 ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml                           |   45 +++--
 ycl-pojo/src/main/java/com/ycl/platform/domain/query/DistributeWorkOrderQuery.java      |    2 
 ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java           |   26 +++
 ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderExportQuery.java          |    2 
 ycl-server/src/main/resources/mapper/zgyw/WorkOrderYwConditionRecordMapper.xml          |    3 
 ycl-server/src/main/java/com/ycl/utils/CheckPointUtil.java                              |    5 
 ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java       |   13 +
 ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java                |    7 
 ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java                 |   11 +
 ycl-server/src/main/java/com/ycl/thread/OnlineCheckThread.java                          |    4 
 ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java |   20 +-
 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java        |  133 +++++++++++++++-
 ycl-server/src/main/java/com/ycl/task/MonitorTask.java                                  |    3 
 ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java                   |    4 
 ycl-common/src/main/java/enumeration/ErrorType.java                                     |   80 ++++++---
 ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml                            |    2 
 21 files changed, 340 insertions(+), 101 deletions(-)

diff --git a/ycl-common/src/main/java/enumeration/ErrorType.java b/ycl-common/src/main/java/enumeration/ErrorType.java
index 743fe1f..43630c1 100644
--- a/ycl-common/src/main/java/enumeration/ErrorType.java
+++ b/ycl-common/src/main/java/enumeration/ErrorType.java
@@ -3,52 +3,70 @@
 import com.baomidou.mybatisplus.annotation.EnumValue;
 import lombok.Getter;
 
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * @author锛歺p
  * @date锛�2024/8/19 11:39
  */
 @Getter
 public enum ErrorType {
-
-    PLATFORM_OFFLINE("PLATFORMOFFLINE", "骞冲彴绂荤嚎"),
-    SEVER_INTERRUPT("SEVERINTERRUPT", "鏈嶅姟涓柇"),
-    DEVICE_OFFLINE("DEVICEOFFLINE", "璁惧绂荤嚎"),
-    VIDEO_LOSS("VIDEOMISS", "褰曞儚缂哄け"),
-    VIDEO_NONE("NOVIDEO", "鏃犲綍鍍�"),
-    POINT_INFO_ERROR("POINTINFOERRO", "鐐逛綅淇℃伅閿欒"),
-    POINT_INFO_MISS("POINTINFOMISS", "鐐逛綅淇℃伅涓嶅叏"),
-    SIGNAL_LOSS("SIGNALMISS", "淇″彿缂哄け"),
-    SCREEN_COLOR_DEVIATION("SCREENCOLOR", "鐢婚潰鍋忚壊"),
-    SNOW_STORM("SCREENSNOW", "闆姳骞叉壈"),
-    STRIPE_INTERFERENCE("SCREENSTRIP", "鏉$汗骞叉壈"),
-    SCREEN_OCCLUSION("SCREENSHADE", "鐢婚潰閬尅"),
-    ABNORMAL_CLARITY("SCREENBLUR", "娓呮櫚搴﹀紓甯�"),
-    ABNORMAL_BRIGHTNESS("SCREENLIGHT", "浜害寮傚父"),
-    UNKNOWN("UNKNOWN", "鏈煡"),
-    CLOCK_SKEW("CLOCKSKEW", "鏃堕挓鍋忓樊"),
-    OSD_ERROR("OSD", "osd寮傚父"),
-    PIC_URLABNORMAL("PICURLABNORMAL","鍥剧墖璁块棶寮傚父"),
-    MONITOR_UNQUALIFY("MONITORUNQUALIFY", "涓�鏈轰竴妗d笉鍚堟牸"),
-    PIC_UNUSEFUL("PICUNUSEFUL", "澶у浘涓嶅彲鐢�"),
-    VIDEO_ORPIC_UNNORMAL("VIDEOORPICUNNORMAL", "瑙嗛鎷夋祦銆佸浘鐗囪幏鍙栧紓甯�"),
+    //閫氱敤
+//    PLATFORM_OFFLINE("PLATFORMOFFLINE", "骞冲彴绂荤嚎","COMMON"),
+//    SEVER_INTERRUPT("SEVERINTERRUPT", "鏈嶅姟涓柇","COMMON"),
+    DEVICE_OFFLINE("DEVICEOFFLINE", "璁惧绂荤嚎","COMMON"),
+    POINT_INFO_ERROR("POINTINFOERRO", "鐐逛綅淇℃伅閿欒","COMMON"),
+    //瑙嗛
+    CLOCK_SKEW("CLOCKSKEW", "鏃堕挓鍋忓樊","VIDEO"),
+    SIGNAL_LOSS("SIGNALMISS", "淇″彿缂哄け","VIDEO"),
+    SCREEN_COLOR_DEVIATION("SCREENCOLOR", "鐢婚潰鍋忚壊","VIDEO"),
+    SNOW_STORM("SCREENSNOW", "闆姳骞叉壈","VIDEO"),
+    STRIPE_INTERFERENCE("SCREENSTRIP", "鏉$汗骞叉壈","VIDEO"),
+    SCREEN_OCCLUSION("SCREENSHADE", "鐢婚潰閬尅","VIDEO"),
+    ABNORMAL_CLARITY("SCREENBLUR", "娓呮櫚搴﹀紓甯�","VIDEO"),
+    ABNORMAL_BRIGHTNESS("SCREENLIGHT", "浜害寮傚父","VIDEO"),
+    OSD_ERROR("OSD", "osd寮傚父","VIDEO"),
+//    VIDEO_LOSS("VIDEOMISS", "褰曞儚缂哄け","VIDEO"),
+//    VIDEO_NONE("NOVIDEO", "鏃犲綍鍍�","VIDEO"),
+//    POINT_INFO_MISS("POINTINFOMISS", "鐐逛綅淇℃伅涓嶅叏","COMMON"),
+//    UNKNOWN("UNKNOWN", "鏈煡"),
+//    PIC_URLABNORMAL("PICURLABNORMAL","鍥剧墖璁块棶寮傚父",""),
+//    MONITOR_UNQUALIFY("MONITORUNQUALIFY", "涓�鏈轰竴妗d笉鍚堟牸"),
+//    PIC_UNUSEFUL("PICUNUSEFUL", "澶у浘涓嶅彲鐢�"),
+//    VIDEO_ORPIC_UNNORMAL("VIDEOORPICUNNORMAL", "瑙嗛鎷夋祦銆佸浘鐗囪幏鍙栧紓甯�"),
 
     // 闃堝��
-    CLOCK_RIGHT("CLOCK_RIGHT", "鏃堕挓鍑嗙‘鐜囧紓甯�"),
-    LONG_DAY_NO_DATA("LONG_DAY_NO_DATA", "闀挎椂闂存棤鏁版嵁"),
-    DATA_TIMELY_ERROR("DATA_TIMELY_ERROR", "鏁版嵁鍙婃椂鎬у紓甯�"),
-    NOT_UNIQUE_DATA_VOLUME("NOT_UNIQUE_DATA_VOLUME", "涓嶅敮涓�鏁版嵁閲忓紓甯�"),
-    UNRECOGNIZED_DAY_VOLUME("UNRECOGNIZED_DAY_VOLUME", "鐧藉ぉ鏈瘑鍒暟鎹噺寮傚父"),
-    CAR_SIX("CAR_SIX", "杞﹁締鍏」灞炴�т笉瀹屾暣"),
-    MODELING_FAIL("MODELING_FAIL", "寤烘ā澶辫触鐜囧紓甯�"),
-    FACE_LOW("FACE_LOW", "浜鸿劯浣庡垎鐜囧紓甯�"),
+    //杞﹁締浜鸿劯閫氱敤
+    CLOCK_RIGHT("CLOCK_RIGHT", "鏃堕挓鍑嗙‘鐜囧紓甯�","CARORFACE"),
+    LONG_DAY_NO_DATA("LONG_DAY_NO_DATA", "闀挎椂闂存棤鏁版嵁","CARORFACE"),
+    DATA_TIMELY_ERROR("DATA_TIMELY_ERROR", "鏁版嵁鍙婃椂鎬у紓甯�","CARORFACE"),
+    NOT_UNIQUE_DATA_VOLUME("NOT_UNIQUE_DATA_VOLUME", "涓嶅敮涓�鏁版嵁閲忓紓甯�","CARORFACE"),
+    UNRECOGNIZED_DAY_VOLUME("UNRECOGNIZED_DAY_VOLUME", "鐧藉ぉ鏈瘑鍒暟鎹噺寮傚父","CARORFACE"),
+    //杞﹁締
+    CAR_SIX("CAR_SIX", "杞﹁締鍏」灞炴�т笉瀹屾暣","CAR"),
+    //浜鸿劯
+    MODELING_FAIL("MODELING_FAIL", "寤烘ā澶辫触鐜囧紓甯�","FACE"),
+    FACE_LOW("FACE_LOW", "浜鸿劯浣庡垎鐜囧紓甯�","FACE"),
     ;
 
     private String value;
 
     private String desc;
 
-    ErrorType(String value, String desc) {
+    private String category;
+
+    ErrorType(String value, String desc,String category) {
         this.value = value;
         this.desc = desc;
+        this.category = category;
+    }
+
+    // 鏍规嵁鍒嗙被鑾峰彇閿欒绫诲瀷鍒楄〃
+    public static List<ErrorType> getErrorTypesByCategory(String category) {
+        return Arrays.stream(values())
+                .filter(errorType -> errorType.getCategory() == category)
+                .collect(Collectors.toList());
     }
 }
diff --git a/ycl-common/src/main/java/pojo/CascadeOption.java b/ycl-common/src/main/java/pojo/CascadeOption.java
new file mode 100644
index 0000000..d325f09
--- /dev/null
+++ b/ycl-common/src/main/java/pojo/CascadeOption.java
@@ -0,0 +1,18 @@
+package pojo;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+//鍓嶇绾ц仈閫夋嫨鏁版嵁
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class CascadeOption {
+    private String value;
+    private String label;
+    private List<CascadeOption> children;
+}
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 015d175..222727f 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
@@ -30,7 +30,7 @@
     /**
      * 鏁呴殰绫诲瀷
      */
-    private List<String> errorTypeList;
+    private String errorType;
 
     /**
      * 宸ュ崟id
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderExportQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderExportQuery.java
index 7f677da..1475c1d 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderExportQuery.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderExportQuery.java
@@ -38,7 +38,7 @@
     /**
      * 鏁呴殰绫诲瀷
      */
-    private List<String> errorTypeList;
+    private String errorType;
 
     /**
      * 鐘舵��
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java
index 88992c7..d1fa4cf 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/WorkOrderQuery.java
@@ -42,8 +42,11 @@
     /**
      * 鏁呴殰绫诲瀷
      */
-    private List<String> errorTypeList;
-
+    private String errorType;
+    /**
+     * 鏁呴殰绫诲瀷
+     */
+    private String errorTypeLabel;
     /**
      * 鐘舵��
      */
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/result/SYS/TMonitorResult.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/result/SYS/TMonitorResult.java
index a05236b..828af36 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/result/SYS/TMonitorResult.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/result/SYS/TMonitorResult.java
@@ -7,6 +7,7 @@
 import lombok.Data;
 import org.springframework.data.mongodb.core.mapping.Document;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -30,6 +31,11 @@
     private Integer checkCount;
     /** 褰撴棩绂荤嚎 */
     private Integer offLineCount;
+    /**
+     * 绂荤嚎鏃堕棿鐐�
+     */
+    private List<Date> offLineTime;
+    private List<String> offLineTimeStr;
     /** 璁惧绫诲瀷 */
     private String monitorType;
     /** 璁惧鍚� */
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderYwConditionRecordVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderYwConditionRecordVO.java
index ad0aeb2..70724e1 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderYwConditionRecordVO.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderYwConditionRecordVO.java
@@ -37,6 +37,9 @@
     /** 鏄惁绯荤粺娑堟伅 */
     private Boolean sysMsg;
 
+    /** 鏄惁绯荤粺娑堟伅 */
+    private Integer userId;
+
     public static WorkOrderYwConditionRecordVO getVoByEntity(@NonNull WorkOrderYwConditionRecord entity, WorkOrderYwConditionRecordVO vo) {
         if(vo == null) {
             vo = new WorkOrderYwConditionRecordVO();
diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java b/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java
index 4b71e63..10b913d 100644
--- a/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java
+++ b/ycl-server/src/main/java/com/ycl/platform/controller/WorkOrderController.java
@@ -156,6 +156,13 @@
         return workOrderService.detail(id);
     }
 
+    @GetMapping("/check")
+    @ApiOperation(value = "鍥剧墖妫�娴�", notes = "鍥剧墖妫�娴�")
+    @PreAuthorize("@ss.hasPermi('work:order:check')")
+    public Result check(String workOrderNo,String serialNumber) {
+        return workOrderService.checkImage(workOrderNo,serialNumber);
+    }
+
     @GetMapping("/list")
     @ApiOperation(value = "鍒楄〃", notes = "鍒楄〃")
     @PreAuthorize("@ss.hasPermi('work:order:list')")
@@ -163,6 +170,12 @@
         return workOrderService.all();
     }
 
+    @GetMapping("/errorType/list")
+    @ApiOperation(value = "鏁呴殰鍒楄〃", notes = "鏁呴殰鍒楄〃")
+    @PreAuthorize("@ss.hasPermi('work:order:list')")
+    public Result errorList() {
+        return workOrderService.errorAll();
+    }
     @GetMapping("/detail/info/{workOrderNo}")
     @ApiOperation(value = "璇︽儏", notes = "璇︽儏")
     @PreAuthorize("@ss.hasPermi('work:order:detail')")
@@ -219,4 +232,17 @@
     public Result batchDeleteWorkOrderWhite(@RequestBody List<String> ids) {
         return workOrderService.batchDeleteWorkOrderWhite(ids);
     }
+
+    /**
+     * 鎵归噺鍒犻櫎宸ュ崟
+     *
+     * @return {@link Result }
+     * @author
+     */
+    @DeleteMapping("/batchDelete")
+    @PreAuthorize("@ss.hasPermi('work:order:delete')")
+    @ApiOperation(value = "鎵归噺鍒犻櫎宸ュ崟鐧藉悕鍗�", notes = "鎵归噺鍒犻櫎宸ュ崟鐧藉悕鍗�")
+    public Result batchDeleteWorkOrder(@RequestBody List<String> workOrderNos) {
+        return workOrderService.batchDeleteWorkOrder(workOrderNos);
+    }
 }
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 378fd6c..7583ad6 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
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ycl.platform.domain.entity.WorkOrder;
+import com.ycl.platform.domain.form.WorkOrderBatchAuditingForm;
 import com.ycl.platform.domain.query.*;
 import com.ycl.platform.domain.vo.DeviceInfoVO;
 import com.ycl.platform.domain.vo.WorkOrderDetailVO;
@@ -109,4 +110,7 @@
      * @return
      */
     List<WorkOrderVO> getRecoveryInfo(List<String> orders);
+
+    List<WorkOrder> batchGetByError(@Param("form") WorkOrderBatchAuditingForm form);
+
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java b/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
index 6abc566..c816ad0 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/WorkOrderService.java
@@ -271,4 +271,15 @@
      */
     void batchImportWhite(List<PointExport> dataList);
 
+    /**
+     * 妫�娴嬫寜閽�
+     * @param workOrderNo
+     * @return
+     */
+    Result checkImage(String workOrderNo,String serialNumber);
+
+    Result batchDeleteWorkOrder(List<String> workOrderNos);
+
+    Result errorAll();
+
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java
index aba88a9..b2acaff 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java
@@ -43,6 +43,7 @@
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
@@ -106,6 +107,18 @@
             } else {
                 item.setOnlineStr("鏈煡");
             }
+            List<Date> offLineTime = item.getOffLineTime();
+            //鍚庣画鍙互鏀规垚閰嶇疆鐨勭绾挎鏁�(鎻愬彇鍓峮娆★紝n涓洪厤缃殑绂荤嚎娆℃暟)
+            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            if(CollectionUtils.isNotEmpty(offLineTime) && offLineTime.size()>1){
+                offLineTime = offLineTime.subList(0,1);
+            }
+            List<String> dateStr = new ArrayList<>();
+            for (Date date : offLineTime) {
+                String formatDate = format.format(date);
+                dateStr.add(formatDate);
+            }
+            item.setOffLineTimeStr(dateStr);
         });
         params.setDeptTag(-1);
         params.setDeviceType(1);
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 f20f559..4ff8e9e 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
@@ -119,16 +119,16 @@
 
     @Override
     public void recordMetaDSumCheck(List<RecordMetaDSumResult> dataList) {
-        List<WorkOrder> workOrderList = dataList.stream().map(item -> {
-            WorkOrder workOrder = new WorkOrder();
-            if (0 == item.getRecordStatus()) {
-                this.genWorkOrder(workOrder, ErrorType.VIDEO_LOSS, item.getDeviceId());
-            } else if (-1 == item.getRecordStatus()) {
-                this.genWorkOrder(workOrder, ErrorType.VIDEO_NONE, item.getDeviceId());
-            }
-            return workOrder;
-        }).collect(Collectors.toList());
-        workOrderService.innerAddWorkOrder(workOrderList);
+//        List<WorkOrder> workOrderList = dataList.stream().map(item -> {
+//            WorkOrder workOrder = new WorkOrder();
+//            if (0 == item.getRecordStatus()) {
+//                this.genWorkOrder(workOrder, ErrorType.VIDEO_LOSS, item.getDeviceId());
+//            } else if (-1 == item.getRecordStatus()) {
+//                this.genWorkOrder(workOrder, ErrorType.VIDEO_NONE, item.getDeviceId());
+//            }
+//            return workOrder;
+//        }).collect(Collectors.toList());
+//        workOrderService.innerAddWorkOrder(workOrderList);
     }
 
 
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 86f83a0..8c1f764 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
@@ -44,6 +44,7 @@
 import constant.CheckConstants;
 import constant.Constants;
 import constant.RedisConstant;
+import enumeration.ErrorType;
 import enumeration.general.*;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -62,6 +63,7 @@
 import org.springframework.util.Assert;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
+import pojo.CascadeOption;
 
 import javax.imageio.ImageIO;
 import javax.swing.*;
@@ -98,6 +100,7 @@
     private final NotifyService notifyService;
     private final WorkOrderDistributeRecordMapper workOrderDistributeRecordMapper;
     private final WorkOrderErrorTypeServiceImpl workOrderErrorTypeService;
+    private final WorkOrderErrorTypeMapper workOrderErrorTypeMapper;
     private final SysConfigMapper configMapper;
     private final ReportMapper reportMapper;
     private final WorkOrderCheckImgMapper workOrderCheckImgMapper;
@@ -422,11 +425,12 @@
     @Transactional(rollbackFor = Exception.class)
     public Result batchAuditing(WorkOrderBatchAuditingForm form) {
         // 鏍规嵁鏁呴殰绫诲瀷鑾峰彇鍒楄〃
-        List<WorkOrder> list = new LambdaQueryChainWrapper<>(baseMapper)
-                .in(WorkOrder::getStatus, WorkOrderStatusEnum.YW_HANDLE.getValue())
-                .in(WorkOrder::getErrorType, form.getErrorTypes())
-                .select(WorkOrder::getId, WorkOrder::getUnitId, WorkOrder::getWorkOrderNo, WorkOrder::getSerialNumber)
-                .list();
+        List<WorkOrder> list = baseMapper.batchGetByError(form);
+//        List<WorkOrder> list = new LambdaQueryChainWrapper<>(baseMapper)
+//                .in(WorkOrder::getStatus, WorkOrderStatusEnum.YW_HANDLE.getValue())
+//                .in(WorkOrder::getErrorType, form.getErrorTypes())
+//                .select(WorkOrder::getId, WorkOrder::getUnitId, WorkOrder::getWorkOrderNo, WorkOrder::getSerialNumber)
+//                .list();
         if (list.isEmpty()) {
             return Result.error("娌℃湁宸ュ崟鍙互瀹℃牳");
         }
@@ -521,6 +525,9 @@
     public List<WorkOrderYwConditionRecordVO> selectYwConditionByYwId(String workOrderNo) {
         List<WorkOrderYwConditionRecordVO> ywConditionList = workOrderYwConditionRecordMapper.selectYwConditionByYwId(workOrderNo);
         ywConditionList.stream().forEach(item -> {
+            if(item.getUserId().equals(1)){
+                item.setUnitName("绠$悊鍛�");
+            }
             if (Objects.nonNull(item.getSysMsg()) && item.getSysMsg()) {
                 item.setUnitName("绯荤粺娑堟伅");
             }
@@ -595,7 +602,18 @@
         if (!CollectionUtils.isEmpty(page.getRecords())) {
             page.getRecords().stream().forEach(item -> {
                 if (StringUtils.hasText(item.getErrorType())) {
-                    item.setErrorTypeList(List.of(item.getErrorType().split(",")));
+                    List<String> errorTypeList = new ArrayList<>(List.of(item.getErrorType().split(",")));
+                    int index = errorTypeList.indexOf(query.getErrorTypeLabel());
+                    if (index != -1) {
+                        // 淇濆瓨瑕佺Щ鍔ㄧ殑鍏冪礌
+                        String firstOccurrence = errorTypeList.get(index);
+                        // 浠庡垪琛ㄤ腑绉婚櫎璇ュ厓绱狅紙绗竴娆″嚭鐜扮殑浣嶇疆锛�
+                        errorTypeList.remove(index);
+                        // 灏嗚鍏冪礌娣诲姞鍒板垪琛ㄧ殑棣栦綅
+                        errorTypeList.add(0, firstOccurrence);
+                    }
+                    // 璁剧疆鏇存柊鍚庣殑鍒楄〃
+                    item.setErrorTypeList(errorTypeList);
                 }
                 if (StringUtils.hasText(item.getImgListStr())) {
                     item.setImgList(List.of(item.getImgListStr().split(",")));
@@ -835,7 +853,7 @@
 
 
     @Override
-    public synchronized String getFrameImgByDevice(String deviceId, String channelId, String workOrderNo) throws Exception {
+    public String getFrameImgByDevice(String deviceId, String channelId, String workOrderNo) throws Exception {
         String url = String.format(this.rtspServer + "/api/play/start/img/%s/%s", deviceId, channelId);
         log.info("璁块棶璺緞{}",url);
         String result = HttpUtils.sendGet(url);
@@ -1037,7 +1055,9 @@
 
     @Override
     public List<WorkOrderVO> export (WorkOrderExportQuery query){
-        query.setUnitId(SecurityUtils.getUnitId());
+        if(query.getUnitId()==null) {
+            query.setUnitId(SecurityUtils.getUnitId());
+        }
         if (query.getStart() != null) query.setStart(query.getStart() + " 00:00:00");
         if (query.getEnd() != null) query.setEnd(query.getEnd() + " 23:59:59");
 
@@ -1119,5 +1139,102 @@
         insertWhiteList.stream().forEach(white -> workOrderWhiteMapper.insert(white));
     }
 
+    /**
+     * 妫�娴嬪伐鍗曟寜閽�
+     * @param workOrderNo
+     * @return
+     */
+    @Override
+    public Result checkImage(String workOrderNo,String serialNumber) {
+        // 鏌ュ嚭鍥芥爣璁惧锛屽氨涓�鏉℃暟鎹�
+        List<DeviceInfo> gbDevices = new LambdaQueryChainWrapper<>(deviceInfoMapper)
+                .orderByDesc(DeviceInfo::getUpdateTime)
+                .last("limit 1")
+                .list();
+        if (!CollectionUtils.isEmpty(gbDevices)) {
+            try {
+                String imgUrl = this.getFrameImgByDevice(gbDevices.get(0).getDeviceId(), serialNumber,workOrderNo);
+                if (StringUtils.hasText(imgUrl)) {
+                    WorkOrderCheckImg img = new WorkOrderCheckImg();
+                    img.setWorkOrderNo(workOrderNo);
+                    img.setImgUrl(imgUrl);
+                    img.setCreateTime(new Date());
+                    workOrderCheckImgMapper.insert(img);
+                }
+                return Result.ok().data(imgUrl);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return Result.ok();
+    }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Result batchDeleteWorkOrder(List<String> workOrderNos) {
+        if(!CollectionUtils.isEmpty(workOrderNos)) {
+            //鍒犻櫎宸ュ崟瀹℃牳璁板綍
+            workOrderAuditingRecordMapper.delete(new QueryWrapper<WorkOrderAuditingRecord>().in("work_order_no", workOrderNos));
+            //鍒犻櫎宸ュ崟鍥剧墖璁板綍
+            workOrderCheckImgMapper.delete(new QueryWrapper<WorkOrderCheckImg>().in("work_order_no", workOrderNos));
+            //鍒犻櫎宸ュ崟涓嬪彂璁板綍
+            workOrderDistributeRecordMapper.delete(new QueryWrapper<WorkOrderDistributeRecord>().in("work_order_no", workOrderNos));
+            //鍒犻櫎宸ュ崟鏁呴殰绫诲瀷
+            workOrderErrorTypeMapper.delete(new QueryWrapper<WorkOrderErrorType>().in("work_order_no", workOrderNos));
+            //鍒犻櫎宸ュ崟鎯呭喌璁板綍
+            workOrderYwConditionRecordMapper.delete(new QueryWrapper<WorkOrderYwConditionRecord>().in("work_order_no", workOrderNos));
+            //鍒犻櫎宸ュ崟
+            this.baseMapper.delete(new QueryWrapper<WorkOrder>().in("work_order_no", workOrderNos));
+        }
+        return Result.ok();
+    }
+
+    @Override
+    public Result errorAll() {
+        List<CascadeOption> results = new ArrayList<>();
+        CascadeOption video = new CascadeOption();
+        video.setLabel("瑙嗛");
+        video.setValue("VIDEO");
+        List<ErrorType> videoErr = ErrorType.getErrorTypesByCategory("VIDEO");
+        List<ErrorType> videoErr1 = ErrorType.getErrorTypesByCategory("COMMON");
+        videoErr.addAll(videoErr1);
+        List<CascadeOption> videoChildren = videoErr.stream().map(item -> CascadeOption.builder()
+                .value(item.getValue())
+                .label(item.getDesc())
+                .build()).collect(Collectors.toList());
+        video.setChildren(videoChildren);
+
+        CascadeOption car = new CascadeOption();
+        car.setLabel("杞﹁締");
+        car.setValue("CAR");
+        List<ErrorType> carErr = ErrorType.getErrorTypesByCategory("CAR");
+        List<ErrorType> carErr1 = ErrorType.getErrorTypesByCategory("COMMON");
+        List<ErrorType> carErr2 = ErrorType.getErrorTypesByCategory("CARORFACE");
+        carErr.addAll(carErr1);
+        carErr.addAll(carErr2);
+        List<CascadeOption> carChildren = carErr.stream().map(item -> CascadeOption.builder()
+                .value(item.getValue())
+                .label(item.getDesc())
+                .build()).collect(Collectors.toList());
+        car.setChildren(carChildren);
+
+        CascadeOption face = new CascadeOption();
+        face.setLabel("浜鸿劯");
+        face.setValue("FACE");
+        List<ErrorType> faceErr = ErrorType.getErrorTypesByCategory("FACE");
+        List<ErrorType> faceErr1 = ErrorType.getErrorTypesByCategory("COMMON");
+        List<ErrorType> faceErr2 = ErrorType.getErrorTypesByCategory("CARORFACE");
+        faceErr.addAll(faceErr1);
+        faceErr.addAll(faceErr2);
+        List<CascadeOption> faceChildren = faceErr.stream().map(item -> CascadeOption.builder()
+                .value(item.getValue())
+                .label(item.getDesc())
+                .build()).collect(Collectors.toList());
+        face.setChildren(faceChildren);
+
+        results.add(video);
+        results.add(car);
+        results.add(face);
+        return Result.ok().data(results);
+    }
 }
diff --git a/ycl-server/src/main/java/com/ycl/task/ContractTask.java b/ycl-server/src/main/java/com/ycl/task/ContractTask.java
index ca1e987..44702c0 100644
--- a/ycl-server/src/main/java/com/ycl/task/ContractTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/ContractTask.java
@@ -222,31 +222,31 @@
             }
             String errorType = workOrder.getErrorType();
             //瀛樺偍鏁呴殰 褰曞儚鎴栧浘鐗囪闂紓甯�
-            if (ErrorType.VIDEO_NONE.getValue().equals(errorType) || ErrorType.PIC_URLABNORMAL.getValue().equals(errorType)) {
-                if (!CollectionUtils.isEmpty(storeRuleMap)) {
-                    storeRuleMap.forEach((contractId, rules) -> {
-                        Integer unitId = rules.get(0).getUnitId();
-                        //鎵惧埌瀵瑰簲鐨勮鍒�
-                        if (workOrder.getUnitId().equals(unitId)) {
-                            //宸ュ崟涓嬪彂鏃堕棿
-                            Date createTime = workOrder.getDistributeTime();
-                            Date auditTime = workOrder.getAuditTime();
-                            double diffTime = (double) (auditTime.getTime() - createTime.getTime()) / (1000 * 60 * 60);
-                            //閫夋嫨鏃堕棿鑼冨洿鍐呯殑瑙勫垯
-                            for (CalculateRuleVO rule : rules) {
-                                if (checkRange(rule.getMin(), rule.getMax(), new BigDecimal(diffTime))) {
-                                    double deductScore = rule.getCalcFraction() * Math.ceil(diffTime);
-                                    ContractScore contractScore = getContractScore(rule, deductScore, Math.round(diffTime * 100) / 100 + "", Remark + "宸ュ崟缂栧彿涓�:" + workOrder.getWorkOrderNo() + "澶勭悊瓒呮椂锛屾墸闄�" + deductScore + "鍒�");
-                                    contractScoreList.add(contractScore);
-                                    workOrderList.add(workOrder.getWorkOrderNo());
-                                }
-                            }
-                        }
-                    });
-                }
-            }
+//            if (ErrorType.VIDEO_NONE.getValue().equals(errorType) || ErrorType.PIC_URLABNORMAL.getValue().equals(errorType)) {
+//                if (!CollectionUtils.isEmpty(storeRuleMap)) {
+//                    storeRuleMap.forEach((contractId, rules) -> {
+//                        Integer unitId = rules.get(0).getUnitId();
+//                        //鎵惧埌瀵瑰簲鐨勮鍒�
+//                        if (workOrder.getUnitId().equals(unitId)) {
+//                            //宸ュ崟涓嬪彂鏃堕棿
+//                            Date createTime = workOrder.getDistributeTime();
+//                            Date auditTime = workOrder.getAuditTime();
+//                            double diffTime = (double) (auditTime.getTime() - createTime.getTime()) / (1000 * 60 * 60);
+//                            //閫夋嫨鏃堕棿鑼冨洿鍐呯殑瑙勫垯
+//                            for (CalculateRuleVO rule : rules) {
+//                                if (checkRange(rule.getMin(), rule.getMax(), new BigDecimal(diffTime))) {
+//                                    double deductScore = rule.getCalcFraction() * Math.ceil(diffTime);
+//                                    ContractScore contractScore = getContractScore(rule, deductScore, Math.round(diffTime * 100) / 100 + "", Remark + "宸ュ崟缂栧彿涓�:" + workOrder.getWorkOrderNo() + "澶勭悊瓒呮椂锛屾墸闄�" + deductScore + "鍒�");
+//                                    contractScoreList.add(contractScore);
+//                                    workOrderList.add(workOrder.getWorkOrderNo());
+//                                }
+//                            }
+//                        }
+//                    });
+//                }
+//            }
             //鍓嶇鎰熺煡婧愭不鐞嗗伐浣滐紙鏃堕挓鍚屾瑙勫垯銆丱SD瑙勫垯銆佷竴鏈轰竴妗h鍒欙級
-            if (ErrorType.MONITOR_UNQUALIFY.getValue().equals(errorType) || ErrorType.OSD_ERROR.getValue().equals(errorType) || ErrorType.CLOCK_SKEW.getValue().equals(errorType)) {
+            if (ErrorType.POINT_INFO_ERROR.getValue().equals(errorType) || ErrorType.OSD_ERROR.getValue().equals(errorType) || ErrorType.CLOCK_SKEW.getValue().equals(errorType)) {
                 if (!CollectionUtils.isEmpty(monitorRuleMap)) {
                     monitorRuleMap.forEach((contractId, rules) -> {
                         Integer unitId = rules.get(0).getUnitId();
diff --git a/ycl-server/src/main/java/com/ycl/task/MonitorTask.java b/ycl-server/src/main/java/com/ycl/task/MonitorTask.java
index 1b3a5ac..91c191c 100644
--- a/ycl-server/src/main/java/com/ycl/task/MonitorTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/MonitorTask.java
@@ -122,6 +122,7 @@
                 if (osdCheckResult != null) {
                     monitor.setDeviceType(osdCheckResult.getDeviceBrand());
                 }
+
                 monitorList.add(monitor);
             }
         });
@@ -130,6 +131,8 @@
             //鑰佽澶囩姸鎬佹敼涓轰笉鍙備笌鑰冩牳
             if (!points.contains(key)) {
                 value.setExamineStatus(Boolean.FALSE);
+                //鍗曚綅璁剧疆涓虹┖
+                value.setUnitId(null);
                 ywPointList.add(value);
             }
         });
diff --git a/ycl-server/src/main/java/com/ycl/thread/OnlineCheckThread.java b/ycl-server/src/main/java/com/ycl/thread/OnlineCheckThread.java
index 38a7f89..c00ca77 100644
--- a/ycl-server/src/main/java/com/ycl/thread/OnlineCheckThread.java
+++ b/ycl-server/src/main/java/com/ycl/thread/OnlineCheckThread.java
@@ -63,8 +63,8 @@
     @Override
     public TMonitorResult call() {
         TMonitorResult result = checkPointUtil.check(monitor);
-        // 涓�澶╁唴鐩戞祴鍒扮绾�1娆′互涓婏紝鐢熸垚宸ュ崟
-        if (result.getOffLineCount() >= times) {
+        // 杩欐涓嶅湪绾夸笖涓�澶╁唴鐩戞祴鍒扮绾�2娆″強浠ヤ笂锛岀敓鎴愬伐鍗�
+        if (!result.getPingOnline() && result.getOffLineCount() >= times) {
             WorkOrder workOrder = new WorkOrder();
             workOrder.setSerialNumber(result.getNo());
             List<String> errList = new ArrayList<>();
diff --git a/ycl-server/src/main/java/com/ycl/utils/CheckPointUtil.java b/ycl-server/src/main/java/com/ycl/utils/CheckPointUtil.java
index a3fbf48..cc5fa17 100644
--- a/ycl-server/src/main/java/com/ycl/utils/CheckPointUtil.java
+++ b/ycl-server/src/main/java/com/ycl/utils/CheckPointUtil.java
@@ -71,6 +71,7 @@
         } else {
             map = new HashMap<>();
         }
+
         if (!monitor.getPingOnline()) {
             try {
                 reachable = InetAddress.getByName(monitor.getIp()).isReachable(5000);
@@ -81,6 +82,10 @@
         }
         if (!monitor.getPingOnline()) {
             offLineTimes++;
+            List<Date> offLineTime = monitor.getOffLineTime();
+            if(CollectionUtils.isEmpty(offLineTime)) offLineTime = new ArrayList<>();
+            offLineTime.add(new Date());
+            monitor.setOffLineTime(offLineTime);
         }
         map.put("checkTimes", checkTimes);
         map.put("offLineTimes", offLineTimes);
diff --git a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
index af04ecb..5e6b7dd 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -128,7 +128,7 @@
         left join (
         WITH cte AS (
         SELECT *,row_number() OVER(PARTITION BY serial_number ORDER BY create_time DESC) rn FROM t_work_order
-        WHERE deleted = 0 AND status == 'AUDITING_SUCCESS'
+        WHERE deleted = 0 AND status = 'AUDITING_SUCCESS'
         ) SELECT * FROM cte WHERE rn=1
         ) w on m.serial_number = w.serial_number and w.deleted = 0
         left join t_yw_unit u on p.unit_id = u.id and u.deleted = 0
diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
index d7da245..12caa67 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -58,8 +58,8 @@
         FROM
         t_work_order wo
         INNER JOIN t_monitor tm ON wo.serial_number = tm.serial_number
-        INNER JOIN t_work_order_error_type et ON wo.work_order_no = et.work_order_no
         INNER JOIN t_yw_unit u ON wo.unit_id = u.id AND u.deleted = 0
+        INNER JOIN t_work_order_error_type et ON wo.work_order_no = et.work_order_no
         INNER JOIN sys_dict_data da ON da.dict_value = et.error_name AND da.dict_type = 'error_type'
         LEFT JOIN t_work_order_check_img ci ON ci.work_order_no = wo.work_order_no
         LEFT JOIN t_yw_people p ON wo.yw_people_id = p.id AND p.deleted = 0
@@ -68,13 +68,12 @@
         <if test="query.unitId != null">
             AND wo.unit_id = #{query.unitId}
         </if>
-        <if test="query.errorTypeList != null and query.errorTypeList.size() > 0">
+        <if test="query.errorType != null and query.errorType != ''">
             AND (EXISTS (
             SELECT 1
             FROM t_work_order_error_type twoet
             WHERE twoet.work_order_no = wo.work_order_no
-            AND twoet.error_name in
-          <foreach collection="query.errorTypeList" open="(" separator="," close=")" item="errorType">#{errorType}</foreach>
+            AND twoet.error_name = #{query.errorType}
             ))
         </if>
         <if test="query.keyword != null and query.keyword != ''">
@@ -118,8 +117,8 @@
         t_work_order wo
         INNER JOIN t_monitor tm ON wo.serial_number = tm.serial_number
         INNER JOIN t_work_order_error_type et ON wo.work_order_no = et.work_order_no
-        INNER JOIN t_yw_unit u ON wo.unit_id = u.id AND u.deleted = 0
         INNER JOIN sys_dict_data da ON da.dict_value = et.error_name AND da.dict_type = 'error_type'
+        INNER JOIN t_yw_unit u ON wo.unit_id = u.id AND u.deleted = 0
         LEFT JOIN t_work_order_check_img ci ON ci.work_order_no = wo.work_order_no
         LEFT JOIN t_yw_people p ON wo.yw_people_id = p.id AND p.deleted = 0
         WHERE
@@ -136,13 +135,12 @@
         <if test="query.start != null and query.end != null">
             AND wo.create_time BETWEEN #{query.start} AND #{query.end}
         </if>
-        <if test="query.errorTypeList != null and query.errorTypeList.size() > 0">
+        <if test="query.errorType != null and query.errorType !='' ">
             AND (EXISTS (
             SELECT 1
             FROM t_work_order_error_type twoet
             WHERE twoet.work_order_no = wo.work_order_no
-            AND twoet.error_name in
-            <foreach collection="query.errorTypeList" open="(" separator="," close=")" item="errorType">#{errorType}</foreach>
+            AND twoet.error_name = #{query.errorType}
             ))
         </if>
         GROUP BY
@@ -170,9 +168,9 @@
         t_work_order wo
         INNER JOIN t_monitor tm ON wo.serial_number = tm.serial_number
         INNER JOIN t_yw_point yp ON yp.serial_number = wo.serial_number AND yp.deleted = 0
+        INNER JOIN t_yw_unit u ON wo.unit_id = u.id and u.deleted = 0
         INNER JOIN t_work_order_error_type et ON wo.work_order_no = et.work_order_no
         INNER JOIN sys_dict_data da ON da.dict_value = et.error_name AND da.dict_type = 'error_type'
-        INNER JOIN t_yw_unit u ON wo.unit_id = u.id and u.deleted = 0
         LEFT JOIN t_yw_people p ON wo.yw_people_id = p.id and p.deleted = 0
         LEFT JOIN t_work_order_distribute_record odr ON odr.work_order_no = wo.work_order_no AND odr.deleted = 0
         LEFT JOIN sys_user su ON su.user_id = odr.user_id
@@ -194,14 +192,12 @@
         <if test="query.start != null and query.end != null">
             AND wo.create_time BETWEEN #{query.start} AND #{query.end}
         </if>
-        <if test="query.errorTypeList != null and query.errorTypeList.size() > 0">
+        <if test="query.errorType != null and query.errorType != ''">
             AND (EXISTS (
             SELECT 1
             FROM t_work_order_error_type twoet
             WHERE twoet.work_order_no = wo.work_order_no
-            AND twoet.error_name in
-            <foreach collection="query.errorTypeList" open="(" separator="," close=")" item="errorType">#{errorType}
-            </foreach>
+            AND twoet.error_name = #{query.errorType}
             ))
         </if>
         GROUP BY
@@ -292,8 +288,8 @@
 
     <select id="workOrderTotal" resultType="com.ycl.platform.domain.vo.screen.WorkOrderTotalVO">
         SELECT
-            COUNT(*) AS totalNum,
-            COUNT(IF(w.status != 'AUDITING_SUCCESS' and w.status != 'WAIT_DISTRIBUTED', 1, NULL)) AS todoNum,
+            COUNT(IF(w.status != 'WAIT_DISTRIBUTE', 1, NULL)) AS totalNum,
+            COUNT(IF(w.status != 'AUDITING_SUCCESS' and w.status != 'WAIT_DISTRIBUTE', 1, NULL)) AS todoNum,
             COUNT(IF(w.status = 'AUDITING_SUCCESS', 1, NULL)) AS doneNum
         FROM t_work_order w
         LEFT JOIN t_yw_point p ON w.serial_number = p.serial_number AND p.deleted = 0
@@ -437,5 +433,22 @@
         p.yw_person_name
     </select>
 
-
+    <select id="batchGetByError" resultType="com.ycl.platform.domain.entity.WorkOrder">
+        select wo.id,wo.unit_id,wo.work_order_no,wo.serial_number
+        from t_work_order wo
+        <where>
+            wo.deleted = 0 and wo.status = 'YW_HANDLE'
+            <if test="form.errorTypes != null and form.errorTypes.size() > 0">
+                AND (EXISTS (
+                SELECT 1
+                FROM t_work_order_error_type twoet
+                WHERE twoet.work_order_no = wo.work_order_no
+                AND twoet.error_name in
+                <foreach collection="form.errorTypes" open="(" separator="," close=")" item="errorType">
+                    #{errorType}
+                </foreach>
+                ))
+            </if>
+        </where>
+    </select>
 </mapper>
diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderYwConditionRecordMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderYwConditionRecordMapper.xml
index 1697b67..992bf4f 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderYwConditionRecordMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderYwConditionRecordMapper.xml
@@ -11,10 +11,11 @@
         <result column="unit_name" property="unitName"/>
         <result column="sys_msg" property="sysMsg"/>
         <result column="yw_proofMaterials" property="ywProofMaterials"/>
+        <result column="user_id" property="userId"/>
     </resultMap>
 
     <select id="selectYwConditionByYwId" resultMap="BaseResultMap">
-        SELECT DISTINCT yw.id, yu.id as unit_id, yu.unit_name,yw.yw_condition, yw.yw_proofMaterials ,yw.create_time, yw.sys_msg, su.nick_name
+        SELECT DISTINCT yw.id, yu.id as unit_id, yu.unit_name,yw.yw_condition, yw.yw_proofMaterials ,yw.create_time, yw.sys_msg, su.nick_name,su.user_id
         FROM t_work_order_yw_condition_record yw
                  LEFT JOIN sys_user su ON yw.commit_user = su.user_id AND yw.deleted = 0
                  LEFT JOIN t_yw_unit yu ON su.unit_id = yu.id
diff --git a/ycl-server/src/main/resources/mapper/zgyw/YwUnitMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/YwUnitMapper.xml
index b88a779..6f84271 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/YwUnitMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/YwUnitMapper.xml
@@ -57,14 +57,12 @@
         <if test="query.start != null and query.end != null">
             AND wo.create_time BETWEEN #{query.start} AND #{query.end}
         </if>
-        <if test="query.errorTypeList != null and query.errorTypeList.size() > 0">
+        <if test="query.errorType != null and query.errorType !='' ">
             AND (EXISTS (
             SELECT 1
             FROM t_work_order_error_type twoet
             WHERE twoet.work_order_no = wo.work_order_no
-            AND twoet.error_name in
-            <foreach collection="query.errorTypeList" open="(" separator="," close=")" item="errorType">#{errorType}
-            </foreach>
+            AND twoet.error_name = #{query.errorType}
             ))
         </if>
     </select>

--
Gitblit v1.8.0