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 pendingSettlementBusinesses = pendingSettlementBusinessService.selectPendingSettlement2Cw(); //应收规则 List receivableLineTruckPriceRules = pendingSettlementBusinessService.selectReceivableLineTruckPriceRule(); //应付规则 List payableLineTruckPriceRules= pendingSettlementBusinessService.selectPayableLineTruckPriceRule(); List estimatedReceivables = new ArrayList<>(); for (PendingSettlementBusiness pendingSettlementBusiness : pendingSettlementBusinesses) { pendingSettlementBusiness.setIsCreate(0); pendingSettlementBusiness.setEstimatedTotalCost(BigDecimal.ZERO); pendingSettlementBusiness.setEstimatedTotalIncome(BigDecimal.ZERO); 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); } }