版本更新

This commit is contained in:
Zhang.WH
2025-09-03 15:54:41 +08:00
parent 0b93d16b64
commit 8f82322d10
3290 changed files with 154339 additions and 23829 deletions

View File

@@ -0,0 +1,488 @@
<?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.inventorymanage.mapper.InventoryDetailsMapper">
<select id="selectPurchaseInDetailsPage"
resultType="com.openhis.web.inventorymanage.dto.InventoryDetailsPageDto">
SELECT T7.id, --id
T7.bus_no, --单据号
T7.status_enum, --单据类型
T7.item_table, --项目类型
T7.item_no, --项目编码
T7.item_name, --项目名称
T7.item_volume, --规格
T7.manufacturer_text, --厂家
T7.lot_number, --产品批号
T7.sup_name, --供应商
T7.item_quantity, --采购数量
T7.price, --采购单价
T7.total_price, --合计金额
T7.unit_code, --计量单位
T7.org_name, --采购部门
T7.purpose_location_id, --仓库
T7.purpose_location_store_id, --货位
T7.approval_time, --审批日期
T7.expiration_time, --有效期
T7.applicant_id, --制单人
T7.approver_id --审批人
FROM (SELECT T1.id, --id
T1.bus_no, --单据号
CASE T2.status_enum
WHEN #{supplyStatus} THEN '已入库'
ELSE '未入库' END AS status_enum, --单据类型
T3.category_code AS item_table, --项目类型
T1.item_id AS item_no, --项目编码
T3.name AS item_name, --项目名称
T4.total_volume AS item_volume, --规格
T3.manufacturer_text, --厂家
T1.lot_number, --产品批号
T6.name AS sup_name, --供应商
T1.item_quantity * T3.part_percent AS item_quantity, --采购数量
T1.price, --采购单价
T1.total_price, --合计金额
T1.unit_code, --计量单位
T5.name AS org_name, --采购部门
T1.purpose_location_id, --仓库
T1.purpose_location_store_id, --货位
T1.approval_time, --审批日期
T4.expiration_date AS expiration_time, --有效期
T1.applicant_id, --制单人
T1.approver_id --审批人
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T2
ON T2.request_id = T1.id
INNER JOIN med_medication_definition AS T3
ON T3.id = T1.item_id
INNER JOIN med_medication AS T4
ON T4.medication_def_id = T3.id
LEFT JOIN adm_organization AS T5
ON T5.id = T4.org_id
LEFT JOIN adm_supplier AS T6
ON T6.id = T1.supplier_id
WHERE T1.delete_flag = '0'
AND T1.type_enum = #{purchaseInventory}
ORDER BY T1.bus_no desc) AS T7
UNION
SELECT T10.id, --id
T10.bus_no, --单据号
T10.status_enum, --单据类型
T10.item_table, --项目类型
T10.item_no, --项目编码
T10.item_name, --项目名称
T10.item_volume, --规格
T10.manufacturer_text, --厂家
T10.lot_number, --产品批号
T10.sup_name, --供应商
T10.item_quantity, --采购数量
T10.price, --采购单价
T10.total_price, --合计金额
T10.unit_code, --计量单位
T10.org_name, --采购部门
T10.purpose_location_id, --仓库
T10.purpose_location_store_id, --货位
T10.approval_time, --审批日期
T10.expiration_time, --有效期
T10.applicant_id, --制单人
T10.approver_id --审批人
FROM (SELECT T1.id, --id
T1.bus_no, --单据号
CASE T2.status_enum
WHEN #{supplyStatus} THEN '已入库'
ELSE '未入库' END AS status_enum, --单据类型
T8.category_code AS item_table, --项目类型
T1.item_id AS item_no, --项目编码
T8.name AS item_name, --项目名称
T9.device_specifications AS item_volume, --规格
T8.manufacturer_text, --厂家
T1.lot_number, --产品批号
T6.name AS sup_name, --供应商
T1.item_quantity * T8.part_percent AS item_quantity, --采购数量
T1.price, --采购单价
T1.total_price, --合计金额
T1.unit_code, --计量单位
T5.name AS org_name, --采购部门
T1.purpose_location_id, --仓库
T1.purpose_location_store_id, --货位
T1.approval_time, --审批日期
T9.expiration_date AS expiration_time, --有效期
T1.applicant_id, --制单人
T1.approver_id --审批人
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T2
ON T2.request_id = T1.id
INNER JOIN adm_device_definition AS T8
ON T8.id = T1.item_id
INNER JOIN adm_device AS T9
ON T9.device_def_id = T8.id
LEFT JOIN adm_organization AS T5
ON T5.id = T9.org_id
LEFT JOIN adm_supplier AS T6
ON T6.id = T1.supplier_id
WHERE T1.delete_flag = '0'
AND T1.type_enum = #{purchaseInventory}
ORDER BY T1.bus_no desc) AS T10
${ew.customSqlSegment}
</select>
<select id="selectTransferDetailsPage"
resultType="com.openhis.web.inventorymanage.dto.InventoryDetailsPageDto">
SELECT T7.id, --id
T7.bus_no, --单据号
T7.status_enum, --单据类型
T7.item_table, --项目类型
T7.item_no, --项目编码
T7.item_name, --项目名称
T7.item_volume, --规格
T7.lot_number, --产品批号
T7.manufacturer_text, --厂家
T7.item_quantity, --调拨数量
T7.unit_code, --计量单位
T7.price, --采购单价
T7.total_price, --合计金额
T7.source_type, --源仓库类型
T7.source_location, --源仓库
T7.source_location_store, --源货位
T7.purpose_type, --目的仓库类型
T7.purpose_location_id, --目的仓库
T7.purpose_location_store_id, --目的货位
T7.approval_time, --审批日期
T7.expiration_time, --有效期
T7.applicant_id, --制单人
T7.approver_id --审批人
FROM (SELECT T1.id, --id
T1.bus_no, --单据号
CASE T2.status_enum
WHEN #{supplyStatus} THEN '已调拨'
ELSE '未调拨' END AS status_enum, --单据类型
T3.category_code AS item_table, --项目类型
T1.item_id AS item_no, --项目编码
T3.name AS item_name, --项目名称
T4.total_volume AS item_volume, --规格
T1.lot_number, --产品批号
T3.manufacturer_text, --厂家
T1.item_quantity, --采购数量(小)
T3.min_unit_code AS unit_code, --计量单位(小)
T1.price * T3.part_percent AS price, --采购单价(小)
T1.total_price, --合计金额
T1.source_type_enum AS source_type, --源仓库类型
T5.name AS source_location, --源仓库
T6.name AS source_location_store, --源货位
T1.purpose_type_enum AS purpose_type, --目的仓库类型
T1.purpose_location_id, --目的仓库
T1.purpose_location_store_id, --目的货位
T1.approval_time, --审批日期
T4.expiration_date AS expiration_time, --有效期
T1.applicant_id, --制单人
T1.approver_id --审批人
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T2
ON T2.request_id = T1.id
INNER JOIN med_medication_definition AS T3
ON T3.id = T1.item_id
INNER JOIN med_medication AS T4
ON T4.medication_def_id = T3.id
LEFT JOIN adm_location AS T5
ON T5.id = T1.source_location_id
LEFT JOIN adm_location AS T6
ON T6.id = T1.source_location_store_id
WHERE T1.delete_flag = '0'
AND T1.type_enum = #{productTransfer}
ORDER BY T1.bus_no desc) AS T7
UNION
SELECT T10.id, --id
T10.bus_no, --单据号
T10.status_enum, --单据类型
T10.item_table, --项目类型
T10.item_no, --项目编码
T10.item_name, --项目名称
T10.item_volume, --规格
T10.lot_number, --产品批号
T10.manufacturer_text, --厂家
T10.item_quantity, --调拨数量
T10.unit_code, --计量单位
T10.price, --采购单价
T10.total_price, --合计金额
T10.source_type, --源仓库类型
T10.source_location, --源仓库
T10.source_location_store, --源货位
T10.purpose_type, --目的仓库类型
T10.purpose_location_id, --目的仓库
T10.purpose_location_store_id, --目的货位
T10.approval_time, --审批日期
T10.expiration_time, --有效期
T10.applicant_id, --制单人
T10.approver_id --审批人
FROM (SELECT T1.id, --id
T1.bus_no, --单据号
CASE T2.status_enum
WHEN #{supplyStatus} THEN '已调拨'
ELSE '未调拨' END AS status_enum, --单据类型
T8.category_code AS item_table, --项目类型
T1.item_id AS item_no, --项目编码
T8.name AS item_name, --项目名称
T9.device_specifications AS item_volume, --规格
T1.lot_number, --产品批号
T8.manufacturer_text, --厂家
T1.item_quantity, --采购数量(小)
T8.min_unit_code AS unit_code, --计量单位(小)
T1.price * T8.part_percent AS price, --采购单价(小)
T1.total_price, --合计金额
T1.source_type_enum AS source_type, --源仓库类型
T5.name AS source_location, --源仓库
T6.name AS source_location_store, --源货位
T1.purpose_type_enum AS purpose_type, --目的仓库类型
T1.purpose_location_id, --目的仓库
T1.purpose_location_store_id, --目的货位
T1.approval_time, --审批日期
T9.expiration_date AS expiration_time, --有效期
T1.applicant_id, --制单人
T1.approver_id --审批人
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T2
ON T2.request_id = T1.id
INNER JOIN adm_device_definition AS T8
ON T8.id = T1.item_id
INNER JOIN adm_device AS T9
ON T9.device_def_id = T8.id
LEFT JOIN adm_location AS T5
ON T5.id = T1.source_location_id
LEFT JOIN adm_location AS T6
ON T6.id = T1.source_location_store_id
WHERE T1.delete_flag = '0'
AND T1.type_enum = #{productTransfer}
ORDER BY T1.bus_no desc) AS T10
${ew.customSqlSegment}
</select>
<select id="selectRequisitionOutDetailsPage"
resultType="com.openhis.web.inventorymanage.dto.InventoryDetailsPageDto">
SELECT T7.id, --id
T7.bus_no, --单据号
T7.status_enum, --单据类型
T7.item_table, --项目类型
T7.item_no, --项目编码
T7.item_name, --项目名称
T7.item_volume, --规格
T7.item_quantity, --领用数量
T7.unit_code, --计量单位
T7.lot_number, --产品批号
T7.supply_bus_no, --采购批次流水号
T7.purpose_location_id, --仓库
T7.purpose_location_store_id, --货位
T7.occurrence_time, --期望时间(制单时间)
T7.approval_time, --审批日期
T7.org_name, --领用部门
T7.applicant_id, --制单人
T7.approver_id --审批人
FROM (SELECT T1.id, --id
T1.bus_no, --单据号
CASE T2.status_enum
WHEN #{agree} THEN '已出库'
ELSE '未出库' END AS status_enum, --单据类型
T3.category_code AS item_table, --项目类型
T1.item_id AS item_no, --项目编码
T3.name AS item_name, --项目名称
T4.total_volume AS item_volume, --规格
T1.item_quantity AS item_quantity, --领用数量
T1.unit_code, --计量单位
T1.lot_number, --产品批号
T5.bus_no AS supply_bus_no, --采购批次流水号
T1.purpose_location_id, --仓库
T1.purpose_location_store_id, --货位
T1.occurrence_time, --期望时间(制单时间)
T1.approval_time, --审批日期
T6.name AS org_name, --领用部门
T1.applicant_id, --制单人
T1.approver_id --审批人
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T2
ON T2.request_id = T1.id
INNER JOIN med_medication_definition AS T3
ON T3.id = T1.item_id
INNER JOIN med_medication AS T4
ON T4.medication_def_id = T3.id
LEFT JOIN wor_supply_request AS T5
ON T5.item_id = T1.item_id
AND T5.lot_number = T1.lot_number
AND T5.purpose_location_id = T1.purpose_location_id
AND T5.purpose_location_store_id = T1.purpose_location_store_id
LEFT JOIN adm_organization AS T6
ON T6.id = T4.org_id
WHERE T1.delete_flag = '0'
AND T1.type_enum = #{issueInventory}
UNION
SELECT T1.id, --id
T1.bus_no, --单据号
CASE T2.status_enum
WHEN #{agree} THEN '已出库'
ELSE '未出库' END AS status_enum, --单据类型
T3.category_code AS item_table, --项目类型
T1.item_id AS item_no, --项目编码
T3.name AS item_name, --项目名称
T4.total_volume AS item_volume, --规格
T1.item_quantity AS item_quantity, --领用数量
T1.unit_code, --计量单位
T1.lot_number, --产品批号
T5.bus_no AS supply_bus_no, --采购批次流水号
T1.purpose_location_id, --仓库
T1.purpose_location_store_id, --货位
T1.occurrence_time, --期望时间(制单时间)
T1.approval_time, --审批日期
T6.name AS org_name, --领用部门
T1.applicant_id, --制单人
T1.approver_id --审批人
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T2
ON T2.request_id = T1.id
INNER JOIN adm_device_definition AS T3
ON T3.id = T1.item_id
INNER JOIN adm_device AS T4
ON T4.device_def_id = T3.id
LEFT JOIN wor_supply_request AS T5
ON T5.item_id = T1.item_id
AND T5.lot_number = T1.lot_number
AND T5.purpose_location_id = T1.purpose_location_id
AND T5.purpose_location_store_id = T1.purpose_location_store_id
LEFT JOIN adm_organization AS T6
ON T6.id = T4.org_id
WHERE T1.delete_flag = '0'
AND T1.type_enum = #{issueInventory}
ORDER BY T1.bus_no desc) AS T7
ORDER BY T7.bus_no DESC
${ew.customSqlSegment}
</select>
<select id="selectInventoryStockDetailsPage"
resultType="com.openhis.web.inventorymanage.dto.InventoryDetailsPageDto">
SELECT T6.id, --id
T6.bus_no, --单据号
T6.status_enum, --单据类型
T6.item_table, --项目类型
T6.item_no, --项目编码
T6.item_name, --项目名称
T6.item_volume, --规格
T6.manufacturer_text, --厂家
T6.lot_number, --产品批号
T6.unit_code, --计量单位
T6.before_stock_quantity, --盘前数量
T6.after_stock_quantity, --盘后数量
T6.loss_quantity, --盈亏数量
T6.reason, --盈亏原因
T6.purpose_type, --目的仓库类型
T6.purpose_location_id, --目的仓库
T6.purpose_location_store_id, --目的货位
T6.approval_time, --审批日期
T6.applicant_id, --制单人
T6.approver_id --审批人
FROM (SELECT T1.id, --id
T1.bus_no, --单据号
CASE
WHEN T2.status_enum = #{agree} THEN '已盘点'
WHEN T1.status_enum = #{approval} THEN '审核中'
ELSE '待申请' END AS status_enum, --单据类型
T3.category_code AS item_table, --项目类型
T1.item_id AS item_no, --项目编码
T3.name AS item_name, --项目名称
T4.total_volume AS item_volume, --规格
T3.manufacturer_text, --厂家
T1.lot_number, --产品批号
T3.min_unit_code AS unit_code, --计量单位(小)
CASE T2.status_enum
WHEN #{agree} THEN
T5.quantity - T1.item_quantity
ELSE
T5.quantity
END AS before_stock_quantity, --盘前数量(小)
CASE T2.status_enum
WHEN #{agree} THEN
T5.quantity
ELSE
T5.quantity + T1.item_quantity
END AS after_stock_quantity, --盘后数量(小)
T1.item_quantity AS loss_quantity, --盈亏数量(小)
T1.reason, --盈亏原因
T1.purpose_type_enum AS purpose_type, --目的仓库类型
T1.purpose_location_id, --目的仓库
T1.purpose_location_store_id, --目的货位
T1.approval_time, --审批日期
T1.applicant_id, --制单人
T1.approver_id --审批人
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T2
ON T2.request_id = T1.id
INNER JOIN med_medication_definition AS T3
ON T3.id = T1.item_id
INNER JOIN med_medication AS T4
ON T4.medication_def_id = T3.id
LEFT JOIN wor_inventory_item AS T5
ON T5.item_id = T1.item_id
WHERE T1.delete_flag = '0'
AND T1.type_enum = #{productStocktaking}
ORDER BY T1.bus_no desc) AS T6
UNION
SELECT T9.id, --id
T9.bus_no, --单据号
T9.status_enum, --单据类型
T9.item_table, --项目类型
T9.item_no, --项目编码
T9.item_name, --项目名称
T9.item_volume, --规格
T9.manufacturer_text, --厂家
T9.lot_number, --产品批号
T9.unit_code, --计量单位
T9.before_stock_quantity, --盘前数量
T9.after_stock_quantity, --盘后数量
T9.loss_quantity, --盈亏数量
T9.reason, --盈亏原因
T9.purpose_type, --目的仓库类型
T9.purpose_location_id, --目的仓库
T9.purpose_location_store_id, --目的货位
T9.approval_time, --审批日期
T9.applicant_id, --制单人
T9.approver_id --审批人
FROM (SELECT T1.id, --id
T1.bus_no, --单据号
CASE
WHEN T2.status_enum = #{agree} THEN '已盘点'
WHEN T1.status_enum = #{approval} THEN '审核中'
ELSE '待申请' END AS status_enum, --单据类型
T7.category_code AS item_table, --项目类型
T1.item_id AS item_no, --项目编码
T7.name AS item_name, --项目名称
T8.device_specifications AS item_volume, --规格
T7.manufacturer_text, --厂家
T1.lot_number, --产品批号
T7.min_unit_code AS unit_code, --计量单位(小)
CASE T2.status_enum
WHEN #{agree} THEN
T5.quantity - T1.item_quantity
ELSE
T5.quantity
END AS before_stock_quantity, --盘前数量(小)
CASE T2.status_enum
WHEN #{agree} THEN
T5.quantity
ELSE
T5.quantity + T1.item_quantity
END AS after_stock_quantity, --盘后数量(小)
T1.item_quantity AS loss_quantity, --盈亏数量(小)
T1.reason, --盈亏原因
T1.purpose_type_enum AS purpose_type, --目的仓库类型
T1.purpose_location_id, --目的仓库
T1.purpose_location_store_id, --目的货位
T1.approval_time, --审批日期
T1.applicant_id, --制单人
T1.approver_id --审批人
FROM wor_supply_request AS T1
INNER JOIN wor_supply_delivery AS T2
ON T2.request_id = T1.id
INNER JOIN adm_device_definition AS T7
ON T7.id = T1.item_id
INNER JOIN adm_device AS T8
ON T8.device_def_id = T7.id
LEFT JOIN wor_inventory_item AS T5
ON T5.item_id = T1.item_id
WHERE T1.delete_flag = '0'
AND T1.type_enum = #{productStocktaking}
ORDER BY T1.bus_no desc) AS T9
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -0,0 +1,298 @@
<?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.inventorymanage.mapper.LossReportFormMapper">
<select id="selectLossReportFormPage"
resultType="com.openhis.web.inventorymanage.dto.LossReportFormPageDto">
SELECT T4.supply_bus_no, -- 单据号
T4.type, -- 单据类型
T4.status_enum, -- 单据状态
T4.inventory_location_name, -- 盘点仓库
T4.reported_loss_amount, -- 报损金额(总价)
T4.applicant_id, -- 制单人(申请人)
T4.approver_id, -- 审核人
T4.approval_time, -- 审核日期
T4.create_time, -- 制单时间
T4.tenant_id -- 租户ID
FROM (SELECT T1.bus_no AS supply_bus_no,
T1.type_enum AS type,
T1.status_enum,
T4.name AS inventory_location_name,
T2.reported_loss_amount,
T1.applicant_id,
T1.approver_id,
MIN(T1.create_time) AS create_time,
T1.approval_time,
T1.tenant_id
FROM wor_supply_request AS T1
LEFT JOIN (SELECT T3.bus_no,
SUM(T3.total_price) AS reported_loss_amount
FROM wor_supply_request AS T3
GROUP BY T3.bus_no) AS T2
ON T1.bus_no = T2.bus_no
LEFT JOIN adm_location T4
ON T1.purpose_location_id = T4.id
WHERE T1.type_enum = #{lossReportForm}
AND T1.delete_flag = '0'
GROUP BY T1.bus_no,
T1.type_enum,
T1.status_enum,
T4.name,
T2.reported_loss_amount,
T1.applicant_id,
T1.approver_id,
T1.approval_time,
T1.tenant_id
ORDER BY T1.bus_no desc
) AS T4
${ew.customSqlSegment}
</select>
<select id="selectDetail" resultType="com.openhis.web.inventorymanage.dto.ReceiptDetailDto">
SELECT T1.id, --ID
T1.bus_no AS supply_bus_no, --单据号
T1.item_id, --物品编码
T1.purpose_type_enum, --目的类型
T1.purpose_location_id, --目的仓库
T5."name" AS purpose_location_name, --目的仓库名称
T6."name" AS purpose_location_store_name, --目的仓位
T1.occurrence_time, --报损时间
#{medicine} AS item_type, --药品类型
T1.remake, --备注
T2.bus_no AS item_bus_no, --项目编码
T2."name" AS item_name, --名称
T3.total_volume, --规格
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T2.manufacturer_text, --生产厂商文本
T4.lot_number, --产品批号
T4.quantity AS total_quantity, --当前库存数量
T1.item_quantity, --数量(报损数量)
T11.amount AS price, --采购单价(大单位)
T1.total_price, --总价(报损金额)
T1.reason_code, --理由类型(报损原因)
T1.reason, --理由(报损详细)
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.supplier_id, -- 供应商id
T9."name" AS supplier_name, -- 供应商名称
T2.part_percent --拆零比
FROM wor_supply_request T1
LEFT JOIN med_medication_definition T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN med_medication T3
ON T3.medication_def_id = T2.id
AND T3.delete_flag = '0'
LEFT JOIN wor_inventory_item T4
ON T1.item_id = T4.item_id
AND T1.purpose_location_id = T4.location_id
AND T1.lot_number = T4.lot_number
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.purpose_location_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_location T6
ON T1.purpose_location_store_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_supplier T9
ON T9.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T4.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T4.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.bus_no = #{busNo}
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT T1.id, --ID
T1.bus_no AS supply_bus_no, --单据号
T1.item_id, --物品编码
T1.purpose_type_enum, --目的类型
T1.purpose_location_id, --目的仓库
T5."name" AS purpose_location_name, --目的仓库名称
T6."name" AS purpose_location_store_name, --目的仓位
T1.occurrence_time, --报损时间
#{device} AS item_type, --器材类型
T1.remake, --备注
T7.bus_no AS item_bus_no, --项目编码
T7."name" AS item_name, --名称
T7."size" AS total_volume, --器材规格
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T7.unit_code, -- 包装单位
T7.min_unit_code, -- 最小单位
T7.manufacturer_text, --生产厂商文本
T4.lot_number, --产品批号
T4.quantity AS total_quantity, --当前库存数量
T1.item_quantity, --数量(报损数量)
T11.amount AS price, --采购单价(大单位)
T1.total_price, --总价(报损金额)
T1.reason_code, --理由类型(报损原因)
T1.reason, --理由(报损详细)
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.supplier_id, -- 供应商id
T9."name" AS supplier_name, -- 供应商名称
T7.part_percent --拆零比
FROM wor_supply_request T1
LEFT JOIN adm_device_definition T7
ON T1.item_id = T7.id
AND T7.delete_flag = '0'
LEFT JOIN wor_inventory_item T4
ON T1.item_id = T4.item_id
AND T1.purpose_location_id = T4.location_id
AND T1.lot_number = T4.lot_number
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.purpose_location_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_location T6
ON T1.purpose_location_store_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_supplier T9
ON T9.id = T1.supplier_id
AND T9.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T4.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T4.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.bus_no = #{busNo}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
<select id="getMonthlySettlementDetail" resultType="com.openhis.web.inventorymanage.dto.ReceiptDetailDto">
SELECT T1.id, --ID
T1.bus_no AS supply_bus_no, --单据号
T1.item_id, --物品编码
T1.purpose_type_enum, --目的类型
T1.purpose_location_id, --目的仓库
T5."name" AS purpose_location_name, --目的仓库名称
T6."name" AS purpose_location_store_name, --目的仓位
T1.occurrence_time, --报损时间
#{medicine} AS item_type, --药品类型
T1.remake, --备注
T2.bus_no AS item_bus_no, --项目编码
T2."name" AS item_name, --名称
T3.total_volume, --规格
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T2.manufacturer_text, --生产厂商文本
T4.lot_number, --产品批号
T4.quantity AS total_quantity, --当前库存数量
T1.item_quantity, --数量(报损数量)
T11.amount AS price, --采购单价(大单位)
T1.total_price, --总价(报损金额)
T1.reason_code, --理由类型(报损原因)
T1.reason, --理由(报损详细)
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.supplier_id, -- 供应商id
T9."name" AS supplier_name, -- 供应商名称
T2.part_percent --拆零比
FROM wor_supply_request T1
LEFT JOIN med_medication_definition T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN med_medication T3
ON T3.medication_def_id = T2.id
AND T3.delete_flag = '0'
LEFT JOIN wor_inventory_item T4
ON T1.item_id = T4.item_id
AND T1.purpose_location_id = T4.location_id
AND T1.lot_number = T4.lot_number
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.purpose_location_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_location T6
ON T1.purpose_location_store_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_supplier T9
ON T9.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T4.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T4.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.purpose_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum = #{typeEnum}
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT T1.id, --ID
T1.bus_no AS supply_bus_no, --单据号
T1.item_id, --物品编码
T1.purpose_type_enum, --目的类型
T1.purpose_location_id, --目的仓库
T5."name" AS purpose_location_name, --目的仓库名称
T6."name" AS purpose_location_store_name, --目的仓位
T1.occurrence_time, --报损时间
#{device} AS item_type, --器材类型
T1.remake, --备注
T7.bus_no AS item_bus_no, --项目编码
T7."name" AS item_name, --名称
T7."size" AS total_volume, --器材规格
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T7.unit_code, -- 包装单位
T7.min_unit_code, -- 最小单位
T7.manufacturer_text, --生产厂商文本
T4.lot_number, --产品批号
T4.quantity AS total_quantity, --当前库存数量
T1.item_quantity, --数量(报损数量)
T11.amount AS price, --采购单价(大单位)
T1.total_price, --总价(报损金额)
T1.reason_code, --理由类型(报损原因)
T1.reason, --理由(报损详细)
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.supplier_id, -- 供应商id
T9."name" AS supplier_name, -- 供应商名称
T7.part_percent --拆零比
FROM wor_supply_request T1
LEFT JOIN adm_device_definition T7
ON T1.item_id = T7.id
AND T7.delete_flag = '0'
LEFT JOIN wor_inventory_item T4
ON T1.item_id = T4.item_id
AND T1.purpose_location_id = T4.location_id
AND T1.lot_number = T4.lot_number
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.purpose_location_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_location T6
ON T1.purpose_location_store_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_supplier T9
ON T9.id = T1.supplier_id
AND T9.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T4.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T4.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.purpose_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum = #{typeEnum}
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
</mapper>

View File

@@ -0,0 +1,523 @@
<?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.inventorymanage.mapper.ProductDetailsMapper">
<select id="selectProductDetailsPage"
resultType="com.openhis.web.inventorymanage.dto.ProductDetailsPageDto">
WITH latest_records AS (
SELECT
item_table,
item_id,
location_id,
lot_number,
trace_no,
MAX(create_time) AS latest_time
FROM
adm_trace_no_manage
WHERE delete_flag = '0'
GROUP BY
item_table,
item_id,
location_id,
lot_number,
trace_no
)
SELECT T6.id, --库存项目管理ID停供用
T6.bus_no, --药品编码
T6.medicine_name, --药品名称
T6.py_str, --药品拼音
T6.total_volume, --规格
T6.chrgitm_lv, --医保等级
T6.manufacturer_text, --厂家
T6.lot_number, --批次号
T6.category_code, --药品类型
T6.item_type, --药品类型区分
T6.part_percent, --拆零比
T6.unit_code, --采购单位
T6.quantity, --库存(小单位)
T6.min_unit_code, --库存单位
T6.price, --采购单价
T6.production_date, --生产日期
T6.expiration_date, --失效日期
T6.remaining_days, --剩余天数
T6.trace_no, --追溯码
T6.status_enum, --药品状态(药品停用)
T6.location_id,
T6.location_name, --仓库
T6.location_store_id,
T6.location_store_name, --货位
T6.form_enum, --仓库类型
T6.supplier_id, --供应商
T6.supply_name, --供应商名称
T6.inventory_status_enum, --停供状态
T6.dose_form_code, --剂型
T6.approval_number, --批准文号/国药准字
T6.retail_price, --零售价
T6.tenant_id,
T6.in_count,
T6.out_count,
T6.item_table,
T6.item_id
FROM (
SELECT T1.id, --库存项目管理ID停供用
T2.bus_no, --药品编码
T2."name" AS medicine_name, --药品名称
T2.py_str, --药品拼音
T3.total_volume, --规格
T2.chrgitm_lv, --医保等级
T2.manufacturer_text, --厂家
T1.lot_number, --批次号
T2.category_code, --药品类型
'0' AS item_type, --药品类型区分
T2.part_percent, --拆零比
T2.unit_code, --采购单位
T1.quantity, --库存(小单位)
T2.min_unit_code, --库存单位
T1.price, --采购单价
T1.production_date, --生产日期
T1.expiration_date, --失效日期
(T1.expiration_date::date - CURRENT_DATE) AS remaining_days, --剩余天数
T1.trace_no, --追溯码
T3.status_enum, --药品状态(药品停用)
T1.location_id,
T5."name" AS location_name, --仓库
T1.location_store_id,
T4."name" AS location_store_name, --货位
T5.form_enum, --仓库类型
T1.supplier_id, --供应商
T8.name AS supply_name, --供应商名称
T1.inventory_status_enum, --停供状态
T3.dose_form_code, --剂型
T2.approval_number, --批准文号/国药准字
T10.amount AS retail_price, --零售价
T1.tenant_id, --修复:添加逗号
COALESCE(in_counts.in_count, 0) AS in_count,
COALESCE(out_counts.out_count, 0) AS out_count,
T1.item_table,
T1.item_id
FROM wor_inventory_item T1
INNER JOIN med_medication_definition T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN med_medication T3
ON T2.id = T3.medication_def_id
AND T3.delete_flag = '0'
LEFT JOIN adm_location T4
ON T1.location_store_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.location_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_supplier T8
ON T1.supplier_id = T8.id
AND T8.delete_flag = '0'
LEFT JOIN adm_charge_item_definition T9
ON T9.instance_table = 'med_medication_definition'
AND T9.instance_id = T2.id
AND T9.delete_flag = '0'
LEFT JOIN LATERAL (
SELECT amount
FROM adm_charge_item_def_detail
WHERE definition_id = T9.id
AND condition_value = T1.lot_number
AND condition_code = '1'--1:批号进价
AND delete_flag = '0'
ORDER BY create_time DESC
LIMIT 1
) T10 ON TRUE
LEFT JOIN (
SELECT ls.item_table,
ls.item_id,
ls.location_id,
ls.lot_number,
SUM(CASE WHEN T10.status_enum = '1' THEN 1 ELSE 0 END) AS in_count
FROM latest_records ls
LEFT JOIN adm_trace_no_manage T10
ON T10.item_table = ls.item_table
AND T10.item_id = ls.item_id
AND T10.location_id = ls.location_id
AND T10.lot_number = ls.lot_number
AND T10.trace_no = ls.trace_no
AND T10.create_time = ls.latest_time
GROUP BY ls.item_table, ls.item_id, ls.location_id, ls.lot_number
) in_counts
ON T1.item_table = in_counts.item_table
AND T1.item_id = in_counts.item_id
AND T1.location_id = in_counts.location_id
AND T1.lot_number = in_counts.lot_number
LEFT JOIN (
SELECT ls.item_table,
ls.item_id,
ls.location_id,
ls.lot_number,
SUM(CASE WHEN T10.status_enum = '2' THEN 1 ELSE 0 END) AS out_count
FROM latest_records ls
LEFT JOIN adm_trace_no_manage T10
ON T10.item_table = ls.item_table
AND T10.item_id = ls.item_id
AND T10.location_id = ls.location_id
AND T10.lot_number = ls.lot_number
AND T10.trace_no = ls.trace_no
AND T10.create_time = ls.latest_time
GROUP BY ls.item_table, ls.item_id, ls.location_id, ls.lot_number
) out_counts
ON T1.item_table = out_counts.item_table
AND T1.item_id = out_counts.item_id
AND T1.location_id = out_counts.location_id
AND T1.lot_number = out_counts.lot_number
WHERE T1.delete_flag = '0'
) AS T6
${ew.customSqlSegment}
UNION ALL
SELECT T7.id, --库存项目管理ID停供用
T7.bus_no, --药品编码
T7.medicine_name, --药品名称
T7.py_str, --药品拼音
T7.total_volume, --规格
T7.chrgitm_lv, --医保等级
T7.manufacturer_text, --厂家
T7.lot_number, --批次号
T7.category_code, --药品类型
T7.item_type, --药品类型区分
T7.part_percent, --拆零比
T7.unit_code, --采购单位
T7.quantity, --库存(小单位)
T7.min_unit_code, --库存单位
T7.price, --采购单价
T7.production_date, --生产日期
T7.expiration_date, --失效日期
T7.remaining_days, --剩余天数
T7.trace_no, --追溯码
T7.status_enum, --药品状态(药品停用)
T7.location_id,
T7.location_name, --仓库
T7.location_store_id,
T7.location_store_name, --货位
T7.form_enum, --仓库类型
T7.supplier_id, --供应商
T7.supply_name, --供应商名称
T7.inventory_status_enum, --停供状态
T7.dose_form_code, --剂型
T7.approval_number, --批准文号/国药准字
T7.retail_price, --零售价
T7.tenant_id,
T7.in_count,
T7.out_count,
T7.item_table,
T7.item_id
FROM (
SELECT T1.id, --库存项目管理ID停供用
T2.bus_no, --药品编码
T2."name" AS medicine_name, --药品名称
T2.py_str, --药品拼音
T2.size AS total_volume, --规格
T2.chrgitm_lv, --医保等级
T2.manufacturer_text, --厂家
T1.lot_number, --批次号
T2.category_code, --药品类型
'9' AS item_type, --药品类型区分
T2.part_percent, --拆零比
T2.unit_code, --采购单位
T1.quantity, --库存(小单位)
T2.min_unit_code, --库存单位
T1.price, --采购单价
T1.production_date, --生产日期
T1.expiration_date, --失效日期
(T1.expiration_date::date - CURRENT_DATE) AS remaining_days, --剩余天数
T1.trace_no, --追溯码
T2.status_enum, --药品状态(药品停用)
T1.location_id,
T5."name" AS location_name, --仓库
T1.location_store_id,
T4."name" AS location_store_name, --货位
T5.form_enum, --仓库类型
T1.supplier_id, --供应商
T8.name AS supply_name, --供应商名称
T1.inventory_status_enum, --停供状态
'0' AS dose_form_code, --剂型
T2.approval_number, --批准文号/国药准字
T10.amount AS retail_price, --零售价
T1.tenant_id, --修复:添加逗号
COALESCE(in_counts.in_count, 0) AS in_count,
COALESCE(out_counts.out_count, 0) AS out_count,
T1.item_table,
T1.item_id
FROM wor_inventory_item T1
INNER JOIN adm_device_definition T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_location T4
ON T1.location_store_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.location_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_supplier T8
ON T1.supplier_id = T8.id
AND T8.delete_flag = '0'
LEFT JOIN adm_charge_item_definition T9
ON T9.instance_table = 'adm_device_definition'
AND T9.instance_id = T2.id
AND T9.delete_flag = '0'
LEFT JOIN LATERAL (
SELECT amount
FROM adm_charge_item_def_detail
WHERE definition_id = T9.id
AND condition_value = T1.lot_number
AND condition_code = '1'--1:批号进价
AND delete_flag = '0'
ORDER BY create_time DESC
LIMIT 1
) T10 ON TRUE
LEFT JOIN (
SELECT ls.item_table,
ls.item_id,
ls.location_id,
ls.lot_number,
SUM(CASE WHEN T10.status_enum = '1' THEN 1 ELSE 0 END) AS in_count
FROM latest_records ls
LEFT JOIN adm_trace_no_manage T10
ON T10.item_table = ls.item_table
AND T10.item_id = ls.item_id
AND T10.location_id = ls.location_id
AND T10.lot_number = ls.lot_number
AND T10.trace_no = ls.trace_no
AND T10.create_time = ls.latest_time
GROUP BY ls.item_table, ls.item_id, ls.location_id, ls.lot_number
) in_counts
ON T1.item_table = in_counts.item_table
AND T1.item_id = in_counts.item_id
AND T1.location_id = in_counts.location_id
AND T1.lot_number = in_counts.lot_number
LEFT JOIN (
SELECT ls.item_table,
ls.item_id,
ls.location_id,
ls.lot_number,
SUM(CASE WHEN T10.status_enum = '2' THEN 1 ELSE 0 END) AS out_count
FROM latest_records ls
LEFT JOIN adm_trace_no_manage T10
ON T10.item_table = ls.item_table
AND T10.item_id = ls.item_id
AND T10.location_id = ls.location_id
AND T10.lot_number = ls.lot_number
AND T10.trace_no = ls.trace_no
AND T10.create_time = ls.latest_time
GROUP BY ls.item_table, ls.item_id, ls.location_id, ls.lot_number
) out_counts
ON T1.item_table = out_counts.item_table
AND T1.item_id = out_counts.item_id
AND T1.location_id = out_counts.location_id
AND T1.lot_number = out_counts.lot_number
WHERE T1.delete_flag = '0'
) AS T7
${ew.customSqlSegment}
</select>
<select id="selectProductDetailsPageTotal"
resultType="com.openhis.web.inventorymanage.dto.ProductDetailsTotalDto">
SELECT
ROUND( SUM ( sale_price ), 2 ) AS total_sale_price,--总零售价
ROUND( SUM ( purchase_price ), 2 ) AS total_purchase_price --总进价
FROM
(
<if test="itemType == 99 or itemType == 9">
SELECT
ROUND(SUM (ROUND( T4.amount, 2 ) * ( ROUND( T1.quantity, 2 ) / ROUND( T2.part_percent, 2 ) ) ),2 ) AS sale_price,
ROUND(SUM (ROUND( T1.price, 2 ) * ( ROUND( T1.quantity, 2 ) / ROUND( T2.part_percent, 2 ) ) ),2 ) AS purchase_price
FROM
wor_inventory_item T1
INNER JOIN adm_device_definition T2 ON T1.item_id = T2.ID
AND T2.delete_flag = '0'
LEFT JOIN adm_charge_item_definition T3 ON T3.instance_table = 'adm_device_definition'
AND T3.instance_id = T1.item_id
AND T3.delete_flag = '0'
LEFT JOIN LATERAL ( SELECT amount FROM adm_charge_item_def_detail WHERE definition_id = T3.ID AND condition_value = T1.lot_number AND condition_code = '1' AND delete_flag = '0' ORDER BY create_time DESC LIMIT 1 ) T4 ON TRUE
LEFT JOIN adm_supplier T5 ON T1.supplier_id = T5.ID
AND T5.delete_flag = '0'
<if test="sqlWhere != '' and sqlWhere != null">
<where>
${sqlWhere}
</where>
</if>
</if>
<if test="itemType == 99 ">
UNION ALL
</if>
<if test="itemType == 99 or itemType == 0">
SELECT
ROUND(SUM (ROUND( T4.amount, 2 ) * ( ROUND( T1.quantity, 2 ) / ROUND( T2.part_percent, 2 ) ) ),2 ) AS sale_price,
ROUND(SUM (ROUND( T1.price, 2 ) * ( ROUND( T1.quantity, 2 ) / ROUND( T2.part_percent, 2 ) ) ),2 ) AS purchase_price
FROM
wor_inventory_item T1
INNER JOIN med_medication_definition T2 ON T1.item_id = T2.ID
AND T2.delete_flag = '0'
LEFT JOIN adm_charge_item_definition T3 ON T3.instance_table = 'med_medication_definition'
AND T3.instance_id = T1.item_id
AND T3.delete_flag = '0'
LEFT JOIN LATERAL ( SELECT amount FROM adm_charge_item_def_detail WHERE definition_id = T3.ID AND condition_value = T1.lot_number AND condition_code = '1' AND delete_flag = '0' ORDER BY create_time DESC LIMIT 1 ) T4 ON TRUE
LEFT JOIN adm_supplier T5 ON T1.supplier_id = T5.ID
AND T5.delete_flag = '0'
<if test="sqlWhere != '' and sqlWhere != null">
<where>
${sqlWhere}
</where>
</if>
</if>
)
</select>
<select id="selectExpirationWarning"
resultType="com.openhis.web.inventorymanage.dto.ProductDetailsPageDto">
select T6.category_code, --药品类型
T6.item_type, --药品类型区分
T6.bus_no, --药品编码
T6.medicine_name, --药品名称
T6.py_str, --药品拼音
T6.total_volume, --规格
T6.manufacturer_text, --厂家
T6.lot_number, --批次号
T6.production_date, --生产日期
T6.expiration_date, --失效日期
T6.remaining_days, --剩余天数
T6.remaining_month, --剩余月数
T6.quantity, --库存(小单位)
T6.specification_quantity,--规格库存(小单位)
T6.item_min_quantity, --最小库存警戒数量
T6.item_max_quantity, --最大库存警戒数量
T6.min_unit_code, --库存单位
T6.status_enum, --药品状态(药品停用)
T6.inventory_status_enum, --停供状态
T6.tenant_id
from (select T2.category_code, --药品类型
'0' as item_type, --药品类型区分
T2.bus_no, --药品编码
T2."name" as medicine_name, --药品名称
T2.py_str, --药品拼音
T3.total_volume, --规格
T2.manufacturer_text, --厂家
T1.lot_number, --批次号
T1.production_date, --生产日期
T1.expiration_date, --失效日期
(T1.expiration_date::date - CURRENT_DATE) as remaining_days, --剩余天数
((EXTRACT(YEAR FROM T1.expiration_date) - EXTRACT(YEAR FROM CURRENT_DATE)) * 12
+ (EXTRACT(MONTH FROM T1.expiration_date) -
EXTRACT(MONTH FROM CURRENT_DATE))) as remaining_month, --剩余月数
T1.quantity, --库存(小单位)
COALESCE(CAST(T8.specification_quantity AS DECIMAL(18, 6)), 0.00) AS specification_quantity,--规格库存(小单位)
T2.item_min_quantity * T2.part_percent AS item_min_quantity, --最小库存警戒数量
T2.item_max_quantity * T2.part_percent AS item_max_quantity, --最大库存警戒数量
T2.min_unit_code, --库存单位
T3.status_enum, --药品状态(药品停用)
T1.inventory_status_enum, --停供状态
T1.tenant_id
from wor_inventory_item T1
inner join med_medication_definition T2
on T1.item_id = T2.id
and T2.delete_flag = '0'
left join med_medication T3
on T2.id = T3.medication_def_id
and T3.delete_flag = '0'
left join adm_location T4
on T1.location_store_id = T4.id
and T4.delete_flag = '0'
left join adm_location T5
on T1.location_id = T5.id
and T5.delete_flag = '0'
LEFT JOIN (SELECT i1.item_table,
i1.item_id,
COALESCE(CAST(SUM(i1.quantity) AS DECIMAL(18, 6)), 0.00) AS specification_quantity
FROM wor_inventory_item i1
LEFT JOIN med_medication_definition i2 ON i1.item_id = i2.ID
AND i2.delete_flag = '0'
WHERE i1.item_table = 'med_medication_definition'
AND i1.delete_flag = '0'
GROUP BY i1.item_table,
i1.item_id) T8
ON T8.item_table = 'med_medication_definition'
AND T8.item_id = T2.ID
where T1.delete_flag = '0'
<if test="flg != null">
and (T8.specification_quantity <![CDATA[ <= ]]> T2.item_min_quantity * T2.part_percent
or T8.specification_quantity <![CDATA[ >= ]]> T2.item_max_quantity * T2.part_percent)
</if>
order by T2.bus_no ASC, --药品编码
T2."name" ASC --药品名称
) as T6
${ew.customSqlSegment}
union all
select T7.category_code, --药品类型
T7.item_type, --药品类型区分
T7.bus_no, --药品编码
T7.medicine_name, --药品名称
T7.py_str, --药品拼音
T7.total_volume, --规格
T7.manufacturer_text, --厂家
T7.lot_number, --批次号
T7.production_date, --生产日期
T7.expiration_date, --失效日期
T7.remaining_days, --剩余天数
T7.remaining_month, --剩余月数
T7.quantity, --库存(小单位)
T7.specification_quantity,--规格库存(小单位)
T7.item_min_quantity, --最小库存警戒数量
T7.item_max_quantity, --最大库存警戒数量
T7.min_unit_code, --库存单位
T7.status_enum, --药品状态(药品停用)
T7.inventory_status_enum, --停供状态
T7.tenant_id
from (select T2.category_code, --药品类型
'9' as item_type, --药品类型区分
T2.bus_no, --药品编码
T2."name" as medicine_name, --药品名称
T2.py_str, --药品拼音
T2.size as total_volume, --规格
T2.manufacturer_text, --厂家
T1.lot_number, --批次号
T1.production_date, --生产日期
T1.expiration_date, --失效日期
(T1.expiration_date::date - CURRENT_DATE) as remaining_days, --剩余天数
((EXTRACT(YEAR FROM T1.expiration_date) - EXTRACT(YEAR FROM CURRENT_DATE)) * 12
+ (EXTRACT(MONTH FROM T1.expiration_date) -
EXTRACT(MONTH FROM CURRENT_DATE))) as remaining_month, --剩余月数
T1.quantity, --库存(小单位)
COALESCE(CAST(T8.specification_quantity AS DECIMAL(18, 6)), 0.00) AS specification_quantity,--规格库存(小单位)
T2.item_min_quantity * T2.part_percent AS item_min_quantity, --最小库存警戒数量
T2.item_max_quantity * T2.part_percent AS item_max_quantity, --最大库存警戒数量
T2.min_unit_code, --库存单位
T2.status_enum, --药品状态(药品停用)
T1.inventory_status_enum, --停供状态
T1.tenant_id
from wor_inventory_item T1
inner join adm_device_definition T2
on T1.item_id = T2.id
and T2.delete_flag = '0'
left join adm_location T4
on T1.location_store_id = T4.id
and T4.delete_flag = '0'
left join adm_location T5
on T1.location_id = T5.id
and T5.delete_flag = '0'
LEFT JOIN (SELECT i1.item_table,
i1.item_id,
COALESCE(CAST(SUM(i1.quantity) AS DECIMAL(18, 6)), 0.00) AS specification_quantity
FROM wor_inventory_item i1
LEFT JOIN adm_device_definition i2 ON i1.item_id = i2.ID
AND i2.delete_flag = '0'
WHERE i1.item_table = 'adm_device_definition'
AND i1.delete_flag = '0'
GROUP BY i1.item_table,
i1.item_id) T8
ON T8.item_table = 'adm_device_definition'
AND T8.item_id = T2.ID
where T1.delete_flag = '0'
<if test="flg != null">
and (T8.specification_quantity <![CDATA[ <= ]]> T2.item_min_quantity * T2.part_percent
or T8.specification_quantity <![CDATA[ >= ]]> T2.item_max_quantity * T2.part_percent)
</if>
order by T2.bus_no ASC, --药品编码
T2."name" ASC --药品名称
) as T7
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -0,0 +1,522 @@
<?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.inventorymanage.mapper.ProductStocktakingMapper">
<select id="selectStocktakingReceiptPage"
resultType="com.openhis.web.inventorymanage.dto.ReceiptPageDto">
SELECT T4.tenant_id,
T4.supply_bus_no, --单据号
T4.type_enum, --类型
T4.status_enum, --状态
T4.purpose_type_enum, --目的类型
T4.purpose_location_id, --目的仓库
T4.purpose_location_store_id, --目的仓位
T4.breakeven_price, --盈亏金额
T4.applicant_id, --申请人
T4.approver_id, --审批人
T4.create_time, -- 制单时间
T4.approval_time --审批时间
FROM (SELECT T1.tenant_id,
T1.bus_no AS supply_bus_no,
T1.type_enum,
T1.status_enum,
T1.purpose_type_enum,
T1.purpose_location_id,
T1.purpose_location_store_id,
T2.breakeven_price,
T1.applicant_id,
T1.approver_id,
MIN(T1.create_time) AS create_time,
T1.approval_time
FROM wor_supply_request AS T1
LEFT JOIN (SELECT T3.bus_no,
SUM(T3.total_price) AS breakeven_price
FROM wor_supply_request AS T3
WHERE T3.delete_flag = '0'
GROUP BY T3.bus_no) AS T2
ON T1.bus_no = T2.bus_no
WHERE T1.type_enum IN (#{productStocktaking}, #{BatchStocktaking})
AND T1.delete_flag = '0'
GROUP BY T1.tenant_id,
T1.bus_no,
T1.type_enum,
T1.status_enum,
T1.item_table,
T1.purpose_type_enum,
T1.purpose_location_id,
T1.purpose_location_store_id,
T2.breakeven_price,
T1.applicant_id,
T1.approver_id,
T1.approval_time
ORDER BY T1.bus_no desc
) AS T4
${ew.customSqlSegment}
</select>
<select id="selectDetail" resultType="com.openhis.web.inventorymanage.dto.ReceiptDetailDto">
SELECT T1.id, --ID
T1.bus_no, --单据号
T1.trace_no, --追溯码
T1.item_id, --物品编码
T1.purpose_type_enum, --目的类型
T1.purpose_location_id, --目的仓库
T7."name" AS purpose_location_name, -- 目的仓库
T1.purpose_location_store_id, --目的仓位
T1.occurrence_time, --期望时间(盘点日期)
#{medicine} AS item_type, --药品类型
T1.remake, --备注
T2.bus_no AS item_bus_no, --项目编码
T2."name" AS item_name, --名称
T3.total_volume, --规格
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, --包装单位(大单位)
T2.min_unit_code, --最小单位(小单位)
T2.manufacturer_text, --生产厂商文本
T4.lot_number, --产品批号
T1.total_quantity, --实盘数量(常规单位)(小单位)
T11.amount AS price, --采购单价(大单位)
T1.item_quantity, --数量(盈亏数量)(小单位)
T1.total_price, --总价(盈亏金额)
T1.reason_code, --理由类型(盈亏原因)
T1.reason, --理由(盈亏详细)
T2.yb_no, --医保编码
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.supplier_id, -- 供应商id
T8."name" AS supplier_name, -- 供应商名称
T2.part_percent --拆零比
FROM wor_supply_request AS T1
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 wor_inventory_item AS T4
ON T1.item_id = T4.item_id
AND T1.purpose_location_id = T4.location_id
AND T1.lot_number = T4.lot_number
AND T4.delete_flag = '0'
LEFT JOIN adm_location T7
ON T1.purpose_location_id = T7.id
LEFT JOIN adm_supplier T8
ON T8.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T4.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T4.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.bus_no = #{busNo}
AND T1.delete_flag = '0'
AND T1.item_table = #{medicationTableName}
UNION
SELECT T1.id,
T1.bus_no,
T1.trace_no,
T1.item_id,
T1.purpose_type_enum,
T1.purpose_location_id,
T7."name" AS purpose_location_name,
T1.purpose_location_store_id,
T1.occurrence_time,
#{device} AS item_type,
T1.remake,
T5.bus_no AS item_bus_no,
T5."name" AS item_name,
T5."size" AS total_volume,
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T5.unit_code,
T5.min_unit_code AS min_unit_code,
T5.manufacturer_text,
T4.lot_number,
T1.total_quantity,
T11.amount AS price, --采购单价(大单位)
T1.item_quantity,
T1.total_price,
T1.reason_code,
T1.reason,
T5.yb_no,
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.supplier_id, -- 供应商id
T8."name" AS supplier_name, -- 供应商名称
T5.part_percent
FROM wor_supply_request AS T1
LEFT JOIN adm_device_definition AS T5
ON T1.item_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN wor_inventory_item AS T4
ON T1.item_id = T4.item_id
AND T1.purpose_location_id = T4.location_id
AND T1.lot_number = T4.lot_number
AND T4.delete_flag = '0'
LEFT JOIN adm_location T7
ON T1.purpose_location_id = T7.id
LEFT JOIN adm_supplier T8
ON T8.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T4.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T4.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.bus_no = #{busNo}
AND T1.delete_flag = '0'
AND T1.item_table = #{deviceTableName}
</select>
<select id="selectStocktakingReceiptDetail"
resultType="com.openhis.web.inventorymanage.dto.ReceiptDetailDto">
SELECT T6.tenant_id,
T6.id AS item_Id, --Id
T6.bus_no AS item_bus_no, --编码
T6.item_type, --药品类型
T6.medication_type, -- 药品类型
T6.item_name, --名称
T6.total_volume, --规格
T6.lot_number, --产品批号
T6.yb_no, --医保编码
T6.measurement_unit_code, -- 计量单位
T6.unit_code, --药品单位(包装单位)(大单位)
T6.min_unit_code, --最小单位(小单位)
T6.part_percent, --拆零比
T6.stocktaking_unit_code, --常规单位(小单位)
T6.quantity AS total_quantity, --当前库存数量(常规单位)(小单位)
T6.price, --采购单价(大单位)
T6.manufacturer_text, --生产厂商文本
T6.location_id AS purpose_location_id, --仓库
T6.location_store_id AS purpose_location_store_id, --库位
T6.supplier_id, -- 供应商id
T6.supplier_name, -- 供应商名称
T6.start_time, -- 生产日期
T6.end_time, -- 有效期
T6.form_enum AS purpose_type_enum --仓库类型
FROM (SELECT T1.tenant_id,
T2.id,
T2.bus_no,
#{medicine} AS medication_type,
#{medicine} AS item_type,
T2."name" AS item_name,
T3.total_volume,
T1.lot_number,
T2.yb_no,
T1.unit_code AS measurement_unit_code,
T2.unit_code,
T2.min_unit_code,
T2.part_percent,
T1.unit_code AS stocktaking_unit_code,
T1.quantity,
T11.amount AS price,
T2.manufacturer_text,
T1.location_id,
T1.location_store_id,
T1.supplier_id, -- 供应商id
T7."name" AS supplier_name, -- 供应商名称
T1.production_date AS start_time,
T1.expiration_date AS end_time,
T5.form_enum
FROM wor_inventory_item T1
LEFT JOIN med_medication_definition T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN med_medication T3
ON T2.id = T3.medication_def_id
AND T3.delete_flag = '0'
LEFT JOIN adm_location AS T5
ON T5.id = T1.location_id
AND T5.delete_flag = '0'
LEFT JOIN adm_supplier T7
ON T7.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T1.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T1.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.delete_flag = '0'
AND T1.inventory_status_enum = #{inventoryStatusEnum}
AND T1.location_id = #{sourceLocationId}
AND T1.item_table = #{medicationTableName}
UNION
SELECT T4.tenant_id,
T4.id,
T4.bus_no,
#{device} AS item_type,
#{device} AS medication_type,
T4."name" AS item_name,
T4."size" AS total_volume,
T1.lot_number,
T4.yb_no,
T1.unit_code AS measurement_unit_code,
T4.unit_code,
T4.min_unit_code,
T4.part_percent,
T1.unit_code AS stocktaking_unit_code,
T1.quantity,
T11.amount AS price,
T4.manufacturer_text,
T1.location_id,
T1.location_store_id,
T1.supplier_id, -- 供应商id
T7."name" AS supplier_name, -- 供应商名称
T1.production_date AS start_time,
T1.expiration_date AS end_time,
T5.form_enum
FROM wor_inventory_item T1
LEFT JOIN adm_device_definition T4
ON T1.item_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T5.id = T1.location_id
AND T5.delete_flag = '0'
LEFT JOIN adm_supplier T7
ON T7.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T1.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T1.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.delete_flag = '0'
AND T1.inventory_status_enum = #{inventoryStatusEnum}
AND T1.location_id = #{sourceLocationId}
AND T1.item_table = #{deviceTableName}
) AS T6
${ew.customSqlSegment}
</select>
<select id="selectAutoStocktakingBatch"
resultType="com.openhis.web.inventorymanage.dto.ProductStocktakingDto">
SELECT T1.id,
T1.item_table, --项目
T2.id AS item_id, --项目id
T1.unit_code AS unit_code,--物品计量单位
0 AS item_quantity,--盈亏数量
T1.quantity AS total_quantity,--合计数量
T11.amount / T2.part_percent AS price,--单价
0 AS total_price, -- 盈亏金额
T5.form_enum AS purpose_type_enum,--目的仓库类型
T1.location_id AS purpose_location_id,--目的仓库
T1.location_store_id AS purpose_location_store_id,--目的仓位
T1.supplier_id,--供应商
T1.production_date AS start_time,--开始时间
T1.expiration_date AS end_time,--结束时间
T1.lot_number--产品批号
FROM wor_inventory_item T1
LEFT JOIN med_medication_definition T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN med_medication T3
ON T2.id = T3.medication_def_id
AND T3.delete_flag = '0'
LEFT JOIN adm_location AS T5
ON T5.id = T1.location_id
AND T5.delete_flag = '0'
LEFT JOIN adm_supplier T7
ON T7.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T1.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T1.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.delete_flag = '0'
AND T1.inventory_status_enum = #{inventoryStatusEnum}
AND T1.item_table = #{medicationTableName}
UNION
SELECT T1.id,
T1.item_table, --项目
T4.id AS item_id, --项目id
T1.unit_code AS unit_code,--物品计量单位
0 AS item_quantity,--盈亏数量
T1.quantity AS total_quantity,--合计数量
T11.amount / T4.part_percent AS price,--单价
0 AS total_price, -- 盈亏金额
T5.form_enum AS purpose_type_enum,--目的仓库类型
T1.location_id AS purpose_location_id,--目的仓库
T1.location_store_id AS purpose_location_store_id,--目的仓位
T1.supplier_id,--供应商
T1.production_date AS start_time,--开始时间
T1.expiration_date AS end_time,--结束时间
T1.lot_number--产品批号
FROM wor_inventory_item T1
LEFT JOIN adm_device_definition T4
ON T1.item_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T5.id = T1.location_id
AND T5.delete_flag = '0'
LEFT JOIN adm_supplier T7
ON T7.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T1.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T1.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.delete_flag = '0'
AND T1.inventory_status_enum = #{inventoryStatusEnum}
AND T1.item_table = #{deviceTableName}
</select>
<select id="getMonthlySettlementDetail" resultType="com.openhis.web.inventorymanage.dto.ReceiptDetailDto">
SELECT T1.id, --ID
T1.bus_no, --单据号
T1.trace_no, --追溯码
T1.item_id, --物品编码
T1.purpose_type_enum, --目的类型
T1.purpose_location_id, --目的仓库
T7."name" AS purpose_location_name, -- 目的仓库
T1.purpose_location_store_id, --目的仓位
T1.occurrence_time, --期望时间(盘点日期)
#{medicine} AS item_type, --药品类型
T1.remake, --备注
T2.bus_no AS item_bus_no, --项目编码
T2."name" AS item_name, --名称
T3.total_volume, --规格
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, --包装单位(大单位)
T2.min_unit_code, --最小单位(小单位)
T2.manufacturer_text, --生产厂商文本
T4.lot_number, --产品批号
T1.total_quantity, --实盘数量(常规单位)(小单位)
T11.amount AS price, --采购单价(大单位)
T1.item_quantity, --数量(盈亏数量)(小单位)
T1.total_price, --总价(盈亏金额)
T1.reason_code, --理由类型(盈亏原因)
T1.reason, --理由(盈亏详细)
T2.yb_no, --医保编码
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.supplier_id, -- 供应商id
T8."name" AS supplier_name, -- 供应商名称
T2.part_percent --拆零比
FROM
<if test="endTime == null">
wor_aut_supply_request AS T1
</if>
<if test="endTime != null">
wor_supply_request AS T1
</if>
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 wor_inventory_item AS T4
ON T1.item_id = T4.item_id
AND T1.purpose_location_id = T4.location_id
AND T1.lot_number = T4.lot_number
AND T4.delete_flag = '0'
LEFT JOIN adm_location T7
ON T1.purpose_location_id = T7.id
LEFT JOIN adm_supplier T8
ON T8.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T4.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T4.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.purpose_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
<if test="endTime == null">
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') = #{startTime}
</if>
<if test="endTime != null">
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
</if>
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT T1.id,
T1.bus_no,
T1.trace_no,
T1.item_id,
T1.purpose_type_enum,
T1.purpose_location_id,
T7."name" AS purpose_location_name,
T1.purpose_location_store_id,
T1.occurrence_time,
#{device} AS item_type,
T1.remake,
T5.bus_no AS item_bus_no,
T5."name" AS item_name,
T5."size" AS total_volume,
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T5.unit_code,
T5.min_unit_code AS min_unit_code,
T5.manufacturer_text,
T4.lot_number,
T1.total_quantity,
T11.amount AS price, --采购单价(大单位)
T1.item_quantity,
T1.total_price,
T1.reason_code,
T1.reason,
T5.yb_no,
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.supplier_id, -- 供应商id
T8."name" AS supplier_name, -- 供应商名称
T5.part_percent
FROM
<if test="endTime == null">
wor_aut_supply_request AS T1
</if>
<if test="endTime != null">
wor_supply_request AS T1
</if>
LEFT JOIN adm_device_definition AS T5
ON T1.item_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN wor_inventory_item AS T4
ON T1.item_id = T4.item_id
AND T1.purpose_location_id = T4.location_id
AND T1.lot_number = T4.lot_number
AND T4.delete_flag = '0'
LEFT JOIN adm_location T7
ON T1.purpose_location_id = T7.id
LEFT JOIN adm_supplier T8
ON T8.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T4.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T4.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.purpose_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
<if test="endTime == null">
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') = #{startTime}
</if>
<if test="endTime != null">
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
</if>
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
</mapper>

View File

@@ -0,0 +1,484 @@
<?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.inventorymanage.mapper.ProductTransferMapper">
<select id="selectProductTransferPage"
resultType="com.openhis.web.inventorymanage.dto.ProductTransferPageDto">
SELECT T2.supply_bus_no, -- 商品调拨单据号
T2.item_table, -- 项目(药品类型)
T2.status_enum, -- 单据状态
T2.type_enum, -- 单据类型
T2.source_location_id,
T2.source_location_name, -- 源仓库名称
T2.purpose_location_id,
T2.purpose_location_name, -- 目的仓库名称
T2.approver_id, -- 审批人ID
T2.approval_time, -- 审批时间
T2.applicant_id, -- 申请人ID
T2.create_time, -- 制单时间
T2.tenant_id -- 租户ID
FROM (SELECT T1.bus_no AS supply_bus_no,
T1.status_enum,
T1.type_enum,
T1.approver_id,
T1.approval_time,
T1.applicant_id,
MIN(T1.create_time) AS create_time,
T1.item_table,
T1.source_location_id,
T2."name" AS source_location_name, -- 源仓库
T1.purpose_location_id,
T3."name" AS purpose_location_name, -- 目的仓库
T1.tenant_id -- 租户ID
FROM wor_supply_request AS T1
LEFT JOIN adm_location T2
ON T1.source_location_id = T2.id
LEFT JOIN adm_location T3
ON T1.purpose_location_id = T3.id
WHERE T1.type_enum IN (#{productTransfer}, #{productBatchTransfer})
AND T1.delete_flag = '0'
GROUP BY T1.bus_no,
T1.status_enum,
T1.type_enum,
T1.approver_id,
T1.approval_time,
T1.applicant_id,
T1.item_table,
T1.source_location_id,
T2."name",
T1.purpose_location_id,
T3."name",
T1.tenant_id
ORDER BY T1.bus_no desc
) AS T2
${ew.customSqlSegment}
</select>
<select id="selectBatchTransferDetail" resultType="com.openhis.web.inventorymanage.dto.ProductTransferDetailDto">
SELECT A.tenant_id,
A.medication_type, -- 药品类型
A.item_type, -- 药品类型
A.name, -- 项目
A.total_volume, -- 规格
A.manufacturer, -- 生产厂家
A.measurement_unit_code, -- 计量单位
A.unit_code, -- 包装单位
A.min_unit_code, -- 最小单位
A.total_source_quantity, -- 源仓库库存数量
A.total_purpose_quantity, -- 目的仓库库存数量
A.item_quantity, -- 调拨数量
A.price, -- 调拨单价
A.lot_number, -- 产品批号
A.start_time, -- 生产日期
A.end_time, -- 有效期
A.trace_no, -- 药品追溯码
A.part_percent, -- 拆零比
A.item_id, -- 项目id
A.supplier_id, -- 供应商id
A.supplier_name, -- 供应商名称
A.packaging_levels -- 追溯码包装层级
FROM (SELECT T1.tenant_id,
#{medicine} AS medication_type,
#{medicine} AS item_type,
T1.name,
T3.total_volume,
T2.manufacturer_text AS manufacturer,
T1.unit_code AS measurement_unit_code,
T2.unit_code,
T2.min_unit_code,
T1.quantity AS total_source_quantity,
(SELECT T7.quantity
FROM wor_inventory_item T7
WHERE T7.item_id = T1.item_id
AND T7.lot_number = T1.lot_number
AND T7.location_id = #{purposeLocationId}
AND T7.inventory_status_enum = #{inventoryStatusEnum}
AND T7.delete_flag = '0'
) AS total_purpose_quantity,
T1.quantity AS item_quantity,
T8.amount AS price,
T1.lot_number,
T1.production_date AS start_time,
T1.expiration_date AS end_time,
T1.trace_no,
T2.part_percent,
T1.item_id,
T1.supplier_id, -- 供应商id
T4."name" AS supplier_name, -- 供应商名称
T1.packaging_levels
FROM wor_inventory_item T1
LEFT JOIN med_medication_definition T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN med_medication T3
ON T2.id = T3.medication_def_id
AND T3.delete_flag = '0'
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T7
ON T7.instance_id = T1.item_id
AND T7.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T8
ON T8.definition_id = T7.id
AND T8.delete_flag = '0'
AND T8.condition_value = T1.lot_number
AND T8.condition_code = '1'--1:批号进价
WHERE T1.delete_flag = '0'
AND T1.inventory_status_enum = #{inventoryStatusEnum}
AND T1.location_id = #{sourceLocationId}
AND T1.item_table = #{medicationTableName}
UNION ALL
SELECT T1.tenant_id,
#{device} AS medication_type,
#{device} AS item_type,
T1.name,
T5.size AS total_volume,
T5.manufacturer_text AS manufacturer,
T1.unit_code AS measurement_unit_code,
T5.unit_code,
T5.min_unit_code,
T1.quantity AS total_source_quantity,
(SELECT T8.quantity
FROM wor_inventory_item T8
WHERE T8.item_id = T1.item_id
AND T8.lot_number = T1.lot_number
AND T8.location_id = #{purposeLocationId}
AND T8.inventory_status_enum = #{inventoryStatusEnum}
AND T8.delete_flag = '0'
) AS total_purpose_quantity,
T1.quantity AS item_quantity,
T8.amount AS price,
T1.lot_number,
T1.production_date AS start_time,
T1.expiration_date AS end_time,
T1.trace_no,
T5.part_percent,
T1.item_id,
T1.supplier_id, -- 供应商id
T4."name" AS supplier_name, -- 供应商名称
T1.packaging_levels
FROM wor_inventory_item T1
LEFT JOIN adm_device_definition T5
ON T1.item_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_charge_item_definition AS T7
ON T7.instance_id = T1.item_id
AND T7.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T8
ON T8.definition_id = T7.id
AND T8.delete_flag = '0'
AND T8.condition_value = T1.lot_number
AND T8.condition_code = '1'--1:批号进价
WHERE T1.delete_flag = '0'
AND T1.inventory_status_enum = #{inventoryStatusEnum}
AND T1.location_id = #{sourceLocationId}
AND T1.item_table = #{deviceTableName}
) AS A
${ew.customSqlSegment}
</select>
<select id="selectDetail" resultType="com.openhis.web.inventorymanage.dto.ProductTransferDetailDto">
SELECT DISTINCT T1.id,
T1.bus_no, -- 商品调拨单据号
T1.apply_time, -- 申请时间
T1.source_type_enum, -- 源仓库类型
T1.source_location_id, -- 源仓库ID
T5."name" AS source_location_name, -- 源仓库
T1.source_location_store_id, -- 源仓位ID
T6."name" AS source_location_store_name, -- 源仓位
T1.purpose_type_enum, -- 目的仓库类型
T1.purpose_location_id, -- 目的仓库ID
T7."name" AS purpose_location_name, -- 目的仓库
T1.purpose_location_store_id, -- 目的货位ID
T8."name" AS purpose_location_store_name, -- 目的货位
#{medicine} AS item_type, -- 项目类型
T2.name, -- 药品名称
T3.total_volume, -- 规格
T2.manufacturer_text AS manufacturer, -- 生产厂商
T4."name" AS supplier_name, -- 供应商名称
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.item_quantity, -- 调拨数量
T11.amount AS price, -- 采购单价
T1.total_price, -- 总价
T1.lot_number, -- 产品批号
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.trace_no, -- 追溯码
T9.packaging_levels,
T1.item_id, -- 项目id
T2.part_percent, -- 拆零比
T1.remake, -- 备注
T9.quantity AS total_source_quantity, -- 库存数量(源库存)
T12.quantity AS total_purpose_quantity -- 库存数量(目的库存)
FROM wor_supply_request T1
LEFT JOIN med_medication_definition T2
ON T1.item_id = T2.id
LEFT JOIN med_medication T3
ON T3.medication_def_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_location T5
ON T1.source_location_id = T5.id
LEFT JOIN adm_location T6
ON T1.source_location_store_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_id = T7.id
LEFT JOIN adm_location T8
ON T1.purpose_location_store_id = T8.id
LEFT JOIN wor_inventory_item T9
ON T1.item_id = T9.item_id
AND T1.source_location_id = T9.location_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T9.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T9.lot_number
AND T11.condition_code = '1'--1:批号进价
LEFT JOIN wor_inventory_item T12
ON T1.item_id = T12.item_id
AND T1.purpose_location_id = T12.location_id
AND T12.lot_number = T1.lot_number
AND T12.delete_flag = '0'
WHERE T1.bus_no = #{busNo}
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT DISTINCT T1.id,
T1.bus_no, -- 商品调拨单据号
T1.apply_time, -- 申请时间
T1.source_type_enum, -- 源仓库类型
T1.source_location_id, -- 源仓库ID
T5."name" AS source_location_name_location_name, -- 源仓库
T1.source_location_store_id, -- 源仓位ID
T6."name" AS source_location_name_location_store_name, -- 源仓位
T1.purpose_type_enum, -- 目的仓库类型
T1.purpose_location_id, -- 目的仓库ID
T7."name" AS purpose_location_name, -- 目的仓库
T1.purpose_location_store_id, -- 目的货位ID
T8."name" AS purpose_location_store_name, -- 目的货位
#{device} AS item_type, -- 项目类型
T2.name, -- 药品名称
T2."size" AS total_volume, -- 规格
T2.manufacturer_text AS manufacturer, -- 生产厂商
T4."name" AS supplier_name, -- 供应商名称
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.item_quantity, -- 调拨数量
T11.amount AS price, -- 采购单价
T1.total_price, -- 总价
T1.lot_number, -- 产品批号
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.trace_no, -- 追溯码
T9.packaging_levels,
T1.item_id, -- 项目id
T2.part_percent, -- 拆零比
T1.remake, -- 备注
T9.quantity AS total_source_quantity, -- 总库存数量(源库存)
T12.quantity AS total_purpose_quantity -- 总库存数量(目的库存)
FROM wor_supply_request T1
LEFT JOIN adm_device_definition T2
ON T1.item_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_location T5
ON T1.source_location_id = T5.id
LEFT JOIN adm_location T6
ON T1.source_location_store_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_id = T7.id
LEFT JOIN adm_location T8
ON T1.purpose_location_store_id = T8.id
LEFT JOIN wor_inventory_item T9
ON T1.item_id = T9.item_id
AND T1.source_location_id = T9.location_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T9.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T9.lot_number
AND T11.condition_code = '1'--1:批号进价
LEFT JOIN wor_inventory_item T12
ON T1.item_id = T12.item_id
AND T1.purpose_location_id = T12.location_id
AND T12.lot_number = T1.lot_number
AND T12.delete_flag = '0'
WHERE T1.bus_no = #{busNo}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
<select id="getMonthlySettlementDetail" resultType="com.openhis.web.inventorymanage.dto.ReceiptDetailDto">
SELECT DISTINCT T1.id,
T1.bus_no, -- 商品调拨单据号
T1.occurrence_time, -- 制单时间
T1.source_type_enum, -- 源仓库类型
T1.source_location_id, -- 源仓库ID
T5."name" AS source_location_name, -- 源仓库
T1.source_location_store_id, -- 源仓位ID
T6."name" AS source_location_store_name, -- 源仓位
T1.purpose_type_enum, -- 目的仓库类型
T1.purpose_location_id, -- 目的仓库ID
T7."name" AS purpose_location_name, -- 目的仓库
T1.purpose_location_store_id, -- 目的货位ID
T8."name" AS purpose_location_store_name, -- 目的货位
#{medicine} AS item_type, -- 项目类型
T2.name, -- 药品名称
T3.total_volume, -- 规格
T2.manufacturer_text AS manufacturer, -- 生产厂商
T4."name" AS supplier_name, -- 供应商名称
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.item_quantity, -- 调拨数量
T11.amount AS price, -- 采购单价
T1.total_price, -- 总价
T1.lot_number, -- 产品批号
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.trace_no, -- 追溯码
T9.packaging_levels,
T1.item_id, -- 项目id
T2.part_percent, -- 拆零比
T1.remake, -- 备注
T9.quantity AS total_source_quantity, -- 库存数量(源库存)
T12.quantity AS total_purpose_quantity -- 库存数量(目的库存)
FROM wor_supply_request T1
LEFT JOIN med_medication_definition T2
ON T1.item_id = T2.id
LEFT JOIN med_medication T3
ON T3.medication_def_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_location T5
ON T1.source_location_id = T5.id
LEFT JOIN adm_location T6
ON T1.source_location_store_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_id = T7.id
LEFT JOIN adm_location T8
ON T1.purpose_location_store_id = T8.id
LEFT JOIN wor_inventory_item T9
ON T1.item_id = T9.item_id
AND T1.source_location_id = T9.location_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T9.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T9.lot_number
AND T11.condition_code = '1'--1:批号进价
LEFT JOIN wor_inventory_item T12
ON T1.item_id = T12.item_id
AND T1.purpose_location_id = T12.location_id
AND T12.lot_number = T1.lot_number
AND T12.delete_flag = '0'
WHERE <if test="inOutFlg == 1">
T1.purpose_location_id = #{locationId}
</if>
<if test="inOutFlg == 2">
T1.source_location_id = #{locationId}
</if>
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT DISTINCT T1.id,
T1.bus_no, -- 商品调拨单据号
T1.occurrence_time, -- 制单时间
T1.source_type_enum, -- 源仓库类型
T1.source_location_id, -- 源仓库ID
T5."name" AS source_location_name_location_name, -- 源仓库
T1.source_location_store_id, -- 源仓位ID
T6."name" AS source_location_name_location_store_name, -- 源仓位
T1.purpose_type_enum, -- 目的仓库类型
T1.purpose_location_id, -- 目的仓库ID
T7."name" AS purpose_location_name, -- 目的仓库
T1.purpose_location_store_id, -- 目的货位ID
T8."name" AS purpose_location_store_name, -- 目的货位
#{device} AS item_type, -- 项目类型
T2.name, -- 药品名称
T2."size" AS total_volume, -- 规格
T2.manufacturer_text AS manufacturer, -- 生产厂商
T4."name" AS supplier_name, -- 供应商名称
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.item_quantity, -- 调拨数量
T11.amount AS price, -- 采购单价
T1.total_price, -- 总价
T1.lot_number, -- 产品批号
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.trace_no, -- 追溯码
T9.packaging_levels,
T1.item_id, -- 项目id
T2.part_percent, -- 拆零比
T1.remake, -- 备注
T9.quantity AS total_source_quantity, -- 总库存数量(源库存)
T12.quantity AS total_purpose_quantity -- 总库存数量(目的库存)
FROM wor_supply_request T1
LEFT JOIN adm_device_definition T2
ON T1.item_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_location T5
ON T1.source_location_id = T5.id
LEFT JOIN adm_location T6
ON T1.source_location_store_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_id = T7.id
LEFT JOIN adm_location T8
ON T1.purpose_location_store_id = T8.id
LEFT JOIN wor_inventory_item T9
ON T1.item_id = T9.item_id
AND T1.source_location_id = T9.location_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T9.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T9.lot_number
AND T11.condition_code = '1'--1:批号进价
LEFT JOIN wor_inventory_item T12
ON T1.item_id = T12.item_id
AND T1.purpose_location_id = T12.location_id
AND T12.lot_number = T1.lot_number
AND T12.delete_flag = '0'
WHERE <if test="inOutFlg == 1">
T1.purpose_location_id = #{locationId}
</if>
<if test="inOutFlg == 2">
T1.source_location_id = #{locationId}
</if>
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
</mapper>

View File

@@ -0,0 +1,254 @@
<?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.inventorymanage.mapper.PurchaseInventoryMapper">
<select id="selectInventoryReceiptPage"
resultType="com.openhis.web.inventorymanage.dto.ReceiptPageDto">
SELECT T2.supply_bus_no,
T2.status_enum,
T2.type_enum,
T2.supplier_id,
T2.approver_id,
T2.approval_time,
T2.applicant_id,
T2.create_time,
T2.practitioner_id,
T2.item_table,
T2.purpose_type_enum,
CASE
WHEN EXISTS (
SELECT 1
FROM wor_supply_request AS T3
WHERE T3.original_bus_no = T2.supply_bus_no
AND T3.delete_flag = '0'
) THEN 1
ELSE 0
END AS return_status, --退库状态
T2.tenant_id
FROM (SELECT T1.bus_no AS supply_bus_no,
T1.status_enum,
T1.type_enum,
T1.supplier_id,
T1.approver_id,
T1.approval_time,
T1.applicant_id,
MIN(T1.create_time) AS create_time,
T1.practitioner_id,
T1.item_table,
T1.purpose_type_enum,
T1.tenant_id
FROM wor_supply_request AS T1
WHERE type_enum = #{purchaseInventory}
AND T1.delete_flag = '0'
GROUP BY T1.bus_no,
T1.status_enum,
T1.type_enum,
T1.supplier_id,
T1.approver_id,
T1.approval_time,
T1.applicant_id,
T1.practitioner_id,
T1.item_table,
T1.purpose_type_enum,
T1.tenant_id
ORDER BY T1.bus_no desc
) AS T2
${ew.customSqlSegment}
</select>
<select id="selectDetail" resultType="com.openhis.web.inventorymanage.dto.ReceiptDetailDto">
SELECT T1.id,
T1.bus_no,
T1.item_quantity,
T1.item_table,
T1.unit_code,
T1.remake,
T1.purpose_type_enum,
T1.apply_time,
T1.lot_number,
T1.trace_no,
T1.invoice_no,
T1.start_time,
T1.end_time,
T1.price,
T1.total_price,
T2."name" AS item_name,
T2.id AS item_id,
T2.part_percent,
T2.manufacturer_text AS supplier_name,
T3.total_volume,
T5."name" AS practitioner_name,
T6."name" AS purpose_location_name,
T6."id" AS purpose_location_id,
T7."name" AS purpose_location_store_name,
(SELECT SUM(T9.quantity)
FROM wor_inventory_item T9
WHERE T9.item_id = T1.item_id
AND T9.location_id = T1.purpose_location_id
) AS total_quantity
FROM wor_supply_request T1
INNER JOIN med_medication_definition T2
ON T1.item_id = T2.id
LEFT JOIN med_medication T3
ON T3.medication_def_id = T2.id
LEFT JOIN adm_practitioner T5
ON T1.practitioner_id = T5.id
LEFT JOIN adm_location T6
ON T1.purpose_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_store_id = T7.id
LEFT JOIN wor_inventory_item T9
ON T1.item_id = T9.item_id
AND T1.purpose_location_id = T9.location_id
WHERE T1.bus_no = #{busNo}
AND T1.delete_flag = '0'
UNION
SELECT T1.id,
T1.bus_no,
T1.item_quantity,
T1.item_table,
T1.unit_code,
T1.remake,
T1.purpose_type_enum,
T1.apply_time,
T1.lot_number,
T1.trace_no,
T1.invoice_no,
T1.start_time,
T1.end_time,
T1.price,
T1.total_price,
T8."name" AS item_name,
T8.id AS item_id,
T8.part_percent,
T8.manufacturer_text AS supplier_name,
T8."size" AS total_volume,
T5."name" AS practitioner_name,
T6."name" AS purpose_location_name,
T6."id" AS purpose_location_id,
T7."name" AS purpose_location_store_name,
(SELECT SUM(T9.quantity)
FROM wor_inventory_item T9
WHERE T9.item_id = T1.item_id
AND T9.location_id = T1.purpose_location_id
) AS total_quantity
FROM wor_supply_request T1
INNER JOIN adm_device_definition T8
ON T1.item_id = T8.id
LEFT JOIN adm_practitioner T5
ON T1.practitioner_id = T5.id
LEFT JOIN adm_location T6
ON T1.purpose_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_store_id = T7.id
LEFT JOIN wor_inventory_item T9
ON T1.item_id = T9.item_id
AND T1.purpose_location_id = T9.location_id
WHERE T1.bus_no = #{busNo}
AND T1.delete_flag = '0'
</select>
<select id="getMonthlySettlementDetail" resultType="com.openhis.web.inventorymanage.dto.ReceiptDetailDto">
SELECT T1.id,
T1.bus_no,
T1.item_quantity,
T1.item_table,
T1.unit_code,
T1.remake,
T1.purpose_type_enum,
T1.occurrence_time,
T1.lot_number,
T1.trace_no,
T1.invoice_no,
T1.start_time,
T1.end_time,
T1.price,
T1.total_price,
T2."name" AS item_name,
T2.id AS item_id,
T2.part_percent,
T2.manufacturer_text AS supplier_name,
T3.total_volume,
T5."name" AS practitioner_name,
T6."name" AS purpose_location_name,
T6."id" AS purpose_location_id,
T7."name" AS purpose_location_store_name,
(SELECT SUM(T9.quantity)
FROM wor_inventory_item T9
WHERE T9.item_id = T1.item_id
AND T9.location_id = T1.purpose_location_id
) AS total_quantity
FROM wor_supply_request T1
INNER JOIN med_medication_definition T2
ON T1.item_id = T2.id
LEFT JOIN med_medication T3
ON T3.medication_def_id = T2.id
LEFT JOIN adm_practitioner T5
ON T1.practitioner_id = T5.id
LEFT JOIN adm_location T6
ON T1.purpose_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_store_id = T7.id
LEFT JOIN wor_inventory_item T9
ON T1.item_id = T9.item_id
AND T1.purpose_location_id = T9.location_id
WHERE T1.purpose_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT T1.id,
T1.bus_no,
T1.item_quantity,
T1.item_table,
T1.unit_code,
T1.remake,
T1.purpose_type_enum,
T1.occurrence_time,
T1.lot_number,
T1.trace_no,
T1.invoice_no,
T1.start_time,
T1.end_time,
T1.price,
T1.total_price,
T8."name" AS item_name,
T8.id AS item_id,
T8.part_percent,
T8.manufacturer_text AS supplier_name,
T8."size" AS total_volume,
T5."name" AS practitioner_name,
T6."name" AS purpose_location_name,
T6."id" AS purpose_location_id,
T7."name" AS purpose_location_store_name,
(SELECT SUM(T9.quantity)
FROM wor_inventory_item T9
WHERE T9.item_id = T1.item_id
AND T9.location_id = T1.purpose_location_id
) AS total_quantity
FROM wor_supply_request T1
INNER JOIN adm_device_definition T8
ON T1.item_id = T8.id
LEFT JOIN adm_practitioner T5
ON T1.practitioner_id = T5.id
LEFT JOIN adm_location T6
ON T1.purpose_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_store_id = T7.id
LEFT JOIN wor_inventory_item T9
ON T1.item_id = T9.item_id
AND T1.purpose_location_id = T9.location_id
WHERE T1.purpose_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
</mapper>

View File

@@ -0,0 +1,479 @@
<?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.inventorymanage.mapper.PurchaseReturnMapper">
<select id="selectDetail" resultType="com.openhis.web.inventorymanage.dto.PurchaseReturnDetailDto">
SELECT T1.bus_no,
T1.original_bus_no,
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN T1.item_quantity
ELSE 0
END AS item_quantity, --退库数量
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN (
SELECT COALESCE(SUM(T9.item_quantity), 0)
FROM wor_supply_request AS T9
WHERE T9.original_bus_no = T1.original_bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
AND T9.status_enum = #{agree}
)
ELSE (
SELECT COALESCE(SUM(T9.item_quantity), 0)
FROM wor_supply_request AS T9
WHERE T9.original_bus_no = T1.bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
AND T9.status_enum = #{agree}
)
END AS returned_quantity, --已退数量
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN T1.id
ELSE NULL
END AS id, --采购退货id
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN NULL
ELSE T1.id
END AS purchase_id, --采购入库id
T2.quantity AS quantity, --库存数量
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN (
SELECT T9.item_quantity
FROM wor_supply_request AS T9
WHERE T1.original_bus_no = T9.bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
)
ELSE T3.quantity
END AS purchase_quantity, --采购数量
T11.amount AS price, --采购单价
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN (
SELECT T9.unit_code
FROM wor_supply_request AS T9
WHERE T1.original_bus_no = T9.bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
)
ELSE T1.unit_code
END AS purchase_unit_code, --采购单位
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T4.unit_code, -- 包装单位
T4.min_unit_code, -- 最小单位
T5."name" AS purpose_location_name, --仓库
T6."name" AS purpose_location_store_name, --货位
T4."name" AS item_name, --药品
T1.lot_number, --批次号
T1.reason, --退货原因
T1.remake, --备注
T1.item_id, --物品编码
T1.purpose_location_id, --目的仓库ID
T1.purpose_location_store_id, --目的货位ID
T1.purpose_type_enum, -- 目的仓库类型
T1.supplier_id, -- 供应商id
T7."name" AS supplier_name, -- 供应商名称
T8.total_volume, -- 规格
T4.manufacturer_text AS manufacturer, -- 生产厂商
#{medicine} AS item_type,
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.invoice_no, -- 发票号
T1.trace_no, -- 追溯码
T2.packaging_levels, -- 追溯码包装层级
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN T1.practitioner_id
ELSE NULL
END AS practitioner_id, --经手人
T4.part_percent --拆零比
FROM wor_supply_request T1
LEFT JOIN wor_inventory_item T2
ON T1.item_id = T2.item_id
AND T1.purpose_location_id = T2.location_id
AND T1.lot_number = T2.lot_number
AND T2.delete_flag = '0'
LEFT JOIN wor_supply_delivery T3
ON T1.id = T3.request_id
AND T3.delete_flag = '0'
INNER JOIN med_medication_definition T4
ON T1.item_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN med_medication T8
ON T8.medication_def_id = T4.id
AND T8.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.purpose_location_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_location T6
ON T1.purpose_location_store_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_supplier T7
ON T7.id = T1.supplier_id
AND T7.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T2.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T2.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.bus_no = #{busNo}
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT T1.bus_no,
T1.original_bus_no,
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN T1.item_quantity
ELSE NULL
END AS item_quantity, --退库数量
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN (
SELECT COALESCE(SUM(T9.item_quantity), 0)
FROM wor_supply_request AS T9
WHERE T9.original_bus_no = T1.original_bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
AND T9.status_enum = #{agree}
)
ELSE (
SELECT COALESCE(SUM(T9.item_quantity), 0)
FROM wor_supply_request AS T9
WHERE T9.original_bus_no = T1.bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
AND T9.status_enum = #{agree}
)
END AS returned_quantity, --已退数量
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN T1.id
ELSE NULL
END AS id, --采购退货id
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN NULL
ELSE T1.id
END AS purchase_id, --采购入库id
T2.quantity AS quantity, --库存数量
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN (
SELECT T9.item_quantity
FROM wor_supply_request AS T9
WHERE T1.original_bus_no = T9.bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
)
ELSE T3.quantity
END AS purchase_quantity, --采购数量
T11.amount AS price, --采购单价
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN (
SELECT T9.unit_code
FROM wor_supply_request AS T9
WHERE T1.original_bus_no = T9.bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
)
ELSE T1.unit_code
END AS purchase_unit_code, --采购单位
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T4.unit_code, -- 包装单位
T4.min_unit_code, -- 最小单位
T5."name" AS purpose_location_name, --仓库
T6."name" AS purpose_location_store_name, --货位
T4."name" AS item_name, --药品
T1.lot_number, --批次号
T1.reason, --退货原因
T1.remake, --备注
T1.item_id, --物品编码
T1.purpose_location_id, --目的仓库ID
T1.purpose_location_store_id, --目的货位ID
T1.purpose_type_enum, -- 目的仓库类型
T1.supplier_id, -- 供应商id
T7."name" AS supplier_name, -- 供应商名称
T4."size" AS total_volume, -- 规格
T4.manufacturer_text AS manufacturer, -- 生产厂商
#{device} AS item_type,
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.invoice_no, -- 发票号
T1.trace_no, -- 追溯码
T2.packaging_levels, -- 追溯码包装层级
CASE
WHEN T1.type_enum = #{purchaseReturn}
THEN T1.practitioner_id
ELSE NULL
END AS practitioner_id, --经手人
T4.part_percent --拆零比
FROM wor_supply_request T1
LEFT JOIN wor_inventory_item T2
ON T2.item_id = T1.item_id
AND T2.location_id = T1.purpose_location_id
AND T2.lot_number = T1.lot_number
AND T2.delete_flag = '0'
LEFT JOIN wor_supply_delivery T3
ON T1.id = T3.request_id
AND T3.delete_flag = '0'
INNER JOIN adm_device_definition T4
ON T1.item_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.purpose_location_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_location T6
ON T1.purpose_location_store_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_supplier T7
ON T7.id = T1.supplier_id
AND T7.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T2.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T2.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.bus_no = #{busNo}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
<select id="selectGeneratedDetail"
resultType="com.openhis.web.inventorymanage.dto.PurchaseReturnPageDto">
SELECT T1.bus_no AS supply_bus_no,
T1.status_enum,
T1.type_enum,
T1.supplier_id,
T1.practitioner_id,
T1.applicant_id,
T1.approver_id,
MIN(T1.create_time) AS create_time, -- 制单时间
T1.approval_time
FROM wor_supply_request AS T1
WHERE T1.original_bus_no = #{busNo}
AND T1.type_enum = #{purchaseReturn}
AND T1.delete_flag = '0'
GROUP BY T1.bus_no,
T1.status_enum,
T1.type_enum,
T1.supplier_id,
T1.practitioner_id,
T1.applicant_id,
T1.approver_id,
T1.approval_time
ORDER BY T1.bus_no DESC
</select>
<select id="getMonthlySettlementDetail" resultType="com.openhis.web.inventorymanage.dto.PurchaseReturnDetailDto">
SELECT T1.bus_no,
T1.original_bus_no,
T1.item_quantity AS item_quantity, --退库数量
( SELECT COALESCE(SUM(T9.item_quantity), 0)
FROM wor_supply_request AS T9
WHERE T9.original_bus_no = T1.original_bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
AND T9.status_enum = #{statusEnum}
)
AS returned_quantity, --已退数量
T1.id , --采购退货id
NULL AS purchase_id, --采购入库id
T2.quantity AS quantity, --库存数量
( SELECT T9.item_quantity
FROM wor_supply_request AS T9
WHERE T1.original_bus_no = T9.bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
)
AS purchase_quantity, --采购数量
T11.amount AS price, --采购单价
( SELECT T9.unit_code
FROM wor_supply_request AS T9
WHERE T1.original_bus_no = T9.bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
) AS purchase_unit_code, --采购单位
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T4.unit_code, -- 包装单位
T4.min_unit_code, -- 最小单位
T5."name" AS purpose_location_name, --仓库
T6."name" AS purpose_location_store_name, --货位
T4."name" AS item_name, --药品
T1.lot_number, --批次号
T1.reason, --退货原因
T1.remake, --备注
T1.item_id, --物品编码
T1.purpose_location_id, --目的仓库ID
T1.purpose_location_store_id, --目的货位ID
T1.purpose_type_enum, -- 目的仓库类型
T1.supplier_id, -- 供应商id
T7."name" AS supplier_name, -- 供应商名称
T8.total_volume, -- 规格
T4.manufacturer_text AS manufacturer, -- 生产厂商
#{medicine} AS item_type,
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.invoice_no, -- 发票号
T1.trace_no, -- 追溯码
T2.packaging_levels, -- 追溯码包装层级
T1.practitioner_id , --经手人
T1.occurrence_time,--制单日期
T4.part_percent --拆零比
FROM wor_supply_request T1
LEFT JOIN wor_inventory_item T2
ON T1.item_id = T2.item_id
AND T1.purpose_location_id = T2.location_id
AND T1.lot_number = T2.lot_number
AND T2.delete_flag = '0'
LEFT JOIN wor_supply_delivery T3
ON T1.id = T3.request_id
AND T3.delete_flag = '0'
INNER JOIN med_medication_definition T4
ON T1.item_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN med_medication T8
ON T8.medication_def_id = T4.id
AND T8.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.purpose_location_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_location T6
ON T1.purpose_location_store_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_supplier T7
ON T7.id = T1.supplier_id
AND T7.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T2.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T2.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.purpose_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT T1.bus_no,
T1.original_bus_no,
T1.item_quantity AS item_quantity, --退库数量
( SELECT COALESCE(SUM(T9.item_quantity), 0)
FROM wor_supply_request AS T9
WHERE T9.original_bus_no = T1.original_bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
AND T9.status_enum = #{statusEnum}
) AS returned_quantity, --已退数量
T1.id , --采购退货id
NULL AS purchase_id, --采购入库id
T2.quantity AS quantity, --库存数量
( SELECT T9.item_quantity
FROM wor_supply_request AS T9
WHERE T1.original_bus_no = T9.bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
) AS purchase_quantity, --采购数量
T11.amount AS price, --采购单价
( SELECT T9.unit_code
FROM wor_supply_request AS T9
WHERE T1.original_bus_no = T9.bus_no
AND T9.item_id = T1.item_id
AND T9.lot_number = T1.lot_number
AND T9.delete_flag = '0'
) AS purchase_unit_code, --采购单位
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T4.unit_code, -- 包装单位
T4.min_unit_code, -- 最小单位
T5."name" AS purpose_location_name, --仓库
T6."name" AS purpose_location_store_name, --货位
T4."name" AS item_name, --药品
T1.lot_number, --批次号
T1.reason, --退货原因
T1.remake, --备注
T1.item_id, --物品编码
T1.purpose_location_id, --目的仓库ID
T1.purpose_location_store_id, --目的货位ID
T1.purpose_type_enum, -- 目的仓库类型
T1.supplier_id, -- 供应商id
T7."name" AS supplier_name, -- 供应商名称
T4."size" AS total_volume, -- 规格
T4.manufacturer_text AS manufacturer, -- 生产厂商
#{device} AS item_type,
T1.start_time, -- 开始时间
T1.end_time, -- 结束时间
T1.invoice_no, -- 发票号
T1.trace_no, -- 追溯码
T2.packaging_levels, -- 追溯码包装层级
T1.practitioner_id, --经手人
T1.occurrence_time,--制单日期
T4.part_percent --拆零比
FROM wor_supply_request T1
LEFT JOIN wor_inventory_item T2
ON T2.item_id = T1.item_id
AND T2.location_id = T1.purpose_location_id
AND T2.lot_number = T1.lot_number
AND T2.delete_flag = '0'
LEFT JOIN wor_supply_delivery T3
ON T1.id = T3.request_id
AND T3.delete_flag = '0'
INNER JOIN adm_device_definition T4
ON T1.item_id = T4.id
AND T4.delete_flag = '0'
LEFT JOIN adm_location T5
ON T1.purpose_location_id = T5.id
AND T5.delete_flag = '0'
LEFT JOIN adm_location T6
ON T1.purpose_location_store_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_supplier T7
ON T7.id = T1.supplier_id
AND T7.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T10
ON T10.instance_id = T2.item_id
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T11
ON T11.definition_id = T10.id
AND T11.delete_flag = '0'
AND T11.condition_value = T2.lot_number
AND T11.condition_code = '1'--1:批号进价
WHERE T1.purpose_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
</mapper>

View File

@@ -0,0 +1,170 @@
<?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.inventorymanage.mapper.ReceiptApprovalMapper">
<select id="selectSupplyDetail" resultType="com.openhis.web.inventorymanage.dto.SupplyItemDetailDto">
SELECT T1.id AS supply_id,
T1.item_table,
T1.item_id,
T1.item_quantity,
T1.total_quantity,
T1.unit_code AS item_unit,
T1.price,
T1.total_price,
T1.approver_id,
T1.source_type_enum,
T1.source_location_id,
T1.source_location_store_id,
T1.purpose_type_enum,
T1.purpose_location_id,
T1.purpose_location_store_id,
T1.supplier_id,
T1.lot_number,
T1.trace_no,
T1.trace_no_unit_code,
T1.invoice_no,
T1.bus_no,
T1.start_time,
T1.end_time,
T1.id AS service_id,
T2."name",
T2.bus_no AS item_bus_no,
T2.py_str,
T2.wb_str,
T2.unit_code,
T2.min_unit_code,
T2.part_percent,
T2.category_code AS item_category,
T2.yb_no,
T2.rx_flag,
T2.approval_number,
T2.manufacturer_text,
T6."name" AS supplier_name,
T7."name" AS practitioner_name
FROM wor_supply_request AS T1
LEFT JOIN wor_supply_delivery AS T5
ON T1.id = T5.request_id
AND T5.delete_flag = '0'
INNER JOIN med_medication_definition AS T2
ON T2.id = T1.item_id
AND T2.delete_flag = '0'
LEFT JOIN adm_supplier AS T6
ON T1.supplier_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_practitioner AS T7
ON T1.practitioner_id = T7.id
AND T7.delete_flag = '0'
WHERE T1.bus_no = #{busNo}
AND T5.status_enum = #{completed}
AND T1.delete_flag = '0'
UNION
SELECT T1.id AS supply_id,
T1.item_table,
T1.item_id,
T1.item_quantity,
T1.total_quantity,
T1.unit_code AS item_unit,
T1.price,
T1.total_price,
T1.approver_id,
T1.source_type_enum,
T1.source_location_id,
T1.source_location_store_id,
T1.purpose_type_enum,
T1.purpose_location_id,
T1.purpose_location_store_id,
T1.supplier_id,
T1.lot_number,
T1.trace_no,
T1.trace_no_unit_code,
T1.invoice_no,
T1.bus_no,
T1.start_time,
T1.end_time,
T1.id AS service_id,
T3."name",
T3.bus_no AS item_bus_no,
T3.py_str,
T3.wb_str,
T3.unit_code,
T3.min_unit_code,
T3.part_percent,
T3.category_code AS item_category,
T3.yb_no,
T3.rx_flag,
T3.approval_number,
T3.manufacturer_text,
T6."name" AS supplier_name,
T7."name" AS practitioner_name
FROM wor_supply_request AS T1
LEFT JOIN wor_supply_delivery AS T5
ON T1.id = T5.request_id
INNER JOIN adm_device_definition AS T3
ON T3.id = T1.item_id
LEFT JOIN adm_supplier AS T6
ON T1.supplier_id = T6.id
AND T6.delete_flag = '0'
LEFT JOIN adm_practitioner AS T7
ON T1.practitioner_id = T7.id
AND T7.delete_flag = '0'
WHERE T1.bus_no = #{busNo}
AND T5.status_enum = #{completed}
AND T1.delete_flag = '0'
</select>
<select id="selectChargeDetail" resultType="com.openhis.web.inventorymanage.dto.ItemChargeDetailDto">
SELECT T1.id AS definition_id,
T1.instance_id,
T1.charge_name,
T1.price AS sell_price,
T2.condition_code,
T2.condition_value,
T2.amount AS unit_price,
T3.unit_code,
T3.min_unit_code
FROM adm_charge_item_definition AS T1
LEFT JOIN adm_charge_item_def_detail AS T2
ON T1.id = T2.definition_id
LEFT JOIN med_medication_definition AS T3
ON T1.instance_id = T3.id
WHERE T1.instance_id IN
<foreach collection="itemIdList" item="itemId" separator="," open="(" close=")">
#{itemId}
</foreach>
</select>
<select id="selectReceiptPage" resultType="com.openhis.web.inventorymanage.dto.ReceiptPageDto">
SELECT T2.supply_bus_no,
T2.status_enum,
T2.type_enum,
T2.approver_id,
T2.approval_time,
T2.applicant_id,
T2.apply_time,
T2.practitioner_id,
T2.tenant_id
FROM (SELECT T1.bus_no AS supply_bus_no,
T1.status_enum,
T1.type_enum,
T1.approver_id,
T1.approval_time,
T1.applicant_id,
T1.apply_time,
T1.practitioner_id,
T1.tenant_id
FROM wor_supply_request AS T1
WHERE T1.status_enum IN (#{approval},#{agree},#{reject})
AND T1.delete_flag != '1'
GROUP BY T1.bus_no,
T1.status_enum,
T1.type_enum,
T1.approver_id,
T1.approval_time,
T1.applicant_id,
T1.apply_time,
T1.practitioner_id,
T1.tenant_id
ORDER BY T1.apply_time desc
) AS T2
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -0,0 +1,351 @@
<?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.inventorymanage.mapper.RequisitionIssueMapper">
<select id="selectRequisitionDepartment" resultType="com.openhis.web.inventorymanage.dto.IssueDepartmentDto">
SELECT id AS location_id,--科室id
name,--名称
type_enum--科室
FROM adm_organization
WHERE type_enum = #{department}--科室类型
AND delete_flag = '0'
</select>
<select id="selectRequisitionIssuePage"
resultType="com.openhis.web.inventorymanage.dto.IssuePageDto">
SELECT T2.supply_bus_no,--单据号
T2.status_enum,--状态
T2.approver_id,--审批人
T2.approval_time,--审批时间
T2.applicant_id,--申请人
T2.create_time, -- 制单时间
T2.practitioner_id,--经手人
T2.tenant_id,--租户ID
T2.purpose_location_id,--领用部门ID
T2.location_name --领用部门名
FROM (SELECT T1.bus_no AS supply_bus_no,
T1.status_enum,
T1.approver_id,
T1.approval_time,
T1.applicant_id,
MIN(T1.create_time) AS create_time,
T1.practitioner_id,
T1.tenant_id,
T1.purpose_location_id,--领用部门ID
T4.name AS location_name
FROM wor_supply_request AS T1
LEFT JOIN adm_location T3
ON T1.source_location_id = T3.id
LEFT JOIN adm_organization T4
ON T1.purpose_location_id = T4.id
WHERE T1.type_enum = #{issueInventory}
AND T1.delete_flag = '0'
GROUP BY T1.bus_no,
T1.status_enum,
T1.approver_id,
T1.approval_time,
T1.applicant_id,
T1.practitioner_id,
T1.tenant_id,
T1.purpose_location_id,
T4.name
ORDER BY T1.bus_no desc
) AS T2
${ew.customSqlSegment}
</select>
<select id="requisitionIssueDetail" resultType="com.openhis.web.inventorymanage.dto.IssueDetailDto">
SELECT T1.id,
T1.bus_no,--单据号
T1.item_id,
T1.item_quantity,--数量
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.detail_json,--请求细节
T1.purpose_type_enum,--目的类型
#{medicine} AS item_type,--药品类型
T1.apply_time,--申请时间
T1.lot_number,--产品批号
T1.trace_no,--追溯码
T1.invoice_no,--发票号
T1.start_time,--开始时间
T1.end_time,--结束时间
T13.amount AS price,--单价
T1.total_price,--总价
T2."name" AS item_name,--药品类型
T2.part_percent,--拆零比
T2."yb_no",--医保编码
T3.total_volume,--规格
T4."name" AS supplier_name,--供应商名称
T2.manufacturer_text AS manufacturer, -- 生产厂商
T10.quantity AS total_quantity, -- 当前库存总数
T1.source_location_id, -- 源仓库ID
T1.source_location_store_id, -- 源仓位ID
T1.purpose_location_id, -- 目的仓库ID
T1.purpose_location_store_id, -- 目的货位ID
T6."name" AS source_location_name, -- 源仓库
T7."name" AS source_location_store_name, -- 源仓位
T8."name" AS purpose_location_name, -- 目的仓库
T9."name" AS purpose_location_store_name, -- 目的货位
T1.practitioner_id, -- 经办人
T1.remake, -- 备注
T11."name" AS practitioner_name -- 经办人名称
FROM wor_supply_request T1
LEFT JOIN med_medication_definition T2
ON T1.item_id = T2.id
LEFT JOIN med_medication T3
ON T3.medication_def_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_location T6
ON T1.source_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.source_location_store_id = T7.id
LEFT JOIN adm_organization T8
ON T1.purpose_location_id = T8.id
LEFT JOIN adm_organization T9
ON T1.purpose_location_store_id = T9.id
LEFT JOIN wor_inventory_item T10
ON T1.item_id = T10.item_id
AND T1.source_location_id = T10.location_id
AND T10.lot_number = T1.lot_number
AND T10.delete_flag = '0'
LEFT JOIN adm_practitioner T11
ON T1.practitioner_id = T11.id
LEFT JOIN adm_charge_item_definition AS T12
ON T12.instance_id = T10.item_id
AND T12.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T13
ON T13.definition_id = T12.id
AND T13.delete_flag = '0'
AND T13.condition_value = T10.lot_number
AND T13.condition_code = '1'--1:批号进价
WHERE T1.bus_no = #{busNo}
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT T1.id,
T1.bus_no,
T1.item_id,
T1.item_quantity,
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.detail_json,
T1.purpose_type_enum,
#{device} AS item_type, --耗材类型
T1.apply_time,
T1.lot_number,
T1.trace_no,
T1.invoice_no,
T1.start_time,
T1.end_time,
T13.amount AS price,--单价
T1.total_price,
T2."name" AS item_name,
T2.part_percent,
T2."size" AS total_volume,
T2."yb_no",
T4."name" AS supplier_name,
T2.manufacturer_text AS manufacturer, -- 生产厂商
T10.quantity AS total_quantity, -- 当前库存总数
T1.source_location_id, -- 源仓库ID
T1.source_location_store_id, -- 源仓位ID
T1.purpose_location_id, -- 目的仓库ID
T1.purpose_location_store_id, -- 目的货位ID
T6."name" AS source_location_name, -- 源仓库
T7."name" AS source_location_store_name, -- 源仓位
T8."name" AS purpose_location_name, -- 目的仓库
T9."name" AS purpose_location_store_name, -- 目的货位
T1.practitioner_id, -- 经办人
T1.remake, -- 备注
T11."name" AS practitioner_name -- 经办人名称
FROM wor_supply_request T1
LEFT JOIN adm_device_definition T2
ON T1.item_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_location T6
ON T1.source_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.source_location_store_id = T7.id
LEFT JOIN adm_organization T8
ON T1.purpose_location_id = T8.id
LEFT JOIN adm_organization T9
ON T1.purpose_location_store_id = T9.id
LEFT JOIN wor_inventory_item T10
ON T1.item_id = T10.item_id
AND T1.source_location_id = T10.location_id
AND T10.lot_number = T1.lot_number
AND T10.delete_flag = '0'
LEFT JOIN adm_practitioner T11
ON T1.practitioner_id = T11.id
LEFT JOIN adm_charge_item_definition AS T12
ON T12.instance_id = T10.item_id
AND T12.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T13
ON T13.definition_id = T12.id
AND T13.delete_flag = '0'
AND T13.condition_value = T10.lot_number
AND T13.condition_code = '1'--1:批号进价
WHERE T1.bus_no = #{busNo}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
<select id="getMonthlySettlementDetail" resultType="com.openhis.web.inventorymanage.dto.IssueDetailDto">
SELECT T1.id,
T1.bus_no,--单据号
T1.item_id,
T1.item_quantity,--数量
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.detail_json,--请求细节
T1.purpose_type_enum,--目的类型
#{medicine} AS item_type,--药品类型
T1.apply_time,--申请时间
T1.lot_number,--产品批号
T1.trace_no,--追溯码
T1.invoice_no,--发票号
T1.start_time,--开始时间
T1.end_time,--结束时间
T13.amount AS price,--单价
T1.total_price,--总价
T2."name" AS item_name,--药品类型
T2.part_percent,--拆零比
T2."yb_no",--医保编码
T3.total_volume,--规格
T4."name" AS supplier_name,--供应商名称
T2.manufacturer_text AS manufacturer, -- 生产厂商
T10.quantity AS total_quantity, -- 当前库存总数
T1.source_location_id, -- 源仓库ID
T1.source_location_store_id, -- 源仓位ID
T1.purpose_location_id, -- 目的仓库ID
T1.purpose_location_store_id, -- 目的货位ID
T6."name" AS source_location_name, -- 源仓库
T7."name" AS source_location_store_name, -- 源仓位
T8."name" AS purpose_location_name, -- 目的仓库
T9."name" AS purpose_location_store_name, -- 目的货位
T1.practitioner_id, -- 经办人
T1.remake, -- 备注
T1.occurrence_time,
T11."name" AS practitioner_name -- 经办人名称
FROM wor_supply_request T1
LEFT JOIN med_medication_definition T2
ON T1.item_id = T2.id
LEFT JOIN med_medication T3
ON T3.medication_def_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_location T6
ON T1.source_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.source_location_store_id = T7.id
LEFT JOIN adm_organization T8
ON T1.purpose_location_id = T8.id
LEFT JOIN adm_organization T9
ON T1.purpose_location_store_id = T9.id
LEFT JOIN wor_inventory_item T10
ON T1.item_id = T10.item_id
AND T1.source_location_id = T10.location_id
AND T10.lot_number = T1.lot_number
AND T10.delete_flag = '0'
LEFT JOIN adm_practitioner T11
ON T1.practitioner_id = T11.id
LEFT JOIN adm_charge_item_definition AS T12
ON T12.instance_id = T10.item_id
AND T12.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T13
ON T13.definition_id = T12.id
AND T13.delete_flag = '0'
AND T13.condition_value = T10.lot_number
AND T13.condition_code = '1'--1:批号进价
WHERE T1.source_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
<if test="endTime == null">
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') = #{startTime}
</if>
<if test="endTime != null">
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
</if>
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT T1.id,
T1.bus_no,
T1.item_id,
T1.item_quantity,
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.detail_json,
T1.purpose_type_enum,
#{device} AS item_type, --耗材类型
T1.apply_time,
T1.lot_number,
T1.trace_no,
T1.invoice_no,
T1.start_time,
T1.end_time,
T13.amount AS price,--单价
T1.total_price,
T2."name" AS item_name,
T2.part_percent,
T2."size" AS total_volume,
T2."yb_no",
T4."name" AS supplier_name,
T2.manufacturer_text AS manufacturer, -- 生产厂商
T10.quantity AS total_quantity, -- 当前库存总数
T1.source_location_id, -- 源仓库ID
T1.source_location_store_id, -- 源仓位ID
T1.purpose_location_id, -- 目的仓库ID
T1.purpose_location_store_id, -- 目的货位ID
T6."name" AS source_location_name, -- 源仓库
T7."name" AS source_location_store_name, -- 源仓位
T8."name" AS purpose_location_name, -- 目的仓库
T9."name" AS purpose_location_store_name, -- 目的货位
T1.practitioner_id, -- 经办人
T1.remake, -- 备注
T1.occurrence_time,
T11."name" AS practitioner_name -- 经办人名称
FROM wor_supply_request T1
LEFT JOIN adm_device_definition T2
ON T1.item_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_location T6
ON T1.source_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.source_location_store_id = T7.id
LEFT JOIN adm_organization T8
ON T1.purpose_location_id = T8.id
LEFT JOIN adm_organization T9
ON T1.purpose_location_store_id = T9.id
LEFT JOIN wor_inventory_item T10
ON T1.item_id = T10.item_id
AND T1.source_location_id = T10.location_id
AND T10.lot_number = T1.lot_number
AND T10.delete_flag = '0'
LEFT JOIN adm_practitioner T11
ON T1.practitioner_id = T11.id
LEFT JOIN adm_charge_item_definition AS T12
ON T12.instance_id = T10.item_id
AND T12.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T13
ON T13.definition_id = T12.id
AND T13.delete_flag = '0'
AND T13.condition_value = T10.lot_number
AND T13.condition_code = '1'--1:批号进价
WHERE T1.source_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
</mapper>

View File

@@ -0,0 +1,346 @@
<?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.inventorymanage.mapper.ReturnIssueMapper">
<select id="selectReturnIssueDepartment" resultType="com.openhis.web.inventorymanage.dto.IssueDepartmentDto">
SELECT id AS location_id,--科室id
name,--名称
type_enum--科室
FROM adm_organization
WHERE type_enum = #{department}--科室类型
AND delete_flag = '0'
</select>
<select id="selectReturnIssuePage"
resultType="com.openhis.web.inventorymanage.dto.IssuePageDto">
SELECT T2.supply_bus_no,--单据号
T2.status_enum,--状态
T2.approver_id,--审批人
T2.approval_time,--审批时间
T2.applicant_id,--申请人
T2.create_time, -- 制单时间
T2.practitioner_id,--供应人
T2.tenant_id,--租户ID
T2.source_location_id,--领用部门ID
T2.location_name --领用部门名
FROM (SELECT T1.bus_no AS supply_bus_no,
T1.status_enum,
T1.approver_id,
T1.approval_time,
T1.applicant_id,
MIN(T1.create_time) AS create_time,
T1.practitioner_id,
T1.tenant_id,
T1.source_location_id,--领用部门ID
T4.name AS location_name
FROM wor_supply_request AS T1
LEFT JOIN adm_location T3
ON T1.purpose_location_id = T3.id
LEFT JOIN adm_organization T4
ON T1.source_location_id = T4.id
WHERE T1.type_enum = #{issueInventory}
AND T1.delete_flag = '0'
GROUP BY T1.bus_no,
T1.status_enum,
T1.approver_id,
T1.approval_time,
T1.applicant_id,
T1.practitioner_id,
T1.tenant_id,
T1.source_location_id,
T4.name
ORDER BY T1.bus_no desc
) AS T2
${ew.customSqlSegment}
</select>
<select id="returnIssueDetail" resultType="com.openhis.web.inventorymanage.dto.IssueDetailDto">
SELECT T1.id,
T1.bus_no,--单据号
T1.item_id,
T1.item_quantity,--数量
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.detail_json,--请求细节
T1.source_type_enum,--源仓库类型
#{medicine} AS item_type,--药品类型
T1.apply_time,--申请时间
T1.lot_number,--产品批号
T1.trace_no,--追溯码
T1.invoice_no,--发票号
T1.start_time,--开始时间
T1.end_time,--结束时间
T13.amount AS price,--单价
T1.total_price,--总价
T2."name" AS item_name,--药品名称
T2.part_percent,--拆零比
T2."yb_no",--医保编码
T3.total_volume,--药品规格
T4."name" AS supplier_name,--供应商名称
T2.manufacturer_text AS manufacturer, -- 生产厂商
T1.practitioner_id, -- 经办人
T5."name" AS practitioner_name,--经办人名称
T10.quantity AS total_quantity, -- 当前库存总数
T1.source_location_id, -- 源仓库ID
T1.source_location_store_id, -- 源仓位ID
T1.purpose_location_id, -- 目的仓库ID
T1.purpose_location_store_id, -- 目的货位ID
T6."name" AS purpose_location_name, -- 目的仓库
T7."name" AS purpose_location_store_name, -- 目的仓位
T8."name" AS source_location_name, -- 源仓库
T9."name" AS source_location_store_name, -- 源仓位
T1.remake -- 备注
FROM wor_supply_request T1
LEFT JOIN med_medication_definition T2
ON T1.item_id = T2.id
LEFT JOIN med_medication T3
ON T3.medication_def_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_practitioner T5
ON T1.practitioner_id = T5.id
LEFT JOIN adm_location T6
ON T1.purpose_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_store_id = T7.id
LEFT JOIN adm_organization T8
ON T1.source_location_id = T8.id
LEFT JOIN adm_organization T9
ON T1.source_location_store_id = T9.id
LEFT JOIN wor_inventory_item T10
ON T1.item_id = T10.item_id
AND T1.purpose_location_id = T10.location_id
AND T10.lot_number = T1.lot_number
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T12
ON T12.instance_id = T10.item_id
AND T12.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T13
ON T13.definition_id = T12.id
AND T13.delete_flag = '0'
AND T13.condition_value = T10.lot_number
AND T13.condition_code = '1'--1:批号进价
WHERE T1.bus_no = #{busNo}
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT T1.id,
T1.bus_no,
T1.item_id,
T1.item_quantity,
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.detail_json,
T1.source_type_enum,
#{device} AS item_type, --耗材类型
T1.apply_time,
T1.lot_number,
T1.trace_no,
T1.invoice_no,
T1.start_time,
T1.end_time,
T13.amount AS price,--单价
T1.total_price,
T2."name" AS item_name,--器材名称
T2.part_percent,--拆零比
T2."yb_no",--医保编码
T2."size" AS total_volume,--包装规格
T4."name" AS supplier_name,
T2.manufacturer_text AS manufacturer, -- 生产厂商
T1.practitioner_id, -- 经办人
T5."name" AS practitioner_name,
T10.quantity AS total_quantity, -- 当前库存总数
T1.source_location_id, -- 源仓库ID
T1.source_location_store_id, -- 源仓位ID
T1.purpose_location_id, -- 目的仓库ID
T1.purpose_location_store_id, -- 目的货位ID
T6."name" AS source_location_name, -- 源仓库
T7."name" AS source_location_store_name, -- 源仓位
T8."name" AS purpose_location_name, -- 目的仓库
T9."name" AS purpose_location_store_name, -- 目的货位
T1.remake -- 备注
FROM wor_supply_request T1
LEFT JOIN adm_device_definition T2
ON T1.item_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_practitioner T5
ON T1.practitioner_id = T5.id
LEFT JOIN adm_location T6
ON T1.purpose_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_store_id = T7.id
LEFT JOIN adm_organization T8
ON T1.source_location_id = T8.id
LEFT JOIN adm_organization T9
ON T1.source_location_store_id = T9.id
LEFT JOIN wor_inventory_item T10
ON T1.item_id = T10.item_id
AND T1.purpose_location_id = T10.location_id
AND T10.lot_number = T1.lot_number
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T12
ON T12.instance_id = T10.item_id
AND T12.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T13
ON T13.definition_id = T12.id
AND T13.delete_flag = '0'
AND T13.condition_value = T10.lot_number
AND T13.condition_code = '1'--1:批号进价
WHERE T1.bus_no = #{busNo}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
<select id="getMonthlySettlementDetail" resultType="com.openhis.web.inventorymanage.dto.IssueDetailDto">
SELECT T1.id,
T1.bus_no,--单据号
T1.item_id,
T1.item_quantity,--数量
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.detail_json,--请求细节
T1.source_type_enum,--源仓库类型
#{medicine} AS item_type,--药品类型
T1.apply_time,--申请时间
T1.lot_number,--产品批号
T1.trace_no,--追溯码
T1.invoice_no,--发票号
T1.start_time,--开始时间
T1.end_time,--结束时间
T13.amount AS price,--单价
T1.total_price,--总价
T2."name" AS item_name,--药品名称
T2.part_percent,--拆零比
T2."yb_no",--医保编码
T3.total_volume,--药品规格
T4."name" AS supplier_name,--供应商名称
T2.manufacturer_text AS manufacturer, -- 生产厂商
T1.practitioner_id, -- 经办人
T5."name" AS practitioner_name,--经办人名称
T10.quantity AS total_quantity, -- 当前库存总数
T1.source_location_id, -- 源仓库ID
T1.source_location_store_id, -- 源仓位ID
T1.purpose_location_id, -- 目的仓库ID
T1.purpose_location_store_id, -- 目的货位ID
T6."name" AS purpose_location_name, -- 目的仓库
T7."name" AS purpose_location_store_name, -- 目的仓位
T8."name" AS source_location_name, -- 源仓库
T9."name" AS source_location_store_name, -- 源仓位
T1.occurrence_time,
T1.remake -- 备注
FROM wor_supply_request T1
LEFT JOIN med_medication_definition T2
ON T1.item_id = T2.id
LEFT JOIN med_medication T3
ON T3.medication_def_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_practitioner T5
ON T1.practitioner_id = T5.id
LEFT JOIN adm_location T6
ON T1.purpose_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_store_id = T7.id
LEFT JOIN adm_organization T8
ON T1.source_location_id = T8.id
LEFT JOIN adm_organization T9
ON T1.source_location_store_id = T9.id
LEFT JOIN wor_inventory_item T10
ON T1.item_id = T10.item_id
AND T1.purpose_location_id = T10.location_id
AND T10.lot_number = T1.lot_number
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T12
ON T12.instance_id = T10.item_id
AND T12.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T13
ON T13.definition_id = T12.id
AND T13.delete_flag = '0'
AND T13.condition_value = T10.lot_number
AND T13.condition_code = '1'--1:批号进价
WHERE T1.purpose_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.item_table = #{medicationTableName}
AND T1.delete_flag = '0'
UNION
SELECT T1.id,
T1.bus_no,
T1.item_id,
T1.item_quantity,
T1.unit_code AS measurement_unit_code, -- 物品计量单位
T2.unit_code, -- 包装单位
T2.min_unit_code, -- 最小单位
T1.detail_json,
T1.source_type_enum,
#{device} AS item_type, --耗材类型
T1.apply_time,
T1.lot_number,
T1.trace_no,
T1.invoice_no,
T1.start_time,
T1.end_time,
T13.amount AS price,--单价
T1.total_price,
T2."name" AS item_name,--器材名称
T2.part_percent,--拆零比
T2."yb_no",--医保编码
T2."size" AS total_volume,--包装规格
T4."name" AS supplier_name,
T2.manufacturer_text AS manufacturer, -- 生产厂商
T1.practitioner_id, -- 经办人
T5."name" AS practitioner_name,
T10.quantity AS total_quantity, -- 当前库存总数
T1.source_location_id, -- 源仓库ID
T1.source_location_store_id, -- 源仓位ID
T1.purpose_location_id, -- 目的仓库ID
T1.purpose_location_store_id, -- 目的货位ID
T6."name" AS source_location_name, -- 源仓库
T7."name" AS source_location_store_name, -- 源仓位
T8."name" AS purpose_location_name, -- 目的仓库
T9."name" AS purpose_location_store_name, -- 目的货位
T1.occurrence_time,
T1.remake -- 备注
FROM wor_supply_request T1
LEFT JOIN adm_device_definition T2
ON T1.item_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_practitioner T5
ON T1.practitioner_id = T5.id
LEFT JOIN adm_location T6
ON T1.purpose_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_store_id = T7.id
LEFT JOIN adm_organization T8
ON T1.source_location_id = T8.id
LEFT JOIN adm_organization T9
ON T1.source_location_store_id = T9.id
LEFT JOIN wor_inventory_item T10
ON T1.item_id = T10.item_id
AND T1.purpose_location_id = T10.location_id
AND T10.lot_number = T1.lot_number
AND T10.delete_flag = '0'
LEFT JOIN adm_charge_item_definition AS T12
ON T12.instance_id = T10.item_id
AND T12.delete_flag = '0'
LEFT JOIN adm_charge_item_def_detail AS T13
ON T13.definition_id = T12.id
AND T13.delete_flag = '0'
AND T13.condition_value = T10.lot_number
AND T13.condition_code = '1'--1:批号进价
WHERE T1.purpose_location_id = #{locationId}
AND T1.status_enum = #{statusEnum}
AND T1.type_enum IN
<foreach collection="typeEnum" item="item" separator="," open="(" close=")">
#{item}
</foreach>
AND TO_CHAR(T1.occurrence_time, 'yyyy-MM-dd HH24:mi:ss') BETWEEN #{startTime} AND #{endTime}
AND T1.item_table = #{deviceTableName}
AND T1.delete_flag = '0'
</select>
</mapper>

View File

@@ -0,0 +1,68 @@
<?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.inventorymanage.mapper.TraceNoAppMapper">
<select id="selectDetailsPage" resultType="com.openhis.web.inventorymanage.dto.TraceNoDetailsPageDto">
SELECT T4.id,--ID
T4.name,--药品名
T4.location_id,--药房药库
T4.location_name,
T4.lot_number,--产品批号
T4.trace_no,--追溯码
T4.status_enum,--追溯码状态
T4.unit_code,--追溯码单位
T4.operation_type,--操作类型
T4.item_type,--项目类型
T4.create_time, --进出时间
T4.tenant_id,
T4.item_table,
T4.item_id
FROM (SELECT T1.id,--ID
T2.name,--药品名
T1.location_id,--药房药库
T3.name AS location_name,
T1.lot_number,--产品批号
T1.trace_no,--追溯码
T1.status_enum,--追溯码状态
T1.unit_code,--追溯码单位
T1.operation_type,--操作类型
1 AS item_type,--项目类型
T1.create_time, --进出时间
T1.tenant_id,
T1.item_table,
T1.item_id
FROM adm_trace_no_manage AS T1
LEFT JOIN med_medication_definition AS T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_location AS T3
ON T1.location_id = T3.id
AND T3.delete_flag = '0'
WHERE T1.item_table = 'med_medication_definition'
AND T1.delete_flag = '0'
UNION
SELECT T1.id,--ID
T2.name,--药品名
T1.location_id,--药房药库
T3.name AS location_name,
T1.lot_number,--产品批号
T1.trace_no,--追溯码
T1.status_enum,--追溯码状态
T1.unit_code,--追溯码单位
T1.operation_type,--操作类型
2 AS item_type,--项目类型
T1.create_time, --进出时间
T1.tenant_id,
T1.item_table,
T1.item_id
FROM adm_trace_no_manage AS T1
LEFT JOIN adm_device_definition AS T2
ON T1.item_id = T2.id
AND T2.delete_flag = '0'
LEFT JOIN adm_location AS T3
ON T1.location_id = T3.id
AND T3.delete_flag = '0'
WHERE T1.item_table = 'adm_device_definition'
AND T1.delete_flag = '0') AS T4
${ew.customSqlSegment}
</select>
</mapper>