Compare commits
2 Commits
77b054a86c
...
979dc0a34c
| Author | SHA1 | Date | |
|---|---|---|---|
| 979dc0a34c | |||
| c2fa13de82 |
@@ -94,13 +94,31 @@ public class SurgicalScheduleAppServiceImpl implements ISurgicalScheduleAppServi
|
|||||||
return R.fail("患者信息不存在");
|
return R.fail("患者信息不存在");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//校验该时段内手术间是否被占用
|
|
||||||
LocalDateTime scheduleDate = opCreateScheduleDto.getEntryTime();//入室时间
|
// 校验是否重复手术安排(必须在校验手术间占用之前执行,确保能正确返回重复错误)
|
||||||
String roomCode = opCreateScheduleDto.getRoomCode();//手术室编号
|
// 同一患者 + 同一手术单号 + 同一手术名称 只能有一条有效安排记录
|
||||||
|
if (opCreateScheduleDto.getPatientId() != null
|
||||||
|
&& opCreateScheduleDto.getOperCode() != null && !opCreateScheduleDto.getOperCode().isEmpty()
|
||||||
|
&& opCreateScheduleDto.getOperName() != null && !opCreateScheduleDto.getOperName().isEmpty()) {
|
||||||
|
Boolean existsDuplicate = surgicalScheduleAppMapper.existsDuplicateSchedule(
|
||||||
|
opCreateScheduleDto.getPatientId(),
|
||||||
|
opCreateScheduleDto.getOperCode(),
|
||||||
|
opCreateScheduleDto.getOperName()
|
||||||
|
);
|
||||||
|
if (existsDuplicate != null && existsDuplicate) {
|
||||||
|
return R.fail("该患者此手术单号已存在手术安排,请勿重复提交");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 校验该时段内手术间是否被占用
|
||||||
|
LocalDateTime startTime = opCreateScheduleDto.getEntryTime();//入室时间
|
||||||
LocalDateTime endTime = opCreateScheduleDto.getEndTime();//手术结束时间
|
LocalDateTime endTime = opCreateScheduleDto.getEndTime();//手术结束时间
|
||||||
Boolean scheduleConflict = surgicalScheduleAppMapper.isScheduleConflict(scheduleDate, endTime, roomCode);
|
String roomCode = opCreateScheduleDto.getRoomCode();//手术室编号
|
||||||
if (scheduleConflict) {
|
if (startTime != null && endTime != null && roomCode != null && !roomCode.isEmpty()) {
|
||||||
return R.fail("该时段内手术间被占用");
|
Boolean scheduleConflict = surgicalScheduleAppMapper.isScheduleConflict(startTime, endTime, roomCode);
|
||||||
|
if (scheduleConflict != null && scheduleConflict) {
|
||||||
|
return R.fail("该时段内手术间被占用");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LoginUser loginUser = new LoginUser();
|
LoginUser loginUser = new LoginUser();
|
||||||
|
|||||||
@@ -58,4 +58,14 @@ public interface SurgicalScheduleAppMapper {
|
|||||||
* @return 是否存在冲突的手术安排
|
* @return 是否存在冲突的手术安排
|
||||||
*/
|
*/
|
||||||
Boolean isScheduleConflict(LocalDateTime startTime, LocalDateTime endTime, String surgeryRoomId);
|
Boolean isScheduleConflict(LocalDateTime startTime, LocalDateTime endTime, String surgeryRoomId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查是否存在重复的手术安排
|
||||||
|
*
|
||||||
|
* @param patientId 患者ID
|
||||||
|
* @param operCode 手术单号
|
||||||
|
* @param operName 手术名称
|
||||||
|
* @return 是否存在重复记录
|
||||||
|
*/
|
||||||
|
Boolean existsDuplicateSchedule(@Param("patientId") Long patientId, @Param("operCode") String operCode, @Param("operName") String operName);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -140,8 +140,19 @@
|
|||||||
</select>
|
</select>
|
||||||
<!-- 查询时间段内该手术室是否被占用-->
|
<!-- 查询时间段内该手术室是否被占用-->
|
||||||
<select id="isScheduleConflict" resultType="java.lang.Boolean">
|
<select id="isScheduleConflict" resultType="java.lang.Boolean">
|
||||||
SELECT COUNT(*) > 0 FROM op_schedule WHERE room_code = #{surgeryRoomId}
|
SELECT COUNT(*) > 0 FROM op_schedule
|
||||||
AND entry_time >= #{startTime}
|
WHERE room_code = #{surgeryRoomId}
|
||||||
AND end_time < #{endTime}
|
AND entry_time <= #{endTime}
|
||||||
|
AND end_time >= #{startTime}
|
||||||
|
AND delete_flag = '0'
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<!-- 检查是否存在重复的手术安排 -->
|
||||||
|
<select id="existsDuplicateSchedule" resultType="java.lang.Boolean">
|
||||||
|
SELECT COUNT(*) > 0 FROM op_schedule
|
||||||
|
WHERE patient_id = #{patientId}
|
||||||
|
AND oper_code = #{operCode}
|
||||||
|
AND oper_name = #{operName}
|
||||||
|
AND delete_flag = '0'
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
Reference in New Issue
Block a user