From bd63dcea170b3ceb86851f56a7a53b85b77027c2 Mon Sep 17 00:00:00 2001
From: yinrw <2030349650@qq.com>
Date: 星期四, 23 七月 2026 15:03:25 +0800
Subject: [PATCH] 修改销售台账和生产订单绑定逻辑,修复销售台账和生产订单页面展示数据bug
---
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | 390 +++++++++++++++++++++++++++++++++++++------------------
1 files changed, 263 insertions(+), 127 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 03635b4..40836c8 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -9,14 +9,21 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.service.AccountIncomeService;
-import com.ruoyi.aftersalesservice.pojo.AfterSalesService;
+import com.ruoyi.approve.pojo.ApproveProcess;
+import com.ruoyi.approve.service.IApproveProcessService;
+import com.ruoyi.approve.vo.ApproveProcessVO;
+import com.ruoyi.basic.dto.CustomerPrivatePoolDto;
import com.ruoyi.basic.mapper.CustomerMapper;
+import com.ruoyi.basic.mapper.CustomerPrivatePoolMapper;
import com.ruoyi.basic.mapper.ProductMapper;
import com.ruoyi.basic.mapper.ProductModelMapper;
import com.ruoyi.basic.pojo.Customer;
+import com.ruoyi.basic.pojo.CustomerPrivatePool;
import com.ruoyi.common.enums.FileNameType;
+import com.ruoyi.common.enums.SaleEnum;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.EnumUtil;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
@@ -24,24 +31,25 @@
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.other.mapper.TempFileMapper;
import com.ruoyi.other.pojo.TempFile;
+import com.ruoyi.production.dto.ProductOrderDto;
import com.ruoyi.production.mapper.*;
-import com.ruoyi.production.pojo.*;
import com.ruoyi.production.service.ProductionProductMainService;
-import com.ruoyi.production.service.impl.ProductionProductMainServiceImpl;
import com.ruoyi.project.system.domain.SysDept;
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.quality.pojo.QualityInspect;
import com.ruoyi.sales.dto.*;
import com.ruoyi.sales.mapper.*;
import com.ruoyi.sales.pojo.*;
-import com.ruoyi.sales.service.ISalesLedgerProductService;
import com.ruoyi.sales.service.ISalesLedgerService;
+import com.ruoyi.sales.service.SalesLedgerProductionRefService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FilenameUtils;
+import org.jetbrains.annotations.Nullable;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -79,69 +87,71 @@
@RequiredArgsConstructor
@Slf4j
public class SalesLedgerServiceImpl extends ServiceImpl<SalesLedgerMapper, SalesLedger> implements ISalesLedgerService {
- private final AccountIncomeService accountIncomeService;
-
- private final SalesLedgerMapper salesLedgerMapper;
-
- private final CustomerMapper customerMapper;
-
- private final SalesLedgerProductMapper salesLedgerProductMapper;
- private final SalesLedgerProductServiceImpl salesLedgerProductServiceImpl;
-
- private final CommonFileMapper commonFileMapper;
-
- private final TempFileMapper tempFileMapper;
-
- private final ReceiptPaymentMapper receiptPaymentMapper;
-
- private final ShippingInfoServiceImpl shippingInfoServiceImpl;
-
- private final CommonFileServiceImpl commonFileService;
-
- private final ShippingInfoMapper shippingInfoMapper;
-
- private final InvoiceLedgerMapper invoiceLedgerMapper;
-
- private final SalesLedgerSchedulingMapper salesLedgerSchedulingMapper;
-
- private final SalesLedgerWorkMapper salesLedgerWorkMapper;
-
- private final SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper;
-
- private final InvoiceRegistrationProductMapper invoiceRegistrationProductMapper;
-
- private final InvoiceRegistrationMapper invoiceRegistrationMapper;
-
- private final ProductOrderMapper productOrderMapper;
-
- private final ProcessRouteMapper processRouteMapper;
- private final ProductProcessRouteMapper productProcessRouteMapper;
-
- private final ProcessRouteItemMapper processRouteItemMapper;
-
- private final ProductProcessRouteItemMapper productProcessRouteItemMapper;
-
- private final ProductWorkOrderMapper productWorkOrderMapper;
-
- private final ProductionProductMainMapper productionProductMainMapper;
-
- private final ProductionProductOutputMapper productionProductOutputMapper;
-
- private final ProductionProductInputMapper productionProductInputMapper;
-
- private final QualityInspectMapper qualityInspectMapper;
-
- @Autowired
- private SysDeptMapper sysDeptMapper;
-
- @Value("${file.upload-dir}")
- private String uploadDir;
-
private static final String LOCK_PREFIX = "contract_no_lock:";
private static final long LOCK_WAIT_TIMEOUT = 10; // 閿佺瓑寰呰秴鏃舵椂闂达紙绉掞級
private static final long LOCK_EXPIRE_TIME = 30; // 閿佽嚜鍔ㄨ繃鏈熸椂闂达紙绉掞級
-
- private final RedisTemplate<String, String> redisTemplate;
+ @Autowired
+ private AccountIncomeService accountIncomeService;
+ @Autowired
+ private SalesLedgerMapper salesLedgerMapper;
+ @Autowired
+ private CustomerMapper customerMapper;
+ @Autowired
+ private SalesLedgerProductMapper salesLedgerProductMapper;
+ @Autowired
+ private SalesLedgerProductServiceImpl salesLedgerProductServiceImpl;
+ @Autowired
+ private CommonFileMapper commonFileMapper;
+ @Autowired
+ private TempFileMapper tempFileMapper;
+ @Autowired
+ private ReceiptPaymentMapper receiptPaymentMapper;
+ @Autowired
+ private ShippingInfoServiceImpl shippingInfoServiceImpl;
+ @Autowired
+ private CommonFileServiceImpl commonFileService;
+ @Autowired
+ private ShippingInfoMapper shippingInfoMapper;
+ @Autowired
+ private InvoiceLedgerMapper invoiceLedgerMapper;
+ @Autowired
+ private SalesLedgerSchedulingMapper salesLedgerSchedulingMapper;
+ @Autowired
+ private SalesLedgerWorkMapper salesLedgerWorkMapper;
+ @Autowired
+ private SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper;
+ @Autowired
+ private InvoiceRegistrationProductMapper invoiceRegistrationProductMapper;
+ @Autowired
+ private InvoiceRegistrationMapper invoiceRegistrationMapper;
+ @Autowired
+ private ProductOrderMapper productOrderMapper;
+ @Autowired
+ private ProcessRouteMapper processRouteMapper;
+ @Autowired
+ private ProductProcessRouteMapper productProcessRouteMapper;
+ @Autowired
+ private ProcessRouteItemMapper processRouteItemMapper;
+ @Autowired
+ private ProductProcessRouteItemMapper productProcessRouteItemMapper;
+ @Autowired
+ private ProductWorkOrderMapper productWorkOrderMapper;
+ @Autowired
+ private ProductionProductMainMapper productionProductMainMapper;
+ @Autowired
+ private ProductionProductOutputMapper productionProductOutputMapper;
+ @Autowired
+ private ProductionProductInputMapper productionProductInputMapper;
+ @Autowired
+ private QualityInspectMapper qualityInspectMapper;
+ @Autowired
+ private RedisTemplate<String, String> redisTemplate;
+ @Autowired
+ private IApproveProcessService approveProcessService;
+ @Autowired
+ private SysDeptMapper sysDeptMapper;
+ @Value("${file.upload-dir}")
+ private String uploadDir;
@Autowired
private ProductModelMapper productModelMapper;
@@ -151,11 +161,54 @@
private ProductStructureMapper productStructureMapper;
@Autowired
private ProductionProductMainService productionProductMainService;
+ @Autowired
+ private PurchaseReturnOrderProductsMapper purchaseReturnOrderProductsMapper;
;
+ @Autowired
+ private SysUserMapper sysUserMapper;
+ @Autowired
+ private CustomerPrivatePoolMapper customerPrivatePoolMapper;
+ @Autowired
+ private SalesLedgerProductionRefService salesLedgerProductionRefService;
+ @Autowired
+ private SalesLedgerProductionRefMapper salesLedgerProductionRefMapper;
@Override
public List<SalesLedger> selectSalesLedgerList(SalesLedgerDto salesLedgerDto) {
return salesLedgerMapper.selectSalesLedgerList(salesLedgerDto);
+ }
+
+ public List<SalesLedgerProduct> getSalesLedgerProductListByRelateId(Long relateId, SaleEnum type) {
+ LambdaQueryWrapper<SalesLedgerProduct> productWrapper = new LambdaQueryWrapper<>();
+ productWrapper.eq(SalesLedgerProduct::getSalesLedgerId, relateId);
+ productWrapper.eq(SalesLedgerProduct::getType, type.getCode());
+ return salesLedgerProductMapper.selectList(productWrapper);
+ }
+
+ @Override
+ public List<SalesLedgerProduct> getSalesLedgerProductListByIds(@Nullable List<Long> relateIds, SaleEnum type) {
+ if (CollectionUtils.isEmpty(relateIds)) {
+ return Collections.emptyList();
+ }
+ LambdaQueryWrapper<SalesLedgerProduct> productWrapper = new LambdaQueryWrapper<>();
+ productWrapper.in(SalesLedgerProduct::getId, relateIds);
+ productWrapper.eq(SalesLedgerProduct::getType, type.getCode());
+ List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(productWrapper);
+ if (type.equals(SaleEnum.PURCHASE)) {
+ // 鏌ヨ閫�璐т俊鎭�
+ List<Long> productIds = salesLedgerProducts.stream().map(SalesLedgerProduct::getId).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::getSalesLedgerProductId, SimpleReturnOrderGroupDto::getSumReturnQuantity));
+ salesLedgerProducts.forEach(item -> {
+ BigDecimal returnQuality = returnOrderGroupDtoMap.getOrDefault(item.getId(), BigDecimal.ZERO);
+ item.setReturnQuality(returnQuality);
+ item.setAvailableQuality(item.getQuantity().subtract(returnQuality));
+ });
+ }
+ return salesLedgerProducts;
}
@Override
@@ -165,7 +218,8 @@
if (salesLedger == null) {
throw new BaseException("鍙拌处涓嶅瓨鍦�");
}
-
+ List<ProductOrderDto> productionOrdersBySalesLedgerId = getProductionOrdersBySalesLedgerId(salesLedger.getId());
+ salesLedger.setProductionOrders(productionOrdersBySalesLedgerId);
// 2. 鏌ヨ瀛愯〃
LambdaQueryWrapper<SalesLedgerProduct> productWrapper = new LambdaQueryWrapper<>();
productWrapper.eq(SalesLedgerProduct::getSalesLedgerId, salesLedger.getId());
@@ -329,9 +383,6 @@
return salesLedgerMapper.selectSalesLedgerListPage(page, salesLedgerDto);
}
- @Autowired
- private SysUserMapper sysUserMapper;
-
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult importData(MultipartFile file) {
@@ -454,68 +505,75 @@
}
@Override
- public IPage<SalesLedgerDto> listSalesLedger(SalesLedgerDto salesLedgerDto, Page page) {
- IPage<SalesLedgerDto> salesLedgerDtoIPage = salesLedgerMapper.listSalesLedger(page, salesLedgerDto);
- for (SalesLedgerDto salesLedger : salesLedgerDtoIPage.getRecords()) {
- LambdaQueryWrapper<SalesLedgerProduct> productWrapper = new LambdaQueryWrapper<>();
- productWrapper.eq(SalesLedgerProduct::getSalesLedgerId, salesLedger.getId());
- productWrapper.eq(SalesLedgerProduct::getType, 1);
- List<SalesLedgerProduct> products = salesLedgerProductMapper.selectList(productWrapper);
- for (SalesLedgerProduct product : products) {
- product.setOriginalNoInvoiceNum(product.getNoInvoiceNum());
- // 鎻愪緵涓存椂鏈紑绁ㄦ暟锛屾湭寮�绁ㄩ噾棰濅緵鍓嶆璁$畻
- product.setTempnoInvoiceAmount(product.getNoInvoiceAmount());
- product.setTempNoInvoiceNum(product.getNoInvoiceNum());
- product.setRegister(SecurityUtils.getLoginUser().getUser().getNickName());
- product.setRegisterDate(LocalDateTime.now());
- // 鍙戣揣淇℃伅
- ShippingInfo shippingInfo = shippingInfoMapper.selectOne(new LambdaQueryWrapper<ShippingInfo>()
- .eq(ShippingInfo::getSalesLedgerProductId, product.getId())
- .orderByDesc(ShippingInfo::getCreateTime)
- .last("limit 1"));
- if (shippingInfo != null) {
- product.setShippingStatus(shippingInfo.getStatus());
-
- }
+ public IPage<AfterSalesLedgerDto> listSalesLedger(AfterSalesLedgerDto salesLedgerDto, Page page) {
+ IPage<AfterSalesLedgerDto> salesLedgerDtoIPage = salesLedgerMapper.listSalesLedgerAndShipped(page, salesLedgerDto);
+ for (AfterSalesLedgerDto salesLedger : salesLedgerDtoIPage.getRecords()) {
+ SalesLedgerProduct product = salesLedgerProductMapper.selectById(salesLedger.getSalesLedgerProductId());
+ product.setOriginalNoInvoiceNum(product.getNoInvoiceNum());
+ // 鎻愪緵涓存椂鏈紑绁ㄦ暟锛屾湭寮�绁ㄩ噾棰濅緵鍓嶆璁$畻
+ product.setTempnoInvoiceAmount(product.getNoInvoiceAmount());
+ product.setTempNoInvoiceNum(product.getNoInvoiceNum());
+ product.setRegister(SecurityUtils.getLoginUser().getUser().getNickName());
+ product.setRegisterDate(LocalDateTime.now());
+ // 鍙戣揣淇℃伅
+ ShippingInfo shippingInfo = shippingInfoMapper.selectOne(new LambdaQueryWrapper<ShippingInfo>()
+ .eq(ShippingInfo::getSalesLedgerProductId, product.getId())
+ .orderByDesc(ShippingInfo::getCreateTime)
+ .last("limit 1"));
+ product.setShippingCarNumber(shippingInfo.getShippingCarNumber());
+ product.setShippingDate(shippingInfo.getShippingDate());
+ if (shippingInfo != null) {
+ product.setShippingStatus(shippingInfo.getStatus());
}
- if (!products.isEmpty()) {
- salesLedger.setHasChildren(true);
- salesLedger.setProductData(products);
- }
+ List<SalesLedgerProduct> afterSalesLedgerDtos = new ArrayList<>();
+ afterSalesLedgerDtos.add(product);
+ salesLedger.setProductData(afterSalesLedgerDtos);
}
-
return salesLedgerDtoIPage;
}
-
- // 鍐呴儴绫荤敤浜庡瓨鍌ㄨ仛鍚堢粨鏋�
- private static class GroupedCustomer {
- private final Long customerId;
- private final String customerName;
- private BigDecimal totalAmount = BigDecimal.ZERO;
-
- public GroupedCustomer(Long customerId, String customerName) {
- this.customerId = customerId;
- this.customerName = customerName;
+ @Override
+ public SalesLedgerDto getSalesByCode(SalesLedgerDto salesLedgerDto) {
+ // 1. 鏌ヨ涓昏〃
+ SalesLedger salesLedger = salesLedgerMapper.selectOne(new LambdaQueryWrapper<SalesLedger>()
+ .eq(SalesLedger::getSalesContractNo, salesLedgerDto.getSalesContractNo())
+ .last("LIMIT 1"));
+ if (salesLedger == null) {
+ throw new BaseException("閿�鍞彴璐︿笉瀛樺湪");
}
- public void addAmount(BigDecimal amount) {
- if (amount != null) {
- this.totalAmount = this.totalAmount.add(amount);
- }
- }
+ // 2. 鏌ヨ瀛愯〃
+ LambdaQueryWrapper<SalesLedgerProduct> productWrapper = new LambdaQueryWrapper<>();
+ productWrapper.eq(SalesLedgerProduct::getSalesLedgerId, salesLedger.getId())
+ .eq(SalesLedgerProduct::getType, 1);
+ List<SalesLedgerProduct> products = salesLedgerProductMapper.selectList(productWrapper);
- public Long getCustomerId() {
- return customerId;
+ // 4. 杞崲 DTO
+ SalesLedgerDto resultDto = new SalesLedgerDto();
+ BeanUtils.copyProperties(salesLedger, resultDto);
+ if (!products.isEmpty()) {
+ resultDto.setHasChildren(true);
+ resultDto.setProductData(products);
}
+ return resultDto;
+ }
- public String getCustomerName() {
- return customerName;
+ @Override
+ public List<ProductOrderDto> getProductionOrdersBySalesLedgerId(Long salesLedgerId) {
+ List<Long> productOrderIds = salesLedgerProductionRefMapper.getProductionOrderIdsBySalesLedgerId(salesLedgerId);
+ if (productOrderIds == null || productOrderIds.isEmpty()) {
+ return Collections.emptyList();
}
+ return productOrderMapper.listByProductOrderId(productOrderIds);
+ }
- public BigDecimal getTotalAmount() {
- return totalAmount;
- }
+ @Override
+ public void getProductionOrders(List<SalesLedger> records) {
+ List<Long> ledgerIdList = records.stream()
+ .map(SalesLedger::getId)
+ .collect(Collectors.toList());
+
+
}
/**
@@ -615,7 +673,7 @@
public int addOrUpdateSalesLedger(SalesLedgerDto salesLedgerDto) {
try {
// 1. 鏍¢獙瀹㈡埛淇℃伅
- Customer customer = customerMapper.selectById(salesLedgerDto.getCustomerId());
+ CustomerPrivatePoolDto customer = customerPrivatePoolMapper.selectInfo(salesLedgerDto.getCustomerId());
if (customer == null) {
throw new BaseException("瀹㈡埛涓嶅瓨鍦�");
}
@@ -630,13 +688,25 @@
salesLedger.setSalesContractNo(contractNo);
salesLedgerMapper.insert(salesLedger);
} else {
+ ApproveProcess one = approveProcessService.getOne(new LambdaQueryWrapper<ApproveProcess>()
+ .eq(ApproveProcess::getApproveType, 9)
+ .eq(ApproveProcess::getApproveReason, salesLedger.getSalesContractNo())
+ .eq(ApproveProcess::getApproveDelete, 0)
+ .last("limit 1"));
+ if (one != null) {
+ approveProcessService.delByIds(Collections.singletonList(one.getId()));
+ }
salesLedgerMapper.updateById(salesLedger);
}
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ addApproveByPurchase(loginUser, salesLedger);
+ salesLedger.setApprovalStatus(1);
+ this.updateById(salesLedger);
// 4. 澶勭悊瀛愯〃鏁版嵁
List<SalesLedgerProduct> productList = salesLedgerDto.getProductData();
if (productList != null && !productList.isEmpty()) {
- handleSalesLedgerProducts(salesLedger.getId(), productList, salesLedgerDto.getType());
+ handleSalesLedgerProducts(salesLedger.getId(), productList, EnumUtil.fromCode(SaleEnum.class, salesLedgerDto.getType()));
updateMainContractAmount(
salesLedger.getId(),
productList,
@@ -646,17 +716,51 @@
);
}
- // 5. 杩佺Щ涓存椂鏂囦欢鍒版寮忕洰褰�
+ //5. 缁戝畾閿�鍞鍗曞拰鐢熶骇璁㈠崟
+ bindSalesOrderAndProductionOrder(salesLedgerDto.getProductionOrderIds(), salesLedger.getId());
+
+ // 6. 杩佺Щ涓存椂鏂囦欢鍒版寮忕洰褰�
if (salesLedgerDto.getTempFileIds() != null && !salesLedgerDto.getTempFileIds().isEmpty()) {
migrateTempFilesToFormal(salesLedger.getId(), salesLedgerDto.getTempFileIds());
}
return 1;
} catch (IOException e) {
throw new BaseException("鏂囦欢杩佺Щ澶辫触: " + e.getMessage());
+ } catch (Exception e) {
+ throw new RuntimeException(e);
}
}
- // 鏂囦欢杩佺Щ鏂规硶
+ private void bindSalesOrderAndProductionOrder(List<Long> productionOrderIds, Long salesLedgerId) {
+ // 鍏堝垹闄よ閿�鍞彴璐︽墍鏈夋棫鍏宠仈
+ LambdaQueryWrapper<SalesLedgerProductionRef> deleteWrapper = Wrappers.lambdaQuery();
+ deleteWrapper.eq(SalesLedgerProductionRef::getSalesLedgerId, salesLedgerId);
+ salesLedgerProductionRefMapper.delete(deleteWrapper);
+
+ if (productionOrderIds == null || productionOrderIds.isEmpty()) {
+ return;
+ }
+ List<SalesLedgerProductionRef> refList = productionOrderIds.stream()
+ .map(productOrderId -> {
+ SalesLedgerProductionRef ref = new SalesLedgerProductionRef();
+ ref.setSalesLedgerId(salesLedgerId);
+ ref.setProductOrderId(productOrderId);
+ return ref;
+ })
+ .collect(Collectors.toList());
+ salesLedgerProductionRefService.saveBatch(refList);
+ }
+
+ public void addApproveByPurchase(LoginUser loginUser, SalesLedger salesLedger) throws Exception {
+ ApproveProcessVO approveProcessVO = new ApproveProcessVO();
+ approveProcessVO.setApproveType(9);
+ approveProcessVO.setApproveDeptId(loginUser.getDeptIds()[0]);
+ approveProcessVO.setApproveReason(salesLedger.getSalesContractNo());
+ approveProcessVO.setApproveUserIds(salesLedger.getApproveUserIds());
+ approveProcessVO.setApproveUser(loginUser.getUserId());
+ approveProcessVO.setApproveTime(LocalDate.now().toString());
+ approveProcessService.addApprove(approveProcessVO);
+ }
/**
* 灏嗕复鏃舵枃浠惰縼绉诲埌姝e紡鐩綍
@@ -733,8 +837,10 @@
}
}
+ // 鏂囦欢杩佺Щ鏂规硶
- private void handleSalesLedgerProducts(Long salesLedgerId, List<SalesLedgerProduct> products, Integer type) {
+ @Override
+ public void handleSalesLedgerProducts(Long salesLedgerId, List<SalesLedgerProduct> products, SaleEnum type) {
// 鎸塈D鍒嗙粍锛屽尯鍒嗘柊澧炲拰鏇存柊鐨勮褰�
Map<Boolean, List<SalesLedgerProduct>> partitionedProducts = products.stream()
.peek(p -> p.setSalesLedgerId(salesLedgerId))
@@ -746,20 +852,20 @@
// 鎵ц鏇存柊鎿嶄綔
if (!updateList.isEmpty()) {
for (SalesLedgerProduct product : updateList) {
- product.setType(type);
+ product.setType(type.getCode());
salesLedgerProductMapper.updateById(product);
}
}
// 鎵ц鎻掑叆鎿嶄綔
if (!insertList.isEmpty()) {
for (SalesLedgerProduct salesLedgerProduct : insertList) {
- salesLedgerProduct.setType(type);
+ salesLedgerProduct.setType(type.getCode());
salesLedgerProduct.setNoInvoiceNum(salesLedgerProduct.getQuantity());
salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getTaxInclusiveTotalPrice());
salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice());
salesLedgerProductMapper.insert(salesLedgerProduct);
// 娣诲姞鐢熶骇鏁版嵁
- salesLedgerProductServiceImpl.addProductionData(salesLedgerProduct);
+ //salesLedgerProductServiceImpl.addProductionData(salesLedgerProduct);
}
}
}
@@ -873,4 +979,34 @@
throw new RuntimeException("鍔ㄦ�佹洿鏂颁富琛ㄩ噾棰濆け璐�", e);
}
}
+
+ // 鍐呴儴绫荤敤浜庡瓨鍌ㄨ仛鍚堢粨鏋�
+ private static class GroupedCustomer {
+ private final Long customerId;
+ private final String customerName;
+ private BigDecimal totalAmount = BigDecimal.ZERO;
+
+ public GroupedCustomer(Long customerId, String customerName) {
+ this.customerId = customerId;
+ this.customerName = customerName;
+ }
+
+ public void addAmount(BigDecimal amount) {
+ if (amount != null) {
+ this.totalAmount = this.totalAmount.add(amount);
+ }
+ }
+
+ public Long getCustomerId() {
+ return customerId;
+ }
+
+ public String getCustomerName() {
+ return customerName;
+ }
+
+ public BigDecimal getTotalAmount() {
+ return totalAmount;
+ }
+ }
}
--
Gitblit v1.9.3