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 92f069f30..475495521 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 @@ -19,12 +19,14 @@ import javax.servlet.http.HttpServletResponse; import com.alibaba.fastjson.JSONObject; import com.xdadan.erp.common.annotation.filter.jackson.JacksonFilter; +import com.xdadan.erp.common.core.redis.RedissonService; import com.xdadan.erp.common.utils.DateUtils; import com.xdadan.erp.emis.domain.EmisCommissionDtl; import com.xdadan.erp.emis.domain.EmisWaybill; import com.xdadan.erp.emis.service.EmisBaseService; import com.xdadan.erp.emis.service.IEmisCommissionDtlService; import com.xdadan.erp.emis.utils.WaybillHelper; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; @@ -54,6 +56,7 @@ import com.xdadan.erp.emis.service.IEmisCommissionProfitService; * @author linfso * @date 2024-10-24 01:46:36 */ +@Slf4j @RestController @RequestMapping("/emis/emisCommissionProfit") public class EmisCommissionProfitController extends BaseController @@ -64,29 +67,67 @@ public class EmisCommissionProfitController extends BaseController @Autowired private IEmisCommissionDtlService emisCommissionDtlService; + @Autowired + RedissonService redissonService; + @Autowired private EmisBaseService emisBaseService; - @GetMapping(value = "/batchReCalcProfitByBillCode") - public AjaxResult batchReCalcProfitByBillCode(String billCode) + @GetMapping(value = "/reCalcByBillCode") + public AjaxResult reCalcByBillCode(String billCode) { - if(!StringUtils.isEmpty(billCode)){ - billCode=WaybillHelper.formatQueryValue(billCode); - String[] billCodeSortList = billCode.split(","); - if(billCodeSortList.length>0){ - for (int i=0;i 0) { + for (int i = 0; i < billCodeSortList.length; i++) { + String subBillCode = billCodeSortList[i]; + try { + emisCommissionProfitService.reCalcProfitByBillCode(subBillCode); + } catch (Exception ex) { + return AjaxResult.error("计算失败-单号:[" + subBillCode + "]"); + } + } + emisCommissionProfitService.reCalcEmpProfitSumMoney(null, null); + } + return AjaxResult.success("计算成功"); + } + catch(Exception ex){ + ex.printStackTrace(); + return AjaxResult.error("计算异常:"+ex.getMessage()); + } + + } + + @GetMapping(value = "/reCalcByBillMonth") + public AjaxResult reCalcByBillMonth(String billMonth) + { + if(StringUtils.isEmpty(billMonth)){ + return AjaxResult.error("月份不能为空"); + } + + String lockKey="reCalcByBillMonth"; + log.info("reCalcByBillMonth start"); + + // 加锁查询 + redissonService.lock(lockKey,300); + try{ + EmisWaybill emisWaybill = new EmisWaybill(); + emisWaybill.getParams().put("noNeedBlProfit","Y"); + emisCommissionProfitService.autoDoBillProfit(emisWaybill); + }catch(Exception ex){ + ex.printStackTrace(); + log.error("reCalcByBillMonth exception:"+ex.getMessage()); + return AjaxResult.error("计算异常:"+ex.getMessage()); + } + log.info("reCalcByBillMonth end"); + + redissonService.unlock(lockKey); + return AjaxResult.success("计算成功"); } /** diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommonController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommonController.java index 50af4ae42..f386b1e6d 100644 --- a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommonController.java +++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommonController.java @@ -111,13 +111,9 @@ public class EmisCommonController extends EmisBaseController @Autowired private IEmisTmsCostFeeService emisTmsCostFeeService; - - - @Autowired RedissonService redissonService; - /** * 获取中心可用简单数 * @param prefix 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 8c75b3def..a22e0a94b 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 @@ -56,6 +56,14 @@ public interface IEmisCommissionProfitService */ public void reCalcProfitByBatchNo(String batchNo); + /** + * 计算汇总数据 + * @param empName + * @param billMonth + * @return + */ + public int reCalcEmpProfitSumMoney(String empName,String billMonth); + /** * 查询员工提成表列表 * 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 458795768..4ff7e2dda 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 @@ -35,7 +35,6 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.ListUtils; 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.service.IEmisCommissionProfitService; import org.springframework.transaction.annotation.Transactional; @@ -76,11 +75,9 @@ public class EmisCommissionProfitServiceImpl extends EmisBaseService implements /** * 自动计算提成 */ - @Async @Override public void autoDoBillProfit(EmisWaybill emisWaybill) { - Map > profitMap = new HashMap<>(); // 获取需要出账的运单列表 List list = emisWaybillMapper.selectWaitDoProfitList(emisWaybill); // 多线程并发处理 @@ -121,11 +118,9 @@ public class EmisCommissionProfitServiceImpl extends EmisBaseService implements /** * 自动计算批次提成 */ - @Async @Override public void autoDoBatchProfit(EmisTmsSiteBatch tmsSiteBatch) { - Map > profitMap = new HashMap<>(); // 获取需要出账的运单列表 List list = emisTmsSiteBatchMapper.selectWaitDoProfitList(tmsSiteBatch); // 多线程并发处理 @@ -311,6 +306,10 @@ public class EmisCommissionProfitServiceImpl extends EmisBaseService implements try { // 获取运单信息 EmisWaybill waybill = getWaybillByBillCode(billCode); + if(waybill==null){ + redissonService.unlock(lockKey); + return; + } // 先删除该运单已经计算的提成 emisCommissionDtlMapper.deleteEmisCommissionDtlByBillCode(billCode); @@ -374,7 +373,8 @@ public class EmisCommissionProfitServiceImpl extends EmisBaseService implements } - private int reCalcEmpProfitSumMoney(String empName,String billMonth){ + @Override + public int reCalcEmpProfitSumMoney(String empName,String billMonth){ String lockKey="reCalcEmpProfitSumMoney_"+empName+billMonth; // 加锁查询 log.info("reCalcEmpProfitSumMoney start:"+empName+billMonth); diff --git a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMapper.xml index 8aff9f053..7bb1b10ef 100644 --- a/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMapper.xml +++ b/emis-biz/src/main/resources/mapper/EmisTmsSiteBatchMapper.xml @@ -147,7 +147,12 @@ batch_no FROM emis_tms_site_batch a - WHERE a.del_flag = '0' AND a.bl_profit = '0' + WHERE a.del_flag = '0' + + + AND a.bl_profit = '0' + + and DATE_FORMAT(a.etd,'%Y%m')= #{params.billMonth}