提交merge1.3
This commit is contained in:
@@ -1,9 +1,216 @@
|
||||
<?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.reportmanage.mapper.ChargeReportMapper">
|
||||
<!--门诊收入明细-->
|
||||
<sql id="selectRevenueReportPage">
|
||||
SELECT T8.tenant_id,
|
||||
T8.payment_id,
|
||||
T8.charge_id,
|
||||
T8.name, -- 姓名
|
||||
T8.gender_enum, -- 性别
|
||||
T8.birth_date, -- 出生日期
|
||||
T8.id_card, -- 证件号
|
||||
T8.yb_code, -- 医保号
|
||||
T8.encounter_date, -- 就诊日期
|
||||
T8.bus_no,-- 患者院内编码/病历号
|
||||
T8.department_id,-- 科室
|
||||
T8.department_name,-- 科室
|
||||
T8.clinical_name,-- 项目名
|
||||
T8.clinical_no, -- 项目编码
|
||||
T8.ybNo,-- 医保码
|
||||
T8.type, -- 类别
|
||||
T8.issuer_id,-- 开单人
|
||||
T8.issuer_name,-- 开单人
|
||||
T8.payee_id,-- 收款人
|
||||
T8.payee_name,-- 收款人
|
||||
T8.number,-- 数量
|
||||
T8.quantity_unit,-- 单位
|
||||
T8.price,-- 单价
|
||||
T8.total_price,-- 金额
|
||||
T8.charge_time,-- 收费时间
|
||||
T8.total_volume, -- 规格
|
||||
T8.chrgitmLv,-- 医保等级
|
||||
T8.clinical_type, -- 项目类型
|
||||
T8.encounter_id
|
||||
FROM (SELECT DISTINCT T1.tenant_id,
|
||||
T1.id AS payment_id,
|
||||
T4.id AS charge_id,
|
||||
T15.name, -- 姓名
|
||||
T15.gender_enum, -- 性别
|
||||
T15.birth_date, -- 出生日期
|
||||
T15.id_card, -- 证件号
|
||||
T16.psn_no AS yb_code, -- 医保号
|
||||
TO_CHAR(T2.reception_time, 'YYYY-MM-DD') AS encounter_date, -- 就诊日期
|
||||
T2.bus_no, -- 患者院内编码/病历号
|
||||
T3.id AS department_id,-- 科室
|
||||
T3.name AS department_name,-- 科室
|
||||
CASE
|
||||
WHEN T5.instance_table = 'adm_device_definition' THEN T11.name
|
||||
WHEN T5.instance_table = 'adm_healthcare_service' THEN T12.name
|
||||
WHEN T5.instance_table = 'med_medication_definition' THEN T13.name
|
||||
WHEN T5.instance_table = 'wor_activity_definition' THEN T14.name
|
||||
ELSE NULL
|
||||
END AS clinical_name, -- 项目名
|
||||
CASE
|
||||
WHEN T5.instance_table = 'adm_device_definition' THEN T11.bus_no
|
||||
WHEN T5.instance_table = 'med_medication_definition' THEN T13.bus_no
|
||||
WHEN T5.instance_table = 'wor_activity_definition' THEN T14.bus_no
|
||||
ELSE NULL
|
||||
END AS clinical_no, -- 项目编码
|
||||
CASE
|
||||
WHEN T5.instance_table = 'adm_device_definition' THEN T11.yb_no
|
||||
WHEN T5.instance_table = 'adm_healthcare_service' THEN T12.yb_no
|
||||
WHEN T5.instance_table = 'med_medication_definition' THEN T13.yb_no
|
||||
WHEN T5.instance_table = 'wor_activity_definition' THEN T14.yb_no
|
||||
ELSE NULL
|
||||
END AS ybNo, -- 医保码
|
||||
T5.yb_type AS type, -- 医保类别
|
||||
T6.id AS issuer_id,-- 开单人
|
||||
T6.name AS issuer_name,-- 开单人
|
||||
T7.id AS payee_id,-- 收款人
|
||||
T7.name AS payee_name,-- 收款人
|
||||
T4.quantity_value AS number,-- 数量
|
||||
T4.quantity_unit,-- 单位
|
||||
T4.unit_price AS price,-- 单价
|
||||
CASE
|
||||
WHEN T1.status_enum = #{refundAll} THEN -T4.total_price
|
||||
ELSE T4.total_price
|
||||
END AS total_price,-- 金额
|
||||
T1.bill_date AS charge_time,-- 收费时间
|
||||
CASE
|
||||
WHEN T5.instance_table = 'adm_device_definition' THEN T17.device_specifications
|
||||
WHEN T5.instance_table = 'med_medication_definition' THEN T18.total_volume
|
||||
ELSE NULL
|
||||
END AS total_volume, -- 规格
|
||||
CASE
|
||||
WHEN T5.instance_table = 'adm_device_definition' THEN T11.chrgitm_lv
|
||||
WHEN T5.instance_table = 'med_medication_definition' THEN T13.chrgitm_lv
|
||||
WHEN T5.instance_table = 'wor_activity_definition' THEN T14.chrgitm_lv
|
||||
ELSE NULL
|
||||
END AS chrgitmLv,-- 医保等级
|
||||
CASE
|
||||
WHEN T5.instance_table = 'adm_device_definition' THEN #{device}
|
||||
WHEN T5.instance_table = 'adm_healthcare_service' THEN #{register}
|
||||
WHEN T5.instance_table = 'med_medication_definition' THEN #{medication}
|
||||
WHEN T5.instance_table = 'wor_activity_definition' THEN #{activity}
|
||||
ELSE NULL
|
||||
END AS clinical_type, -- 项目类型
|
||||
T1.encounter_id,
|
||||
|
||||
CASE WHEN T5.instance_table = 'adm_device_definition' THEN T11.category_code ELSE NULL END AS
|
||||
device_category_code,
|
||||
|
||||
CASE WHEN T5.instance_table = 'med_medication_definition' THEN T13.category_code ELSE NULL END AS
|
||||
medication_category_code,
|
||||
|
||||
CASE WHEN T5.instance_table = 'wor_activity_definition' THEN T14.category_code ELSE NULL END AS
|
||||
activity_category_code
|
||||
FROM fin_payment_reconciliation T1
|
||||
LEFT JOIN adm_encounter T2
|
||||
ON T2.id = T1.encounter_id
|
||||
AND T2.delete_flag = '0'
|
||||
AND T2.class_enum = 2
|
||||
LEFT JOIN adm_patient AS T15
|
||||
ON T1.patient_id = T15.id
|
||||
AND T15.delete_flag = '0'
|
||||
LEFT JOIN yb_clinc_reg AS T16
|
||||
ON T2.bus_no = T16.ipt_otp_no
|
||||
LEFT JOIN adm_organization AS T3
|
||||
ON T2.organization_id = T3.id
|
||||
AND T3.delete_flag = '0'
|
||||
LEFT JOIN adm_charge_item T4
|
||||
ON CONCAT(',', T1.charge_item_ids, ',') LIKE CONCAT('%,', T4.id, ',%')
|
||||
AND T4.delete_flag = '0'
|
||||
LEFT JOIN adm_charge_item_definition T5
|
||||
ON T4.definition_id = T5.id
|
||||
AND T5.delete_flag = '0'
|
||||
LEFT JOIN adm_device_definition T11
|
||||
ON T5.instance_id = T11.id
|
||||
AND T5.instance_table = 'adm_device_definition'
|
||||
AND T11.delete_flag = '0'
|
||||
LEFT JOIN adm_device T17
|
||||
ON T11.id = T17.device_def_id
|
||||
AND T17.delete_flag = '0'
|
||||
LEFT JOIN adm_healthcare_service T12
|
||||
ON T5.instance_id = T12.id
|
||||
AND T5.instance_table = 'adm_healthcare_service'
|
||||
AND T12.delete_flag = '0'
|
||||
LEFT JOIN med_medication_definition T13
|
||||
ON T5.instance_id = T13.id
|
||||
AND T5.instance_table = 'med_medication_definition'
|
||||
AND T13.delete_flag = '0'
|
||||
LEFT JOIN med_medication T18
|
||||
ON T13.id = T18.medication_def_id
|
||||
AND T18.delete_flag = '0'
|
||||
LEFT JOIN wor_activity_definition T14
|
||||
ON T5.instance_id = T14.id
|
||||
AND T5.instance_table = 'wor_activity_definition'
|
||||
AND T14.delete_flag = '0'
|
||||
LEFT JOIN adm_practitioner T6
|
||||
ON T4.enterer_id = T6.id
|
||||
AND T6.delete_flag = '0'
|
||||
LEFT JOIN adm_practitioner T7
|
||||
ON T1.enterer_id = T7.id
|
||||
AND T7.delete_flag = '0'
|
||||
<if test="statisticsFlg == 0 or statisticsFlg == 1">
|
||||
INNER JOIN adm_account T19
|
||||
ON T4.account_id = T19.id
|
||||
AND T19.delete_flag = '0'
|
||||
INNER JOIN fin_contract T20
|
||||
ON T19.contract_no = T20.bus_no
|
||||
AND T20.yb_flag = #{statisticsFlg}
|
||||
AND T20.delete_flag = '0'
|
||||
</if>
|
||||
<if test="statisticsFlg == 3">
|
||||
WHERE T1.status_enum = #{refundAll}
|
||||
</if>
|
||||
<if test="statisticsFlg != 3">
|
||||
WHERE T1.status_enum IN (#{success}, #{refundAll})
|
||||
</if>
|
||||
AND T1.delete_flag = '0'
|
||||
ORDER BY T2.bus_no,
|
||||
T4.ID,
|
||||
T1.bill_date) AS T8
|
||||
${ew.customSqlSegment}
|
||||
|
||||
<!-- clinicalType 筛选条件 -->
|
||||
<if test="clinicalType != null and !clinicalType.isEmpty()">
|
||||
AND (
|
||||
<trim prefix="" suffix="" suffixOverrides="OR">
|
||||
<if test="clinicalType.contains(1)">
|
||||
T8.clinical_type = 1
|
||||
AND T8.medication_category_code IN
|
||||
<foreach collection="medicationCategoryCode" item="code" open="(" separator="," close=")">
|
||||
#{code}
|
||||
</foreach>
|
||||
OR
|
||||
</if>
|
||||
<if test="clinicalType.contains(2)">
|
||||
T8.clinical_type = 2
|
||||
AND T8.device_category_code IN
|
||||
<foreach collection="deviceCategoryCode" item="code" open="(" separator="," close=")">
|
||||
#{code}
|
||||
</foreach>
|
||||
OR
|
||||
</if>
|
||||
<if test="clinicalType.contains(3)">
|
||||
T8.clinical_type = 3
|
||||
AND T8.activity_category_code IN
|
||||
<foreach collection="activityCategoryCode" item="code" open="(" separator="," close=")">
|
||||
#{code}
|
||||
</foreach>
|
||||
OR
|
||||
</if>
|
||||
<if test="clinicalType.contains(4)">
|
||||
T8.clinical_type = 4
|
||||
</if>
|
||||
</trim>
|
||||
)
|
||||
</if>
|
||||
</sql>
|
||||
<!--门诊收入明细 -->
|
||||
<select id="selectRevenueReportPage"
|
||||
resultType="com.openhis.web.reportmanage.dto.ChargeReportPageDto">
|
||||
<<<<<<< HEAD
|
||||
SELECT T8.tenant_id,
|
||||
T8.payment_id,
|
||||
T8.charge_id,
|
||||
@@ -164,5 +371,510 @@
|
||||
T4.ID,
|
||||
T1.bill_date) AS T8
|
||||
${ew.customSqlSegment}
|
||||
=======
|
||||
<include refid="selectRevenueReportPage"/>
|
||||
</select>
|
||||
<!--门诊收入明细,不分页 -->
|
||||
<select id="selectAllRevenueReportPage" resultType="com.openhis.web.reportmanage.dto.ChargeReportPageDto">
|
||||
<include refid="selectRevenueReportPage"/>
|
||||
</select>
|
||||
<select id="selectOrgWorkload" resultType="com.openhis.web.reportmanage.dto.workloadReportDto">
|
||||
SELECT
|
||||
T8.requesting_org_id AS org_id,
|
||||
T3.name AS org_name,
|
||||
T5.type_code AS charge_code,
|
||||
T5.yb_type AS yb_Charge_Code,
|
||||
T8.trade_type AS charge_type,
|
||||
SUM(T8.total_price) AS total_price, -- 退款为负数,汇总自动抵消,保留原有逻辑
|
||||
SUM(T8.system_discount_price) AS system_discount_price_total,
|
||||
SUM(
|
||||
CASE
|
||||
WHEN T5.instance_table = #{medicationTableName} THEN
|
||||
T8.quantity_value * COALESCE(acidd.amount, 0) *
|
||||
CASE
|
||||
WHEN T8.quantity_unit = T13.min_unit_code THEN 1.0 / COALESCE(T13.part_percent, 1)
|
||||
ELSE 1
|
||||
END
|
||||
WHEN T5.instance_table = #{deviceTableName} THEN
|
||||
T8.quantity_value * COALESCE(acidd.amount, 0) *
|
||||
CASE
|
||||
WHEN T8.quantity_unit = T11.min_unit_code THEN 1.0 / COALESCE(T11.part_percent, 1)
|
||||
ELSE 1
|
||||
END
|
||||
ELSE 0
|
||||
END
|
||||
) AS cost_price,
|
||||
SUM(T8.total_price) - SUM(
|
||||
CASE
|
||||
WHEN T5.instance_table IN (#{medicationTableName}, #{deviceTableName}) THEN
|
||||
T8.quantity_value * COALESCE(acidd.amount, 0) *
|
||||
CASE
|
||||
WHEN T5.instance_table = #{medicationTableName} THEN
|
||||
CASE
|
||||
WHEN T8.quantity_unit = T13.min_unit_code THEN 1.0 / COALESCE(T13.part_percent, 1)
|
||||
ELSE 1
|
||||
END
|
||||
ELSE
|
||||
CASE
|
||||
WHEN T8.quantity_unit = T11.min_unit_code THEN 1.0 / COALESCE(T11.part_percent, 1)
|
||||
ELSE 1
|
||||
END
|
||||
END
|
||||
ELSE 0
|
||||
END
|
||||
) AS profit
|
||||
FROM (
|
||||
WITH base_payment AS (
|
||||
SELECT
|
||||
T1.id AS payment_id,
|
||||
T1.tenant_id,
|
||||
T1.status_enum,
|
||||
T1.bill_date,
|
||||
T1.charge_item_ids,
|
||||
NULL AS relation_id,
|
||||
T1.delete_flag
|
||||
FROM fin_payment_reconciliation T1
|
||||
WHERE T1.status_enum = #{success}
|
||||
AND T1.delete_flag = '0'
|
||||
AND T1.tenant_id = #{tenantId}
|
||||
<if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
|
||||
AND T1.bill_date BETWEEN
|
||||
to_timestamp(#{startTime}, 'YYYY-MM-DD HH24:MI:SS')::timestamptz
|
||||
AND
|
||||
to_timestamp(#{endTime}, 'YYYY-MM-DD HH24:MI:SS')::timestamptz
|
||||
</if>
|
||||
UNION ALL
|
||||
SELECT
|
||||
refund.id AS payment_id,
|
||||
refund.tenant_id,
|
||||
refund.status_enum,
|
||||
refund.bill_date,
|
||||
refund.charge_item_ids,
|
||||
refund.relation_id,
|
||||
refund.delete_flag
|
||||
FROM fin_payment_reconciliation refund
|
||||
WHERE refund.status_enum = #{refund}
|
||||
AND refund.delete_flag = '0'
|
||||
AND refund.tenant_id = #{tenantId}
|
||||
<if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
|
||||
AND refund.bill_date BETWEEN
|
||||
to_timestamp(#{startTime}, 'YYYY-MM-DD HH24:MI:SS')::timestamptz
|
||||
AND
|
||||
to_timestamp(#{endTime}, 'YYYY-MM-DD HH24:MI:SS')::timestamptz
|
||||
</if>
|
||||
),
|
||||
payment_charge_item AS (
|
||||
SELECT
|
||||
bp.payment_id,
|
||||
bp.tenant_id,
|
||||
bp.status_enum,
|
||||
bp.bill_date,
|
||||
bp.relation_id,
|
||||
unnest(string_to_array(bp.charge_item_ids, ','))::BIGINT AS charge_item_id
|
||||
FROM base_payment bp
|
||||
WHERE bp.charge_item_ids IS NOT NULL AND bp.charge_item_ids != ''
|
||||
),
|
||||
charge_item_calc AS (
|
||||
SELECT
|
||||
pci.payment_id,
|
||||
pci.tenant_id,
|
||||
pci.status_enum,
|
||||
pci.bill_date,
|
||||
pci.charge_item_id,
|
||||
CASE
|
||||
WHEN pci.status_enum = #{success} THEN 1
|
||||
WHEN pci.status_enum = #{refund} THEN -1
|
||||
ELSE 0
|
||||
END AS calc_flag
|
||||
FROM payment_charge_item pci
|
||||
LEFT JOIN base_payment orig ON pci.relation_id = orig.payment_id
|
||||
),
|
||||
charge_item_detail AS (
|
||||
SELECT
|
||||
cic.tenant_id,
|
||||
ac.id AS charge_id,
|
||||
ac.requesting_org_id,
|
||||
ac.quantity_value,
|
||||
ac.quantity_unit,
|
||||
ac.definition_id,
|
||||
ac.service_id,
|
||||
ac.total_price * cic.calc_flag AS total_price,
|
||||
COALESCE(ac.system_discount_price, ac.total_price) * cic.calc_flag AS system_discount_price,
|
||||
cic.bill_date,
|
||||
CASE WHEN cic.status_enum = #{refund} THEN 2 ELSE 1 END AS trade_type,
|
||||
COALESCE(
|
||||
CASE
|
||||
WHEN acd.instance_table = #{medicationTableName} THEN mmd.lot_number
|
||||
WHEN acd.instance_table = #{deviceTableName} THEN wdd.lot_number
|
||||
ELSE NULL
|
||||
END, ''
|
||||
) AS lot_number
|
||||
FROM charge_item_calc cic
|
||||
LEFT JOIN adm_charge_item ac ON cic.charge_item_id = ac.id AND ac.delete_flag = '0' AND ac.tenant_id =
|
||||
#{tenantId}
|
||||
LEFT JOIN adm_charge_item_definition acd ON ac.definition_id = acd.id AND acd.delete_flag = '0' AND
|
||||
acd.tenant_id = #{tenantId}
|
||||
LEFT JOIN med_medication_request mmr ON ac.service_id = mmr.id AND mmr.delete_flag = '0' AND mmr.tenant_id =
|
||||
#{tenantId}
|
||||
LEFT JOIN med_medication_dispense mmd ON mmd.med_req_id = mmr.id AND mmd.delete_flag = '0' AND mmd.tenant_id =
|
||||
#{tenantId}
|
||||
LEFT JOIN wor_device_request wdr ON ac.service_id = wdr.id AND wdr.delete_flag = '0' AND wdr.tenant_id =
|
||||
#{tenantId}
|
||||
LEFT JOIN wor_device_dispense wdd ON wdd.device_req_id = wdr.id AND wdd.delete_flag = '0' AND wdd.tenant_id =
|
||||
#{tenantId}
|
||||
LEFT JOIN fin_payment_rec_detail paydel ON cic.payment_id = paydel.reconciliation_id AND paydel.tenant_id =
|
||||
#{tenantId}
|
||||
LEFT JOIN adm_account account ON paydel.account_id = account.id AND account.tenant_id = #{tenantId}
|
||||
WHERE ac.id IS NOT NULL
|
||||
),
|
||||
-- 按「charge_id + trade_type」组合维度去重(保留正常/退款各一条)
|
||||
charge_item_distinct AS (
|
||||
SELECT
|
||||
*,
|
||||
-- 分区键:charge_id(收费项) + trade_type(正常/退款),确保不同类型不互相覆盖
|
||||
ROW_NUMBER() OVER (PARTITION BY charge_id, trade_type ORDER BY bill_date DESC) AS rn
|
||||
FROM charge_item_detail
|
||||
)
|
||||
-- 只保留每个「收费项+交易类型」的第一条记录(去重),同时保留正常/退款数据
|
||||
SELECT
|
||||
tenant_id,
|
||||
charge_id,
|
||||
requesting_org_id,
|
||||
quantity_value,
|
||||
quantity_unit,
|
||||
definition_id,
|
||||
service_id,
|
||||
total_price,
|
||||
system_discount_price,
|
||||
trade_type,
|
||||
lot_number
|
||||
FROM charge_item_distinct
|
||||
WHERE rn = 1
|
||||
) AS T8
|
||||
-- 关联成本详情表(保留原有逻辑)
|
||||
LEFT JOIN adm_charge_item_def_detail acidd
|
||||
ON T8.definition_id = acidd.definition_id
|
||||
AND acidd.tenant_id = #{tenantId}
|
||||
AND acidd.id = (
|
||||
SELECT cidd.id
|
||||
FROM adm_charge_item_def_detail cidd
|
||||
WHERE cidd.definition_id = T8.definition_id
|
||||
AND cidd.condition_code = #{conditionCode}
|
||||
AND cidd.delete_flag = '0'
|
||||
AND cidd.tenant_id = #{tenantId}
|
||||
AND (cidd.condition_value = T8.lot_number OR (T8.lot_number = '' AND cidd.condition_value IS NULL))
|
||||
ORDER BY cidd.create_time DESC
|
||||
LIMIT 1
|
||||
)
|
||||
-- 关联机构表(保留原有逻辑)
|
||||
LEFT JOIN adm_organization T3
|
||||
ON T8.requesting_org_id = T3.id
|
||||
AND T3.delete_flag = '0'
|
||||
AND T3.tenant_id = #{tenantId}
|
||||
-- 关联收费项定义表(保留原有逻辑)
|
||||
LEFT JOIN adm_charge_item_definition T5
|
||||
ON T8.definition_id = T5.id
|
||||
AND T5.delete_flag = '0'
|
||||
AND T5.tenant_id = #{tenantId}
|
||||
-- 关联药品定义表(保留原有去重逻辑)
|
||||
LEFT JOIN (
|
||||
SELECT id, min_unit_code, part_percent, tenant_id
|
||||
FROM med_medication_definition
|
||||
WHERE delete_flag = '0'
|
||||
GROUP BY id, min_unit_code, part_percent, tenant_id
|
||||
) T13
|
||||
ON T5.instance_id = T13.id
|
||||
AND T5.instance_table = #{medicationTableName}
|
||||
AND T13.tenant_id = #{tenantId}
|
||||
-- 关联设备定义表(保留原有去重逻辑)
|
||||
LEFT JOIN (
|
||||
SELECT id, min_unit_code, part_percent, tenant_id
|
||||
FROM adm_device_definition
|
||||
WHERE delete_flag = '0'
|
||||
GROUP BY id, min_unit_code, part_percent, tenant_id
|
||||
) T11
|
||||
ON T5.instance_id = T11.id
|
||||
AND T5.instance_table = #{deviceTableName}
|
||||
AND T11.tenant_id = #{tenantId}
|
||||
-- 保留原有分组逻辑(包含trade_type,确保正常/退款分开统计)
|
||||
GROUP BY
|
||||
T8.requesting_org_id,
|
||||
T3.name,
|
||||
T5.yb_type,
|
||||
T5.type_code,
|
||||
T8.trade_type
|
||||
ORDER BY
|
||||
T8.requesting_org_id,
|
||||
T3.name,
|
||||
T5.yb_type,
|
||||
T5.type_code,
|
||||
T8.trade_type;
|
||||
</select>
|
||||
<select id="selectDoctorWorkload" resultType="com.openhis.web.reportmanage.dto.workloadReportDto">
|
||||
SELECT
|
||||
T8.requesting_org_id AS org_id,
|
||||
T3.name AS org_name,
|
||||
T8.enterer_id AS doctor_id,
|
||||
T8.name AS doctor_name,
|
||||
T5.type_code AS charge_code,
|
||||
T5.yb_type AS yb_Charge_Code,
|
||||
T8.trade_type AS charge_type,
|
||||
SUM(T8.total_price) AS total_price,
|
||||
SUM(T8.system_discount_price) AS system_discount_price_total,
|
||||
SUM(
|
||||
CASE
|
||||
WHEN T5.instance_table = #{medicationTableName} THEN
|
||||
T8.quantity_value * COALESCE(acidd.amount, 0) *
|
||||
CASE
|
||||
WHEN T8.quantity_unit = T13.min_unit_code THEN 1.0 / COALESCE(T13.part_percent, 1)
|
||||
ELSE 1
|
||||
END
|
||||
WHEN T5.instance_table = #{deviceTableName} THEN
|
||||
T8.quantity_value * COALESCE(acidd.amount, 0) *
|
||||
CASE
|
||||
WHEN T8.quantity_unit = T11.min_unit_code THEN 1.0 / COALESCE(T11.part_percent, 1)
|
||||
ELSE 1
|
||||
END
|
||||
ELSE 0
|
||||
END
|
||||
) AS cost_price,
|
||||
-- 净收入 = 收入 - 成本(完全保留原有计算逻辑)
|
||||
SUM(T8.total_price) - SUM(
|
||||
CASE
|
||||
WHEN T5.instance_table IN (#{medicationTableName}, #{deviceTableName}) THEN
|
||||
T8.quantity_value * COALESCE(acidd.amount, 0) *
|
||||
CASE
|
||||
WHEN T5.instance_table = #{medicationTableName} THEN
|
||||
CASE
|
||||
WHEN T8.quantity_unit = T13.min_unit_code THEN 1.0 / COALESCE(T13.part_percent, 1)
|
||||
ELSE 1
|
||||
END
|
||||
ELSE
|
||||
CASE
|
||||
WHEN T8.quantity_unit = T11.min_unit_code THEN 1.0 / COALESCE(T11.part_percent, 1)
|
||||
ELSE 1
|
||||
END
|
||||
END
|
||||
ELSE 0
|
||||
END
|
||||
) AS profit
|
||||
FROM (
|
||||
-- 基础支付对账数据(整合正常+退款,和科室SQL完全一致)
|
||||
WITH base_payment AS (
|
||||
SELECT
|
||||
T1.id AS payment_id,
|
||||
T1.tenant_id,
|
||||
T1.status_enum,
|
||||
T1.bill_date,
|
||||
T1.charge_item_ids,
|
||||
NULL AS relation_id,
|
||||
T1.delete_flag
|
||||
FROM fin_payment_reconciliation T1
|
||||
WHERE T1.status_enum = #{success}
|
||||
AND T1.delete_flag = '0'
|
||||
AND T1.tenant_id = #{tenantId}
|
||||
<if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
|
||||
AND T1.bill_date BETWEEN
|
||||
to_timestamp(#{startTime}, 'YYYY-MM-DD HH24:MI:SS')::timestamptz
|
||||
AND
|
||||
to_timestamp(#{endTime}, 'YYYY-MM-DD HH24:MI:SS')::timestamptz
|
||||
</if>
|
||||
UNION ALL
|
||||
SELECT
|
||||
refund.id AS payment_id,
|
||||
refund.tenant_id,
|
||||
refund.status_enum,
|
||||
refund.bill_date,
|
||||
refund.charge_item_ids,
|
||||
refund.relation_id,
|
||||
refund.delete_flag
|
||||
FROM fin_payment_reconciliation refund
|
||||
WHERE refund.status_enum = #{refund}
|
||||
AND refund.delete_flag = '0'
|
||||
AND refund.tenant_id = #{tenantId}
|
||||
<if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
|
||||
AND refund.bill_date BETWEEN
|
||||
to_timestamp(#{startTime}, 'YYYY-MM-DD HH24:MI:SS')::timestamptz
|
||||
AND
|
||||
to_timestamp(#{endTime}, 'YYYY-MM-DD HH24:MI:SS')::timestamptz
|
||||
</if>
|
||||
),
|
||||
-- 拆分charge_item_ids(替代原有LIKE匹配,精准且高效)
|
||||
payment_charge_item AS (
|
||||
SELECT
|
||||
bp.payment_id,
|
||||
bp.tenant_id,
|
||||
bp.status_enum,
|
||||
bp.bill_date,
|
||||
bp.relation_id,
|
||||
unnest(string_to_array(bp.charge_item_ids, ','))::BIGINT AS charge_item_id
|
||||
FROM base_payment bp
|
||||
WHERE bp.charge_item_ids IS NOT NULL AND bp.charge_item_ids != ''
|
||||
),
|
||||
-- 计算calc_flag(正常=1,退款=-1,和科室SQL一致)
|
||||
charge_item_calc AS (
|
||||
SELECT
|
||||
pci.payment_id,
|
||||
pci.tenant_id,
|
||||
pci.status_enum,
|
||||
pci.bill_date,
|
||||
pci.charge_item_id,
|
||||
CASE
|
||||
WHEN pci.status_enum = #{success} THEN 1
|
||||
WHEN pci.status_enum = #{refund} THEN -1
|
||||
ELSE 0
|
||||
END AS calc_flag
|
||||
FROM payment_charge_item pci
|
||||
LEFT JOIN base_payment orig ON pci.relation_id = orig.payment_id
|
||||
),
|
||||
-- 关联收费项+医生信息(核心新增医生维度字段)
|
||||
charge_item_detail AS (
|
||||
SELECT
|
||||
cic.tenant_id,
|
||||
ac.id AS charge_id,
|
||||
ac.requesting_org_id,
|
||||
ac.quantity_value,
|
||||
ac.quantity_unit,
|
||||
ac.definition_id,
|
||||
ac.service_id,
|
||||
-- 金额计算(和科室SQL一致,退款为负数)
|
||||
ac.total_price * cic.calc_flag AS total_price,
|
||||
-- 折后价计算(和科室SQL一致,退款为负数)
|
||||
COALESCE(ac.system_discount_price, ac.total_price) * cic.calc_flag AS system_discount_price,
|
||||
cic.bill_date,
|
||||
-- 交易类型(1=正常,2=退款,和原有逻辑一致)
|
||||
CASE WHEN cic.status_enum = #{refund} THEN 2 ELSE 1 END AS trade_type,
|
||||
-- 医生维度核心字段(新增)
|
||||
ac.enterer_id,
|
||||
ap.name,
|
||||
-- 处理lot_number空值,避免关联异常
|
||||
COALESCE(
|
||||
CASE
|
||||
WHEN acd.instance_table = #{medicationTableName} THEN mmd.lot_number
|
||||
WHEN acd.instance_table = #{deviceTableName} THEN wdd.lot_number
|
||||
ELSE NULL
|
||||
END, ''
|
||||
) AS lot_number
|
||||
FROM charge_item_calc cic
|
||||
-- 关联收费项(精准匹配,替代原有LIKE)
|
||||
LEFT JOIN adm_charge_item ac
|
||||
ON cic.charge_item_id = ac.id
|
||||
AND ac.delete_flag = '0'
|
||||
AND ac.tenant_id = #{tenantId}
|
||||
-- 关联收费项定义(获取instance_table等信息)
|
||||
LEFT JOIN adm_charge_item_definition acd
|
||||
ON ac.definition_id = acd.id
|
||||
AND acd.delete_flag = '0'
|
||||
AND acd.tenant_id = #{tenantId}
|
||||
-- 关联医生信息(核心:医生ID+姓名)
|
||||
LEFT JOIN adm_practitioner ap
|
||||
ON ac.enterer_id = ap.id
|
||||
AND ap.delete_flag = '0'
|
||||
AND ap.tenant_id = #{tenantId}
|
||||
-- 关联药品/设备相关表(保留原有逻辑)
|
||||
LEFT JOIN med_medication_request mmr
|
||||
ON ac.service_id = mmr.id
|
||||
AND mmr.delete_flag = '0'
|
||||
AND mmr.tenant_id = #{tenantId}
|
||||
LEFT JOIN med_medication_dispense mmd
|
||||
ON mmd.med_req_id = mmr.id
|
||||
AND mmd.delete_flag = '0'
|
||||
AND mmd.tenant_id = #{tenantId}
|
||||
LEFT JOIN wor_device_request wdr
|
||||
ON ac.service_id = wdr.id
|
||||
AND wdr.delete_flag = '0'
|
||||
AND wdr.tenant_id = #{tenantId}
|
||||
LEFT JOIN wor_device_dispense wdd
|
||||
ON wdd.device_req_id = wdr.id
|
||||
AND wdd.delete_flag = '0'
|
||||
AND wdd.tenant_id = #{tenantId}
|
||||
WHERE ac.id IS NOT NULL
|
||||
),
|
||||
--核心去重(医生维度:charge_id + enterer_id + trade_type)
|
||||
charge_item_distinct AS (
|
||||
SELECT
|
||||
*,
|
||||
-- 分区键:收费项+医生+交易类型,确保不同医生/不同类型不重复
|
||||
ROW_NUMBER() OVER (PARTITION BY charge_id, enterer_id, trade_type ORDER BY bill_date DESC) AS rn
|
||||
FROM charge_item_detail
|
||||
)
|
||||
SELECT
|
||||
tenant_id,
|
||||
charge_id,
|
||||
requesting_org_id,
|
||||
quantity_value,
|
||||
quantity_unit,
|
||||
definition_id,
|
||||
service_id,
|
||||
total_price,
|
||||
system_discount_price,
|
||||
trade_type,
|
||||
enterer_id,
|
||||
name,
|
||||
lot_number
|
||||
FROM charge_item_distinct
|
||||
WHERE rn = 1
|
||||
) AS T8
|
||||
-- 关联成本详情表(和科室SQL一致,修复lot_number空值匹配)
|
||||
LEFT JOIN adm_charge_item_def_detail acidd
|
||||
ON T8.definition_id = acidd.definition_id
|
||||
AND acidd.tenant_id = #{tenantId}
|
||||
AND acidd.id = (
|
||||
SELECT cidd.id
|
||||
FROM adm_charge_item_def_detail cidd
|
||||
WHERE cidd.definition_id = T8.definition_id
|
||||
AND cidd.condition_code = #{conditionCode}
|
||||
AND cidd.delete_flag = '0'
|
||||
AND cidd.tenant_id = #{tenantId}
|
||||
-- 关键:处理lot_number为空的情况
|
||||
AND (cidd.condition_value = T8.lot_number OR (T8.lot_number = '' AND cidd.condition_value IS NULL))
|
||||
ORDER BY cidd.create_time DESC
|
||||
LIMIT 1
|
||||
)
|
||||
-- 关联机构表(和科室SQL一致)
|
||||
LEFT JOIN adm_organization T3
|
||||
ON T8.requesting_org_id = T3.id
|
||||
AND T3.delete_flag = '0'
|
||||
AND T3.tenant_id = #{tenantId}
|
||||
-- 关联收费项定义表(和科室SQL一致,获取yb_type)
|
||||
LEFT JOIN adm_charge_item_definition T5
|
||||
ON T8.definition_id = T5.id
|
||||
AND T5.delete_flag = '0'
|
||||
AND T5.tenant_id = #{tenantId}
|
||||
-- 关联药品定义表(去重,避免笛卡尔积)
|
||||
LEFT JOIN (
|
||||
SELECT id, min_unit_code, part_percent, tenant_id
|
||||
FROM med_medication_definition
|
||||
WHERE delete_flag = '0'
|
||||
GROUP BY id, min_unit_code, part_percent, tenant_id
|
||||
) T13
|
||||
ON T5.instance_id = T13.id
|
||||
AND T5.instance_table = #{medicationTableName}
|
||||
AND T13.tenant_id = #{tenantId}
|
||||
-- 关联设备定义表(去重,避免笛卡尔积)
|
||||
LEFT JOIN (
|
||||
SELECT id, min_unit_code, part_percent, tenant_id
|
||||
FROM adm_device_definition
|
||||
WHERE delete_flag = '0'
|
||||
GROUP BY id, min_unit_code, part_percent, tenant_id
|
||||
) T11
|
||||
ON T5.instance_id = T11.id
|
||||
AND T5.instance_table = #{deviceTableName}
|
||||
AND T11.tenant_id = #{tenantId}
|
||||
GROUP BY
|
||||
T8.requesting_org_id,
|
||||
T3.name,
|
||||
T8.enterer_id,
|
||||
T8.name,
|
||||
T5.type_code,
|
||||
T5.yb_type,
|
||||
T8.trade_type
|
||||
ORDER BY
|
||||
T8.requesting_org_id,
|
||||
T3.name,
|
||||
T5.yb_type,
|
||||
T5.type_code,
|
||||
T8.trade_type;
|
||||
>>>>>>> v1.3
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -126,4 +126,129 @@
|
||||
${ew.customSqlSegment}
|
||||
ORDER BY T10.supply_bus_no DESC
|
||||
</select>
|
||||
|
||||
<select id="excelInboundReportPage"
|
||||
resultType="com.openhis.web.reportmanage.dto.InboundReportPageDto">
|
||||
SELECT T10.supply_bus_no, --单据号
|
||||
T10.name, --药品名称
|
||||
T10.bus_no, --药品编码
|
||||
T10.lot_number, --批次号
|
||||
T10.purpose_location_id, --目的仓库ID
|
||||
T10.location_name, --仓库名称
|
||||
T10.location_store_name, --货位名称
|
||||
T10.unit_code, --计量单位
|
||||
T10.quantity, --采购数量
|
||||
T10.price, --采购单价
|
||||
T10.total_price AS total_price, --采购金额(总价)
|
||||
T10.sale_price, --售价
|
||||
T10.sale_price * T10.quantity AS total_sale_price, --售价金额(总价)
|
||||
T10.supplier_id, --供应商id
|
||||
T10.supplier, --供应商
|
||||
T10.approver_id, --审核人
|
||||
T10.occurrence_time, --制单日期
|
||||
T10.approval_time, --审核日期
|
||||
T10.tenant_id -- 租户ID
|
||||
FROM (SELECT T1.bus_no AS supply_bus_no, --单据号
|
||||
T2.name, --药品名称
|
||||
T2.bus_no, --药品编码
|
||||
T1.lot_number, --批次号
|
||||
T1.purpose_location_id, -- 目的仓库ID
|
||||
T7.name AS location_name, --仓库名称
|
||||
T8.name AS location_store_name, --货位名称
|
||||
T1.unit_code, --计量单位
|
||||
T1.item_quantity AS quantity, --采购数量
|
||||
T4.amount AS price, --采购单价
|
||||
T1.total_price, --采购金额(总价)
|
||||
T4.amount AS sale_price, --售价
|
||||
T2.part_percent, --拆零比
|
||||
T1.supplier_id, --供应商id
|
||||
T9.name AS supplier, --供应商
|
||||
T1.approver_id, --审核人
|
||||
T1.occurrence_time, --制单日期
|
||||
T1.approval_time, --审核日期
|
||||
T1.tenant_id -- 租户ID
|
||||
FROM wor_supply_request AS T1
|
||||
INNER JOIN wor_supply_delivery AS T14
|
||||
ON T14.request_id = T1.id
|
||||
AND T14.status_enum = #{deliveryStatus}
|
||||
AND T14.delete_flag = '0'
|
||||
LEFT JOIN med_medication_definition AS T2
|
||||
ON T2.id = T1.item_id
|
||||
AND T2.delete_flag = '0'
|
||||
LEFT JOIN adm_charge_item_definition AS T3
|
||||
ON T3.instance_id = T1.item_id
|
||||
AND T3.delete_flag = '0'
|
||||
LEFT JOIN adm_charge_item_def_detail AS T4
|
||||
ON T4.definition_id = T3.id
|
||||
AND T4.delete_flag = '0'
|
||||
AND T4.condition_value = T1.lot_number
|
||||
AND T4.condition_code = '1'--1:批号进价
|
||||
LEFT JOIN med_medication AS T5
|
||||
ON T5.medication_def_id = T2.id
|
||||
AND T5.delete_flag = '0'
|
||||
LEFT JOIN adm_location AS T7
|
||||
ON T7.id = T1.purpose_location_id
|
||||
AND T7.delete_flag = '0'
|
||||
LEFT JOIN adm_location AS T8
|
||||
ON T8.id = T1.purpose_location_store_id
|
||||
AND T8.delete_flag = '0'
|
||||
LEFT JOIN adm_supplier AS T9
|
||||
ON T9.id = T1.supplier_id
|
||||
AND T9.delete_flag = '0'
|
||||
WHERE T1.delete_flag = '0'
|
||||
AND T1.type_enum = #{purchaseInventory}
|
||||
AND T1.status_enum = #{supplyStatus}
|
||||
AND T1.item_table = #{medicationTableName}
|
||||
UNION
|
||||
SELECT T1.bus_no AS supply_bus_no, --单据号
|
||||
T11.name, --器材名称
|
||||
T11.bus_no, --器材编码
|
||||
T1.lot_number, --批次号
|
||||
T1.purpose_location_id, -- 目的仓库ID
|
||||
T7.name AS location_name, --仓库名称
|
||||
T8.name AS location_store_name, --货位名称
|
||||
T1.unit_code, --计量单位
|
||||
T1.item_quantity AS quantity, --采购数量
|
||||
T4.amount AS price, --采购单价
|
||||
T1.total_price, --采购金额(总价)
|
||||
T4.amount AS sale_price, --售价
|
||||
T11.part_percent, --拆零比
|
||||
T1.supplier_id, --供应商id
|
||||
T9.name AS supplier, --供应商
|
||||
T1.approver_id, --审核人
|
||||
T1.occurrence_time, --制单日期
|
||||
T1.approval_time, --审核日期
|
||||
T1.tenant_id -- 租户ID
|
||||
FROM wor_supply_request AS T1
|
||||
INNER JOIN wor_supply_delivery AS T14
|
||||
ON T14.request_id = T1.id
|
||||
AND T14.status_enum = #{deliveryStatus}
|
||||
AND T14.delete_flag = '0'
|
||||
LEFT JOIN adm_device_definition AS T11
|
||||
ON T11.id = T1.item_id
|
||||
AND T11.delete_flag = '0'
|
||||
LEFT JOIN adm_charge_item_definition AS T3
|
||||
ON T3.instance_id = T1.item_id
|
||||
AND T3.delete_flag = '0'
|
||||
LEFT JOIN adm_charge_item_def_detail AS T4
|
||||
ON T4.definition_id = T3.id
|
||||
AND T4.delete_flag = '0'
|
||||
AND T4.condition_value = T1.lot_number
|
||||
AND T4.condition_code = '1'--1:批号进价
|
||||
LEFT JOIN adm_location AS T7
|
||||
ON T7.id = T1.purpose_location_id
|
||||
AND T7.delete_flag = '0'
|
||||
LEFT JOIN adm_location AS T8
|
||||
ON T8.id = T1.purpose_location_store_id
|
||||
AND T8.delete_flag = '0'
|
||||
LEFT JOIN adm_supplier AS T9
|
||||
ON T9.id = T1.supplier_id
|
||||
AND T9.delete_flag = '0'
|
||||
WHERE T1.delete_flag = '0'
|
||||
AND T1.type_enum = #{purchaseInventory}
|
||||
AND T1.status_enum = #{supplyStatus}
|
||||
AND T1.item_table = #{deviceTableName}) AS T10
|
||||
${ew.customSqlSegment}
|
||||
ORDER BY T10.supply_bus_no DESC
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -107,4 +107,110 @@
|
||||
${ew.customSqlSegment}
|
||||
ORDER BY T9.supply_bus_no DESC
|
||||
</select>
|
||||
|
||||
<select id="excelLossReportPage"
|
||||
resultType="com.openhis.web.reportmanage.dto.LossReportPageDto">
|
||||
SELECT T9.bus_no, --编码
|
||||
T9.name, --名称
|
||||
T9.total_volume, --规格
|
||||
T9.manufacturer_text, --厂家
|
||||
T9.lot_number, --产品批号
|
||||
T9.location_name, --目的仓库
|
||||
T9.unit_code, --小单位
|
||||
T9.item_quantity, --数量
|
||||
T9.approval_time, --审批时间
|
||||
T9.supply_bus_no,--单据号
|
||||
T9.purpose_location_id,-- 目的仓库id
|
||||
T9.price,--采购单价
|
||||
T9.location_store_name,--仓库货位
|
||||
T9.total_price,--报损金额
|
||||
T9.name AS supplier,--供应商
|
||||
T9.approver_id, --审核人
|
||||
T9.occurrence_time, --制单日期
|
||||
T9.tenant_id -- 租户ID
|
||||
FROM (SELECT T2.bus_no, --编码
|
||||
T2.name, --名称
|
||||
T3.total_volume, --规格
|
||||
T2.manufacturer_text, --厂家
|
||||
T1.lot_number, --产品批号
|
||||
T5.name AS location_name, --目的仓库
|
||||
T1.unit_code, --单位
|
||||
T1.item_quantity, --数量
|
||||
T1.approval_time, --审批时间
|
||||
T1.bus_no AS supply_bus_no,--单据号
|
||||
T1.purpose_location_id,-- 目的仓库id
|
||||
T1.price,--采购单价
|
||||
T4.name AS location_store_name,--仓库货位
|
||||
T1.total_price,--报损金额
|
||||
T9.name AS supplier,--供应商
|
||||
T1.approver_id, --审核人
|
||||
T1.occurrence_time, --制单日期
|
||||
T1.tenant_id -- 租户ID
|
||||
FROM wor_supply_request AS T1
|
||||
INNER JOIN wor_supply_delivery AS T8
|
||||
ON T8.request_id = T1.id
|
||||
AND T8.status_enum = #{deliveryStatus}
|
||||
AND T8.delete_flag = '0'
|
||||
LEFT JOIN med_medication_definition AS T2
|
||||
ON T1.item_id = T2.id
|
||||
AND T2.delete_flag = '0'
|
||||
LEFT JOIN med_medication AS T3
|
||||
ON T2.id = T3.medication_def_id
|
||||
AND T3.delete_flag = '0'
|
||||
LEFT JOIN adm_location T5
|
||||
ON T1.purpose_location_id = T5.id
|
||||
AND T5.delete_flag = '0'
|
||||
LEFT JOIN adm_location AS T4
|
||||
ON T4.id = T1.purpose_location_store_id
|
||||
AND T4.delete_flag = '0'
|
||||
LEFT JOIN adm_supplier AS T9
|
||||
ON T9.id = T1.supplier_id
|
||||
AND T9.delete_flag = '0'
|
||||
WHERE T1.type_enum = #{lossReport}
|
||||
AND T1.status_enum = #{supplyStatus}
|
||||
AND T1.item_table = #{medicationTableName}
|
||||
AND T1.delete_flag = '0'
|
||||
UNION
|
||||
SELECT T6.bus_no, --编码
|
||||
T6.name, --名称
|
||||
T6.size AS total_volume, --规格(器材规格)
|
||||
T6.manufacturer_text, --厂家
|
||||
T1.lot_number, --产品批号
|
||||
T5.name AS location_name, --目的仓库
|
||||
T1.unit_code, --单位
|
||||
T1.item_quantity, --数量
|
||||
T1.approval_time, --审批时间
|
||||
T1.bus_no AS supply_bus_no,--单据号
|
||||
T1.purpose_location_id,-- 目的仓库id
|
||||
T1.price,--采购单价
|
||||
T4.name AS location_store_name,--仓库货位
|
||||
T1.total_price,--报损金额
|
||||
T9.name AS supplier,--供应商
|
||||
T1.approver_id, --审核人
|
||||
T1.occurrence_time, --制单日期
|
||||
T1.tenant_id -- 租户ID
|
||||
FROM wor_supply_request AS T1
|
||||
INNER JOIN wor_supply_delivery AS T8
|
||||
ON T8.request_id = T1.id
|
||||
AND T8.status_enum = #{deliveryStatus}
|
||||
AND T8.delete_flag = '0'
|
||||
LEFT JOIN adm_device_definition AS T6
|
||||
ON T1.item_id = T6.id
|
||||
AND T6.delete_flag = '0'
|
||||
LEFT JOIN adm_location T5
|
||||
ON T1.purpose_location_id = T5.id
|
||||
AND T5.delete_flag = '0'
|
||||
LEFT JOIN adm_location AS T4
|
||||
ON T4.id = T1.purpose_location_store_id
|
||||
AND T4.delete_flag = '0'
|
||||
LEFT JOIN adm_supplier AS T9
|
||||
ON T9.id = T1.supplier_id
|
||||
AND T9.delete_flag = '0'
|
||||
WHERE T1.type_enum = #{lossReport}
|
||||
AND T1.status_enum = #{supplyStatus}
|
||||
AND T1.item_table = #{deviceTableName}
|
||||
AND T1.delete_flag = '0') AS T9
|
||||
${ew.customSqlSegment}
|
||||
ORDER BY T9.supply_bus_no DESC
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
<?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.reportmanage.mapper.MedicationInboundReportMapper">
|
||||
|
||||
<select id="getMedicationInboundPage" resultType="com.openhis.web.reportmanage.dto.MedicationInboundReportDto">
|
||||
SELECT ii.medication_id, --药品id
|
||||
ii.NAME, --药品名称
|
||||
ii.py_str, --拼音码
|
||||
ii.wb_str, --五笔码
|
||||
ii.yb_no, --医保编码
|
||||
ii.bus_no, --药品编号
|
||||
ii.total_price, --总价
|
||||
ii.item_quantity, --数量
|
||||
ii.unit_code, --单位
|
||||
ii.min_unit_code, --最小单位
|
||||
ii.part_percent, --拆零比
|
||||
ii.occurrence_time --发放时间
|
||||
FROM (SELECT T1.tenant_id,
|
||||
T3.ID AS medication_id,
|
||||
T3.NAME,
|
||||
T3.py_str,
|
||||
T3.wb_str,
|
||||
T3.yb_no,
|
||||
T3.bus_no,
|
||||
T1.total_price,
|
||||
T1.item_quantity,
|
||||
T1.unit_code,
|
||||
T3.min_unit_code,
|
||||
T3.part_percent,
|
||||
T2.occurrence_time
|
||||
FROM wor_supply_request T1
|
||||
LEFT JOIN wor_supply_delivery AS T2 ON T2.request_id = T1.ID
|
||||
AND T2.delete_flag = '0'
|
||||
LEFT JOIN med_medication_definition AS T3 ON T2.item_id = T3.ID
|
||||
AND T3.delete_flag = '0'
|
||||
LEFT JOIN med_medication AS T4 ON T3.ID = T4.medication_def_id
|
||||
AND T4.delete_flag = '0'
|
||||
WHERE T1.delete_flag = '0'
|
||||
AND T1.status_enum = #{requestStatus}
|
||||
AND T2.status_enum = #{dispenseStatus}
|
||||
AND T1.type_enum = #{typeStatus}
|
||||
AND T1.item_table = #{medMedicationDefinition}) AS ii
|
||||
${ew.customSqlSegment}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -131,4 +131,134 @@
|
||||
${ew.customSqlSegment}
|
||||
ORDER BY T10.supply_bus_no DESC
|
||||
</select>
|
||||
|
||||
<select id="excelOutboundReportPage"
|
||||
resultType="com.openhis.web.reportmanage.dto.OutboundReportPageDto">
|
||||
select T10.supply_bus_no, --单据号
|
||||
T10.name, --药品名称
|
||||
T10.bus_no, --编码
|
||||
T10.lot_number, --批号
|
||||
T10.source_location_id, -- 源仓库ID(存放仓库)
|
||||
T10.source_location_name, -- 源仓库(存放仓库)
|
||||
T10.source_location_store_id, -- 源仓位ID
|
||||
T10.source_location_store_name, -- 源仓位
|
||||
T10.purpose_location_id, -- 目的仓库ID(领用科室)
|
||||
T10.purpose_location_name, -- 目的仓库(领用科室)
|
||||
T10.unit_code, --计量单位
|
||||
T10.item_quantity, --数量
|
||||
T10.purchase_price, --采购单价
|
||||
T10.price, --领用单价
|
||||
T10.total_price, --金额
|
||||
T10.supplier_id, --供应商
|
||||
T10.approver_id, --审核人
|
||||
T10.approval_time, --审批时间
|
||||
T10.occurrence_time, --制单日期
|
||||
T10.remake, --出库原因
|
||||
T10.tenant_id -- 租户ID
|
||||
from (
|
||||
select T1.bus_no as supply_bus_no, --单据号
|
||||
T3.name, --药品名称
|
||||
T3.bus_no, --编码
|
||||
T1.lot_number, --批号
|
||||
T1.source_location_id, -- 源仓库ID
|
||||
T4.name AS source_location_name, -- 源仓库
|
||||
T1.source_location_store_id, -- 源仓位ID
|
||||
T5.name AS source_location_store_name, -- 源仓位
|
||||
T1.purpose_location_id, -- 目的仓库ID
|
||||
T8.name AS purpose_location_name, -- 目的仓库(领用科室)
|
||||
T1.unit_code, --计量单位
|
||||
T1.item_quantity, --数量
|
||||
T7.amount as purchase_price, --采购单价
|
||||
T1.price, --领用单价
|
||||
T1.total_price, --金额
|
||||
T1.supplier_id, --供应商
|
||||
T1.approver_id, --审核人
|
||||
T1.approval_time, --审批时间
|
||||
T1.occurrence_time, --制单日期
|
||||
T1.remake, --出库原因(备注)
|
||||
T1.tenant_id -- 租户ID
|
||||
from wor_supply_request as T1
|
||||
inner join wor_supply_delivery as T2
|
||||
on T1.id = T2.request_id
|
||||
and T2.status_enum = #{deliveryStatus}
|
||||
and T2.delete_flag = '0'
|
||||
left join med_medication_definition as T3
|
||||
on T1.item_id = T3.id
|
||||
and T3.delete_flag = '0'
|
||||
left join adm_location T4
|
||||
on T1.source_location_id = T4.id
|
||||
and T4.delete_flag = '0'
|
||||
left join adm_location T5
|
||||
on T1.source_location_store_id = T5.id
|
||||
and T5.delete_flag = '0'
|
||||
left join adm_charge_item_definition as T6
|
||||
on T3.id = T6.instance_id
|
||||
and T6.delete_flag = '0'
|
||||
left join adm_charge_item_def_detail as T7
|
||||
on T6.id = T7.definition_id
|
||||
and T7.delete_flag = '0'
|
||||
AND T7.condition_value = T1.lot_number
|
||||
AND T7.condition_code = '1'--1:批号进价
|
||||
left join adm_organization T8
|
||||
on T1.purpose_location_id = T8.id
|
||||
and T8.delete_flag = '0'
|
||||
where T1.delete_flag = '0'
|
||||
and T1.type_enum = #{issueInventory}
|
||||
and T1.status_enum = #{supplyStatus}
|
||||
and T1.item_table = #{medicationTableName}
|
||||
union
|
||||
select T1.bus_no as supply_bus_no, --单据号
|
||||
T3.name, --药品名称
|
||||
T3.bus_no, --编码
|
||||
T1.lot_number, --批号
|
||||
T1.source_location_id, -- 源仓库ID
|
||||
T4.name AS source_location_name, -- 源仓库
|
||||
T1.source_location_store_id, -- 源仓位ID
|
||||
T5.name AS source_location_store_name, -- 源仓位
|
||||
T1.purpose_location_id, -- 目的仓库ID
|
||||
T8.name AS purpose_location_name, -- 目的仓库(领用科室)
|
||||
T1.unit_code, --计量单位
|
||||
T1.item_quantity, --数量
|
||||
T7.amount as purchase_price, --采购单价
|
||||
T1.price, --领用单价
|
||||
T1.total_price, --金额
|
||||
T1.supplier_id, --供应商
|
||||
T1.approver_id, --审核人
|
||||
T1.approval_time, --审批时间
|
||||
T1.occurrence_time, --制单日期
|
||||
T1.remake, --出库原因
|
||||
T1.tenant_id -- 租户ID
|
||||
from wor_supply_request as T1
|
||||
inner join wor_supply_delivery as T2
|
||||
on T1.id = T2.request_id
|
||||
and T2.status_enum = #{deliveryStatus}
|
||||
and T2.delete_flag = '0'
|
||||
inner join adm_device_definition as T3
|
||||
on T1.item_id = T3.id
|
||||
and T3.delete_flag = '0'
|
||||
left join adm_location T4
|
||||
on T1.source_location_id = T4.id
|
||||
and T4.delete_flag = '0'
|
||||
left join adm_location T5
|
||||
on T1.source_location_store_id = T5.id
|
||||
and T5.delete_flag = '0'
|
||||
left join adm_charge_item_definition as T6
|
||||
on T3.id = T6.instance_id
|
||||
and T6.delete_flag = '0'
|
||||
left join adm_charge_item_def_detail as T7
|
||||
on T6.id = T7.definition_id
|
||||
and T7.delete_flag = '0'
|
||||
AND T7.condition_value = T1.lot_number
|
||||
AND T7.condition_code = '1'--1:批号进价
|
||||
left join adm_organization T8
|
||||
on T1.purpose_location_id = T8.id
|
||||
and T8.delete_flag = '0'
|
||||
where T1.delete_flag = '0'
|
||||
and T1.type_enum = #{issueInventory}
|
||||
and T1.status_enum = #{supplyStatus}
|
||||
and T1.item_table = #{deviceTableName}
|
||||
) as T10
|
||||
${ew.customSqlSegment}
|
||||
ORDER BY T10.supply_bus_no DESC
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -0,0 +1,191 @@
|
||||
<?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.reportmanage.mapper.ReportMapper">
|
||||
<!--患者明细报表-->
|
||||
<select id="selectPatientDetailsPage"
|
||||
resultType="com.openhis.web.reportmanage.dto.ReportPatientDetailsDto">
|
||||
SELECT T6.tenant_id,
|
||||
T6.encounter_bus_no,
|
||||
T6.med_name,
|
||||
T6.med_yb_no,
|
||||
T6.category_code,
|
||||
T6.dose_form_code,
|
||||
T6.total_volume,
|
||||
T6.package_unit,
|
||||
T6.unit_code,
|
||||
T6.is_selected,
|
||||
T6.manufacturer_text,
|
||||
T6.price,
|
||||
T6.quantity,
|
||||
T6.total_price
|
||||
FROM (SELECT T1.tenant_id,
|
||||
T2.bus_no AS encounter_bus_no,--门诊住院号
|
||||
T4.name AS med_name,--药品通用名
|
||||
T4.yb_no AS med_yb_no,--药品医保编码
|
||||
T4.category_code AS category_code,--药品类别
|
||||
T5.dose_form_code AS dose_form_code,--剂型
|
||||
T5.total_volume AS total_volume,--规格
|
||||
T4.unit_code AS package_unit,--包装
|
||||
T1.quantity_unit AS unit_code,--计价单位
|
||||
'' AS is_selected,--是否中选产品
|
||||
T4.manufacturer_text AS manufacturer_text,--生产企业
|
||||
T1.unit_price AS price,--单价(元)
|
||||
T1.quantity_value AS quantity,--使用数量(片袋支)
|
||||
T1.total_price AS total_price--使用总金额(元)
|
||||
FROM adm_charge_item T1
|
||||
LEFT JOIN adm_encounter T2 ON T1.encounter_id = T2.id
|
||||
AND T2.delete_flag = '0'
|
||||
LEFT JOIN med_medication_request T3 ON T1.service_id = T3.id
|
||||
AND T3.delete_flag = '0'
|
||||
LEFT JOIN med_medication_definition T4 ON T3.medication_id = T4.id
|
||||
AND T4.delete_flag = '0'
|
||||
LEFT JOIN med_medication T5 ON T4.id = T5.medication_def_id
|
||||
AND T5.delete_flag = '0'
|
||||
WHERE T1.service_table = #{medicationTableName}
|
||||
AND T1.delete_flag = '0'
|
||||
) AS T6
|
||||
${ew.customSqlSegment}
|
||||
</select>
|
||||
<select id="selectMedicationInboundDetailsPage"
|
||||
resultType="com.openhis.web.reportmanage.dto.ReportMedicationInboundDetailsDto">
|
||||
SELECT T2.med_name AS product_name,
|
||||
T2.unit_label,
|
||||
T2.min_unit_label AS min_unit,
|
||||
T2.item_quantity,
|
||||
T2.total_quantity,
|
||||
T2.part_percent
|
||||
FROM (SELECT T1.bus_no,
|
||||
T4.NAME AS med_name,
|
||||
T1.item_quantity,
|
||||
T1.total_quantity,
|
||||
sdd.dict_label AS unit_label,
|
||||
sdd1.dict_label AS min_unit_label,
|
||||
T4.part_percent
|
||||
FROM wor_supply_request AS T1
|
||||
LEFT JOIN med_medication_definition T4 ON T1.item_id = T4.ID
|
||||
AND T4.delete_flag = '0'
|
||||
LEFT JOIN sys_dict_data sdd ON sdd.dict_value = T4.unit_code
|
||||
AND sdd.dict_type = 'unit_code'
|
||||
LEFT JOIN sys_dict_data sdd1 ON sdd1.dict_value = T4.min_unit_code
|
||||
AND sdd1.dict_type = 'unit_code'
|
||||
WHERE T1.type_enum IN (#{transferCode}, #{batchTransferCode})
|
||||
AND T1.source_location_id = #{sourceLocationId}
|
||||
AND T1.purpose_location_id = #{purposeLocationId}
|
||||
AND T1.occurrence_time BETWEEN #{startTime} AND #{endTime}
|
||||
GROUP BY T1.bus_no,
|
||||
T4.NAME,
|
||||
T1.item_quantity,
|
||||
T1.total_quantity,
|
||||
sdd.dict_label,
|
||||
sdd1.dict_label,
|
||||
T4.part_percent,
|
||||
T4.unit_code,
|
||||
T4.min_unit_code
|
||||
ORDER BY T1.bus_no DESC) AS T2
|
||||
</select>
|
||||
|
||||
<!--患者明细主表做成-->
|
||||
<select id="selectPatientMasterDetailPage"
|
||||
resultType="com.openhis.web.reportmanage.dto.ReportPatientMasterDetailDto">
|
||||
SELECT T7.tenant_id,
|
||||
T7.encounter_bus_no,
|
||||
T7.patient_name,
|
||||
T7.id_card,
|
||||
T7.psn_no,--人员编码
|
||||
T7.insu_plc_no,--参保地区编码
|
||||
T7.yb_type,
|
||||
T7.encounter_start_time,
|
||||
T7.encounter_end_time,
|
||||
T7.issue_time,--处方日期
|
||||
T7.out_diagnose_name,--出院诊断
|
||||
T7.fee_amount,
|
||||
T7.inscp_scp_amt,--政策范围内
|
||||
T7.tc_pay_amount--基本医保统筹支付金额(元)
|
||||
FROM (SELECT T1.tenant_id,
|
||||
T2.bus_no AS encounter_bus_no,
|
||||
T3.name AS patient_name,
|
||||
T3.id_card AS id_card,
|
||||
'' AS psn_no,--人员编码
|
||||
'' AS insu_plc_no,--参保地区编码
|
||||
T5.contract_name AS yb_type,--参保类型
|
||||
T2.start_time AS encounter_start_time,
|
||||
T2.end_time AS encounter_end_time,
|
||||
MAX(T6.issue_time ) AS issue_time,--处方日期
|
||||
'' AS out_diagnose_name,--出院诊断
|
||||
SUM(T1.total_price) AS fee_amount,--总费用(元)
|
||||
NULL AS inscp_scp_amt,--政策范围内
|
||||
NULL AS tc_pay_amount--基本医保统筹支付金额(元)
|
||||
FROM adm_charge_item T1
|
||||
LEFT JOIN adm_encounter T2 ON T1.encounter_id = T2.id
|
||||
AND T2.delete_flag = '0'
|
||||
LEFT JOIN adm_patient T3 ON T1.patient_id = T3.id
|
||||
AND T3.delete_flag = '0'
|
||||
LEFT JOIN adm_account T4 ON T1.encounter_id = T4.encounter_id
|
||||
AND T4.delete_flag = '0'
|
||||
LEFT JOIN fin_contract T5 ON T4.contract_no = T5.bus_no
|
||||
AND T5.delete_flag = '0'
|
||||
LEFT JOIN elep_medication_request T6 ON T1.prescription_no = T6.prescription_no
|
||||
AND T6.delete_flag = '0'
|
||||
WHERE T2.class_enum = #{encounterClass}--住院
|
||||
AND T1.delete_flag = '0'
|
||||
GROUP BY
|
||||
T1.tenant_id,
|
||||
T2.bus_no,
|
||||
T3.name,
|
||||
T3.id_card,
|
||||
T2.start_time,
|
||||
T2.end_time,
|
||||
T5.contract_name
|
||||
) AS T7
|
||||
${ew.customSqlSegment}
|
||||
</select>
|
||||
<select id="selectMedicationUsagePage"
|
||||
resultType="com.openhis.web.reportmanage.dto.ReportMedicationUsageDto">
|
||||
SELECT
|
||||
mmde.yb_no AS national_drugCode,
|
||||
md.medication_def_id AS bus_no,
|
||||
mmde.name AS item_name,
|
||||
SUM(aci.total_price) AS total_sales_price,
|
||||
SUM(CASE
|
||||
WHEN mmdi.unit_code = mmde.min_unit_code THEN mmdi.dispense_quantity
|
||||
WHEN mmdi.unit_code = mmde.unit_code THEN mmdi.dispense_quantity * mmde.part_percent
|
||||
ELSE 0
|
||||
END) AS package_sales_quantity,
|
||||
SUM(CASE
|
||||
WHEN mmdi.unit_code = mmde.unit_code THEN mmdi.dispense_quantity
|
||||
WHEN mmdi.unit_code = mmde.min_unit_code THEN mmdi.dispense_quantity / mmde.part_percent
|
||||
ELSE 0
|
||||
END) AS dosage_sales_quantity,
|
||||
mmde.min_unit_code AS unit_code,
|
||||
md.tenant_id
|
||||
FROM med_medication md
|
||||
INNER JOIN med_medication_definition mmde
|
||||
ON md.medication_def_id = mmde.id
|
||||
AND mmde.delete_flag = '0'
|
||||
INNER JOIN med_medication_dispense mmdi
|
||||
ON md.medication_def_id = mmdi.medication_id
|
||||
AND mmdi.status_enum = #{dispenseStatus}
|
||||
AND mmdi.delete_flag = '0'
|
||||
LEFT JOIN adm_charge_item aci
|
||||
ON mmdi.encounter_id = aci.encounter_id
|
||||
AND product_table = 'med_medication_definition'
|
||||
AND aci.delete_flag = '0'
|
||||
WHERE
|
||||
md.delete_flag = '0'
|
||||
<if test="searchKey != null">
|
||||
AND mmde.name LIKE CONCAT('%', #{searchKey}, '%')
|
||||
</if>
|
||||
<if test="startTime != null">
|
||||
AND mmdi.dispense_time >= CAST(#{startTime} AS timestamp with time zone)
|
||||
</if>
|
||||
<if test="endTime != null">
|
||||
AND mmdi.dispense_time >= CAST(#{endTime} AS timestamp with time zone)
|
||||
</if>
|
||||
GROUP BY
|
||||
mmde.yb_no,
|
||||
md.medication_def_id,
|
||||
mmde.name,
|
||||
mmde.min_unit_code,
|
||||
md.tenant_id
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -4,52 +4,52 @@
|
||||
|
||||
<select id="selectStocktakingReportPage"
|
||||
resultType="com.openhis.web.reportmanage.dto.StocktakingReportPageDto">
|
||||
SELECT T9.id, --ID
|
||||
T9.bus_no, --编码
|
||||
T9.name, --名称
|
||||
T9.total_volume, --规格
|
||||
T9.manufacturer_text, --厂家
|
||||
T9.lot_number, --产品批号
|
||||
T9.location_name, --目的仓库
|
||||
T9.unit_code, --小单位
|
||||
T9.item_quantity, --数量
|
||||
T9.approval_time, --审批时间
|
||||
SELECT T9.id, --ID
|
||||
T9.bus_no, --编码
|
||||
T9.name, --名称
|
||||
T9.total_volume, --规格
|
||||
T9.manufacturer_text, --厂家
|
||||
T9.lot_number, --产品批号
|
||||
T9.location_name, --目的仓库
|
||||
T9.unit_code, --小单位
|
||||
T9.item_quantity, --数量
|
||||
T9.approval_time, --审批时间
|
||||
T9.supply_bus_no,--单据号
|
||||
T9.purpose_location_id,-- 目的仓库id
|
||||
T9.price,--采购单价
|
||||
T9.location_store_name,--仓库货位
|
||||
T9.total_price,--报损金额
|
||||
T9.name AS supplier,--供应商
|
||||
T9.approver_id, --审核人
|
||||
T9.occurrence_time, --制单日期
|
||||
T9.tenant_id -- 租户ID
|
||||
FROM (SELECT T1.id, --ID
|
||||
T2.bus_no, --编码
|
||||
T2.name, --名称
|
||||
T3.total_volume, --规格
|
||||
T2.manufacturer_text, --厂家
|
||||
T1.lot_number, --产品批号
|
||||
T5.name AS location_name, --目的仓库
|
||||
T1.unit_code, --小单位
|
||||
T1.item_quantity, --盈亏数量
|
||||
T9.profit_loss_price,
|
||||
T9.name AS supplier,--供应商
|
||||
T9.approver_id, --审核人
|
||||
T9.occurrence_time, --制单日期
|
||||
T9.tenant_id -- 租户ID
|
||||
FROM (SELECT T1.id, --ID
|
||||
T2.bus_no, --编码
|
||||
T2.name, --名称
|
||||
T3.total_volume, --规格
|
||||
T2.manufacturer_text, --厂家
|
||||
T1.lot_number, --产品批号
|
||||
T5.name AS location_name, --目的仓库
|
||||
T1.unit_code, --小单位
|
||||
T1.item_quantity, --盈亏数量
|
||||
T1.approval_time, --审批时间
|
||||
T1.bus_no AS supply_bus_no,--单据号
|
||||
T1.bus_no AS supply_bus_no,--单据号
|
||||
T1.purpose_location_id,-- 目的仓库id
|
||||
T1.price,--采购单价
|
||||
T4.name AS location_store_name,--仓库货位
|
||||
T1.total_price,--报损金额
|
||||
T9.name AS supplier,--供应商
|
||||
T1.approver_id, --审核人
|
||||
T1.occurrence_time, --制单日期
|
||||
T1.tenant_id -- 租户ID
|
||||
T4.name AS location_store_name,--仓库货位
|
||||
T1.profit_loss_price,
|
||||
T9.name AS supplier,--供应商
|
||||
T1.approver_id, --审核人
|
||||
T1.occurrence_time, --制单日期
|
||||
T1.tenant_id -- 租户ID
|
||||
FROM wor_supply_request AS T1
|
||||
INNER JOIN wor_supply_delivery AS T8
|
||||
ON T8.request_id = T1.id
|
||||
AND T8.status_enum = #{deliveryStatus}
|
||||
AND T8.delete_flag = '0'
|
||||
LEFT JOIN med_medication_definition AS T2
|
||||
ON T1.item_id = T2.id
|
||||
AND T2.delete_flag = '0'
|
||||
ON T1.item_id = T2.id
|
||||
AND T2.delete_flag = '0'
|
||||
LEFT JOIN med_medication AS T3
|
||||
ON T2.id = T3.medication_def_id
|
||||
AND T3.delete_flag = '0'
|
||||
@@ -67,33 +67,33 @@
|
||||
AND T1.item_table = #{medicationTableName}
|
||||
AND T1.delete_flag = '0'
|
||||
UNION
|
||||
SELECT T1.id, --ID
|
||||
T6.bus_no, --编码
|
||||
T6.name, --名称
|
||||
T6.size AS total_volume, --规格(器材规格)
|
||||
T6.manufacturer_text, --厂家
|
||||
T1.lot_number, --产品批号
|
||||
T5.name AS location_name, --目的仓库
|
||||
T1.unit_code, --小单位
|
||||
T1.item_quantity, --盈亏数量
|
||||
T1.approval_time, --审批时间
|
||||
T1.bus_no AS supply_bus_no,--单据号
|
||||
SELECT T1.id, --ID
|
||||
T6.bus_no, --编码
|
||||
T6.name, --名称
|
||||
T6.size AS total_volume, --规格(器材规格)
|
||||
T6.manufacturer_text, --厂家
|
||||
T1.lot_number, --产品批号
|
||||
T5.name AS location_name, --目的仓库
|
||||
T1.unit_code, --小单位
|
||||
T1.item_quantity, --盈亏数量
|
||||
T1.approval_time, --审批时间
|
||||
T1.bus_no AS supply_bus_no,--单据号
|
||||
T1.purpose_location_id,-- 目的仓库id
|
||||
T1.price,--采购单价
|
||||
T4.name AS location_store_name,--仓库货位
|
||||
T1.total_price,--报损金额
|
||||
T9.name AS supplier,--供应商
|
||||
T1.approver_id, --审核人
|
||||
T1.occurrence_time, --制单日期
|
||||
T1.tenant_id -- 租户ID
|
||||
T4.name AS location_store_name,--仓库货位
|
||||
T1.profit_loss_price,
|
||||
T9.name AS supplier,--供应商
|
||||
T1.approver_id, --审核人
|
||||
T1.occurrence_time, --制单日期
|
||||
T1.tenant_id -- 租户ID
|
||||
FROM wor_supply_request AS T1
|
||||
INNER JOIN wor_supply_delivery AS T8
|
||||
ON T8.request_id = T1.id
|
||||
AND T8.status_enum = #{deliveryStatus}
|
||||
AND T8.delete_flag = '0'
|
||||
LEFT JOIN adm_device_definition AS T6
|
||||
ON T1.item_id = T6.id
|
||||
AND T6.delete_flag = '0'
|
||||
ON T1.item_id = T6.id
|
||||
AND T6.delete_flag = '0'
|
||||
LEFT JOIN adm_location T5
|
||||
ON T1.purpose_location_id = T5.id
|
||||
AND T5.delete_flag = '0'
|
||||
@@ -113,44 +113,44 @@
|
||||
|
||||
<select id="selectAutoStocktakingReportPage"
|
||||
resultType="com.openhis.web.reportmanage.dto.StocktakingReportPageDto">
|
||||
SELECT T9.id, --ID
|
||||
T9.bus_no, --编码
|
||||
T9.name, --名称
|
||||
T9.total_volume, --规格
|
||||
T9.manufacturer_text, --厂家
|
||||
T9.lot_number, --产品批号
|
||||
T9.location_name, --目的仓库
|
||||
T9.unit_code, --小单位
|
||||
T9.item_quantity, --数量
|
||||
T9.approval_time, --审批时间
|
||||
SELECT T9.id, --ID
|
||||
T9.bus_no, --编码
|
||||
T9.name, --名称
|
||||
T9.total_volume, --规格
|
||||
T9.manufacturer_text, --厂家
|
||||
T9.lot_number, --产品批号
|
||||
T9.location_name, --目的仓库
|
||||
T9.unit_code, --小单位
|
||||
T9.item_quantity, --数量
|
||||
T9.approval_time, --审批时间
|
||||
T9.supply_bus_no,--单据号
|
||||
T9.purpose_location_id,-- 目的仓库id
|
||||
T9.price,--采购单价
|
||||
T9.location_store_name,--仓库货位
|
||||
T9.total_price,--报损金额
|
||||
T9.name AS supplier,--供应商
|
||||
T9.approver_id, --审核人
|
||||
T9.occurrence_time, --制单日期
|
||||
T9.tenant_id -- 租户ID
|
||||
FROM (SELECT T1.id, --ID
|
||||
T2.bus_no, --编码
|
||||
T2.name, --名称
|
||||
T3.total_volume, --规格
|
||||
T2.manufacturer_text, --厂家
|
||||
T1.lot_number, --产品批号
|
||||
T5.name AS location_name, --目的仓库
|
||||
T1.unit_code, --小单位
|
||||
T1.item_quantity, --盈亏数量
|
||||
T9.name AS supplier,--供应商
|
||||
T9.approver_id, --审核人
|
||||
T9.occurrence_time, --制单日期
|
||||
T9.tenant_id -- 租户ID
|
||||
FROM (SELECT T1.id, --ID
|
||||
T2.bus_no, --编码
|
||||
T2.name, --名称
|
||||
T3.total_volume, --规格
|
||||
T2.manufacturer_text, --厂家
|
||||
T1.lot_number, --产品批号
|
||||
T5.name AS location_name, --目的仓库
|
||||
T1.unit_code, --小单位
|
||||
T1.item_quantity, --盈亏数量
|
||||
T1.approval_time, --审批时间
|
||||
T1.bus_no AS supply_bus_no,--单据号
|
||||
T1.bus_no AS supply_bus_no,--单据号
|
||||
T1.purpose_location_id,-- 目的仓库id
|
||||
T1.price,--采购单价
|
||||
T4.name AS location_store_name,--仓库货位
|
||||
T4.name AS location_store_name,--仓库货位
|
||||
T1.total_price,--报损金额
|
||||
T9.name AS supplier,--供应商
|
||||
T1.approver_id, --审核人
|
||||
T1.occurrence_time, --制单日期
|
||||
T1.tenant_id -- 租户ID
|
||||
T9.name AS supplier,--供应商
|
||||
T1.approver_id, --审核人
|
||||
T1.occurrence_time, --制单日期
|
||||
T1.tenant_id -- 租户ID
|
||||
FROM wor_aut_supply_request AS T1
|
||||
LEFT JOIN med_medication_definition AS T2
|
||||
ON T1.item_id = T2.id
|
||||
@@ -173,25 +173,25 @@
|
||||
AND T1.delete_flag = '0'
|
||||
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') = #{time}
|
||||
UNION
|
||||
SELECT T1.id, --ID
|
||||
T6.bus_no, --编码
|
||||
T6.name, --名称
|
||||
T6.size AS total_volume, --规格(器材规格)
|
||||
T6.manufacturer_text, --厂家
|
||||
T1.lot_number, --产品批号
|
||||
T5.name AS location_name, --目的仓库
|
||||
T1.unit_code, --小单位
|
||||
T1.item_quantity, --盈亏数量
|
||||
T1.approval_time, --审批时间
|
||||
T1.bus_no AS supply_bus_no,--单据号
|
||||
SELECT T1.id, --ID
|
||||
T6.bus_no, --编码
|
||||
T6.name, --名称
|
||||
T6.size AS total_volume, --规格(器材规格)
|
||||
T6.manufacturer_text, --厂家
|
||||
T1.lot_number, --产品批号
|
||||
T5.name AS location_name, --目的仓库
|
||||
T1.unit_code, --小单位
|
||||
T1.item_quantity, --盈亏数量
|
||||
T1.approval_time, --审批时间
|
||||
T1.bus_no AS supply_bus_no,--单据号
|
||||
T1.purpose_location_id,-- 目的仓库id
|
||||
T1.price,--采购单价
|
||||
T4.name AS location_store_name,--仓库货位
|
||||
T4.name AS location_store_name,--仓库货位
|
||||
T1.total_price,--报损金额
|
||||
T9.name AS supplier,--供应商
|
||||
T1.approver_id, --审核人
|
||||
T1.occurrence_time, --制单日期
|
||||
T1.tenant_id -- 租户ID
|
||||
T9.name AS supplier,--供应商
|
||||
T1.approver_id, --审核人
|
||||
T1.occurrence_time, --制单日期
|
||||
T1.tenant_id -- 租户ID
|
||||
FROM wor_aut_supply_request AS T1
|
||||
LEFT JOIN adm_device_definition AS T6
|
||||
ON T1.item_id = T6.id
|
||||
@@ -212,4 +212,113 @@
|
||||
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') = #{time}) AS T9
|
||||
ORDER BY T9.supply_bus_no DESC
|
||||
</select>
|
||||
|
||||
<select id="excelStocktakingReportPage"
|
||||
resultType="com.openhis.web.reportmanage.dto.StocktakingReportPageDto">
|
||||
SELECT T9.id, --ID
|
||||
T9.bus_no, --编码
|
||||
T9.name, --名称
|
||||
T9.total_volume, --规格
|
||||
T9.manufacturer_text, --厂家
|
||||
T9.lot_number, --产品批号
|
||||
T9.location_name, --目的仓库
|
||||
T9.unit_code, --小单位
|
||||
T9.item_quantity, --数量
|
||||
T9.approval_time, --审批时间
|
||||
T9.supply_bus_no,--单据号
|
||||
T9.purpose_location_id,-- 目的仓库id
|
||||
T9.price,--采购单价
|
||||
T9.location_store_name,--仓库货位
|
||||
T9.profit_loss_price,
|
||||
T9.name AS supplier,--供应商
|
||||
T9.approver_id, --审核人
|
||||
T9.occurrence_time, --制单日期
|
||||
T9.tenant_id -- 租户ID
|
||||
FROM (SELECT T1.id, --ID
|
||||
T2.bus_no, --编码
|
||||
T2.name, --名称
|
||||
T3.total_volume, --规格
|
||||
T2.manufacturer_text, --厂家
|
||||
T1.lot_number, --产品批号
|
||||
T5.name AS location_name, --目的仓库
|
||||
T1.unit_code, --小单位
|
||||
T1.item_quantity, --盈亏数量
|
||||
T1.approval_time, --审批时间
|
||||
T1.bus_no AS supply_bus_no,--单据号
|
||||
T1.purpose_location_id,-- 目的仓库id
|
||||
T1.price,--采购单价
|
||||
T4.name AS location_store_name,--仓库货位
|
||||
T1.profit_loss_price,
|
||||
T9.name AS supplier,--供应商
|
||||
T1.approver_id, --审核人
|
||||
T1.occurrence_time, --制单日期
|
||||
T1.tenant_id -- 租户ID
|
||||
FROM wor_supply_request AS T1
|
||||
INNER JOIN wor_supply_delivery AS T8
|
||||
ON T8.request_id = T1.id
|
||||
AND T8.status_enum = #{deliveryStatus}
|
||||
AND T8.delete_flag = '0'
|
||||
LEFT JOIN med_medication_definition AS T2
|
||||
ON T1.item_id = T2.id
|
||||
AND T2.delete_flag = '0'
|
||||
LEFT JOIN med_medication AS T3
|
||||
ON T2.id = T3.medication_def_id
|
||||
AND T3.delete_flag = '0'
|
||||
LEFT JOIN adm_location T5
|
||||
ON T1.purpose_location_id = T5.id
|
||||
AND T5.delete_flag = '0'
|
||||
LEFT JOIN adm_location AS T4
|
||||
ON T4.id = T1.purpose_location_store_id
|
||||
AND T4.delete_flag = '0'
|
||||
LEFT JOIN adm_supplier AS T9
|
||||
ON T9.id = T1.supplier_id
|
||||
AND T9.delete_flag = '0'
|
||||
WHERE T1.type_enum in (#{stocktakingReport}, #{stocktakingBatchReport})
|
||||
AND T1.status_enum = #{supplyStatus}
|
||||
AND T1.item_table = #{medicationTableName}
|
||||
AND T1.delete_flag = '0'
|
||||
UNION
|
||||
SELECT T1.id, --ID
|
||||
T6.bus_no, --编码
|
||||
T6.name, --名称
|
||||
T6.size AS total_volume, --规格(器材规格)
|
||||
T6.manufacturer_text, --厂家
|
||||
T1.lot_number, --产品批号
|
||||
T5.name AS location_name, --目的仓库
|
||||
T1.unit_code, --小单位
|
||||
T1.item_quantity, --盈亏数量
|
||||
T1.approval_time, --审批时间
|
||||
T1.bus_no AS supply_bus_no,--单据号
|
||||
T1.purpose_location_id,-- 目的仓库id
|
||||
T1.price,--采购单价
|
||||
T4.name AS location_store_name,--仓库货位
|
||||
T1.profit_loss_price,
|
||||
T9.name AS supplier,--供应商
|
||||
T1.approver_id, --审核人
|
||||
T1.occurrence_time, --制单日期
|
||||
T1.tenant_id -- 租户ID
|
||||
FROM wor_supply_request AS T1
|
||||
INNER JOIN wor_supply_delivery AS T8
|
||||
ON T8.request_id = T1.id
|
||||
AND T8.status_enum = #{deliveryStatus}
|
||||
AND T8.delete_flag = '0'
|
||||
LEFT JOIN adm_device_definition AS T6
|
||||
ON T1.item_id = T6.id
|
||||
AND T6.delete_flag = '0'
|
||||
LEFT JOIN adm_location T5
|
||||
ON T1.purpose_location_id = T5.id
|
||||
AND T5.delete_flag = '0'
|
||||
LEFT JOIN adm_location AS T4
|
||||
ON T4.id = T1.purpose_location_store_id
|
||||
AND T4.delete_flag = '0'
|
||||
LEFT JOIN adm_supplier AS T9
|
||||
ON T9.id = T1.supplier_id
|
||||
AND T9.delete_flag = '0'
|
||||
WHERE T1.type_enum in (#{stocktakingReport}, #{stocktakingBatchReport})
|
||||
AND T1.status_enum = #{supplyStatus}
|
||||
AND T1.item_table = #{deviceTableName}
|
||||
AND T1.delete_flag = '0') AS T9
|
||||
${ew.customSqlSegment}
|
||||
ORDER BY T9.supply_bus_no DESC
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -125,4 +125,128 @@
|
||||
${ew.customSqlSegment}
|
||||
ORDER BY T6.supply_bus_no DESC
|
||||
</select>
|
||||
|
||||
<select id="excelTransferReportPage"
|
||||
resultType="com.openhis.web.reportmanage.dto.TransferReportPageDto">
|
||||
SELECT T6.id,
|
||||
T6.supply_bus_no, -- 商品调拨单据号
|
||||
T6.name, -- 药品名称
|
||||
T6.status_enum, -- 状态
|
||||
T6.lot_number, -- 产品批号
|
||||
T6.source_location_id, -- 源仓库ID
|
||||
T6.source_location_name, -- 源仓库
|
||||
T6.source_location_store_id, -- 源仓位ID
|
||||
T6.source_location_store_name, -- 源仓位
|
||||
T6.purpose_location_id, -- 目的仓库ID
|
||||
T6.purpose_location_name, -- 目的仓库
|
||||
T6.purpose_location_store_id, -- 目的货位ID
|
||||
T6.purpose_location_store_name, -- 目的货位
|
||||
T6.item_quantity, -- 调拨数量
|
||||
T6.unit_code, -- 物品计量单位
|
||||
T6.price, -- 采购单价
|
||||
T6.total_price, -- 总价
|
||||
T6.applicant_id, -- 申请人(制单人)
|
||||
T6.approver_id, -- 审核人
|
||||
T6.occurrence_time, -- 制单日期
|
||||
T6.apply_time, -- 申请日期
|
||||
T6.approval_time, -- 审批时间(调拨日期)
|
||||
T6.tenant_id -- 租户ID
|
||||
FROM (SELECT T1.id,
|
||||
T1.bus_no AS supply_bus_no, -- 商品调拨单据号
|
||||
T3.name, -- 药品名称
|
||||
T1.status_enum, -- 状态
|
||||
T1.lot_number, -- 产品批号
|
||||
T1.source_location_id, -- 源仓库ID
|
||||
T4.name AS source_location_name, -- 源仓库
|
||||
T1.source_location_store_id, -- 源仓位ID
|
||||
T5.name AS source_location_store_name, -- 源仓位
|
||||
T1.purpose_location_id, -- 目的仓库ID
|
||||
T9.name AS purpose_location_name, -- 目的仓库
|
||||
T1.purpose_location_store_id, -- 目的货位ID
|
||||
T10.name AS purpose_location_store_name, -- 目的货位
|
||||
T1.item_quantity, -- 调拨数量
|
||||
T1.unit_code, -- 物品计量单位
|
||||
T1.price, -- 采购单价
|
||||
T1.total_price, -- 总价
|
||||
T1.applicant_id, -- 申请人(制单人)
|
||||
T1.approver_id, -- 审核人
|
||||
T1.occurrence_time, -- 制单日期
|
||||
T1.apply_time, -- 申请日期
|
||||
T1.approval_time, -- 审批时间(调拨日期)
|
||||
T1.tenant_id -- 租户ID
|
||||
FROM wor_supply_request T1
|
||||
INNER JOIN wor_supply_delivery AS T2
|
||||
ON T2.request_id = T1.id
|
||||
AND T2.status_enum = #{deliveryStatus}
|
||||
AND T2.delete_flag = '0'
|
||||
LEFT JOIN med_medication_definition T3
|
||||
ON T1.item_id = T3.id
|
||||
AND T3.delete_flag = '0'
|
||||
LEFT JOIN adm_location T4
|
||||
ON T1.source_location_id = T4.id
|
||||
AND T4.delete_flag = '0'
|
||||
LEFT JOIN adm_location T5
|
||||
ON T1.source_location_store_id = T5.id
|
||||
AND T5.delete_flag = '0'
|
||||
LEFT JOIN adm_location T9
|
||||
ON T1.purpose_location_id = T9.id
|
||||
AND T9.delete_flag = '0'
|
||||
LEFT JOIN adm_location T10
|
||||
ON T1.purpose_location_store_id = T10.id
|
||||
AND T10.delete_flag = '0'
|
||||
WHERE T1.type_enum in (#{transferReport}, #{transferBatchReport})
|
||||
AND T1.status_enum = #{supplyStatus}
|
||||
AND T1.item_table = #{medicationTableName}
|
||||
AND T1.delete_flag = '0'
|
||||
UNION
|
||||
SELECT T1.id,
|
||||
T1.bus_no AS supply_bus_no, -- 商品调拨单据号
|
||||
T7.name, -- 器材名称
|
||||
T1.status_enum, -- 状态
|
||||
T1.lot_number, -- 产品批号
|
||||
T1.source_location_id, -- 源仓库ID
|
||||
T4.name AS source_location_name, -- 源仓库
|
||||
T1.source_location_store_id, -- 源仓位ID
|
||||
T5.name AS source_location_store_name, -- 源仓位
|
||||
T1.purpose_location_id, -- 目的仓库ID
|
||||
T9.name AS purpose_location_name, -- 目的仓库
|
||||
T1.purpose_location_store_id, -- 目的货位ID
|
||||
T10.name AS purpose_location_store_name, -- 目的货位
|
||||
T1.item_quantity, -- 调拨数量
|
||||
T1.unit_code, -- 物品计量单位
|
||||
T1.price, -- 采购单价
|
||||
T1.total_price, -- 总价
|
||||
T1.applicant_id, -- 申请人(制单人)
|
||||
T1.approver_id, -- 审核人
|
||||
T1.occurrence_time, -- 制单日期
|
||||
T1.apply_time, -- 申请日期
|
||||
T1.approval_time, -- 审批时间(调拨日期)
|
||||
T1.tenant_id -- 租户ID
|
||||
FROM wor_supply_request T1
|
||||
INNER JOIN wor_supply_delivery AS T2
|
||||
ON T2.request_id = T1.id
|
||||
AND T2.status_enum = #{deliveryStatus}
|
||||
AND T2.delete_flag = '0'
|
||||
LEFT JOIN adm_device_definition T7
|
||||
ON T1.item_id = T7.id
|
||||
AND T7.delete_flag = '0'
|
||||
LEFT JOIN adm_location T4
|
||||
ON T1.source_location_id = T4.id
|
||||
AND T4.delete_flag = '0'
|
||||
LEFT JOIN adm_location T5
|
||||
ON T1.source_location_store_id = T5.id
|
||||
AND T5.delete_flag = '0'
|
||||
LEFT JOIN adm_location T9
|
||||
ON T1.purpose_location_id = T9.id
|
||||
AND T9.delete_flag = '0'
|
||||
LEFT JOIN adm_location T10
|
||||
ON T1.purpose_location_store_id = T10.id
|
||||
AND T10.delete_flag = '0'
|
||||
WHERE T1.type_enum in (#{transferReport}, #{transferBatchReport})
|
||||
AND T1.status_enum = #{supplyStatus}
|
||||
AND T1.item_table = #{deviceTableName}
|
||||
AND T1.delete_flag = '0') AS T6
|
||||
${ew.customSqlSegment}
|
||||
ORDER BY T6.supply_bus_no DESC
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user