From 51f67136d3f6ff27a9f879b8c13bd308a7a733e1 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期四, 17 四月 2025 09:14:02 +0800
Subject: [PATCH] 删除工单,物理删除图片调整

---
 ycl-common/src/main/java/utils/file/FileUtils.java                               |   49 ++++++++++++++++++++----
 ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml                    |    5 +-
 ycl-server/src/main/java/com/ycl/task/DeleteWorkOrderImgTask.java                |   18 +++++----
 ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java |   27 ++++++++++---
 4 files changed, 74 insertions(+), 25 deletions(-)

diff --git a/ycl-common/src/main/java/utils/file/FileUtils.java b/ycl-common/src/main/java/utils/file/FileUtils.java
index 9aa3e7b..6cb97d1 100644
--- a/ycl-common/src/main/java/utils/file/FileUtils.java
+++ b/ycl-common/src/main/java/utils/file/FileUtils.java
@@ -3,6 +3,7 @@
 import config.PlatformConfig;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.ArrayUtils;
@@ -16,16 +17,17 @@
 
 /**
  * 鏂囦欢澶勭悊宸ュ叿绫�
- * 
+ *
  * @author ruoyi
  */
+@Slf4j
 public class FileUtils
 {
     public static String FILENAME_PATTERN = "[a-zA-Z0-9_\\-\\|\\.\\u4e00-\\u9fa5]+";
 
     /**
      * 杈撳嚭鎸囧畾鏂囦欢鐨刡yte鏁扮粍
-     * 
+     *
      * @param filePath 鏂囦欢璺緞
      * @param os 杈撳嚭娴�
      * @return
@@ -72,6 +74,35 @@
     }
 
     /**
+     * 浠庡瓧绗︿覆涓彁鍙栨棩鏈熼儴鍒�
+     *
+     * @param inputString 杈撳叆瀛楃涓�
+     * @return 鎻愬彇鐨勬棩鏈熷瓧绗︿覆锛屽鏋滄湭鎵惧埌鍒欒繑鍥� ""
+     */
+    public static String extractDateFromString(String inputString) {
+        // 浣跨敤姝e垯琛ㄨ揪寮忔潵鍖归厤鏃ユ湡鏍煎紡 YYYY-MM-DD
+        String datePattern = "(\\d{4}-\\d{2}-\\d{2})";
+        java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(datePattern);
+        java.util.regex.Matcher matcher = pattern.matcher(inputString);
+        if (matcher.find()) {
+            return matcher.group(1);
+        }
+        return "";
+    }
+    public static String getImgName(String url) {
+
+        // 鎵惧埌鏈�鍚庝竴涓枩鏉犵殑浣嶇疆
+        int lastSlashIndex = url.lastIndexOf('/');
+        if(lastSlashIndex == -1){
+            return "";
+        }
+        // 鎻愬彇浠庢渶鍚庝竴涓枩鏉犱箣鍚庣殑閮ㄥ垎
+        return url.substring(lastSlashIndex + 1);
+    }
+
+
+
+    /**
      * 鍐欐暟鎹埌鏂囦欢涓�
      *
      * @param data 鏁版嵁
@@ -100,7 +131,7 @@
 
     /**
      * 鍒犻櫎鏂囦欢
-     * 
+     *
      * @param filePath 鏂囦欢
      * @return
      */
@@ -118,7 +149,7 @@
 
     /**
      * 鏂囦欢鍚嶇О楠岃瘉
-     * 
+     *
      * @param filename 鏂囦欢鍚嶇О
      * @return true 姝e父 false 闈炴硶
      */
@@ -129,7 +160,7 @@
 
     /**
      * 妫�鏌ユ枃浠舵槸鍚﹀彲涓嬭浇
-     * 
+     *
      * @param resource 闇�瑕佷笅杞界殑鏂囦欢
      * @return true 姝e父 false 闈炴硶
      */
@@ -153,7 +184,7 @@
 
     /**
      * 涓嬭浇鏂囦欢鍚嶉噸鏂扮紪鐮�
-     * 
+     *
      * @param request 璇锋眰瀵硅薄
      * @param fileName 鏂囦欢鍚�
      * @return 缂栫爜鍚庣殑鏂囦欢鍚�
@@ -223,7 +254,7 @@
 
     /**
      * 鑾峰彇鍥惧儚鍚庣紑
-     * 
+     *
      * @param photoByte 鍥惧儚鏁版嵁
      * @return 鍚庣紑鍚�
      */
@@ -252,7 +283,7 @@
 
     /**
      * 鑾峰彇鏂囦欢鍚嶇О /profile/upload/2022/04/16/ruoyi.png -- ruoyi.png
-     * 
+     *
      * @param fileName 璺緞鍚嶇О
      * @return 娌℃湁鏂囦欢璺緞鐨勫悕绉�
      */
@@ -270,7 +301,7 @@
 
     /**
      * 鑾峰彇涓嶅甫鍚庣紑鏂囦欢鍚嶇О /profile/upload/2022/04/16/ruoyi.png -- ruoyi
-     * 
+     *
      * @param fileName 璺緞鍚嶇О
      * @return 娌℃湁鏂囦欢璺緞鍜屽悗缂�鐨勫悕绉�
      */
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 4a39cdf..80dd2b3 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
@@ -622,8 +622,10 @@
                 List<String> imgList = workOrderList.subList(4,workOrderList.size()).stream().map(WorkOrderCheckImg::getImgUrl).collect(Collectors.toList());
                 List<Integer> idList = workOrderList.subList(4, workOrderList.size()).stream().map(WorkOrderCheckImg::getId).collect(Collectors.toList());
                 //鍒犻櫎鐓х墖 锛屽苟涓旂墿鐞嗗垹闄ゆ湇鍔″櫒鍐呭搴旂収鐗囩殑鍚嶅瓧
+
+//                /profile/2024-11-18_1d8e6d37-a4d0-4bba-8473-ff4e50eda83d.png
                 for (String filePath: imgList){
-                    FileUtils.deleteFile( PlatformConfig.getUploadPath()+ filePath);
+                    delImgFormClient(filePath);
                 }
                 workOrderCheckImgMapper.deleteBatchIds(idList);
 
@@ -682,6 +684,23 @@
         return Result.error("鍒犻櫎澶辫触");
     }
 
+    /***
+     * 閫氳繃url鍒犻櫎鏈嶅姟鍣ㄥ唴鐨勫浘鐗�
+     * @param url
+     */
+    public void delImgFormClient(String url){
+        //鎻愬彇鏂囦欢鍚�  /profile/2024-11-17_79c02666-da1e-45ba-9f29-7523c848fa4a.png
+        // 杩欓儴鍒�2024-11-17_79c02666-da1e-45ba-9f29-7523c848fa4a.png
+        String imgPath = FileUtils.getImgName(url);
+        if (imgPath.isEmpty()){
+            log.error("url閿欒锛歿}",imgPath);
+        }else{
+            //鎻愬彇鏃ユ湡閮ㄥ垎 缁勮鐩綍 : /opt/zgyw/uploadPath  + /  + yyyy-MM-dd +
+            String pathName = PlatformConfig.getUploadPath() + "/" + FileUtils.extractDateFromString(url);
+            FileUtils.deleteFile(pathName+"/" + imgPath);
+        }
+    }
+
     /**
      * id鍒犻櫎
      *
@@ -703,9 +722,8 @@
         log.error("鍒犻櫎璺緞:{}",PlatformConfig.getUploadPath());
 
         for (String filePath: workOrderImg){
-            FileUtils.deleteFile( PlatformConfig.getUploadPath()+ filePath);
+            delImgFormClient(filePath);
         }
-        // /home/zgyw/uploadPath
 
         //鍒犻櫎宸ュ崟鍥剧墖璁板綍
         workOrderCheckImgMapper.delete(new QueryWrapper<WorkOrderCheckImg>().eq("work_order_no", workOrderNo));
@@ -715,9 +733,6 @@
         workOrderErrorTypeMapper.delete(new QueryWrapper<WorkOrderErrorType>().eq("work_order_no", workOrderNo));
         //鍒犻櫎宸ュ崟鎯呭喌璁板綍
         workOrderYwConditionRecordMapper.delete(new QueryWrapper<WorkOrderYwConditionRecord>().eq("work_order_no", workOrderNo));
-
-
-
 
         if (baseMapper.deleteById(id) > 0) {
             return Result.ok("鍒犻櫎鎴愬姛");
diff --git a/ycl-server/src/main/java/com/ycl/task/DeleteWorkOrderImgTask.java b/ycl-server/src/main/java/com/ycl/task/DeleteWorkOrderImgTask.java
index 0c6d853..4eceead 100644
--- a/ycl-server/src/main/java/com/ycl/task/DeleteWorkOrderImgTask.java
+++ b/ycl-server/src/main/java/com/ycl/task/DeleteWorkOrderImgTask.java
@@ -19,25 +19,27 @@
     private final ISysConfigService configService;
 
     public void delWorkOrderImg() {
-        String basePath = PlatformConfig.getUploadPath() + "/profile";
+        String basePath = PlatformConfig.getUploadPath();
         log.info("寮�濮嬪垹闄ゅ伐鍗曠収鐗�");
-        log.info("鍒犻櫎璺緞锛歿}",basePath);
+        log.info("鍒犻櫎涓昏矾寰勶細{}",basePath); //  /opt/zgyw/uploadPath
         //瀛楀吀鏌ヨ闇�瑕佸垹闄ゆ椂闂村湪鍑犱釜鏈堝墠鐨勭収鐗�
         String dictLabel = configService.selectConfigByKey("del.workorder.time");
         log.info("娓呯悊鏃堕棿:{}鏈�",dictLabel);
         if (StringUtils.isEmpty(dictLabel)) {
-            log.error("鏈缃垹闄ゆ椂闂磋寖鍥�");
-            return;
+            log.info("鏈缃垹闄ゆ椂闂磋寖鍥�");;
+            dictLabel = "6";
         }
+        log.info("榛樿6鏈堝墠鐨勫浘鐗�");
         //鑾峰緱褰撳墠鏃堕棿
         LocalDate nowDate = LocalDate.now();
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         //璁$畻 锛� 鏈堝墠鐨勬棩鏈�  锛� 鐢ㄥ瓧鍏稿瓨鍏ョ郴缁熶腑
-        LocalDate sixMonthAgo = nowDate.minusMonths(Long.parseLong("6"));
+        LocalDate sixMonthAgo = nowDate.minusMonths(Long.parseLong(dictLabel));
         //璇诲彇鏈嶅姟鍣ㄤ腑鐨勬枃浠跺す鍚�
         File directory = new File(basePath);
         //妫�娴嬭矾寰勫瓨鍦� 骞朵笖鏄竴涓洰褰�
         if (directory.exists() && directory.isDirectory()) {
+            //鑾峰緱 鐩綍闆嗗悎
             File[] files = directory.listFiles();
             if (files != null) {
                 for (File file : files) {
@@ -64,12 +66,12 @@
         File[] allContents = directoryToBeDeleted.listFiles();
         if (allContents != null) {
             for (File file : allContents) {
-//                deleteDirectory(file);
+                deleteDirectory(file);
                 log.error("鎵撳嵃鏂囦欢鍚�:{}",file.getName());
             }
         }
-//        directoryToBeDeleted.delete();
-        log.error("鎵撳嵃鐩綍鍚�:{}", directoryToBeDeleted.getName());
+        directoryToBeDeleted.delete();
+        log.error("鎵撳嵃鏂囦欢鍚�:{}", directoryToBeDeleted.getName());
     }
 
 
diff --git a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
index 980797d..6c43d09 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -437,6 +437,7 @@
             wo.id,
             wo.work_order_no,
             wo.serial_number,
+            dr.create_time as distributeTime,
             m.name as source,
             yw.unit_name,
             yw.unit_contact,
@@ -446,9 +447,9 @@
             wo.status
         FROM
             t_work_order wo
+                LEFT JOIN t_work_order_distribute_record dr ON wo.work_order_no = dr.work_order_no AND dr.deleted = 0
                 INNER JOIN t_monitor m ON m.serial_number = wo.serial_number
-                LEFT JOIN t_yw_unit yw ON yw.id = wo.unit_id AND yw.deleted = 0
-        where wo.work_order_no = #{workOrderNo}
+                LEFT JOIN t_yw_unit yw ON yw.id = wo.unit_id AND yw.deleted = 0 Where wo.work_order_no = #{workOrderNo}
     </select>
 
     <select id="getRecoveryInfo" resultType="com.ycl.platform.domain.vo.WorkOrderVO">

--
Gitblit v1.8.0