From 000112976716cb6676e61b35e818481db8eb99a1 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期日, 11 十月 2026 14:46:40 +0800
Subject: [PATCH] 天津-奇缘恒艺 录数据需求修改
---
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | 76 +++++++++++++++++++++++++++++--------
1 files changed, 59 insertions(+), 17 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 b3a7727..84b849c 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -18,6 +18,8 @@
import com.ruoyi.basic.mapper.ProductMapper;
import com.ruoyi.basic.mapper.ProductModelMapper;
import com.ruoyi.basic.pojo.Customer;
+import com.ruoyi.basic.pojo.ProductModel;
+import com.ruoyi.basic.service.IProductService;
import com.ruoyi.basic.utils.FileUtil;
import com.ruoyi.common.enums.FileNameType;
import com.ruoyi.common.enums.SaleEnum;
@@ -38,8 +40,6 @@
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysDeptMapper;
import com.ruoyi.project.system.mapper.SysUserMapper;
-import com.ruoyi.purchase.dto.SimpleReturnOrderGroupDto;
-import com.ruoyi.purchase.mapper.PurchaseReturnOrderProductsMapper;
import com.ruoyi.quality.mapper.QualityInspectMapper;
import com.ruoyi.sales.dto.*;
import com.ruoyi.sales.mapper.CommonFileMapper;
@@ -108,6 +108,7 @@
private final FileUtil fileUtil;
private final AccountInvoiceApplicationMapper accountInvoiceApplicationMapper;
private final AccountSalesCollectionMapper accountSalesCollectionMapper;
+ private final IProductService productService;
@Autowired
private SysDeptMapper sysDeptMapper;
@@ -120,9 +121,6 @@
private ProductMapper productMapper;
@Autowired
private ProductionProductMainService productionProductMainService;
- @Autowired
- private PurchaseReturnOrderProductsMapper purchaseReturnOrderProductsMapper;
- ;
@Autowired
private SysUserMapper sysUserMapper;
@@ -148,17 +146,11 @@
productWrapper.eq(SalesLedgerProduct::getType, type.getCode());
List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(productWrapper);
if (type.equals(SaleEnum.PURCHASE)) {
- // 鏌ヨ閫�璐т俊鎭�
- List<Long> productIds = salesLedgerProducts.stream().map(SalesLedgerProduct::getProductModelId).collect(Collectors.toList());
- List<SimpleReturnOrderGroupDto> groupListByProductIds = new ArrayList<>();
- if(CollectionUtils.isNotEmpty(productIds)){
- groupListByProductIds = purchaseReturnOrderProductsMapper.getReturnOrderGroupListByProductIds(productIds);
- }
- Map<Long, BigDecimal> returnOrderGroupDtoMap = groupListByProductIds.stream().collect(Collectors.toMap(SimpleReturnOrderGroupDto::getProductModelId, SimpleReturnOrderGroupDto::getSumReturnQuantity));
salesLedgerProducts.forEach(item -> {
- BigDecimal returnQuality = returnOrderGroupDtoMap.getOrDefault(item.getProductModelId(), BigDecimal.ZERO);
- item.setReturnQuality(returnQuality);
- item.setAvailableQuality(item.getQuantity().subtract(returnQuality));
+ BigDecimal returnQuantity = item.getReturnQuantity() == null ? BigDecimal.ZERO : item.getReturnQuantity();
+ item.setReturnQuantity(returnQuantity);
+ BigDecimal quantity = item.getQuantity() == null ? BigDecimal.ZERO : item.getQuantity();
+ item.setAvailableQuality(quantity.subtract(returnQuantity));
});
}
return salesLedgerProducts;
@@ -338,7 +330,7 @@
.in("customer_name", salesLedgerImportDtoList.stream()
.map(SalesLedgerImportDto::getCustomerName).collect(Collectors.toList()))
.and(wrapper -> wrapper.eq("type", 0)
- .or(wrapper2 -> wrapper2.eq("type", 1).eq("is_assigned", 1)))
+ .or(wrapper2 -> wrapper2.eq("type", 1).eq("usage_status", 1)))
.and(wrapper -> wrapper.eq("usage_user", loginUserId)
.or(wrapper2 -> wrapper2.eq("create_user", loginUserId)
.or(wrapper3 -> wrapper3.exists("select 1 from customer_user cu where cu.customer_id = customer.id and cu.user_id = " + loginUserId)))));
@@ -396,6 +388,7 @@
salesLedger.setContractAmount(salesLedgerProductImportDtos.stream()
.map(SalesLedgerProductImportDto::getTaxInclusiveTotalPrice)
.reduce(BigDecimal.ZERO, BigDecimal::add));
+ salesLedger.setNetContractAmount(salesLedger.getContractAmount());
salesLedgerMapper.insert(salesLedger);
@@ -601,7 +594,18 @@
);
}
- // 5. 淇濆瓨閿�鍞彴璐﹂檮浠�
+ // 5. 鍏滃簳锛氱‘淇濆疄闄呭悎鍚岄噾棰濇湁鍒濆鍊肩瓑浜庡悎鍚岄噾棰�
+ if (salesLedger.getNetContractAmount() == null) {
+ SalesLedger dbLedger = salesLedgerMapper.selectById(salesLedger.getId());
+ if (dbLedger != null && dbLedger.getNetContractAmount() == null && dbLedger.getContractAmount() != null) {
+ SalesLedger updateEntity = new SalesLedger();
+ updateEntity.setId(salesLedger.getId());
+ updateEntity.setNetContractAmount(dbLedger.getContractAmount());
+ salesLedgerMapper.updateById(updateEntity);
+ }
+ }
+
+ // 6. 淇濆瓨閿�鍞彴璐﹂檮浠�
fileUtil.saveStorageAttachment(ApplicationTypeEnum.FILE, RecordTypeEnum.SALES_LEDGER, salesLedger.getId(), salesLedgerDto.getStorageBlobDTOs());
return 1;
@@ -609,6 +613,13 @@
@Override
public void handleSalesLedgerProducts(Long salesLedgerId, List<SalesLedgerProduct> products, SaleEnum type) {
+ // 閿�鍞彴璐︽墜宸ュ綍鍏ャ�屽搧鍚�+鏉愯川+瑙勬牸鍨嬪彿銆嶆椂锛岃嚜鍔ㄦ敞鍐屽埌浜у搧缁存姢
+ if (SaleEnum.SALE.equals(type)) {
+ for (SalesLedgerProduct product : products) {
+ registerProductFromLedgerProduct(product);
+ }
+ }
+
// 鎸塈D鍒嗙粍锛屽尯鍒嗘柊澧炲拰鏇存柊鐨勮褰�
Map<Boolean, List<SalesLedgerProduct>> partitionedProducts = products.stream()
.peek(p -> p.setSalesLedgerId(salesLedgerId))
@@ -632,6 +643,28 @@
// 娣诲姞鐢熶骇鏁版嵁
salesLedgerProductServiceImpl.addProductionData(salesLedgerProduct);
}
+ }
+ }
+
+ /**
+ * 鎵嬪伐褰曞叆銆屽搧鍚�+鏉愯川+瑙勬牸鍨嬪彿銆嶆椂锛屽湪浜у搧缁存姢鑷姩娉ㄥ唽锛�
+ * 鍝佸悕=涓�绾уぇ绫伙紝鏉愯川=澶х被涓嬬殑瀛愮被锛岃鏍煎瀷鍙�=瀛愮被涓嬬殑瑙勬牸
+ */
+ private void registerProductFromLedgerProduct(SalesLedgerProduct product) {
+ String productName = StringUtils.trim(product.getProductCategory());
+ String material = StringUtils.trim(product.getMaterial());
+ String modelName = StringUtils.trim(product.getSpecificationModel());
+ if (StringUtils.isEmpty(productName) || StringUtils.isEmpty(material) || StringUtils.isEmpty(modelName)) {
+ return;
+ }
+ product.setProductCategory(productName);
+ product.setMaterial(material);
+ product.setSpecificationModel(modelName);
+
+ ProductModel productModel = productService.ensureProductHierarchy(productName, material, modelName, product.getUnit());
+ if (productModel != null) {
+ product.setProductId(productModel.getProductId());
+ product.setProductModelId(productModel.getId());
}
}
@@ -739,6 +772,15 @@
amountField.setAccessible(true);
amountField.set(entity, totalAmount);
+ // 瀹為檯鍚堝悓閲戦鍒濆鍊肩瓑浜庡悎鍚岄噾棰�
+ try {
+ Field netAmountField = mainEntityClass.getDeclaredField("netContractAmount");
+ netAmountField.setAccessible(true);
+ netAmountField.set(entity, totalAmount);
+ } catch (NoSuchFieldException ignored) {
+ // 瀛愮被鍙兘娌℃湁璇ュ瓧娈碉紝蹇界暐
+ }
+
mainMapper.updateById(entity);
} catch (Exception e) {
throw new RuntimeException("鍔ㄦ�佹洿鏂颁富琛ㄩ噾棰濆け璐�", e);
--
Gitblit v1.9.3