From 2c86a8bd60deed0dd0e044bad6fb83f75d19a332 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期日, 26 十月 2025 15:05:50 +0800
Subject: [PATCH] Merge branch 'feature-task'

---
 ruoyi-system/src/main/java/com/ruoyi/system/utils/TaskCodeGenerator.java |   70 +++++++++++++++++++++++++++++++++++
 1 files changed, 70 insertions(+), 0 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/utils/TaskCodeGenerator.java b/ruoyi-system/src/main/java/com/ruoyi/system/utils/TaskCodeGenerator.java
new file mode 100644
index 0000000..22c5c72
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/utils/TaskCodeGenerator.java
@@ -0,0 +1,70 @@
+package com.ruoyi.system.utils;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.system.mapper.SysTaskMapper;
+
+/**
+ * 浠诲姟缂栧彿鐢熸垚鍣�
+ * 
+ * @author ruoyi
+ */
+@Component
+public class TaskCodeGenerator {
+    
+    @Autowired
+    private SysTaskMapper sysTaskMapper;
+    
+    /**
+     * 鐢熸垚浠诲姟缂栧彿
+     * 鏍煎紡锛歍ASK + YYYYMMDD + 4浣嶅簭鍙�
+     * 
+     * @return 浠诲姟缂栧彿
+     */
+    public String generateTaskCode() {
+        String dateStr = DateUtils.dateTimeNow("yyyyMMdd");
+        return generateTaskCode(dateStr);
+    }
+    
+    /**
+     * 鏍规嵁鏃ユ湡鐢熸垚浠诲姟缂栧彿
+     * 
+     * @param date 鏃ユ湡
+     * @return 浠诲姟缂栧彿
+     */
+    public String generateTaskCode(Date date) {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+        String dateStr = sdf.format(date);
+        return generateTaskCode(dateStr);
+    }
+    
+    /**
+     * 鏍规嵁鏃ユ湡瀛楃涓茬敓鎴愪换鍔$紪鍙�
+     * 
+     * @param dateStr 鏃ユ湡瀛楃涓诧紙鏍煎紡锛歽yyyMMdd锛�
+     * @return 浠诲姟缂栧彿
+     */
+    private String generateTaskCode(String dateStr) {
+        String datePrefix = "TASK" + dateStr;
+        
+        // 鏌ヨ褰撴棩鏈�澶х紪鍙�
+        String maxTaskCode = sysTaskMapper.selectMaxTaskCodeByDatePrefix(datePrefix);
+        
+        int sequence = 1;
+        if (maxTaskCode != null && maxTaskCode.startsWith(datePrefix)) {
+            // 鎻愬彇搴忓彿閮ㄥ垎
+            String sequenceStr = maxTaskCode.substring(datePrefix.length());
+            try {
+                sequence = Integer.parseInt(sequenceStr) + 1;
+            } catch (NumberFormatException e) {
+                sequence = 1;
+            }
+        }
+        
+        // 鏍煎紡鍖栦负4浣嶅簭鍙�
+        return datePrefix + String.format("%04d", sequence);
+    }
+}

--
Gitblit v1.9.1