From 708297d2443af0289b92dfae217049e39495dd78 Mon Sep 17 00:00:00 2001 From: linfso Date: Sun, 16 Mar 2025 10:44:15 +0800 Subject: [PATCH] md --- .../emis/EmisCommissionProfitController.java | 27 ++++ .../erp/emis/domain/EmisCommissionDtl.java | 5 +- .../emis/mapper/EmisCommissionDtlMapper.java | 9 +- .../emis/mapper/EmisTmsSiteBatchMapper.java | 9 ++ .../erp/emis/mapper/EmisWaybillMapper.java | 4 +- .../erp/emis/service/EmisBaseService.java | 16 +++ .../service/IEmisCommissionProfitService.java | 7 + .../impl/EmisCommissionProfitServiceImpl.java | 128 ++++++++++-------- .../mapper/EmisCommissionDtlMapper.xml | 33 +++-- .../mapper/EmisTmsSiteBatchMapper.xml | 13 ++ 10 files changed, 178 insertions(+), 73 deletions(-) diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommissionProfitController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommissionProfitController.java index b2ef68d41..d13612990 100644 --- a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommissionProfitController.java +++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommissionProfitController.java @@ -89,6 +89,33 @@ public class EmisCommissionProfitController extends BaseController } } + /** + * 按批次号重算 + * @param batchNo + * @return + */ + @GetMapping(value = "/batchReCalcProfitByBatchNo") + public AjaxResult batchReCalcProfitByBatchNo(String batchNo) + { + if(!StringUtils.isEmpty(batchNo)){ + batchNo=WaybillHelper.formatQueryValue(batchNo); + String[] batchNoSortList = batchNo.split(","); + if(batchNoSortList.length>0){ + for (int i=0;i */ public int deleteEmisCommissionDtlByBillCode(String billCode); + + /** + * 根据批次号删除 + * @param batchNo + * @return + */ + public int deleteEmisCommissionDtlByBatchNo(String batchNo); + /** * 批量删除 - * * @param ids 需要删除的数据主键集合 * @return 结果 */ diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchMapper.java index 3b42e05cd..22304f88f 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsSiteBatchMapper.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.EmisTmsSiteBatch; +import com.xdadan.erp.emis.domain.EmisWaybill; + /** * @ClassName EmisTmsSiteBatchMapper * @Description

一级网点TMS组批次 Mapper 接口

@@ -28,6 +30,9 @@ public interface EmisTmsSiteBatchMapper extends BaseMapper */ public EmisTmsSiteBatch selectEmisTmsSiteBatchById(Long id); + + public EmisTmsSiteBatch selectTmsSiteBatchByBatchNo(String batchNo); + /** * 查询列表 * @@ -67,4 +72,8 @@ public interface EmisTmsSiteBatchMapper extends BaseMapper * @return 结果 */ public int deleteEmisTmsSiteBatchByIds(Long[] ids); + + + // 打提成标识 + public int updateHasDoProfit(String batchNo); } diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisWaybillMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisWaybillMapper.java index e430af36f..6f88eb91b 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisWaybillMapper.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisWaybillMapper.java @@ -165,10 +165,10 @@ public interface EmisWaybillMapper extends BaseMapper public int cancelHasDoBill(EmisWaybill emisWaybill); // 打提成标识 - public int updateHasDoProfit(EmisWaybill emisWaybill); + public int updateHasDoProfit(String billCode); // 取消出账标识 - public int cancelHasDoProfit(EmisWaybill emisWaybill); + public int cancelHasDoProfit(String billCode); // 更新问题件状态 public int updateProblemStatus(EmisWaybill emisWaybill); diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java index 5bd001930..fb6cfeab8 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/EmisBaseService.java @@ -55,6 +55,8 @@ package com.xdadan.erp.emis.service; @Slf4j public class EmisBaseService { + @Autowired + private EmisTmsSiteBatchMapper emisTmsSiteBatchMapper; @Autowired private EmisCreditCustomerMapper emisCreditCustomerMapper; @@ -1308,6 +1310,20 @@ public class EmisBaseService { } + /** + * 根据batchNo获取单号信息 + * @param batchNo + * @return + */ + public EmisTmsSiteBatch getTmsSiteBatchByBatchNo(String batchNo){ + if(StringUtils.isEmpty(batchNo)){ + return null; + } + + return emisTmsSiteBatchMapper.selectTmsSiteBatchByBatchNo(batchNo); + } + + /** * 增加站点结算记录 * @param emisSiteSettleRecord diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisCommissionProfitService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisCommissionProfitService.java index 2270b526b..e0b8ea9ce 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisCommissionProfitService.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisCommissionProfitService.java @@ -42,6 +42,13 @@ public interface IEmisCommissionProfitService */ public void reCalcProfitByBillCode(String billCode); + + /** + * 重新计算提成根据批次号 + * @param batchNo + */ + public void reCalcProfitByBatchNo(String batchNo); + /** * 查询员工提成表列表 * diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisCommissionProfitServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisCommissionProfitServiceImpl.java index df057fff6..715fe1935 100644 --- a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisCommissionProfitServiceImpl.java +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisCommissionProfitServiceImpl.java @@ -28,9 +28,7 @@ import com.xdadan.erp.common.utils.DateUtils; import com.xdadan.erp.common.utils.DictUtils; import com.xdadan.erp.emis.domain.*; import com.xdadan.erp.emis.domain.enumtype.ProfitPostType; -import com.xdadan.erp.emis.mapper.EmisCommissionDtlMapper; -import com.xdadan.erp.emis.mapper.EmisCommissionQuoteMapper; -import com.xdadan.erp.emis.mapper.EmisWaybillMapper; +import com.xdadan.erp.emis.mapper.*; import com.xdadan.erp.emis.service.EmisBaseService; import com.xdadan.erp.emis.utils.WaybillHelper; import lombok.extern.slf4j.Slf4j; @@ -39,7 +37,6 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; -import com.xdadan.erp.emis.mapper.EmisCommissionProfitMapper; import com.xdadan.erp.emis.service.IEmisCommissionProfitService; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; @@ -54,6 +51,10 @@ import org.springframework.util.CollectionUtils; @Service public class EmisCommissionProfitServiceImpl extends EmisBaseService implements IEmisCommissionProfitService { + + @Autowired + private EmisTmsSiteBatchMapper emisTmsSiteBatchMapper; + @Autowired private EmisCommissionProfitMapper emisCommissionProfitMapper; @@ -162,6 +163,39 @@ public class EmisCommissionProfitServiceImpl extends EmisBaseService implements } + @Override + @Transactional + public void reCalcProfitByBatchNo(String batchNo) + { + String lockKey="reCalcProfitByBatchNo"+batchNo; + // 加锁查询 + log.info("reCalcProfitByBatchNo start:"+batchNo); + redissonService.lock(lockKey, 300); + try { + + // 获取批次信息 + EmisTmsSiteBatch tmsBatch = getTmsSiteBatchByBatchNo(batchNo); + // 先删除该运单已经计算的提成 + emisCommissionDtlMapper.deleteEmisCommissionDtlByBatchNo(batchNo); + /* + 单证员 8 + */ + // 单证提成计算 + calcHyLyDzProfit(tmsBatch); + + // 运单打上已计算提成标记 + emisTmsSiteBatchMapper.updateHasDoProfit(batchNo); + }catch (Exception ex){ + redissonService.unlock(lockKey); + ex.printStackTrace(); + } + redissonService.unlock(lockKey); + + log.info("reCalcProfitByBatchNo end:"+batchNo); + + } + + /** * 根据单号重新计算提成 */ @@ -222,14 +256,14 @@ public class EmisCommissionProfitServiceImpl extends EmisBaseService implements else if (postTypeIndex == ProfitPostType.MID_OP_EMP.typeCode) { calcMidOpProfit(waybill); } - // 8.单证员 + // 8.陆运海运单证员,按柜计算,不按单计算 else if (postTypeIndex == ProfitPostType.DZ_EMP.typeCode) { - calcDzProfit(waybill); + } } // 运单打上已计算提成标记 - emisWaybillMapper.updateHasDoProfit(waybill); + emisWaybillMapper.updateHasDoProfit(waybill.getBillCode()); }catch (Exception ex){ redissonService.unlock(lockKey); ex.printStackTrace(); @@ -1140,23 +1174,36 @@ public class EmisCommissionProfitServiceImpl extends EmisBaseService implements /** - * 计算单证提成 - * @param waybill + * 计算海运陆运单证提成 + * @param siteBatch */ - private void calcDzProfit(EmisWaybill waybill){ - String billMonth= DateUtils.parseDateToStr(DateUtils.YYYY_MM,waybill.getSendDate()); + private void calcHyLyDzProfit(EmisTmsSiteBatch siteBatch){ - EmisTransLine transLine=getTransLineByCode(waybill.getTransLineType()); + Date sendDate = siteBatch.getEtd(); + if(sendDate==null){ + sendDate=siteBatch.getCreateTime(); + } + + String billMonth= DateUtils.parseDateToStr(DateUtils.YYYY_MM,sendDate); + + // 获取起始国家 + EmisSite startSite=getSiteByCode(siteBatch.getStartSiteCode()); EmisCommissionQuote emisCommissionQuote = new EmisCommissionQuote(); - emisCommissionQuote.setCountry(waybill.getReceiveCountry()); - emisCommissionQuote.setFromCountry(waybill.getSendCountry()); - emisCommissionQuote.setTransLine(waybill.getTransLineType()); - emisCommissionQuote.setProdCode(waybill.getProductType()); - emisCommissionQuote.setTransType(transLine.getTransType()); + emisCommissionQuote.setCountry(siteBatch.getDestCountry()); + emisCommissionQuote.setFromCountry(startSite.getCountryCode()); + emisCommissionQuote.setTransType(siteBatch.getTransType()); + + // 起始网点,目的网点 + emisCommissionQuote.setSendSiteCode(siteBatch.getStartSiteCode()); + emisCommissionQuote.setNextSiteCode(siteBatch.getNextSiteCode()); + + // 海运单证类型 emisCommissionQuote.setPostType("8"); - emisCommissionQuote.getParams().put("validDate",waybill.getSendDate()); + // 按柜计算 + emisCommissionQuote.setCalcType("5"); + emisCommissionQuote.getParams().put("validDate",sendDate); // 获取提成方案 List listQuote = emisCommissionQuoteMapper.selectValidQuoteList(emisCommissionQuote); @@ -1168,61 +1215,30 @@ public class EmisCommissionProfitServiceImpl extends EmisBaseService implements String calcExprStr=""; for (EmisCommissionExpression exprItem : exprList) { log.info("计算项目表达式:" + JSONObject.toJSONString(exprItem)); - String calcExp = exprItem.getCalculateExpression(); - double profitMoney = 0.0D; - // 按票计算 - if ("1".equals(quoteItem.getCalcType())) { - calcExprStr = calcExp.replaceAll("w", "1") + // 按柜内票数 + if ("5".equals(quoteItem.getCalcType())) { + calcExprStr = calcExp.replaceAll("w", siteBatch.getTotalWaybillQty()) .replaceAll("s", exprItem.getInitialWeight().toString()) .replaceAll("d", exprItem.getAdditionalWeight().toString()); - - log.info("按票计算:计算公式:" + calcExprStr + ",票数:1"); - profitMoney = Double.valueOf(AviatorEvaluator.execute(calcExprStr).toString()); - } - // 重量计算 - else if ("2".equals(quoteItem.getCalcType())) { - calcExprStr = calcExp.replaceAll("w", waybill.getSettlementWeight().stripTrailingZeros().toPlainString()) - .replaceAll("s", exprItem.getInitialWeight().toString()) - .replaceAll("d", exprItem.getAdditionalWeight().toString()); - - log.info("按重量计算:计算公式:" + calcExprStr + ",重量:"+waybill.getSettlementWeight().stripTrailingZeros().toPlainString()); - profitMoney = Double.valueOf(AviatorEvaluator.execute(calcExprStr).toString()); - - } - // 体积计算 - else if ("3".equals(quoteItem.getCalcType())) { - calcExprStr = calcExp.replaceAll("w", waybill.getTotalVolume().stripTrailingZeros().toPlainString()) - .replaceAll("s", exprItem.getInitialWeight().toString()) - .replaceAll("d", exprItem.getAdditionalWeight().toString()); - log.info("按体积计算:计算公式:" + calcExprStr + ",体积:"+waybill.getTotalVolume().stripTrailingZeros().toPlainString()); - profitMoney = Double.valueOf(AviatorEvaluator.execute(calcExprStr).toString()); - } - // 包裹数 - else if ("4".equals(quoteItem.getCalcType())) { - - calcExprStr = calcExp.replaceAll("w", "1") - .replaceAll("s", exprItem.getInitialWeight().toString()) - .replaceAll("d", exprItem.getAdditionalWeight().toString()); - log.info("按包裹数:计算公式:" + calcExprStr + ",包裹数:"+1); + log.info("按柜内票数:计算公式:" + calcExprStr + ",按柜内票数:"+siteBatch.getTotalWaybillQty()); profitMoney = Double.valueOf(AviatorEvaluator.execute(calcExprStr).toString()); } // 插入参与分成人员 - String empCode=quoteItem.getEmpCode(); String empName=quoteItem.getEmpName(); // 插入提成 if(BigDecimal.valueOf(profitMoney).compareTo(BigDecimal.ZERO)>0) { - - String[] empCodeArr = empCode.split(","); + String[] empCodeArr = empName.split(","); for(int i=0;i + @@ -39,7 +40,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id, fee_type, money, bill_month, bill_code, quote_id, quote_name, expr_id, calc_expr, fee_remark, emp_code, emp_name, bl_confirm_center, 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_commission_dtl + select id, fee_type, money, bill_month, bill_type, bill_code, quote_id, quote_name, expr_id, calc_expr, fee_remark, emp_code, emp_name, bl_confirm_center, 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_commission_dtl @@ -120,6 +122,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" fee_type, money, bill_month, + bill_type, bill_code, quote_id, quote_name, @@ -151,6 +154,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{feeType}, #{money}, #{billMonth}, + #{billType}, #{billCode}, #{quoteId}, #{quoteName}, @@ -186,6 +190,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" fee_type = #{feeType}, money = #{money}, bill_month = #{billMonth}, + bill_type = #{billType}, bill_code = #{billCode}, quote_id = #{quoteId}, quote_name = #{quoteName}, @@ -217,7 +222,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - update emis_commission_dtl set del_flag='1' where bill_code = #{billCode} + update emis_commission_dtl set del_flag='1' where bill_code = #{billCode} and bill_type='1' + + + + update emis_commission_dtl set del_flag='1' where bill_code = #{batchNo} and bill_type='2' diff --git a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMapper.xml index af1ea1394..ff4693b9f 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMapper.xml @@ -188,6 +188,19 @@ where a.id = #{id} + + + + + update emis_tms_site_batch set + bl_profit = '1' + where batch_no=#{batchNo} + + insert into emis_tms_site_batch