Fix: Bug-490 【住院医生站】待签发医嘱执行删除操作,提示“删除成功”但记录未从界面消失
This commit is contained in:
@@ -177,6 +177,9 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
|
|||||||
// 医嘱分类信息
|
// 医嘱分类信息
|
||||||
List<RegAdviceSaveDto> regAdviceSaveList = regAdviceSaveParam.getRegAdviceSaveList();
|
List<RegAdviceSaveDto> regAdviceSaveList = regAdviceSaveParam.getRegAdviceSaveList();
|
||||||
|
|
||||||
|
// 🔧 Bug Fix: 先处理所有删除操作(不管adviceType是什么)
|
||||||
|
this.handleDeleteOperations(regAdviceSaveList);
|
||||||
|
|
||||||
// 药品
|
// 药品
|
||||||
List<RegAdviceSaveDto> medicineList = regAdviceSaveList.stream()
|
List<RegAdviceSaveDto> medicineList = regAdviceSaveList.stream()
|
||||||
.filter(e -> ItemType.MEDICINE.getValue().equals(e.getAdviceType())).collect(Collectors.toList());
|
.filter(e -> ItemType.MEDICINE.getValue().equals(e.getAdviceType())).collect(Collectors.toList());
|
||||||
@@ -247,6 +250,67 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
|
|||||||
MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[]{"住院医嘱"}));
|
MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[]{"住院医嘱"}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 🔧 Bug Fix: 统一处理所有删除操作
|
||||||
|
* 解决未知adviceType(如31)无法删除的问题
|
||||||
|
*/
|
||||||
|
private void handleDeleteOperations(List<RegAdviceSaveDto> allAdviceList) {
|
||||||
|
// 筛选出所有标记为删除的记录
|
||||||
|
List<RegAdviceSaveDto> deleteList = allAdviceList.stream()
|
||||||
|
.filter(e -> DbOpType.DELETE.getCode().equals(e.getDbOpType()))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
if (deleteList.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
log.info("开始处理删除操作,共 {} 条记录", deleteList.size());
|
||||||
|
|
||||||
|
for (RegAdviceSaveDto adviceDto : deleteList) {
|
||||||
|
Integer adviceType = adviceDto.getAdviceType();
|
||||||
|
Long requestId = adviceDto.getRequestId();
|
||||||
|
|
||||||
|
if (requestId == null) {
|
||||||
|
log.warn("删除操作中requestId为空,跳过");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 根据adviceType判断删除哪种类型的医嘱
|
||||||
|
if (ItemType.MEDICINE.getValue().equals(adviceType)) {
|
||||||
|
// 药品删除
|
||||||
|
iMedicationRequestService.removeById(requestId);
|
||||||
|
iMedicationDispenseService.deleteMedicationDispense(requestId);
|
||||||
|
iChargeItemService.deleteByServiceTableAndId(CommonConstants.TableName.MED_MEDICATION_REQUEST, requestId);
|
||||||
|
log.info("删除药品医嘱成功,requestId: {}", requestId);
|
||||||
|
|
||||||
|
} else if (ItemType.DEVICE.getValue().equals(adviceType)) {
|
||||||
|
// 耗材删除
|
||||||
|
iDeviceRequestService.removeById(requestId);
|
||||||
|
iDeviceDispenseService.deleteDeviceDispense(requestId);
|
||||||
|
iChargeItemService.deleteByServiceTableAndId(CommonConstants.TableName.WOR_DEVICE_REQUEST, requestId);
|
||||||
|
log.info("删除耗材医嘱成功,requestId: {}", requestId);
|
||||||
|
|
||||||
|
} else if (ItemType.ACTIVITY.getValue().equals(adviceType)
|
||||||
|
|| (adviceType != null && (adviceType == 26 || adviceType == 31))) {
|
||||||
|
// 诊疗活动删除(包括护理type=26和未知类型type=31)
|
||||||
|
iServiceRequestService.removeById(requestId);
|
||||||
|
iChargeItemService.deleteByServiceTableAndId(CommonConstants.TableName.WOR_SERVICE_REQUEST, requestId);
|
||||||
|
log.info("删除诊疗/护理医嘱成功,requestId: {}, adviceType: {}", requestId, adviceType);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// 未知类型,尝试按诊疗活动删除(兜底策略)
|
||||||
|
log.warn("未知的adviceType: {},尝试按诊疗活动删除,requestId: {}", adviceType, requestId);
|
||||||
|
iServiceRequestService.removeById(requestId);
|
||||||
|
iChargeItemService.deleteByServiceTableAndId(CommonConstants.TableName.WOR_SERVICE_REQUEST, requestId);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("删除医嘱失败,requestId: {}, adviceType: {}", requestId, adviceType, e);
|
||||||
|
// 继续处理其他记录,不中断整个流程
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理药品
|
* 处理药品
|
||||||
*/
|
*/
|
||||||
@@ -259,17 +323,6 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
|
|||||||
// 签发操作
|
// 签发操作
|
||||||
boolean is_sign = AdviceOpType.SIGN_ADVICE.getCode().equals(adviceOpType);
|
boolean is_sign = AdviceOpType.SIGN_ADVICE.getCode().equals(adviceOpType);
|
||||||
|
|
||||||
// 删除
|
|
||||||
List<RegAdviceSaveDto> deleteList = medicineList.stream()
|
|
||||||
.filter(e -> DbOpType.DELETE.getCode().equals(e.getDbOpType())).collect(Collectors.toList());
|
|
||||||
for (RegAdviceSaveDto regAdviceSaveDto : deleteList) {
|
|
||||||
iMedicationRequestService.removeById(regAdviceSaveDto.getRequestId());
|
|
||||||
// 删除已经产生的药品发放信息
|
|
||||||
iMedicationDispenseService.deleteMedicationDispense(regAdviceSaveDto.getRequestId());
|
|
||||||
// 删除费用项
|
|
||||||
iChargeItemService.deleteByServiceTableAndId(CommonConstants.TableName.MED_MEDICATION_REQUEST,
|
|
||||||
regAdviceSaveDto.getRequestId());
|
|
||||||
}
|
|
||||||
// 签发时统一处理组号 (排除删除操作,包括长期和临时)
|
// 签发时统一处理组号 (排除删除操作,包括长期和临时)
|
||||||
List<RegAdviceSaveDto> exceptDelList = medicineList.stream()
|
List<RegAdviceSaveDto> exceptDelList = medicineList.stream()
|
||||||
.filter(e -> !DbOpType.DELETE.getCode().equals(e.getDbOpType())).collect(Collectors.toList());
|
.filter(e -> !DbOpType.DELETE.getCode().equals(e.getDbOpType())).collect(Collectors.toList());
|
||||||
@@ -458,16 +511,6 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
|
|||||||
// 签发操作
|
// 签发操作
|
||||||
boolean is_sign = AdviceOpType.SIGN_ADVICE.getCode().equals(adviceOpType);
|
boolean is_sign = AdviceOpType.SIGN_ADVICE.getCode().equals(adviceOpType);
|
||||||
|
|
||||||
// 删除
|
|
||||||
List<AdviceSaveDto> deleteList = activityList.stream()
|
|
||||||
.filter(e -> DbOpType.DELETE.getCode().equals(e.getDbOpType())).collect(Collectors.toList());
|
|
||||||
for (AdviceSaveDto adviceSaveDto : deleteList) {
|
|
||||||
iServiceRequestService.removeById(adviceSaveDto.getRequestId());
|
|
||||||
// 删除费用项
|
|
||||||
iChargeItemService.deleteByServiceTableAndId(CommonConstants.TableName.WOR_SERVICE_REQUEST,
|
|
||||||
adviceSaveDto.getRequestId());
|
|
||||||
}
|
|
||||||
|
|
||||||
// 声明长期医嘱诊疗请求
|
// 声明长期医嘱诊疗请求
|
||||||
ServiceRequest longServiceRequest;
|
ServiceRequest longServiceRequest;
|
||||||
// 新增 + 修改 (长期医嘱)
|
// 新增 + 修改 (长期医嘱)
|
||||||
@@ -627,18 +670,6 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
|
|||||||
// 签发操作
|
// 签发操作
|
||||||
boolean is_sign = AdviceOpType.SIGN_ADVICE.getCode().equals(adviceOpType);
|
boolean is_sign = AdviceOpType.SIGN_ADVICE.getCode().equals(adviceOpType);
|
||||||
|
|
||||||
// 删除
|
|
||||||
List<RegAdviceSaveDto> deleteList = deviceList.stream()
|
|
||||||
.filter(e -> DbOpType.DELETE.getCode().equals(e.getDbOpType())).collect(Collectors.toList());
|
|
||||||
for (RegAdviceSaveDto regAdviceSaveDto : deleteList) {
|
|
||||||
iDeviceRequestService.removeById(regAdviceSaveDto.getRequestId());
|
|
||||||
// 删除已经产生的耗材发放信息
|
|
||||||
iDeviceDispenseService.deleteDeviceDispense(regAdviceSaveDto.getRequestId());
|
|
||||||
// 删除费用项
|
|
||||||
iChargeItemService.deleteByServiceTableAndId(CommonConstants.TableName.WOR_DEVICE_REQUEST,
|
|
||||||
regAdviceSaveDto.getRequestId());
|
|
||||||
}
|
|
||||||
|
|
||||||
// 声明耗材请求
|
// 声明耗材请求
|
||||||
DeviceRequest deviceRequest;
|
DeviceRequest deviceRequest;
|
||||||
// 声明费用项
|
// 声明费用项
|
||||||
|
|||||||
@@ -1044,7 +1044,7 @@ function resolveAllOrgIds() {
|
|||||||
|
|
||||||
function handleDelete() {
|
function handleDelete() {
|
||||||
let selectRows = prescriptionRef.value.getSelectionRows();
|
let selectRows = prescriptionRef.value.getSelectionRows();
|
||||||
if (selectRows.length == 0) {
|
if (selectRows.length === 0) {
|
||||||
proxy.$modal.msgWarning('请选择要删除的医嘱');
|
proxy.$modal.msgWarning('请选择要删除的医嘱');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1054,10 +1054,10 @@ function handleDelete() {
|
|||||||
let deleteItem = prescriptionList.value[i];
|
let deleteItem = prescriptionList.value[i];
|
||||||
let index = selectRows.findIndex((item) => item.uniqueKey === deleteItem.uniqueKey);
|
let index = selectRows.findIndex((item) => item.uniqueKey === deleteItem.uniqueKey);
|
||||||
// 通过requestId判断是否已保存,如果选中项未保存 直接从数组中移除,如果已保存,调接口删除
|
// 通过requestId判断是否已保存,如果选中项未保存 直接从数组中移除,如果已保存,调接口删除
|
||||||
if (index != -1 && deleteItem.statusEnum == 1 && !deleteItem.requestId) {
|
if (index !== -1 && deleteItem.statusEnum === 1 && !deleteItem.requestId) {
|
||||||
prescriptionList.value.splice(i, 1);
|
prescriptionList.value.splice(i, 1);
|
||||||
sum++;
|
sum++;
|
||||||
} else if (index != -1 && deleteItem.statusEnum == 1 && deleteItem.requestId) {
|
} else if (index !== -1 && deleteItem.statusEnum === 1 && deleteItem.requestId) {
|
||||||
deleteList.push({
|
deleteList.push({
|
||||||
requestId: deleteItem.requestId,
|
requestId: deleteItem.requestId,
|
||||||
dbOpType: '3',
|
dbOpType: '3',
|
||||||
@@ -1068,7 +1068,7 @@ function handleDelete() {
|
|||||||
expandOrder.value = [];
|
expandOrder.value = [];
|
||||||
isAdding.value = false;
|
isAdding.value = false;
|
||||||
adviceQueryParams.value.adviceType = undefined;
|
adviceQueryParams.value.adviceType = undefined;
|
||||||
if (sum == selectRows.length) {
|
if (sum === selectRows.length) {
|
||||||
proxy.$modal.msgSuccess('删除成功');
|
proxy.$modal.msgSuccess('删除成功');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1077,7 +1077,7 @@ function handleDelete() {
|
|||||||
if (deleteList.length > 0) {
|
if (deleteList.length > 0) {
|
||||||
// regAdviceSaveList
|
// regAdviceSaveList
|
||||||
savePrescription({ regAdviceSaveList: deleteList }).then((res) => {
|
savePrescription({ regAdviceSaveList: deleteList }).then((res) => {
|
||||||
if (res.code == 200) {
|
if (res.code === 200) {
|
||||||
proxy.$modal.msgSuccess('删除成功');
|
proxy.$modal.msgSuccess('删除成功');
|
||||||
getListInfo(false);
|
getListInfo(false);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user