From cff970c90a81c307ace673ff0bb4c31c7c0cdad9 Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期三, 26 八月 2026 17:52:55 +0800
Subject: [PATCH] feat(erp): 付款单付款账户改为手输文本(accountId→accountName)

---
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinancePaymentDO.java                     |    6 +--
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/ErpFinancePaymentController.java           |   12 +-----
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentRespVO.java    |    4 -
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinancePaymentServiceImpl.java                   |   24 +++--------
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpFinancePaymentMapper.java                      |    2 
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentPageReqVO.java |    4 +-
 yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentSaveReqVO.java |    6 +-
 sql/erp_finance_payment_account_name_migration.sql                                                                             |   41 ++++++++++++++++++++
 8 files changed, 59 insertions(+), 40 deletions(-)

diff --git a/sql/erp_finance_payment_account_name_migration.sql b/sql/erp_finance_payment_account_name_migration.sql
new file mode 100644
index 0000000..a06bf94
--- /dev/null
+++ b/sql/erp_finance_payment_account_name_migration.sql
@@ -0,0 +1,41 @@
+-- =====================================================================
+-- 浠樻鍗曚粯娆捐处鎴锋敼涓烘墜杈擄細erp_finance_payment.account_id -> account_name
+-- =====================================================================
+-- 鑳屾櫙锛�
+--   1. 鍏徃娌℃湁璐㈠姟妯″潡锛屼粯娆捐处鎴蜂笉鍐嶄粠 erp_account 涓绘暟鎹�夋嫨锛屾敼涓烘櫘閫氭墜杈撴枃鏈�
+--   2. 鍓嶇宸叉敼涓� Input 鎵嬭緭锛屾彁浜ゅ瓧娈典负 accountName锛圫tring锛�
+--   3. 鍚庣宸叉敼涓哄瓨鍌� accountName锛堝搴斿垪 account_name锛夛紝涓嶅啀浣跨敤 account_id
+-- 鏂规锛�
+--   1. 鑻ヨ〃缂哄皯 account_name 鍒楀垯琛ュ厖锛堝箓绛夛紝宸插瓨鍦ㄥ垯璺宠繃锛�
+--   2. 灏嗗凡鏈� account_id 鍏宠仈鐨勮处鎴峰悕绉板洖濉埌 account_name锛堜粎鍥炲~绌哄�硷紝涓嶈鐩栨墜杈撳唴瀹癸級
+--   3. 鍒犻櫎鏃х殑 account_id 鍒楋紙骞傜瓑锛屽凡鍒犻櫎鍒欒烦杩囷級
+-- 閫傜敤鏁版嵁搴擄細MySQL 8.x
+-- 娉ㄦ剰锛歋QL 鑴氭湰涓笉鍖呭惈 tenant_id锛堥」鐩湭浣跨敤澶氱鎴凤級
+-- =====================================================================
+
+-- 1. 纭繚 account_name 鍒楀瓨鍦紙宸插瓨鍦ㄥ垯璺宠繃锛屽吋瀹归儴鍒嗚縼绉昏繃鐨勫簱锛�
+SET @col_exists = (SELECT COUNT(*) FROM information_schema.columns
+                   WHERE table_schema = DATABASE() AND table_name = 'erp_finance_payment' AND column_name = 'account_name');
+SET @sql = IF(@col_exists = 0,
+              'ALTER TABLE erp_finance_payment ADD COLUMN account_name varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT ''浠樻璐︽埛'' AFTER account_id',
+              'SELECT 1');
+PREPARE stmt FROM @sql;
+EXECUTE stmt;
+DEALLOCATE PREPARE stmt;
+
+-- 2. 杩佺Щ宸叉湁鏁版嵁锛氫粎褰� account_name 涓虹┖鏃讹紝鐢� account_id 鍏宠仈鐨勮处鎴峰悕绉板洖濉紙涓嶈鐩栧凡鎵嬭緭鐨勫�硷級
+UPDATE erp_finance_payment p
+LEFT JOIN erp_account a ON p.account_id = a.id
+SET p.account_name = a.name
+WHERE (p.account_name IS NULL OR p.account_name = '')
+  AND p.deleted = 0;
+
+-- 3. 鍒犻櫎鏃х殑 account_id 鍒楋紙宸插垹闄ゅ垯璺宠繃锛�
+SET @col_exists = (SELECT COUNT(*) FROM information_schema.columns
+                   WHERE table_schema = DATABASE() AND table_name = 'erp_finance_payment' AND column_name = 'account_id');
+SET @sql = IF(@col_exists = 1,
+              'ALTER TABLE erp_finance_payment DROP COLUMN account_id',
+              'SELECT 1');
+PREPARE stmt FROM @sql;
+EXECUTE stmt;
+DEALLOCATE PREPARE stmt;
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/ErpFinancePaymentController.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/ErpFinancePaymentController.java
index e24d92f..4d70b76 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/ErpFinancePaymentController.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/ErpFinancePaymentController.java
@@ -13,13 +13,11 @@
 import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.payment.ErpFinancePaymentRespVO;
 import cn.iocoder.yudao.module.erp.controller.admin.finance.vo.payment.ErpFinancePaymentSaveReqVO;
 import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.invoice.ErpPurchaseInvoiceRespVO;
-import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpAccountDO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinancePaymentDO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpFinancePaymentItemDO;
 import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInvoiceDO;
 import cn.iocoder.yudao.module.srm.api.supplier.SrmSupplierApi;
 import cn.iocoder.yudao.module.srm.api.supplier.dto.SrmSupplierRespDTO;
-import cn.iocoder.yudao.module.erp.service.finance.ErpAccountService;
 import cn.iocoder.yudao.module.erp.service.finance.ErpFinancePaymentService;
 import cn.iocoder.yudao.module.erp.service.purchase.ErpPurchaseInvoiceService;
 import cn.iocoder.yudao.module.system.api.storage.StorageAttachmentApi;
@@ -55,8 +53,6 @@
     private ErpFinancePaymentService financePaymentService;
     @Resource
     private SrmSupplierApi srmSupplierApi;
-    @Resource
-    private ErpAccountService accountService;
     @Resource
     private ErpPurchaseInvoiceService invoiceService;
 
@@ -167,20 +163,16 @@
         Map<Long, SrmSupplierRespDTO> supplierMap = srmSupplierApi.getSupplierList(
                 convertSet(pageResult.getList(), ErpFinancePaymentDO::getSupplierId)).getCheckedData().stream()
                 .collect(java.util.stream.Collectors.toMap(SrmSupplierRespDTO::getId, v -> v, (a, b) -> a));
-        // 1.3 缁撶畻璐︽埛淇℃伅
-        Map<Long, ErpAccountDO> accountMap = accountService.getAccountMap(
-                convertSet(pageResult.getList(), ErpFinancePaymentDO::getAccountId));
-        // 1.4 绠$悊鍛樹俊鎭�
+        // 1.3 绠$悊鍛樹俊鎭�
         Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(convertListByFlatMap(pageResult.getList(),
                 contact -> Stream.of(NumberUtils.parseLong(contact.getCreator()), contact.getFinanceUserId())));
-        // 1.5 鏉ョエ淇℃伅
+        // 1.4 鏉ョエ淇℃伅
         Map<Long, ErpPurchaseInvoiceDO> invoiceMap = invoiceService.getPurchaseInvoiceMap(
                 convertSet(pageResult.getList(), ErpFinancePaymentDO::getInvoiceId));
         // 2. 寮�濮嬫嫾鎺�
         return BeanUtils.toBean(pageResult, ErpFinancePaymentRespVO.class, payment -> {
             payment.setItems(BeanUtils.toBean(financePaymentItemMap.get(payment.getId()), ErpFinancePaymentRespVO.Item.class));
             MapUtils.findAndThen(supplierMap, payment.getSupplierId(), supplier -> payment.setSupplierName(supplier.getName()));
-            MapUtils.findAndThen(accountMap, payment.getAccountId(), account -> payment.setAccountName(account.getName()));
             MapUtils.findAndThen(userMap, Long.parseLong(payment.getCreator()), user -> payment.setCreatorName(user.getNickname()));
             MapUtils.findAndThen(userMap, payment.getFinanceUserId(), user -> payment.setFinanceUserName(user.getNickname()));
             MapUtils.findAndThen(invoiceMap, payment.getInvoiceId(), invoice ->
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentPageReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentPageReqVO.java
index b5618ca..72b4ec9 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentPageReqVO.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentPageReqVO.java
@@ -33,8 +33,8 @@
     @Schema(description = "璐㈠姟浜哄憳缂栧彿", example = "888")
     private String financeUserId;
 
-    @Schema(description = "缁撶畻璐︽埛缂栧彿", example = "31189")
-    private Long accountId;
+    @Schema(description = "浠樻璐︽埛", example = "鍐滆")
+    private String accountName;
 
     @Schema(description = "浠樻鐘舵��", example = "2")
     private Integer status;
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentRespVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentRespVO.java
index 05d7d76..3a49d21 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentRespVO.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentRespVO.java
@@ -47,9 +47,7 @@
     @Schema(description = "鍏宠仈鐨勬潵绁ㄤ俊鎭�")
     private ErpPurchaseInvoiceRespVO invoice;
 
-    @Schema(description = "浠樻璐︽埛缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "28989")
-    private Long accountId;
-    @Schema(description = "浠樻璐︽埛鍚嶇О", requiredMode = Schema.RequiredMode.REQUIRED, example = "寮犱笁")
+    @Schema(description = "浠樻璐︽埛", requiredMode = Schema.RequiredMode.REQUIRED, example = "鍐滆瀵瑰叕璐︽埛")
     private String accountName;
 
     @Schema(description = "鍚堣浠锋牸锛屽崟浣嶏細鍏�", requiredMode = Schema.RequiredMode.REQUIRED, example = "13832")
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentSaveReqVO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentSaveReqVO.java
index 8a981b4..ab517d9 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentSaveReqVO.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/finance/vo/payment/ErpFinancePaymentSaveReqVO.java
@@ -32,9 +32,9 @@
     @NotNull(message = "鍏宠仈鏉ョエ缂栧彿涓嶈兘涓虹┖")
     private Long invoiceId;
 
-    @Schema(description = "浠樻璐︽埛缂栧彿", requiredMode = Schema.RequiredMode.REQUIRED, example = "28989")
-    @NotNull(message = "浠樻璐︽埛缂栧彿涓嶈兘涓虹┖")
-    private Long accountId;
+    @Schema(description = "浠樻璐︽埛", requiredMode = Schema.RequiredMode.REQUIRED, example = "鍐滆瀵瑰叕璐︽埛")
+    @NotEmpty(message = "浠樻璐︽埛涓嶈兘涓虹┖")
+    private String accountName;
 
     @Schema(description = "浼樻儬閲戦锛屽崟浣嶏細鍏�", requiredMode = Schema.RequiredMode.REQUIRED, example = "11600")
     @NotNull(message = "浼樻儬閲戦涓嶈兘涓虹┖")
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinancePaymentDO.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinancePaymentDO.java
index dfdaeda..f08c01e 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinancePaymentDO.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/dataobject/finance/ErpFinancePaymentDO.java
@@ -70,11 +70,9 @@
      */
     private Long invoiceId;
     /**
-     * 浠樻璐︽埛缂栧彿
-     *
-     * 鍏宠仈 {@link ErpAccountDO#getId()}
+     * 浠樻璐︽埛
      */
-    private Long accountId;
+    private String accountName;
 
     /**
      * 鍚堣浠锋牸锛屽崟浣嶏細鍏�
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpFinancePaymentMapper.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpFinancePaymentMapper.java
index b08d529..0389f65 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpFinancePaymentMapper.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/dal/mysql/finance/ErpFinancePaymentMapper.java
@@ -36,7 +36,7 @@
                 .eqIfPresent(ErpFinancePaymentDO::getSupplierId, reqVO.getSupplierId())
                 .eqIfPresent(ErpFinancePaymentDO::getCreator, reqVO.getCreator())
                 .eqIfPresent(ErpFinancePaymentDO::getFinanceUserId, reqVO.getFinanceUserId())
-                .eqIfPresent(ErpFinancePaymentDO::getAccountId, reqVO.getAccountId())
+                .likeIfPresent(ErpFinancePaymentDO::getAccountName, reqVO.getAccountName())
                 .eqIfPresent(ErpFinancePaymentDO::getStatus, reqVO.getStatus())
                 .likeIfPresent(ErpFinancePaymentDO::getRemark, reqVO.getRemark())
                 .orderByDesc(ErpFinancePaymentDO::getId);
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinancePaymentServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinancePaymentServiceImpl.java
index 5fdd106..1f9c13c 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinancePaymentServiceImpl.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/finance/ErpFinancePaymentServiceImpl.java
@@ -65,8 +65,6 @@
     @Resource
     private ErpSupplierService supplierService;
     @Resource
-    private ErpAccountService accountService;
-    @Resource
     private ErpPurchaseInvoiceService invoiceService;
 
     @Resource
@@ -90,17 +88,13 @@
                 createReqVO.getSupplierId(), createReqVO.getItems());
         // 1.2 鏍¢獙渚涘簲鍟�
         supplierService.validateSupplier(createReqVO.getSupplierId());
-        // 1.3 鏍¢獙缁撶畻璐︽埛
-        if (createReqVO.getAccountId() != null) {
-            accountService.validateAccount(createReqVO.getAccountId());
-        }
-        // 1.4 鏍¢獙璐㈠姟浜哄憳
+        // 1.3 鏍¢獙璐㈠姟浜哄憳
         if (createReqVO.getFinanceUserId() != null) {
             adminUserApi.validateUser(createReqVO.getFinanceUserId());
         }
-        // 1.5 鏍¢獙鍏宠仈鏉ョエ
+        // 1.4 鏍¢獙鍏宠仈鏉ョエ
         validateInvoiceForPayment(createReqVO.getInvoiceId(), createReqVO.getSupplierId());
-        // 1.6 鏍¢獙浠樻閲戦涓嶈秴杩囪鏉ョエ鍓╀綑鍙粯閲戦
+        // 1.5 鏍¢獙浠樻閲戦涓嶈秴杩囪鏉ョエ鍓╀綑鍙粯閲戦
         validatePaymentPriceExceedsInvoiceRemaining(createReqVO.getInvoiceId(),
                 getSumValue(paymentItems, ErpFinancePaymentItemDO::getPaymentPrice, BigDecimal::add, BigDecimal.ZERO)
                         .subtract(createReqVO.getDiscountPrice()), null);
@@ -141,20 +135,16 @@
         }
         // 1.2 鏍¢獙渚涘簲鍟�
         supplierService.validateSupplier(updateReqVO.getSupplierId());
-        // 1.3 鏍¢獙缁撶畻璐︽埛
-        if (updateReqVO.getAccountId() != null) {
-            accountService.validateAccount(updateReqVO.getAccountId());
-        }
-        // 1.4 鏍¢獙璐㈠姟浜哄憳
+        // 1.3 鏍¢獙璐㈠姟浜哄憳
         if (updateReqVO.getFinanceUserId() != null) {
             adminUserApi.validateUser(updateReqVO.getFinanceUserId());
         }
-        // 1.5 鏍¢獙浠樻鍗曢」鐨勬湁鏁堟��
+        // 1.4 鏍¢獙浠樻鍗曢」鐨勬湁鏁堟��
         List<ErpFinancePaymentItemDO> paymentItems = validateFinancePaymentItems(
                 updateReqVO.getSupplierId(), updateReqVO.getItems());
-        // 1.6 鏍¢獙鍏宠仈鏉ョエ
+        // 1.5 鏍¢獙鍏宠仈鏉ョエ
         validateInvoiceForPayment(updateReqVO.getInvoiceId(), updateReqVO.getSupplierId());
-        // 1.7 鏍¢獙浠樻閲戦涓嶈秴杩囪鏉ョエ鍓╀綑鍙粯閲戦锛堟帓闄よ浠樻鍗曡嚜韬綋鍓嶅凡浠橀噾棰濓級
+        // 1.6 鏍¢獙浠樻閲戦涓嶈秴杩囪鏉ョエ鍓╀綑鍙粯閲戦锛堟帓闄よ浠樻鍗曡嚜韬綋鍓嶅凡浠橀噾棰濓級
         validatePaymentPriceExceedsInvoiceRemaining(updateReqVO.getInvoiceId(),
                 getSumValue(paymentItems, ErpFinancePaymentItemDO::getPaymentPrice, BigDecimal::add, BigDecimal.ZERO)
                         .subtract(updateReqVO.getDiscountPrice()), payment.getPaymentPrice());

--
Gitblit v1.9.3