From b054362aaf616bfe0be0b50ae5dc2137091dbd7d Mon Sep 17 00:00:00 2001
From: zhangback <zhangback@163.com>
Date: 星期二, 09 十二月 2025 14:48:07 +0800
Subject: [PATCH] 提交
---
service/src/main/java/com/ruoyi/cwgl/service/impl/PendingSettlementBusinessServiceImpl.java | 170 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 161 insertions(+), 9 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..66a884e 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,30 @@
package com.ruoyi.cwgl.service.impl;
+import java.math.BigDecimal;
+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 +48,10 @@
protected final Logger logger = LoggerFactory.getLogger(getClass());
@Resource
private PendingSettlementBusinessMapper pendingSettlementBusinessMapper;
-
+ @Resource
+ private EstimatedReceivableBillMapper estimatedReceivableBillMapper;
+ @Resource
+ private EstimatedReceivableMapper estimatedReceivableMapper;
/**
* 鏌ヨ寰呭叆璐︿笟鍔�
@@ -197,12 +212,6 @@
@Override
public List<PendingSettlementBusiness> selectPendingSettlement2Cw() {
List<PendingSettlementBusiness> pendingSettlementBusinesses = pendingSettlementBusinessMapper.selectPendingSettlement2Cw();
- //鏇存柊鍚屾鐘舵�佺敤
- /* Integer[] ids = pendingSettlementBusinesses.stream().map(PendingSettlementBusiness::getServiceId).toArray(Integer[]::new);
- int i = pendingSettlementBusinessMapper.updeteCwData(ids);
- if (i>0){
- logger.info("鍚屾鐘舵�佹洿鏂版垚鍔�");
- }*/
return pendingSettlementBusinesses;
}
@@ -223,4 +232,147 @@
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());
+ BigDecimal priceTotal = BigDecimal.ZERO;
+ for (PendingSettlementBusiness pendingSettlementBusiness : pendingSettlementBusinesses) {
+ if (pendingSettlementBusiness.getIsCreate().equals(1)){
+ throw new ServiceException(pendingSettlementBusiness.getDispatchNo()+"宸插叆璐�");
+
+ }
+ if (!pendingSettlementBusiness.getCustomerName().equals(customerName)){
+ throw new ServiceException("鍙兘閫夋嫨鐩稿悓瀹㈡埛鍚嶇О鐨勬暟鎹�");
+
+ }
+ priceTotal =priceTotal.add( pendingSettlementBusiness.getEstimatedTotalIncome()==null?BigDecimal.ZERO: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);
+ BigDecimal priceTotal = pendingSettlementBusinesses.stream()
+ .map(b -> Optional.ofNullable(b.getEstimatedTotalIncome()).orElse(BigDecimal.ZERO))
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ 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(BigDecimal.ZERO);
+ estimatedReceivableBill.setInvoiceStatus(0);
+ estimatedReceivableBill.setStatus(0);
+ estimatedReceivableBill.setCreateBy(username);
+ estimatedReceivableBillMapper.insertEstimatedReceivableBill(estimatedReceivableBill);
+ //淇敼鍏ヨ处
+ estimatedReceivableMapper.updateEstimatedReceivableBillStatus(collect,1,createBillVo.getBillName());
+
+ //淇敼璋冨害鍗曚负宸插垱寤鸿处鍗�
+ 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);
+
+ BigDecimal priceTotal = pendingSettlementBusinesses.stream()
+ .map(b -> Optional.ofNullable(b.getEstimatedTotalIncome()).orElse(BigDecimal.ZERO))
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ //璋冨害鍗曢泦鍚�
+ 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(BigDecimal.ZERO);
+ estimatedReceivableBill.setInvoiceStatus(0);
+ estimatedReceivableBill.setStatus(0);
+ estimatedReceivableBill.setCreateBy(username);
+ estimatedReceivableBillMapper.insertEstimatedReceivableBill(estimatedReceivableBill);
+ //淇敼搴旀敹绠$悊琛ㄥ凡鍏ヨ处
+ estimatedReceivableMapper.updateEstimatedReceivableBillStatus(collect,1,billName);
+ //淇敼璋冨害鍗曚负宸插垱寤鸿处鍗�
+ return pendingSettlementBusinessMapper.updatePendingSettlementBusinessIsCreate(collect,estimatedReceivableBill.getId(),billName);
+ }
+
+ @Override
+ public List<String> selectCustomName() {
+ return pendingSettlementBusinessMapper.selectCustomName();
+ }
+
+ @Override
+ @DataSource(DataSourceType.CWSJ)
+ public int updeteCwData(Integer[] ids) {
+ return pendingSettlementBusinessMapper.updeteCwData(ids);
+ }
}
--
Gitblit v1.8.0