当手术计费弹窗中点击"签发"耗材时,因耗材的locationId(发放库房)为空导致后端异常。 在DoctorStationAdviceAppServiceImpl.handDevice方法中,当locationId为null时,使用登录用户的科室ID作为默认值, 与NurseBillingAppService中的处理方式保持一致。
214 lines
6.9 KiB
XML
Executable File
214 lines
6.9 KiB
XML
Executable File
<?xml version="1.0" encoding="UTF-8" ?>
|
||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||
<mapper namespace="com.openhis.web.datadictionary.mapper.DeviceManageMapper">
|
||
<select id="getDevicePage" parameterType="java.util.Map"
|
||
resultType="com.openhis.web.datadictionary.dto.DeviceManageDto">
|
||
|
||
SELECT
|
||
T3.id,
|
||
T3.bus_no,
|
||
T3.name,
|
||
T3.py_str,
|
||
T3.wb_str,
|
||
T3.category_code,
|
||
T3.type_code,
|
||
T3.unit_code,
|
||
T3.size,
|
||
T3.part_percent,
|
||
T3.min_unit_code,
|
||
T3.org_id,
|
||
T3.location_id,
|
||
T3.model_number,
|
||
T3.hvcm_flag,
|
||
T3.sales_unit_code,
|
||
T3.approval_number,
|
||
T3.yb_flag,
|
||
T3.yb_no,
|
||
T3.yb_org_no,
|
||
T3.yb_match_flag,
|
||
T3.status_enum,
|
||
T3.manufacturer_id,
|
||
T3.manufacturer_text,
|
||
T3.supply_id,
|
||
T3.description,
|
||
T3.jurisdiction,
|
||
T3.version,
|
||
T3.substance_text,
|
||
T3.allergen_flag,
|
||
T3.tenant_id,
|
||
T3.item_type_code,
|
||
T3.yb_type,
|
||
T3.rx_flag,--处方标志
|
||
T3.chrgitm_lv,--医保等级
|
||
T3.retail_price,
|
||
T3.purchase_price,
|
||
T3.maximum_retail_price
|
||
FROM
|
||
(
|
||
SELECT
|
||
T1.id,
|
||
T1.bus_no,
|
||
T1.name,
|
||
T1.py_str,
|
||
T1.wb_str,
|
||
T1.category_code,
|
||
T1.type_code,
|
||
T1.unit_code,
|
||
T1.size,
|
||
T1.part_percent,
|
||
T1.min_unit_code,
|
||
T1.org_id,
|
||
T1.location_id,
|
||
T1.model_number,
|
||
T1.hvcm_flag,
|
||
T1.sales_unit_code,
|
||
T1.approval_number,
|
||
T1.yb_flag,
|
||
T1.yb_no,
|
||
T1.yb_org_no,
|
||
T1.yb_match_flag,
|
||
T1.status_enum,
|
||
T1.manufacturer_id,
|
||
T1.manufacturer_text,
|
||
T1.supply_id,
|
||
T1.description,
|
||
T1.jurisdiction,
|
||
T1.version,
|
||
T1.substance_text,
|
||
T1.allergen_flag,
|
||
T1.tenant_id,
|
||
T1.rx_flag,--处方标志
|
||
T1.chrgitm_lv,--医保等级
|
||
T2.type_code as item_type_code,
|
||
T2.yb_type,
|
||
-- 🔧 Bug #220 修复:使用COALESCE优先从多个来源获取零售价
|
||
-- 优先顺序:1. adm_charge_item_definition.price 2. adm_charge_item_def_detail.amount (condition_code='3')
|
||
COALESCE(
|
||
T2.price,
|
||
(SELECT T4.amount
|
||
FROM adm_charge_item_definition T5
|
||
LEFT JOIN adm_charge_item_def_detail T4 ON T4.definition_id = T5.id
|
||
WHERE T4.condition_code = '3'
|
||
AND T5.instance_id = T1.id
|
||
AND T5.instance_table = 'adm_device_definition'
|
||
AND T4.delete_flag = '0'
|
||
ORDER BY T4.create_time DESC
|
||
LIMIT 1)
|
||
) as retail_price,--零售价,
|
||
( SELECT T4.amount
|
||
FROM adm_charge_item_definition T5
|
||
LEFT JOIN adm_charge_item_def_detail T4 ON T4.definition_id = T5.id
|
||
WHERE T4.condition_code in ('1','2')--2:采购价
|
||
AND T5.instance_id = T1.id
|
||
AND T5.instance_table = 'adm_device_definition'
|
||
AND T4.delete_flag='0'
|
||
ORDER BY T4.create_time desc
|
||
LIMIT 1
|
||
) as purchase_price,--购入价
|
||
( SELECT T4.amount
|
||
FROM adm_charge_item_definition T5
|
||
LEFT JOIN adm_charge_item_def_detail T4 ON T4.definition_id = T5.id
|
||
WHERE T4.condition_code = '4'--4:限制
|
||
AND T5.instance_id = T1.id
|
||
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
|
||
AND T2.instance_table = 'adm_device_definition'
|
||
<where>
|
||
T1.delete_flag = '0'
|
||
|
||
</where>
|
||
ORDER BY T1.bus_no
|
||
) AS T3
|
||
${ew.customSqlSegment}
|
||
|
||
</select>
|
||
|
||
<select id="getOne" resultType="com.openhis.web.datadictionary.dto.DeviceManageDto">
|
||
SELECT
|
||
T1.id,
|
||
T1.bus_no,
|
||
T1.name,
|
||
T1.py_str,
|
||
T1.wb_str,
|
||
T1.category_code,
|
||
T1.type_code,
|
||
T1.unit_code,
|
||
T1.size,
|
||
T1.part_percent,
|
||
T1.min_unit_code,
|
||
T1.org_id,
|
||
T1.location_id,
|
||
T1.model_number,
|
||
T1.hvcm_flag,
|
||
T1.sales_unit_code,
|
||
T1.approval_number,
|
||
T1.yb_flag,
|
||
T1.yb_no,
|
||
T1.yb_org_no,
|
||
T1.yb_match_flag,
|
||
T1.status_enum,
|
||
T1.manufacturer_id,
|
||
T1.manufacturer_text,
|
||
T1.supply_id,
|
||
T1.description,
|
||
T1.jurisdiction,
|
||
T1.version,
|
||
T1.substance_text,
|
||
T1.allergen_flag,
|
||
T1.tenant_id,
|
||
T1.rx_flag,--处方标志
|
||
T1.chrgitm_lv,--医保等级
|
||
T1.item_min_quantity,
|
||
T1.item_max_quantity,
|
||
T2.type_code as item_type_code,
|
||
T2.yb_type,
|
||
-- 🔧 Bug #220 修复:使用COALESCE优先从多个来源获取零售价
|
||
COALESCE(
|
||
T2.price,
|
||
(SELECT T4.amount
|
||
FROM adm_charge_item_definition T5
|
||
LEFT JOIN adm_charge_item_def_detail T4 ON T4.definition_id = T5.id
|
||
WHERE T4.condition_code = '3'
|
||
AND T5.instance_id = T1.id
|
||
AND T5.instance_table = 'adm_device_definition'
|
||
AND T4.delete_flag = '0'
|
||
ORDER BY T4.create_time DESC
|
||
LIMIT 1)
|
||
) as retail_price,--零售价,
|
||
( SELECT T4.amount
|
||
FROM adm_charge_item_definition T5
|
||
LEFT JOIN adm_charge_item_def_detail T4 ON T4.definition_id = T5.id
|
||
WHERE T4.condition_code in ('1','2')--2:采购价
|
||
AND T5.instance_id = T1.id
|
||
AND T5.instance_table = 'adm_device_definition'
|
||
AND T4.delete_flag='0'
|
||
ORDER BY T4.create_time desc
|
||
LIMIT 1
|
||
) as purchase_price,--购入价
|
||
( SELECT T4.amount
|
||
FROM adm_charge_item_definition T5
|
||
LEFT JOIN adm_charge_item_def_detail T4 ON T4.definition_id = T5.id
|
||
WHERE T4.condition_code = '4'--4:限制
|
||
AND T5.instance_id = T1.id
|
||
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
|
||
AND T2.instance_table = 'adm_device_definition'
|
||
<where>
|
||
T1.delete_flag = '0'
|
||
|
||
<if test="id!= null">
|
||
AND T1.id = #{id}
|
||
</if>
|
||
<if test="tenantId!= null">
|
||
AND T1.tenant_id = #{tenantId}
|
||
</if>
|
||
</where>
|
||
</select>
|
||
|
||
</mapper> |