md
This commit is contained in:
parent
8afce5fdaf
commit
4ff754cfaf
@ -492,7 +492,7 @@ public class EmisTmsCostFeeServiceImpl extends EmisBaseService implements IEmisT
|
||||
|
||||
// 网点机场短驳费 - 1002
|
||||
// (2)新创建表(短驳费):机场到网点之间的距离表;记录 起始网点、下一网点、开始日期、结束日期、公里数、单价、供应商、计费类型:按公斤
|
||||
// 删除短驳费
|
||||
// 删除短驳费
|
||||
emisTmsCostFeeSplitMapper.deleteByBillCodeAndFeeType(billCode,"1002");
|
||||
// 重新计算短驳费
|
||||
List<EmisTmsCostQuotePrice> fixedQuotePrice1002List=emisTmsCostQuotePriceMapper.matchBatchFixedQuotePriceByBillCode(billCode,"1002",1);
|
||||
@ -509,7 +509,6 @@ public class EmisTmsCostFeeServiceImpl extends EmisBaseService implements IEmisT
|
||||
existsMap.put(uniqKey,1);
|
||||
|
||||
|
||||
|
||||
EmisTmsCostFeeSplit splitItem = new EmisTmsCostFeeSplit();
|
||||
|
||||
splitItem.setBillCode(billCode.trim());
|
||||
@ -699,6 +698,109 @@ public class EmisTmsCostFeeServiceImpl extends EmisBaseService implements IEmisT
|
||||
emisTmsCostFeeSplitMapper.insertEmisTmsCostFeeSplit(splitItem);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 春疆货场固定报关成本费 - 1005
|
||||
emisTmsCostFeeSplitMapper.deleteByBillCodeAndFeeType(billCode,"1005");
|
||||
// 计算固定报关成本费
|
||||
List<EmisTmsCostQuotePrice> fixedQuotePrice1005List=emisTmsCostQuotePriceMapper.matchBatchFixedQuotePriceByBillCode(billCode,"1005",-1);
|
||||
if(!CollectionUtils.isEmpty(fixedQuotePrice1005List)){
|
||||
// 检查重复
|
||||
Map existsMap = new HashMap();
|
||||
for (EmisTmsCostQuotePrice quotePriceItem : fixedQuotePrice1005List) {
|
||||
|
||||
// 判断是否忽略自清自提
|
||||
if("2".equals(mainWaybill.getCustomsClear())&&"1".equals(quotePriceItem.getBlIgnoreZt())){
|
||||
continue;
|
||||
}
|
||||
|
||||
// 如果网点重复就忽略
|
||||
String uniqKey = quotePriceItem.getStartSiteCode() + "-"+quotePriceItem.getNextSiteCode();
|
||||
if(existsMap.containsKey(uniqKey)){
|
||||
continue;
|
||||
}
|
||||
existsMap.put(uniqKey,1);
|
||||
|
||||
// 获取批次结算重量
|
||||
BigDecimal transVolume=quotePriceItem.getTotalVolume();
|
||||
BigDecimal totalSettlementWeight=emisTmsCostQuotePriceMapper.getTotalSettlementWeightByBatchNo(quotePriceItem.getBatchNo());
|
||||
BigDecimal transWeight=totalSettlementWeight;
|
||||
|
||||
// 计算 机场提货费操作费
|
||||
EmisTmsCostFeeSplit splitItem = new EmisTmsCostFeeSplit();
|
||||
splitItem.setBillCode(billCode.trim());
|
||||
|
||||
splitItem.setMainBillCode(mainBillCode.trim());
|
||||
splitItem.setBillWeight(waybill.getSettlementWeight()); // 运单重量
|
||||
splitItem.setTotalVolume(waybill.getTotalVolume()); // 运单体积
|
||||
|
||||
// 运输成本
|
||||
splitItem.setBlManual("1"); // 手工计算
|
||||
splitItem.setCostNo("-1"); // 固定成本
|
||||
splitItem.setBatchNo(quotePriceItem.getBatchNo());
|
||||
splitItem.setTransWeight(transWeight); // 运输重量
|
||||
splitItem.setTransVolume(transVolume); // 运输体积
|
||||
|
||||
// 供应商
|
||||
splitItem.setSupplierCode(quotePriceItem.getSupplierCode()); // 供应商
|
||||
splitItem.setTransSignNo(quotePriceItem.getCarNo()); // 运输号
|
||||
|
||||
// 起点到目的点
|
||||
splitItem.setSendPlace(quotePriceItem.getStartSiteName());
|
||||
splitItem.setDestPlace(quotePriceItem.getNextSiteName());
|
||||
|
||||
splitItem.setBillMonth(DateUtils.parseDateToStr(DateUtils.YYYY_MM, waybill.getSendDate()));
|
||||
splitItem.setTradeDate(quotePriceItem.getEtd());
|
||||
|
||||
// 成本分摊
|
||||
splitItem.setFeeType("1005"); // 计算固定报关成本费
|
||||
splitItem.setSplitType("1"); // 按重量分摊
|
||||
splitItem.setFeeItemId(-1L); // 无成本费用项来源
|
||||
splitItem.setSplitValue(waybill.getSettlementWeight()); // 分摊重量
|
||||
|
||||
// 总费用=单价*公里数
|
||||
BigDecimal totalDbCostFee = quotePriceItem.getPrice().multiply(transWeight);
|
||||
|
||||
String itemCalcExpr = quotePriceItem.getCalculateExpression();
|
||||
|
||||
String calcExprStr = itemCalcExpr.replaceAll("w", mainWaybill.getSettlementWeight().stripTrailingZeros().toPlainString())
|
||||
.replaceAll("t", transWeight.stripTrailingZeros().toPlainString())
|
||||
.replaceAll("c", totalDbCostFee.stripTrailingZeros().toPlainString());
|
||||
|
||||
Map<String, Object> env = new HashMap<>();
|
||||
env.put("w", waybill.getSettlementWeight());
|
||||
env.put("t", transWeight);
|
||||
env.put("d", quotePriceItem.getPrice());
|
||||
env.put("c", totalDbCostFee);
|
||||
double costFee = Double.valueOf(AviatorEvaluator.execute(itemCalcExpr,env).toString());
|
||||
|
||||
log.info("固定报关成本费:计算公式:" + calcExprStr + ",重量:" + waybill.getSettlementWeight().stripTrailingZeros().toPlainString());
|
||||
|
||||
// 如果计算出来的成本大于单项收费取成本费用
|
||||
if(costFee > totalDbCostFee.doubleValue()){
|
||||
costFee=totalDbCostFee.doubleValue();
|
||||
calcExprStr=totalDbCostFee.stripTrailingZeros().toPlainString();
|
||||
}
|
||||
|
||||
costFee = WaybillHelper.calcSettledFee(costFee, quotePriceItem.getPriceType());
|
||||
|
||||
BigDecimal splitCostFee = BigDecimal.valueOf(costFee);
|
||||
splitItem.setCostFee(splitCostFee);
|
||||
splitItem.setCurrency("CNY");
|
||||
splitItem.setCalcExpr(itemCalcExpr);
|
||||
splitItem.setCalcRemark(calcExprStr + "=" + splitCostFee.stripTrailingZeros().toPlainString());
|
||||
splitItem.setRemark("固定报关成本费");
|
||||
|
||||
// 总成本费用
|
||||
splitItem.setTransCostFee(totalDbCostFee);
|
||||
splitItem.setCnyFee(totalDbCostFee);
|
||||
splitItem.setPrice(quotePriceItem.getPrice());
|
||||
splitItem.setBlVirtual(waybill.getBlVirtual());
|
||||
|
||||
// 插入分摊明细数据
|
||||
emisTmsCostFeeSplitMapper.insertEmisTmsCostFeeSplit(splitItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user