标本接收,申请单扫描登记

This commit is contained in:
jiangs 2026-07-29 16:31:13 +08:00
parent 2a37a35f52
commit 30ba8485f8
16 changed files with 303 additions and 63 deletions

View File

@ -5,4 +5,5 @@ import com.czblood.bus.pojo.XkSampleInfo;
public interface XkSampleInfoMapper {
XkSampleInfo queryOne(String sampleNo);
void insert(XkSampleInfo xkSampleInfo);
void update(XkSampleInfo xkSampleInfo);
}

View File

@ -14,38 +14,38 @@ import java.util.Date;
@Api(tags = "样本信息")
public class XkSampleInfo {
@ApiModelProperty("样本号")
private String Sample_No;
private String sample_No;
@ApiModelProperty("标本用途,A输血,B血型鉴定,S治疗")
private String Purpose;
private String purpose;
@ApiModelProperty("申请科室")
private String Dept;
private String dept;
@ApiModelProperty("关联申请单号")
private String Relate_ApplyNo;
private String relate_ApplyNo;
@ApiModelProperty("血型")
private String Blood_Type;
private String blood_Type;
@ApiModelProperty("RH血型")
private String Rh_Blood_Type;
private String rh_Blood_Type;
@ApiModelProperty("姓名")
private String Sample_Name;
private String Sex;
private String Age;
private Date Birthday;
private String sample_Name;
private String sex;
private String age;
private Date birthday;
@ApiModelProperty("采集护士")
private String Pick_Nurse;
private String pick_Nurse;
@ApiModelProperty("采集时间")
private Date Pick_Date;
private Date pick_Date;
@ApiModelProperty("送标本护士")
private String Send_Nurse;
private String send_Nurse;
@ApiModelProperty("送标本时间")
private Date Send_Date;
private Date send_Date;
@ApiModelProperty("接收人")
private String TakeOver_Man;
private String takeOver_Man;
@ApiModelProperty("接收时间")
private Date TakeOver_Date;
private Date takeOver_Date;
@ApiModelProperty("过期标志")
private String Overdue_Flag;
private String Exp1;
private String Exp2;
private String overdue_Flag;
private String exp1;
private String exp2;
@ApiModelProperty("样本状态,1打印条码,2已采样,3已送检,4已签收,5复核血型")
private String sample_status;
@ApiModelProperty("作废人")

View File

@ -4,24 +4,24 @@
<mapper namespace="com.czblood.bus.mapper.XkSampleInfoMapper">
<insert id="insert">
insert into xk_sample_info(
<if test="Purpose != null ">Purpose,</if>
<if test="Dept != null ">Dept,</if>
<if test="Relate_ApplyNo != null ">Relate_ApplyNo,</if>
<if test="Blood_Type != null ">Blood_Type,</if>
<if test="Rh_Blood_Type != null ">Rh_Blood_Type,</if>
<if test="Sample_Name != null ">Sample_Name,</if>
<if test="Sex != null ">Sex,</if>
<if test="Age != null ">Age,</if>
<if test="Birthday != null ">Birthday,</if>
<if test="Pick_Nurse != null ">Pick_Nurse,</if>
<if test="Pick_Date != null ">Pick_Date,</if>
<if test="Send_Nurse != null ">Send_Nurse,</if>
<if test="Send_Date != null ">Send_Date,</if>
<if test="TakeOver_Man != null ">TakeOver_Man,</if>
<if test="TakeOver_Date != null ">TakeOver_Date,</if>
<if test="Overdue_Flag != null ">Overdue_Flag,</if>
<if test="Exp1 != null ">Exp1,</if>
<if test="Exp2 != null ">Exp2,</if>
<if test="purpose != null ">purpose,</if>
<if test="dept != null ">dept,</if>
<if test="relate_ApplyNo != null ">Relate_ApplyNo,</if>
<if test="blood_Type != null ">Blood_Type,</if>
<if test="rh_Blood_Type != null ">Rh_Blood_Type,</if>
<if test="sample_Name != null ">Sample_Name,</if>
<if test="sex != null ">Sex,</if>
<if test="age != null ">Age,</if>
<if test="birthday != null ">Birthday,</if>
<if test="pick_Nurse != null ">Pick_Nurse,</if>
<if test="pick_Date != null ">Pick_Date,</if>
<if test="send_Nurse != null ">Send_Nurse,</if>
<if test="send_Date != null ">Send_Date,</if>
<if test="takeOver_Man != null ">TakeOver_Man,</if>
<if test="takeOver_Date != null ">TakeOver_Date,</if>
<if test="overdue_Flag != null ">Overdue_Flag,</if>
<if test="exp1 != null ">Exp1,</if>
<if test="exp2 != null ">Exp2,</if>
<if test="sample_status != null ">sample_status,</if>
<if test="discard_person != null ">discard_person,</if>
<if test="discard_date != null ">discard_date,</if>
@ -31,24 +31,24 @@
<if test="createtime != null ">createtime,</if>
Sample_No
)values(
<if test="Purpose != null ">#{Purpose},</if>
<if test="Dept != null ">#{Dept},</if>
<if test="Relate_ApplyNo != null ">#{Relate_ApplyNo},</if>
<if test="Blood_Type != null ">#{Blood_Type},</if>
<if test="Rh_Blood_Type != null ">#{Rh_Blood_Type},</if>
<if test="Sample_Name != null ">#{Sample_Name},</if>
<if test="Sex != null ">#{Sex},</if>
<if test="Age != null ">#{Age},</if>
<if test="Birthday != null ">#{Birthday},</if>
<if test="Pick_Nurse != null ">#{Pick_Nurse},</if>
<if test="Pick_Date != null ">#{Pick_Date},</if>
<if test="Send_Nurse != null ">#{Send_Nurse},</if>
<if test="Send_Date != null ">#{Send_Date},</if>
<if test="TakeOver_Man != null ">#{TakeOver_Man},</if>
<if test="TakeOver_Date != null ">#{TakeOver_Date},</if>
<if test="Overdue_Flag != null ">#{Overdue_Flag},</if>
<if test="Exp1 != null ">#{Exp1},</if>
<if test="Exp2 != null ">#{Exp2},</if>
<if test="purpose != null ">#{purpose},</if>
<if test="dept != null ">#{dept},</if>
<if test="relate_ApplyNo != null ">#{relate_ApplyNo},</if>
<if test="blood_Type != null ">#{blood_Type},</if>
<if test="rh_Blood_Type != null ">#{rh_Blood_Type},</if>
<if test="sample_Name != null ">#{sample_Name},</if>
<if test="sex != null ">#{sex},</if>
<if test="age != null ">#{age},</if>
<if test="birthday != null ">#{birthday},</if>
<if test="pick_Nurse != null ">#{pick_Nurse},</if>
<if test="pick_Date != null ">#{pick_Date},</if>
<if test="send_Nurse != null ">#{send_Nurse},</if>
<if test="send_Date != null ">#{send_Date},</if>
<if test="takeOver_Man != null ">#{takeOver_Man},</if>
<if test="takeOver_Date != null ">#{takeOver_Date},</if>
<if test="overdue_Flag != null ">#{overdue_Flag},</if>
<if test="exp1 != null ">#{exp1},</if>
<if test="exp2 != null ">#{exp2},</if>
<if test="sample_status != null ">#{sample_status},</if>
<if test="discard_person != null ">#{discard_person},</if>
<if test="discard_date != null ">#{discard_date},</if>
@ -56,8 +56,38 @@
<if test="senddate != null ">#{senddate},</if>
<if test="sendperson != null ">#{sendperson},</if>
<if test="createtime != null ">#{createtime},</if>
#{Sample_No})
#{sample_No})
</insert>
<update id="update">
update xk_sample_info set
<if test="purpose != null ">purpose = #{purpose},</if>
<if test="dept != null ">dept = #{dept},</if>
<if test="relate_ApplyNo != null ">relate_ApplyNo = #{relate_ApplyNo},</if>
<if test="blood_Type != null ">blood_Type = #{blood_Type},</if>
<if test="rh_Blood_Type != null ">rh_Blood_Type = #{rh_Blood_Type},</if>
<if test="sample_Name != null ">sample_Name = #{sample_Name},</if>
<if test="sex != null ">sex = #{sex},</if>
<if test="age != null ">age = #{age},</if>
<if test="birthday != null ">birthday = #{birthday},</if>
<if test="pick_Nurse != null ">pick_Nurse = #{pick_Nurse},</if>
<if test="pick_Date != null ">pick_Date = #{pick_Date},</if>
<if test="send_Nurse != null ">send_Nurse = #{send_Nurse},</if>
<if test="send_Date != null ">send_Date = #{send_Date},</if>
<if test="takeOver_Man != null ">takeOver_Man = #{takeOver_Man},</if>
<if test="takeOver_Date != null ">takeOver_Date = #{takeOver_Date},</if>
<if test="overdue_Flag != null ">overdue_Flag = #{overdue_Flag},</if>
<if test="exp1 != null ">exp1 = #{exp1},</if>
<if test="exp2 != null ">exp2 = #{exp2},</if>
<if test="sample_status != null ">sample_status = #{sample_status},</if>
<if test="discard_person != null ">discard_person = #{discard_person},</if>
<if test="discard_date != null ">discard_date = #{discard_date},</if>
<if test="discard_reason != null ">discard_reason = #{discard_reason},</if>
<if test="senddate != null ">senddate = #{senddate},</if>
<if test="sendperson != null ">sendperson = #{sendperson},</if>
<if test="createtime != null ">createtime = #{createtime},</if>
Sample_No = #{sample_no}
where Sample_No = #{sample_no}
</update>
<select id="queryOne" resultType="com.czblood.bus.pojo.XkSampleInfo">
select * from xk_sample_info where Sample_No = #{Sample_No}
</select>

View File

@ -0,0 +1,40 @@
package com.czblood.busBloodbank.controller;
import com.czblood.bus.pojo.XkSampleInfo;
import com.czblood.busBloodbank.pojo.VO.AcceptSampleInfoQueryVO;
import com.czblood.busBloodbank.service.AcceptSampleInfoService;
import com.czblood.common.core.controller.BaseController;
import com.czblood.common.core.domain.Result;
import com.czblood.common.core.page.TableDataInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@Api(tags = "标本接收")
@RestController
@RequestMapping("/bus/bloodbank/acceptSampleInfo")
public class AcceptSampleInfoController extends BaseController {
@Resource
private AcceptSampleInfoService acceptSampleInfoService;
@ApiOperation("标本列表查询")
@GetMapping("/queryList")
public TableDataInfo queryList(AcceptSampleInfoQueryVO acceptSampleInfoQueryVO){
List<Map<String,Object>> list = acceptSampleInfoService.queryList(acceptSampleInfoQueryVO);
return getDataTable(list);
}
@ApiOperation("标本接收")
@PostMapping("/acceptSampleInfo")
public Result acceptSampleInfo(XkSampleInfo xKSampleInfo){
return acceptSampleInfoService.acceptSampleInfo(xKSampleInfo);
}
}

View File

@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@Api(tags = "申请单扫描登记")
@RestController
@ -29,7 +30,7 @@ public class SearchTransfuseBillController extends BaseController {
@ApiOperation("查询登记列表")
@GetMapping("/queryList")
public TableDataInfo queryList(XkSearchTransfuseBillVO xkSearchTransfuseBillVO) {
List<XkSearchTransfuseBill> xkSearchTransfuseBillList = searchTransfuseBillService.queryList(xkSearchTransfuseBillVO);
List<Map<String, Object>> xkSearchTransfuseBillList = searchTransfuseBillService.queryList(xkSearchTransfuseBillVO);
return getDataTable(xkSearchTransfuseBillList);
}

View File

@ -0,0 +1,10 @@
package com.czblood.busBloodbank.mapper;
import com.czblood.busBloodbank.pojo.VO.AcceptSampleInfoQueryVO;
import java.util.List;
import java.util.Map;
public interface AcceptSampleInfoMapper {
List<Map<String, Object>> queryList(AcceptSampleInfoQueryVO acceptSampleInfoQueryVO);
}

View File

@ -1,11 +1,11 @@
package com.czblood.busBloodbank.mapper;
import com.czblood.bus.pojo.XkSearchTransfuseBill;
import com.czblood.busBloodbank.pojo.VO.XkSearchTransfuseBillVO;
import java.util.List;
import java.util.Map;
public interface SearchTransfuseBillMapper {
List<XkSearchTransfuseBill> queryList(XkSearchTransfuseBillVO xkSearchTransfuseBillVO);
List<Map<String, Object>> queryList(XkSearchTransfuseBillVO xkSearchTransfuseBillVO);
Integer getMaxSid();
}

View File

@ -0,0 +1,16 @@
package com.czblood.busBloodbank.pojo.VO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AcceptSampleInfoQueryVO {
private String stime;
private String etime;
private String dept;
private String sampleNo;
private String status;
}

View File

@ -0,0 +1,13 @@
package com.czblood.busBloodbank.service;
import com.czblood.bus.pojo.XkSampleInfo;
import com.czblood.busBloodbank.pojo.VO.AcceptSampleInfoQueryVO;
import com.czblood.common.core.domain.Result;
import java.util.List;
import java.util.Map;
public interface AcceptSampleInfoService {
List<Map<String, Object>> queryList(AcceptSampleInfoQueryVO acceptSampleInfoQueryVO);
Result acceptSampleInfo(XkSampleInfo xKSampleInfo);
}

View File

@ -5,9 +5,10 @@ import com.czblood.busBloodbank.pojo.VO.XkSearchTransfuseBillVO;
import com.czblood.common.core.domain.Result;
import java.util.List;
import java.util.Map;
public interface SearchTransfuseBillService {
List<XkSearchTransfuseBill> queryList(XkSearchTransfuseBillVO xkSearchTransfuseBillVO);
List<Map<String, Object>> queryList(XkSearchTransfuseBillVO xkSearchTransfuseBillVO);
Result saveBillNo(XkSearchTransfuseBill xkSearchTransfuseBill);

View File

@ -0,0 +1,70 @@
package com.czblood.busBloodbank.service.impl;
import com.czblood.bus.mapper.XkSampleInfoMapper;
import com.czblood.bus.mapper.XkTransfuseApplyMapper;
import com.czblood.bus.pojo.XkSampleInfo;
import com.czblood.bus.pojo.XkTransfuseApply;
import com.czblood.bus.utils.BloodBankUtil;
import com.czblood.busBloodbank.mapper.AcceptSampleInfoMapper;
import com.czblood.busBloodbank.pojo.VO.AcceptSampleInfoQueryVO;
import com.czblood.busBloodbank.service.AcceptSampleInfoService;
import com.czblood.common.core.domain.Result;
import com.czblood.common.utils.spring.SpringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Service
public class AcceptSampleInfoServiceImpl implements AcceptSampleInfoService {
@Resource
AcceptSampleInfoMapper acceptSampleInfoMapper;
@Resource
XkSampleInfoMapper xkSampleInfoMapper;
@Resource
BloodBankUtil bloodBankUtil;
@Resource
XkTransfuseApplyMapper xkTransfuseApplyMapper;
@Override
public List<Map<String, Object>> queryList(AcceptSampleInfoQueryVO acceptSampleInfoQueryVO) {
return acceptSampleInfoMapper.queryList(acceptSampleInfoQueryVO);
}
/**
* 接收样本信息
* @param xKSampleInfo
* @return
*/
@Override
public Result acceptSampleInfo(XkSampleInfo xKSampleInfo) {
String sampleNo = xKSampleInfo.getSample_No();
XkSampleInfo xkSampleInfo1 = xkSampleInfoMapper.queryOne(sampleNo);
if(xkSampleInfo1 == null) return new Result("-1","没有找到对应的样本信息!");
XkSampleInfo xkSampleInfoTemp = new XkSampleInfo();
xkSampleInfoTemp.setSample_No(xkSampleInfo1.getSample_No());
xkSampleInfoTemp.setTakeOver_Man(xkSampleInfo1.getTakeOver_Man());
xkSampleInfoTemp.setTakeOver_Date(xkSampleInfo1.getTakeOver_Date());
xkSampleInfoTemp.setSample_status("5");
xkSampleInfoTemp.setSendperson(xkSampleInfo1.getSendperson());
XkTransfuseApply xkTransfuseApply = new XkTransfuseApply();
xkTransfuseApply.setBill_no(xkSampleInfo1.getRelate_ApplyNo());
xkTransfuseApply.setGather_date(xkSampleInfo1.getPick_Date());
xkTransfuseApply.setReceive_date(bloodBankUtil.getCurrentTimeDate());
SpringUtils.getBean(AcceptSampleInfoServiceImpl.class).updateData(xkSampleInfoTemp, xkTransfuseApply);
return new Result("0","接收样本信息成功!");
}
@Transactional(rollbackFor = Exception.class)
public void updateData(XkSampleInfo xkSampleInfo, XkTransfuseApply xkTransfuseApply) {
xkSampleInfoMapper.update(xkSampleInfo);
xkTransfuseApplyMapper.update(xkTransfuseApply);
}
}

View File

@ -1,17 +1,23 @@
package com.czblood.busBloodbank.service.impl;
import com.czblood.bus.mapper.XkSearchTransfuseBillMapper;
import com.czblood.bus.mapper.XkTransfuseApplyMapper;
import com.czblood.bus.pojo.XkSearchTransfuseBill;
import com.czblood.bus.pojo.XkTransfuseApply;
import com.czblood.bus.utils.BloodBankUtil;
import com.czblood.busBloodbank.mapper.SearchTransfuseBillMapper;
import com.czblood.busBloodbank.pojo.VO.XkSearchTransfuseBillVO;
import com.czblood.busBloodbank.service.SearchTransfuseBillService;
import com.czblood.common.core.domain.Result;
import com.czblood.common.utils.spring.SpringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Service
public class SearchTransfuseBillServiceImpl implements SearchTransfuseBillService {
@ -20,9 +26,13 @@ public class SearchTransfuseBillServiceImpl implements SearchTransfuseBillServic
private SearchTransfuseBillMapper searchTransfuseBillMapper;
@Resource
XkSearchTransfuseBillMapper xkSearchTransfuseBillMapper;
@Resource
XkTransfuseApplyMapper xkTransfuseApplyMapper;
@Autowired
private BloodBankUtil bloodBankUtil;
@Override
public List<XkSearchTransfuseBill> queryList(XkSearchTransfuseBillVO xkSearchTransfuseBillVO) {
public List<Map<String,Object>> queryList(XkSearchTransfuseBillVO xkSearchTransfuseBillVO) {
return searchTransfuseBillMapper.queryList(xkSearchTransfuseBillVO);
}
@ -35,6 +45,12 @@ public class SearchTransfuseBillServiceImpl implements SearchTransfuseBillServic
public Result saveBillNo(XkSearchTransfuseBill xkSearchTransfuseBill) {
XkSearchTransfuseBill xkSearchTransfuseBill1 = xkSearchTransfuseBillMapper.queryOne(xkSearchTransfuseBill.getBill_no());
if(xkSearchTransfuseBill1 != null) return new Result("-1","申请单已扫描登记!");
XkTransfuseApply xkTransfuseApply = xkTransfuseApplyMapper.queryOne(xkSearchTransfuseBill.getBill_no());
if(xkTransfuseApply == null) return new Result("-1","申请单不存在!");
Date applyDate = xkTransfuseApply.getApply_date();
Date inputDate = xkSearchTransfuseBill.getInput_date();
if(inputDate.compareTo(bloodBankUtil.getCurrentTimeDate()) > 0) return new Result("-1","登记时间不能大于当前时间!");
if(inputDate.compareTo(applyDate) < 0) return new Result("-1","登记时间不能小于申请时间!");
SpringUtils.getBean(SearchTransfuseBillServiceImpl.class).saveData(xkSearchTransfuseBill);
return new Result("0","登记成功!");
}

View File

@ -0,0 +1,37 @@
<?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.AcceptSampleInfoMapper">
<select id="queryList" 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.beinhos_id,
xk_transfuse_apply.bill_stasus
FROM xk_sample_info ,xk_transfuse_apply
where xk_sample_info.Relate_ApplyNo = xk_transfuse_apply.bill_no and xk_sample_info.TakeOver_Date between #{stime} and #{etime}
<if test="dept != null and dept != ''"> and xk_sample_info.dept = #{dept}</if>
<if test="sampleNo != null and sampleNo != ''">and xk_sample_info.Sample_No = #{sampleNo}</if>
</select>
</mapper>

View File

@ -3,7 +3,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.czblood.busBloodbank.mapper.SearchTransfuseBillMapper">
<select id="queryList" resultType="com.czblood.bus.pojo.XkSearchTransfuseBill">
<select id="queryList" resultType="java.util.Map">
SELECT xk_search_transfuse_bill.sid,
xk_search_transfuse_bill.bill_no,
xk_search_transfuse_bill.input_person,

View File

@ -11,7 +11,7 @@ import java.util.Date;
@NoArgsConstructor
public class SampleInfoVO {
private Date stime;
private Date end;
private Date etime;
private String dept;
private String sample_no;
private String hgbz;

View File

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