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.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 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; //每日更新过期的活动,过期则进行冻结 @Scheduled(cron="0 0 1 * * ?") public void task1(){ AuthContextUtils.setTenant("001"); LambdaQueryWrapper lqwApply = new LambdaQueryWrapper<>(); lqwApply.select(TbsCostApply::getId); lqwApply.eq(TbsCostApply::getChargeState, TbsCostApplyState.State_2_actioning.getCode()); List costApplyList = tbsCostApplyService.list(lqwApply); List costApplyIds = costApplyList.stream().map(a->a.getId()).collect(Collectors.toList()); //只更新审批完成的申请活动状态 LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.in(TbsActivity::getCostApplyId,costApplyIds); lqw.le(TbsActivity::getPreCheckDate, LocalDate.now()); 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 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 preStartList = activityTemplateService.list(lqw); if(CollectionUtil.isNotEmpty(preStartList)){ preStartList.forEach(a->a.setTemplateState(1)); activityTemplateService.updateBatchById(preStartList); } LambdaQueryWrapper 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 preCloseList = activityTemplateService.list(lqw2); if(CollectionUtil.isNotEmpty(preCloseList)){ preCloseList.forEach(a->a.setTemplateState(0)); activityTemplateService.updateBatchById(preCloseList); } } }