交叉配血,血型复核修改

This commit is contained in:
jiangs 2026-08-06 18:01:57 +08:00
parent ebb6676687
commit 88d214bc24
25 changed files with 412 additions and 16 deletions

View File

@ -0,0 +1,10 @@
package com.czblood.bus.mapper;
import com.czblood.bus.pojo.XkInstorageDetail;
import java.util.List;
public interface XkInstorageDetailMapper {
List<XkInstorageDetail> queryByBillNo(String bill_no);
List<XkInstorageDetail> queryByBloodNo(String blood_no,String product_no);
}

View File

@ -0,0 +1,7 @@
package com.czblood.bus.mapper;
import com.czblood.bus.pojo.XkInstorageMain;
public interface XkInstorageMainMapper {
XkInstorageMain queryOneByBillNo(String bill_no);
}

View File

@ -58,11 +58,13 @@ public class XkCheckBloodtype {
private String need_match;
@ApiModelProperty("单据类别")
private String bill_sort;
@ApiModelProperty("单据状态")
@ApiModelProperty("单据状态 A初登,B已配血,C已发血")
private String bill_status;
@ApiModelProperty("备注")
private String remark;
private String Sub_Blood;
private String bz1;
private String hos_id;
@ApiModelProperty("血小板抗体检测")
private String plt_test;
}

View File

@ -0,0 +1,26 @@
package com.czblood.bus.pojo;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("血液入库明细")
public class XkInstorageDetail {
private String bill_no;
private Integer sid;
private String blood_no;
private BigDecimal price;
private String remark;
private String check_abo;
private String check_rh;
private String check_person;
private Date check_date;
private String product_no;
}

View File

@ -0,0 +1,29 @@
package com.czblood.bus.pojo;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("血液入库主表")
public class XkInstorageMain {
private String bill_no;
private String org;
private String out_no;
private Date out_date;
private Date occur_date;
private String handle_person;
private String stor_mode;
private BigDecimal total_money;
private String remark;
private String input_person;
private Date input_date;
private String book_no;
private String check_sign;
}

View File

@ -30,6 +30,7 @@ public class XkTransfuseApplyBloodbreed {
private String replace_bloodbreed;
private String apply_bloodtype;
private BigDecimal ops_bleeding;
@ApiModelProperty("实际用血量")
private BigDecimal ops_fact_use;
@ApiModelProperty("输血目的")
private String intent;

View File

@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil;
import com.czblood.bus.cache.DmzdCache;
import com.czblood.bus.cache.OptionCache;
import com.czblood.bus.mapper.*;
import com.czblood.bus.pojo.XkBloodInfo;
import com.czblood.bus.pojo.xtwh.XkBloodBreed;
import com.czblood.bus.pojo.xtwh.XkDmzd;
import com.czblood.bus.pojo.xtwh.XkParameter;
@ -38,7 +39,7 @@ public class BloodBankUtil {
@Resource
SysUserMapper sysUserMapper;
@Resource
XkBloodApplyTransMapper xkBloodApplyTransMapper;
XkBloodInfoMapper xkBloodInfoMapper;
/**
@ -178,4 +179,8 @@ public class BloodBankUtil {
return applyNum.divide(applyTransNum,2, RoundingMode.HALF_UP);
}
public XkBloodInfo queryBloodInfoOne(String bloodNo,String productNo){
return xkBloodInfoMapper.queryOne(bloodNo, productNo);
}
}

View File

@ -22,6 +22,7 @@
<if test="remark != null">remark,</if>
<if test="Sub_Blood != null">Sub_Blood,</if>
<if test="bz1 != null">bz1,</if>
<if test="plt_test != null">plt_test,</if>
hos_id,bill_no,apply_no,beinhos_id,patient_name,dept_id,check_abo,check_fabo,affirm_abo
)values (
<if test="check_rh != null">#{check_rh},</if>
@ -42,6 +43,7 @@
<if test="remark != null">#{remark},</if>
<if test="Sub_Blood != null">#{Sub_Blood},</if>
<if test="bz1 != null">#{bz1},</if>
<if test="plt_test != null">#{plt_test},</if>
#{hos_id},#{bill_no},#{apply_no},#{beinhos_id},#{patient_name},#{dept_id},#{check_abo},#{check_fabo},#{affirm_abo})
</insert>
<delete id="delete">

View File

@ -0,0 +1,12 @@
<?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.bus.mapper.XkInstorageDetailMapper">
<select id="queryByBillNo" resultType="com.czblood.bus.pojo.XkInstorageDetail">
SELECT * FROM xk_instorage_detail WHERE bill_no = #{bill_no}
</select>
<select id="queryByBloodNo" resultType="com.czblood.bus.pojo.XkInstorageDetail">
select * from xk_instorage_detail where blood_no = #{blood_no} and product_no = #{product_no}
</select>
</mapper>

View File

@ -0,0 +1,8 @@
<?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.bus.mapper.XkInstorageMainMapper">
<select id="queryOneByBillNo" resultType="com.czblood.bus.pojo.XkInstorageMain">
SELECT * FROM xk_instorage_main WHERE bill_no = #{bill_no}
</select>
</mapper>

View File

@ -1,6 +1,7 @@
package com.czblood.busBloodbank.controller;
import com.czblood.bus.constants.BloodSysLogConstants;
import com.czblood.busBloodbank.pojo.VO.CheckBloodTypeListQueryVO;
import com.czblood.busBloodbank.pojo.VO.HistoryQueryVO;
import com.czblood.busBloodbank.pojo.VO.XkCheckBloodtypeVO;
import com.czblood.busBloodbank.service.CheckBloodTypeService;
@ -11,6 +12,7 @@ import com.czblood.common.core.page.TableDataInfo;
import com.czblood.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.v3.oas.annotations.Parameter;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@ -59,6 +61,18 @@ public class CheckBloodTypeController extends BaseController {
return getDataTable(mapList);
}
@ApiOperation("检索血型复核记录")
@GetMapping("/queryList")
public Result queryList(CheckBloodTypeListQueryVO checkBloodTypeListQueryVO){
return checkBloodTypeService.queryList(checkBloodTypeListQueryVO);
}
@ApiOperation("查询单个血型复核单据详情")
@GetMapping("/queryOneInfo")
public Result queryOneInfo(@Parameter(description = "血型复核单据编号") String billNo, @Parameter(description = "申请编号") String applyNo){
return checkBloodTypeService.queryOneInfo(billNo,applyNo);
}
}

View File

@ -1,5 +1,7 @@
package com.czblood.busBloodbank.controller;
import com.czblood.bus.mapper.XkBloodInfoMapper;
import com.czblood.bus.pojo.XkBloodInfo;
import com.czblood.busBloodbank.service.MatchBloodService;
import com.czblood.common.core.domain.Result;
import io.swagger.annotations.Api;
@ -30,9 +32,16 @@ public class MatchBloodController {
return matchBloodService.queryWaitInfo();
}
/**
* 先调用公共血液信息,确定某一条血液信息之后,再调用此接口
* 前端:录入血液的时候,要判断血液是否已经录入,有若干血液提示需要前端写
* @param bloodNo
* @param productNo
* @return
*/
@ApiOperation("获取血液信息")
@GetMapping("/getBloodInfo")
public Result getBloodInfo(){
return null;
@GetMapping("/getBloodInfoMatch")
public Result getBloodInfoMatch(String bloodNo,String productNo){
return matchBloodService.getBloodInfoMatch(bloodNo, productNo);
}
}

View File

@ -1,14 +1,18 @@
package com.czblood.busBloodbank.mapper;
import com.czblood.bus.pojo.XkCheckBloodtype;
import com.czblood.busBloodbank.pojo.VO.CheckBloodTypeListQueryVO;
import com.czblood.busBloodbank.pojo.VO.HistoryQueryVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
public interface CheckBloodTypeMapper {
List<Map<String,Object>> queryWaitInfo(String bbjszhxxfh);
List<Map<String,Object>> queryWaitInfo(@Param("bbjszhxxfh") Integer bbjszhxxfh);
int checkMatchedBloodNotOut(String billNo);
List<Map<String,Object>> queryOne(String billNo);
int queryOutMainCount(String billNo);
List<Map<String,Object>> queryHistoryInfo(HistoryQueryVO historyQueryVO);
List<XkCheckBloodtype> queryList(CheckBloodTypeListQueryVO checkBloodTypeListQueryVO);
}

View File

@ -1,5 +1,7 @@
package com.czblood.busBloodbank.mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -10,4 +12,15 @@ public interface MatchBloodMapper {
int queryCheckBloodTypeCount(String applyNo);
Date querySampleMaxDate(String applyNo);
List<Map<String,Object>> queryMatchMainInfo(String applyNo);
int queryOutCount(@Param("billNo") String billNo, @Param("bloodNo") String bloodNo, @Param("productNo") String productNo);
int queryBloodOutCount(@Param("billNo") String billNo, @Param("bloodNo") String bloodNo, @Param("productNo") String productNo);
int queryBackOutCount(@Param("billNo") String billNo, @Param("bloodNo") String bloodNo, @Param("productNo") String productNo);
int queryBackOutCount1(@Param("billNo") String billNo, @Param("bloodNo") String bloodNo, @Param("productNo") String productNo);
int queryBloodOutHosCount(@Param("billNo") String billNo, @Param("bloodNo") String bloodNo, @Param("productNo") String productNo);
int queryOutCountTwo(@Param("bloodNo") String bloodNo, @Param("productNo") String productNo);
int queryBloodOutTwo(@Param("bloodNo") String bloodNo, @Param("productNo") String productNo);
int queryBackOutCountTwo(@Param("bloodNo") String bloodNo, @Param("productNo") String productNo);
int queryBloodOutHosCountTwo(@Param("bloodNo") String bloodNo, @Param("productNo") String productNo);
String checkBloodNeedMatch(@Param("bloodNo") String bloodNo, @Param("productNo") String productNo);
int queryOutCountThree(@Param("bloodNo") String bloodNo, @Param("productNo") String productNo);
}

View File

@ -1,5 +1,6 @@
package com.czblood.busBloodbank.pojo.DTO;
import com.czblood.bus.pojo.XkCheckBloodtype;
import com.czblood.bus.pojo.XkTransfuseApplyBloodbreed;
import lombok.AllArgsConstructor;
import lombok.Data;
@ -14,4 +15,5 @@ import java.util.Map;
public class CheckBloodTypeDTO {
private List<Map<String,Object>> patientInfoList;
private List<XkTransfuseApplyBloodbreed> xkTransfuseApplyBloodbreedList;
private XkCheckBloodtype xkCheckBloodtype;
}

View File

@ -0,0 +1,21 @@
package com.czblood.busBloodbank.pojo.VO;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CheckBloodTypeListQueryVO {
private String stime;
private String etime;
@ApiModelProperty("血型复核单号")
private String billNo;
private String dept;
private String beinhos_id;
private String bloodNo;
@ApiModelProperty("申请单号")
private String applyNo;
}

View File

@ -1,5 +1,6 @@
package com.czblood.busBloodbank.service;
import com.czblood.busBloodbank.pojo.VO.CheckBloodTypeListQueryVO;
import com.czblood.busBloodbank.pojo.VO.HistoryQueryVO;
import com.czblood.busBloodbank.pojo.VO.XkCheckBloodtypeVO;
import com.czblood.common.core.domain.Result;
@ -12,8 +13,8 @@ public interface CheckBloodTypeService {
Result queryWaitInfo();
Result queryOne(String billNo);
Result saveData(XkCheckBloodtypeVO xkCheckBloodtypeVO);
Result delCheckBloodTypeInfo(String billNo);
List<Map<String,Object>> queryHistoryInfo(HistoryQueryVO historyQueryVO);
Result queryList(CheckBloodTypeListQueryVO checkBloodTypeListQueryVO);
Result queryOneInfo(String billNo,String applyNo);
}

View File

@ -5,4 +5,5 @@ import com.czblood.common.core.domain.Result;
public interface MatchBloodService {
Result queryWaitInfo();
Result queryOne(String billNo);
Result getBloodInfoMatch(String bloodNo, String productNo);
}

View File

@ -8,6 +8,7 @@ import com.czblood.bus.utils.BloodBankUtil;
import com.czblood.bus.utils.BloodInterfaceUtil;
import com.czblood.busBloodbank.mapper.CheckBloodTypeMapper;
import com.czblood.busBloodbank.pojo.DTO.CheckBloodTypeDTO;
import com.czblood.busBloodbank.pojo.VO.CheckBloodTypeListQueryVO;
import com.czblood.busBloodbank.pojo.VO.HistoryQueryVO;
import com.czblood.busBloodbank.pojo.VO.XkCheckBloodtypeVO;
import com.czblood.busBloodbank.service.CheckBloodTypeService;
@ -40,9 +41,11 @@ public class CheckBloodTypeServiceImpl implements CheckBloodTypeService {
@Override
public Result queryWaitInfo() {
int xxfh = 0;
//只复核标本接收之后的申请单
String bbjszhxxfh = bloodBankUtil.getParameterValue("BBJSZHXXFH");
List<Map<String, Object>> mapList = checkBloodTypeMapper.queryWaitInfo(bbjszhxxfh);
if(bbjszhxxfh.equals("Y")) xxfh = 1;
List<Map<String, Object>> mapList = checkBloodTypeMapper.queryWaitInfo(xxfh);
return new Result("0","获取数据成功!",mapList);
}
@ -82,9 +85,9 @@ public class CheckBloodTypeServiceImpl implements CheckBloodTypeService {
String billSort = xkTransfuseApply.getBill_sort();
//是否需要配血
if(billSort.equals("B")){
xkCheckBloodtype.setBill_status("Y");
xkCheckBloodtype.setNeed_match("Y");
}else{
xkCheckBloodtype.setBill_status("N");
xkCheckBloodtype.setNeed_match("N");
}
String newBillNo = bloodBankUtil.produceBillNo("XXFH");
xkCheckBloodtype.setBill_no(newBillNo);
@ -154,4 +157,22 @@ public class CheckBloodTypeServiceImpl implements CheckBloodTypeService {
public List<Map<String,Object>> queryHistoryInfo(HistoryQueryVO historyQueryVO) {
return checkBloodTypeMapper.queryHistoryInfo(historyQueryVO);
}
@Override
public Result queryList(CheckBloodTypeListQueryVO checkBloodTypeListQueryVO) {
List<XkCheckBloodtype> xkCheckBloodtypeList = checkBloodTypeMapper.queryList(checkBloodTypeListQueryVO);
return new Result("0","查询成功!",xkCheckBloodtypeList);
}
@Override
public Result queryOneInfo(String billNo,String applyNo) {
XkCheckBloodtype xkCheckBloodtype = xkCheckBloodtypeMapper.queryOne(billNo);
List<Map<String, Object>> mainList = checkBloodTypeMapper.queryOne(applyNo);
List<XkTransfuseApplyBloodbreed> xkTransfuseApplyBloodbreedList = xkTransfuseApplyBloodbreedMapper.queryOne(applyNo);
CheckBloodTypeDTO checkBloodTypeDTO = new CheckBloodTypeDTO();
checkBloodTypeDTO.setPatientInfoList(mainList);
checkBloodTypeDTO.setXkTransfuseApplyBloodbreedList(xkTransfuseApplyBloodbreedList);
checkBloodTypeDTO.setXkCheckBloodtype(xkCheckBloodtype);
return new Result("0","查询成功!",checkBloodTypeDTO);
}
}

View File

@ -2,8 +2,10 @@ package com.czblood.busBloodbank.service.impl;
import com.czblood.bus.mapper.XkTransfuseApplyBloodbreedMapper;
import com.czblood.bus.mapper.XkTransfuseApplyMapper;
import com.czblood.bus.pojo.XkBloodInfo;
import com.czblood.bus.pojo.XkTransfuseApply;
import com.czblood.bus.pojo.XkTransfuseApplyBloodbreed;
import com.czblood.bus.utils.BloodBankUtil;
import com.czblood.busBloodbank.mapper.MatchBloodMapper;
import com.czblood.busBloodbank.pojo.DTO.MatchBloodDTO;
import com.czblood.busBloodbank.service.MatchBloodService;
@ -12,6 +14,7 @@ import com.czblood.common.core.domain.Result;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -26,6 +29,8 @@ public class MatchBloodServiceImpl implements MatchBloodService {
MatchBloodUtil matchBloodUtil;
@Resource
XkTransfuseApplyBloodbreedMapper xkTransfuseApplyBloodbreedMapper;
@Resource
BloodBankUtil bloodBankUtil;
@Override
public Result queryWaitInfo() {
@ -71,4 +76,38 @@ public class MatchBloodServiceImpl implements MatchBloodService {
return new Result("1",msg,matchBloodDTO);
}
}
@Override
public Result getBloodInfoMatch(String bloodNo, String productNo) {
if(bloodNo.length() < 8) return new Result("1","血液流水号长度不能低于8位!");
XkBloodInfo xkBloodInfo = bloodBankUtil.queryBloodInfoOne(bloodNo, productNo);
if(xkBloodInfo == null) return new Result("-1","该血液信息不存在!");
Result result = matchBloodUtil.checkBloodExistOut("",bloodNo,productNo);
if(!result.getCode().equals("0")) return result;
Date validDate = xkBloodInfo.getValid_date();
Date currentTimeDate = bloodBankUtil.getCurrentTimeDate();
if(currentTimeDate.compareTo(validDate) > 0) return new Result("-1","该血液已过期!");
String bloodSort = xkBloodInfo.getBlood_sort();
if(bloodSort.equals("Z")) return new Result("-1","该血液为自体血,不可在这操作!");
Result result1 = matchBloodUtil.checkAboCheckAbnor(bloodNo, productNo);
if(!result1.getCode().equals("0")) return result1;
Result result2 = matchBloodUtil.checkBloodNeedMatch(bloodNo, productNo);
if(!result2.getCode().equals("0")) return result2;
String bloodStatus = xkBloodInfo.getBlood_status();
switch (bloodStatus){
case "2":
return new Result("-1","该血液已经报废!");
case "3":
return new Result("-1","该血液正在制备或者配血!");
case "4":
return new Result("-1","该血液已经出库!");
}
int i = matchBloodMapper.queryOutCountThree(bloodNo, productNo);
if(i > 0) return new Result("-1","该血液已经登记出库信息,请检查!");
//返回数据 TODO
return new Result("0","获取数据成功!",xkBloodInfo);
}
}

View File

@ -1,9 +1,10 @@
package com.czblood.busBloodbank.utils;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import com.czblood.bus.mapper.XkSampleInfoMapper;
import com.czblood.bus.pojo.XkSampleInfo;
import com.czblood.bus.mapper.XkInstorageDetailMapper;
import com.czblood.bus.pojo.XkBloodInfo;
import com.czblood.bus.pojo.XkInstorageDetail;
import com.czblood.bus.utils.BloodBankUtil;
import com.czblood.busBloodbank.mapper.MatchBloodMapper;
import com.czblood.common.core.domain.Result;
@ -11,6 +12,7 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
@Component
public class MatchBloodUtil {
@ -19,6 +21,8 @@ public class MatchBloodUtil {
BloodBankUtil bloodBankUtil;
@Resource
MatchBloodMapper matchBloodMapper;
@Resource
XkInstorageDetailMapper xkInstorageDetailMapper;
public Result checkSampleValid(String applyNo){
//xkSampleInfoMapper.queryOne()
@ -37,4 +41,56 @@ public class MatchBloodUtil {
}
return new Result("0","校验通过!");
}
/**
* 判断血液是否已经出库
* @param bloodNo
* @param productNo
* @param billNo
* @return
*/
public Result checkBloodExistOut(String bloodNo,String productNo,String billNo){
if(billNo != null && !billNo.equals("")){
int i = matchBloodMapper.queryOutCount(bloodNo, productNo, billNo);
if(i > 0) return new Result("-1","该血液流水号:"+bloodNo+"产品码:"+productNo+"已在临床发血出库!");
int i1 = matchBloodMapper.queryBloodOutCount(bloodNo, productNo, billNo);
if(i1 > 0) return new Result("-1","该血液流水号:"+bloodNo+"产品码:"+productNo+"已在调血出库!");
int i2 = matchBloodMapper.queryBackOutCount(bloodNo, productNo, billNo);
if(i2 > 0) return new Result("-1","该血液流水号:"+bloodNo+"产品码:"+productNo+"已在血站退血出库!");
int i3 = matchBloodMapper.queryBackOutCount1(bloodNo, productNo, billNo);
if(i3 > 0) return new Result("-1","该血液流水号:"+bloodNo+"产品码:"+productNo+"已在血站退血出库!");
int i4 = matchBloodMapper.queryBloodOutHosCount(bloodNo, productNo, billNo);
if(i4 > 0) return new Result("-1","该血液流水号:"+bloodNo+"产品码:"+productNo+"已在协议医院出库!");
}else{
int i = matchBloodMapper.queryOutCountTwo(bloodNo, productNo);
if(i > 0) return new Result("-1","该血液流水号:"+bloodNo+"产品码:"+productNo+"已在临床发血出库!");
int i1 = matchBloodMapper.queryBloodOutTwo(bloodNo, productNo);
if(i1 > 0) return new Result("-1","该血液流水号:"+bloodNo+"产品码:"+productNo+"已在调血出库!");
int i2 = matchBloodMapper.queryBackOutCountTwo(bloodNo, productNo);
if(i2 > 0) return new Result("-1","该血液流水号:"+bloodNo+"产品码:"+productNo+"已在血站退血出库!");
int i3 = matchBloodMapper.queryBloodOutHosCountTwo(bloodNo, productNo);
if(i3 > 0) return new Result("-1","该血液流水号:"+bloodNo+"产品码:"+productNo+"已在协议医院出库!");
}
return new Result("0","校验通过!");
}
public Result checkAboCheckAbnor(String bloodNo,String productNo){
XkBloodInfo xkBloodInfo = bloodBankUtil.queryBloodInfoOne(bloodNo, productNo);
List<XkInstorageDetail> xkInstorageDetailList = xkInstorageDetailMapper.queryByBloodNo(bloodNo, productNo);
if(xkInstorageDetailList.size() > 0){
String checkAbo = xkInstorageDetailList.get(0).getCheck_abo();
String checkRh = xkInstorageDetailList.get(0).getCheck_rh();
if(!checkAbo.equals(xkBloodInfo.getBlood_type()) || !checkRh.equals(xkBloodInfo.getRh_blood_type())){
return new Result("-1","该血液流水号:"+bloodNo+"产品码:"+productNo+"的Abo型或Rh型与入库时的不一致!");
}
}
return new Result("0","校验通过!");
}
public Result checkBloodNeedMatch(String bloodNo,String productNo){
String isMatch = matchBloodMapper.checkBloodNeedMatch(bloodNo, productNo);
if(isMatch.equals("Y")) return new Result("0","校验通过!");
return new Result("-1","该血液流水号:"+bloodNo+"产品码:"+productNo+"该血液流水号对应的血液不需要进行配血操作!");
}
}

View File

@ -18,7 +18,7 @@
(((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,'') = ''))
-- 两天前 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))
<if test="bbjszhxxfh == 'Y'"><![CDATA[and xk_transfuse_apply.bill_no in (select Relate_ApplyNo from xk_sample_info where TakeOver_Man is not null or TakeOver_Man <> '')]]></if>
<if test="bbjszhxxfh != null and bbjszhxxfh == 1"><![CDATA[and xk_transfuse_apply.bill_no in (select Relate_ApplyNo from xk_sample_info where TakeOver_Man is not null or TakeOver_Man <> '')]]></if>
</select>
<select id="checkMatchedBloodNotOut" resultType="java.lang.Integer">
SELECT Count ( xk_match_detail.blood_no )
@ -73,4 +73,14 @@
</where>
</select>
<select id="queryList" resultType="com.czblood.bus.pojo.XkCheckBloodtype">
SELECT * FROM xk_check_bloodtype
WHERE ( xk_check_bloodtype.test_date between #{stime} and #{etime} )
<if test="billNo != null">AND ( xk_check_bloodtype.bill_no = #{billNo} ) </if>
<if test="applyNo != null">AND ( xk_check_bloodtype.apply_no = #{applyNo} )</if>
<if test="beinhos_id != null">AND ( xk_check_bloodtype.beinhos_id like '%'+#{beinhos_id}+'%' )</if>
<![CDATA[and ( isnull( xk_check_bloodtype.remark,'') <> '血站配型') ]]>
<![CDATA[and ( isnull( xk_check_bloodtype.remark,'') <> '系统生成') ]]>
</select>
</mapper>

View File

@ -78,4 +78,83 @@
( xk_transfuse_apply.bill_no = #{applyNo})
</select>
<select id="queryOutCount" resultType="java.lang.Integer">
SELECT count ( *) FROM xk_out_detail , xk_out_main
WHERE xk_out_detail.blood_no = #{bloodNo} AND xk_out_main.bill_no =xk_out_detail.bill_no AND xk_out_main.check_sign ='N' AND
<![CDATA[xk_out_main.bill_no <> #{billNo} and ]]>
xk_out_detail.product_no = #{productNo}
</select>
<select id="queryBloodOutCount" resultType="java.lang.Integer">
SELECT count ( *) FROM xk_bloodout_detail , xk_bloodout_main
WHERE xk_bloodout_detail.blood_no = #{bloodNo} AND xk_bloodout_main.bill_no =xk_bloodout_detail.bill_no AND
xk_bloodout_main.out_flag ='N' AND
<![CDATA[ xk_bloodout_main.bill_no <> #{billNo} and ]]>
xk_bloodout_detail.product_no = #{productNo}
</select>
<select id="queryBackOutCount" resultType="java.lang.Integer">
SELECT count ( *) FROM xk_backout_main , xk_backout_detail
WHERE xk_backout_detail.blood_no = #{bloodNo} AND
xk_backout_main.bill_no =xk_backout_detail.bill_no AND
xk_backout_main.org_type ='A' AND xk_backout_main.audit_person IS Null AND
<![CDATA[xk_backout_main.bill_no <> #{billNo} AND ]]>
xk_backout_detail.cancle_flag ='N' and xk_backout_detail.product_no = #{productNo}
</select>
<select id="queryBackOutCount1" resultType="java.lang.Integer">
SELECT count ( *)
FROM xk_backout_main , xk_backout_detail
WHERE xk_backout_detail.blood_no = #{bloodNo} AND
xk_backout_main.bill_no =xk_backout_detail.bill_no AND
xk_backout_main.org_type ='A' AND
xk_backout_main.bill_cancle_flag ='Y' AND
xk_backout_main.out_flag ='Y' and
xk_backout_detail.product_no = #{productNo}
</select>
<select id="queryBloodOutHosCount" resultType="java.lang.Integer">
SELECT count(*) into :ll_count_bloodout_hos FROM xk_bloodout_hos_main,dbo.xk_bloodout_hos_detail
WHERE xk_bloodout_hos_main.Bill_No = xk_bloodout_hos_detail.Bill_No
AND xk_bloodout_hos_main.Audit_Flag = 'Y'
AND xk_bloodout_hos_detail.Blood_No = #{bloodNo}
AND product_no = #{productNo}
<![CDATA[and xk_bloodout_hos_detail.bill_no <> #{billNo} ]]>
</select>
<select id="queryOutCountTwo" resultType="java.lang.Integer">
SELECT count ( *) FROM xk_out_detail , xk_out_main WHERE xk_out_detail.blood_no = #{bloodNo} AND
xk_out_main.bill_no =xk_out_detail.bill_no AND
xk_out_main.check_sign ='N' and
xk_out_detail.product_no = #{productNo}
</select>
<select id="queryBloodOutTwo" resultType="java.lang.Integer">
SELECT count ( *) FROM xk_bloodout_detail , xk_bloodout_main
WHERE xk_bloodout_detail.blood_no = #{bloodNo} AND
xk_bloodout_main.bill_no =xk_bloodout_detail.bill_no AND
xk_bloodout_main.out_flag ='N' and
xk_bloodout_detail.product_no = #{productNo}
</select>
<select id="queryBackOutCountTwo" resultType="java.lang.Integer">
SELECT count ( *) FROM xk_backout_main , xk_backout_detail
WHERE xk_backout_detail.blood_no = #{bloodNo} AND
xk_backout_main.bill_no =xk_backout_detail.bill_no AND
xk_backout_main.org_type ='A' AND
xk_backout_main.audit_person IS Null AND
xk_backout_detail.cancle_flag ='N' and
xk_backout_detail.product_no = #{productNo}
</select>
<select id="queryBloodOutHosCountTwo" resultType="java.lang.Integer">
SELECT count(*) FROM xk_bloodout_hos_main,dbo.xk_bloodout_hos_detail
WHERE xk_bloodout_hos_main.Bill_No = xk_bloodout_hos_detail.Bill_No
AND xk_bloodout_hos_main.Audit_Flag = 'Y'
AND xk_bloodout_hos_detail.Blood_No = #{bloodNo}
AND product_no = #{productNo}
</select>
<select id="checkBloodNeedMatch" resultType="java.lang.String">
SELECT xk_blood_breed.is_match
FROM xk_blood_breed , xk_blood_info
WHERE ( xk_blood_breed.breed_code =xk_blood_info.blood_breed ) and
xk_blood_info.blood_no = #{bloodNo} and xk_blood_info.product_no= #{productNo};
</select>
<select id="queryOutCountThree" resultType="java.lang.Integer">
SELECT Count ( *) FROM xk_out_detail
Where blood_no = #{bloodNo}
<![CDATA[and product_no = #{productNo} AND isnull(exp1,'N') <> 'Y']]>
</select>
</mapper>

View File

@ -456,3 +456,10 @@ if not exists(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'xk_s
alter table xk_search_transfuse_bill add hos_id varchar(10)
END
GO
if not exists(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'xk_check_bloodtype' AND COLUMN_NAME = 'plt_test')
BEGIN
alter table xk_check_bloodtype add plt_test varchar(5)
END
GO

View File

@ -112,4 +112,21 @@ IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_charge_deta
ALTER TABLE xk_charge_detail ADD CONSTRAINT PK_xk_charge_detail PRIMARY KEY CLUSTERED (bill_no,sid);
END
GO
GO
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_instorage_main' AND type = 'PK' )
BEGIN
ALTER TABLE xk_instorage_main ADD CONSTRAINT PK_xk_instorage_main PRIMARY KEY CLUSTERED (bill_no);
END
GO
ALTER TABLE xk_instorage_detail ALTER COLUMN product_no VARCHAR(18) NOT NULL;
IF NOT EXISTS (SELECT 1 FROM sys.key_constraints WHERE name = 'PK_xk_instorage_detail' AND type = 'PK' )
BEGIN
ALTER TABLE xk_instorage_detail ADD CONSTRAINT PK_xk_instorage_detail PRIMARY KEY CLUSTERED (bill_no,blood_no,product_no);
END
GO