wujianwei
2025-08-18 b5943e51f38cd2e841f8e12e9da7d3495d96e310
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package com.ruoyi.quartz.task;
 
import cn.hutool.core.collection.CollectionUtil;
import com.ruoyi.common.utils.RandomUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.cwgl.domain.EstimatedReceivable;
import com.ruoyi.cwgl.domain.PendingSettlementBusiness;
import com.ruoyi.cwgl.domain.ReceivableLineTruckPriceRule;
import com.ruoyi.cwgl.service.IEstimatedReceivableService;
import com.ruoyi.cwgl.service.IPendingSettlementBusinessService;
import com.ruoyi.cwgl.service.impl.ExactPricingRuleMatcher;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
 
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
/**
 * 定时任务调度测试
 * 
 * @author ruoyi
 */
@Component("settlementTask")
public class SettlementTask
{
 
    @Autowired
    private IPendingSettlementBusinessService pendingSettlementBusinessService;
    @Autowired
    private IEstimatedReceivableService estimatedReceivableService;
 
    public void insertPendingSettlement()
    {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
        Date date = new Date();
        String datePart = dateFormat.format(date);
 
        List<PendingSettlementBusiness> pendingSettlementBusinesses = pendingSettlementBusinessService.selectPendingSettlement2Cw();
 
        //应收规则
        List<ReceivableLineTruckPriceRule> receivableLineTruckPriceRules = pendingSettlementBusinessService.selectReceivableLineTruckPriceRule();
 
        //应付规则
        List<ReceivableLineTruckPriceRule> payableLineTruckPriceRules= pendingSettlementBusinessService.selectPayableLineTruckPriceRule();
 
        List<EstimatedReceivable> estimatedReceivables = new ArrayList<>();
        for (PendingSettlementBusiness pendingSettlementBusiness : pendingSettlementBusinesses) {
            pendingSettlementBusiness.setIsCreate(0);
            ReceivableLineTruckPriceRule exactMatchingRule = ExactPricingRuleMatcher.findExactMatchingRule(receivableLineTruckPriceRules, pendingSettlementBusiness.getCustomerName(), pendingSettlementBusiness.getDepartureLocation(), pendingSettlementBusiness.getArrivalLocation(), pendingSettlementBusiness.getVehicleType());
            if (exactMatchingRule!=null) {
                //应收数据
                pendingSettlementBusiness.setIsIncomeMatched(1);
                pendingSettlementBusiness.setEstimatedTotalIncome(exactMatchingRule.getFreight());
                pendingSettlementBusiness.setCreateTime(date);
                EstimatedReceivable estimatedReceivable = new EstimatedReceivable();
                estimatedReceivable.setFeeSystemNo("YS"+datePart+RandomUtils.random(5));
                estimatedReceivable.setDispatchNo(pendingSettlementBusiness.getDispatchNo());
                estimatedReceivable.setCustomerName(pendingSettlementBusiness.getCustomerName());
                estimatedReceivable.setProjectName(pendingSettlementBusiness.getProjectName());
                estimatedReceivable.setOrderDate(pendingSettlementBusiness.getCreatedTime());
                estimatedReceivable.setFeeName("运费");
                estimatedReceivable.setEstimatedAmount(exactMatchingRule.getFreight());
                estimatedReceivable.setCurrency("人民币");
                estimatedReceivable.setIsConfirmed(1);
                estimatedReceivable.setFeeType(0);
                estimatedReceivable.setRelatedBillStatus(0);
                estimatedReceivables.add(estimatedReceivable);
            }
            ReceivableLineTruckPriceRule exactMatchingRule2 = ExactPricingRuleMatcher.findExactMatchingRule(payableLineTruckPriceRules, pendingSettlementBusiness.getCarrierName(), pendingSettlementBusiness.getDepartureLocation(), pendingSettlementBusiness.getArrivalLocation(), pendingSettlementBusiness.getVehicleType());
            if (exactMatchingRule2!=null) {
                pendingSettlementBusiness.setIsCostMatched(1);
                pendingSettlementBusiness.setEstimatedTotalCost(exactMatchingRule2.getFreight());
                pendingSettlementBusiness.setCreateTime(date);
 
                EstimatedReceivable estimatedReceivable = new EstimatedReceivable();
                estimatedReceivable.setFeeSystemNo("YF"+datePart+RandomUtils.random(5));
                estimatedReceivable.setDispatchNo(pendingSettlementBusiness.getDispatchNo());
                estimatedReceivable.setCustomerName(pendingSettlementBusiness.getCustomerName());
                estimatedReceivable.setProjectName(pendingSettlementBusiness.getProjectName());
                estimatedReceivable.setOrderDate(pendingSettlementBusiness.getCreatedTime());
                estimatedReceivable.setFeeName("运费");
                estimatedReceivable.setEstimatedAmount(exactMatchingRule2.getFreight());
                estimatedReceivable.setCurrency("人民币");
                estimatedReceivable.setIsConfirmed(1);
                estimatedReceivable.setFeeType(1);
                estimatedReceivables.add(estimatedReceivable);
            }
        }
        if (CollectionUtil.isNotEmpty(estimatedReceivables)){
            estimatedReceivableService.insertEstimatedReceivableBatch(estimatedReceivables);
        }
        pendingSettlementBusinessService.insertPendingSettlement(pendingSettlementBusinesses);
    }
 
 
 
}