This commit is contained in:
linfso 2025-03-16 20:26:15 +08:00
parent 6feab7ee97
commit 6a52a82e5f
5 changed files with 78 additions and 28 deletions

View File

@ -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<billCodeSortList.length;i++){
String subBillCode=billCodeSortList[i];
try {
emisCommissionProfitService.reCalcProfitByBillCode(subBillCode);
}catch (Exception ex){
return AjaxResult.error("计算失败-单号:["+subBillCode+"]");
}
}
}
return AjaxResult.success("计算成功");
}else{
if(StringUtils.isEmpty(billCode)){
return AjaxResult.error("计算失败-单号不能为空");
}
try {
billCode = WaybillHelper.formatQueryValue(billCode);
String[] billCodeSortList = billCode.split(",");
if (billCodeSortList.length > 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("计算成功");
}
/**

View File

@ -111,13 +111,9 @@ public class EmisCommonController extends EmisBaseController
@Autowired
private IEmisTmsCostFeeService emisTmsCostFeeService;
@Autowired
RedissonService redissonService;
/**
* 获取中心可用简单数
* @param prefix

View File

@ -56,6 +56,14 @@ public interface IEmisCommissionProfitService
*/
public void reCalcProfitByBatchNo(String batchNo);
/**
* 计算汇总数据
* @param empName
* @param billMonth
* @return
*/
public int reCalcEmpProfitSumMoney(String empName,String billMonth);
/**
* 查询员工提成表列表
*

View File

@ -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<String,Map<String,String> > profitMap = new HashMap<>();
// 获取需要出账的运单列表
List<EmisWaybill> list = emisWaybillMapper.selectWaitDoProfitList(emisWaybill);
// 多线程并发处理
@ -121,11 +118,9 @@ public class EmisCommissionProfitServiceImpl extends EmisBaseService implements
/**
* 自动计算批次提成
*/
@Async
@Override
public void autoDoBatchProfit(EmisTmsSiteBatch tmsSiteBatch) {
Map<String,Map<String,String> > profitMap = new HashMap<>();
// 获取需要出账的运单列表
List<EmisTmsSiteBatch> 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);

View File

@ -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'
<if test="params.noNeedBlProfit == null">
AND a.bl_profit = '0'
</if>
<if test="params.billMonth != null and params.billMonth != ''">
and DATE_FORMAT(a.etd,'%Y%m')= #{params.billMonth}
</if>