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);
|
}
|
|
|
|
}
|