2026-08-12 09:13:39 +08:00
<?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.czblood.busBloodbank.mapper.BloodOutMapper" >
<select id= "queryApplyBloodTypeCount" resultType= "java.lang.Integer" >
SELECT COUNT(1) FROM xk_transfuse_apply_bloodbreed A JOIN xk_blood_breed B ON B.breed_code=A.blood_breed AND B.Is_match='N' WHERE A.bill_no=#{billNo} and b.blood_kind = '0002'
</select>
2026-08-14 10:14:35 +08:00
<select id= "queryApplyInfo" resultType= "java.util.Map" >
SELECT xk_patient_info.patient_name,
xk_patient_info.age,
xk_patient_info.patient_sex,
xk_transfuse_apply.bill_no,
xk_patient_info.transfuse_history,
xk_patient_info.gestation_history,
xk_patient_info.parturition_history,
xk_patient_info.reaction_history,
xk_patient_info.match_history,
xk_transfuse_apply.apply_date,
xk_transfuse_apply.abo_type,
xk_transfuse_apply.rh_type,
xk_transfuse_apply.diagnoses,
xk_transfuse_apply.intent,
xk_transfuse_apply.apply_type,
xk_transfuse_apply.zone_id,
xk_transfuse_apply.use3_date,
xk_transfuse_apply.use2_date,
xk_transfuse_apply.use1_date,
xk_transfuse_apply.beinhos_id,
xk_transfuse_apply.dept_id,
xk_transfuse_apply.patient_bed,
xk_check_bloodtype.affirm_abo,
xk_check_bloodtype.check_rh,
xk_check_bloodtype.affirm_antibody,
xk_check_bloodtype.Sub_Blood
FROM xk_patient_info RIGHT OUTER JOIN xk_transfuse_apply ON xk_patient_info.beinhos_id = xk_transfuse_apply.beinhos_id,
xk_check_bloodtype
WHERE
( xk_transfuse_apply.bill_no = xk_check_bloodtype.apply_no ) and
( xk_transfuse_apply.bill_no = #{billNo}) AND
( xk_transfuse_apply.bill_sort = 'B') AND
( xk_transfuse_apply.operation_type = 'C' OR isnull(xk_transfuse_apply.operation_type,'') = '')
union
SELECT xk_patient_info.patient_name,
xk_patient_info.age,
xk_patient_info.patient_sex,
xk_transfuse_apply.bill_no,
xk_patient_info.transfuse_history,
xk_patient_info.gestation_history,
xk_patient_info.parturition_history,
xk_patient_info.reaction_history,
xk_patient_info.match_history,
xk_transfuse_apply.apply_date,
xk_transfuse_apply.abo_type,
xk_transfuse_apply.rh_type,
xk_transfuse_apply.diagnoses,
xk_transfuse_apply.intent,
xk_transfuse_apply.apply_type,
xk_transfuse_apply.zone_id,
xk_transfuse_apply.use3_date,
xk_transfuse_apply.use2_date,
xk_transfuse_apply.use1_date,
xk_transfuse_apply.beinhos_id,
xk_transfuse_apply.dept_id,
xk_transfuse_apply.patient_bed,
space(4) affirm_abo,
space(4) check_rh,
space(8) affirm_antibody,
space(8) Sub_Blood
FROM xk_patient_info RIGHT OUTER JOIN xk_transfuse_apply ON xk_patient_info.beinhos_id = xk_transfuse_apply.beinhos_id
WHERE
( xk_transfuse_apply.bill_no = #{billNo}) and
( xk_transfuse_apply.bill_sort = 'C')AND
( xk_transfuse_apply.operation_type = 'C' OR isnull(xk_transfuse_apply.operation_type,'') = '')
union
SELECT xk_patient_info.patient_name,
xk_patient_info.age,
xk_patient_info.patient_sex,
xk_transfuse_apply.bill_no,
xk_patient_info.transfuse_history,
xk_patient_info.gestation_history,
xk_patient_info.parturition_history,
xk_patient_info.reaction_history,
xk_patient_info.match_history,
xk_transfuse_apply.apply_date,
xk_transfuse_apply.abo_type,
xk_transfuse_apply.rh_type,
xk_transfuse_apply.diagnoses,
xk_transfuse_apply.intent,
xk_transfuse_apply.apply_type,
xk_transfuse_apply.zone_id,
xk_transfuse_apply.use3_date,
xk_transfuse_apply.use2_date,
xk_transfuse_apply.use1_date,
xk_transfuse_apply.beinhos_id,
xk_transfuse_apply.dept_id,
xk_transfuse_apply.patient_bed,
xk_check_bloodtype.affirm_abo,
xk_check_bloodtype.check_rh,
xk_check_bloodtype.affirm_antibody ,
xk_check_bloodtype.Sub_Blood
FROM xk_patient_info RIGHT OUTER JOIN xk_transfuse_apply ON xk_patient_info.beinhos_id = xk_transfuse_apply.beinhos_id,
xk_check_bloodtype
WHERE
( xk_transfuse_apply.bill_no = xk_check_bloodtype.apply_no ) and
( xk_transfuse_apply.bill_sort = 'A')AND
( xk_transfuse_apply.operation_type = 'C' OR isnull(xk_transfuse_apply.operation_type,'') = '')AND
( xk_transfuse_apply.bill_no = #{billNo})
</select>
<select id= "queryWaitInfo" resultType= "java.util.Map" >
SELECT xk_transfuse_apply.bill_no,
xk_patient_info.patient_name,
xk_transfuse_apply.dept_id ,xk_transfuse_apply_bloodbreed.blood_breed
FROM xk_transfuse_apply with (nolock) LEFT OUTER JOIN xk_patient_info with (nolock) ON xk_transfuse_apply.beinhos_id = xk_patient_info.beinhos_id ,xk_dmzd,
xk_transfuse_apply_bloodbreed with (nolock)
WHERE (xk_transfuse_apply_bloodbreed.bill_no = xk_transfuse_apply.bill_no) and
(xk_transfuse_apply.check_sign = 'Y' or xk_transfuse_apply.check_sign = 'y' )and
(( bill_sort = 'A' AND bill_stasus = 'F') OR (bill_sort = 'C' AND bill_stasus = 'B' )OR (bill_sort = 'B' AND (bill_stasus= 'C' OR bill_stasus = 'S')) ) AND
(xk_transfuse_apply.operation_type ='C' or isnull(xk_transfuse_apply.operation_type,'') = '')and
(( (xk_transfuse_apply.check_explain = xk_dmzd.wordbook_code) and (xk_dmzd.wordbook_sign ='sqdshyj')AND xk_dmzd.exp1 = 'Y' ) or isnull(xk_transfuse_apply.check_explain,'') = '') and
(xk_transfuse_apply.abnor_next = 'Y' or isnull(xk_transfuse_apply.abnor_next,'') = '')
-- 两天前 00:00:00 当天23:59:59
AND xk_transfuse_apply.apply_date between DATEADD(DD, DATEDIFF(DD,0,GETDATE())-2, 0) and DATEADD(SS, -1, DATEADD(DD, DATEDIFF(DD,0,GETDATE())+1, 0))
</select>
<select id= "queryBloodBackOutCount" resultType= "com.czblood.bus.pojo.XkBackoutDetail" >
SELECT xk_backout_detail.* FROM xk_backout_main , xk_backout_detail
WHERE ( xk_backout_main.bill_no =xk_backout_detail.bill_no )
<![CDATA[ AND isnull ( xk_backout_main.audit_person , '' ) <> '' ]]>
and xk_backout_detail.blood_no = #{bloodNo} and xk_backout_detail.product_no = #{productNo}
</select>
<select id= "queryBloodOutInfoCount" resultType= "java.util.Map" >
SELECT xk_out_main.bill_no,xk_out_main.apply_no,(select wordbook_name from xk_dmzd where wordbook_sign = 'ks' and xk_transfuse_apply.dept_id = wordbook_code) as dept_name,xk_transfuse_apply.beinhos_id,xk_patient_info.patient_name
FROM xk_out_main left join xk_transfuse_apply on (xk_out_main.apply_no = xk_transfuse_apply.bill_no), xk_out_detail,xk_patient_info
WHERE xk_out_main.bill_no = xk_out_detail.bill_no and xk_out_main.beinhos_id = xk_patient_info.beinhos_id
AND xk_out_main.check_sign ='Y' AND xk_out_detail.blood_no = #{bloodNo} and xk_out_detail.product_no = #{productNo}
</select>
<select id= "queryDiscardCount" resultType= "com.czblood.bus.pojo.XkDiscardMain" >
SELECT xk_discard_main.*
FROM xk_discard_main , xk_discard_detail
WHERE ( xk_discard_main.bill_no =xk_discard_detail.bill_no )
<![CDATA[AND ( isnull ( xk_discard_main.audit_person , '' ) <> '' ) ]]>
and ( xk_discard_detail.blood_no = #{bloodNo} ) and xk_discard_detail.product_no = #{productNo}
</select>
<select id= "queryMatchBloodInfo" resultType= "java.util.Map" >
SELECT isnull ( xk_dmzd.remark , '' ) as can_send , xk_dmzd.wordbook_name as result,xk_match_detail.match_method,xk_match_detail.check_method
FROM xk_dmzd , xk_match_detail , xk_match_main
WHERE ( xk_match_detail.result =xk_dmzd.wordbook_code ) AND
( xk_dmzd.wordbook_sign ='pxjg' ) AND
( xk_match_main.bill_no =xk_match_detail.bill_no ) AND
( xk_match_detail.blood_no = #{bloodNo} ) and
( xk_match_detail.product_no = #{productNo} ) AND
( xk_match_main.apply_no = #{applyNo} )
</select>
<select id= "queryXkMatchMain" resultType= "com.czblood.bus.pojo.XkMatchMain" >
SELECT * FROM xk_match_main Where apply_no = #{applyNo} AND bill_status ='A'
</select>
2026-08-14 17:47:02 +08:00
<select id= "queryMaxCheckNo" resultType= "java.lang.String" >
select top 1 bill_no from xk_check_bloodtype where apply_no = #{applyNo} order by test_date
</select>
<select id= "querySampleMaxPickDate" resultType= "java.util.Date" >
SELECT Max(Pick_Date) FROM xk_sample_info Where Relate_Applyno = #{applyNo}
</select>
2026-08-17 18:00:40 +08:00
<select id= "queryCheckBloodtype" resultType= "com.czblood.bus.pojo.XkCheckBloodtype" >
SELECT * FROM xk_check_bloodtype
Where apply_no = #{applyNo} And ( bill_status ='A' OR bill_status ='B' )
</select>
2026-08-18 18:01:34 +08:00
<select id= "queryList" resultType= "java.util.Map" >
SELECT distinct xk_out_main.bill_no,
xk_out_main.occur_date,
xk_out_main.handle_person,
xk_out_main.apply_no,
xk_out_main.patient_name,
xk_out_main.beinhos_id,
xk_out_main.dept_id,
xk_out_main.check_sign,
xk_out_main.exp2,
xk_out_main.notify_time,
xk_out_main.receive_id,
xk_out_main.receive_person,
SUBSTRING(( SELECT ',' +xx.breed_name+CONVERT(varchar(255),CONVERT(decimal(10,1),x.blood_num))+x.unit
from xk_transfuse_apply_bloodbreed x join xk_blood_breed xx on xx.breed_code=x.blood_breed where x.bill_no=xk_out_main.apply_no FOR XML PATH('') ),2,999) as req_breed
FROM xk_out_main,xk_out_detail
WHERE ( xk_out_main.bill_no = xk_out_detail.bill_no) and
( xk_out_main.bill_sort = 'C' )
and xk_out_main.occur_date between #{stime} and #{etime}
<if test= "billNo != null" > and xk_out_main.bill_no = #{billNo}</if>
<if test= "beinhos_id != null" > and xk_out_main.beinhos_id = #{beinhos_id}</if>
<if test= "checkSign != null" > and xk_out_main.check_sign = #{checkSign}</if>
<if test= "dept != null" > and xk_out_main.dept_id = #{dept}</if>
<if test= "sendPerson != null" > and xk_out_main.handle_person = #{sendPerson}</if>
<if test= "bloodNo != null" > and xk_out_detail.blood_no = #{bloodNo}</if>
</select>
<select id= "queryStockInfo" resultType= "java.util.Map" >
SELECT
xk_blood_info.blood_no,
xk_blood_info.blood_breed,
xk_blood_info.blood_type,
xk_blood_info.product_no,
xk_blood_info.rh_blood_type,
xk_blood_info.capacity,
xk_blood_info.unit,
xk_blood_info.valid_date,
xk_blood_info.auto_no ,
space(10) as match_method,
space(10) as check_method,
space(10) as result,
space(10) as choose,
space(10) as special_deal
FROM xk_blood_info,xk_blood_breed
WHERE ( xk_blood_info.blood_status in (1,3 ) )
and (xk_blood_breed.breed_code = xk_blood_info.blood_breed )
<![CDATA[AND(xk_blood_breed.is_match <> 'Y' OR isnull(xk_blood_breed.is_match,'') = '')]]>
AND ( xk_blood_info.blood_sort in('C','W' )OR isnull(xk_blood_info.blood_sort,'') = '')
and(blood_breed in('0047','0050')) AND (xk_blood_info.blood_type ='O')
union
select
xk_blood_info.blood_no,
xk_blood_info.blood_breed,
xk_blood_info.blood_type,
xk_blood_info.product_no,
xk_blood_info.rh_blood_type,
xk_blood_info.capacity,
xk_blood_info.unit,
xk_blood_info.valid_date,
xk_blood_info.auto_no ,
xk_match_detail.match_method as match_method,
xk_match_detail.check_method as check_method,
xk_match_detail.result as result,
'' as choose,
'' as special_deal
from xk_blood_info,xk_out_main ,xk_out_detail
left join xk_match_detail on (xk_out_detail.blood_no = xk_match_detail.blood_no and xk_match_detail.product_no = xk_out_detail.product_no)
left join xk_match_main on (xk_match_detail.bill_no = xk_match_main.bill_no)
where xk_out_main.bill_no = xk_out_detail.bill_no
and xk_blood_info.blood_no = xk_out_detail.blood_no and xk_blood_info.product_no = xk_out_detail.product_no
and xk_out_main.bill_no = #{billNo}
AND ( xk_blood_info.blood_sort in('C','W' )OR isnull(xk_blood_info.blood_sort,'') = '')
<![CDATA[ AND(xk_match_main.bill_status <> 'ZF') ]]>
</select>
<select id= "queryMoreBloodOutList" resultType= "java.util.Map" >
SELECT xk_match_main.apply_no,
xk_match_main.dept_id,
xk_match_main.patient_name,
xk_match_main.beinhos_id,
xk_transfuse_apply.patient_bed,
count(xk_match_detail.blood_no) as sl,
sum(xk_blood_info.capacity) as rl,xk_blood_info.unit,xk_blood_info.blood_breed
FROM xk_blood_info,
xk_match_detail,
xk_match_main,
xk_transfuse_apply ,xk_dmzd
WHERE ( xk_blood_info.blood_no = xk_match_detail.blood_no )
and ( xk_match_detail.bill_no = xk_match_main.bill_no )
and ( xk_match_main.apply_no = xk_transfuse_apply.bill_no )
and (xk_transfuse_apply.bill_stasus = 'D' )
and (xk_blood_info.blood_status = '1')
<if test= "dept != null" > and (xk_match_main.dept_id = #{dept} or isnull(xk_match_main.dept_id,'') = '')</if>
<if test= "beinhos_id != null" > and (xk_match_main.beinhos_id = #{beinhos_id} or isnull(xk_match_main.beinhos_id,'') = '' )</if>
<if test= "patientName != null" > and (xk_match_main.patient_name like '%'+#{patientName}+'%' or isnull(xk_match_main.patient_name,'') = '')</if>
<if test= "bed != null" > and (xk_transfuse_apply.patient_bed = #{bed} or isnull(xk_transfuse_apply.patient_bed,'') ='') </if>
and (xk_transfuse_apply.apply_date between #{stime} and #{etime})
and (xk_match_detail.result = xk_dmzd.wordbook_code and xk_dmzd.wordbook_sign = 'pxjg' and xk_dmzd.remark = 'Y')
group by xk_match_main.apply_no,
xk_match_main.dept_id,
xk_match_main.patient_name,
xk_match_main.beinhos_id,
xk_transfuse_apply.patient_bed,xk_blood_info.unit,xk_blood_info.blood_breed
</select>
2026-08-12 09:13:39 +08:00
</mapper>