From 0f30de7a92a189c23c0a7f8734f0434e1764a723 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期五, 24 四月 2026 17:41:09 +0800
Subject: [PATCH] refactor(sales): 优化销售台账服务实现代码结构
---
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | 102 +++++++++++++++++++++++++--------------------------
1 files changed, 50 insertions(+), 52 deletions(-)
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index fb94028..65a4600 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -531,6 +531,7 @@
exportProcessContractToWord(exportProcessContract);
}
+
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult importSalsesLedger(MultipartFile file) {
@@ -569,7 +570,7 @@
continue;
}
- if (importDto.getQuantity() == null ) {
+ if (importDto.getQuantity() == null) {
errorMessages.add(String.format("绗�%d琛岋細鏁伴噺涓嶈兘涓虹┖", rowNum));
skipCount++;
continue;
@@ -603,7 +604,7 @@
salesLedger.setCustomerId(matchedCustomer.getId());
salesLedger.setCustomerContractNo(matchedCustomer.getTaxpayerIdentificationNumber());
Date date = importDto.getOrderDate();
- if (ObjectUtils.isEmpty(date)){
+ if (ObjectUtils.isEmpty(date)) {
date = lastDate;
}
lastDate = date;
@@ -804,58 +805,56 @@
@Override
@Transactional(rollbackFor = Exception.class)
public int addOrUpdateSalesLedger(SalesLedgerDto salesLedgerDto) {
- // 1. 鏍¢獙瀹㈡埛淇℃伅
- CustomerPrivatePoolDto customer = customerPrivatePoolMapper.selectInfo(salesLedgerDto.getCustomerId());
- if (customer == null) {
- throw new BaseException("瀹㈡埛涓嶅瓨鍦�");
- }
- // 蹇呴』濉啓閿�鍞悎鍚屽彿
+ // 1. 鏍¢獙瀹㈡埛淇℃伅
+ CustomerPrivatePoolDto customer = customerPrivatePoolMapper.selectInfo(salesLedgerDto.getCustomerId());
+ if (customer == null) {
+ throw new BaseException("瀹㈡埛涓嶅瓨鍦�");
+ }
+ // 蹇呴』濉啓閿�鍞悎鍚屽彿
// Assert.notNull(salesLedgerDto.getSalesContractNo(), "閿�鍞悎鍚屽彿涓嶈兘涓虹┖");
- // 2. DTO杞珽ntity
- SalesLedger salesLedger = convertToEntity(salesLedgerDto);
- salesLedger.setCustomerName(customer.getCustomerName());
- salesLedger.setTenantId(customer.getTenantId());
+ // 2. DTO杞珽ntity
+ SalesLedger salesLedger = convertToEntity(salesLedgerDto);
+ salesLedger.setCustomerName(customer.getCustomerName());
+ salesLedger.setTenantId(customer.getTenantId());
- // 3. 鏂板鎴栨洿鏂颁富琛�
- if (salesLedger.getId() == null) {
- // 涓虹┖ 鑷姩鐢熸垚
- String contractNo =StrUtil.isBlank(salesLedgerDto.getSalesContractNo())? generateSalesContractNoBy8Date():salesLedgerDto.getSalesContractNo();
- // 涓嶈兘鏈夐噸澶嶆暟鎹殑鍚堝悓鍙�
- Assert.isTrue(salesLedgerMapper.selectOne(new LambdaQueryWrapper<SalesLedger>()
- .eq(SalesLedger::getSalesContractNo, contractNo)
- .last("limit 1")) == null, contractNo+"鍚堝悓鍙峰凡瀛樺湪");
- salesLedger.setSalesContractNo(contractNo);
- salesLedgerMapper.insert(salesLedger);
- } else {
- salesLedger.setSalesContractNo(null);
- salesLedgerMapper.updateById(salesLedger);
- }
+ // 3. 鏂板鎴栨洿鏂颁富琛�
+ if (salesLedger.getId() == null) {
+ // 涓虹┖ 鑷姩鐢熸垚
+ String contractNo = StrUtil.isBlank(salesLedgerDto.getSalesContractNo()) ? generateSalesContractNoBy8Date() : salesLedgerDto.getSalesContractNo();
+ // 涓嶈兘鏈夐噸澶嶆暟鎹殑鍚堝悓鍙�
+ Assert.isTrue(salesLedgerMapper.selectOne(new LambdaQueryWrapper<SalesLedger>()
+ .eq(SalesLedger::getSalesContractNo, contractNo)
+ .last("limit 1")) == null, contractNo + "鍚堝悓鍙峰凡瀛樺湪");
+ salesLedger.setSalesContractNo(contractNo);
+ salesLedgerMapper.insert(salesLedger);
+ } else {
+ salesLedger.setSalesContractNo(null);
+ salesLedgerMapper.updateById(salesLedger);
+ }
- // 4. 澶勭悊瀛愯〃鏁版嵁
- List<SalesLedgerProduct> productList = salesLedgerDto.getProductData();
- for (SalesLedgerProduct product : productList) {
- //绌虹殑鍏堟柊澧炲熀纭�鏁版嵁 闈炵┖鐩存帴寰�涓嬭蛋
- if (ObjectUtils.isEmpty(product.getProductModelId())) {
- ProductModelAnticlockwiseDto productModelAnticlockwiseDto = new ProductModelAnticlockwiseDto();
- productModelAnticlockwiseDto.setModel(product.getSpecificationModel());
- productModelAnticlockwiseDto.setProductName(product.getProductCategory());
- productModelAnticlockwiseDto.setUnit(product.getUnit());
- productModelAnticlockwiseDto.setSubUnit(product.getUnit());
- Long productModelId = productModelService.productModelAnticlockwise(productModelAnticlockwiseDto);
- product.setProductModelId(productModelId);
- }
- }
- if (productList != null && !productList.isEmpty()) {
- handleSalesLedgerProducts(salesLedger.getId(), productList, EnumUtil.fromCode(SaleEnum.class, salesLedgerDto.getType()));
- updateMainContractAmount(
- salesLedger.getId(),
- productList,
- SalesLedgerProduct::getTaxInclusiveTotalPrice,
- salesLedgerMapper,
- SalesLedger.class
- );
- }
+ // 4. 澶勭悊瀛愯〃鏁版嵁
+ List<SalesLedgerProduct> productList = salesLedgerDto.getProductData();
+ for (SalesLedgerProduct product : productList) {
+ //绌虹殑鍏堟柊澧炲熀纭�鏁版嵁 闈炵┖鐩存帴寰�涓嬭蛋
+ ProductModelAnticlockwiseDto productModelAnticlockwiseDto = new ProductModelAnticlockwiseDto();
+ productModelAnticlockwiseDto.setModel(product.getSpecificationModel());
+ productModelAnticlockwiseDto.setProductName(product.getProductCategory());
+ productModelAnticlockwiseDto.setUnit(product.getUnit());
+ productModelAnticlockwiseDto.setSubUnit(product.getUnit());
+ Long productModelId = productModelService.productModelAnticlockwise(productModelAnticlockwiseDto);
+ product.setProductModelId(productModelId);
+ }
+ if (productList != null && !productList.isEmpty()) {
+ handleSalesLedgerProducts(salesLedger.getId(), productList, EnumUtil.fromCode(SaleEnum.class, salesLedgerDto.getType()));
+ updateMainContractAmount(
+ salesLedger.getId(),
+ productList,
+ SalesLedgerProduct::getTaxInclusiveTotalPrice,
+ salesLedgerMapper,
+ SalesLedger.class
+ );
+ }
try {
// 5. 杩佺Щ涓存椂鏂囦欢鍒版寮忕洰褰�
@@ -982,7 +981,7 @@
return entity;
}
- public String generateSalesContractNoBy8Date(){
+ public String generateSalesContractNoBy8Date() {
String yyMM = DateUtil.format(new Date(), "yyMM");
// 鏌ヨ涓�涓湀鏈夊灏戣鍗�
Date begin = DateUtil.beginOfMonth(new Date());
@@ -993,7 +992,6 @@
Long seq = Optional.of(count).orElse(0L) + 1;
return String.format("%s%04d", yyMM, seq);
}
-
@Transactional(readOnly = true)
--
Gitblit v1.9.3