| doc/20260914_add_finance_auditor_id_to_account_payment_application.sql | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| doc/20260914_add_purchase_payment_fields_to_account_payment_application.sql | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| doc/20260914_move_bank_account_to_staff_salary_main.sql | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/account/pojo/purchase/AccountPaymentApplication.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/staff/pojo/StaffSalaryMain.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/ruoyi/staff/service/impl/StaffSalaryMainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/stock/StockInventoryMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
doc/20260914_add_finance_auditor_id_to_account_payment_application.sql
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,4 @@ -- 仿¬¾ç³è¯·"è´¢å¡å®¡æ ¸"åæ®µæ¹ä¸ºéæ©å®¡æ ¸äººåï¼æ°å¢å®¡æ ¸äººIDåï¼finance_auditor åå§åï¼ -- æ§è¡åºï¼product-inventory-managementï¼åç§æ·åºåï¼ ALTER TABLE `account_payment_application` ADD COLUMN `finance_auditor_id` bigint DEFAULT NULL COMMENT 'è´¢å¡å®¡æ ¸äººIDï¼sys_user.user_idï¼' AFTER `finance_auditor`; doc/20260914_add_purchase_payment_fields_to_account_payment_application.sql
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,7 @@ -- 仿¬¾ç³è¯·æ°å¢"å建éè´ä»æ¬¾"åæ åæ®µ -- æ§è¡åºï¼product-inventory-managementï¼åç§æ·åºåï¼ ALTER TABLE `account_payment_application` ADD COLUMN `payment_purpose` varchar(255) DEFAULT NULL COMMENT '款项ç¨é' AFTER `payment_content`, ADD COLUMN `project_name` varchar(255) DEFAULT NULL COMMENT '项ç®åç§°' AFTER `payment_purpose`, ADD COLUMN `operator_name` varchar(100) DEFAULT NULL COMMENT 'ç»å人' AFTER `project_name`, ADD COLUMN `finance_auditor` varchar(100) DEFAULT NULL COMMENT 'è´¢å¡å®¡æ ¸' AFTER `operator_name`; doc/20260914_move_bank_account_to_staff_salary_main.sql
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,5 @@ -- é¶è¡è´¦å·åæ®µè°æ´ï¼ä»å·¥èµæç»è¡¨ç§»å°å·¥èµä¸»è¡¨ï¼åºç¡èµæåæ ï¼ -- æ§è¡åºï¼product-inventory-managementï¼åç§æ·åºåï¼ ALTER TABLE `staff_salary_detail` DROP COLUMN `bank_account`; ALTER TABLE `staff_salary_main` ADD COLUMN `bank_account` varchar(19) DEFAULT NULL COMMENT 'é¶è¡è´¦å·ï¼16-19ä½çº¯æ°åï¼' AFTER `pay_bank`; src/main/java/com/ruoyi/account/pojo/purchase/AccountPaymentApplication.java
@@ -110,6 +110,36 @@ private String paymentContent; /** * 款项ç¨é */ @ApiModelProperty("款项ç¨é") private String paymentPurpose; /** * 项ç®åç§° */ @ApiModelProperty("项ç®åç§°") private String projectName; /** * ç»å人 */ @ApiModelProperty("ç»å人") private String operatorName; /** * è´¢å¡å®¡æ ¸ */ @ApiModelProperty("è´¢å¡å®¡æ ¸") private String financeAuditor; /** * è´¢å¡å®¡æ ¸äººIDï¼sys_user.user_idï¼ */ @ApiModelProperty("è´¢å¡å®¡æ ¸äººID") private Long financeAuditorId; /** * ç³è¯·æ¥æ */ @ApiModelProperty("ç³è¯·æ¥æ") src/main/java/com/ruoyi/staff/pojo/StaffSalaryMain.java
@@ -65,6 +65,9 @@ @Schema(description = "æ¯ä»é¶è¡") private String payBank; @Schema(description = "é¶è¡è´¦å·ï¼16-19ä½çº¯æ°åï¼") private String bankAccount; @TableField(exist = false) @Schema(description = "å建人") private String createUserName; src/main/java/com/ruoyi/staff/service/impl/StaffSalaryMainServiceImpl.java
@@ -22,6 +22,7 @@ import com.ruoyi.staff.service.StaffSalaryDetailService; import com.ruoyi.staff.service.StaffSalaryMainService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -43,6 +44,7 @@ */ @Service @RequiredArgsConstructor @Slf4j public class StaffSalaryMainServiceImpl extends ServiceImpl<StaffSalaryMainMapper, StaffSalaryMain> implements StaffSalaryMainService { private final StaffSalaryMainMapper staffSalaryMainMapper; @@ -81,6 +83,7 @@ if (staffSalaryMain == null || StringUtils.isEmpty(staffSalaryMain.getSalaryMonth())) { return AjaxResult.error("åæ°é误"); } validateBankAccount(staffSalaryMain.getBankAccount()); Integer status = staffSalaryMain.getStatus(); if (status != null && status == 5) { @@ -111,6 +114,7 @@ if(staffSalaryMain == null){ return AjaxResult.error("åæ°é误"); } validateBankAccount(staffSalaryMain.getBankAccount()); StaffSalaryMain staffSalaryMain1 = staffSalaryMainMapper.selectById(staffSalaryMain.getId()); if(staffSalaryMain1 == null){ return AjaxResult.error("åæ°é误"); @@ -154,6 +158,39 @@ return AjaxResult.success("ä¿®æ¹æå"); } /** * é¶è¡è´¦å·å åºæ ¡éªï¼ä» 纯æ°å + é¿åº¦16-19ä½ï¼ä¸ç¬¦ç´æ¥æ¦æªï¼ï¼ * Luhn æ ¡éªä» ä½åè¦ï¼ä¸é»ææäº¤ï¼ä¸ªå«èå¡/ç¹æ®å¡å¯è½ä¸éè¿ï¼ */ private void validateBankAccount(String account) { if (account == null || account.isBlank()) { return; } if (!account.matches("\\d{16,19}")) { throw new com.ruoyi.common.exception.ServiceException("é¶è¡è´¦å·æ ¼å¼ä¸æ£ç¡®ï¼é为16-19ä½çº¯æ°å"); } if (!luhnValid(account)) { log.warn("é¶è¡è´¦å· Luhn æ ¡éªæªéè¿ï¼ä» åè¦ï¼ä¸é»æï¼"); } } private boolean luhnValid(String account) { int sum = 0; boolean alternate = false; for (int i = account.length() - 1; i >= 0; i--) { int n = account.charAt(i) - '0'; if (alternate) { n *= 2; if (n > 9) { n -= 9; } } sum += n; alternate = !alternate; } return sum % 10 == 0; } @Override public AjaxResult delete(List<Long> ids) { if(CollectionUtils.isEmpty(ids)){ src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -1126,7 +1126,7 @@ product_name, product_id order by batch_no MAX(update_time) desc </select> </mapper>