You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

96 lines
4.1 KiB

package com.qs.serve.task;
2 years ago
import java.time.LocalDate;
3 years ago
import java.util.List;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.util.AuthContextUtils;
3 years ago
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;
3 years ago
import com.qs.serve.modules.tbs.entity.TbsActivityTemplate;
import com.qs.serve.modules.tbs.entity.TbsCostApply;
import com.qs.serve.modules.tbs.service.TbsActivityService;
3 years ago
import com.qs.serve.modules.tbs.service.TbsActivityTemplateService;
import com.qs.serve.modules.tbs.service.TbsCostApplyService;
import lombok.AllArgsConstructor;
2 years ago
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
2 years ago
@ConditionalOnProperty(value = "project.task", havingValue = "true")
public class TbsTask {
private final TbsActivityService activityService;
private final TbsCostApplyService tbsCostApplyService;
3 years ago
private final TbsActivityTemplateService activityTemplateService;
2 years ago
//每日更新过期的活动,过期则进行冻结
2 years ago
@Scheduled(cron="0 0 1 * * ?")
public void task1(){
AuthContextUtils.setTenant("001");
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());
//只更新审批完成的申请活动状态
2 years ago
LocalDate now = LocalDate.now();
LocalDate lastDay = now.plusDays(-1);
LambdaQueryWrapper<TbsActivity> lqw = new LambdaQueryWrapper<>();
lqw.in(TbsActivity::getCostApplyId,costApplyIds);
2 years ago
lqw.le(TbsActivity::getPreCheckDate, 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);
}
2 years ago
//启用和停用模板规则
2 years ago
@Scheduled(cron="0 0 1 * * ?")
3 years ago
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);
}
}
}