fix(#697): 请修复 Bug #697

由 AI Agent (guanyu) 自动修复,请查看 diff 确认变更内容。
This commit is contained in:
2026-06-11 00:40:16 +08:00
parent ca812421d2
commit f75133369a
3 changed files with 28 additions and 20 deletions

View File

@@ -451,10 +451,12 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
// 删除费用项
iChargeItemService.deleteByServiceTableAndId(CommonConstants.TableName.MED_MEDICATION_REQUEST,
adviceSaveDto.getRequestId());
// 删除代煎费
iChargeItemService.remove(new LambdaQueryWrapper<ChargeItem>()
.eq(ChargeItem::getPrescriptionNo, adviceSaveDto.getPrescriptionNo())
.eq(ChargeItem::getProductId, sufferingDefinitionId));
// 删除代煎费(按处方号精确清理)
if (adviceSaveDto.getPrescriptionNo() != null) {
iChargeItemService.remove(new LambdaQueryWrapper<ChargeItem>()
.eq(ChargeItem::getPrescriptionNo, adviceSaveDto.getPrescriptionNo())
.eq(ChargeItem::getProductId, sufferingDefinitionId));
}
}
@@ -614,7 +616,7 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
Long encounterDiagnosisId = medicineList.get(0).getEncounterDiagnosisId();
// 中药付数
BigDecimal chineseHerbsDoseQuantity = medicineList.get(0).getChineseHerbsDoseQuantity();
// 🔧 Bug Fix #668: 收集所有处方号(不同分组可能有不同处方号)
// 收集所有处方号(不同分组可能有不同处方号)
List<String> prescriptionNos = insertOrUpdateList.stream()
.map(AdviceSaveDto::getPrescriptionNo)
.filter(Objects::nonNull)
@@ -628,12 +630,10 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
AdviceBaseDto adviceBaseDto = new AdviceBaseDto();
adviceBaseDto.setAdviceDefinitionId(sufferingDefinitionId); // 医嘱定义id
// 🔧 Bug Fix #668: 先删除所有处方号关联的中药代煎账单
if (!prescriptionNos.isEmpty()) {
iChargeItemService.remove(new LambdaQueryWrapper<ChargeItem>()
.in(ChargeItem::getPrescriptionNo, prescriptionNos)
.eq(ChargeItem::getProductId, sufferingDefinitionId));
}
// 先删除该就诊关联的所有中药代煎账单
iChargeItemService.remove(new LambdaQueryWrapper<ChargeItem>()
.eq(ChargeItem::getEncounterId, encounterId)
.eq(ChargeItem::getProductId, sufferingDefinitionId));
// 对应的诊疗医嘱信息
AdviceBaseDto activityAdviceBaseDto = iDoctorStationAdviceAppService.getAdviceBaseInfo(adviceBaseDto, null,
@@ -642,7 +642,7 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
// 费用定价
AdvicePriceDto advicePriceDto = activityAdviceBaseDto.getPriceList().get(0);
if (advicePriceDto != null) {
// 🔧 Bug Fix #668: 为每个处方号分别生成代煎账单
// 为每个处方号分别生成代煎账单
for (String prescriptionNo : prescriptionNos) {
chargeItem = new ChargeItem();
chargeItem.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
@@ -674,12 +674,10 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
}
}
} else if (Whether.NO.getValue().equals(sufferingFlag)) {
// 🔧 Bug Fix #668: 删除所有处方号关联的中药代煎账单
if (!prescriptionNos.isEmpty()) {
iChargeItemService.remove(new LambdaQueryWrapper<ChargeItem>()
.in(ChargeItem::getPrescriptionNo, prescriptionNos)
.eq(ChargeItem::getProductId, sufferingDefinitionId));
}
// 删除该就诊关联的所有中药代煎账单
iChargeItemService.remove(new LambdaQueryWrapper<ChargeItem>()
.eq(ChargeItem::getEncounterId, encounterId)
.eq(ChargeItem::getProductId, sufferingDefinitionId));
}
// 签发时,把草稿状态的账单更新为待收费[中医]

View File

@@ -0,0 +1,9 @@
-- Bug #735: 新医嘱签发后"停嘱医生"字段错误生成数据
-- 原因stopper_name 映射到 update_by 字段,签发时 MyBatis-Plus 自动填充导致错误赋值
-- 修复:添加专用 stopper_id 字段,仅在停嘱操作时设置
-- 药品请求表添加停嘱医生ID字段
ALTER TABLE med_medication_request ADD COLUMN IF NOT EXISTS stopper_id BIGINT;
-- 服务请求表添加停嘱医生ID字段
ALTER TABLE wor_service_request ADD COLUMN IF NOT EXISTS stopper_id BIGINT;

View File

@@ -1,4 +1,4 @@
<template>
<template>
<div
v-loading="readCardLoading"
class="app-container"
@@ -122,6 +122,7 @@
<patientList
:searchkey="patientSearchKey"
@selsect-patient="selsectPatient"
@mousedown.prevent
/>
<template #reference>
<el-input
@@ -2225,7 +2226,7 @@ async function confirmCheckIn() {
* 点击患者列表给表单赋值
*/
function selsectPatient(row) {
form.value = { ...form.value, ...row };
Object.assign(form.value, row);
form.value.patientId = row.id;
form.value.searchKey = row.name;
form.value.name = row.name;