|
@@ -3,6 +3,7 @@ package com.pj.project.tb_fee_details;
|
|
|
import java.io.File;
|
|
|
import java.io.InputStream;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.util.*;
|
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
@@ -21,6 +22,7 @@ import com.pj.project.tb_business.TbBusinessService;
|
|
|
import com.pj.project.tb_business_car.TbBusinessCar;
|
|
|
import com.pj.project.tb_business_car.TbBusinessCarService;
|
|
|
import com.pj.project.tb_business_item.TbBusinessItem;
|
|
|
+import com.pj.project.tb_fee_statistics.TbFeeStatistics;
|
|
|
import com.pj.project4sp.uploadfile.UploadUtil;
|
|
|
import com.pj.utils.so.SoMap;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -120,8 +122,16 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
|
|
|
return getOne(qw);
|
|
|
}
|
|
|
|
|
|
+ public TbFeeDetails getByBusinessCarIdAndCarNoAndFeeType(String businessCarId, String carNo, Integer feeType){
|
|
|
+ QueryWrapper<TbFeeDetails> qw = new QueryWrapper<>();
|
|
|
+ qw.eq("business_car_id", businessCarId);
|
|
|
+ qw.eq("car_no", carNo);
|
|
|
+ qw.eq("fee_type", feeType);
|
|
|
+ return getOne(qw);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
- public void chargeParkFee(List<PriceBO> cars) {
|
|
|
+ public void chargeParkFee(List<PriceBO> cars, String transactionId) {
|
|
|
Date now = new Date();
|
|
|
String nowStr = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
|
|
|
String toDay = DateUtil.format(now, "yyyy-MM-dd");
|
|
@@ -129,19 +139,26 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
|
|
|
TbBusinessCar car = tbBusinessCarService.getById(bo1.getId());
|
|
|
TbBusiness business = tbBusinessService.getById(car.getBusinessId());
|
|
|
String carNo = car.getCarNo();
|
|
|
- TbFeeDetails parkFee = getByBusinessIdAndCarNoAndFeeType(car.getBusinessId(), carNo, TbFeeDetails.fee.PARK_FEE.getCode());
|
|
|
- if (parkFee == null) {
|
|
|
+ TbFeeDetails parkFee;
|
|
|
+ if(business != null){
|
|
|
+ parkFee = getByBusinessIdAndCarNoAndFeeType(car.getBusinessId(), carNo, TbFeeDetails.fee.PARK_FEE.getCode());
|
|
|
+ }else {
|
|
|
+ parkFee = getByBusinessCarIdAndCarNoAndFeeType(car.getId(), carNo, TbFeeDetails.fee.PARK_FEE.getCode());
|
|
|
+ }
|
|
|
+ if(parkFee == null){
|
|
|
parkFee = new TbFeeDetails();
|
|
|
parkFee.setTaxRate(partConfig.getTaxRate());
|
|
|
}
|
|
|
- BigDecimal noTaxPrice = car.getMoney().subtract(car.getMoney().multiply(parkFee.getTaxRate()));
|
|
|
- BigDecimal taxPrice = car.getMoney().multiply(parkFee.getTaxRate());
|
|
|
- parkFee.setBusinessId(car.getBusinessId())
|
|
|
+ BigDecimal taxPrice = car.getMoney().divide(BigDecimal.valueOf(1).add(parkFee.getTaxRate()),2, BigDecimal.ROUND_HALF_UP).multiply(parkFee.getTaxRate());
|
|
|
+ BigDecimal noTaxPrice = car.getMoney().subtract(taxPrice);
|
|
|
+ parkFee.setBusinessId(car.getBusinessId()).setBusinessCarId(car.getId())
|
|
|
.setCarNo(car.getCarNo())
|
|
|
.setItemPrice(car.getMoney()).setUnitPrice(car.getMoney()).setNoTaxPrice(noTaxPrice).setTaxPrice(taxPrice)
|
|
|
.setFeeType(TbFeeDetails.fee.PARK_FEE.getCode()).setItemTypeName("停车业务")
|
|
|
.setPayDay(toDay).setPayType(3).setCreateTime(now)
|
|
|
- .setNum(1).setIsSettle(1).setPayMode(1).setPayTime(nowStr);
|
|
|
+ .setNum(1).setIsSettle(1).setPayMode(1).setPayTime(nowStr)
|
|
|
+ .setTransactionId(transactionId)
|
|
|
+ .setBusinessCarNo(car.getNo());
|
|
|
if (business!=null){
|
|
|
parkFee.setWeight(business.getNetWeight()).setBusinessNo(business.getNo());
|
|
|
}
|
|
@@ -152,6 +169,7 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
|
|
|
//@Async
|
|
|
public void chargeBusinessFee(List<TbBusinessItem> items) {
|
|
|
Date now = new Date();
|
|
|
+ String nowStr = DateUtil.format(now, "yyyy-MM-dd HH:mm:ss");
|
|
|
String toDay = DateUtil.format(now, "yyyy-MM-dd");
|
|
|
for (TbBusinessItem item : items) {
|
|
|
int feeType = -1;
|
|
@@ -170,18 +188,32 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
|
|
|
feeType = TbFeeDetails.fee.CHARGE_FEE.getCode();
|
|
|
}
|
|
|
TbBusiness business = tbBusinessService.getById(item.getBusinessId());
|
|
|
- TbFeeDetails businessFee = getByBusinessIdAndCarNoAndItemType(item.getBusinessId(), business.getCardNo(), item.getItemTypeId());
|
|
|
- if (businessFee == null) {
|
|
|
- businessFee = new TbFeeDetails();
|
|
|
+ TbFeeDetails businessFeeDetail = this.getByBusinessIdAndCarNoAndItemType(item.getBusinessId(), business.getCardNo(), item.getItemTypeId());
|
|
|
+ if (businessFeeDetail == null) {
|
|
|
+ businessFeeDetail = new TbFeeDetails();
|
|
|
+ businessFeeDetail.setTaxRate(BigDecimal.valueOf(TbFeeStatistics.taxRate.BUSINESS.getValue()));
|
|
|
+ }
|
|
|
+ BigDecimal taxPrice = item.getItemPrice()
|
|
|
+ .divide(BigDecimal.valueOf(1).add(businessFeeDetail.getTaxRate()),2, BigDecimal.ROUND_HALF_UP)
|
|
|
+ .multiply(businessFeeDetail.getTaxRate());
|
|
|
+ BigDecimal noTaxPrice = item.getItemPrice().subtract(taxPrice);
|
|
|
+
|
|
|
+ String carNo = business.getCardNo();
|
|
|
+ if(StrUtil.isEmpty(business.getCardNo())){
|
|
|
+ carNo = business.getChinaCarNo();
|
|
|
}
|
|
|
- businessFee.setBusinessId(item.getBusinessId()).setBusinessNo(business.getNo())
|
|
|
- .setCarNo(business.getCardNo())
|
|
|
- .setItemPrice(item.getItemPrice())
|
|
|
+ businessFeeDetail.setBusinessId(item.getBusinessId()).setBusinessNo(business.getNo())
|
|
|
+ .setBusinessItemNo(item.getNo())
|
|
|
+ .setCarNo(carNo)
|
|
|
+ .setItemPrice(item.getItemPrice()).setUnitPrice(item.getItemPrice()).setNoTaxPrice(noTaxPrice).setTaxPrice(taxPrice)
|
|
|
.setFeeType(feeType)
|
|
|
.setItemTypeId(item.getItemTypeId()).setItemTypeName(item.getItemTypeName())
|
|
|
.setItemId(item.getItemId()).setItemName(item.getItemName())
|
|
|
- .setPayDay(toDay).setPayType(3).setCreateTime(now);
|
|
|
- saveOrUpdate(businessFee);
|
|
|
+ .setPayDay(toDay).setPayType(3).setCreateTime(now)
|
|
|
+ .setBusinessItemId(item.getId() + "")
|
|
|
+ .setPickCustomerName(item.getPickCustomerName())
|
|
|
+ .setNum(1).setIsSettle(1).setPayMode(1).setPayTime(nowStr).setWeight(business.getNetWeight());
|
|
|
+ this.saveOrUpdate(businessFeeDetail);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -205,6 +237,12 @@ public class TbFeeDetailsService extends ServiceImpl<TbFeeDetailsMapper, TbFeeDe
|
|
|
.setWeight(feeDetails.getWeight()).setNum(feeDetails.getNum()).setUnitPrice(feeDetails.getUnitPrice())
|
|
|
.setSettle("已结算").setTaxRate(feeDetails.getTaxRate().multiply(new BigDecimal(100)))
|
|
|
.setTaxPrice(feeDetails.getTaxPrice()).setNoTaxPrice(feeDetails.getNoTaxPrice()).setPayTime(feeDetails.getPayTime());
|
|
|
+ if(!StrUtil.isEmpty(feeDetails.getBusinessId())){
|
|
|
+ detailDTO.setBusinessNo(feeDetails.getBusinessNo());
|
|
|
+ }else {
|
|
|
+ detailDTO.setBusinessNo(feeDetails.getBusinessCarNo());
|
|
|
+ }
|
|
|
+
|
|
|
exportList.add(detailDTO);
|
|
|
}
|
|
|
|