From f59d7f75a997872935d55288d37cd80b3acb6dff Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期二, 21 一月 2025 10:33:05 +0800
Subject: [PATCH] 批量审核离线工单修改pingonline

---
 ycl-server/src/main/resources/mapper/zgyw/WorkOrderErrorTypeMapper.xml           |   13 ++++--
 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java |   42 ++++++++++++++++----
 ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderErrorTypeMapper.java   |    9 ++--
 3 files changed, 46 insertions(+), 18 deletions(-)

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 16efe99..01b10e5 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,7 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ycl.platform.domain.entity.WorkOrderErrorType;
+import com.ycl.platform.domain.vo.WorkOrderVO;
 import com.ycl.system.entity.SysDictData;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.security.core.parameters.P;
@@ -87,12 +88,12 @@
      * @return
      */
     int addMany(@Param("errorTypeList") List<WorkOrderErrorType> errorTypeList);
-
+    List<SysDictData> getErrorList(@Param("workOrderNo") String workOrderNo);
     /**
-     * 鑾峰彇鏁呴殰绫诲瀷锛岃繛琛ㄥ瓧鍏�
+     * 鑾峰彇澶氫釜宸ュ崟鏁呴殰绫诲瀷
      *
-     * @param workOrderNo
+     * @param workOrderNos
      * @return
      */
-    List<SysDictData> getErrorList(@Param("workOrderNo") String workOrderNo);
+    List<WorkOrderVO> getErrorListByNumbers(@Param("workOrderNos") List<String> workOrderNos);
 }
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 c8aaf89..45b302c 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
@@ -35,6 +35,7 @@
 import com.ycl.utils.http.HttpUtils;
 import com.ycl.utils.redis.RedisCache;
 import com.ycl.utils.uuid.IdUtils;
+import constant.ApiConstants;
 import constant.Constants;
 import constant.RedisConstant;
 import enumeration.ErrorType;
@@ -471,18 +472,22 @@
                 UrgentLevelEnum.WARNING,
                 workOrder.getWorkOrderNo());
         notifyService.save(notify);
-        List<String> errorList = workOrderErrorTypeMapper.getErrorList(workOrder.getWorkOrderNo())
-                .stream().map(SysDictData::getDictValue).collect(Collectors.toList());
+        List<WorkOrderVO> workOrderVOS = workOrderErrorTypeMapper.getErrorListByNumbers(Arrays.asList(workOrder.getWorkOrderNo()));
+
         // 鍚屾鐐逛綅鐘舵��
         if (form.getAuditingResult() == WorkOrderStatusEnum.AUDITING_SUCCESS) {
             ywPointService.updateRecovery(Collections.singletonList(workOrder.getSerialNumber()), 0);
             //濡傛灉宸ュ崟涓虹绾垮伐鍗曢偅涔堜慨鏀圭偣浣峱ingOnline涓哄湪绾�
-            if(!CollectionUtils.isEmpty(errorList) && errorList.contains(ErrorType.DEVICE_OFFLINE.getValue())){
-                new LambdaUpdateChainWrapper<>(ywPointMapper)
-                        .eq(YwPoint::getSerialNumber, workOrder.getSerialNumber())
-                        .set(YwPoint::getUpdateTime, new Date())
-                        .set(YwPoint::getPingOnline, 1)
-                        .update();
+            if (!CollectionUtils.isEmpty(workOrderVOS)) {
+                List<String> ips = new ArrayList<>();
+                for (WorkOrderVO workOrderVO : workOrderVOS) {
+                    if(ErrorType.DEVICE_OFFLINE.getValue().equals(workOrderVO.getErrorType())){
+                        ips.add(workOrderVO.getIp());
+                    }
+                }
+                if(!CollectionUtils.isEmpty(ips)) {
+                    monitorMapper.batchUpdateOnline(ips, new Date(), ApiConstants.UY_OnlineSite_Online);
+                }
             }
         }
 
@@ -525,11 +530,30 @@
                     workOrder.getWorkOrderNo());
             notifies.add(notify);
         }
+        notifyService.saveBatch(notifies);
         // 鍚屾鐐逛綅鐘舵��
         if (form.getAuditingResult() == WorkOrderStatusEnum.AUDITING_SUCCESS) {
             ywPointService.updateRecovery(serialNumbers, 0);
+            //绛涢�夊嚭绂荤嚎宸ュ崟ip骞朵慨鏀瑰湪绾跨姸鎬�
+            if (!CollectionUtils.isEmpty(serialNumbers)) {
+                Map<String, List<String>> errorTypes = workOrderErrorTypeMapper.getErrorListByNumbers(serialNumbers).stream().collect(Collectors.groupingBy(
+                        WorkOrderVO::getIp,
+                        Collectors.mapping(
+                                WorkOrderVO::getErrorType,
+                                Collectors.toList()
+                        )
+                ));
+                List<String> ips = new ArrayList<>();
+                errorTypes.forEach((key, value) -> {
+                    if (!CollectionUtils.isEmpty(value) && value.contains(ErrorType.DEVICE_OFFLINE.getValue())) {
+                        ips.add(key);
+                    }
+                });
+                if(!CollectionUtils.isEmpty(ips)) {
+                    monitorMapper.batchUpdateOnline(ips, new Date(), ApiConstants.UY_OnlineSite_Online);
+                }
+            }
         }
-        notifyService.saveBatch(notifies);
         return Result.ok("鎿嶄綔鎴愬姛");
     }
 
diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderErrorTypeMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderErrorTypeMapper.xml
index d2bf388..78a1e49 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderErrorTypeMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderErrorTypeMapper.xml
@@ -97,12 +97,15 @@
         </foreach>
     </insert>
 
-    <select id="getErrorList" resultType="com.ycl.system.entity.SysDictData">
-        SELECT da.dict_value, da.dict_label
+
+    <select id="getErrorListByNumbers" resultMap="com.ycl.platform.domain.vo.WorkOrderVO">
+        SELECT oer.serial_number,oer.ip,da.dict_value as errorType
         FROM t_work_order_error_type oer
-            INNER JOIN sys_dict_data da ON oer.error_name = da.dict_value
-        WHERE oer.work_order_no = #{workOrderNo}
+        INNER JOIN sys_dict_data da ON oer.error_name = da.dict_value
+        WHERE oer.work_order_no in
+        <foreach collection="workOrderNos" separator="," open="(" close=")" item="workOrderNo">
+            #{workOrderNo}
+        </foreach>
         ORDER BY oer.create_time
     </select>
-
 </mapper>

--
Gitblit v1.8.0