血袋回收,修改护士工作站条码打印功能

This commit is contained in:
jiangs 2026-09-09 18:00:01 +08:00
parent 60f1dd1f1a
commit a50c2a69f4
20 changed files with 289 additions and 18 deletions

View File

@ -1,4 +1,9 @@
package com.czblood.bus.mapper;
import com.czblood.bus.pojo.XkRecycleBagDetail;
import java.util.List;
public interface XkRecycleBagDetailMapper {
List<XkRecycleBagDetail> queryList(String billNo);
}

View File

@ -1,4 +1,7 @@
package com.czblood.bus.mapper;
import com.czblood.bus.pojo.XkRecycleBagMain;
public interface XkRecycleBagMainMapper {
XkRecycleBagMain queryOne(String billNo);
}

View File

@ -10,14 +10,14 @@
<if test="ratify_attitude != null">ratify_attitude,</if>
<if test="discard_approach != null">discard_approach,</if>
<if test="discard_method != null">discard_method,</if>
bill_no,handle_person,total_money,input_person,input_date
bill_no,handle_person,total_money,input_person,input_date,discard_date
)values(
<if test="remark != null">#{remark},</if>
<if test="ratify_person != null">#{ratify_person},</if>
<if test="ratify_attitude != null">#{ratify_attitude},</if>
<if test="discard_approach != null">#{discard_approach},</if>
<if test="discard_method != null">#{discard_method},</if>
bill bill #{bill_no},#{handle_person},#{total_money},#{input_person},#{input_date}
#{bill_no},#{handle_person},#{total_money},#{input_person},#{input_date},#{discard_date}
)
</insert>
<update id="update">

View File

@ -3,4 +3,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.czblood.bus.mapper.XkRecycleBagDetailMapper">
<select id="queryList" resultType="com.czblood.bus.pojo.XkRecycleBagDetail">
select * from xk_recycle_bag_detail where bill_no = #{billNo}
</select>
</mapper>

View File

@ -3,4 +3,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.czblood.bus.mapper.XkRecycleBagMainMapper">
<select id="queryOne" resultType="com.czblood.bus.pojo.XkRecycleBagMain">
select * from xk_recycle_bag_main where bill_no = #{billNo}
</select>
</mapper>

View File

@ -53,7 +53,7 @@ public class DiscardMainController extends BaseController {
@ApiOperation("查询报废单列表")
@PostMapping("/queryList")
public Result queryList(DiscardQueryVO discardQueryVO){
public Result queryList(@RequestBody DiscardQueryVO discardQueryVO){
return discardMainService.queryList(discardQueryVO);
}

View File

@ -66,21 +66,30 @@ public class DiscardMainServiceImpl implements DiscardMainService {
String auditPerson = BloodBankUtil.isBank(xkDiscardMain.getAudit_person());
if(!auditPerson.equals("")) return new Result("-1","单据已经审核,不允许修改!!");
String newBillNo = "";
BigDecimal price = BigDecimal.ZERO;
BigDecimal totalMoney = BigDecimal.ZERO;
for (XkDiscardDetail xkDiscardDetail : xkDiscardDetailList) {
List<XkInstorageDetail> xkInstorageDetailList = xkInstorageDetailMapper.queryByBloodNo(xkDiscardDetail.getBlood_no(), xkDiscardDetail.getProduct_no());
if(!xkInstorageDetailList.isEmpty()){
BigDecimal price1 = xkInstorageDetailList.get(0).getPrice();
if(price1 == null) price1 = BigDecimal.ZERO;
xkDiscardDetail.setPrice(price1);
totalMoney = totalMoney.add(price1);
}else{
xkDiscardDetail.setPrice(price);
}
}
xkDiscardMain.setTotal_money(totalMoney);
if(billNo.equals("")){
//新增
BigDecimal totalMoney = BigDecimal.ZERO;
newBillNo = bloodBankUtil.produceBillNo("BFD");
//新增
for (XkDiscardDetail xkDiscardDetail : xkDiscardDetailList) {
xkDiscardDetail.setBill_no(newBillNo);
}
xkDiscardMain.setBill_no(newBillNo);
xkDiscardMain.setInput_person(discardVO.getUserId());
xkDiscardMain.setInput_date(bloodBankUtil.getCurrentTimeDate());
for (XkDiscardDetail xkDiscardDetail : xkDiscardDetailList) {
List<XkInstorageDetail> xkInstorageDetailList = xkInstorageDetailMapper.queryByBloodNo(xkDiscardDetail.getBlood_no(), xkDiscardDetail.getProduct_no());
if(!xkInstorageDetailList.isEmpty()){
xkDiscardDetail.setPrice(xkInstorageDetailList.get(0).getPrice());
totalMoney = totalMoney.add(xkInstorageDetailList.get(0).getPrice());
}
}
xkDiscardMain.setTotal_money(totalMoney);
SpringUtils.getBean(DiscardMainServiceImpl.class).insertData(xkDiscardMain,xkDiscardDetailList);
}else{
//更新
@ -97,7 +106,7 @@ public class DiscardMainServiceImpl implements DiscardMainService {
String auditPerson = BloodBankUtil.isBank(xkDiscardMain.getAudit_person());
if(!auditPerson.equals("")) return new Result("-1","单据已经审核,不允许重复审核!!");
List<XkDiscardDetail> xkDiscardDetailList = xkDiscardDetailMapper.queryListByBillNo(billNo);
List<XkBloodInfo> xkBloodInfoList = new ArrayList();
List<XkBloodInfo> xkBloodInfoList = new ArrayList<>();
for (XkDiscardDetail xkDiscardDetail : xkDiscardDetailList) {
String bloodNo = xkDiscardDetail.getBlood_no();
String productNo = xkDiscardDetail.getProduct_no();
@ -120,6 +129,7 @@ public class DiscardMainServiceImpl implements DiscardMainService {
XkDiscardMain xkDiscardMainTemp = new XkDiscardMain();
xkDiscardMainTemp.setAudit_person(userId);
xkDiscardMainTemp.setAudit_date(bloodBankUtil.getCurrentTimeDate());
xkDiscardMainTemp.setBill_no(billNo);
SpringUtils.getBean(DiscardMainServiceImpl.class).updateAuditData(xkBloodInfoList,xkDiscardMainTemp);
return new Result("0","审核成功");
}

View File

@ -9,7 +9,7 @@
xk_discard_main.discard_date
FROM xk_discard_main
WHERE (xk_discard_main.discard_date between #{stime} and #{etime})
<if test="billNo != null"> AND (xk_discard_main.bill_no = #{billNo})</if>
<if test="billNo != null and billNo != ''"> AND (xk_discard_main.bill_no = #{billNo})</if>
</select>
<select id="queryDetailList" resultType="java.util.Map">

View File

@ -117,7 +117,7 @@ public class TransfuseCheckExplainServiceImpl implements TransfuseCheckExplainSe
xkTransfuseApplyTemp.setCheck_date(bloodBankUtil.getCurrentTimeDate());
transfuseCheckExplainUtil.updateApplyStatus(xkTransfuseApplyTemp,xkCheckBloodtype);
//保存条码数据
Result result = transfuseCheckExplainUtil.createSampleData(applyNo);
Result result = transfuseCheckExplainUtil.createSampleData(applyNo,explainVO.getUserId());
if(!result.getCode().equals("0")) return result;
//调用外部接口

View File

@ -86,7 +86,7 @@ public class TransfuseCheckExplainUtil {
* @param billNo
* @return
*/
public Result createSampleData(String billNo){
public Result createSampleData(String billNo,String userId){
String tmsfzsxshsc = bloodBankUtil.getParameterValue("TMSFZSXSHSC");
if(!tmsfzsxshsc.equals("Y")) return new Result("0","未开启条码在审核的时候生成的参数!");
Date currentTimeDate = bloodBankUtil.getCurrentTimeDate();
@ -113,6 +113,8 @@ public class TransfuseCheckExplainUtil {
xkSampleInfo.setExp1("Y");
xkSampleInfo.setSample_status("1");
xkSampleInfo.setCreatetime(currentTimeDate);
xkSampleInfo.setPick_Date(currentTimeDate);
xkSampleInfo.setPick_Nurse(userId);
//修改申请单数据
XkTransfuseApply xkTransfuseApply = new XkTransfuseApply();

View File

@ -1,13 +1,46 @@
package com.czblood.busNurse.controller;
import com.czblood.busNurse.pojo.DTO.RecycleBagDTO;
import com.czblood.busNurse.pojo.VO.RecycleBagSearchVO;
import com.czblood.busNurse.service.RecycleBagService;
import com.czblood.common.core.domain.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@Api(tags = "血袋回收")
@RestController
@RequestMapping("/bus/nurse/recycleBag")
@Slf4j
public class RecycleBagController {
@Resource
private RecycleBagService recycleBagService;
@ApiOperation("获取回收血液信息")
@RequestMapping("/getBloodInfo")
public Result getBloodInfo(String bloodNo,String productNo) {
return recycleBagService.getBloodInfo(bloodNo,productNo);
}
@ApiOperation("批量查询血液回收单据信息")
@RequestMapping("/batchSearch")
public Result batchSearch(RecycleBagSearchVO recycleBagSearchVO){
return recycleBagService.batchSearch(recycleBagSearchVO);
}
@ApiOperation("批量查询血液回收信息列表")
@RequestMapping("/queryBatchBloodInfo")
public Result queryBatchBloodInfoList(List<RecycleBagDTO> recycleBagDTOList){
return recycleBagService.queryBatchBloodInfoList(recycleBagDTOList);
}
}

View File

@ -0,0 +1,13 @@
package com.czblood.busNurse.mapper;
import com.czblood.busNurse.pojo.DTO.RecycleBagDTO;
import com.czblood.busNurse.pojo.VO.RecycleBagSearchVO;
import java.util.List;
import java.util.Map;
public interface RecycleBagMapper {
List<Map<String,Object>> getBloodInfo(String bloodNo, String productNo);
List<RecycleBagDTO> queryBatchData(RecycleBagSearchVO recycleBagSearchVO);
List<Map<String,Object>> queryBillNoBloodInfo(String billNo);
}

View File

@ -10,4 +10,5 @@ public interface SampleInfoMapper {
List<Map<String,Object>> queryList(SampleInfoVO sampleInfoVO);
List<Map<String,Object>> querySampleInfoData(String dept);
XkCheckBloodtype queryMaxTestDateInfo(String beinhos_id);
List<Map<String,Object>> queryListCheck(SampleInfoVO sampleInfoVO);
}

View File

@ -0,0 +1,18 @@
package com.czblood.busNurse.pojo.DTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RecycleBagDTO {
private String bill_no;
private Date occur_date;
private String patient_name;
private String beinhos_id;
private String dept_id;
}

View File

@ -0,0 +1,14 @@
package com.czblood.busNurse.pojo.VO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RecycleBagSearchVO {
private String stime;
private String etime;
private String dept;
}

View File

@ -0,0 +1,14 @@
package com.czblood.busNurse.service;
import com.czblood.busNurse.pojo.DTO.RecycleBagDTO;
import com.czblood.busNurse.pojo.VO.RecycleBagSearchVO;
import com.czblood.common.core.domain.Result;
import java.util.List;
public interface RecycleBagService {
Result getBloodInfo(String bloodNo, String productNo);
Result batchSearch(RecycleBagSearchVO recycleBagSearchVO);
Result queryBatchBloodInfoList(List<RecycleBagDTO> recycleBagDTOList);
}

View File

@ -0,0 +1,62 @@
package com.czblood.busNurse.service.impl;
import com.czblood.bus.pojo.XkBloodInfo;
import com.czblood.bus.utils.BloodBankUtil;
import com.czblood.busNurse.mapper.RecycleBagMapper;
import com.czblood.busNurse.pojo.DTO.RecycleBagDTO;
import com.czblood.busNurse.pojo.VO.RecycleBagSearchVO;
import com.czblood.busNurse.service.RecycleBagService;
import com.czblood.common.core.domain.Result;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
@Service
public class RecycleBagServiceImpl implements RecycleBagService {
@Resource
BloodBankUtil bloodBankUtil;
@Resource
RecycleBagMapper recycleBagMapper;
@Override
public Result getBloodInfo(String bloodNo, String productNo) {
XkBloodInfo xkBloodInfo = bloodBankUtil.queryBloodInfoOne(bloodNo, productNo);
if(xkBloodInfo == null) return new Result("-1","血液信息不存在");
String bloodStatus = BloodBankUtil.isBank(xkBloodInfo.getBlood_status());
if(!bloodStatus.equals("4")) return new Result("-1","该血液尚未出库!");
String recycleSign = BloodBankUtil.isBank(xkBloodInfo.getRecycle_sign());
if(recycleSign.equals("Y")) return new Result("-1","该血袋已经登记回收信息!");
List<Map<String, Object>> bloodInfoList = recycleBagMapper.getBloodInfo(bloodNo, productNo);
return new Result("0","操作成功",bloodInfoList.get(0));
}
@Override
public Result batchSearch(RecycleBagSearchVO recycleBagSearchVO) {
List<RecycleBagDTO> recycleBagDTOList = recycleBagMapper.queryBatchData(recycleBagSearchVO);
return new Result("0","操作成功",recycleBagDTOList);
}
@Override
public Result queryBatchBloodInfoList(List<RecycleBagDTO> recycleBagDTOList) {
List<Map<String, Object>> resultList = new ArrayList<>();
Set<String> existKeySet = new HashSet<>();
for (RecycleBagDTO recycleBagDTO : recycleBagDTOList) {
List<Map<String, Object>> bloodInfoList = recycleBagMapper.queryBillNoBloodInfo(recycleBagDTO.getBill_no());
if (bloodInfoList == null || bloodInfoList.isEmpty()) {
continue;
}
for (Map<String, Object> info : bloodInfoList) {
Object bloodNo = info.get("blood_no");
Object productNo = info.get("product_no");
String key = bloodNo + "_" + productNo;
if (existKeySet.add(key)) {
resultList.add(info);
}
}
}
return new Result("0", "操作成功", resultList);
}
}

View File

@ -45,7 +45,14 @@ public class SampleInfoServiceImpl implements SampleInfoService {
Result result = createSampleInfo(sampleInfoVO.getDept(), sampleInfoVO.getUserId());
String msg = "";
if(!result.getCode().equals("0")) msg = result.getMsg();
List<Map<String, Object>> mapList = sampleInfoMapper.queryList(sampleInfoVO);
String tmsfzsxshsc = bloodBankUtil.getParameterValue("TMSFZSXSHSC");
List<Map<String, Object>> mapList = null;
if(tmsfzsxshsc.equals("Y")){
mapList = sampleInfoMapper.queryListCheck(sampleInfoVO);
}else{
mapList = sampleInfoMapper.queryList(sampleInfoVO);
}
if(!msg.equals("")){
return new Result("1", msg, mapList);
}else{
@ -133,6 +140,7 @@ public class SampleInfoServiceImpl implements SampleInfoService {
xkSampleInfo.setBirthday(DateUtil.parse(BloodBankUtil.isBank(stringObjectMap.get("patient_birthday")),"yyyy-MM-dd HH:mm:ss"));
xkSampleInfo.setRelate_ApplyNo(BloodBankUtil.isBank(stringObjectMap.get("bill_no")));
xkSampleInfo.setExp1("Y");
xkSampleInfo.setCreatetime(currentTimeDate);
xkTransfuseApply = new XkTransfuseApply();
xkTransfuseApply.setBill_no(BloodBankUtil.isBank(stringObjectMap.get("bill_no")));

View File

@ -0,0 +1,48 @@
<?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.busNurse.mapper.RecycleBagMapper">
<select id="getBloodInfo" resultType="java.util.Map">
Select xk_out_main.patient_name , xk_out_main.dept_id , xk_blood_info.blood_breed , xk_blood_info.blood_type , xk_blood_info.capacity , xk_blood_info.unit , xk_out_main.bill_no
From xk_out_main , xk_out_detail , xk_blood_info
Where ( xk_out_main.bill_no =xk_out_detail.bill_no ) and
( xk_out_detail.blood_no =xk_blood_info.blood_no ) and
( xk_blood_info.blood_no = #{bloodNo} ) AND (xk_blood_info.product_no = #{productNo})
</select>
<select id="queryBatchData" resultType="com.czblood.busNurse.pojo.DTO.RecycleBagDTO">
SELECT
xk_out_main.bill_no,
xk_out_main.occur_date,
xk_out_main.patient_name,
xk_out_main.beinhos_id,
xk_out_main.dept_id
FROM xk_out_main ,xk_out_detail,xk_blood_info
WHERE ( isnull(all_recycle_sign,'N') = 'N' )
and ( xk_out_main.bill_no = xk_out_detail.bill_no )
and ( xk_out_detail.blood_no = xk_blood_info.blood_no )
and (xk_out_detail.product_no = xk_blood_info.product_no)
<![CDATA[ and (xk_blood_info.blood_sort <> 'Z') ]]>
and ( xk_out_main.occur_date between #{stime} and #{etime} )
<if test="dept != null">and xk_out_main.dept_id = #{dept}</if>
</select>
<select id="queryBillNoBloodInfo" resultType="java.util.Map">
SELECT xk_blood_info.blood_no,
xk_blood_info.blood_breed,
xk_blood_info.blood_type,
xk_blood_info.capacity,
xk_blood_info.unit,
xk_blood_info.product_no,
xk_out_main.patient_name,
xk_out_main.dept_id,
xk_out_main.bill_no
FROM xk_blood_info,
xk_out_detail,
xk_out_main
WHERE ( xk_blood_info.blood_no = xk_out_detail.blood_no ) and
( xk_blood_info.product_no = xk_out_detail.product_no ) and
( xk_out_detail.bill_no = xk_out_main.bill_no ) and
( ( xk_out_main.bill_no = #{billNo} ) )
and isnull(xk_blood_info.recycle_sign,'') = 'Y'
</select>
</mapper>

View File

@ -101,4 +101,38 @@
<select id="queryMaxTestDateInfo" resultType="com.czblood.bus.pojo.XkCheckBloodtype">
SELECT top 1 * FROM xk_check_bloodtype Where Beinhos_id = #{beinhos_id} Order By test_date Desc
</select>
<select id="queryListCheck" resultType="java.util.Map">
SELECT xk_sample_info.Sample_No,
xk_sample_info.Purpose,
xk_sample_info.Dept,
xk_sample_info.Relate_ApplyNo,
xk_sample_info.Blood_Type,
xk_sample_info.Rh_Blood_Type,
xk_sample_info.Sample_Name,
xk_sample_info.Sex,
xk_sample_info.Age,
xk_sample_info.Birthday,
xk_sample_info.Pick_Nurse,
xk_sample_info.Pick_Date,
xk_sample_info.Send_Nurse,
xk_sample_info.Send_Date,
xk_sample_info.TakeOver_Man,
xk_sample_info.TakeOver_Date,
xk_sample_info.Discard_Person,
xk_sample_info.Discard_Date,
xk_sample_info.Discard_Reason,
xk_sample_info.Exp2,
xk_sample_info.Overdue_Flag ,
xk_sample_info.sendperson,
xk_sample_info.sample_status,
xk_transfuse_apply_bloodbreed.blood_breed,
(select is_match from xk_blood_breed where xk_blood_breed.breed_code = xk_transfuse_apply_bloodbreed.blood_breed ) as is_match
FROM xk_sample_info
LEFT JOIN xk_transfuse_apply ON (xk_sample_info.Relate_ApplyNo = xk_transfuse_apply.bill_no)
LEFT JOIN xk_transfuse_apply_bloodbreed ON (xk_transfuse_apply_bloodbreed.bill_no = xk_transfuse_apply.bill_no)
where (xk_sample_info.createtime Between #{stime} AND #{etime})
<if test="dept != null">AND (xk_sample_info.dept = #{dept})</if>
<if test="sample_no != null">and (xk_sample_info.Sample_No = #{sample_no})</if>
</select>
</mapper>