fix(doctorstation): 解决诊疗项目执行科室验证及耗材价格显示问题 bug#220
- 修复诊疗项目执行科室非空校验逻辑,使用effectiveOrgId替代positionId - 添加getEffectiveOrgId方法统一获取执行科室ID的兼容处理 - 修复耗材价格处理逻辑,正确区分price和retailPrice字段避免零值判断错误 - 更新数据库查询映射,优化设备定义表与收费项目定义表关联条件 - 添加调试日志输出便于问题排查
This commit is contained in:
@@ -1077,7 +1077,8 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
||||
for (AdviceSaveDto adviceSaveDto : insertOrUpdateList) {
|
||||
// 🔧 Bug Fix #238: 诊疗项目执行科室非空校验
|
||||
if (adviceSaveDto.getAdviceType() != null && adviceSaveDto.getAdviceType() == 3) {
|
||||
if (adviceSaveDto.getPositionId() == null) {
|
||||
Long effectiveOrgId = adviceSaveDto.getEffectiveOrgId();
|
||||
if (effectiveOrgId == null) {
|
||||
throw new ServiceException("诊疗项目必须选择执行科室");
|
||||
}
|
||||
}
|
||||
@@ -1116,8 +1117,8 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
||||
serviceRequest.setRequesterId(adviceSaveDto.getPractitionerId()); // 开方医生
|
||||
serviceRequest.setEncounterId(adviceSaveDto.getEncounterId()); // 就诊id
|
||||
serviceRequest.setAuthoredTime(curDate); // 请求签发时间
|
||||
// 执行科室
|
||||
serviceRequest.setOrgId(adviceSaveDto.getPositionId());
|
||||
// 执行科室 - 使用兼容方法获取执行科室ID
|
||||
serviceRequest.setOrgId(adviceSaveDto.getEffectiveOrgId());
|
||||
serviceRequest.setContentJson(adviceSaveDto.getContentJson()); // 请求内容json
|
||||
serviceRequest.setYbClassEnum(adviceSaveDto.getYbClassEnum());// 类别医保编码
|
||||
serviceRequest.setConditionId(adviceSaveDto.getConditionId()); // 诊断id
|
||||
|
||||
@@ -50,10 +50,32 @@ public class AdviceSaveDto {
|
||||
|
||||
/**
|
||||
* 物理位置id | 可能是 发药药房id,耗材房id,执行科室id
|
||||
* 前端字段名:orgId(诊疗项目)
|
||||
* 对应数据库:org_id / perform_location
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long positionId;
|
||||
|
||||
/**
|
||||
* 执行科室ID | 诊疗项目使用
|
||||
* 前端传来字段名:orgId
|
||||
* 对应数据库:org_id
|
||||
* 🔧 Bug Fix #238: 添加此字段以支持前端orgId传参
|
||||
*/
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long orgId;
|
||||
|
||||
/**
|
||||
* 获取有效的执行科室ID(兼容处理)
|
||||
* 优先使用orgId,如果不存在则使用positionId
|
||||
* 🔧 Bug Fix #238: 统一获取执行科室ID的方法
|
||||
*
|
||||
* @return 有效的科室ID,如果都为null则返回null
|
||||
*/
|
||||
public Long getEffectiveOrgId() {
|
||||
return orgId != null ? orgId : positionId;
|
||||
}
|
||||
|
||||
/** 药品性质 | 分方使用 */
|
||||
private String pharmacologyCategoryCode;
|
||||
|
||||
|
||||
@@ -100,10 +100,11 @@
|
||||
AND T5.instance_table = 'adm_device_definition'
|
||||
) as maximum_retail_price--最高零售价
|
||||
FROM adm_device_definition T1
|
||||
LEFT JOIN adm_charge_item_definition T2 ON T1.id = T2.instance_id
|
||||
LEFT JOIN adm_charge_item_definition T2
|
||||
ON T1.id = T2.instance_id
|
||||
AND T2.instance_table = 'adm_device_definition'
|
||||
<where>
|
||||
T1.delete_flag = '0'
|
||||
AND T2.instance_table = 'adm_device_definition'
|
||||
|
||||
</where>
|
||||
ORDER BY T1.bus_no
|
||||
@@ -170,10 +171,11 @@
|
||||
AND T5.instance_table = 'adm_device_definition'
|
||||
) as maximum_retail_price--最高零售价
|
||||
FROM adm_device_definition T1
|
||||
LEFT JOIN adm_charge_item_definition T2 ON T1.id = T2.instance_id
|
||||
LEFT JOIN adm_charge_item_definition T2
|
||||
ON T1.id = T2.instance_id
|
||||
AND T2.instance_table = 'adm_device_definition'
|
||||
<where>
|
||||
T1.delete_flag = '0'
|
||||
AND T2.instance_table = 'adm_device_definition'
|
||||
|
||||
<if test="id!= null">
|
||||
AND T1.id = #{id}
|
||||
|
||||
Reference in New Issue
Block a user