fix(charge): 解决门诊收费中耗材请求数据查询问题 BUG#145
- 在处方查询方法中添加耗材请求表名参数支持 - 修复数据库查询中缺少耗材请求表关联的问题 - 将设备费用项状态从草稿改为计划状态以确保正确显示 - 为设备请求设置处方号以保证门诊收费能正确关联 - 优化数据库表连接逻辑支持耗材请求数据查询
This commit is contained in:
@@ -121,7 +121,8 @@ public class OutpatientChargeAppServiceImpl implements IOutpatientChargeAppServi
|
|||||||
ChargeItemContext.DEVICE.getValue(), ChargeItemContext.REGISTER.getValue(),
|
ChargeItemContext.DEVICE.getValue(), ChargeItemContext.REGISTER.getValue(),
|
||||||
ChargeItemStatus.PLANNED.getValue(), ChargeItemStatus.BILLABLE.getValue(),
|
ChargeItemStatus.PLANNED.getValue(), ChargeItemStatus.BILLABLE.getValue(),
|
||||||
ChargeItemStatus.BILLED.getValue(), ChargeItemStatus.REFUNDING.getValue(),
|
ChargeItemStatus.BILLED.getValue(), ChargeItemStatus.REFUNDING.getValue(),
|
||||||
ChargeItemStatus.REFUNDED.getValue(), ChargeItemStatus.PART_REFUND.getValue());
|
ChargeItemStatus.REFUNDED.getValue(), ChargeItemStatus.PART_REFUND.getValue(),
|
||||||
|
CommonConstants.TableName.WOR_DEVICE_REQUEST);
|
||||||
prescriptionDtoList.forEach(e -> {
|
prescriptionDtoList.forEach(e -> {
|
||||||
// 收费状态枚举
|
// 收费状态枚举
|
||||||
e.setStatusEnum_enumText(EnumUtils.getInfoByValue(ChargeItemStatus.class, e.getStatusEnum()));
|
e.setStatusEnum_enumText(EnumUtils.getInfoByValue(ChargeItemStatus.class, e.getStatusEnum()));
|
||||||
@@ -229,7 +230,8 @@ public class OutpatientChargeAppServiceImpl implements IOutpatientChargeAppServi
|
|||||||
ChargeItemStatus.REFUNDING.getValue(), ChargeItemStatus.REFUNDED.getValue(),
|
ChargeItemStatus.REFUNDING.getValue(), ChargeItemStatus.REFUNDED.getValue(),
|
||||||
ChargeItemStatus.PART_REFUND.getValue(), YbPayment.DISCOUNT_PAY.getValue(),
|
ChargeItemStatus.PART_REFUND.getValue(), YbPayment.DISCOUNT_PAY.getValue(),
|
||||||
YbPayment.SELF_CASH_VALUE.getValue(), YbPayment.SELF_CASH_VX_VALUE.getValue(),
|
YbPayment.SELF_CASH_VALUE.getValue(), YbPayment.SELF_CASH_VX_VALUE.getValue(),
|
||||||
YbPayment.SELF_CASH_ALI_VALUE.getValue(), YbPayment.SELF_CASH_UNION_VALUE.getValue());
|
YbPayment.SELF_CASH_ALI_VALUE.getValue(), YbPayment.SELF_CASH_UNION_VALUE.getValue(),
|
||||||
|
CommonConstants.TableName.WOR_DEVICE_REQUEST);
|
||||||
prescriptionDtoList.forEach(e -> {
|
prescriptionDtoList.forEach(e -> {
|
||||||
// 应收金额
|
// 应收金额
|
||||||
BigDecimal receivableAmount = e.getReceivableAmount();
|
BigDecimal receivableAmount = e.getReceivableAmount();
|
||||||
|
|||||||
@@ -48,13 +48,14 @@ public interface OutpatientChargeAppMapper {
|
|||||||
* @param refunding 收费状态:退费中
|
* @param refunding 收费状态:退费中
|
||||||
* @param refunded 收费状态:全部退费
|
* @param refunded 收费状态:全部退费
|
||||||
* @param partRefund 收费状态:部分退费
|
* @param partRefund 收费状态:部分退费
|
||||||
|
* @param worDeviceRequest 耗材请求表名常量
|
||||||
* @return 患者处方列表
|
* @return 患者处方列表
|
||||||
*/
|
*/
|
||||||
List<EncounterPatientPrescriptionDto> selectEncounterPatientPrescription(@Param("encounterId") Long encounterId,
|
List<EncounterPatientPrescriptionDto> selectEncounterPatientPrescription(@Param("encounterId") Long encounterId,
|
||||||
@Param("activity") Integer activity, @Param("medication") Integer medication, @Param("device") Integer device,
|
@Param("activity") Integer activity, @Param("medication") Integer medication, @Param("device") Integer device,
|
||||||
@Param("register") Integer register, @Param("planned") Integer planned, @Param("billable") Integer billable,
|
@Param("register") Integer register, @Param("planned") Integer planned, @Param("billable") Integer billable,
|
||||||
@Param("billed") Integer billed, @Param("refunding") Integer refunding, @Param("refunded") Integer refunded,
|
@Param("billed") Integer billed, @Param("refunding") Integer refunding, @Param("refunded") Integer refunded,
|
||||||
@Param("partRefund") Integer partRefund);
|
@Param("partRefund") Integer partRefund, @Param("worDeviceRequest") String worDeviceRequest);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据就诊id查询患者处方列表并新增字段:应收金额,实收金额,优惠金额,折扣率
|
* 根据就诊id查询患者处方列表并新增字段:应收金额,实收金额,优惠金额,折扣率
|
||||||
@@ -75,6 +76,7 @@ public interface OutpatientChargeAppMapper {
|
|||||||
* @param selfVxCode 微信枚举码
|
* @param selfVxCode 微信枚举码
|
||||||
* @param selfAliCode 支付宝枚举码
|
* @param selfAliCode 支付宝枚举码
|
||||||
* @param selfUnionCode 银联枚举码
|
* @param selfUnionCode 银联枚举码
|
||||||
|
* @param worDeviceRequest 耗材请求表名常量
|
||||||
* @return 患者处方列表
|
* @return 患者处方列表
|
||||||
*/
|
*/
|
||||||
List<EncounterPatientPrescriptionDto> selectEncounterPatientPrescriptionWithPrice(
|
List<EncounterPatientPrescriptionDto> selectEncounterPatientPrescriptionWithPrice(
|
||||||
@@ -84,5 +86,5 @@ public interface OutpatientChargeAppMapper {
|
|||||||
@Param("refunding") Integer refunding, @Param("refunded") Integer refunded,
|
@Param("refunding") Integer refunding, @Param("refunded") Integer refunded,
|
||||||
@Param("partRefund") Integer partRefund, @Param("discountCode") Integer discountCode,
|
@Param("partRefund") Integer partRefund, @Param("discountCode") Integer discountCode,
|
||||||
@Param("self") Integer selfCode, @Param("selfVx") Integer selfVxCode, @Param("selfAli") Integer selfAliCode,
|
@Param("self") Integer selfCode, @Param("selfVx") Integer selfVxCode, @Param("selfAli") Integer selfAliCode,
|
||||||
@Param("selfUnion") Integer selfUnionCode);
|
@Param("selfUnion") Integer selfUnionCode, @Param("worDeviceRequest") String worDeviceRequest);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -776,6 +776,8 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
// 关联到药品请求
|
// 关联到药品请求
|
||||||
deviceRequest.setBasedOnId(medicationRequest.getId());
|
deviceRequest.setBasedOnId(medicationRequest.getId());
|
||||||
deviceRequest.setBasedOnTable(CommonConstants.TableName.MED_MEDICATION_REQUEST);
|
deviceRequest.setBasedOnTable(CommonConstants.TableName.MED_MEDICATION_REQUEST);
|
||||||
|
// 🔧 Bug Fix #145: 设置处方号,确保门诊收费能正确显示
|
||||||
|
deviceRequest.setPrescriptionNo(adviceSaveDto.getPrescriptionNo());
|
||||||
|
|
||||||
iDeviceRequestService.save(deviceRequest);
|
iDeviceRequestService.save(deviceRequest);
|
||||||
|
|
||||||
@@ -808,7 +810,7 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
deviceChargeItem.setTenantId(tenantId);
|
deviceChargeItem.setTenantId(tenantId);
|
||||||
deviceChargeItem.setCreateBy(currentUsername);
|
deviceChargeItem.setCreateBy(currentUsername);
|
||||||
deviceChargeItem.setCreateTime(curDate);
|
deviceChargeItem.setCreateTime(curDate);
|
||||||
deviceChargeItem.setStatusEnum(ChargeItemStatus.DRAFT.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(GenerateSource.DOCTOR_PRESCRIPTION.getValue());
|
||||||
deviceChargeItem.setPrescriptionNo(adviceSaveDto.getPrescriptionNo()); // 处方号,与药品一致
|
deviceChargeItem.setPrescriptionNo(adviceSaveDto.getPrescriptionNo()); // 处方号,与药品一致
|
||||||
@@ -936,7 +938,7 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
|||||||
chargeItem.setTenantId(tenantId); // 补全租户 ID
|
chargeItem.setTenantId(tenantId); // 补全租户 ID
|
||||||
chargeItem.setCreateBy(currentUsername); // 补全创建人
|
chargeItem.setCreateBy(currentUsername); // 补全创建人
|
||||||
chargeItem.setCreateTime(curDate); // 补全创建时间
|
chargeItem.setCreateTime(curDate); // 补全创建时间
|
||||||
chargeItem.setStatusEnum(ChargeItemStatus.DRAFT.getValue()); // 收费状态
|
chargeItem.setStatusEnum(ChargeItemStatus.PLANNED.getValue()); // 收费状态
|
||||||
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(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
|
||||||
chargeItem.setPatientId(adviceSaveDto.getPatientId()); // 患者
|
chargeItem.setPatientId(adviceSaveDto.getPatientId()); // 患者
|
||||||
|
|||||||
@@ -77,7 +77,7 @@
|
|||||||
T1.unit_price,
|
T1.unit_price,
|
||||||
T1.total_price,
|
T1.total_price,
|
||||||
mmr.prescription_no,
|
mmr.prescription_no,
|
||||||
mmr.method_code,
|
mmr.method_code AS method_code,
|
||||||
mmr.rate_code,
|
mmr.rate_code,
|
||||||
mmr.dose,
|
mmr.dose,
|
||||||
mmr.dose_unit_code,
|
mmr.dose_unit_code,
|
||||||
@@ -135,6 +135,7 @@
|
|||||||
ON T6.contract_no = T8.bus_no
|
ON T6.contract_no = T8.bus_no
|
||||||
AND T8.delete_flag = '0'
|
AND T8.delete_flag = '0'
|
||||||
LEFT JOIN med_medication_request AS mmr ON mmr.id = T1.service_id AND mmr.delete_flag = '0'
|
LEFT JOIN med_medication_request AS mmr ON mmr.id = T1.service_id AND mmr.delete_flag = '0'
|
||||||
|
LEFT JOIN wor_device_request AS wdr ON wdr.id = T1.service_id AND T1.service_table = #{worDeviceRequest} AND wdr.delete_flag = '0'
|
||||||
WHERE T1.encounter_id = #{encounterId}
|
WHERE T1.encounter_id = #{encounterId}
|
||||||
AND T1.status_enum IN (#{planned}
|
AND T1.status_enum IN (#{planned}
|
||||||
, #{billable}
|
, #{billable}
|
||||||
@@ -169,7 +170,7 @@
|
|||||||
T1.unit_price,
|
T1.unit_price,
|
||||||
T1.total_price,
|
T1.total_price,
|
||||||
mmr.prescription_no,
|
mmr.prescription_no,
|
||||||
mmr.method_code,
|
mmr.method_code AS method_code,
|
||||||
mmr.rate_code,
|
mmr.rate_code,
|
||||||
mmr.dose,
|
mmr.dose,
|
||||||
mmr.dose_unit_code,
|
mmr.dose_unit_code,
|
||||||
@@ -228,6 +229,7 @@
|
|||||||
ON T6.contract_no = T8.bus_no
|
ON T6.contract_no = T8.bus_no
|
||||||
AND T8.delete_flag = '0'
|
AND T8.delete_flag = '0'
|
||||||
LEFT JOIN med_medication_request AS mmr ON mmr.id = T1.service_id AND mmr.delete_flag = '0'
|
LEFT JOIN med_medication_request AS mmr ON mmr.id = T1.service_id AND mmr.delete_flag = '0'
|
||||||
|
LEFT JOIN wor_device_request AS wdr ON wdr.id = T1.service_id AND T1.service_table = #{worDeviceRequest} AND wdr.delete_flag = '0'
|
||||||
WHERE T1.encounter_id = #{encounterId}
|
WHERE T1.encounter_id = #{encounterId}
|
||||||
AND T1.status_enum IN (#{planned}
|
AND T1.status_enum IN (#{planned}
|
||||||
, #{billable}
|
, #{billable}
|
||||||
|
|||||||
Reference in New Issue
Block a user