fix(schedules): 解决重复排班数据问题

- 根据时间查询现有排班记录并删除重复数据
- 在保存新排班前清理已存在的相同时间段排班
- 同步删除关联的排班项目记录确保数据一致性
This commit is contained in:
hejiayang
2026-03-30 09:52:55 +08:00
parent c6338a8d45
commit f1abb06ae8
@@ -1,6 +1,7 @@
package com.renkang.emergency.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
@@ -177,6 +178,17 @@ public class EmergencySchedulesNewServiceImpl extends MPJBaseServiceImpl<Emergen
emergencySchedules.setId(StrUtil.isNotEmpty(daySchedules.getSchedulesId()) ? daySchedules.getSchedulesId() : null);
emergencySchedules.setCenterId(StrUtil.isNotEmpty(dto.getCenterId()) ? dto.getCenterId() : null);
if (daySchedules.getSchedulesId() == null) {
//根据时间查询排班id
LambdaQueryWrapper<EmergencySchedules> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(EmergencySchedules::getSchedulesTime, daySchedules.getTime());
queryWrapper.eq(EmergencySchedules::getCenterId, dto.getCenterId());
queryWrapper.eq(EmergencySchedules::getDelFlag, 0);
List<EmergencySchedules> list = this.list(queryWrapper);
if(CollectionUtil.isNotEmpty(list)){
Set<String> schedulesIds = list.stream().map(EmergencySchedules::getId).collect(Collectors.toSet());
this.remove(new LambdaQueryWrapper<EmergencySchedules>().in(EmergencySchedules::getId, schedulesIds));
itemService.remove(new LambdaQueryWrapper<EmergencySchedulesItem>().in(EmergencySchedulesItem::getSchedulesId, schedulesIds));
}
this.save(emergencySchedules);
}