|
|
@@ -136,12 +136,20 @@ public class HealthPlanServiceImpl implements HealthPlanService {
|
|
|
Date now = new Date();
|
|
|
|
|
|
for (String line : taskLines) {
|
|
|
- // 幂等:同一方案同一天已有同名任务则跳过
|
|
|
+ // 幂等:同一方案今天已有同名任务则跳过(deadline 限定当天)
|
|
|
+ Calendar todayStart = Calendar.getInstance();
|
|
|
+ todayStart.set(Calendar.HOUR_OF_DAY, 0); todayStart.set(Calendar.MINUTE, 0);
|
|
|
+ todayStart.set(Calendar.SECOND, 0); todayStart.set(Calendar.MILLISECOND, 0);
|
|
|
+ Calendar todayEnd = (Calendar) todayStart.clone();
|
|
|
+ todayEnd.add(Calendar.DAY_OF_MONTH, 1);
|
|
|
+
|
|
|
boolean exists = taskMapper.selectCount(new QueryWrapper<Task>()
|
|
|
.eq("family_id", familyId)
|
|
|
.eq("source_type", "plan")
|
|
|
.eq("source_id", plan.getId())
|
|
|
- .eq("title", line.trim())) > 0;
|
|
|
+ .eq("title", line.trim())
|
|
|
+ .ge("deadline", todayStart.getTime())
|
|
|
+ .lt("deadline", todayEnd.getTime())) > 0;
|
|
|
if (exists) continue;
|
|
|
|
|
|
Task task = new Task();
|
|
|
@@ -158,6 +166,7 @@ public class HealthPlanServiceImpl implements HealthPlanService {
|
|
|
task.setSourceType("plan");
|
|
|
task.setSourceId(plan.getId());
|
|
|
task.setFrequency("daily");
|
|
|
+ task.setRepeatType("daily");
|
|
|
task.setCategory("健康方案");
|
|
|
task.setNeedReview(0);
|
|
|
task.setCreatedAt(now);
|