From c9b9b7ec0b9a342dfcf0bea60c20765192b1db16 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 16 六月 2026 11:32:51 +0800
Subject: [PATCH] ai自动化数据

---
 src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java |    4 ++
 src/main/java/com/ruoyi/mock/prompt/MockDataPrompt.java                |   14 ++++++
 src/main/java/com/ruoyi/mock/service/impl/DataGenerateServiceImpl.java |   44 ++++++++++++++++++++++
 3 files changed, 61 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/ruoyi/mock/prompt/MockDataPrompt.java b/src/main/java/com/ruoyi/mock/prompt/MockDataPrompt.java
index e52ab8e..f37b56e 100644
--- a/src/main/java/com/ruoyi/mock/prompt/MockDataPrompt.java
+++ b/src/main/java/com/ruoyi/mock/prompt/MockDataPrompt.java
@@ -78,7 +78,13 @@
               "contactPerson": "寮犱笁",
               "contactPhone": "13800138000",
               "companyAddress": "XX鐪乆X甯俋X鍖篨X璺疿X鍙�",
-              "taxpayerIdentificationNumber": "91110108XXXXXXXXXX"
+              "companyPhone": "0513-XXXXXXXX",
+              "taxpayerIdentificationNumber": "91110108XXXXXXXXXX",
+              "maintainer": "鏉庡洓",
+              "maintenanceTime": "2026-06-01",
+              "bankAccount": "622202XXXXXXXXXXXX",
+              "basicBankAccount": "XX閾惰XX鏀",
+              "bankCode": "308100XXXXXX"
             }
             {
               "entity": "salesLedger",
@@ -86,6 +92,7 @@
               "salesContractNo": "XS-20260601-001",
               "projectName": "XX椤圭洰",
               "entryDate": "2026-06-01",
+              "entryPerson": "寮犱笁",
               "salesman": "閿�鍞憳濮撳悕",
               "contractAmount": 50000.00,
               "paymentMethod": "鏈堢粨30澶�",
@@ -99,6 +106,7 @@
                   "quantity": 100,
                   "taxInclusiveUnitPrice": 500.00,
                   "taxInclusiveTotalPrice": 50000.00,
+                  "taxExclusiveTotalPrice": 44247.79,
                   "taxRate": 13.00,
                   "unit": "浠�",
                   "type": 1
@@ -106,6 +114,7 @@
               ]
             }
             瀹㈡埛鍚嶇О瑕佸儚鎸囧畾琛屼笟鐨勫叕鍙革紝鍚堝悓缂栧彿鏍煎紡XS-骞存湀鏃�-搴忓彿锛岄噾棰濆悎鐞嗐��
+            娉ㄦ剰 taxExclusiveTotalPrice 鏄笉鍚◣鎬讳环锛岄渶瑕佹牴鎹惈绋庢�讳环鍜岀◣鐜囪绠楋紙=鍚◣鎬讳环/(1+绋庣巼/100)锛夈��
             鏃ユ湡鑼冨洿: %s ~ %s锛屾瘡绉嶅疄浣撶敓鎴�%d-%d鏉°��
             """.formatted(dateStart, dateEnd, min, max);
     }
@@ -120,6 +129,7 @@
               "contactUserName": "鏉庡洓",
               "contactUserPhone": "13900139000",
               "companyAddress": "XX鐪乆X甯俋X鍖篨X璺疿X鍙�",
+              "companyPhone": "0513-XXXXXXXX",
               "taxpayerIdentificationNum": "91110108XXXXXXXXXX",
               "bankAccountName": "XX閾惰XX鏀",
               "bankAccountNum": "622202XXXXXXXXXXXX",
@@ -141,6 +151,7 @@
                   "quantity": 50,
                   "taxInclusiveUnitPrice": 600.00,
                   "taxInclusiveTotalPrice": 30000.00,
+                  "taxExclusiveTotalPrice": 26548.67,
                   "taxRate": 13.00,
                   "unit": "浠�",
                   "type": 2
@@ -148,6 +159,7 @@
               ]
             }
             渚涘簲鍟嗗悕绉拌鍍忔寚瀹氳涓氱殑渚涘簲鍟嗭紝鍚堝悓缂栧彿鏍煎紡CG-骞存湀鏃�-搴忓彿銆�
+            娉ㄦ剰 taxExclusiveTotalPrice 鏄笉鍚◣鎬讳环锛岄渶瑕佹牴鎹惈绋庢�讳环鍜岀◣鐜囪绠楋紙=鍚◣鎬讳环/(1+绋庣巼/100)锛夈��
             鏃ユ湡鑼冨洿: %s ~ %s锛屾瘡绉嶅疄浣撶敓鎴�%d-%d鏉°��
             """.formatted(dateStart, dateEnd, min, max);
     }
diff --git a/src/main/java/com/ruoyi/mock/service/impl/DataGenerateServiceImpl.java b/src/main/java/com/ruoyi/mock/service/impl/DataGenerateServiceImpl.java
index 34567d3..c414da5 100644
--- a/src/main/java/com/ruoyi/mock/service/impl/DataGenerateServiceImpl.java
+++ b/src/main/java/com/ruoyi/mock/service/impl/DataGenerateServiceImpl.java
@@ -34,6 +34,8 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -208,7 +210,23 @@
                 c.setContactPerson(item.getString("contactPerson"));
                 c.setContactPhone(item.getString("contactPhone"));
                 c.setCompanyAddress(item.getString("companyAddress"));
+                c.setCompanyPhone(item.getString("companyPhone"));
                 c.setTaxpayerIdentificationNumber(item.getString("taxpayerIdentificationNumber"));
+                c.setMaintainer(item.getString("maintainer"));
+                if (item.containsKey("maintenanceTime")) {
+                    c.setMaintenanceTime(java.sql.Date.valueOf(item.getString("maintenanceTime")));
+                } else {
+                    c.setMaintenanceTime(new java.sql.Date(System.currentTimeMillis()));
+                }
+                if (item.containsKey("bankAccount")) {
+                    c.setBankAccount(item.getString("bankAccount"));
+                }
+                if (item.containsKey("basicBankAccount")) {
+                    c.setBasicBankAccount(item.getString("basicBankAccount"));
+                }
+                if (item.containsKey("bankCode")) {
+                    c.setBankCode(item.getString("bankCode"));
+                }
                 customerService.insertCustomer(c);
                 if (c.getId() != null) {
                     nameToId.put(c.getCustomerName(), c.getId());
@@ -232,6 +250,7 @@
                 s.setContactUserName(item.getString("contactUserName"));
                 s.setContactUserPhone(item.getString("contactUserPhone"));
                 s.setCompanyAddress(item.getString("companyAddress"));
+                s.setCompanyPhone(item.getString("companyPhone"));
                 s.setTaxpayerIdentificationNum(item.getString("taxpayerIdentificationNum"));
                 s.setBankAccountName(item.getString("bankAccountName"));
                 s.setBankAccountNum(item.getString("bankAccountNum"));
@@ -286,6 +305,10 @@
                 dto.setSalesman(item.getString("salesman"));
                 dto.setPaymentMethod(item.getString("paymentMethod"));
                 dto.setType(item.getInteger("type"));
+                // 褰曞叆浜猴細浼樺厛浣跨敤AI鎻愪緵鐨勬暟鎹紝鍚﹀垯鐢ㄥ綋鍓嶇櫥褰曠敤鎴�
+                if (item.containsKey("entryPerson")) {
+                    dto.setEntryPerson(item.getString("entryPerson"));
+                }
                 if (item.containsKey("entryDate")) {
                     dto.setEntryDate(java.sql.Date.valueOf(item.getString("entryDate")));
                 }
@@ -309,6 +332,17 @@
                         slp.setTaxRate(pd.getBigDecimal("taxRate"));
                         slp.setUnit(pd.getString("unit"));
                         slp.setType(pd.getInteger("type"));
+                        if (pd.containsKey("taxExclusiveTotalPrice")) {
+                            slp.setTaxExclusiveTotalPrice(pd.getBigDecimal("taxExclusiveTotalPrice"));
+                        } else if (pd.getBigDecimal("taxInclusiveTotalPrice") != null && pd.getBigDecimal("taxRate") != null) {
+                            // 涓嶅惈绋庢�讳环 = 鍚◣鎬讳环 / (1 + 绋庣巼/100)
+                            slp.setTaxExclusiveTotalPrice(
+                                pd.getBigDecimal("taxInclusiveTotalPrice").divide(
+                                    BigDecimal.ONE.add(pd.getBigDecimal("taxRate").divide(new BigDecimal("100"), 4, RoundingMode.HALF_UP)),
+                                    2, RoundingMode.HALF_UP));
+                        } else {
+                            slp.setTaxExclusiveTotalPrice(BigDecimal.ZERO);
+                        }
                         products.add(slp);
                     }
                     dto.setProductData(products);
@@ -357,6 +391,16 @@
                         slp.setTaxRate(pd.getBigDecimal("taxRate"));
                         slp.setUnit(pd.getString("unit"));
                         slp.setType(2);
+                        if (pd.containsKey("taxExclusiveTotalPrice")) {
+                            slp.setTaxExclusiveTotalPrice(pd.getBigDecimal("taxExclusiveTotalPrice"));
+                        } else if (pd.getBigDecimal("taxInclusiveTotalPrice") != null && pd.getBigDecimal("taxRate") != null) {
+                            slp.setTaxExclusiveTotalPrice(
+                                pd.getBigDecimal("taxInclusiveTotalPrice").divide(
+                                    BigDecimal.ONE.add(pd.getBigDecimal("taxRate").divide(new BigDecimal("100"), 4, RoundingMode.HALF_UP)),
+                                    2, RoundingMode.HALF_UP));
+                        } else {
+                            slp.setTaxExclusiveTotalPrice(BigDecimal.ZERO);
+                        }
                         products.add(slp);
                     }
                     dto.setProductData(products);
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index 7b71ef3..b3a7727 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -571,6 +571,10 @@
         SalesLedger salesLedger = convertToEntity(salesLedgerDto);
         salesLedger.setCustomerName(customer.getCustomerName());
         salesLedger.setTenantId(customer.getTenantId());
+        // 褰曞叆浜猴細濡傛灉鏈紶鍒欎娇鐢ㄥ綋鍓嶇櫥褰曠敤鎴�
+        if (StringUtils.isEmpty(salesLedger.getEntryPerson())) {
+            salesLedger.setEntryPerson(String.valueOf(SecurityUtils.getUserId()));
+        }
         // 3. 鏂板鎴栨洿鏂颁富琛�
         if (salesLedger.getId() == null) {
             String contractNo = salesLedger.getSalesContractNo();

--
Gitblit v1.9.3