From ecc7b295a495014621de2cd9601659f5cdf26fbe Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期四, 22 八月 2024 18:26:21 +0800
Subject: [PATCH] 点位导入优化

---
 ycl-server/src/main/resources/application.yml                                    |    2 
 ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml                      |   13 ++++--
 ycl-server/src/main/resources/application-prod.yml                               |    2 
 ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java              |    4 +-
 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java |   39 ++++++++++++++-----
 ycl-server/src/main/resources/application-dev.yml                                |    2 
 ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java   |   39 +++----------------
 7 files changed, 48 insertions(+), 53 deletions(-)

diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java
index 3f8d0ba..a0b9e9d 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java
@@ -55,7 +55,7 @@
     /**
      * 鏇存柊鐐逛綅淇℃伅
      *
-     * @param point
+     * @param pointList
      */
-    int updatePoint(@Param("point") YwPoint point);
+    int updatePoint(List<YwPoint> pointList);
 }
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 6e8b5db..1231123 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
@@ -28,7 +28,10 @@
 import com.ycl.platform.wvp.WVPResult;
 import com.ycl.system.Result;
 import com.ycl.system.domain.SysConfig;
+import com.ycl.system.entity.SysDictData;
 import com.ycl.system.mapper.SysConfigMapper;
+import com.ycl.system.mapper.SysDictDataMapper;
+import com.ycl.system.mapper.SysDictTypeMapper;
 import com.ycl.system.model.LoginUser;
 import com.ycl.system.page.PageUtil;
 import com.ycl.utils.DateUtils;
@@ -84,6 +87,7 @@
     private final SysConfigMapper configMapper;
     private final ServerConfig serverConfig;
     private final ReportMapper reportMapper;
+    private final SysDictDataMapper dictDataMapper;
 
     @Value("${rtsp.server:http://127.0.0.1:7788}")
     private String rtspServer;
@@ -118,16 +122,31 @@
         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 (workOrder.getErrorType().equals(errorType)) {
+                if (errorNameList.contains(errorType)) {
                     // 濡傛灉锛屽浗鏍囩爜銆佹晠闅滅被鍨嬮兘涓�鏍凤紝鍒欒烦杩囦笉澶勭悊
                     continue;
                 } else {
-                    // 閿欒绫诲瀷涓嶄竴鏍凤紝灏辨洿鏂伴敊璇被鍨嬶紝骞朵笖閲嶇疆宸ュ崟鐘舵�佷负寰呭鐞�
-                    errorType = errorType + "," + workOrder.getErrorType();
-                    databaseWorkOrder.setErrorType(errorType);
-                    databaseWorkOrder.setStatus(WorkOrderStatusEnum.DISTRIBUTED);
+                    // 閿欒绫诲瀷涓嶄竴鏍凤紝灏辨柊澧炰竴涓敊璇被鍨嬶紝骞朵笖閲嶇疆宸ュ崟鐘舵�佷负寰呭鐞�
+                    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();
+                    }
+                    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);
                     updateNum++;
@@ -142,11 +161,11 @@
             } else {
                 workOrder.setCreateTime(new Date());
                 workOrder.setUpdateTime(new Date());
-                // 濡傛灉鎶ュ杩囷紝浣跨敤鏈�鏂版姤澶囩殑閿欒绫诲瀷
-                Report report = reportMapper.checkPointReported(workOrder.getSerialNumber());
-                if (Objects.nonNull(report)) {
-                    workOrder.setErrorType(report.getErrorType());
-                }
+//                // 濡傛灉鎶ュ杩囷紝浣跨敤鏈�鏂版姤澶囩殑閿欒绫诲瀷
+//                Report report = reportMapper.checkPointReported(workOrder.getSerialNumber());
+//                if (Objects.nonNull(report)) {
+//                    workOrder.setErrorType(report.getErrorType());
+//                }
                 waitAddList.add(workOrder);
             }
         }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java
index d5c04a7..0cdb6d0 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java
@@ -287,17 +287,6 @@
             return point;
         }).collect(Collectors.toList());
         this.waitAllFinishAndGetResult(pointList);
-//        for (PointExport pointExport : dataList) {
-//            YwPoint point = new YwPoint();
-//            point.setImportantCommandImageTag("鏄�".equals(pointExport.getImportantCommandImageTagString()));
-//            point.setProvinceTag("鏄�".equals(pointExport.getProvinceTagString()));
-//            point.setUnitId(Long.valueOf(unitId));
-//            point.setStartTime(startTime);
-//            point.setEndTime(endTime);
-//            point.setPointName(pointExport.getPointName());
-//            point.setSerialNumber(pointExport.getSerialNumber());
-//            this.baseMapper.updatePoint(point);
-//        }
     }
 
     public void waitAllFinishAndGetResult(List<YwPoint> dataList) throws InterruptedException, ExecutionException {
@@ -306,34 +295,18 @@
         int start = 0;
         Date startTime = new Date();
         while (true) {
-            if (dataList.size() < start + 50) {
+            if (dataList.size() < start + 100) {
                 List<YwPoint> list = dataList.subList(start, dataList.size() - 1);
-                Callable<Boolean> callable = new PointImportCallable(list, this.baseMapper);
-                FutureTask<Boolean> futureTask = new FutureTask(callable);
-                Thread thread = new Thread(futureTask);
-                thread.start();
-                // 涓嶈兘鐩存帴璋冪敤Future鐨刧et鏂规硶锛屽惁鍒欏氨鍙樻垚涓茶鎵ц浜嗭紝澶卞幓澶氱嚎绋嬫剰涔�
-                resultList.add(futureTask);
+                this.baseMapper.updatePoint(list);
                 break;
             } else {
-                List<YwPoint> list = dataList.subList(start, start + 50);
-                Callable<Boolean> callable = new PointImportCallable(list, this.baseMapper);
-                FutureTask<Boolean> futureTask = new FutureTask(callable);
-                Thread thread = new Thread(futureTask);
-                thread.start();
-                // 涓嶈兘鐩存帴璋冪敤Future鐨刧et鏂规硶锛屽惁鍒欏氨鍙樻垚涓茶鎵ц浜嗭紝澶卞幓澶氱嚎绋嬫剰涔�
-                resultList.add(futureTask);
-                start += 50;
+                List<YwPoint> list = dataList.subList(start, start + 100);
+                this.baseMapper.updatePoint(list);
+                start += 100;
             }
         }
-        for (FutureTask<Boolean> futureTask : resultList) {
-            data.add(futureTask.get());
-        }
         Date endTime = new Date();
-        log.error("鎬诲叡鑰楁椂锛�" + (endTime.getTime() - startTime.getTime()) / 1000);
-        if (data.stream().allMatch(item -> item == Boolean.TRUE)) {
-            System.out.println("鎵ц鎴愬姛");
-        }
+        log.error("鎬诲叡鑰楁椂锛�" + (endTime.getTime() - startTime.getTime()));
     }
 
 }
diff --git a/ycl-server/src/main/resources/application-dev.yml b/ycl-server/src/main/resources/application-dev.yml
index a2a11c7..7f977fe 100644
--- a/ycl-server/src/main/resources/application-dev.yml
+++ b/ycl-server/src/main/resources/application-dev.yml
@@ -36,7 +36,7 @@
 spring:
   # 鏁版嵁婧愰厤缃�
   datasource:
-    url: jdbc:mysql://101.35.247.188/zgyw?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true
+    url: jdbc:mysql://101.35.247.188/zgyw?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowMultiQueries=true
     username: root
     password: ycl@202466
     type: com.alibaba.druid.pool.DruidDataSource
diff --git a/ycl-server/src/main/resources/application-prod.yml b/ycl-server/src/main/resources/application-prod.yml
index e154de5..690ddd5 100644
--- a/ycl-server/src/main/resources/application-prod.yml
+++ b/ycl-server/src/main/resources/application-prod.yml
@@ -36,7 +36,7 @@
 spring:
   # 鏁版嵁婧愰厤缃�
   datasource:
-    url: jdbc:mysql://51.92.65.72:3306/zgyw?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true
+    url: jdbc:mysql://51.92.65.72:3306/zgyw?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowMultiQueries=true
     username: root
     password: zgyw@202488
     type: com.alibaba.druid.pool.DruidDataSource
diff --git a/ycl-server/src/main/resources/application.yml b/ycl-server/src/main/resources/application.yml
index 7473044..245f275 100644
--- a/ycl-server/src/main/resources/application.yml
+++ b/ycl-server/src/main/resources/application.yml
@@ -68,7 +68,7 @@
 logging:
   level:
     org.springframework: warn
-    com.ycl : debug
+    com.ycl : error
 
 # security閰嶇疆
 security:
diff --git a/ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml
index 0702c36..3578040 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml
@@ -109,15 +109,18 @@
     </delete>
 
     <update id="updatePoint">
-        update t_yw_point
-        <set>
-            <if test="point.pointName != null and point.pointName != ''">point_name = #{point.pointName},</if>
+        <foreach collection="pointList" separator=";" item="point">
+            UPDATE t_yw_point
+            SET
+            <if test="point.pointName != null and point.pointName != ''">
+                point_name = #{point.pointName},
+            </if>
             unit_id = #{point.unitId},
             start_time = #{point.startTime},
             end_time = #{point.endTime},
             province_tag = #{point.provinceTag},
-            important_command_image_tag = #{point.importantCommandImageTag},
-        </set>
+            important_command_image_tag = #{point.importantCommandImageTag}
             WHERE serial_number = #{point.serialNumber}
+        </foreach>
     </update>
 </mapper>

--
Gitblit v1.8.0