|
|
|
package com.qs.serve.task;
|
|
|
|
|
|
|
|
import java.time.LocalDate;
|
|
|
|
import java.util.List;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
import com.qs.serve.common.model.dto.R;
|
|
|
|
import com.qs.serve.common.util.AuthContextUtils;
|
|
|
|
import com.qs.serve.common.util.CollectionUtil;
|
|
|
|
import com.qs.serve.modules.tbs.common.TbsActivityState;
|
|
|
|
import com.qs.serve.modules.tbs.common.TbsCostApplyState;
|
|
|
|
import com.qs.serve.modules.tbs.entity.TbsActivity;
|
|
|
|
import com.qs.serve.modules.tbs.entity.TbsActivityTemplate;
|
|
|
|
import com.qs.serve.modules.tbs.entity.TbsCostApply;
|
|
|
|
import com.qs.serve.modules.tbs.service.TbsActivityService;
|
|
|
|
import com.qs.serve.modules.tbs.service.TbsActivityTemplateService;
|
|
|
|
import com.qs.serve.modules.tbs.service.TbsCostApplyService;
|
|
|
|
import com.qs.serve.modules.vtb.service.VtbVerificationService;
|
|
|
|
import lombok.AllArgsConstructor;
|
|
|
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @author YenHex
|
|
|
|
* @since 2022/12/9
|
|
|
|
*/
|
|
|
|
@Component
|
|
|
|
@AllArgsConstructor
|
|
|
|
@ConditionalOnProperty(value = "project.task", havingValue = "true")
|
|
|
|
public class TbsTask {
|
|
|
|
|
|
|
|
private final TbsActivityService activityService;
|
|
|
|
private final TbsCostApplyService tbsCostApplyService;
|
|
|
|
private final TbsActivityTemplateService activityTemplateService;
|
|
|
|
private final VtbVerificationService vtbVerificationService;
|
|
|
|
|
|
|
|
|
|
|
|
//每日更新过期的活动,过期则进行冻结
|
|
|
|
@Scheduled(cron="0 0 1 * * ?")
|
|
|
|
public void task1(){
|
|
|
|
AuthContextUtils.setTenant("001");
|
|
|
|
LocalDate now = LocalDate.now();
|
|
|
|
|
|
|
|
//拓展已解冻的费用限制在三天内可核销,逾期自动冻结
|
|
|
|
LocalDate closeDay = now.plusDays(-3);
|
|
|
|
LambdaQueryWrapper<TbsActivity> updReopen = new LambdaQueryWrapper<>();
|
|
|
|
updReopen.eq(TbsActivity::getReopenFlag,1)
|
|
|
|
.lt(TbsActivity::getReopenTime, closeDay)
|
|
|
|
.eq(TbsActivity::getActivityState,0)
|
|
|
|
.eq(TbsActivity::getCostPassFlag,1);
|
|
|
|
TbsActivity updReopenParam = new TbsActivity();
|
|
|
|
updReopenParam.setReopenFlag(0);
|
|
|
|
activityService.update(updReopenParam,updReopen);
|
|
|
|
|
|
|
|
LambdaQueryWrapper<TbsCostApply> lqwApply = new LambdaQueryWrapper<>();
|
|
|
|
lqwApply.select(TbsCostApply::getId);
|
|
|
|
lqwApply.eq(TbsCostApply::getChargeState, TbsCostApplyState.State_2_actioning.getCode());
|
|
|
|
List<TbsCostApply> costApplyList = tbsCostApplyService.list(lqwApply);
|
|
|
|
List<Long> costApplyIds = costApplyList.stream().map(a->a.getId()).collect(Collectors.toList());
|
|
|
|
//只更新审批完成的申请活动状态
|
|
|
|
LocalDate lastDay = now.plusDays(-1);
|
|
|
|
LambdaQueryWrapper<TbsActivity> lqw = new LambdaQueryWrapper<>();
|
|
|
|
lqw.in(TbsActivity::getCostApplyId,costApplyIds);
|
|
|
|
lqw.and(qw->{
|
|
|
|
qw.and(
|
|
|
|
qw1->qw1.le(TbsActivity::getPreCheckDate, lastDay)
|
|
|
|
.isNull(TbsActivity::getPreEndDateBack)
|
|
|
|
).or()
|
|
|
|
.le(TbsActivity::getPreEndDateBack, lastDay);
|
|
|
|
});
|
|
|
|
lqw.eq(TbsActivity::getReopenFlag,0);
|
|
|
|
// 2-完成;4-已释放;5-已关闭 表流程已完结,冻结无意义
|
|
|
|
lqw.eq(TbsActivity::getActivityState,TbsActivityState.STATE_0_Todo);
|
|
|
|
//通过审批的
|
|
|
|
lqw.eq(TbsActivity::getCostPassFlag,1);
|
|
|
|
TbsActivity param = new TbsActivity();
|
|
|
|
param.setActivityState(TbsActivityState.STATE_1_Baning);
|
|
|
|
activityService.update(param,lqw);
|
|
|
|
}
|
|
|
|
|
|
|
|
//启用和停用模板规则
|
|
|
|
@Scheduled(cron="0 0 1 * * ?")
|
|
|
|
public void task2(){
|
|
|
|
AuthContextUtils.setTenant("001");
|
|
|
|
LocalDateTime nowTime = LocalDateTime.now();
|
|
|
|
LambdaQueryWrapper<TbsActivityTemplate> lqw = new LambdaQueryWrapper<>();
|
|
|
|
lqw.select(TbsActivityTemplate::getId);
|
|
|
|
lqw.ge(TbsActivityTemplate::getStartTime,nowTime.with(LocalDateTime.MIN));
|
|
|
|
lqw.le(TbsActivityTemplate::getStartTime,nowTime.with(LocalDateTime.MAX));
|
|
|
|
lqw.eq(TbsActivityTemplate::getTemplateState,0);
|
|
|
|
List<TbsActivityTemplate> preStartList = activityTemplateService.list(lqw);
|
|
|
|
if(CollectionUtil.isNotEmpty(preStartList)){
|
|
|
|
preStartList.forEach(a->a.setTemplateState(1));
|
|
|
|
activityTemplateService.updateBatchById(preStartList);
|
|
|
|
}
|
|
|
|
|
|
|
|
LambdaQueryWrapper<TbsActivityTemplate> lqw2 = new LambdaQueryWrapper<>();
|
|
|
|
lqw2.select(TbsActivityTemplate::getId);
|
|
|
|
lqw2.ge(TbsActivityTemplate::getEndTime,nowTime.with(LocalDateTime.MIN));
|
|
|
|
lqw2.le(TbsActivityTemplate::getEndTime,nowTime.with(LocalDateTime.MAX));
|
|
|
|
lqw2.eq(TbsActivityTemplate::getTemplateState,1);
|
|
|
|
List<TbsActivityTemplate> preCloseList = activityTemplateService.list(lqw2);
|
|
|
|
if(CollectionUtil.isNotEmpty(preCloseList)){
|
|
|
|
preCloseList.forEach(a->a.setTemplateState(0));
|
|
|
|
activityTemplateService.updateBatchById(preCloseList);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 每半小时执行一次
|
|
|
|
*/
|
|
|
|
@Scheduled(cron="0 0/30 * * * ?")
|
|
|
|
public void updateCheckState(){
|
|
|
|
tbsCostApplyService.updateCheckState();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 每半小时执行一次
|
|
|
|
*/
|
|
|
|
@Scheduled(cron="0 0/30 * * * ?")
|
|
|
|
public void syncPayToErp(){
|
|
|
|
vtbVerificationService.toPayRequest();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|