md
This commit is contained in:
parent
b0b3fae096
commit
c3b86fe925
@ -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;
|
||||
|
||||
@ -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 <p> 成本费用条目 Mapper 接口 </p>
|
||||
@ -36,6 +38,7 @@ public interface EmisTmsCostFeeFeeitemMapper extends BaseMapper<EmisTmsCostFeeFe
|
||||
*/
|
||||
public List<EmisTmsCostFeeFeeitem> selectEmisTmsCostFeeFeeitemList(EmisTmsCostFeeFeeitem emisTmsCostFeeFeeitem);
|
||||
|
||||
public List<EmisTmsCostFeeFeeitem> selectEmisTmsCostFeeFeeitemByCostNo(String costNo);
|
||||
|
||||
/**
|
||||
* 检查是否重复
|
||||
|
||||
@ -49,7 +49,6 @@ public interface EmisTmsCostFeeRelMapper extends BaseMapper<EmisTmsCostFeeRel>
|
||||
public List<EmisTmsCostFeeRel> selectEmisTmsCostFeeRelListByBillCode(String billCode);
|
||||
|
||||
|
||||
public double getCostFeeByBillCode(String billCode);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@ -44,7 +44,10 @@ public interface EmisTmsCostFeeSplitMapper extends BaseMapper<EmisTmsCostFeeSpli
|
||||
* @return 数量
|
||||
*/
|
||||
public int checkUnique(EmisTmsCostFeeSplit emisTmsCostFeeSplit);
|
||||
|
||||
|
||||
|
||||
|
||||
public double getCostFeeByBillCode(String billCode);
|
||||
|
||||
/**
|
||||
* 新增
|
||||
|
||||
@ -46,6 +46,9 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService
|
||||
@Autowired
|
||||
private EmisTmsCostFeeFeeitemMapper emisTmsCostFeeFeeitemMapper;
|
||||
|
||||
@Autowired
|
||||
private EmisTmsCostFeeSplitMapper emisTmsCostFeeSplitMapper;
|
||||
|
||||
@Autowired
|
||||
private EmisTmsCostProfitMapper emisTmsCostProfitMapper;
|
||||
|
||||
@ -144,64 +147,77 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService
|
||||
@Override
|
||||
public int reCalcSplitCostFee(String costNo) throws EmisBizError {
|
||||
// 获取最新的数据
|
||||
EmisTmsCostFee old = emisTmsCostFeeMapper.selectEmisTmsCostFeeByCostNo(costNo);
|
||||
EmisTmsCostFee oldCostFee = emisTmsCostFeeMapper.selectEmisTmsCostFeeByCostNo(costNo);
|
||||
// /* 总票数 总重量 总体积 */
|
||||
BigDecimal totalWeight = BigDecimal.ZERO;
|
||||
BigDecimal totalVolume = BigDecimal.ZERO;
|
||||
// if(oldCostFee.getCostFee()==null || BigDecimal.ZERO.compareTo(oldCostFee.getCostFee()) == 0){
|
||||
// throw new EmisBizError(EmisBizErrorType.FAIL,"成本费用不能为0");
|
||||
// }
|
||||
|
||||
if(old.getCostFee()==null || BigDecimal.ZERO.compareTo(old.getCostFee()) == 0){
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL,"成本费用不能为0");
|
||||
}
|
||||
|
||||
List<EmisTmsCostFeeRel> listFeeRel=emisTmsCostFeeRelMapper.selectEmisTmsCostFeeRelListByCostNo(costNo);
|
||||
if(CollectionUtil.isEmpty(listFeeRel)){
|
||||
// 获取子单号
|
||||
List<EmisTmsCostFeeRel> listBillCodeRel=emisTmsCostFeeRelMapper.selectEmisTmsCostFeeRelListByCostNo(costNo);
|
||||
if(CollectionUtil.isEmpty(listBillCodeRel)){
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL,"子运单数量为空,请检查");
|
||||
}
|
||||
|
||||
// 获取子费用
|
||||
List<EmisTmsCostFeeFeeitem> 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);
|
||||
|
||||
@ -66,7 +66,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
from emis_tms_cost_fee_feeitem a
|
||||
where a.id = #{id}
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectEmisTmsCostFeeFeeitemByCostNo" parameterType="String" resultMap="EmisTmsCostFeeFeeitemResult">
|
||||
select id, cost_no, fee_type, fee, currency, currecy_to_cny_rate, cny_fee, order_num, del_flag, create_by, create_time, update_by, update_time, remark
|
||||
from emis_tms_cost_fee_feeitem a
|
||||
where del_flag='0' and a.cost_no = #{costNo}
|
||||
</select>
|
||||
|
||||
<insert id="insertEmisTmsCostFeeFeeitem" parameterType="EmisTmsCostFeeFeeitem" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into emis_tms_cost_fee_feeitem
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
|
||||
@ -8,12 +8,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<result property="id" column="id" />
|
||||
<result property="costNo" column="cost_no" />
|
||||
<result property="billCode" column="bill_code" />
|
||||
<result property="feeType" column="fee_type" />
|
||||
<result property="splitType" column="split_type" />
|
||||
<result property="costFee" column="cost_fee" />
|
||||
<result property="totalVolume" column="total_volume" />
|
||||
<result property="billWeight" column="bill_weight" />
|
||||
<result property="calcRemark" column="calc_remark" />
|
||||
</resultMap>
|
||||
|
||||
|
||||
@ -26,7 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectEmisTmsCostFeeRelVo">
|
||||
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
|
||||
</sql>
|
||||
|
||||
<select id="selectEmisTmsCostFeeRelList" parameterType="EmisTmsCostFeeRel" resultMap="EmisTmsCostFeeRelResult">
|
||||
@ -34,14 +28,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<where>
|
||||
del_flag='0'
|
||||
<if test="id != null "> and id = #{id}</if>
|
||||
<if test="costNo != null and costNo != ''"> and cost_no like concat('%', #{costNo}, '%')</if>
|
||||
<if test="costNo != null and costNo != ''"> and cost_no=#{costNo}</if>
|
||||
<if test="billCode != null and billCode != ''"> and bill_code like concat('%', #{billCode}, '%')</if>
|
||||
<if test="feeType != null and feeType != ''"> and fee_type like concat('%', #{feeType}, '%')</if>
|
||||
<if test="splitType != null and splitType != ''"> and split_type like concat('%', #{splitType}, '%')</if>
|
||||
<if test="costFee != null "> and cost_fee = #{costFee}</if>
|
||||
<if test="totalVolume != null "> and total_volume = #{totalVolume}</if>
|
||||
<if test="billWeight != null "> and bill_weight = #{billWeight}</if>
|
||||
<if test="calcRemark != null and calcRemark != ''"> and calc_remark like concat('%', #{calcRemark}, '%')</if>
|
||||
<if test="remark != null and remark != ''"> and remark like concat('%', #{remark}, '%')</if>
|
||||
<if test="delFlag != null and delFlag != ''"> and del_flag like concat('%', #{delFlag}, '%')</if>
|
||||
<if test="createBy != null and createBy != ''"> and create_by like concat('%', #{createBy}, '%')</if>
|
||||
@ -60,12 +48,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
and id = #{id}
|
||||
and cost_no = #{costNo}
|
||||
and bill_code = #{billCode}
|
||||
and fee_type = #{feeType}
|
||||
and split_type = #{splitType}
|
||||
and cost_fee = #{costFee}
|
||||
and total_volume = #{totalVolume}
|
||||
and bill_weight = #{billWeight}
|
||||
and calc_remark = #{calcRemark}
|
||||
and remark = #{remark}
|
||||
and del_flag = #{delFlag}
|
||||
and create_by = #{createBy}
|
||||
@ -78,28 +60,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
</select>
|
||||
|
||||
<select id="selectEmisTmsCostFeeRelById" parameterType="Long" resultMap="EmisTmsCostFeeRelResult">
|
||||
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
|
||||
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 a
|
||||
where a.id = #{id}
|
||||
</select>
|
||||
|
||||
<select id="selectEmisTmsCostFeeRelListByCostNo" parameterType="String" resultMap="EmisTmsCostFeeRelWithSubBillResult">
|
||||
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
|
||||
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 a
|
||||
where del_flag='0' and a.cost_no = #{costNo}
|
||||
</select>
|
||||
|
||||
<select id="selectEmisTmsCostFeeRelListByBillCode" parameterType="String" resultMap="EmisTmsCostFeeRelWithSubBillResult">
|
||||
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
|
||||
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 a
|
||||
where del_flag='0' and a.bill_code = #{billCode}
|
||||
</select>
|
||||
|
||||
<select id="getCostFeeByBillCode" parameterType="String" resultType="double">
|
||||
select IFNULL(sum(cost_fee),0) as costFee
|
||||
from emis_tms_cost_fee_rel a
|
||||
where del_flag='0' and a.bill_code = #{billCode}
|
||||
</select>
|
||||
|
||||
|
||||
<insert id="insertEmisTmsCostFeeRel" parameterType="EmisTmsCostFeeRel" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into emis_tms_cost_fee_rel
|
||||
|
||||
@ -145,12 +145,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<select id="getCostFeeByBillCode" parameterType="String" resultType="double">
|
||||
select IFNULL(sum(cost_fee),0) as costFee
|
||||
from emis_tms_cost_fee_split a
|
||||
where del_flag='0' and a.bill_code = #{billCode}
|
||||
</select>
|
||||
|
||||
<delete id="deleteEmisTmsCostFeeSplitById" parameterType="Long">
|
||||
delete from emis_tms_cost_fee_split where id = #{id}
|
||||
update emis_tms_cost_fee_split set del_flag='1' where id = #{id}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteEmisTmsCostFeeSplitByIds" parameterType="String">
|
||||
delete from emis_tms_cost_fee_split where id in
|
||||
update emis_tms_cost_fee_split set del_flag='1' where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user