From 0d4084a24bcba6c1941d997712850af800fb60aa Mon Sep 17 00:00:00 2001 From: wujianwei <wjw@11.com> Date: 星期三, 13 八月 2025 14:45:50 +0800 Subject: [PATCH] 修改入账 --- service/src/main/java/com/ruoyi/cwgl/service/impl/PendingSettlementBusinessServiceImpl.java | 157 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 154 insertions(+), 3 deletions(-) diff --git a/service/src/main/java/com/ruoyi/cwgl/service/impl/PendingSettlementBusinessServiceImpl.java b/service/src/main/java/com/ruoyi/cwgl/service/impl/PendingSettlementBusinessServiceImpl.java index e174d1a..1a37949 100644 --- a/service/src/main/java/com/ruoyi/cwgl/service/impl/PendingSettlementBusinessServiceImpl.java +++ b/service/src/main/java/com/ruoyi/cwgl/service/impl/PendingSettlementBusinessServiceImpl.java @@ -1,18 +1,29 @@ package com.ruoyi.cwgl.service.impl; +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Date; import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; import cn.hutool.core.collection.CollectionUtil; -import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.common.utils.*; + import javax.annotation.Resource; +import com.ruoyi.cwgl.domain.EstimatedReceivableBill; import com.ruoyi.cwgl.domain.ReceivableLineTruckPriceRule; +import com.ruoyi.cwgl.domain.vo.CreateBillVo; +import com.ruoyi.cwgl.mapper.EstimatedReceivableBillMapper; +import com.ruoyi.cwgl.mapper.EstimatedReceivableMapper; +import com.ruoyi.cwgl.service.IEstimatedReceivableBillService; import org.springframework.transaction.annotation.Transactional; import org.springframework.stereotype.Service; import org.springframework.scheduling.annotation.Async; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.annotation.DataSource; import com.ruoyi.common.enums.DataSourceType; @@ -36,7 +47,10 @@ protected final Logger logger = LoggerFactory.getLogger(getClass()); @Resource private PendingSettlementBusinessMapper pendingSettlementBusinessMapper; - + @Resource + private EstimatedReceivableBillMapper estimatedReceivableBillMapper; + @Resource + private EstimatedReceivableMapper estimatedReceivableMapper; /** * 鏌ヨ寰呭叆璐︿笟鍔� @@ -223,4 +237,141 @@ public List<ReceivableLineTruckPriceRule> selectPayableLineTruckPriceRule() { return pendingSettlementBusinessMapper.selectPayableLineTruckPriceRule(); } + + @Override + public CreateBillVo billIds(Integer[] ids) { + List<PendingSettlementBusiness> pendingSettlementBusinesses = pendingSettlementBusinessMapper.selectBatchIds(Arrays.asList(ids)); + if (CollectionUtil.isEmpty(pendingSettlementBusinesses)){ + throw new ServiceException("璐﹀崟涓嶅瓨鍦�"); + } + CreateBillVo createBillVo = new CreateBillVo(); + String customerName = pendingSettlementBusinesses.get(0).getCustomerName(); + createBillVo.setCustomerName(customerName); + createBillVo.setCount(pendingSettlementBusinesses.size()); + long priceTotal = 0L; + for (PendingSettlementBusiness pendingSettlementBusiness : pendingSettlementBusinesses) { + if (pendingSettlementBusiness.getIsCreate().equals(1)){ + throw new ServiceException(pendingSettlementBusiness.getDispatchNo()+"宸插叆璐�"); + + } + if (!pendingSettlementBusiness.getCustomerName().equals(customerName)){ + throw new ServiceException("鍙兘閫夋嫨鐩稿悓瀹㈡埛鍚嶇О鐨勬暟鎹�"); + + } + priceTotal += pendingSettlementBusiness.getEstimatedTotalIncome()==null?0L:pendingSettlementBusiness.getEstimatedTotalIncome(); + } + createBillVo.setPrice(priceTotal); + return createBillVo; + } + + @Override + public CreateBillVo billList(PendingSettlementBusiness pendingSettlementBusiness) { + String customerName = pendingSettlementBusiness.getCustomerName(); + if (StringUtils.isEmpty(customerName)){ + throw new ServiceException("瀹㈡埛鍚嶇О涓嶈兘涓虹┖"); + } + pendingSettlementBusiness.setIsCreate(0); + List<PendingSettlementBusiness> pendingSettlementBusinesses = pendingSettlementBusinessMapper.selectPendingSettlementBusinessList(pendingSettlementBusiness); + long priceTotal = pendingSettlementBusinesses.stream() + .mapToLong(b -> Optional.ofNullable(b.getEstimatedTotalIncome()).orElse(0L)) + .sum(); + CreateBillVo createBillVo = new CreateBillVo(); + createBillVo.setCustomerName(customerName); + createBillVo.setCount(pendingSettlementBusinesses.size()); + createBillVo.setPrice(priceTotal); + return createBillVo; + } + + @Override + public int createBillIds(Integer[] ids, CreateBillVo createBillVo) { + String username = SecurityUtils.getUsername(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd"); + Date date = new Date(); + String datePart = dateFormat.format(date); + List<PendingSettlementBusiness> pendingSettlementBusinesses = pendingSettlementBusinessMapper.selectBatchIds(Arrays.asList(ids)); + if (CollectionUtil.isEmpty(pendingSettlementBusinesses)){ + throw new ServiceException("璐﹀崟涓嶅瓨鍦�"); + } + for (PendingSettlementBusiness pendingSettlementBusiness : pendingSettlementBusinesses) { + if (pendingSettlementBusiness.getIsCreate().equals(1)){ + throw new ServiceException(pendingSettlementBusiness.getDispatchNo()+"宸插叆璐�"); + + } + String customerName = pendingSettlementBusinesses.get(0).getCustomerName(); + + if (!pendingSettlementBusiness.getCustomerName().equals(customerName)){ + throw new ServiceException("鍙兘閫夋嫨鐩稿悓瀹㈡埛鍚嶇О鐨勬暟鎹�"); + + } + } + //璋冨害鍗曢泦鍚� + List<String> collect = pendingSettlementBusinesses.stream().map(PendingSettlementBusiness::getDispatchNo).collect(Collectors.toList()); + EstimatedReceivableBill estimatedReceivableBill = new EstimatedReceivableBill(); + estimatedReceivableBill.setCreateTime(date); + estimatedReceivableBill.setBillSystemNo("ZD"+datePart+RandomUtils.random(4)); + estimatedReceivableBill.setBillName(createBillVo.getBillName()); + estimatedReceivableBill.setCustomerName(createBillVo.getCustomerName()); + estimatedReceivableBill.setDispatchCount(createBillVo.getCount()); + estimatedReceivableBill.setTotalAmount(createBillVo.getPrice()); + estimatedReceivableBill.setSettledAmount(0L); + estimatedReceivableBill.setInvoiceStatus(0); + estimatedReceivableBill.setStatus(0); + estimatedReceivableBill.setCreateBy(username); + estimatedReceivableBillMapper.insertEstimatedReceivableBill(estimatedReceivableBill); + //淇敼鍏ヨ处 + estimatedReceivableMapper.updateEstimatedReceivableBillStatus(collect,1); + + //淇敼璋冨害鍗曚负宸插垱寤鸿处鍗� + return pendingSettlementBusinessMapper.updatePendingSettlementBusinessIsCreate(collect,estimatedReceivableBill.getId(),createBillVo.getBillName()); + + } + + @Override + public int createBillList(PendingSettlementBusiness pendingSettlementBusiness) { + String customerName = pendingSettlementBusiness.getCustomerName(); + if (StringUtils.isEmpty(customerName)){ + throw new ServiceException("瀹㈡埛鍚嶇О涓嶈兘涓虹┖"); + } + String billName = pendingSettlementBusiness.getBillName(); + if (StringUtils.isEmpty(billName)){ + throw new ServiceException("璐﹀崟鍚嶇О涓嶈兘涓虹┖"); + } + pendingSettlementBusiness.setIsCreate(0); + List<PendingSettlementBusiness> pendingSettlementBusinesses = pendingSettlementBusinessMapper.selectPendingSettlementBusinessList(pendingSettlementBusiness); + if (CollectionUtil.isEmpty(pendingSettlementBusinesses)){ + throw new ServiceException("濉啓鐨勫鎴锋病鏈夎兘鍏ヨ处鏁版嵁"); + + } + String username = SecurityUtils.getUsername(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd"); + Date date = new Date(); + String datePart = dateFormat.format(date); + + long priceTotal = pendingSettlementBusinesses.stream() + .mapToLong(b -> Optional.ofNullable(b.getEstimatedTotalIncome()).orElse(0L)) + .sum(); + //璋冨害鍗曢泦鍚� + List<String> collect = pendingSettlementBusinesses.stream().map(PendingSettlementBusiness::getDispatchNo).collect(Collectors.toList()); + EstimatedReceivableBill estimatedReceivableBill = new EstimatedReceivableBill(); + estimatedReceivableBill.setCreateTime(date); + estimatedReceivableBill.setBillSystemNo("ZD"+datePart+RandomUtils.random(4)); + estimatedReceivableBill.setBillName(billName); + estimatedReceivableBill.setCustomerName(customerName); + estimatedReceivableBill.setDispatchCount(pendingSettlementBusinesses.size()); + estimatedReceivableBill.setTotalAmount(priceTotal); + estimatedReceivableBill.setSettledAmount(0L); + estimatedReceivableBill.setInvoiceStatus(0); + estimatedReceivableBill.setStatus(0); + estimatedReceivableBill.setCreateBy(username); + estimatedReceivableBillMapper.insertEstimatedReceivableBill(estimatedReceivableBill); + //淇敼搴旀敹绠$悊琛ㄥ凡鍏ヨ处 + estimatedReceivableMapper.updateEstimatedReceivableBillStatus(collect,1); + //淇敼璋冨害鍗曚负宸插垱寤鸿处鍗� + return pendingSettlementBusinessMapper.updatePendingSettlementBusinessIsCreate(collect,estimatedReceivableBill.getId(),billName); + } + + @Override + public List<String> selectCustomName() { + return pendingSettlementBusinessMapper.selectCustomName(); + } } -- Gitblit v1.8.0