diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsCostFeeRel.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsCostFeeRel.java index e163376b1..ac4a1edf8 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsCostFeeRel.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsCostFeeRel.java @@ -42,18 +42,6 @@ public class EmisTmsCostFeeRel extends BaseEntity private String costNo; /* 运单号 */ private String billCode; - /* 成本费用类型 字典 emis_cost_fee_type */ - private String feeType; - /* 成本分摊类型 1-按重量 2-按体积 3-按票 */ - private String splitType; - /* 分摊成本 */ - private BigDecimal costFee; - /* 总体积 */ - private BigDecimal totalVolume; - /* 实际重量 */ - private BigDecimal billWeight; - /* 计算备注 */ - private String calcRemark; // 扩展参数 private EmisWaybill waybillDetail; diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostFeeFeeitemMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostFeeFeeitemMapper.java index 0dce230cd..cebdc3ed8 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostFeeFeeitemMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostFeeFeeitemMapper.java @@ -13,6 +13,8 @@ package com.xdadan.erp.emis.mapper; import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.xdadan.erp.emis.domain.EmisTmsCostFeeFeeitem; +import com.xdadan.erp.emis.domain.EmisTmsCostFeeRel; + /** * @ClassName EmisTmsCostFeeFeeitemMapper * @Description

成本费用条目 Mapper 接口

@@ -36,6 +38,7 @@ public interface EmisTmsCostFeeFeeitemMapper extends BaseMapper selectEmisTmsCostFeeFeeitemList(EmisTmsCostFeeFeeitem emisTmsCostFeeFeeitem); + public List selectEmisTmsCostFeeFeeitemByCostNo(String costNo); /** * 检查是否重复 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 b05573692..b16abe33f 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 @@ -49,7 +49,6 @@ public interface EmisTmsCostFeeRelMapper extends BaseMapper public List selectEmisTmsCostFeeRelListByBillCode(String billCode); - public double getCostFeeByBillCode(String billCode); /** diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostFeeSplitMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostFeeSplitMapper.java index 9a5115a95..c16f2a18a 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostFeeSplitMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsCostFeeSplitMapper.java @@ -44,7 +44,10 @@ public interface EmisTmsCostFeeSplitMapper extends BaseMapper listFeeRel=emisTmsCostFeeRelMapper.selectEmisTmsCostFeeRelListByCostNo(costNo); - if(CollectionUtil.isEmpty(listFeeRel)){ + // 获取子单号 + List listBillCodeRel=emisTmsCostFeeRelMapper.selectEmisTmsCostFeeRelListByCostNo(costNo); + if(CollectionUtil.isEmpty(listBillCodeRel)){ throw new EmisBizError(EmisBizErrorType.FAIL,"子运单数量为空,请检查"); } + // 获取子费用 + List listFeeItemRel=emisTmsCostFeeFeeitemMapper.selectEmisTmsCostFeeFeeitemByCostNo(costNo); + if(CollectionUtil.isEmpty(listFeeItemRel)){ + throw new EmisBizError(EmisBizErrorType.FAIL,"费用为空,请检查"); + } + + Integer pieceNumber = 0; // 计算总重量 - for (EmisTmsCostFeeRel feeRel: listFeeRel) { + for (EmisTmsCostFeeRel billCodeRel: listBillCodeRel) { // 获取运单信息 - EmisWaybill emisWaybill=feeRel.getWaybillDetail(); + EmisWaybill emisWaybill=billCodeRel.getWaybillDetail(); // 累加应收 totalWeight=totalWeight.add(emisWaybill.getBillWeight()); totalVolume=totalVolume.add(emisWaybill.getTotalVolume()); pieceNumber=pieceNumber+emisWaybill.getParcelQty(); } - Integer sendPieceSum = listFeeRel.size(); + Integer sendPieceSum = listBillCodeRel.size(); // 计算分摊成本 - for (EmisTmsCostFeeRel feeRel: listFeeRel) { - EmisTmsCostFeeRel updRel = new EmisTmsCostFeeRel(); - updRel.setId(feeRel.getId()); - updRel.setFeeType(old.getFeeType()); - updRel.setSplitType(old.getSplitType()); + for (EmisTmsCostFeeRel billCodeItem: listBillCodeRel) { - BigDecimal splitCostFee=BigDecimal.ZERO; - BigDecimal splitRate=BigDecimal.ZERO; - // 按重量分摊 - if("1".equals(updRel.getSplitType()) ){ - splitRate = feeRel.getWaybillDetail().getBillWeight().divide(totalWeight,BigDecimal.ROUND_CEILING); - } - // 按体积 - else if("2".equals(updRel.getSplitType()) ){ - splitRate = feeRel.getWaybillDetail().getTotalVolume().divide(totalVolume,BigDecimal.ROUND_CEILING); - } - // 按票 - else if("3".equals(updRel.getSplitType()) ){ - splitRate = BigDecimal.valueOf(1.0D/(double)sendPieceSum); - } - splitCostFee = old.getCostFee().multiply(splitRate); - updRel.setCostFee(splitCostFee); + // 循环费用类型 + for (EmisTmsCostFeeFeeitem feeItem: listFeeItemRel) { - updRel.setBillWeight(feeRel.getWaybillDetail().getBillWeight()); - updRel.setTotalVolume(feeRel.getWaybillDetail().getTotalVolume()); + EmisTmsCostFeeSplit splitItem = new EmisTmsCostFeeSplit(); + splitItem.setFeeItemId(feeItem.getId()); + splitItem.setFeeType(oldCostFee.getFeeType()); + splitItem.setSplitType(oldCostFee.getSplitType()); - emisTmsCostFeeRelMapper.updateEmisTmsCostFeeRel(updRel); + BigDecimal splitCostFee = BigDecimal.ZERO; + BigDecimal splitRate = BigDecimal.ZERO; + // 按重量分摊 + if ("1".equals(oldCostFee.getSplitType())) { + splitRate = billCodeItem.getWaybillDetail().getBillWeight().divide(totalWeight, BigDecimal.ROUND_CEILING); + } + // 按体积 + else if ("2".equals(oldCostFee.getSplitType())) { + splitRate = billCodeItem.getWaybillDetail().getTotalVolume().divide(totalVolume, BigDecimal.ROUND_CEILING); + } + // 按票 + else if ("3".equals(oldCostFee.getSplitType())) { + splitRate = BigDecimal.valueOf(1.0D / (double) sendPieceSum); + } + splitCostFee = oldCostFee.getCostFee().multiply(splitRate); + splitItem.setCostFee(splitCostFee); + + splitItem.setBillWeight(billCodeItem.getWaybillDetail().getBillWeight()); + splitItem.setTotalVolume(billCodeItem.getWaybillDetail().getTotalVolume()); + + // 插入分摊明细数据 + emisTmsCostFeeSplitMapper.insertEmisTmsCostFeeSplit(splitItem); + } } EmisTmsCostFee emisTmsCostFee = new EmisTmsCostFee(); - emisTmsCostFee.setId(old.getId()); + emisTmsCostFee.setId(oldCostFee.getId()); // 总票数 总件数 总重量 总体积 emisTmsCostFee.setSendPieceSum(sendPieceSum); emisTmsCostFee.setPieceNumber(pieceNumber); @@ -209,8 +225,8 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService emisTmsCostFee.setTotalVolume(totalVolume); emisTmsCostFeeMapper.updateEmisTmsCostFee(emisTmsCostFee); - // 重算单个运单费用 - for (EmisTmsCostFeeRel feeRel: listFeeRel) { + // 重算每一单成本分摊重算,利润 + for (EmisTmsCostFeeRel feeRel: listBillCodeRel) { try { reCalcCostFeeByBillCode(feeRel.getBillCode()); }catch (Exception ex){ @@ -221,7 +237,7 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService } /** - * 重算每一单成本分摊重算 + * 重算每一单成本分摊重算,利润 * @param billCode * @return * @throws EmisBizError @@ -246,7 +262,7 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService updProfit.setBillFee(emisTmsCostProfit.getBillFee()); // 获取成本费用 - double costFee=emisTmsCostFeeRelMapper.getCostFeeByBillCode(billCode); + double costFee=emisTmsCostFeeSplitMapper.getCostFeeByBillCode(billCode); updProfit.setCostFee(BigDecimal.valueOf(costFee)); updProfit.setBillProfit(emisTmsCostProfit.getBillFee().subtract(updProfit.getCostFee())); emisTmsCostProfitMapper.updateEmisTmsCostProfit(updProfit); diff --git a/emis-biz/src/main/resources/mapper/EmisTmsCostFeeFeeitemMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsCostFeeFeeitemMapper.xml index e01f44b45..bc55ab59d 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsCostFeeFeeitemMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsCostFeeFeeitemMapper.xml @@ -66,7 +66,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from emis_tms_cost_fee_feeitem a where a.id = #{id} - + + + insert into emis_tms_cost_fee_feeitem diff --git a/emis-biz/src/main/resources/mapper/EmisTmsCostFeeRelMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsCostFeeRelMapper.xml index f58612bbd..ba318e912 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsCostFeeRelMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsCostFeeRelMapper.xml @@ -8,12 +8,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - - - - - @@ -26,7 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, cost_no, bill_code, fee_type, split_type, cost_fee, total_volume, bill_weight, calc_remark, remark, del_flag, create_by, create_time, update_by, update_time, create_site, update_site from emis_tms_cost_fee_rel + select id, cost_no, bill_code, remark, del_flag, create_by, create_time, update_by, update_time, create_site, update_site from emis_tms_cost_fee_rel - + insert into emis_tms_cost_fee_rel diff --git a/emis-biz/src/main/resources/mapper/EmisTmsCostFeeSplitMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsCostFeeSplitMapper.xml index c8fcd63ad..83ae31a86 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsCostFeeSplitMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsCostFeeSplitMapper.xml @@ -145,12 +145,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} + + - delete from emis_tms_cost_fee_split where id = #{id} + update emis_tms_cost_fee_split set del_flag='1' where id = #{id} - delete from emis_tms_cost_fee_split where id in + update emis_tms_cost_fee_split set del_flag='1' where id in #{id}