| doc/20260917_add_sales_ledger_id_to_account_sales_collection.sql | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/account/pojo/sales/AccountSalesCollection.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/account/service/impl/sales/AccountSalesCollectionServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/ai/tools/SalesAgentTools.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/account/sales/AccountSalesCollectionMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/basic/CustomerMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
doc/20260917_add_sales_ledger_id_to_account_sales_collection.sql
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,26 @@ -- 客æ·å¾æ¥å款ï¼account_sales_collection å¢å sales_ledger_id -- 忬¾ååå åªè½éè¿ stock_out_record_ids 忥éå®å°è´¦ï¼ååæªåè´§æ¶æ æ³å»ºç«å ³èï¼ -- 导è´ãæªåè´§å°±ä¸è½æ°å¢å款ããæ¹ä¸ºç´æ¥è®°å½éå®å°è´¦ idã ALTER TABLE `account_sales_collection` ADD COLUMN `sales_ledger_id` bigint NULL COMMENT 'å ³èéå®å°è´¦idï¼éå®ååï¼' AFTER `customer_id`, ADD INDEX `idx_asc_sales_ledger_id` (`sales_ledger_id`); -- åéæ°æ®åå¡«ï¼æååºåºåå ³è忥æå±éå®å°è´¦ UPDATE `account_sales_collection` c SET c.`sales_ledger_id` = ( SELECT si.`sales_ledger_id` FROM `stock_out_record` sor JOIN `shipping_info` si ON sor.`record_id` = si.`id` WHERE sor.`record_type` = '13' AND si.`sales_ledger_id` IS NOT NULL AND FIND_IN_SET(sor.`id`, c.`stock_out_record_ids`) > 0 LIMIT 1 ) WHERE c.`sales_ledger_id` IS NULL AND c.`stock_out_record_ids` IS NOT NULL AND c.`stock_out_record_ids` <> ''; -- æ§è¡åæ ¸å¯¹ï¼ç»æåºä¸º 0ï¼ -- SELECT COUNT(*) FROM `account_sales_collection` -- WHERE `sales_ledger_id` IS NULL AND `stock_out_record_ids` IS NOT NULL AND `stock_out_record_ids` <> ''; src/main/java/com/ruoyi/account/pojo/sales/AccountSalesCollection.java
@@ -46,6 +46,12 @@ private String stockOutRecordIds; /** * å ³èéå®å°è´¦idï¼éå®ååï¼ */ @ApiModelProperty("å ³èéå®å°è´¦idï¼éå®ååï¼") private Long salesLedgerId; /** * å建人 */ @ApiModelProperty("å建人") src/main/java/com/ruoyi/account/service/impl/sales/AccountSalesCollectionServiceImpl.java
@@ -122,13 +122,14 @@ } List<Long> stockOutRecordIds = accountSalesCollectionMapper.selectStockOutRecordIdsBySalesLedgerId(salesLedger.getId()); if (CollectionUtils.isEmpty(stockOutRecordIds)) { throw new ServiceException("该ååææ å¯å款çéå®åºåºè®°å½"); } AccountSalesCollection collection = new AccountSalesCollection(); collection.setCustomerId(dto.getCustomerId().intValue()); collection.setStockOutRecordIds(stockOutRecordIds.stream().map(String::valueOf).collect(Collectors.joining(","))); collection.setSalesLedgerId(salesLedger.getId()); // ååæªåè´§æ¶æ²¡æåºåºè®°å½ï¼æ¤æ¶ä»å è®¸åæ¬¾ï¼åºåºåå ³èç空 collection.setStockOutRecordIds(CollectionUtils.isEmpty(stockOutRecordIds) ? null : stockOutRecordIds.stream().map(String::valueOf).collect(Collectors.joining(","))); collection.setCollectionDate(dto.getPaymentDate()); collection.setCollectionAmount(dto.getPaymentAmount()); collection.setCollectionMethod(dto.getPaymentMethod()); src/main/java/com/ruoyi/ai/tools/SalesAgentTools.java
@@ -951,6 +951,11 @@ if (collection.getId() == null) { continue; } // 忬¾åå·²ç´æ¥è®°å½éå®å°è´¦idï¼æªåè´§çå æåæ¬¾ä¹è½å½å±å°åå if (collection.getSalesLedgerId() != null) { result.put(collection.getId(), new LinkedHashSet<>(List.of(collection.getSalesLedgerId()))); continue; } List<Long> stockOutRecordIds = parseLongIds(collection.getStockOutRecordIds()); if (stockOutRecordIds.isEmpty()) { continue; src/main/resources/mapper/account/sales/AccountSalesCollectionMapper.xml
@@ -6,6 +6,7 @@ <resultMap id="BaseResultMap" type="com.ruoyi.account.pojo.sales.AccountSalesCollection"> <id column="id" property="id" /> <result column="stock_out_record_ids" property="stockOutRecordIds" /> <result column="sales_ledger_id" property="salesLedgerId" /> <result column="create_user" property="createUser" /> <result column="create_time" property="createTime" /> <result column="update_user" property="updateUser" /> src/main/resources/mapper/basic/CustomerMapper.xml
@@ -114,32 +114,9 @@ c.customer_name, T1.contractAmounts, IFNULL(T2.receiptPaymentAmount, 0) AS receiptPaymentAmount, IFNULL(T3.outboundAmount, 0) - IFNULL(T4.returnAmount, 0) AS receiptableAmount IFNULL(T1.contractAmounts, 0) - IFNULL(T2.receiptPaymentAmount, 0) AS receiptableAmount from (select customer_id, sum(contract_amount) as contractAmounts from sales_ledger group by customer_id) T1 left join (select customer_id, sum(collection_amount) as receiptPaymentAmount from account_sales_collection group by customer_id) T2 on T1.customer_id = T2.customer_id left join ( SELECT sl.customer_id, sum(sor.stock_out_num * slp.tax_inclusive_unit_price) as outboundAmount FROM stock_out_record sor LEFT join shipping_info s on sor.record_id = s.id LEFT JOIN sales_ledger sl ON s.sales_ledger_id = sl.id LEFT JOIN sales_ledger_product slp ON s.sales_ledger_product_id = slp.id WHERE sor.record_type='13' and sor.approval_status=1 and slp.type = 1 group by sl.customer_id ) T3 on T3.customer_id=T1.customer_id left join ( select sl.customer_id, sum(rm.refund_amount) as returnAmount from return_management rm left join shipping_info si on rm.shipping_id = si.id left join sales_ledger sl on si.sales_ledger_id = sl.id where rm.status=1 group by sl.customer_id ) T4 on T4.customer_id=T1.customer_id left join customer c on T1.customer_id = c.id <where> <if test="customerName!=null and customerName!=''"> @@ -155,48 +132,16 @@ sl.execution_date, sl.contract_amount, IFNULL(T1.receiptPaymentAmount, 0) AS receiptPaymentAmount, IFNULL(T2.outboundAmount, 0) - IFNULL(T3.returnAmount, 0) AS receiptableAmount IFNULL(sl.contract_amount, 0) - IFNULL(T1.receiptPaymentAmount, 0) AS receiptableAmount from sales_ledger sl left join ( select sl.id, sum(t.collection_amount) as receiptPaymentAmount from ( select ascc.collection_amount, s.sales_ledger_id ascc.sales_ledger_id, sum(ascc.collection_amount) as receiptPaymentAmount from account_sales_collection ascc left join stock_out_record sor on FIND_IN_SET(sor.id, ascc.stock_out_record_ids) > 0 left join shipping_info s on sor.record_id = s.id where sor.record_type='13' and sor.approval_status=1 group by ascc.id, s.sales_ledger_id ) t left join sales_ledger sl on t.sales_ledger_id = sl.id group by sl.id )T1 on T1.id = sl.id left join ( SELECT sl.id, sum(sor.stock_out_num * slp.tax_inclusive_unit_price) as outboundAmount FROM stock_out_record sor left join shipping_info s on sor.record_id = s.id LEFT JOIN sales_ledger sl ON s.sales_ledger_id = sl.id LEFT JOIN sales_ledger_product slp ON s.sales_ledger_product_id = slp.id WHERE sor.record_type='13' and sor.approval_status=1 and slp.type = 1 group by sl.id )T2 on T2.id = sl.id left join ( select sl.id, sum(rm.refund_amount) as returnAmount from return_management rm left join shipping_info si on rm.shipping_id = si.id left join sales_ledger sl on si.sales_ledger_id = sl.id where rm.status=1 group by sl.id )T3 on T3.id = sl.id where ascc.sales_ledger_id is not null group by ascc.sales_ledger_id )T1 on T1.sales_ledger_id = sl.id where sl.customer_id = #{customerId} order by sl.id desc </select>