From 6f0df10fdd0e55e5ed3e31b1720efd25e2bf02fb Mon Sep 17 00:00:00 2001
From: yuan <123@>
Date: 星期三, 16 九月 2026 18:51:12 +0800
Subject: [PATCH] fix: 添加条件过滤以确保查询结果中合格数量大于零
---
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java | 111 ++++++++++++++++++-------------------------------------
1 files changed, 36 insertions(+), 75 deletions(-)
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
index daf5d88..4dae74c 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -3,9 +3,8 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.AmountUtils;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.production.mapper.*;
@@ -14,7 +13,6 @@
import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
import com.ruoyi.purchase.pojo.PurchaseLedger;
import com.ruoyi.quality.mapper.QualityInspectMapper;
-import com.ruoyi.sales.dto.SalesLedgerProductDto;
import com.ruoyi.sales.mapper.SalesLedgerMapper;
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
import com.ruoyi.sales.mapper.ShippingInfoMapper;
@@ -92,7 +90,9 @@
@Override
public SalesLedgerProduct selectSalesLedgerProductById(Long id) {
- return salesLedgerProductMapper.selectById(id);
+ SalesLedgerProduct product = salesLedgerProductMapper.selectById(id);
+ AmountUtils.normalizeSalesLedgerProduct(product);
+ return product;
}
@Override
@@ -100,6 +100,7 @@
List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectSalesLedgerProductList(salesLedgerProduct);
if(!CollectionUtils.isEmpty(salesLedgerProducts)){
salesLedgerProducts.forEach(item -> {
+ AmountUtils.normalizeSalesLedgerProduct(item);
// 鍙戣揣淇℃伅
ShippingInfo shippingInfo = shippingInfoMapper.selectOne(new LambdaQueryWrapper<ShippingInfo>()
.eq(ShippingInfo::getSalesLedgerProductId, item.getId())
@@ -167,18 +168,7 @@
@Override
@Transactional(rollbackFor = Exception.class)
public int addOrUpdateSalesLedgerProduct(SalesLedgerProduct salesLedgerProduct) {
- // 寰呭洖娆撅紝浠樻
- if(salesLedgerProduct.getType().equals(1)){
- salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(salesLedgerProduct.getInvoiceTotal()));
- //鏈紑绁ㄦ暟閲�+閲戦
- salesLedgerProduct.setNoInvoiceNum(salesLedgerProduct.getQuantity());
- salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getTaxInclusiveTotalPrice());
- }else{
- salesLedgerProduct.setPendingTicketsTotal(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(salesLedgerProduct.getTicketsTotal()));
- // 鏈潵绁ㄦ暟閲�+閲戦
- salesLedgerProduct.setFutureTickets(salesLedgerProduct.getQuantity());
- salesLedgerProduct.setFutureTicketsAmount(salesLedgerProduct.getTaxInclusiveTotalPrice());
- }
+ AmountUtils.normalizeSalesLedgerProduct(salesLedgerProduct);
int result;
Long salesLedgerId = salesLedgerProduct.getSalesLedgerId();
@@ -188,7 +178,6 @@
addProductionData(salesLedgerProduct);
} else {
//鏌ヨ鍘熸湰鐨勪骇鍝佸瀷鍙穒d
- salesLedgerProduct.setFutureTickets(salesLedgerProduct.getQuantity());
result = salesLedgerProductMapper.updateById(salesLedgerProduct);
/*鍒犻櫎瀵瑰簲鐨勭敓浜ф暟鎹苟閲嶆柊鏂板*/
deleteProductionData(Arrays.asList(salesLedgerProduct.getId()));
@@ -231,21 +220,20 @@
*/
public void addProductionData(SalesLedgerProduct salesLedgerProduct) {
//鍏堝垽鏂浜у搧鏄惁闇�瑕佺敓浜�
- if (!salesLedgerProduct.getIsProduction()) {
- return;
+ if (Boolean.TRUE.equals(salesLedgerProduct.getIsProduction())) {
+ SalesLedger salesLedger = salesLedgerMapper.selectById(salesLedgerProduct.getSalesLedgerId());
+ ProductionPlan productionPlan = new ProductionPlan();
+ productionPlan.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId());
+ productionPlan.setSalesLedgerProductId(salesLedgerProduct.getId());
+ productionPlan.setMpsNo(generateNextPlanNo(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"))));
+ productionPlan.setProductModelId(salesLedgerProduct.getProductModelId());
+ productionPlan.setQtyRequired(salesLedgerProduct.getQuantity());
+ productionPlan.setSource("閿�鍞�");
+ productionPlan.setStatus(0);
+ productionPlan.setRequiredDate(salesLedger.getDeliveryDate());//闇�姹傛棩鏈�=浜よ揣鏃ユ湡
+ productionPlan.setPromisedDeliveryDate(salesLedger.getDeliveryDate());//鎵胯鏃ユ湡=浜よ揣鏃ユ湡
+ productionPlanMapper.insert(productionPlan);
}
- SalesLedger salesLedger = salesLedgerMapper.selectById(salesLedgerProduct.getSalesLedgerId());
- ProductionPlan productionPlan = new ProductionPlan();
- productionPlan.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId());
- productionPlan.setSalesLedgerProductId(salesLedgerProduct.getId());
- productionPlan.setMpsNo(generateNextPlanNo(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"))));
- productionPlan.setProductModelId(salesLedgerProduct.getProductModelId());
- productionPlan.setQtyRequired(salesLedgerProduct.getQuantity());
- productionPlan.setSource("閿�鍞�");
- productionPlan.setStatus(0);
- productionPlan.setRequiredDate(salesLedger.getDeliveryDate());//闇�姹傛棩鏈�=浜よ揣鏃ユ湡
- productionPlan.setPromisedDeliveryDate(salesLedger.getDeliveryDate());//鎵胯鏃ユ湡=浜よ揣鏃ユ湡
- productionPlanMapper.insert(productionPlan);
}
@@ -268,34 +256,6 @@
}
List<Long> ids = productionPlans.stream().map(ProductionPlan::getId).collect(Collectors.toList());
productionPlanMapper.deleteByIds(ids);
- }
-
- @Override
- public IPage<SalesLedgerProductDto> listPage(Page page, SalesLedgerProductDto salesLedgerProduct) {
- IPage<SalesLedgerProductDto> salesLedgerProductDtoIPage = salesLedgerProductMapper.listPage(page, salesLedgerProduct);
- salesLedgerProductDtoIPage.getRecords().forEach(item -> {
- // 鍒ゆ柇鐘舵��
- if(item.getTaxInclusiveTotalPrice().compareTo(item.getInvoiceTotal()) == 0){
- item.setStatusName("宸插畬鎴愪粯娆�");
- }else{
- item.setStatusName("鏈畬鎴愪粯娆�");
- }
- });
- return salesLedgerProductDtoIPage;
- }
-
- @Override
- public IPage<SalesLedgerProductDto> listPagePurchaseLedger(Page page, SalesLedgerProductDto salesLedgerProduct) {
- IPage<SalesLedgerProductDto> salesLedgerProductDtoIPage = salesLedgerProductMapper.listPagePurchaseLedger(page, salesLedgerProduct);
- salesLedgerProductDtoIPage.getRecords().forEach(item -> {
- // 鍒ゆ柇鐘舵��
- if(item.getTaxInclusiveTotalPrice().compareTo(item.getTicketsTotal()) == 0){
- item.setStatusName("宸插畬鎴愪粯娆�");
- }else{
- item.setStatusName("鏈畬鎴愪粯娆�");
- }
- });
- return salesLedgerProductDtoIPage;
}
/**
@@ -325,7 +285,7 @@
Field amountField = mainEntityClass.getDeclaredField("contractAmount");
amountField.setAccessible(true);
- amountField.set(entity, totalAmount);
+ amountField.set(entity, AmountUtils.scaleAmount(totalAmount));
mainMapper.updateById(entity);
} catch (Exception e) {
@@ -348,29 +308,30 @@
}
int count = 0;
StringBuilder stringBuffer = new StringBuilder();
+ // 鎵佸钩BOM鍙淮鎶も�滅墿鏂欒鏍� + 娑堣�楀伐搴忊�濓紝涓嶉厤缃敤閲忥紝
+ // 鍥犳杩欓噷鍙牎楠屾瘡涓墿鏂欐槸鍚︽湁鍙敤搴撳瓨锛屼笉鍐嶆寜鍗曚綅鐢ㄩ噺鏍哥畻闇�姹傛暟閲忋��
for (TechnologyBomStructureVo structure : structureList) {
- if (structure.getParentId() == null) {
+ if (structure == null || structure.getProductModelId() == null) {
continue;
}
- StockInventory stockInventory = stockInventoryMapper.selectOne(
- new QueryWrapper<StockInventory>().lambda().eq(StockInventory::getProductModelId, structure.getProductModelId()));
- if (stockInventory == null) {
- count++;
- stringBuffer.append(structure.getProductName()).append("-").append(structure.getModel()).append("搴撳瓨涓嶈冻").append(System.lineSeparator());
- continue;
+ List<StockInventory> stockList = stockInventoryMapper.selectList(
+ new QueryWrapper<StockInventory>().lambda()
+ .eq(StockInventory::getProductModelId, structure.getProductModelId()));
+ BigDecimal available = BigDecimal.ZERO;
+ for (StockInventory stockInventory : stockList) {
+ if (stockInventory == null) {
+ continue;
+ }
+ BigDecimal quantity = stockInventory.getQualitity() == null ? BigDecimal.ZERO : stockInventory.getQualitity();
+ BigDecimal locked = stockInventory.getLockedQuantity() == null ? BigDecimal.ZERO : stockInventory.getLockedQuantity();
+ available = available.add(quantity.subtract(locked));
}
- BigDecimal required = salesLedgerProduct.getQuantity().multiply(structure.getUnitQuantity() == null ? BigDecimal.ZERO : structure.getUnitQuantity());
- BigDecimal remain = stockInventory.getQualitity()
- .subtract(stockInventory.getLockedQuantity())
- .subtract(required)
- .divide(BigDecimal.ONE, 2, RoundingMode.CEILING);
- if (remain.compareTo(BigDecimal.ZERO) < 0) {
+ if (available.compareTo(BigDecimal.ZERO) <= 0) {
count++;
stringBuffer.append(structure.getProductName())
.append("-")
.append(structure.getModel())
- .append("搴撳瓨涓嶈冻锛屽皯")
- .append(remain.abs())
+ .append("鏃犲彲鐢ㄥ簱瀛�")
.append(System.lineSeparator());
}
}
--
Gitblit v1.9.3