md
This commit is contained in:
parent
3a3609283e
commit
ea0b2e247b
@ -48,4 +48,7 @@ public class EmisTmsCostFeeRel extends BaseEntity
|
|||||||
/* 计算备注 */
|
/* 计算备注 */
|
||||||
private String calcRemark;
|
private String calcRemark;
|
||||||
|
|
||||||
|
// 扩展参数
|
||||||
|
private EmisWaybill waybillDetail;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,6 +28,9 @@ public interface EmisTmsCostFeeMapper extends BaseMapper<EmisTmsCostFee>
|
|||||||
*/
|
*/
|
||||||
public EmisTmsCostFee selectEmisTmsCostFeeById(Long id);
|
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 java.util.List;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.xdadan.erp.emis.domain.EmisSettleSubBill;
|
||||||
import com.xdadan.erp.emis.domain.EmisTmsCostFeeRel;
|
import com.xdadan.erp.emis.domain.EmisTmsCostFeeRel;
|
||||||
/**
|
/**
|
||||||
* @ClassName EmisTmsCostFeeRelMapper
|
* @ClassName EmisTmsCostFeeRelMapper
|
||||||
@ -36,6 +37,8 @@ public interface EmisTmsCostFeeRelMapper extends BaseMapper<EmisTmsCostFeeRel>
|
|||||||
*/
|
*/
|
||||||
public List<EmisTmsCostFeeRel> selectEmisTmsCostFeeRelList(EmisTmsCostFeeRel emisTmsCostFeeRel);
|
public List<EmisTmsCostFeeRel> selectEmisTmsCostFeeRelList(EmisTmsCostFeeRel emisTmsCostFeeRel);
|
||||||
|
|
||||||
|
public List<EmisTmsCostFeeRel> selectEmisTmsCostFeeRelListByCostNo(String costNo);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检查是否重复
|
* 检查是否重复
|
||||||
|
|||||||
@ -76,4 +76,8 @@ public interface IEmisTmsCostFeeService
|
|||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int deleteEmisTmsCostFeeById(Long id);
|
public int deleteEmisTmsCostFeeById(Long id);
|
||||||
|
|
||||||
|
|
||||||
|
public int reCalcSplitCostFee(String costNo) throws EmisBizError;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,17 +10,19 @@
|
|||||||
|
|
||||||
package com.xdadan.erp.emis.service.impl;
|
package com.xdadan.erp.emis.service.impl;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
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.enumtype.EmisBizErrorType;
|
||||||
import com.xdadan.erp.emis.domain.exception.EmisBizError;
|
import com.xdadan.erp.emis.domain.exception.EmisBizError;
|
||||||
import com.xdadan.erp.emis.mapper.EmisTmsCostFeeRelMapper;
|
import com.xdadan.erp.emis.mapper.EmisTmsCostFeeRelMapper;
|
||||||
import com.xdadan.erp.emis.utils.WaybillHelper;
|
import com.xdadan.erp.emis.utils.WaybillHelper;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.collections.CollectionUtils;
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import com.xdadan.erp.emis.domain.EmisTmsCostFee;
|
|
||||||
import com.xdadan.erp.emis.mapper.EmisTmsCostFeeMapper;
|
import com.xdadan.erp.emis.mapper.EmisTmsCostFeeMapper;
|
||||||
import com.xdadan.erp.emis.service.IEmisTmsCostFeeService;
|
import com.xdadan.erp.emis.service.IEmisTmsCostFeeService;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@ -31,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
* @author linfso
|
* @author linfso
|
||||||
* @date 2024-10-10 01:53:20
|
* @date 2024-10-10 01:53:20
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService
|
public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService
|
||||||
{
|
{
|
||||||
@ -87,7 +90,6 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService
|
|||||||
@Transactional
|
@Transactional
|
||||||
public int insertEmisTmsCostFee(EmisTmsCostFee emisTmsCostFee) throws EmisBizError {
|
public int insertEmisTmsCostFee(EmisTmsCostFee emisTmsCostFee) throws EmisBizError {
|
||||||
// billRelList
|
// billRelList
|
||||||
|
|
||||||
if(CollectionUtils.isEmpty(emisTmsCostFee.getBillRelList())){
|
if(CollectionUtils.isEmpty(emisTmsCostFee.getBillRelList())){
|
||||||
throw new EmisBizError(EmisBizErrorType.FAIL,"关联单号不能为空");
|
throw new EmisBizError(EmisBizErrorType.FAIL,"关联单号不能为空");
|
||||||
}
|
}
|
||||||
@ -101,9 +103,95 @@ public class EmisTmsCostFeeServiceImpl implements IEmisTmsCostFeeService
|
|||||||
emisTmsCostFeeRelMapper.insertEmisTmsCostFeeRel(costFeeRel);
|
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运输成本账单
|
* 修改TMS运输成本账单
|
||||||
*
|
*
|
||||||
|
|||||||
@ -131,6 +131,12 @@
|
|||||||
where a.id = #{id}
|
where a.id = #{id}
|
||||||
</select>
|
</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 id="insertEmisTmsCostFee" parameterType="EmisTmsCostFee" useGeneratedKeys="true" keyProperty="id">
|
||||||
insert into emis_tms_cost_fee
|
insert into emis_tms_cost_fee
|
||||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
|||||||
@ -14,6 +14,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="calcRemark" column="calc_remark" />
|
<result property="calcRemark" column="calc_remark" />
|
||||||
</resultMap>
|
</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">
|
<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
|
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>
|
</sql>
|
||||||
@ -62,6 +71,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
limit 1
|
limit 1
|
||||||
</select>
|
</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="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
|
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
|
from emis_tms_cost_fee_rel a
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user