|
|
@@ -1,10 +1,13 @@
|
|
|
package com.ruoyi.subsidy.service.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.date.DateUnit;
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.ruoyi.business.domain.Business;
|
|
|
import com.ruoyi.business.exception.BusinessExceptionEnum;
|
|
|
import com.ruoyi.business.service.IBusinessService;
|
|
|
+import com.ruoyi.common.core.domain.R;
|
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
|
import com.ruoyi.common.utils.BeanCopyUtils;
|
|
|
import com.ruoyi.common.utils.StringUtils;
|
|
|
@@ -13,6 +16,7 @@ import com.ruoyi.common.core.domain.PageQuery;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.ruoyi.rabbitmq.constant.DelayedConstant;
|
|
|
import com.ruoyi.subsidy.domain.SubsidyMode;
|
|
|
import com.ruoyi.subsidy.domain.SubsidySharedPool;
|
|
|
import com.ruoyi.subsidy.domain.bo.SubsidyModeConversionLogBo;
|
|
|
@@ -293,28 +297,29 @@ public class SubsidyModeAutoServiceImpl implements ISubsidyModeAutoService {
|
|
|
);
|
|
|
}
|
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
- public void switchMode(SubsidyModeAuto subsidyModeAuto) {
|
|
|
+ public SubsidySharedPool switchMode(SubsidyModeAuto subsidyModeAuto) {
|
|
|
Long businessId = subsidyModeAuto.getBusinessId();
|
|
|
//当前模式
|
|
|
SubsidyMode currentMode = this.subsidyModeService.loadCurrentMode(businessId);
|
|
|
if(currentMode==null)
|
|
|
{
|
|
|
log.info("当前模式不存在,商户ID:{}", businessId);
|
|
|
- return ;
|
|
|
+ return null;
|
|
|
}
|
|
|
//目标模式
|
|
|
SubsidyMode targetMode = this.subsidyModeService.loadById(subsidyModeAuto.getTargetModeId(), false);
|
|
|
if(targetMode==null)
|
|
|
{
|
|
|
log.info("目标模式不存在,商户ID:{}, 目标模式ID:{}", businessId, subsidyModeAuto.getTargetModeId());
|
|
|
- return ;
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
if(currentMode.getModeId().equals(targetMode.getModeId()))
|
|
|
{
|
|
|
log.info( "当前模式与目标模式一致,商户ID:{}", businessId);
|
|
|
- return ;
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
if(currentMode.getSharedMode() && !currentMode.getImmediateArrival())
|
|
|
@@ -323,19 +328,19 @@ public class SubsidyModeAutoServiceImpl implements ISubsidyModeAutoService {
|
|
|
if(subsidySharedPool==null)
|
|
|
{
|
|
|
log.info("均摊池不存在,商户ID:{}", businessId);
|
|
|
- return ;
|
|
|
+ return null;
|
|
|
}
|
|
|
if(!currentMode.getModeId().equals(subsidySharedPool.getSubsidyModeId()))
|
|
|
{
|
|
|
log.info("当前模式与均摊池内的模式不一致,当前模式是:{},均摊池内的模式是:{}", currentMode.getModeId(), subsidySharedPool.getSubsidyModeId());
|
|
|
- return ;
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
- if(subsidySharedPool.getSettlemented())
|
|
|
+ if(!subsidySharedPool.getSettlemented())
|
|
|
{
|
|
|
- return;
|
|
|
+ subsidySharedPoolService.settlement(subsidySharedPool.getSharedId(), SharedSettlementMode.EARLY_SETTLEMENT);
|
|
|
}
|
|
|
- subsidySharedPoolService.settlement(subsidySharedPool.getSharedId(), SharedSettlementMode.EARLY_SETTLEMENT);
|
|
|
+
|
|
|
}
|
|
|
currentMode.setDefaulted(false);
|
|
|
subsidyModeMapper.updateById(currentMode);
|
|
|
@@ -343,11 +348,6 @@ public class SubsidyModeAutoServiceImpl implements ISubsidyModeAutoService {
|
|
|
targetMode.setDefaulted( true);
|
|
|
subsidyModeMapper.updateById(targetMode);
|
|
|
|
|
|
- if(targetMode.getSharedMode() && !targetMode.getImmediateArrival())
|
|
|
- {
|
|
|
- subsidySharedPoolService.initSharedPool(targetMode, BigDecimal.ZERO);
|
|
|
- }
|
|
|
-
|
|
|
subsidyModeConversionLogService.insertByBo(SubsidyModeConversionLogBo.builder()
|
|
|
.businessId(businessId)
|
|
|
.fromModeId(currentMode.getModeId())
|
|
|
@@ -356,21 +356,33 @@ public class SubsidyModeAutoServiceImpl implements ISubsidyModeAutoService {
|
|
|
.toModeName(targetMode.getName())
|
|
|
.conversionTime(new Date())
|
|
|
.build());
|
|
|
+
|
|
|
+ if(targetMode.getSharedMode() && !targetMode.getImmediateArrival())
|
|
|
+ {
|
|
|
+ SubsidySharedPool subsidySharedPool = subsidySharedPoolService.initSharedPool(targetMode, BigDecimal.ZERO);
|
|
|
+ return subsidySharedPool;
|
|
|
+ }
|
|
|
+
|
|
|
+ return null;
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void switchMode(Long businessId, Long newValidQueueCount) {
|
|
|
+ public SubsidySharedPool switchMode(Long businessId, Long newValidQueueCount) {
|
|
|
SubsidyModeAuto subsidyModeAuto = this.loadByBusinessId(businessId);
|
|
|
if(subsidyModeAuto==null)
|
|
|
{
|
|
|
log.info("当前模式不存在,商户ID:{}", businessId);
|
|
|
- return ;
|
|
|
+ return null;
|
|
|
}
|
|
|
if(ObjectUtil.isNotNull(subsidyModeAuto.getMaxQueueCount())&& newValidQueueCount >= subsidyModeAuto.getMaxQueueCount())
|
|
|
{
|
|
|
log.info("当前模式已满足条件,商户ID:{}", businessId);
|
|
|
- this.switchMode(subsidyModeAuto);
|
|
|
+ SubsidySharedPool subsidySharedPool = this.switchMode(subsidyModeAuto);
|
|
|
+ return subsidySharedPool;
|
|
|
}
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
}
|