|
@@ -27,8 +27,10 @@ import com.fs.sop.domain.SopUserLogsInfo;
|
|
import com.fs.sop.mapper.QwSopMapper;
|
|
import com.fs.sop.mapper.QwSopMapper;
|
|
import com.fs.sop.mapper.SopUserLogsInfoMapper;
|
|
import com.fs.sop.mapper.SopUserLogsInfoMapper;
|
|
import com.hc.openapi.tool.util.StringUtils;
|
|
import com.hc.openapi.tool.util.StringUtils;
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
import java.text.SimpleDateFormat;
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDate;
|
|
@@ -44,6 +46,7 @@ import java.util.stream.Collectors;
|
|
* @date 2025-03-18
|
|
* @date 2025-03-18
|
|
*/
|
|
*/
|
|
@Service
|
|
@Service
|
|
|
|
+@Slf4j
|
|
public class HyWorkTaskServiceImpl extends ServiceImpl<HyWorkTaskMapper, HyWorkTask> implements IHyWorkTaskService {
|
|
public class HyWorkTaskServiceImpl extends ServiceImpl<HyWorkTaskMapper, HyWorkTask> implements IHyWorkTaskService {
|
|
@Autowired
|
|
@Autowired
|
|
private FsCourseWatchLogMapper fsCourseWatchLogMapper;
|
|
private FsCourseWatchLogMapper fsCourseWatchLogMapper;
|
|
@@ -457,36 +460,73 @@ public class HyWorkTaskServiceImpl extends ServiceImpl<HyWorkTaskMapper, HyWorkT
|
|
return hyWorkTaskMapper.selectHyWorkTaskListByMap(params);
|
|
return hyWorkTaskMapper.selectHyWorkTaskListByMap(params);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // 定义批处理大小常量
|
|
|
|
+ private static final int BATCH_SIZE = 1000;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public void hyWorkTask() {
|
|
public void hyWorkTask() {
|
|
|
|
+
|
|
// 获取看课中断和待看的先导课
|
|
// 获取看课中断和待看的先导课
|
|
List<FsCourseWatchLog> fsCourseWatchLogs = hyWorkTaskMapper.hyWorkTaskGetInterruptedAndFirst();
|
|
List<FsCourseWatchLog> fsCourseWatchLogs = hyWorkTaskMapper.hyWorkTaskGetInterruptedAndFirst();
|
|
- List<HyWorkTask> list = new ArrayList<>();
|
|
|
|
|
|
+ if(CollectionUtils.isEmpty(fsCourseWatchLogs)){
|
|
|
|
+ log.info("[获取看课中断和待看的先导课] 没有找到数据,已经跳过!");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ List<HyWorkTask> batchList = new ArrayList<>(BATCH_SIZE);
|
|
|
|
+ int totalProcessed = 0;
|
|
|
|
+ int batchCount = 0;
|
|
for (FsCourseWatchLog fsCourseWatchLog : fsCourseWatchLogs) {
|
|
for (FsCourseWatchLog fsCourseWatchLog : fsCourseWatchLogs) {
|
|
HyWorkTask hyWorkTask = new HyWorkTask();
|
|
HyWorkTask hyWorkTask = new HyWorkTask();
|
|
hyWorkTask.setCreateTime(DateUtils.getNowDate());
|
|
hyWorkTask.setCreateTime(DateUtils.getNowDate());
|
|
hyWorkTask.setExtId(fsCourseWatchLog.getQwExternalContactId());
|
|
hyWorkTask.setExtId(fsCourseWatchLog.getQwExternalContactId());
|
|
hyWorkTask.setCompanyId(fsCourseWatchLog.getCompanyId());
|
|
hyWorkTask.setCompanyId(fsCourseWatchLog.getCompanyId());
|
|
hyWorkTask.setCompanyUserId(fsCourseWatchLog.getCompanyUserId());
|
|
hyWorkTask.setCompanyUserId(fsCourseWatchLog.getCompanyUserId());
|
|
|
|
+ hyWorkTask.setUserId(fsCourseWatchLog.getUserId());
|
|
|
|
+ if(fsCourseWatchLog.getPeriodId() != null) {
|
|
|
|
+ hyWorkTask.setUserLogsId(String.valueOf(fsCourseWatchLog.getPeriodId()));
|
|
|
|
+ }
|
|
|
|
+ hyWorkTask.setStatus(0);
|
|
|
|
+ hyWorkTask.setUserId(fsCourseWatchLog.getUserId());
|
|
|
|
|
|
// 看课中断
|
|
// 看课中断
|
|
if(fsCourseWatchLog.getLogType()==4){
|
|
if(fsCourseWatchLog.getLogType()==4){
|
|
- hyWorkTask.setUserId(fsCourseWatchLog.getUserId());
|
|
|
|
- hyWorkTask.setStatus(0);
|
|
|
|
hyWorkTask.setType(2);
|
|
hyWorkTask.setType(2);
|
|
Date createTime = fsCourseWatchLog.getCreateTime();
|
|
Date createTime = fsCourseWatchLog.getCreateTime();
|
|
long day = DateUtils.getDaysDifferenceFromNow(createTime);
|
|
long day = DateUtils.getDaysDifferenceFromNow(createTime);
|
|
- hyWorkTask.setScore(0);
|
|
|
|
hyWorkTask.setTitle("第"+day+"天"+"看课中断");
|
|
hyWorkTask.setTitle("第"+day+"天"+"看课中断");
|
|
} else {
|
|
} else {
|
|
|
|
+ hyWorkTask.setType(1);
|
|
hyWorkTask.setTitle(fsCourseWatchLog.getLogType()==3?"先导课待看课":"先导课完课");
|
|
hyWorkTask.setTitle(fsCourseWatchLog.getLogType()==3?"先导课待看课":"先导课完课");
|
|
}
|
|
}
|
|
hyWorkTask.setScore(fsCourseWatchLog.getLogType()==3?4:3);
|
|
hyWorkTask.setScore(fsCourseWatchLog.getLogType()==3?4:3);
|
|
|
|
|
|
- list.add(hyWorkTask);
|
|
|
|
|
|
+ batchList.add(hyWorkTask);
|
|
|
|
+ totalProcessed++;
|
|
|
|
+
|
|
|
|
+ if (batchList.size() >= BATCH_SIZE) {
|
|
|
|
+ batchCount++;
|
|
|
|
+ log.info("处理到第 {} 条数据,开始插入第 {} 批 ({} 条)...", totalProcessed, batchCount, batchList.size());
|
|
|
|
+ try {
|
|
|
|
+ hyWorkTaskMapper.insertQwWorkTaskBatch(batchList);
|
|
|
|
+ log.info("第 {} 批插入成功.", batchCount);
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.error("第 {} 批插入时发生错误: {}", batchCount, e.getMessage(), e);
|
|
|
|
+ }
|
|
|
|
+ batchList.clear();
|
|
|
|
+ }
|
|
}
|
|
}
|
|
-
|
|
|
|
- hyWorkTaskMapper.insertQwWorkTaskBatch(list);
|
|
|
|
|
|
+ if (!batchList.isEmpty()) {
|
|
|
|
+ batchCount++;
|
|
|
|
+ log.info("处理完成,开始插入最后一批 ({} 条)...", batchList.size());
|
|
|
|
+ try {
|
|
|
|
+ hyWorkTaskMapper.insertQwWorkTaskBatch(batchList);
|
|
|
|
+ log.info("最后一批插入成功.");
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ log.error("最后一批插入时发生错误: {}", e.getMessage(), e);
|
|
|
|
+ }
|
|
|
|
+ batchList.clear();
|
|
|
|
+ }
|
|
|
|
+ log.info("hyWorkTask 任务执行完毕,共处理 {} 条数据,分 {} 批插入.", totalProcessed, batchCount > 0 ? batchCount : (totalProcessed > 0 ? 1 : 0));
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|