港澳台运费
This commit is contained in:
@@ -40,30 +40,49 @@ public class ExpressFeeServiceImpl extends ServiceImpl<ExpressFeeDao, ExpressFee
|
||||
* @return 费用
|
||||
*/
|
||||
private BigDecimal calculateSFExpressFee(BigDecimal weight, String regionCode) {
|
||||
// 判断运费计算区间
|
||||
int weightInterval;
|
||||
BigDecimal additionalWeight;
|
||||
if (weight.compareTo(new BigDecimal(0)) >= 0 && weight.compareTo(new BigDecimal(3)) < 0) {
|
||||
weightInterval = 1;
|
||||
additionalWeight = weight.subtract(new BigDecimal(1));
|
||||
} else if (weight.compareTo(new BigDecimal(3)) >= 0 && weight.compareTo(new BigDecimal(15)) < 0) {
|
||||
weightInterval = 2;
|
||||
additionalWeight = weight.subtract(new BigDecimal(3));
|
||||
} else {
|
||||
weightInterval = 3;
|
||||
additionalWeight = weight.subtract(new BigDecimal(15));
|
||||
BigDecimal flag ;
|
||||
if(regionCode.equals("710000")){//台湾
|
||||
BigDecimal addWF ;
|
||||
if(weight.compareTo(new BigDecimal(1))>0){
|
||||
addWF = (weight.subtract(new BigDecimal(1))).multiply(new BigDecimal(20));
|
||||
}else {
|
||||
addWF = new BigDecimal(0);
|
||||
}
|
||||
flag = addWF.add(new BigDecimal(28));
|
||||
} else if (regionCode.equals("810000")||regionCode.equals("820000")) {//香港澳门
|
||||
BigDecimal addWF ;
|
||||
if(weight.compareTo(new BigDecimal(1))>0){
|
||||
addWF = (weight.subtract(new BigDecimal(1))).multiply(new BigDecimal(11));
|
||||
}else {
|
||||
addWF = new BigDecimal(0);
|
||||
}
|
||||
flag = addWF.add(new BigDecimal(24));
|
||||
}else{
|
||||
int weightInterval;
|
||||
BigDecimal additionalWeight;
|
||||
if (weight.compareTo(new BigDecimal(0)) >= 0 && weight.compareTo(new BigDecimal(3)) < 0) {
|
||||
weightInterval = 1;
|
||||
additionalWeight = weight.subtract(new BigDecimal(1));
|
||||
} else if (weight.compareTo(new BigDecimal(3)) >= 0 && weight.compareTo(new BigDecimal(15)) < 0) {
|
||||
weightInterval = 2;
|
||||
additionalWeight = weight.subtract(new BigDecimal(3));
|
||||
} else {
|
||||
weightInterval = 3;
|
||||
additionalWeight = weight.subtract(new BigDecimal(15));
|
||||
}
|
||||
QueryWrapper<ExpressFee> queryWrapper = new QueryWrapper<>();
|
||||
if (!regionCode.startsWith("11") && !regionCode.startsWith("12") && !regionCode.startsWith("31") && !regionCode.startsWith("50")) {
|
||||
regionCode = regionCode.substring(0, 4).concat("00");
|
||||
}
|
||||
queryWrapper.eq("dest_code", regionCode);
|
||||
queryWrapper.eq("weight_interval", weightInterval);
|
||||
queryWrapper.eq("express_code", "SF");
|
||||
ExpressFee expressFee = this.getOne(queryWrapper);
|
||||
BigDecimal firstWeightFee = expressFee.getFirstWeightFee();
|
||||
BigDecimal additionalWeightFee = (expressFee.getAdditionalWeightFee()).multiply(additionalWeight);
|
||||
flag = firstWeightFee.add(additionalWeightFee);
|
||||
}
|
||||
QueryWrapper<ExpressFee> queryWrapper = new QueryWrapper<>();
|
||||
if (!regionCode.startsWith("11") && !regionCode.startsWith("12") && !regionCode.startsWith("31") && !regionCode.startsWith("50")) {
|
||||
regionCode = regionCode.substring(0, 4).concat("00");
|
||||
}
|
||||
queryWrapper.eq("dest_code", regionCode);
|
||||
queryWrapper.eq("weight_interval", weightInterval);
|
||||
queryWrapper.eq("express_code", "SF");
|
||||
ExpressFee expressFee = this.getOne(queryWrapper);
|
||||
BigDecimal firstWeightFee = expressFee.getFirstWeightFee();
|
||||
BigDecimal additionalWeightFee = (expressFee.getAdditionalWeightFee()).multiply(additionalWeight);
|
||||
return firstWeightFee.add(additionalWeightFee);
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user