最新版本升级

This commit is contained in:
Zhang.WH
2025-09-02 19:15:07 +08:00
parent 2c907e49f4
commit 7d972e2d17
3598 changed files with 155327 additions and 23880 deletions

View File

@@ -0,0 +1,266 @@
<?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.common.mapper.CommonAppMapper">
<select id="selectInventoryItemList" resultType="com.openhis.web.common.dto.InventoryItemDto">
SELECT ii.tenant_id,
ii.item_type,
ii.category_code,
ii.part_percent,
ii.definition_id,
ii.name,
ii.item_bus_no,
ii.py_str,
ii.wb_str,
ii.yb_no,
ii.product_name,
ii.unit_code,
ii.min_unit_code,
ii.manufacturer,
ii.volume,
ii.supplier,
ii.item_table_name,
ii.lot_number,
ii.org_location_id,
ii.purchase_amount
FROM ( SELECT T1.tenant_id,
#{medicine} AS item_type,
T1.category_code AS category_code,
T1.part_percent AS part_percent,
T1.id AS definition_id,
T1."name" AS "name",
T1.bus_no AS item_bus_no,
T1.py_str AS py_str,
T1.wb_str AS wb_str,
T1.yb_no AS yb_no,
T1.merchandise_name AS product_name,
T1.unit_code AS unit_code,
T1.min_unit_code AS min_unit_code,
T1.manufacturer_text AS manufacturer,
T2.total_volume AS volume,
T3."name" AS supplier,
<choose>
<when test="purchaseFlag != 1">
T7.item_table AS item_table_name,
T7.lot_number,
T7.location_id AS org_location_id,
NULL AS purchase_amount
</when>
<otherwise>
NULL AS item_table_name,
NULL AS lot_number,
NULL AS org_location_id,
T9.amount AS purchase_amount
</otherwise>
</choose>
FROM med_medication_definition AS T1
LEFT JOIN med_medication AS T2
ON T2.medication_def_id = T1.ID
AND T2.delete_flag = '0'
LEFT JOIN adm_supplier AS T3
ON T3.ID = T1.supply_id
AND T3.delete_flag = '0'
<if test="purchaseFlag != 1">
LEFT JOIN wor_inventory_item AS T7
ON T7.item_id = T1.id
AND T7.delete_flag = '0'
</if>
<if test="purchaseFlag != 0">
LEFT JOIN adm_charge_item_definition AS T8
ON T8.instance_id = T1.id
AND T8.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T9
ON T9.definition_id = T8.id
AND T9.delete_flag = '0'
</if>
WHERE T1.delete_flag = '0'
AND T2.status_enum != #{retired}
<if test="purchaseFlag != 1">
AND T7.item_id IS NOT NULL -- 确保连接有效性
AND T7.item_table = #{medicationTableName}
</if>
<if test="purchaseFlag != 0">
AND T9.condition_code = #{purchase}
</if>
UNION ALL
SELECT T1.tenant_id,
#{device} AS item_type,
T1.category_code AS category_code,
T1.part_percent AS part_percent,
T1.id AS definition_id,
T1."name" AS "name",
T1.bus_no AS item_bus_no,
T1.py_str AS py_str,
T1.wb_str AS wb_str,
T1.yb_no AS yb_no,
'' AS product_name,
T1.unit_code AS unit_code,
T1.min_unit_code AS min_unit_code,
T1.manufacturer_text AS manufacturer,
T1."size" AS volume,
T2."name" AS supplier,
<choose>
<when test="purchaseFlag != 1">
T7.item_table AS item_table_name,
T7.lot_number,
T7.location_id AS org_location_id,
NULL AS purchase_amount
</when>
<otherwise>
NULL AS item_table_name,
NULL AS lot_number,
NULL AS org_location_id,
T9.amount AS purchase_amount
</otherwise>
</choose>
FROM adm_device_definition AS T1
LEFT JOIN adm_supplier AS T2
ON T2.ID = T1.supply_id
AND T2.delete_flag = '0'
<if test="purchaseFlag != 1">
LEFT JOIN wor_inventory_item AS T7
ON T7.item_id = T1.id
AND T7.delete_flag = '0'
</if>
<if test="purchaseFlag != 0">
LEFT JOIN adm_charge_item_definition AS T8
ON T8.instance_id = T1.id
AND T8.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T9
ON T9.definition_id = T8.id
AND T9.delete_flag = '0'
</if>
WHERE T1.delete_flag = '0'
AND T1.status_enum != #{retired}
<if test="purchaseFlag != 1">
AND T7.item_id IS NOT NULL -- 确保连接有效性
AND T7.item_table = #{deviceTableName}
</if>
<if test="purchaseFlag != 0">
AND T9.condition_code = #{purchase}
</if>
) AS ii
${ew.customSqlSegment}
</select>
<select id="selectInventoryItemInfo" resultType="com.openhis.web.common.dto.LocationInventoryDto">
SELECT T1.item_id,
T1.item_table,
SUM(CASE WHEN T1.location_id = #{objLocationId} THEN T1.quantity ELSE 0 END) AS obj_quantity,
SUM(CASE WHEN T1.location_id = #{orgLocationId} THEN T1.quantity ELSE 0 END) AS org_quantity,
T1.unit_code,
T1.production_date,
T1.lot_number,
T1.expiration_date,
MAX(T2."name") AS location_name,
MAX(T3."name") AS location_store_name,
T5.amount AS price,
T1.supplier_id,
CASE WHEN T1.item_table = #{medicationTableName}
THEN ( SELECT T7.yb_no
FROM med_medication_definition AS T7
WHERE T1.item_id = T7.id
AND T7.delete_flag = '0')
WHEN T1.item_table = #{deviceTableName}
THEN ( SELECT T8.yb_no
FROM adm_device_definition AS T8
WHERE T1.item_id = T8.id
AND T8.delete_flag = '0'
) ELSE null END AS yb_no, --医保编码
CASE WHEN T1.item_table = #{medicationTableName}
THEN ( SELECT T7.manufacturer_text
FROM med_medication_definition AS T7
WHERE T1.item_id = T7.id
AND T7.delete_flag = '0')
WHEN T1.item_table = #{deviceTableName}
THEN ( SELECT T8.manufacturer_text
FROM adm_device_definition AS T8
WHERE T1.item_id = T8.id
AND T8.delete_flag = '0')
ELSE null END AS manufacturer,--生产厂家
T6.name AS supplier_name
FROM wor_inventory_item AS T1
LEFT JOIN adm_location AS T2
ON T2.id = T1.location_id
AND T2.delete_flag = '0'
LEFT JOIN adm_location AS T3
ON T3.id = T1.location_store_id
AND T3.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T4
ON T4.instance_id = T1.item_id
AND T4.delete_flag = '0'
-- 使用子查询确保T5唯一记录 --
LEFT JOIN (
SELECT * FROM (
SELECT definition_id,
amount,
ROW_NUMBER() OVER (PARTITION BY definition_id ORDER BY id DESC ) AS rn -- 按ID取最新记录按需调整排序
FROM adm_charge_item_def_detail
WHERE delete_flag = '0'
AND condition_code = '1'--1:批号进价
) AS t
WHERE rn = 1 -- 确保每个分组只取一条记录
) AS T5 ON T5.definition_id = T4.id
LEFT JOIN adm_supplier AS T6
ON T6.id = T1.supplier_id
AND T6.delete_flag = '0'
WHERE T1.item_id = #{itemId}
AND T1.inventory_status_enum != 3
AND T1.delete_flag = '0'
<choose>
<when test="lotNumber != null">
AND T1.lot_number = #{lotNumber}
</when>
</choose>
<choose>
<when test="objLocationId != null and objLocationId != ''">
AND T1.location_id IN (#{orgLocationId}, #{objLocationId})
</when>
<otherwise>
AND T1.location_id = #{orgLocationId}
</otherwise>
</choose>
GROUP BY T1.item_id,
T1.item_table,
T1.unit_code,
T1.production_date,
T1.expiration_date,
T1.lot_number,
T5.amount,
T1.supplier_id,
T6.name
ORDER BY T1.lot_number DESC
</select>
<select id="getInfoByTraceNo" resultType="com.openhis.administration.domain.TraceNoManage">
SELECT id,
item_table,
item_id,
location_type_enum,
location_id,
location_store_id,
lot_number,
trace_no,
status_enum,
unit_code,
operation_type,
create_by,
create_time,
update_by,
update_time,
tenant_id,
delete_flag
FROM adm_trace_no_manage
WHERE trace_no like #{traceNo}
AND (trace_no) IN (
SELECT trace_no
FROM adm_trace_no_manage
WHERE trace_no like #{traceNo}
AND delete_flag = '0'
GROUP BY trace_no
HAVING SUM(CASE WHEN status_enum = 1 THEN 1 ELSE 0 END) > -- 进库次数
SUM(CASE WHEN status_enum = 2 THEN 1 ELSE 0 END) -- 出库次数
)
AND delete_flag = '0'
ORDER BY create_time DESC LIMIT 1
</select>
</mapper>