792 【住院管理-护士工作站】在入出转管理的床位10号床位和11号床位有2个重复的

This commit is contained in:
wangjian963
2026-06-18 15:21:53 +08:00
parent b002818935
commit 32514ebd7b
2 changed files with 18 additions and 5 deletions

View File

@@ -168,11 +168,12 @@
ON ward.bus_no = SPLIT_PART(bed.bus_no,'.',1)
AND ward.form_enum = #{ward}
AND ward.delete_flag = '0'
LEFT JOIN adm_encounter_location aelb
ON bed.id = aelb.location_id
AND aelb.delete_flag = '0'
AND aelb.status_enum = #{active}
AND bed.form_enum = #{bed}
LEFT JOIN ( SELECT DISTINCT ON (location_id) location_id, encounter_id
FROM adm_encounter_location
WHERE delete_flag = '0'
AND status_enum = #{active}
ORDER BY location_id, id DESC
) aelb ON bed.id = aelb.location_id
LEFT JOIN adm_encounter ae
ON aelb.encounter_id = ae.id
AND ae.delete_flag = '0'

View File

@@ -70,6 +70,18 @@ public class EncounterLocationServiceImpl extends ServiceImpl<EncounterLocationM
* @param locationForm 位置类型
*/
public void creatEncounterLocation(Long encounterId, Date startTime, Long locationId, Integer locationForm) {
// 床位级别form_enum=8先将该床位上其他活跃记录置为已完成防止同一床位出现多条活跃记录
// 病区/病房级别允许多患者共存,不做去重处理
if (locationForm != null && locationForm.equals(LocationForm.BED.getValue())) {
LambdaUpdateWrapper<EncounterLocation> deactivateWrapper = new LambdaUpdateWrapper<>();
deactivateWrapper.set(EncounterLocation::getStatusEnum, EncounterActivityStatus.COMPLETED.getValue())
.eq(EncounterLocation::getLocationId, locationId)
.eq(EncounterLocation::getFormEnum, locationForm)
.eq(EncounterLocation::getStatusEnum, EncounterActivityStatus.ACTIVE.getValue())
.eq(EncounterLocation::getDeleteFlag, DelFlag.NO.getCode());
baseMapper.update(null, deactivateWrapper);
}
EncounterLocation encounterLocation = new EncounterLocation();
encounterLocation.setEncounterId(encounterId).setStartTime(startTime).setLocationId(locationId)
.setFormEnum(locationForm).setStatusEnum(EncounterActivityStatus.ACTIVE.getValue());