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