From d1fac30e634e33edd29e3440de1f91da84c150c1 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 05 六月 2026 15:38:39 +0800
Subject: [PATCH] feat(account): 新增付款状态管理功能并优化生产任务查询
---
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java | 123 +++++++++++++++-------------------------
1 files changed, 47 insertions(+), 76 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 a827cb8..4dc8bab 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,9 @@
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.basic.mapper.ProductModelMapper;
+import com.ruoyi.basic.pojo.ProductModel;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.production.mapper.*;
@@ -14,9 +14,6 @@
import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
import com.ruoyi.purchase.pojo.PurchaseLedger;
import com.ruoyi.quality.mapper.QualityInspectMapper;
-import com.ruoyi.sales.dto.InvoiceRegistrationProductDto;
-import com.ruoyi.sales.dto.SalesLedgerProductDto;
-import com.ruoyi.sales.mapper.InvoiceRegistrationProductMapper;
import com.ruoyi.sales.mapper.SalesLedgerMapper;
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
import com.ruoyi.sales.mapper.ShippingInfoMapper;
@@ -76,8 +73,6 @@
@Autowired
private TechnologyBomStructureMapper technologyBomStructureMapper;
@Autowired
- private InvoiceRegistrationProductMapper invoiceRegistrationProductMapper;
- @Autowired
private ProductionProductMainMapper productionProductMainMapper;
@Autowired
private ProductionProductOutputMapper productionProductOutputMapper;
@@ -93,6 +88,8 @@
private StockUtils stockUtils;
@Autowired
private StockInventoryMapper stockInventoryMapper;
+ @Autowired
+ private ProductModelMapper productModelMapper;
@Override
public SalesLedgerProduct selectSalesLedgerProductById(Long id) {
@@ -116,34 +113,6 @@
item.setExpressNumber(shippingInfo.getExpressNumber());
}
});
- // 寮�绁�
- InvoiceRegistrationProductDto invoiceRegistrationProductDto = new InvoiceRegistrationProductDto();
- invoiceRegistrationProductDto.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId().intValue());
- List<InvoiceRegistrationProductDto> invoiceRegistrationProductDtoList = invoiceRegistrationProductMapper.invoiceRegistrationProductList(invoiceRegistrationProductDto);
- // 缁熻寮�绁ㄧ櫥璁颁骇鍝佺殑宸插紑绁ㄦ暟/宸插紑绁ㄩ噾棰�
- if (!CollectionUtils.isEmpty(invoiceRegistrationProductDtoList)) {
- for (SalesLedgerProduct ledgerProduct : salesLedgerProducts) {
- BigDecimal invoiceNum = BigDecimal.ZERO;
- BigDecimal invoiceAmount = BigDecimal.ZERO;
- BigDecimal noInvoiceNum = BigDecimal.ZERO;
- BigDecimal noInvoiceAmount = BigDecimal.ZERO;
- for (InvoiceRegistrationProductDto registrationProductDto : invoiceRegistrationProductDtoList) {
- if(ledgerProduct.getId().intValue() == registrationProductDto.getSalesLedgerProductId()){
- invoiceNum = invoiceNum.add(registrationProductDto.getInvoiceNum());
- invoiceAmount = invoiceAmount.add(registrationProductDto.getInvoiceAmount());
- }
- }
- noInvoiceNum = ledgerProduct.getQuantity().subtract(invoiceNum);
- noInvoiceAmount = ledgerProduct.getTaxInclusiveTotalPrice().subtract(invoiceAmount);
- ledgerProduct.setInvoiceNum(invoiceNum);
- ledgerProduct.setInvoiceAmount(invoiceAmount);
- ledgerProduct.setNoInvoiceNum(noInvoiceNum);
- ledgerProduct.setNoInvoiceAmount(noInvoiceAmount);
-
-
- }
- }
-
}
return salesLedgerProducts;
}
@@ -199,28 +168,21 @@
@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());
- }
int result;
Long salesLedgerId = salesLedgerProduct.getSalesLedgerId();
+ salesLedgerProduct.setSingleQuantity(normalizeSingleQuantity(salesLedgerProduct.getSingleQuantity()));
+ salesLedgerProduct.setTotalQuantity(normalizeTotalQuantity(
+ salesLedgerProduct.getTotalQuantity(),
+ salesLedgerProduct.getQuantity(),
+ salesLedgerProduct.getSingleQuantity()
+ ));
if (salesLedgerProduct.getId() == null) {
salesLedgerProduct.setRegisterDate(LocalDateTime.now());
result = salesLedgerProductMapper.insert(salesLedgerProduct);
addProductionData(salesLedgerProduct);
} else {
//鏌ヨ鍘熸湰鐨勪骇鍝佸瀷鍙穒d
- salesLedgerProduct.setFutureTickets(salesLedgerProduct.getQuantity());
result = salesLedgerProductMapper.updateById(salesLedgerProduct);
/*鍒犻櫎瀵瑰簲鐨勭敓浜ф暟鎹苟閲嶆柊鏂板*/
deleteProductionData(Arrays.asList(salesLedgerProduct.getId()));
@@ -267,12 +229,32 @@
return;
}
SalesLedger salesLedger = salesLedgerMapper.selectById(salesLedgerProduct.getSalesLedgerId());
+ // 鑾峰彇鍗曚綅锛氫紭鍏堜娇鐢ㄥ墠绔紶鍏ョ殑unit锛屽惁鍒欎粠浜у搧瑙勬牸鑾峰彇
+ String unit = salesLedgerProduct.getUnit();
+ if (unit == null || unit.isEmpty()) {
+ ProductModel productModel = productModelMapper.selectById(salesLedgerProduct.getProductModelId());
+ unit = productModel != null ? productModel.getUnit() : null;
+ }
+
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.setUnit(unit);
+ // 鍚屾浜у搧鏁伴噺
+ productionPlan.setQuantity(salesLedgerProduct.getQuantity());
+ // 鍚屾姣忎欢鏁伴噺
+ productionPlan.setSingleQuantity(normalizeSingleQuantity(salesLedgerProduct.getSingleQuantity()));
+ // 鍚屾鎬绘暟
+ productionPlan.setTotalQuantity(normalizeTotalQuantity(
+ salesLedgerProduct.getTotalQuantity(),
+ salesLedgerProduct.getQuantity(),
+ salesLedgerProduct.getSingleQuantity()
+ ));
productionPlan.setSource("閿�鍞�");
productionPlan.setStatus(0);
productionPlan.setRequiredDate(salesLedger.getDeliveryDate());//闇�姹傛棩鏈�=浜よ揣鏃ユ湡
@@ -300,34 +282,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;
}
/**
@@ -412,6 +366,23 @@
return R.ok();
}
+ private BigDecimal normalizeSingleQuantity(BigDecimal singleQuantity) {
+ if (singleQuantity == null || singleQuantity.compareTo(BigDecimal.ZERO) <= 0) {
+ return BigDecimal.ONE;
+ }
+ return singleQuantity;
+ }
+
+ private BigDecimal normalizeTotalQuantity(BigDecimal totalQuantity, BigDecimal quantity, BigDecimal singleQuantity) {
+ if (totalQuantity != null && totalQuantity.compareTo(BigDecimal.ZERO) > 0) {
+ return totalQuantity;
+ }
+ if (quantity == null || quantity.compareTo(BigDecimal.ZERO) <= 0) {
+ return BigDecimal.ZERO;
+ }
+ return quantity.multiply(normalizeSingleQuantity(singleQuantity));
+ }
+
private String generateNextPlanNo(String datePrefix) {
QueryWrapper<ProductionPlan> queryWrapper = new QueryWrapper<>();
queryWrapper.likeRight("mps_no", "JH" + datePrefix);
--
Gitblit v1.9.3