fix(schedules): 解决重复排班数据问题
- 根据时间查询现有排班记录并删除重复数据 - 在保存新排班前清理已存在的相同时间段排班 - 同步删除关联的排班项目记录确保数据一致性
This commit is contained in:
+12
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user