From 9c0f77a63226589b86e43ae105c0002b667b4847 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期三, 21 五月 2025 15:55:55 +0800
Subject: [PATCH] 来票登记逻辑更改
---
src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java | 62 +++++++++++++++++++++++++------
1 files changed, 50 insertions(+), 12 deletions(-)
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
index ef4d278..dee106e 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
@@ -74,31 +74,45 @@
@Override
public int addOrUpdateRegistration(TicketRegistrationDto ticketRegistrationDto) throws IOException {
+ // 1. 鏌ヨ閲囪喘鍙拌处璁板綍
PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(ticketRegistrationDto.getPurchaseLedgerId());
+ if (purchaseLedger == null) {
+ // 澶勭悊閲囪喘鍙拌处涓嶅瓨鍦ㄧ殑鎯呭喌锛屼緥濡傛姏鍑哄紓甯告垨杩斿洖閿欒
+ throw new IllegalArgumentException("閲囪喘鍙拌处璁板綍涓嶅瓨鍦紝ID: " + ticketRegistrationDto.getPurchaseLedgerId());
+ }
+
+ // 2. 鏌ヨ鏄惁宸插瓨鍦ㄧエ鎹櫥璁拌褰�
+ TicketRegistration existingRecord = ticketRegistrationMapper.selectOne(
+ new LambdaQueryWrapper<TicketRegistration>()
+ .eq(TicketRegistration::getPurchaseLedgerId, ticketRegistrationDto.getPurchaseLedgerId())
+ );
+
+ // 3. 鍒涘缓鎴栨洿鏂扮エ鎹櫥璁板疄浣�
TicketRegistration ticketRegistration = new TicketRegistration();
BeanUtils.copyProperties(ticketRegistrationDto, ticketRegistration);
+ if (existingRecord != null){
+ ticketRegistration.setId(existingRecord.getId());
+ }
ticketRegistration.setPurchaseContractNumber(purchaseLedger.getPurchaseContractNumber());
ticketRegistration.setTenantId(purchaseLedger.getTenantId());
ticketRegistration.setContractAmount(purchaseLedger.getContractAmount());
- // 澶勭悊瀛愯〃鏁版嵁
+
+ // 4. 澶勭悊瀛愯〃鏁版嵁
List<SalesLedgerProduct> productData = ticketRegistrationDto.getProductData();
- if (productData != null && !productData.isEmpty()) {
+ if (CollectionUtils.isNotEmpty(productData)) {
handleSalesLedgerProducts(purchaseLedger.getId(), productData, 2);
}
- // 鎵ц鎻掑叆鎴栨洿鏂版搷浣�
- int i;
- if (ticketRegistrationDto.getId() == null) {
- i = ticketRegistrationMapper.insert(ticketRegistration);
- } else {
- i = ticketRegistrationMapper.updateById(ticketRegistration);
- }
+ // 5. 鎵ц鎻掑叆鎴栨洿鏂版搷浣�
+ int rowsAffected = existingRecord != null
+ ? ticketRegistrationMapper.updateById(ticketRegistration)
+ : ticketRegistrationMapper.insert(ticketRegistration);
// 杩佺Щ涓存椂鏂囦欢鍒版寮忕洰褰�
if (ticketRegistrationDto.getTempFileIds() != null && !ticketRegistrationDto.getTempFileIds().isEmpty()) {
migrateTempFilesToFormal(ticketRegistration.getId(), ticketRegistrationDto.getTempFileIds());
}
- return i;
+ return rowsAffected;
}
@@ -216,8 +230,32 @@
// 鎵归噺鏇存柊锛堥渶瑕� MyBatis 鎻愪緵鎵归噺鏇存柊鏂规硶锛�
if (!updateList.isEmpty()) {
updateList.forEach(product -> {
- product.setFutureTickets(product.getQuantity().subtract(new BigDecimal(product.getTicketsNum())).longValue());
- product.setFutureTicketsAmount(product.getTaxExclusiveTotalPrice().subtract(product.getTicketsAmount()));
+ // 闈炵┖鏍¢獙锛屼换涓�瀛楁涓虹┖鍒欐姏鍑哄紓甯�
+ if (product.getQuantity() == null) {
+ throw new BaseException("鏁伴噺涓嶈兘涓虹┖");
+ }
+ if (product.getTicketsNum() == null) {
+ throw new BaseException("宸插紑绁ㄦ暟閲忎笉鑳戒负绌�");
+ }
+ if (product.getTaxExclusiveTotalPrice() == null) {
+ throw new BaseException("涓嶅惈绋庢�讳环涓嶈兘涓虹┖");
+ }
+ if (product.getTicketsAmount() == null) {
+ throw new BaseException("鏈鏉ョエ閲戦(鍏�)涓嶈兘涓虹┖");
+ }
+
+ // 璁$畻 futureTickets锛堢洿鎺ヤ娇鐢� BigDecimal 璁$畻锛岄伩鍏嶇簿搴︿涪澶憋級
+ product.setFutureTickets(
+ product.getQuantity()
+ .subtract(BigDecimal.valueOf(product.getTicketsNum()))
+ .longValueExact() // 浣跨敤 exact 鏂规硶纭繚鏃犲皬鏁伴儴鍒�
+ );
+
+ // 璁$畻 futureTicketsAmount
+ product.setFutureTicketsAmount(
+ product.getTaxExclusiveTotalPrice()
+ .subtract(product.getTicketsAmount())
+ );
product.setType(type);
salesLedgerProductMapper.updateById(product);
});
--
Gitblit v1.9.3