md
This commit is contained in:
parent
3a3609283e
commit
ea0b2e247b
@ -48,4 +48,7 @@ public class EmisTmsCostFeeRel extends BaseEntity
|
||||
/* 计算备注 */
|
||||
private String calcRemark;
|
||||
|
||||
// 扩展参数
|
||||
private EmisWaybill waybillDetail;
|
||||
|
||||
}
|
||||
|
||||
@ -28,6 +28,9 @@ public interface EmisTmsCostFeeMapper extends BaseMapper<EmisTmsCostFee>
|
||||
*/
|
||||
public EmisTmsCostFee selectEmisTmsCostFeeById(Long id);
|
||||
|
||||
|
||||
public EmisTmsCostFee selectEmisTmsCostFeeByCostNo(String costNo);
|
||||
|
||||
/**
|
||||
* 查询列表
|
||||
*
|
||||
|
||||
@ -12,6 +12,7 @@ package com.xdadan.erp.emis.mapper;
|
||||
|
||||
import java.util.List;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xdadan.erp.emis.domain.EmisSettleSubBill;
|
||||
import com.xdadan.erp.emis.domain.EmisTmsCostFeeRel;
|
||||
/**
|
||||
* @ClassName EmisTmsCostFeeRelMapper
|
||||
@ -36,6 +37,8 @@ public interface EmisTmsCostFeeRelMapper extends BaseMapper<EmisTmsCostFeeRel>
|
||||
*/
|
||||
public List<EmisTmsCostFeeRel> selectEmisTmsCostFeeRelList(EmisTmsCostFeeRel emisTmsCostFeeRel);
|
||||
|
||||
public List<EmisTmsCostFeeRel> selectEmisTmsCostFeeRelListByCostNo(String costNo);
|
||||
|
||||
|
||||
/**
|
||||
* 检查是否重复
|
||||
|
||||
@ -76,4 +76,8 @@ public interface IEmisTmsCostFeeService
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteEmisTmsCostFeeById(Long id);
|
||||
|
||||
|
||||
public int reCalcSplitCostFee(String costNo) throws EmisBizError;
|
||||
|
||||
}
|
||||
|
||||
@ -10,17 +10,19 @@
|
||||
|
||||
package com.xdadan.erp.emis.service.impl;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
import com.xdadan.erp.emis.domain.EmisTmsCostFeeRel;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
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.utils.WaybillHelper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.xdadan.erp.emis.domain.EmisTmsCostFee;
|
||||
import com.xdadan.erp.emis.mapper.EmisTmsCostFeeMapper;
|
||||
import com.xdadan.erp.emis.service.IEmisTmsCostFeeService;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -31,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
* @author linfso
|
||||
* @date 2024-10-10 01:53:20
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService
|
||||
{
|
||||
@ -87,7 +90,6 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService
|
||||
@Transactional
|
||||
public int insertEmisTmsCostFee(EmisTmsCostFee emisTmsCostFee) throws EmisBizError {
|
||||
// billRelList
|
||||
|
||||
if(CollectionUtils.isEmpty(emisTmsCostFee.getBillRelList())){
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL,"关联单号不能为空");
|
||||
}
|
||||
@ -101,9 +103,95 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService
|
||||
emisTmsCostFeeRelMapper.insertEmisTmsCostFeeRel(costFeeRel);
|
||||
}
|
||||
|
||||
return emisTmsCostFeeMapper.insertEmisTmsCostFee(emisTmsCostFee);
|
||||
emisTmsCostFeeMapper.insertEmisTmsCostFee(emisTmsCostFee);
|
||||
|
||||
// 计算分摊费用
|
||||
reCalcSplitCostFee(costNo);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* 成本分摊重算
|
||||
* @param costNo
|
||||
* @return
|
||||
* @throws EmisBizError
|
||||
*/
|
||||
@Override
|
||||
public int reCalcSplitCostFee(String costNo) throws EmisBizError {
|
||||
|
||||
// 获取最新的数据
|
||||
EmisTmsCostFee old = emisTmsCostFeeMapper.selectEmisTmsCostFeeByCostNo(costNo);
|
||||
|
||||
// /* 总票数 总重量 总体积 */
|
||||
BigDecimal totalWeight = BigDecimal.ZERO;
|
||||
BigDecimal totalVolume = BigDecimal.ZERO;
|
||||
|
||||
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)){
|
||||
throw new EmisBizError(EmisBizErrorType.FAIL,"子运单数量为空,请检查");
|
||||
}
|
||||
|
||||
|
||||
Integer pieceNumber = 0;
|
||||
// 计算总重量
|
||||
for (EmisTmsCostFeeRel feeRel: listFeeRel) {
|
||||
// 获取运单信息
|
||||
EmisWaybill emisWaybill=feeRel.getWaybillDetail();
|
||||
// 累加应收
|
||||
totalWeight=totalWeight.add(emisWaybill.getBillWeight());
|
||||
totalVolume=totalVolume.add(emisWaybill.getTotalVolume());
|
||||
pieceNumber=pieceNumber+emisWaybill.getParcelQty();
|
||||
}
|
||||
|
||||
|
||||
Integer sendPieceSum = listFeeRel.size();
|
||||
|
||||
EmisTmsCostFee emisTmsCostFee = new EmisTmsCostFee();
|
||||
emisTmsCostFee.setId(old.getId());
|
||||
// 总票数 总件数 总重量 总体积
|
||||
emisTmsCostFee.setSendPieceSum(sendPieceSum);
|
||||
emisTmsCostFee.setPieceNumber(pieceNumber);
|
||||
emisTmsCostFee.setTotalWeight(totalWeight);
|
||||
emisTmsCostFee.setTotalVolume(totalVolume);
|
||||
|
||||
// 计算分摊成本
|
||||
for (EmisTmsCostFeeRel feeRel: listFeeRel) {
|
||||
EmisTmsCostFeeRel updRel = new EmisTmsCostFeeRel();
|
||||
updRel.setId(feeRel.getId());
|
||||
updRel.setFeeType(emisTmsCostFee.getFeeType());
|
||||
updRel.setSplitType(emisTmsCostFee.getSplitType());
|
||||
|
||||
BigDecimal splitCostFee=BigDecimal.ZERO;
|
||||
BigDecimal splitRate=BigDecimal.ZERO;
|
||||
// 按重量分摊
|
||||
if("1".equals(updRel.getSplitType()) ){
|
||||
splitRate = feeRel.getWaybillDetail().getBillWeight().divide(totalWeight);
|
||||
}
|
||||
// 按体积
|
||||
else if("2".equals(updRel.getSplitType()) ){
|
||||
splitRate = feeRel.getWaybillDetail().getTotalVolume().divide(totalVolume);
|
||||
}
|
||||
// 按票
|
||||
else if("3".equals(updRel.getSplitType()) ){
|
||||
splitRate = 1/sendPieceSum;
|
||||
}
|
||||
splitCostFee = old.getCostFee().multiply(splitRate);
|
||||
updRel.setCostFee(splitCostFee);
|
||||
|
||||
emisTmsCostFeeRelMapper.updateEmisTmsCostFeeRel(updRel);
|
||||
}
|
||||
|
||||
|
||||
// 更新信息
|
||||
return emisTmsCostFeeMapper.updateEmisTmsCostFee(emisTmsCostFee);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改TMS运输成本账单
|
||||
*
|
||||
|
||||
@ -131,6 +131,12 @@
|
||||
where a.id = #{id}
|
||||
</select>
|
||||
|
||||
<select id="selectEmisTmsCostFeeByCostNo" parameterType="Long" resultMap="EmisTmsCostFeeResult">
|
||||
select id, cost_no, cost_name, fee_type, split_type, trans_type, trans_sign_no, send_place, dest_place, cost_fee, trade_date, send_piece_sum, piece_number, total_weight, total_volume, bl_confirm_center, real_piece_number, real_total_weight, real_total_volume, confirm_center_date, confirm_center_note, confirm_center_man_code, confirm_center_code, bl_confirm_site, confirm_site_date, confirm_site_man_code, confirm_site_note, confirm_site_code, remark, del_flag, create_by, create_time, update_by, update_time, create_site, update_site
|
||||
from emis_tms_cost_fee a
|
||||
where a.cost_no = #{costNo}
|
||||
</select>
|
||||
|
||||
<insert id="insertEmisTmsCostFee" parameterType="EmisTmsCostFee" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into emis_tms_cost_fee
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
|
||||
@ -14,6 +14,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<result property="calcRemark" column="calc_remark" />
|
||||
</resultMap>
|
||||
|
||||
|
||||
<resultMap id="EmisTmsCostFeeRelWithSubBillResult" type="EmisTmsCostFeeRel" extends="EmisTmsCostFeeRelResult" >
|
||||
<association property="waybillDetail"
|
||||
column="bill_code"
|
||||
select="com.xdadan.erp.emis.mapper.EmisWaybillMapper.selectWaybillBaseInfoByBillCode"
|
||||
fetchType="lazy"
|
||||
/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectEmisTmsCostFeeRelVo">
|
||||
select id, cost_no, bill_code, fee_type, split_type, cost_fee, calc_remark, remark, del_flag, create_by, create_time, update_by, update_time, create_site, update_site from emis_tms_cost_fee_rel
|
||||
</sql>
|
||||
@ -61,7 +70,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
and update_site = #{updateSite}
|
||||
limit 1
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectEmisTmsCostFeeRelListByCostNo" parameterType="String" resultMap="EmisTmsCostFeeRelWithSubBillResult">
|
||||
select id, cost_no, bill_code, fee_type, split_type, cost_fee, calc_remark, 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="selectEmisTmsCostFeeRelById" parameterType="Long" resultMap="EmisTmsCostFeeRelResult">
|
||||
select id, cost_no, bill_code, fee_type, split_type, cost_fee, calc_remark, remark, del_flag, create_by, create_time, update_by, update_time, create_site, update_site
|
||||
from emis_tms_cost_fee_rel a
|
||||
|
||||
Loading…
Reference in New Issue
Block a user