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

---
 quartz/src/main/java/com/ruoyi/quartz/task/SettlementTask.java |   98 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 98 insertions(+), 0 deletions(-)

diff --git a/quartz/src/main/java/com/ruoyi/quartz/task/SettlementTask.java b/quartz/src/main/java/com/ruoyi/quartz/task/SettlementTask.java
new file mode 100644
index 0000000..398a4c4
--- /dev/null
+++ b/quartz/src/main/java/com/ruoyi/quartz/task/SettlementTask.java
@@ -0,0 +1,98 @@
+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) {
+            ReceivableLineTruckPriceRule exactMatchingRule = ExactPricingRuleMatcher.findExactMatchingRule(receivableLineTruckPriceRules, pendingSettlementBusiness.getCustomerName(), pendingSettlementBusiness.getDepartureLocation(), pendingSettlementBusiness.getArrivalLocation(), pendingSettlementBusiness.getVehicleType());
+            if (exactMatchingRule!=null) {
+                //搴旀敹鏁版嵁
+                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);
+                estimatedReceivables.add(estimatedReceivable);
+            }
+            ReceivableLineTruckPriceRule exactMatchingRule2 = ExactPricingRuleMatcher.findExactMatchingRule(payableLineTruckPriceRules, pendingSettlementBusiness.getCarrierName(), pendingSettlementBusiness.getDepartureLocation(), pendingSettlementBusiness.getArrivalLocation(), pendingSettlementBusiness.getVehicleType());
+            if (exactMatchingRule2!=null) {
+                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(0);
+                estimatedReceivables.add(estimatedReceivable);
+            }
+        }
+        if (CollectionUtil.isNotEmpty(estimatedReceivables)){
+            estimatedReceivableService.insertEstimatedReceivableBatch(estimatedReceivables);
+        }
+        pendingSettlementBusinessService.insertPendingSettlement(pendingSettlementBusinesses);
+    }
+
+
+
+}
+
+

--
Gitblit v1.8.0