docs(requirement): 添加手术室维护界面需求文档

- 创建手术室维护界面PRD文档
- 定义页面概述、核心功能和用户价值
- 设计整体布局和页面区域详细描述
- 规范交互功能和数据结构说明
- 说明开发实现要点和注意事项
- 移除中医诊断主诊断功能实现说明文档
- 移除公告通知弹窗功能说明文档
- 移除手术人员字段不显示问题解决方案文档
- 移除手术和麻醉信息Redis缓存实现说明文档
- 移除手术室管理添加类型和所属科室字段说明文档
This commit is contained in:
2026-01-13 14:41:27 +08:00
parent e20e2b637f
commit a47306825a
71 changed files with 630 additions and 2519 deletions

View File

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.core.common.core.domain.R;
import com.core.common.utils.AssignSeqUtil;
import com.core.common.utils.ChineseConvertUtils;
import com.core.common.utils.DictUtils;
import com.core.common.utils.StringUtils;
import com.openhis.administration.domain.OperatingRoom;
import com.openhis.administration.mapper.OperatingRoomMapper;
@@ -78,23 +79,12 @@ public class OperatingRoomAppServiceImpl implements IOperatingRoomAppService {
e.setStatusEnum_dictText(e.getStatusEnum() != null && e.getStatusEnum() == 1 ? "启用" : "停用");
// 类型
if (e.getRoomTypeEnum() != null) {
switch (e.getRoomTypeEnum()) {
case 1:
e.setRoomTypeEnum_dictText("急诊手术室");
break;
case 2:
e.setRoomTypeEnum_dictText("择期手术室");
break;
case 3:
e.setRoomTypeEnum_dictText("日间手术室");
break;
case 4:
e.setRoomTypeEnum_dictText("复合手术室");
break;
default:
e.setRoomTypeEnum_dictText("未知");
break;
}
e.setRoomTypeEnum_dictText(DictUtils.getDictLabel("operating_room_type", String.valueOf(e.getRoomTypeEnum())));
}
// 如果有机构ID查询机构名称
if (e.getOrganizationId() != null) {
String orgName = commonService.getOrgNameById(e.getOrganizationId());
e.setOrganizationName(orgName);
}
// 拼音码
e.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(e.getName()));
@@ -127,23 +117,7 @@ public class OperatingRoomAppServiceImpl implements IOperatingRoomAppService {
// 类型描述
if (operatingRoom.getRoomTypeEnum() != null) {
switch (operatingRoom.getRoomTypeEnum()) {
case 1:
operatingRoomDto.setRoomTypeEnum_dictText("急诊手术室");
break;
case 2:
operatingRoomDto.setRoomTypeEnum_dictText("择期手术室");
break;
case 3:
operatingRoomDto.setRoomTypeEnum_dictText("日间手术室");
break;
case 4:
operatingRoomDto.setRoomTypeEnum_dictText("复合手术室");
break;
default:
operatingRoomDto.setRoomTypeEnum_dictText("未知");
break;
}
operatingRoomDto.setRoomTypeEnum_dictText(DictUtils.getDictLabel("operating_room_type", String.valueOf(operatingRoom.getRoomTypeEnum())));
}
// 如果有机构ID查询机构名称
@@ -168,6 +142,11 @@ public class OperatingRoomAppServiceImpl implements IOperatingRoomAppService {
return R.fail("手术室名称不能为空");
}
// 校验房间号不能为空
if (StringUtils.isEmpty(operatingRoomDto.getBusNo())) {
return R.fail("房间号不能为空");
}
// 去除空格
String name = operatingRoomDto.getName().replaceAll("[  ]", "");
operatingRoomDto.setName(name);
@@ -177,13 +156,14 @@ public class OperatingRoomAppServiceImpl implements IOperatingRoomAppService {
return R.fail("" + name + "】已存在");
}
// 判断房间号是否已存在
if (isExistBusNo(operatingRoomDto.getBusNo(), null)) {
return R.fail("房间号【" + operatingRoomDto.getBusNo() + "】已存在");
}
OperatingRoom operatingRoom = new OperatingRoom();
BeanUtils.copyProperties(operatingRoomDto, operatingRoom);
// 生成编码
String code = assignSeqUtil.getSeq(AssignSeqEnum.OPERATING_ROOM_BUS_NO.getPrefix(), 3);
operatingRoom.setBusNo(code);
// 拼音码
operatingRoom.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(operatingRoomDto.getName()));
// 五笔码
@@ -215,6 +195,11 @@ public class OperatingRoomAppServiceImpl implements IOperatingRoomAppService {
return R.fail("手术室名称不能为空");
}
// 校验房间号不能为空
if (StringUtils.isEmpty(operatingRoomDto.getBusNo())) {
return R.fail("房间号不能为空");
}
// 去除空格
String name = operatingRoomDto.getName().replaceAll("[  ]", "");
operatingRoomDto.setName(name);
@@ -224,6 +209,11 @@ public class OperatingRoomAppServiceImpl implements IOperatingRoomAppService {
return R.fail("" + name + "】已存在");
}
// 判断房间号是否已存在(排除自己)
if (isExistBusNo(operatingRoomDto.getBusNo(), operatingRoomDto.getId())) {
return R.fail("房间号【" + operatingRoomDto.getBusNo() + "】已存在");
}
OperatingRoom operatingRoom = new OperatingRoom();
BeanUtils.copyProperties(operatingRoomDto, operatingRoom);
@@ -331,4 +321,20 @@ public class OperatingRoomAppServiceImpl implements IOperatingRoomAppService {
}
return operatingRoomService.count(queryWrapper) > 0;
}
/**
* 判断房间号是否已存在
*
* @param busNo 房间号
* @param excludeId 排除的ID
* @return 是否存在
*/
private boolean isExistBusNo(String busNo, Long excludeId) {
LambdaQueryWrapper<OperatingRoom> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(OperatingRoom::getBusNo, busNo);
if (excludeId != null) {
queryWrapper.ne(OperatingRoom::getId, excludeId);
}
return operatingRoomService.count(queryWrapper) > 0;
}
}