临床发血,打印,多次发血

This commit is contained in:
jiangs 2026-08-18 18:01:34 +08:00
parent 06478b0bad
commit 9d6c723c7b
8 changed files with 224 additions and 1 deletions

View File

@ -4,6 +4,8 @@ package com.czblood.busBloodbank.controller;
import com.czblood.bus.constants.BloodSysLogConstants;
import com.czblood.busBloodbank.pojo.VO.BloodOutAuditVO;
import com.czblood.busBloodbank.pojo.VO.BloodOutInfoVO;
import com.czblood.busBloodbank.pojo.VO.BloodOutMoreQueryVO;
import com.czblood.busBloodbank.pojo.VO.BloodOutQueryVO;
import com.czblood.busBloodbank.service.BloodOutService;
import com.czblood.common.annotation.Log;
import com.czblood.common.core.controller.BaseController;
@ -73,4 +75,28 @@ public class BloodOutController extends BaseController {
return bloodOutService.printReport(billNo, templateName);
}
@ApiOperation("查询发血单数据列表")
@PostMapping("/queryList")
public Result queryList(@RequestBody BloodOutQueryVO bloodOutQueryVO){
return bloodOutService.queryList(bloodOutQueryVO);
}
@ApiOperation("查询单条发血单数据")
@GetMapping("/queryInfo")
public Result queryInfo(String billNo){
return bloodOutService.queryInfo(billNo);
}
@ApiOperation("多次发血")
@GetMapping("/moreBloodOut")
public Result moreBloodOut(){
return null;
}
@ApiOperation("查询多次发血单数据列表")
@GetMapping("/queryMoreBloodOutList")
public Result queryMoreBloodOutList(BloodOutMoreQueryVO bloodOutMoreQueryVO){
return bloodOutService.queryMoreBloodOutList(bloodOutMoreQueryVO);
}
}

View File

@ -1,6 +1,8 @@
package com.czblood.busBloodbank.mapper;
import com.czblood.bus.pojo.*;
import com.czblood.busBloodbank.pojo.VO.BloodOutMoreQueryVO;
import com.czblood.busBloodbank.pojo.VO.BloodOutQueryVO;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
@ -19,5 +21,8 @@ public interface BloodOutMapper {
String queryMaxCheckNo(String applyNo);
Date querySampleMaxPickDate(String applyNo);
List<XkCheckBloodtype> queryCheckBloodtype(String applyNo);
List<Map<String,Object>> queryList(BloodOutQueryVO bloodOutQueryVO);
List<Map<String,Object>> queryStockInfo(String billNo);
List<Map<String,Object>> queryMoreBloodOutList(BloodOutMoreQueryVO bloodOutMoreQueryVO);
}

View File

@ -14,4 +14,5 @@ import java.util.Map;
public class BloodOutDTO {
List<Map<String,Object>> applyInfoList;
List<XkTransfuseApplyBloodbreed> xkTransfuseApplyBloodbreedList;
List<Map<String,Object>> stockInfoList;
}

View File

@ -0,0 +1,17 @@
package com.czblood.busBloodbank.pojo.VO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BloodOutMoreQueryVO {
private String stime;
private String etime;
private String dept;
private String bed;
private String beinhos_id;
private String patientName;
}

View File

@ -0,0 +1,24 @@
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 BloodOutQueryVO {
private String stime;
private String etime;
private String beinhos_id;
@ApiModelProperty("临床发血单编号")
private String billNo;
@ApiModelProperty("审核标志")
private String checkSign;
@ApiModelProperty("发血人")
private String sendPerson;
@ApiModelProperty("血液流水号")
private String bloodNo;
private String dept;
}

View File

@ -2,6 +2,8 @@ package com.czblood.busBloodbank.service;
import com.czblood.busBloodbank.pojo.VO.BloodOutAuditVO;
import com.czblood.busBloodbank.pojo.VO.BloodOutInfoVO;
import com.czblood.busBloodbank.pojo.VO.BloodOutMoreQueryVO;
import com.czblood.busBloodbank.pojo.VO.BloodOutQueryVO;
import com.czblood.common.core.domain.Result;
public interface BloodOutService {
@ -12,4 +14,7 @@ public interface BloodOutService {
Result bloodOutAudit(BloodOutAuditVO bloodOutAuditVO);
Result notifyMessage(String billNo);
Result printReport(String billNo, String templateName);
Result queryList(BloodOutQueryVO bloodOutQueryVO);
Result queryInfo(String billNo);
Result queryMoreBloodOutList(BloodOutMoreQueryVO bloodOutMoreQueryVO);
}

View File

@ -1,17 +1,21 @@
package com.czblood.busBloodbank.service.impl;
import cn.hutool.core.date.DateUtil;
import com.czblood.bus.constants.BloodPrintTypeConstants;
import com.czblood.bus.mapper.*;
import com.czblood.bus.pojo.*;
import com.czblood.bus.pojo.inter.BloodOutAuditRequest;
import com.czblood.bus.pojo.xtwh.XkBloodBreed;
import com.czblood.bus.utils.BloodBankUtil;
import com.czblood.bus.utils.BloodInterfaceUtil;
import com.czblood.bus.utils.ReportUtil;
import com.czblood.busBloodbank.mapper.BloodOutMapper;
import com.czblood.busBloodbank.pojo.DTO.BloodOutDTO;
import com.czblood.busBloodbank.pojo.DTO.BloodOutInfoDTO;
import com.czblood.busBloodbank.pojo.VO.BloodOutAuditVO;
import com.czblood.busBloodbank.pojo.VO.BloodOutInfoVO;
import com.czblood.busBloodbank.pojo.VO.BloodOutMoreQueryVO;
import com.czblood.busBloodbank.pojo.VO.BloodOutQueryVO;
import com.czblood.busBloodbank.service.BloodOutService;
import com.czblood.busBloodbank.utils.BloodOutUtil;
import com.czblood.busBloodbank.utils.MatchBloodUtil;
@ -49,6 +53,8 @@ public class BloodOutServiceImpl implements BloodOutService {
BloodOutUtil bloodOutUtil;
@Resource
XkOutDetailMapper xkOutDetailMapper;
@Resource
ReportUtil reportUtil;
@ -261,7 +267,44 @@ public class BloodOutServiceImpl implements BloodOutService {
@Override
public Result printReport(String billNo, String templateName) {
return null;
XkOutMain xkOutMain = xkOutMainMapper.queryOne(billNo);
if(xkOutMain == null) return new Result("-1","该单据不存在!");
String checkSign = BloodBankUtil.isBank(xkOutMain.getCheck_sign());
if(!checkSign.equals("Y")) return new Result("-1","该单据没有审核,不能打印!");
ReportParam reportParam = new ReportParam();
reportParam.setBillNo(billNo);
switch (templateName){
case BloodPrintTypeConstants.BLOOD_OUT: //临床发血单
return reportUtil.printToPdf(BloodPrintTypeConstants.BLOOD_OUT, reportParam, true);
}
return new Result("-1","打印模板不存在!");
}
@Override
public Result queryList(BloodOutQueryVO bloodOutQueryVO) {
List<Map<String,Object>> mapList = bloodOutMapper.queryList(bloodOutQueryVO);
return new Result("0","查询成功",mapList);
}
@Override
public Result queryInfo(String billNo) {
XkOutMain xkOutMain = xkOutMainMapper.queryOne(billNo);
if(xkOutMain == null) return new Result("-1","该单据不存在!");
String applyNo = xkOutMain.getApply_no();
List<Map<String, Object>> applyInfoList = bloodOutMapper.queryApplyInfo(applyNo);
BloodOutDTO bloodOutDTO = new BloodOutDTO();
bloodOutDTO.setApplyInfoList(applyInfoList);
List<XkTransfuseApplyBloodbreed> xkTransfuseApplyBloodbreedList = xkTransfuseApplyBloodbreedMapper.queryOne(applyNo);
bloodOutDTO.setXkTransfuseApplyBloodbreedList(xkTransfuseApplyBloodbreedList);
List<Map<String, Object>> queryStockInfoList = bloodOutMapper.queryStockInfo(applyNo);
bloodOutDTO.setStockInfoList(queryStockInfoList);
return new Result("0","查询成功",bloodOutDTO);
}
@Override
public Result queryMoreBloodOutList(BloodOutMoreQueryVO bloodOutMoreQueryVO) {
List<Map<String,Object>> mapList = bloodOutMapper.queryMoreBloodOutList(bloodOutMoreQueryVO);
return new Result("0","查询成功",mapList);
}

View File

@ -168,4 +168,106 @@
SELECT * FROM xk_check_bloodtype
Where apply_no = #{applyNo} And ( bill_status ='A' OR bill_status ='B' )
</select>
<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>
</mapper>