From 55dffef68aa4c67ab0ca4c2832ac34b9a7671755 Mon Sep 17 00:00:00 2001
From: wujianwei <wjw@11.com>
Date: 星期三, 13 八月 2025 14:11:57 +0800
Subject: [PATCH] 新增定时任务

---
 service/src/main/java/com/ruoyi/cwgl/service/impl/PendingSettlementBusinessServiceImpl.java |  198 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 195 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 385875d..5aeaa3e 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,15 +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 com.ruoyi.common.utils.DateUtils;
+import cn.hutool.core.collection.CollectionUtil;
+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;
@@ -33,7 +47,10 @@
     protected final Logger logger = LoggerFactory.getLogger(getClass());
     @Resource
     private PendingSettlementBusinessMapper pendingSettlementBusinessMapper;
-
+    @Resource
+    private EstimatedReceivableBillMapper estimatedReceivableBillMapper;
+    @Resource
+    private EstimatedReceivableMapper estimatedReceivableMapper;
 
     /**
      * 鏌ヨ寰呭叆璐︿笟鍔�
@@ -179,4 +196,179 @@
     {
         return pendingSettlementBusinessMapper.deletePendingSettlementBusinessById(id);
     }
+
+    @Override
+    public void insertPendingSettlement(List<PendingSettlementBusiness> pendingSettlementBusinesses ) {
+
+        if (CollectionUtil.isNotEmpty(pendingSettlementBusinesses)) {
+            pendingSettlementBusinessMapper.insertPendingSettlementBusinessBatch(pendingSettlementBusinesses);
+
+        }
+        
+    }
+
+    @DataSource(DataSourceType.CWSJ)
+    @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;
+    }
+
+    @DataSource(DataSourceType.CWSJ)
+    @Override
+    public int updateCwData(Integer[] ids) {
+        return pendingSettlementBusinessMapper.updeteCwData(ids);
+    }
+
+    @DataSource(DataSourceType.CWSJ)
+    @Override
+    public List<ReceivableLineTruckPriceRule> selectReceivableLineTruckPriceRule() {
+        return pendingSettlementBusinessMapper.selectReceivableLineTruckPriceRule();
+    }
+
+    @DataSource(DataSourceType.CWSJ)
+    @Override
+    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);
+
+        //淇敼璋冨害鍗曚负宸插垱寤鸿处鍗�
+        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);
+
+        //淇敼璋冨害鍗曚负宸插垱寤鸿处鍗�
+        return  pendingSettlementBusinessMapper.updatePendingSettlementBusinessIsCreate(collect,estimatedReceivableBill.getId(),billName);
+    }
+
+    @Override
+    public List<String> selectCustomName() {
+        return pendingSettlementBusinessMapper.selectCustomName();
+    }
 }

--
Gitblit v1.8.0