From 53dde9c7ba6a26d44bfd5ccf0c0cdb37ada9288a Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期三, 16 九月 2026 19:56:41 +0800
Subject: [PATCH] fix: 产品父类名称适配
---
src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java | 85 ++++++++++++++++++++++++++++--------------
1 files changed, 57 insertions(+), 28 deletions(-)
diff --git a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
index f09323d..eaf062b 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -185,28 +185,31 @@
LambdaQueryWrapper<PurchaseLedger> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.ge(PurchaseLedger::getEntryDate, currentMonth.atDay(1).atStartOfDay()) // 澶т簬绛変簬鏈湀绗竴澶�
.lt(PurchaseLedger::getEntryDate, currentMonth.plusMonths(1).atDay(1).atStartOfDay()); // 灏忎簬涓嬫湀绗竴澶�
- // 鎵ц鏌ヨ骞惰绠楁�诲拰
+
List<PurchaseLedger> purchaseLedgers = purchaseLedgerMapper.selectList(queryWrapper);
if (!CollectionUtils.isEmpty(purchaseLedgers)) {
- LambdaQueryWrapper<SalesLedgerProduct> salesLedgerProductMapperLambdaQueryWrapperCopy = new LambdaQueryWrapper<SalesLedgerProduct>();
- salesLedgerProductMapperLambdaQueryWrapperCopy.eq(SalesLedgerProduct::getType, 2)
+ LambdaQueryWrapper<SalesLedgerProduct> salesLedgerProductMapperLambdaQueryWrapperCopy = new LambdaQueryWrapper<>();
+ salesLedgerProductMapperLambdaQueryWrapperCopy.eq(SalesLedgerProduct::getType, 2) // 閲囪喘绫诲瀷
.in(SalesLedgerProduct::getSalesLedgerId,
purchaseLedgers.stream().map(PurchaseLedger::getId).collect(Collectors.toList()));
+
List<SalesLedgerProduct> salesLedgerProductsCopy = salesLedgerProductMapper
.selectList(salesLedgerProductMapperLambdaQueryWrapperCopy);
- // 鍚堣鍚堝悓閲戦
+
+ // 鍚堣鍚堝悓鎬婚噾棰�
BigDecimal receiveAmount = purchaseLedgers.stream()
.map(PurchaseLedger::getContractAmount)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
- // 鏈紑绁ㄩ噾棰�
+
+ // 寰呬粯娆炬�婚噾棰�
BigDecimal unReceiptPaymentAmount = salesLedgerProductsCopy.stream()
- .map(SalesLedgerProduct::getNoInvoiceAmount)
+ .map(SalesLedgerProduct::getPendingTicketsTotal)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
+
homeBusinessDto.setMonthPurchaseMoney(receiveAmount.setScale(2, RoundingMode.HALF_UP).toString());
- homeBusinessDto
- .setMonthPurchaseHaveMoney(unReceiptPaymentAmount.setScale(2, RoundingMode.HALF_UP).toString());
+ homeBusinessDto.setMonthPurchaseHaveMoney(unReceiptPaymentAmount.setScale(2, RoundingMode.HALF_UP).toString());
}
// 缁熻搴撳瓨
BigDecimal stockQuantityTotal = stockInventoryMapper.selectTotal();
@@ -2110,33 +2113,23 @@
continue;
}
- // 鎵惧埌浜у搧澶х被
- Product parent = product.getParentId() == null
- ? product
- : productMap.get(product.getParentId());
+ // 鎵惧埌浜у搧搴撴牴鑺傜偣锛堜骇鍝佸ぇ绫伙級
+ Product rootProduct = findRootProduct(product, productMap);
- if (parent == null) {
- continue;
- }
+ String categoryTitle = resolveProductCategory(rootProduct.getProductName());
- switch (parent.getProductName()) {
- case "鍘熸潗鏂�":
- rawMaterialCount = rawMaterialCount.add(quantity);
- break;
- case "鍗婃垚鍝�":
- semiFinishedCount = semiFinishedCount.add(quantity);
- break;
- case "鎴愬搧":
- finishedCount = finishedCount.add(quantity);
- break;
- default:
- break;
+ if ("鍘熸潗鏂�".equals(categoryTitle)) {
+ rawMaterialCount = rawMaterialCount.add(quantity);
+ } else if ("鍗婃垚鍝�".equals(categoryTitle)) {
+ semiFinishedCount = semiFinishedCount.add(quantity);
+ } else if ("鎴愬搧".equals(categoryTitle)) {
+ finishedCount = finishedCount.add(quantity);
}
// 缁勮鏄庣粏
NonComplianceWarningDto.Item child = new NonComplianceWarningDto.Item();
// child.setProductTitle(item.getProductName());
- child.setParentProductTitle(parent.getProductName());
+ child.setParentProductTitle(categoryTitle);
child.setProductTitle(item.getProductName());
child.setDescription(item.getDefectivePhenomena());
child.setDate(formatDate(item.getCheckTime()));
@@ -2155,6 +2148,42 @@
return dto;
}
+ /**
+ * 鍚戜笂鏌ユ壘浜у搧搴撴牴鑺傜偣锛堜骇鍝佸ぇ绫伙級
+ */
+ private Product findRootProduct(Product product, Map<Long, Product> productMap) {
+ Product current = product;
+ int depth = 0;
+ while (current.getParentId() != null && depth++ < 20) {
+ Product parent = productMap.get(current.getParentId());
+ if (parent == null) {
+ break;
+ }
+ current = parent;
+ }
+ return current;
+ }
+
+ /**
+ * 鏍规嵁浜у搧搴撴牴鑺傜偣鍚嶇О璇嗗埆浜у搧澶х被锛氬師鏉愭枡/鍗婃垚鍝�/鎴愬搧
+ * 娉ㄦ剰鍏堝垽鏂崐鎴愬搧锛岄伩鍏嶈鎴愬搧鍖呭惈
+ */
+ private String resolveProductCategory(String rootName) {
+ if (rootName == null) {
+ return "";
+ }
+ if (rootName.contains("鍗婃垚鍝�")) {
+ return "鍗婃垚鍝�";
+ }
+ if (rootName.contains("鎴愬搧")) {
+ return "鎴愬搧";
+ }
+ if (rootName.contains("鍘熸潗鏂�")) {
+ return "鍘熸潗鏂�";
+ }
+ return rootName;
+ }
+
private BigDecimal calcRate(BigDecimal part, BigDecimal total) {
if (total == null || total.compareTo(BigDecimal.ZERO) == 0) {
return BigDecimal.ZERO.setScale(2);
--
Gitblit v1.9.3