From d5bbd17a1428811da046ec3be3c0cc943a7ae059 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 17 六月 2026 15:13:20 +0800
Subject: [PATCH] ai数据自动生成

---
 src/main/java/com/ruoyi/mock/prompt/MockDataPrompt.java |  229 ++++++++++++++++++++++++++++++--------------------------
 1 files changed, 122 insertions(+), 107 deletions(-)

diff --git a/src/main/java/com/ruoyi/mock/prompt/MockDataPrompt.java b/src/main/java/com/ruoyi/mock/prompt/MockDataPrompt.java
index 6e81263..2743445 100644
--- a/src/main/java/com/ruoyi/mock/prompt/MockDataPrompt.java
+++ b/src/main/java/com/ruoyi/mock/prompt/MockDataPrompt.java
@@ -1,6 +1,9 @@
 package com.ruoyi.mock.prompt;
 
+import com.ruoyi.project.system.domain.SysUser;
+
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -12,18 +15,17 @@
 
     public static String buildSystemPrompt() {
         return """
-            浣犳槸涓�涓紒涓欵RP绯荤粺鐨勬暟鎹ā鎷熶笓瀹躲�備綘闇�瑕佹牴鎹敤鎴锋彁渚涚殑琛屼笟銆佹暟閲忋�佹椂闂磋寖鍥寸瓑淇℃伅锛�
-            鐢熸垚绗﹀悎涓氬姟閫昏緫鐨勬ā鎷熸暟鎹��
+            浣犳槸涓�涓紒涓欵RP绯荤粺鐨勬暟鎹ā鎷熶笓瀹躲��
 
-            瑕佹眰:
+            鏍稿績瑙勫垯锛堝繀椤讳弗鏍奸伒瀹堬級锛�
             1. 杈撳嚭蹇呴』鏄函JSON鏁扮粍锛屼笉瑕佺敤markdown浠g爜鍧楀寘瑁癸紝涓嶈鏈変换浣曞叾浠栨枃瀛�
             2. 姣忎釜JSON瀵硅薄蹇呴』鍖呭惈 "entity" 瀛楁锛屽�间负瀹炰綋绫诲瀷鍚�
-            3. 鏁版嵁鍐呭瑕佺鍚堟寚瀹氳涓氱殑鐗瑰緛锛堝叕鍙稿悕绉般�佷骇鍝佸悕绉般�佽仈绯讳汉绛夎鍍忚琛屼笟鐨勶級
-            4. 鎵�鏈夋棩鏈熷瓧娈靛繀椤诲湪鎸囧畾鐨勬椂闂磋寖鍥村唴锛屼弗绂佷娇鐢ㄨ寖鍥翠箣澶栫殑鏃ユ湡
-            5. 閲戦銆佹暟閲忕瓑鏁板�煎瓧娈佃鍚堢悊
-            6. 鍚屼竴妯″潡鍐呯殑瀹炰綋涔嬮棿瑕佹湁寮曠敤鍏崇郴锛堝閿�鍞彴璐﹀紩鐢ㄥ鎴峰悕绉帮級
-            7. 鎵�鏈夊瓧绗︿覆瀛楁涓嶈浣跨敤emoji鎴栫壒娈妘nicode瀛楃
-            8. 鍚堝悓缂栧彿銆佹壒鍙风瓑鍖呭惈鏃ユ湡鐨勫瓧娈碉紝蹇呴』浣跨敤鏃堕棿鑼冨洿鍐呯殑鏃ユ湡锛屼笉瑕佷娇鐢ㄧず渚嬩腑鐨勫叿浣撴棩鏈�
+            3. 鏁版嵁鍐呭瑕佺鍚堟寚瀹氳涓氱殑鐗瑰緛
+            4. 閲戦銆佹暟閲忕瓑鏁板�煎瓧娈佃鍚堢悊
+            5. 鍚屼竴妯″潡鍐呯殑瀹炰綋涔嬮棿瑕佹湁寮曠敤鍏崇郴
+            6. 涓嶈浣跨敤emoji鎴栫壒娈妘nicode瀛楃
+            7. 鏈�閲嶈锛氭棩鏈熷彧浠�"鎸囧畾鏃堕棿鑼冨洿"涓彇锛岀粷瀵逛笉瑕佺敤鍏朵粬骞翠唤锛�
+            8. 浜哄憳瀛楁锛堝entryPerson銆乻alesman绛夛級蹇呴』浠�"绯荤粺鐢ㄦ埛鍒楄〃"涓�夊彇锛屾牴鎹鑹插拰閮ㄩ棬鍖归厤瀵瑰簲妯″潡锛屼笉瑕佺紪閫犱汉鍚嶏紒
             """;
     }
 
@@ -31,29 +33,68 @@
                                            int countMin, int countMax,
                                            String dateStart, String dateEnd,
                                            String additionalInfo,
-                                           List<Long> productIds,
-                                           List<Long> productModelIds) {
+                                           Map<Long, String> productModelIdToCategory,
+                                           List<SysUser> systemUsers,
+                                           List<String> existingCustomerNames,
+                                           List<String> existingSupplierNames) {
         StringBuilder sb = new StringBuilder();
-        sb.append("璇蜂负浠ヤ笅琛屼笟鐢熸垚妯℃嫙ERP涓氬姟鏁版嵁:\n");
-        sb.append("- 琛屼笟: ").append(String.join("銆�", industries)).append("\n");
-        sb.append("- 鏁版嵁鏉℃暟: 姣忕瀹炰綋 ").append(countMin).append("-").append(countMax).append(" 鏉n");
-        sb.append("- 鏃堕棿鑼冨洿: ").append(dateStart).append(" ~ ").append(dateEnd).append("\n");
+        sb.append("鎸囧畾琛屼笟: ").append(String.join("銆�", industries)).append("\n");
+        sb.append("姣忕瀹炰綋鐢熸垚: ").append(countMin).append("-").append(countMax).append(" 鏉n");
+        sb.append("鎸囧畾鏃堕棿鑼冨洿: ").append(dateStart).append(" 鍒� ").append(dateEnd);
+        sb.append("锛堟墍鏈夋棩鏈熷瓧娈靛繀椤诲湪杩欎釜鑼冨洿鍐咃紒绂佹浣跨敤2023銆�2024銆�2025绛変换浣曡秴鍑鸿寖鍥寸殑骞翠唤锛侊級\n");
         if (additionalInfo != null && !additionalInfo.isBlank()) {
-            sb.append("- 琛ュ厖淇℃伅: ").append(additionalInfo).append("\n");
+            sb.append("琛ュ厖淇℃伅: ").append(additionalInfo).append("\n");
         }
         sb.append("\n");
 
-        sb.append("鍙敤鐨勪骇鍝両D鍒楄〃: ").append(productIds.stream().map(String::valueOf).collect(Collectors.joining(","))).append("\n");
-        sb.append("鍙敤鐨勪骇鍝佽鏍糏D鍒楄〃: ").append(productModelIds.stream().map(String::valueOf).collect(Collectors.joining(","))).append("\n");
-        sb.append("\n");
+        // 鎸夐《绾т骇鍝佸垎绫伙紙鎴愬搧/鍘熸潗鏂�/鍗婃垚鍝侊級鍒嗙粍鍒楀嚭浜у搧瑙勬牸
+        Map<String, List<Map.Entry<Long, String>>> grouped = productModelIdToCategory.entrySet().stream()
+                .collect(Collectors.groupingBy(
+                        e -> categorize(e.getValue()),
+                        java.util.LinkedHashMap::new,
+                        Collectors.toList()));
 
-        sb.append("闇�瑕佺敓鎴愮殑妯″潡: ").append(String.join("銆�", modules)).append("\n\n");
+        sb.append("=== 浜у搧瑙勬牸鍒楄〃 ===\n");
+        for (Map.Entry<String, List<Map.Entry<Long, String>>> entry : grouped.entrySet()) {
+            String label = entry.getKey();
+            List<Map.Entry<Long, String>> items = entry.getValue();
+            sb.append("銆�").append(label).append("銆�: ");
+            sb.append(items.stream()
+                    .map(e -> e.getKey() + "(" + e.getValue() + ")")
+                    .collect(Collectors.joining(", "))).append("\n");
+        }
+        sb.append("閿�鍞彴璐︾殑productData鍙兘閫夈�愭垚鍝佺被銆戣鏍硷紝閲囪喘鍙拌处鍙兘閫夈�愬師鏉愭枡绫汇�戣鏍笺�俓n\n");
+
+        // 绯荤粺鐢ㄦ埛鍒楄〃锛堝惈瑙掕壊鍜岄儴闂級
+        sb.append("=== 绯荤粺鐢ㄦ埛鍒楄〃锛堜汉鍛樺瓧娈靛繀椤讳粠涓�夊彇锛屼笉瑕佺紪閫犱汉鍚嶏級===\n");
+        for (SysUser u : systemUsers) {
+            String roleNames = u.getRoleNames() != null && !u.getRoleNames().isBlank() ? u.getRoleNames() : "鏃犺鑹�";
+            String deptNames = u.getDeptNames() != null && !u.getDeptNames().isBlank() ? u.getDeptNames() : "鏃犻儴闂�";
+            sb.append(u.getNickName()).append("锛堣鑹�: ").append(roleNames).append(", 閮ㄩ棬: ").append(deptNames).append("锛塡n");
+        }
+        sb.append("閫夋嫨瑙勫垯锛歕n");
+        sb.append("- 閿�鍞ā鍧楃殑浜哄憳(entryPerson銆乻alesman)閫夎鑹叉垨閮ㄩ棬鍚玕"閿�鍞甛"鐨勭敤鎴穃n");
+        sb.append("- 閲囪喘妯″潡鐨勪汉鍛橀�夎鑹叉垨閮ㄩ棬鍚玕"閲囪喘\"鐨勭敤鎴穃n");
+        sb.append("- 鐢熶骇妯″潡鐨勪汉鍛橀�夎鑹叉垨閮ㄩ棬鍚玕"鐢熶骇\"鐨勭敤鎴穃n");
+        sb.append("- 璐ㄩ噺妯″潡鐨勪汉鍛橀�夎鑹叉垨閮ㄩ棬鍚玕"璐ㄩ噺\"鎴朶"璐ㄦ\"鐨勭敤鎴穃n");
+        sb.append("- 浠撳簱妯″潡鐨勪汉鍛橀�夎鑹叉垨閮ㄩ棬鍚玕"浠撳簱\"鎴朶"搴撳瓨\"鐨勭敤鎴穃n\n");
+
+        if (!existingCustomerNames.isEmpty()) {
+            sb.append("=== 宸叉湁瀹㈡埛锛堝彧鑳藉紩鐢紝涓嶈鐢熸垚鏂癱ustomer瀹炰綋锛�===\n");
+            sb.append(String.join("銆�", existingCustomerNames)).append("\n\n");
+        }
+        if (!existingSupplierNames.isEmpty()) {
+            sb.append("=== 宸叉湁渚涘簲鍟嗭紙鍙兘寮曠敤锛屼笉瑕佺敓鎴愭柊supplier瀹炰綋锛�===\n");
+            sb.append(String.join("銆�", existingSupplierNames)).append("\n\n");
+        }
+
+        sb.append("鏁版嵁妯″潡: ").append(String.join("銆�", modules)).append("\n\n");
 
         if (modules.contains("sales")) {
-            sb.append(buildSalesPrompt(countMin, countMax, dateStart, dateEnd));
+            sb.append(buildSalesPrompt(countMin, countMax, dateStart, dateEnd, existingCustomerNames));
         }
         if (modules.contains("purchase")) {
-            sb.append(buildPurchasePrompt(countMin, countMax, dateStart, dateEnd));
+            sb.append(buildPurchasePrompt(countMin, countMax, dateStart, dateEnd, existingSupplierNames));
         }
         if (modules.contains("quality")) {
             sb.append(buildQualityPrompt(countMin, countMax, dateStart));
@@ -65,130 +106,105 @@
             sb.append(buildStockPrompt(countMin, countMax, dateStart));
         }
 
-        sb.append("\n璇风洿鎺ヨ緭鍑篔SON鏁扮粍锛屼笉瑕佹湁浠讳綍鍏朵粬鍐呭:");
+        sb.append("\n璇风洿鎺ヨ緭鍑篔SON鏁扮粍:");
         return sb.toString();
     }
 
-    private static String buildSalesPrompt(int min, int max, String dateStart, String dateEnd) {
+    /**
+     * 灏嗛《绾т骇鍝佸悕绉版槧灏勪负鍒嗙被鏍囩
+     */
+    private static String categorize(String rootProductName) {
+        if (rootProductName == null) return "鍏朵粬绫�";
+        if (rootProductName.contains("鎴愬搧") || rootProductName.contains("浜ф垚鍝�")) return "鎴愬搧绫�-閿�鍞紭鍏堥�夎繖浜�";
+        if (rootProductName.contains("鍘熸枡") || rootProductName.contains("鍘熸潗鏂�") || rootProductName.contains("鏉愭枡")) return "鍘熸潗鏂欑被-閲囪喘浼樺厛閫夎繖浜�";
+        if (rootProductName.contains("鍗婃垚鍝�")) return "鍗婃垚鍝佺被";
+        return "鍏朵粬绫�";
+    }
+
+    private static String buildSalesPrompt(int min, int max, String dateStart, String dateEnd,
+                                            List<String> existingCustomerNames) {
+        String namesHint = existingCustomerNames.isEmpty() ? ""
+                : "customerName蹇呴』浠庝互涓嬪凡鏈夊鎴蜂腑閫夋嫨: " + String.join("銆�", existingCustomerNames) + "\n";
         return """
-            閿�鍞ā鍧� - 鎸変互涓嬫牸寮忕敓鎴愶紙娉ㄦ剰锛氱ず渚嬩腑鐨勬棩鏈熶粎浣滄牸寮忓弬鑰冿紝瀹為檯鏃ユ湡蹇呴』鍦� %s ~ %s 鑼冨洿鍐咃級:
-            {
-              "entity": "customer",
-              "customerName": "XX绉戞妧鏈夐檺鍏徃",
-              "customerType": "浼佷笟瀹㈡埛",
-              "contactPerson": "寮犱笁",
-              "contactPhone": "13800138000",
-              "companyAddress": "XX鐪乆X甯俋X鍖篨X璺疿X鍙�",
-              "companyPhone": "0513-XXXXXXXX",
-              "taxpayerIdentificationNumber": "91110108XXXXXXXXXX",
-              "maintainer": "鏉庡洓",
-              "maintenanceTime": "%s",
-              "bankAccount": "622202XXXXXXXXXXXX",
-              "basicBankAccount": "XX閾惰XX鏀",
-              "bankCode": "308100XXXXXX"
-            }
+            閿�鍞ā鍧楁牸寮忥紙鎵�鏈夋棩鏈熷繀椤诲湪 %s ~ %s 鑼冨洿鍐咃級:
+            %s娉ㄦ剰锛氫笉瑕佺敓鎴恈ustomer瀹炰綋锛屽彧鐢熸垚salesLedger锛�
+            productData涓殑productModelId蹇呴』閫夈�愭垚鍝佺被銆戣鏍糏D锛�
+            entryPerson鍜宻alesman蹇呴』浠庣郴缁熺敤鎴峰垪琛ㄤ腑瑙掕壊鎴栭儴闂ㄥ惈"閿�鍞�"鐨勭敤鎴蜂腑閫夊彇锛�
             {
               "entity": "salesLedger",
               "customerName": "寮曠敤涓婇潰鐢熸垚鐨勫鎴峰悕绉�",
-              "salesContractNo": "XS-骞存湀鏃�-搴忓彿",
+              "salesContractNo": "XS-YYYYMMDD-001",
               "projectName": "XX椤圭洰",
               "entryDate": "%s",
-              "entryPerson": "寮犱笁",
-              "salesman": "閿�鍞憳濮撳悕",
+              "entryPerson": "浠庣敤鎴峰垪琛ㄤ腑閫�",
+              "salesman": "浠庣敤鎴峰垪琛ㄤ腑閫�",
               "contractAmount": 50000.00,
               "paymentMethod": "鏈堢粨30澶�",
               "executionDate": "%s",
               "deliveryDate": "%s",
               "type": 1,
-              "productData": [
-                {
-                  "productId": 1,
-                  "productModelId": 1,
-                  "quantity": 100,
-                  "taxInclusiveUnitPrice": 500.00,
-                  "taxInclusiveTotalPrice": 50000.00,
-                  "taxExclusiveTotalPrice": 44247.79,
-                  "taxRate": 13.00,
-                  "unit": "浠�",
-                  "type": 1
-                }
-              ]
+              "productData": [{
+                "productId": 1, "productModelId": 1, "quantity": 100,
+                "taxInclusiveUnitPrice": 500.00, "taxInclusiveTotalPrice": 50000.00,
+                "taxExclusiveTotalPrice": 44247.79, "taxRate": 13.00, "unit": "浠�", "type": 1
+              }]
             }
-            瀹㈡埛鍚嶇О瑕佸儚鎸囧畾琛屼笟鐨勫叕鍙革紝鍚堝悓缂栧彿鏍煎紡XS-骞存湀鏃�-搴忓彿锛堝勾鏈堟棩鍙杄ntryDate鐨勬棩鏈燂級锛岄噾棰濆悎鐞嗐��
-            娉ㄦ剰 taxExclusiveTotalPrice 鏄笉鍚◣鎬讳环锛岄渶瑕佹牴鎹惈绋庢�讳环鍜岀◣鐜囪绠楋紙=鍚◣鎬讳环/(1+绋庣巼/100)锛夈��
-            鏃ユ湡鑼冨洿: %s ~ %s锛屾瘡绉嶅疄浣撶敓鎴�%d-%d鏉°��
-            """.formatted(dateStart, dateEnd, dateStart, dateStart, dateStart, dateEnd, dateStart, dateEnd, min, max);
+            salesContractNo涓璝YYYMMDD鏇挎崲涓篹ntryDate鐨勬棩鏈熴��%d-%d鏉°��
+            """.formatted(dateStart, dateEnd, namesHint, dateStart, dateStart, dateEnd, min, max);
     }
 
-    private static String buildPurchasePrompt(int min, int max, String dateStart, String dateEnd) {
+    private static String buildPurchasePrompt(int min, int max, String dateStart, String dateEnd,
+                                              List<String> existingSupplierNames) {
+        String namesHint = existingSupplierNames.isEmpty() ? ""
+                : "supplierName蹇呴』浠庝互涓嬪凡鏈変緵搴斿晢涓�夋嫨: " + String.join("銆�", existingSupplierNames) + "\n";
         return """
-            閲囪喘妯″潡 - 鎸変互涓嬫牸寮忕敓鎴愶紙娉ㄦ剰锛氱ず渚嬩腑鐨勬棩鏈熶粎浣滄牸寮忓弬鑰冿紝瀹為檯鏃ユ湡蹇呴』鍦� %s ~ %s 鑼冨洿鍐咃級:
-            {
-              "entity": "supplier",
-              "supplierName": "XX鍘熸潗鏂欐湁闄愬叕鍙�",
-              "supplierType": "鍘熸潗鏂欎緵搴斿晢",
-              "contactUserName": "鏉庡洓",
-              "contactUserPhone": "13900139000",
-              "companyAddress": "XX鐪乆X甯俋X鍖篨X璺疿X鍙�",
-              "companyPhone": "0513-XXXXXXXX",
-              "taxpayerIdentificationNum": "91110108XXXXXXXXXX",
-              "bankAccountName": "XX閾惰XX鏀",
-              "bankAccountNum": "622202XXXXXXXXXXXX",
-              "isWhite": 0
-            }
+            閲囪喘妯″潡鏍煎紡锛堟墍鏈夋棩鏈熷繀椤诲湪 %s ~ %s 鑼冨洿鍐咃級:
+            %s娉ㄦ剰锛氫笉瑕佺敓鎴恠upplier瀹炰綋锛屽彧鐢熸垚purchaseLedger锛�
+            productData涓殑productModelId蹇呴』閫夈�愬師鏉愭枡绫汇�戣鏍糏D锛�
+            浜哄憳瀛楁蹇呴』浠庣郴缁熺敤鎴峰垪琛ㄤ腑瑙掕壊鎴栭儴闂ㄥ惈"閲囪喘"鐨勭敤鎴蜂腑閫夊彇锛�
             {
               "entity": "purchaseLedger",
-              "supplierName": "寮曠敤涓婇潰鐢熸垚鐨勪緵搴斿晢鍚嶇О",
-              "purchaseContractNumber": "CG-骞存湀鏃�-搴忓彿",
+              "supplierName": "浠庡凡鏈変緵搴斿晢涓�夋嫨",
+              "purchaseContractNumber": "CG-YYYYMMDD-001",
               "projectName": "XX閲囪喘椤圭洰",
               "entryDate": "%s",
               "contractAmount": 30000.00,
               "paymentMethod": "璐у埌浠樻",
               "executionDate": "%s",
-              "productData": [
-                {
-                  "productId": 1,
-                  "productModelId": 1,
-                  "quantity": 50,
-                  "taxInclusiveUnitPrice": 600.00,
-                  "taxInclusiveTotalPrice": 30000.00,
-                  "taxExclusiveTotalPrice": 26548.67,
-                  "taxRate": 13.00,
-                  "unit": "浠�",
-                  "type": 2
-                }
-              ]
+              "productData": [{
+                "productId": 1, "productModelId": 1, "quantity": 50,
+                "taxInclusiveUnitPrice": 600.00, "taxInclusiveTotalPrice": 30000.00,
+                "taxExclusiveTotalPrice": 26548.67, "taxRate": 13.00, "unit": "浠�", "type": 2
+              }]
             }
-            渚涘簲鍟嗗悕绉拌鍍忔寚瀹氳涓氱殑渚涘簲鍟嗭紝鍚堝悓缂栧彿鏍煎紡CG-骞存湀鏃�-搴忓彿锛堝勾鏈堟棩鍙杄ntryDate鐨勬棩鏈燂級銆�
-            娉ㄦ剰 taxExclusiveTotalPrice 鏄笉鍚◣鎬讳环锛岄渶瑕佹牴鎹惈绋庢�讳环鍜岀◣鐜囪绠楋紙=鍚◣鎬讳环/(1+绋庣巼/100)锛夈��
-            鏃ユ湡鑼冨洿: %s ~ %s锛屾瘡绉嶅疄浣撶敓鎴�%d-%d鏉°��
-            """.formatted(dateStart, dateEnd, dateStart, dateStart, dateStart, dateEnd, min, max);
+            purchaseContractNumber涓璝YYYMMDD鏇挎崲涓篹ntryDate鐨勬棩鏈熴��%d-%d鏉°��
+            """.formatted(dateStart, dateEnd, namesHint, dateStart, dateStart, min, max);
     }
 
     private static String buildQualityPrompt(int min, int max, String dateStart) {
         return """
-            璐ㄩ噺妯″潡 - 鎸変互涓嬫牸寮忕敓鎴�:
+            璐ㄩ噺妯″潡鏍煎紡:
             {
               "entity": "qualityTestStandard",
-              "standardNo": "QTS-骞存湀鏃�-搴忓彿",
+              "standardNo": "QTS-YYYYMMDD-001",
               "standardName": "XX浜у搧妫�楠屾爣鍑�",
               "inspectType": 0,
               "remark": "閫傜敤浜嶺X琛屼笟鐨勮川閲忔楠屾爣鍑�"
             }
             inspectType: 0=鍘熸潗鏂欐楠�, 1=杩囩▼妫�楠�, 2=鍑哄巶妫�楠屻�備笁绉嶇被鍨嬮兘瑕佽鐩栥��
-            standardNo涓殑骞存湀鏃ヤ娇鐢� %s 杩欎釜鏃ユ湡銆�
+            standardNo涓璝YYYMMDD鏇挎崲涓� %s銆�%d-%d鏉°��
             {
               "entity": "qualityTestStandardBinding",
               "productId": 1,
               "testStandardId": 1
             }
-            姣忕瀹炰綋鐢熸垚%d-%d鏉°��
-            """.formatted(dateStart, min, max);
+            %d-%d鏉°��
+            """.formatted(dateStart.replace("-", ""), min, max, min, max);
     }
 
     private static String buildProductionPrompt(int min, int max, String dateStart, String dateEnd) {
         return """
-            鐢熶骇妯″潡 - 鎸変互涓嬫牸寮忕敓鎴愶紙娉ㄦ剰锛氱ず渚嬩腑鐨勬棩鏈熶粎浣滄牸寮忓弬鑰冿紝瀹為檯鏃ユ湡蹇呴』鍦� %s ~ %s 鑼冨洿鍐咃級:
+            鐢熶骇妯″潡鏍煎紡锛堟墍鏈夋棩鏈熷繀椤诲湪 %s ~ %s 鑼冨洿鍐咃級:
             {
               "entity": "productionPlan",
               "productModelId": 1,
@@ -205,23 +221,22 @@
               "planCompleteTime": "%s",
               "remark": "鏍规嵁鐢熶骇璁″垝XX鐢熸垚"
             }
-            productionPlan鐨剆ource鍙��"閿�鍞�"鎴�"鍐呴儴"銆�
-            鏃ユ湡鑼冨洿: %s ~ %s锛屾瘡绉嶅疄浣撶敓鎴�%d-%d鏉°��
-            """.formatted(dateStart, dateEnd, dateStart, dateEnd, dateEnd, dateStart, dateEnd, min, max);
+            source鍙��"閿�鍞�"鎴�"鍐呴儴"銆�%d-%d鏉°��
+            """.formatted(dateStart, dateEnd, dateStart, dateEnd, dateEnd, min, max);
     }
 
     private static String buildStockPrompt(int min, int max, String dateStart) {
         return """
-            搴撳瓨妯″潡 - 鎸変互涓嬫牸寮忕敓鎴�:
+            搴撳瓨妯″潡鏍煎紡:
             {
               "entity": "stockInventory",
               "productModelId": 1,
               "qualitity": 500,
-              "batchNo": "BATCH-骞存湀鏃�-搴忓彿",
+              "batchNo": "BATCH-YYYYMMDD-001",
               "warnNum": 50,
               "remark": "瀹夊叏搴撳瓨"
             }
-            姣忕瀹炰綋鐢熸垚%d-%d鏉°�俠atchNo鏍煎紡BATCH-骞存湀鏃�-搴忓彿锛屽勾鏈堟棩浣跨敤 %s 杩欎釜鏃ユ湡銆�
-            """.formatted(min, max, dateStart);
+            batchNo涓璝YYYMMDD鏇挎崲涓� %s銆�%d-%d鏉°��
+            """.formatted(dateStart.replace("-", ""), min, max);
     }
 }

--
Gitblit v1.9.3