临床发血,审核逻辑,打印
This commit is contained in:
parent
20aca19131
commit
06478b0bad
@ -24,4 +24,8 @@ public class BloodPrintTypeConstants {
|
||||
* 输血申请单
|
||||
*/
|
||||
public static final String BLOOD_APPLY = "BLOOD_APPLY";
|
||||
/**
|
||||
* 临床发血单
|
||||
*/
|
||||
public static final String BLOOD_OUT = "BLOOD_OUT";
|
||||
}
|
||||
|
||||
@ -15,5 +15,5 @@ public class BloodSysLogConstants {
|
||||
public static final String LOG_TYPE_SEND_SAMPLE_INFO = "标本送检";
|
||||
public static final String LOG_TYPE_CHECK_BLOOD_TYPE = "血型复核";
|
||||
public static final String LOG_TYPE_MATCH_BLOOD = "交叉配血";
|
||||
public static final String LOG_TYPE_BLOOD_OUT = "临床发血审核";
|
||||
public static final String LOG_TYPE_BLOOD_OUT = "临床发血";
|
||||
}
|
||||
|
||||
@ -8,4 +8,5 @@ import java.util.List;
|
||||
public interface XkBloodInfoMapper {
|
||||
XkBloodInfo queryOne(@Param("bloodNo") String bloodNo, @Param("productNo") String productNo);
|
||||
List<XkBloodInfo> queryListByBloodNo(String bloodNo);
|
||||
void update(XkBloodInfo xkBloodInfo);
|
||||
}
|
||||
|
||||
@ -2,6 +2,35 @@
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.czblood.bus.mapper.XkBloodInfoMapper">
|
||||
<update id="update">
|
||||
update xk_blood_info set
|
||||
<if test="blood_batch != null">blood_batch = #{blood_batch},</if>
|
||||
<if test="donor_no != null">donor_no = #{donor_no},</if>
|
||||
<if test="donblood_no != null">donblood_no = #{donblood_no},</if>
|
||||
<if test="blood_breed != null">blood_breed = #{blood_breed},</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="capacity != null">capacity = #{capacity},</if>
|
||||
<if test="unit != null">unit = #{unit},</if>
|
||||
<if test="pick_date != null">pick_date = #{pick_date},</if>
|
||||
<if test="produce_date != null">produce_date = #{produce_date},</if>
|
||||
<if test="valid_date != null">valid_date = #{valid_date},</if>
|
||||
<if test="blood_bag_kind != null">blood_bag_kind = #{blood_bag_kind},</if>
|
||||
<if test="blood_bag_spec != null">blood_bag_spec = #{blood_bag_spec},</if>
|
||||
<if test="blood_bag_no != null">blood_bag_no = #{blood_bag_no},</if>
|
||||
<if test="blood_bag_batch != null">blood_bag_batch = #{blood_bag_batch},</if>
|
||||
<if test="blood_status != null">blood_status = #{blood_status},</if>
|
||||
<if test="special_deal != null">special_deal = #{special_deal},</if>
|
||||
<if test="blood_source != null">blood_source = #{blood_source},</if>
|
||||
<if test="auto_no != null">auto_no = #{auto_no},</if>
|
||||
<if test="blood_sort != null">blood_sort = #{blood_sort},</if>
|
||||
<if test="last_modified != null">last_modified = #{last_modified},</if>
|
||||
<if test="abnor_sign != null">abnor_sign = #{abnor_sign},</if>
|
||||
<if test="recycle_sign != null">recycle_sign = #{recycle_sign},</if>
|
||||
<if test="Remark != null">Remark = #{Remark},</if>
|
||||
hos_id = #{hos_id}
|
||||
where blood_no = #{blood_no} and product_no = #{blood_no}
|
||||
</update>
|
||||
|
||||
<select id="queryOne" resultType="com.czblood.bus.pojo.XkBloodInfo">
|
||||
select * from xk_blood_info where blood_no = #{bloodNo} and product_no = #{productNo}
|
||||
|
||||
@ -11,6 +11,7 @@ import com.czblood.common.core.domain.Result;
|
||||
import com.czblood.common.enums.BusinessType;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
@ -50,6 +51,7 @@ public class BloodOutController extends BaseController {
|
||||
return bloodOutService.saveData(bloodOutInfoVO);
|
||||
}
|
||||
|
||||
@Log(title = BloodSysLogConstants.LOG_TYPE_BLOOD_OUT, businessType = BusinessType.CHECK)
|
||||
@ApiOperation("临床发血审核")
|
||||
@PostMapping("/bloodOutAudit")
|
||||
public Result bloodOutAudit(@RequestBody BloodOutAuditVO bloodOutAuditVO){
|
||||
@ -57,4 +59,18 @@ public class BloodOutController extends BaseController {
|
||||
return bloodOutService.bloodOutAudit(bloodOutAuditVO);
|
||||
}
|
||||
|
||||
@ApiOperation("通知护士取血")
|
||||
@GetMapping("/notifyMessage")
|
||||
public Result notifyMessage(String billNo){
|
||||
return bloodOutService.notifyMessage(billNo);
|
||||
}
|
||||
|
||||
@ApiOperation("打印单据")
|
||||
@GetMapping("/printReport")
|
||||
public Result printReport(@ApiParam(value = "单据编号", required = true) String billNo,
|
||||
@ApiParam(value = "模板名称:BLOOD_OUT(临床发血单)", required = true)
|
||||
String templateName){
|
||||
return bloodOutService.printReport(billNo, templateName);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,9 +1,6 @@
|
||||
package com.czblood.busBloodbank.mapper;
|
||||
|
||||
import com.czblood.bus.pojo.XkBackoutDetail;
|
||||
import com.czblood.bus.pojo.XkDiscardMain;
|
||||
import com.czblood.bus.pojo.XkMatchMain;
|
||||
import com.czblood.bus.pojo.XkSampleInfo;
|
||||
import com.czblood.bus.pojo.*;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.Date;
|
||||
@ -21,5 +18,6 @@ public interface BloodOutMapper {
|
||||
XkMatchMain queryXkMatchMain(String applyNo);
|
||||
String queryMaxCheckNo(String applyNo);
|
||||
Date querySampleMaxPickDate(String applyNo);
|
||||
List<XkCheckBloodtype> queryCheckBloodtype(String applyNo);
|
||||
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.czblood.busBloodbank.pojo.VO;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@ -8,7 +9,11 @@ import lombok.NoArgsConstructor;
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class BloodOutAuditVO {
|
||||
@ApiModelProperty("发血单号")
|
||||
private String billNo;
|
||||
@ApiModelProperty("申请单号")
|
||||
private String applyNo;
|
||||
private String userId;
|
||||
@ApiModelProperty("取血者")
|
||||
private String takePerson;
|
||||
}
|
||||
|
||||
@ -10,4 +10,6 @@ public interface BloodOutService {
|
||||
Result getBloodInfoOut(String bloodNo, String productNo,String applyNo);
|
||||
Result saveData(BloodOutInfoVO bloodOutInfoVO);
|
||||
Result bloodOutAudit(BloodOutAuditVO bloodOutAuditVO);
|
||||
Result notifyMessage(String billNo);
|
||||
Result printReport(String billNo, String templateName);
|
||||
}
|
||||
|
||||
@ -3,8 +3,10 @@ package com.czblood.busBloodbank.service.impl;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
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.busBloodbank.mapper.BloodOutMapper;
|
||||
import com.czblood.busBloodbank.pojo.DTO.BloodOutDTO;
|
||||
import com.czblood.busBloodbank.pojo.DTO.BloodOutInfoDTO;
|
||||
@ -17,6 +19,7 @@ import com.czblood.common.core.domain.Result;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -44,6 +47,8 @@ public class BloodOutServiceImpl implements BloodOutService {
|
||||
XkInstorageDetailMapper xkInstorageDetailMapper;
|
||||
@Resource
|
||||
BloodOutUtil bloodOutUtil;
|
||||
@Resource
|
||||
XkOutDetailMapper xkOutDetailMapper;
|
||||
|
||||
|
||||
|
||||
@ -131,8 +136,9 @@ public class BloodOutServiceImpl implements BloodOutService {
|
||||
if(checkNo.equals("")) checkNo = BloodBankUtil.isBank(bloodOutMapper.queryMaxCheckNo(applyNo));
|
||||
xkOutMain.setMatch_no(matchNo);
|
||||
xkOutMain.setCheck_no(checkNo);
|
||||
xkOutMain.setExp2("Y"); //通知取血护士
|
||||
xkOutMain.setNotify_time(currentTimeDate);
|
||||
//这一步应该放到审核里面去合理点
|
||||
// xkOutMain.setExp2("Y"); //通知取血护士
|
||||
// xkOutMain.setNotify_time(currentTimeDate);
|
||||
xkOutMain.setBill_sort("C"); //程序默认C 了 。。。
|
||||
xkOutMain.setIs_free_account("N");
|
||||
xkOutMain.setAll_recycle_sign("N");
|
||||
@ -167,17 +173,97 @@ public class BloodOutServiceImpl implements BloodOutService {
|
||||
public Result bloodOutAudit(BloodOutAuditVO bloodOutAuditVO) {
|
||||
String billNo = bloodOutAuditVO.getBillNo();
|
||||
String applyNo = bloodOutAuditVO.getApplyNo();
|
||||
String userId = bloodOutAuditVO.getUserId();
|
||||
Result result = bloodBankUtil.checkOperatorModify("LCFX", bloodOutAuditVO.getBillNo(), false, bloodOutAuditVO.getUserId());
|
||||
if(!result.getCode().equals("0")) return result;
|
||||
XkOutMain xkOutMainDB = xkOutMainMapper.queryOne(billNo);
|
||||
String checkSign = xkOutMainDB.getCheck_sign();
|
||||
String beinhosId = xkOutMainDB.getBeinhos_id();
|
||||
if(checkSign.equals("Y")) return new Result("-1","该单据已经通过审核,不能作修改!");
|
||||
Result result1 = checkSampleValid(applyNo);
|
||||
if(!result1.getCode().equals("0")) return result1;
|
||||
//TODO 后面还有逻辑
|
||||
List<XkBloodInfo> xkBloodInfoList = new ArrayList<>();
|
||||
List<XkOutDetail> xkOutDetailList = xkOutDetailMapper.queryListByBillNo(billNo);
|
||||
XkBloodInfo xkBloodInfoTemp = null;
|
||||
for (XkOutDetail xkOutDetail : xkOutDetailList) {
|
||||
String bloodNo = xkOutDetail.getBlood_no();
|
||||
String productNo = xkOutDetail.getProduct_no();
|
||||
XkBloodInfo xkBloodInfo = xkBloodInfoMapper.queryOne(bloodNo, productNo);
|
||||
String bloodStatus = xkBloodInfo.getBlood_status();
|
||||
switch (bloodStatus){
|
||||
case "2":
|
||||
return new Result("-1","血液:" + bloodNo + "已经报废,不能够出库");
|
||||
case "4":
|
||||
return new Result("-1","血液:" + bloodNo + "已经发出血库,不能够出库");
|
||||
}
|
||||
|
||||
//修改血液状态
|
||||
xkBloodInfoTemp = new XkBloodInfo();
|
||||
xkBloodInfoTemp.setBlood_status("4");
|
||||
xkBloodInfoTemp.setBlood_no(bloodNo);
|
||||
xkBloodInfoTemp.setProduct_no(productNo);
|
||||
xkBloodInfoTemp.setAbnor_sign("N");
|
||||
xkBloodInfoList.add(xkBloodInfoTemp);
|
||||
}
|
||||
XkOutMain xkOutMainTemp = new XkOutMain();
|
||||
xkOutMainTemp.setBill_no(billNo);
|
||||
xkOutMainTemp.setCheck_sign("Y");
|
||||
xkOutMainTemp.setCheck_person(userId);
|
||||
xkOutMainTemp.setCheck_date(bloodBankUtil.getCurrentTimeDate());
|
||||
xkOutMainTemp.setTake_person(bloodOutAuditVO.getTakePerson());
|
||||
xkOutMainTemp.setExp2("N");
|
||||
|
||||
XkTransfuseApply xkTransfuseApplyTemp = new XkTransfuseApply();
|
||||
xkTransfuseApplyTemp.setBill_no(applyNo);
|
||||
xkTransfuseApplyTemp.setBill_stasus("D");
|
||||
|
||||
//交叉配血
|
||||
XkMatchMain xkMatchMain = bloodOutMapper.queryXkMatchMain(applyNo);
|
||||
XkMatchMain xkMatchMainTemp = null;
|
||||
if(xkMatchMain != null){
|
||||
xkMatchMainTemp = new XkMatchMain();
|
||||
xkMatchMainTemp.setBill_no(xkMatchMain.getBill_no());
|
||||
xkMatchMainTemp.setBill_status("B");
|
||||
}
|
||||
|
||||
//血型复核
|
||||
List<XkCheckBloodtype> xkCheckBloodtypeList = bloodOutMapper.queryCheckBloodtype(applyNo);
|
||||
XkCheckBloodtype xkCheckBloodtypeTemp = null;
|
||||
if(!xkCheckBloodtypeList.isEmpty()){
|
||||
xkCheckBloodtypeTemp = new XkCheckBloodtype();
|
||||
xkCheckBloodtypeTemp.setBill_status("C");
|
||||
xkCheckBloodtypeTemp.setBill_no(xkCheckBloodtypeList.get(0).getBill_no());
|
||||
}
|
||||
|
||||
//病人信息
|
||||
XkPatientInfo xkPatientInfoTemp = new XkPatientInfo();
|
||||
xkPatientInfoTemp.setTransfuse_history("Y");
|
||||
xkPatientInfoTemp.setBeinhos_id(beinhosId);
|
||||
|
||||
bloodOutUtil.auditBloodOutInfo(xkBloodInfoTemp,xkTransfuseApplyTemp,xkOutMainTemp,xkCheckBloodtypeTemp,xkPatientInfoTemp,xkMatchMainTemp);
|
||||
|
||||
//通知护士取血
|
||||
notifyBloodOut(billNo);
|
||||
|
||||
//调用外部接口
|
||||
BloodOutAuditRequest bloodOutAuditRequest = new BloodOutAuditRequest();
|
||||
bloodOutAuditRequest.setBillNo(billNo);
|
||||
Result result2 = BloodInterfaceUtil.invokeBloodInterface(bloodOutAuditRequest);
|
||||
if(!result2.getCode().equals("0")) return result2;
|
||||
return new Result("0","审核成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result notifyMessage(String billNo) {
|
||||
notifyBloodOut(billNo);
|
||||
return new Result("0","通知成功");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result printReport(String billNo, String templateName) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public Result checkBloodValid(XkTransfuseApply xkTransfuseApply){
|
||||
String billSort = xkTransfuseApply.getBill_sort();
|
||||
@ -305,4 +391,17 @@ public class BloodOutServiceImpl implements BloodOutService {
|
||||
}
|
||||
return new Result("0","操作成功");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通知护士取血
|
||||
* @param billNo
|
||||
*/
|
||||
public void notifyBloodOut(String billNo){
|
||||
//TODO 这里应该还有通过websocket发消息给护士站的逻辑
|
||||
XkOutMain xkOutMainTemp = new XkOutMain();
|
||||
xkOutMainTemp.setExp2("Y");
|
||||
xkOutMainTemp.setNotify_time(bloodBankUtil.getCurrentTimeDate());
|
||||
xkOutMainTemp.setBill_no(billNo);
|
||||
xkOutMainMapper.insert(xkOutMainTemp);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,13 +1,7 @@
|
||||
package com.czblood.busBloodbank.utils;
|
||||
|
||||
import com.czblood.bus.mapper.XkOutDetailMapper;
|
||||
import com.czblood.bus.mapper.XkOutMainMapper;
|
||||
import com.czblood.bus.mapper.XkPatientInfoMapper;
|
||||
import com.czblood.bus.mapper.XkTransfuseApplyMapper;
|
||||
import com.czblood.bus.pojo.XkOutDetail;
|
||||
import com.czblood.bus.pojo.XkOutMain;
|
||||
import com.czblood.bus.pojo.XkPatientInfo;
|
||||
import com.czblood.bus.pojo.XkTransfuseApply;
|
||||
import com.czblood.bus.mapper.*;
|
||||
import com.czblood.bus.pojo.*;
|
||||
import com.czblood.busBloodbank.pojo.VO.BloodOutInfoVO;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -26,6 +20,12 @@ public class BloodOutUtil {
|
||||
private XkTransfuseApplyMapper xkTransfuseApplyMapper;
|
||||
@Resource
|
||||
XkPatientInfoMapper xkPatientInfoMapper;
|
||||
@Resource
|
||||
XkCheckBloodtypeMapper xkCheckBloodtypeMapper;
|
||||
@Resource
|
||||
XkBloodInfoMapper xkBloodInfoMapper;
|
||||
@Resource
|
||||
XkMatchMainMapper xkMatchMainMapper;
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void saveBloodOutInfo(BloodOutInfoVO bloodOutInfoVO) {
|
||||
@ -60,4 +60,17 @@ public class BloodOutUtil {
|
||||
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void auditBloodOutInfo(XkBloodInfo xkBloodInfo,XkTransfuseApply xkTransfuseApply,XkOutMain xkOutMain,
|
||||
XkCheckBloodtype xkCheckBloodtype,
|
||||
XkPatientInfo xkPatientInfo,
|
||||
XkMatchMain xkMatchMain){
|
||||
xkOutMainMapper.update(xkOutMain);
|
||||
xkTransfuseApplyMapper.update(xkTransfuseApply);
|
||||
if(xkCheckBloodtype != null) xkCheckBloodtypeMapper.update(xkCheckBloodtype);
|
||||
xkPatientInfoMapper.updateXkPatientInfo(xkPatientInfo);
|
||||
xkBloodInfoMapper.update(xkBloodInfo);
|
||||
if(xkMatchMain != null) xkMatchMainMapper.update(xkMatchMain);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -164,4 +164,8 @@
|
||||
<select id="querySampleMaxPickDate" resultType="java.util.Date">
|
||||
SELECT Max(Pick_Date) FROM xk_sample_info Where Relate_Applyno = #{applyNo}
|
||||
</select>
|
||||
<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>
|
||||
</mapper>
|
||||
Loading…
x
Reference in New Issue
Block a user