Fix Bug #533: 【门诊手术安排-计费】添加药品费用项目保存提示成功,但列表页未同步显示计费药品项目

根因:DoctorStationAdviceAppServiceImpl 中 handMedication/handDevice/handService 方法
硬编码 generateSourceEnum=1(医生开立),但前端手术计费传入 generateSourceEnum=6,
查询时按 6 过滤导致找不到记录。

修复:1. GenerateSource 枚举新增 SURGERY_BILLING(6)
      2. 8处 setGenerateSourceEnum 改为优先使用 DTO 的 generateSourceEnum,
         空时回退到 DOCTOR_PRESCRIPTION

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
关羽
2026-05-15 16:09:21 +08:00
parent 91f29bf693
commit cace025d14
2 changed files with 30 additions and 9 deletions

View File

@@ -1107,7 +1107,9 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
if (is_save) { if (is_save) {
medicationRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICATION_RES_NO.getPrefix(), 4)); medicationRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICATION_RES_NO.getPrefix(), 4));
} }
medicationRequest.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源 medicationRequest.setGenerateSourceEnum(adviceSaveDto.getGenerateSourceEnum() != null
? adviceSaveDto.getGenerateSourceEnum()
: GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
medicationRequest.setQuantity(adviceSaveDto.getQuantity()); // 请求数量 medicationRequest.setQuantity(adviceSaveDto.getQuantity()); // 请求数量
medicationRequest.setExecuteNum(adviceSaveDto.getExecuteNum()); // 执行次数 medicationRequest.setExecuteNum(adviceSaveDto.getExecuteNum()); // 执行次数
medicationRequest.setUnitCode(adviceSaveDto.getUnitCode()); // 请求单位编码 medicationRequest.setUnitCode(adviceSaveDto.getUnitCode()); // 请求单位编码
@@ -1153,7 +1155,9 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
chargeItem.setId(adviceSaveDto.getChargeItemId()); // 费用项id chargeItem.setId(adviceSaveDto.getChargeItemId()); // 费用项id
chargeItem.setStatusEnum(2); // 已生成医嘱 chargeItem.setStatusEnum(2); // 已生成医嘱
chargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(medicationRequest.getBusNo())); chargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(medicationRequest.getBusNo()));
chargeItem.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源 chargeItem.setGenerateSourceEnum(adviceSaveDto.getGenerateSourceEnum() != null
? adviceSaveDto.getGenerateSourceEnum()
: GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
chargeItem.setPrescriptionNo(adviceSaveDto.getPrescriptionNo()); // 处方号 chargeItem.setPrescriptionNo(adviceSaveDto.getPrescriptionNo()); // 处方号
chargeItem.setPatientId(adviceSaveDto.getPatientId()); // 患者 chargeItem.setPatientId(adviceSaveDto.getPatientId()); // 患者
chargeItem.setContextEnum(adviceSaveDto.getAdviceType()); // 类型 chargeItem.setContextEnum(adviceSaveDto.getAdviceType()); // 类型
@@ -1247,7 +1251,9 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
deviceRequest.setCreateBy(currentUsername); deviceRequest.setCreateBy(currentUsername);
deviceRequest.setCreateTime(curDate); deviceRequest.setCreateTime(curDate);
deviceRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.DEVICE_RES_NO.getPrefix(), 4)); deviceRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.DEVICE_RES_NO.getPrefix(), 4));
deviceRequest.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); deviceRequest.setGenerateSourceEnum(adviceSaveDto.getGenerateSourceEnum() != null
? adviceSaveDto.getGenerateSourceEnum()
: GenerateSource.DOCTOR_PRESCRIPTION.getValue());
deviceRequest.setQuantity(boundDevice.getQuantity()); deviceRequest.setQuantity(boundDevice.getQuantity());
deviceRequest.setUnitCode(boundDevice.getUnitCode()); deviceRequest.setUnitCode(boundDevice.getUnitCode());
deviceRequest.setCategoryEnum(adviceSaveDto.getCategoryEnum()); deviceRequest.setCategoryEnum(adviceSaveDto.getCategoryEnum());
@@ -1313,7 +1319,9 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
deviceChargeItem.setCreateTime(curDate); deviceChargeItem.setCreateTime(curDate);
deviceChargeItem.setStatusEnum(ChargeItemStatus.PLANNED.getValue()); deviceChargeItem.setStatusEnum(ChargeItemStatus.PLANNED.getValue());
deviceChargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(deviceRequest.getBusNo())); deviceChargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(deviceRequest.getBusNo()));
deviceChargeItem.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); deviceChargeItem.setGenerateSourceEnum(adviceSaveDto.getGenerateSourceEnum() != null
? adviceSaveDto.getGenerateSourceEnum()
: GenerateSource.DOCTOR_PRESCRIPTION.getValue());
deviceChargeItem.setPrescriptionNo(adviceSaveDto.getPrescriptionNo()); // 处方号,与药品一致 deviceChargeItem.setPrescriptionNo(adviceSaveDto.getPrescriptionNo()); // 处方号,与药品一致
deviceChargeItem.setPatientId(adviceSaveDto.getPatientId()); deviceChargeItem.setPatientId(adviceSaveDto.getPatientId());
deviceChargeItem.setContextEnum(ChargeItemContext.DEVICE.getValue()); // 耗材类型 deviceChargeItem.setContextEnum(ChargeItemContext.DEVICE.getValue()); // 耗材类型
@@ -1542,7 +1550,9 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
if (is_save) { if (is_save) {
deviceRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.DEVICE_RES_NO.getPrefix(), 4)); deviceRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.DEVICE_RES_NO.getPrefix(), 4));
} }
deviceRequest.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源 deviceRequest.setGenerateSourceEnum(adviceSaveDto.getGenerateSourceEnum() != null
? adviceSaveDto.getGenerateSourceEnum()
: GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
deviceRequest.setPrescriptionNo(adviceSaveDto.getSourceBillNo()); // 来源业务单据号(手术单号) deviceRequest.setPrescriptionNo(adviceSaveDto.getSourceBillNo()); // 来源业务单据号(手术单号)
deviceRequest.setQuantity(adviceSaveDto.getQuantity()); // 请求数量 deviceRequest.setQuantity(adviceSaveDto.getQuantity()); // 请求数量
deviceRequest.setUnitCode(adviceSaveDto.getUnitCode()); // 请求单位编码 deviceRequest.setUnitCode(adviceSaveDto.getUnitCode()); // 请求单位编码
@@ -1605,7 +1615,9 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
chargeItem.setCreateTime(curDate); // 补全创建时间 chargeItem.setCreateTime(curDate); // 补全创建时间
chargeItem.setStatusEnum(2); // 已生成医嘱 chargeItem.setStatusEnum(2); // 已生成医嘱
chargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(deviceRequest.getBusNo())); chargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(deviceRequest.getBusNo()));
chargeItem.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源 chargeItem.setGenerateSourceEnum(adviceSaveDto.getGenerateSourceEnum() != null
? adviceSaveDto.getGenerateSourceEnum()
: GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
chargeItem.setPatientId(adviceSaveDto.getPatientId()); // 患者 chargeItem.setPatientId(adviceSaveDto.getPatientId()); // 患者
chargeItem.setContextEnum(adviceSaveDto.getAdviceType()); // 类型 chargeItem.setContextEnum(adviceSaveDto.getAdviceType()); // 类型
chargeItem.setEncounterId(adviceSaveDto.getEncounterId()); // 就诊id chargeItem.setEncounterId(adviceSaveDto.getEncounterId()); // 就诊id
@@ -1906,7 +1918,9 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
if (is_save) { if (is_save) {
serviceRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.SERVICE_RES_NO.getPrefix(), 4)); serviceRequest.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.SERVICE_RES_NO.getPrefix(), 4));
} }
serviceRequest.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源 serviceRequest.setGenerateSourceEnum(adviceSaveDto.getGenerateSourceEnum() != null
? adviceSaveDto.getGenerateSourceEnum()
: GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
serviceRequest.setPrescriptionNo(adviceSaveDto.getSourceBillNo()); // 来源业务单据号(手术单号) serviceRequest.setPrescriptionNo(adviceSaveDto.getSourceBillNo()); // 来源业务单据号(手术单号)
serviceRequest.setQuantity(adviceSaveDto.getQuantity()); // 请求数量 serviceRequest.setQuantity(adviceSaveDto.getQuantity()); // 请求数量
serviceRequest.setUnitCode(adviceSaveDto.getUnitCode()); // 请求单位编码 serviceRequest.setUnitCode(adviceSaveDto.getUnitCode()); // 请求单位编码
@@ -1957,7 +1971,9 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
chargeItem.setCreateTime(curDate); // 补全创建时间 chargeItem.setCreateTime(curDate); // 补全创建时间
chargeItem.setStatusEnum(2); // 已生成医嘱 chargeItem.setStatusEnum(2); // 已生成医嘱
chargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(serviceRequest.getBusNo())); chargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(serviceRequest.getBusNo()));
chargeItem.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源 chargeItem.setGenerateSourceEnum(adviceSaveDto.getGenerateSourceEnum() != null
? adviceSaveDto.getGenerateSourceEnum()
: GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
chargeItem.setPatientId(adviceSaveDto.getPatientId()); // 患者 chargeItem.setPatientId(adviceSaveDto.getPatientId()); // 患者
chargeItem.setContextEnum(adviceSaveDto.getAdviceType()); // 类型 chargeItem.setContextEnum(adviceSaveDto.getAdviceType()); // 类型
chargeItem.setEncounterId(adviceSaveDto.getEncounterId()); // 就诊id chargeItem.setEncounterId(adviceSaveDto.getEncounterId()); // 就诊id

View File

@@ -39,7 +39,12 @@ public enum GenerateSource implements HisEnumInterface {
/** /**
* 自动滚费 * 自动滚费
*/ */
AUTO_ROLL_FEES(5, "5", "自动滚费"); AUTO_ROLL_FEES(5, "5", "自动滚费"),
/**
* 手术计费
*/
SURGERY_BILLING(6, "6", "手术计费");
private final Integer value; private final Integer value;
private final String code; private final String code;