package com.xjrsoft.module.job; import com.xjrsoft.common.mybatis.SqlRunnerAdapter; import com.xjrsoft.common.utils.DateUtils; import com.xjrsoft.common.utils.SqlRunnerAdapterUtil; import com.xjrsoft.module.evaluate.entity.EvaluateManage; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; import java.util.Map; /** * 自动生成评价提交记录 */ @Component @Slf4j public class EvaluateTask { /** * 需要重复评价的,每天凌晨1点自动生成新的评价提交记录 */ @Async @Scheduled(cron = "0 0 1 * * ?") public void addSubmitRecord() { System.out.printf("定时新增评价提交记录:%s", DateUtils.format(new Date(), DateUtils.DATE_TIME_PATTERN)); try { //先查出所有进行中的需要重复评价的评价管理 String listEvaluateManageSql = "select t.id, t.create_frequency from evaluate_manage t where t.is_auto_create = 1 and t.status = 1"; List> evaluateManageList = SqlRunnerAdapter.db().selectList(listEvaluateManageSql, EvaluateManage.class); for (Map evaluateManageMap : evaluateManageList) { EvaluateManage evaluateManage = SqlRunnerAdapterUtil.convertMapToEntity(evaluateManageMap, EvaluateManage.class); //TODO 根据评价的频率进行新增 //默认每天新增根据评价管理id String insertSubmitScoreSql = "insert into evaluate_submit_record (id, evaluate_manage_id, evaluate_executer_id, create_date, evaluated_object, evaluated_object_id, status)" + " (SELECT" + " UUID()," + " t.evaluate_manage_id," + " t.id," + " NOW()," + " if(t2.evaluate_type='dm_evaluate_class', 'class', 'teacher')," + " t.evaluate_object_id," + " 0" + " FROM evaluate_executer t" + " LEFT JOIN evaluate_manage t1 ON (t1.id = t.evaluate_manage_id)" + " LEFT JOIN evaluate_template t2 ON (t2.id = t1.evaluate_template_id)" + " WHERE t.delete_mark = 0" + " AND t.evaluate_manage_id = " + evaluateManage.getId() + ")"; SqlRunnerAdapter.db().insert(insertSubmitScoreSql); } } catch (Exception e) { log.error(e.getMessage(), "定时新增评价提交记录"); } } }