diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsCostProfit.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsCostProfit.java index 2504bb4ac..ae89cc525 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsCostProfit.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsCostProfit.java @@ -46,4 +46,6 @@ public class EmisTmsCostProfit extends BaseEntity /* 运单利润 */ private BigDecimal billProfit; + // 扩展参数 + private EmisWaybill waybillDetail; } diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostFeeRelMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostFeeRelMapper.java index c06ffb313..ddbf5497c 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostFeeRelMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostFeeRelMapper.java @@ -10,6 +10,7 @@ */ package com.xdadan.erp.emis.mapper; +import java.math.BigDecimal; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.xdadan.erp.emis.domain.EmisSettleSubBill; @@ -40,6 +41,17 @@ public interface EmisTmsCostFeeRelMapper extends BaseMapper public List selectEmisTmsCostFeeRelListByCostNo(String costNo); + /** + * 根据运单号获取关联费用 + * @param billCode + * @return + */ + public List selectEmisTmsCostFeeRelListByBillCode(String billCode); + + + public double getCostFeeByBillCode(String billCode); + + /** * 检查是否重复 * diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostProfitMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostProfitMapper.java index edbe43844..b35c90cf7 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostProfitMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostProfitMapper.java @@ -28,6 +28,9 @@ public interface EmisTmsCostProfitMapper extends BaseMapper */ public EmisTmsCostProfit selectEmisTmsCostProfitById(Long id); + + public EmisTmsCostProfit selectEmisTmsCostProfitByBillCode(String billCode); + /** * 查询列表 * diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisTmsCostFeeService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisTmsCostFeeService.java index 823c15d46..e05740d08 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisTmsCostFeeService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisTmsCostFeeService.java @@ -80,4 +80,6 @@ public interface IEmisTmsCostFeeService public int reCalcSplitCostFee(String costNo) throws EmisBizError; + public int reCalcCostFeeByBillCode(String billCode) throws EmisBizError; + } diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java index 8aed5763f..ff3954b40 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsCostFeeServiceImpl.java @@ -18,10 +18,13 @@ import com.xdadan.erp.emis.domain.*; import com.xdadan.erp.emis.domain.enumtype.EmisBizErrorType; import com.xdadan.erp.emis.domain.exception.EmisBizError; import com.xdadan.erp.emis.mapper.EmisTmsCostFeeRelMapper; +import com.xdadan.erp.emis.mapper.EmisTmsCostProfitMapper; +import com.xdadan.erp.emis.mapper.EmisWaybillMapper; import com.xdadan.erp.emis.utils.WaybillHelper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import com.xdadan.erp.emis.mapper.EmisTmsCostFeeMapper; import com.xdadan.erp.emis.service.IEmisTmsCostFeeService; @@ -43,6 +46,12 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService @Autowired private EmisTmsCostFeeRelMapper emisTmsCostFeeRelMapper; + @Autowired + private EmisTmsCostProfitMapper emisTmsCostProfitMapper; + + @Autowired + protected EmisWaybillMapper emisWaybillMapper; + /** * 查询TMS运输成本账单 * @@ -185,12 +194,15 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService emisTmsCostFeeRelMapper.updateEmisTmsCostFeeRel(updRel); } - // 更新信息 - return emisTmsCostFeeMapper.updateEmisTmsCostFee(emisTmsCostFee); + emisTmsCostFeeMapper.updateEmisTmsCostFee(emisTmsCostFee); + + // 重算单个运单费用 + for (EmisTmsCostFeeRel feeRel: listFeeRel) { + reCalcCostFeeByBillCode(feeRel.getBillCode()) + } + return 1; } - - /** * 重算每一单成本分摊重算 * @param billCode @@ -198,9 +210,30 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService * @throws EmisBizError */ @Override + @Transactional public int reCalcCostFeeByBillCode(String billCode) throws EmisBizError { - // 更新信息 + EmisTmsCostProfit emisTmsCostProfit=emisTmsCostProfitMapper.selectEmisTmsCostProfitByBillCode(billCode); + if(emisTmsCostProfit==null){ + // 初始化成本数据 + EmisWaybill emisWaybill=emisWaybillMapper.selectEmisWaybillByBillCode(billCode); + emisTmsCostProfit = new EmisTmsCostProfit(); + emisTmsCostProfit.setBillCode(emisWaybill.getBillCode()); + emisTmsCostProfit.setBillFee(emisWaybill.getFreight()); + emisTmsCostProfit.setStandardFee(emisWaybill.getRealFee()); + emisTmsCostProfitMapper.insertEmisTmsCostProfit(emisTmsCostProfit); + } + + EmisTmsCostProfit updProfit = new EmisTmsCostProfit(); + updProfit.setId(emisTmsCostProfit.getId()); + // 获取成本费用 + double costFee=emisTmsCostFeeRelMapper.getCostFeeByBillCode(billCode); + updProfit.setCostFee(BigDecimal.valueOf(costFee)); + updProfit.setBillProfit(updProfit.getBillFee().subtract(updProfit.getCostFee())); + emisTmsCostProfitMapper.updateEmisTmsCostProfit(updProfit); + + log.error("==>费用计算:==>:{}: {}-{}=",billCode,updProfit.getBillFee(),updProfit.getCostFee(),updProfit.getBillProfit()); + return 1; } diff --git a/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml b/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml index 25edc1faa..b2cb0f53e 100644 --- a/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisSettleSubBillMapper.xml @@ -604,6 +604,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + insert into emis_tms_cost_fee_rel diff --git a/emis-biz/src/main/resources/mapper/EmisTmsCostProfitMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsCostProfitMapper.xml index bb753288f..871bb2083 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsCostProfitMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsCostProfitMapper.xml @@ -13,6 +13,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + select id, bill_code, standard_fee, bill_fee, cost_fee, bill_profit, remark, del_flag, create_by, create_time, update_by, update_time, create_site, update_site from emis_tms_cost_profit @@ -64,6 +72,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from emis_tms_cost_profit a where a.id = #{id} + + insert into emis_tms_cost_profit