血型复核功能开发

This commit is contained in:
jiangs 2026-08-03 17:57:13 +08:00
parent 1977834940
commit dce2bb18b1
20 changed files with 217 additions and 13 deletions

View File

@ -0,0 +1,5 @@
package com.czblood.bus.mapper;
public interface XkChargeDetailMapper {
void deleteByBillNo(String bill_no);
}

View File

@ -0,0 +1,11 @@
package com.czblood.bus.mapper;
import com.czblood.bus.pojo.XkChargeMain;
import java.util.List;
public interface XkChargeMainMapper {
void deleteByBillNo(String bill_no);
List<XkChargeMain> queryList(XkChargeMain xkChargeMain);
}

View File

@ -7,5 +7,7 @@ import java.util.List;
public interface XkCheckBloodtypeMapper {
List<XkCheckBloodtype> queryList(XkCheckBloodtype xkCheckBloodtype);
void insert(XkCheckBloodtype xkCheckBloodtype);
XkCheckBloodtype queryOne(String billNo);
void delete(String billNo);
}

View File

@ -0,0 +1,8 @@
package com.czblood.bus.mapper;
import com.czblood.bus.pojo.XkOutMain;
import org.apache.ibatis.annotations.Param;
public interface XkOutMainMapper {
XkOutMain queryOne(@Param("billNo") String billNo);
}

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;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("收费明细")
public class XkChargeDetail {
private String bill_no;
private Integer sid;
private String serial_number;
private BigDecimal price;
private Integer number;
private BigDecimal sum;
private String remark;
private String item_name;
private String spec;
private String charge_type;
private String unit;
private String charge_flag;
private String blood_no;
private String product_no;
}

View File

@ -0,0 +1,33 @@
package com.czblood.bus.pojo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("收费主表")
public class XkChargeMain {
private String bill_no;
private String beinhos_id;
@ApiModelProperty("收费日期")
private Date occur_date;
@ApiModelProperty("收费人")
private String handle_person;
@ApiModelProperty("申请单号")
private String relative_billno;
private String remark;
private String send_flag;
@ApiModelProperty("收费标志,Y收费,N未收费")
private String check_sign;
private Date last_modified;
private Date send_time;
private Date read_time;
private String read_flag;
private String nbsfbz;
}

View File

@ -1,5 +1,6 @@
package com.czblood.bus.pojo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
@ -11,7 +12,7 @@ import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiOperation("血型复核")
@ApiModel("血型复核")
public class XkCheckBloodtype {
@ApiModelProperty("单据编号")
private String bill_no;

View File

@ -1,6 +1,6 @@
package com.czblood.bus.pojo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
@ -11,7 +11,7 @@ import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Api(tags = "样本信息")
@ApiModel("样本信息")
public class XkSampleInfo {
@ApiModelProperty("样本号")
private String sample_No;

View File

@ -1,5 +1,6 @@
package com.czblood.bus.pojo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
@ -11,7 +12,7 @@ import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiOperation("申请单扫描登记")
@ApiModel("申请单扫描登记")
public class XkSearchTransfuseBill {
private String bill_no;
private Integer sid;

View File

@ -71,7 +71,7 @@ public class XkTransfuseApply {
private String check_sign;
@ApiModelProperty("审核意见")
private String check_explain;
@ApiModelProperty("状态(A=未审核、B=已审核、C=已配血、D=已发血、Z=作废、BD=未补录、W=已补录、F=已复核血型、S=已追加配血、N=审核未通过)")
@ApiModelProperty("状态(A=未审核、B=已审核、C=已配血、D=已发血、Z=作废、BD=未补录、W=已补录、F=已复核血型、S=已追加配血、N=审核未通过、SF=追加血型复核)")
private String bill_stasus;
private String bill_type;
@ApiModelProperty("申请医生")

View File

@ -0,0 +1,9 @@
<?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.XkChargeDetailMapper">
<delete id="deleteByBillNo">
delete from xk_charge_detail where bill_no = #{bill_no}
</delete>
</mapper>

View File

@ -0,0 +1,17 @@
<?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.XkChargeMainMapper">
<delete id="deleteByBillNo">
delete from xk_charge_main where bill_no = #{bill_no}
</delete>
<select id="queryList" resultType="com.czblood.bus.pojo.XkChargeMain">
select * from xk_charge_main
<where>
<if test="bill_no != null">and bill_no = #{bill_no}</if>
<if test="send_flag != null">and send_flag = #{send_flag}</if>
<if test="relative_billno != null">and relative_billno = #{relative_billno}</if>
</where>
</select>
</mapper>

View File

@ -44,6 +44,9 @@
<if test="bz1 != null">#{bz1},</if>
#{hos_id},#{bill_no},#{apply_no},#{beinhos_id},#{patient_name},#{dept_id},#{check_abo},#{check_fabo},#{affirm_abo})
</insert>
<delete id="delete">
delete from xk_check_bloodtype where bill_no = #{billNo}
</delete>
<select id="queryList" resultType="com.czblood.bus.pojo.XkCheckBloodtype">
select * from xk_check_bloodtype where hos_id = #{hos_id}
@ -51,4 +54,7 @@
<if test="apply_no != null and apply_no != ''">and apply_no = #{apply_no}</if>
<if test="beinhos_id != null and beinhos_id != ''">and beinhos_id = #{beinhos_id}</if>
</select>
<select id="queryOne" resultType="com.czblood.bus.pojo.XkCheckBloodtype">
select * from xk_check_bloodtype where bill_no = #{billNo}
</select>
</mapper>

View File

@ -0,0 +1,9 @@
<?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.XkOutMainMapper">
<select id="queryOne" resultType="com.czblood.bus.pojo.XkOutMain">
select * from xk_out_main where bill_no = #{billNo}
</select>
</mapper>

View File

@ -35,6 +35,12 @@ public class CheckBloodTypeController {
return checkBloodTypeService.saveData(xkCheckBloodtype);
}
@ApiOperation("删除数据")
@GetMapping("/delCheckBloodTypeInfo")
public Result delCheckBloodTypeInfo(String billNo){
return checkBloodTypeService.delCheckBloodTypeInfo(billNo);
}
}

View File

@ -7,4 +7,5 @@ public interface CheckBloodTypeMapper {
List<Map<String,Object>> queryWaitInfo(String bbjszhxxfh);
int checkMatchedBloodNotOut(String billNo);
List<Map<String,Object>> queryOne(String billNo);
int queryOutMainCount(String billNo);
}

View File

@ -7,4 +7,6 @@ public interface CheckBloodTypeService {
Result queryWaitInfo();
Result queryOne(String billNo);
Result saveData(XkCheckBloodtype xkCheckBloodtype);
Result delCheckBloodTypeInfo(String billNo);
}

View File

@ -1,11 +1,10 @@
package com.czblood.busBloodbank.service.impl;
import com.czblood.bus.mapper.XkChargeMainMapper;
import com.czblood.bus.mapper.XkCheckBloodtypeMapper;
import com.czblood.bus.mapper.XkTransfuseApplyBloodbreedMapper;
import com.czblood.bus.mapper.XkTransfuseApplyMapper;
import com.czblood.bus.pojo.XkCheckBloodtype;
import com.czblood.bus.pojo.XkTransfuseApply;
import com.czblood.bus.pojo.XkTransfuseApplyBloodbreed;
import com.czblood.bus.pojo.*;
import com.czblood.bus.pojo.inter.CheckBloodTypeRequest;
import com.czblood.bus.utils.BloodBankUtil;
import com.czblood.bus.utils.BloodInterfaceUtil;
@ -35,6 +34,8 @@ public class CheckBloodTypeServiceImpl implements CheckBloodTypeService {
XkTransfuseApplyMapper xkTransfuseApplyMapper;
@Resource
XkCheckBloodtypeMapper xkCheckBloodtypeMapper;
@Resource
XkChargeMainMapper xkChargeMainMapper;
@Override
@ -77,6 +78,7 @@ public class CheckBloodTypeServiceImpl implements CheckBloodTypeService {
if(billStatus.equals("C")) return new Result("0","该申请单的血型复核单已发血,不可修改!");
}
String billSort = xkTransfuseApply.getBill_sort();
//是否需要配血
if(billSort.equals("B")){
xkCheckBloodtype.setBill_status("Y");
}else{
@ -89,13 +91,51 @@ public class CheckBloodTypeServiceImpl implements CheckBloodTypeService {
xkTransfuseApplyTemp.setBill_stasus("F");
xkTransfuseApplyTemp.setNotify_sign("Y");
//当血型复核的结果和申请单之前的接口不一致的时候,需要更新申请单的血型,以及病人基本信息的血型 TODO
//当血型复核的结果和申请单之前的结果不一致的时候,需要更新申请单的血型,以及病人基本信息的血型
xkTransfuseApplyTemp.setAbo_type(xkCheckBloodtype.getAffirm_abo());
xkTransfuseApplyTemp.setRh_type(xkCheckBloodtype.getCheck_rh());
checkBloodTypeUtil.saveData(xkCheckBloodtype,xkTransfuseApplyTemp);
XkPatientInfo xkPatientInfoTemp = new XkPatientInfo();
xkPatientInfoTemp.setAbo(xkCheckBloodtype.getAffirm_abo());
xkPatientInfoTemp.setRh(xkCheckBloodtype.getCheck_rh());
xkPatientInfoTemp.setBeinhos_id(xkCheckBloodtype.getBeinhos_id());
checkBloodTypeUtil.saveData(xkCheckBloodtype,xkTransfuseApplyTemp,xkPatientInfoTemp);
//调用外部接口
CheckBloodTypeRequest checkBloodTypeRequest = new CheckBloodTypeRequest();
Result result = BloodInterfaceUtil.invokeBloodInterface(checkBloodTypeRequest);
if(!result.getCode().equals("0")) return result;
return new Result("0","保存数据成功!",newBillNo);
}
@Override
public Result delCheckBloodTypeInfo(String billNo) {
XkCheckBloodtype xkCheckBloodtype = xkCheckBloodtypeMapper.queryOne(billNo);
if(xkCheckBloodtype == null) return new Result("-1","该血型复核单不存在!");
String billStatus = xkCheckBloodtype.getBill_status();
String applyNo = xkCheckBloodtype.getApply_no();
if(billStatus.equals("B")) return new Result("-1","该单据对应的申请单已经配血,不能删除!");
if(billStatus.equals("C")) return new Result("-1","该单据对应的申请单已经发血,不能删除!");
int i = checkBloodTypeMapper.checkMatchedBloodNotOut(billNo);
if(i > 0 ) return new Result("-1","该血型复核单对应的发血单已经登记发血,不能删除!");
//修改状态
XkTransfuseApply xkTransfuseApplyTemp = new XkTransfuseApply();
xkTransfuseApplyTemp.setBill_no(applyNo);
xkTransfuseApplyTemp.setBill_stasus("F");
XkChargeMain xkChargeMain = new XkChargeMain();
xkChargeMain.setRelative_billno(applyNo);
xkChargeMain.setSend_flag("N");
List<XkChargeMain> xkChargeMainList = xkChargeMainMapper.queryList(xkChargeMain);
String chargeBillNo = "";
if(!xkChargeMainList.isEmpty()){
chargeBillNo = xkChargeMainList.get(0).getBill_no();
}
checkBloodTypeUtil.deleteData(xkTransfuseApplyTemp,chargeBillNo,billNo);
//调用外部接口 TODO
return new Result("0","删除成功!");
}
}

View File

@ -1,8 +1,8 @@
package com.czblood.busBloodbank.utils;
import com.czblood.bus.mapper.XkCheckBloodtypeMapper;
import com.czblood.bus.mapper.XkTransfuseApplyMapper;
import com.czblood.bus.mapper.*;
import com.czblood.bus.pojo.XkCheckBloodtype;
import com.czblood.bus.pojo.XkPatientInfo;
import com.czblood.bus.pojo.XkTransfuseApply;
import com.czblood.busBloodbank.mapper.CheckBloodTypeMapper;
import com.czblood.common.core.domain.Result;
@ -20,6 +20,12 @@ public class CheckBloodTypeUtil {
CheckBloodTypeMapper checkBloodTypeMapper;
@Resource
XkCheckBloodtypeMapper xkCheckBloodtypeMapper;
@Resource
XkPatientInfoMapper xkPatientInfoMapper;
@Resource
XkChargeMainMapper xkChargeMainMapper;
@Resource
XkChargeDetailMapper xkChargeDetailMapper;
/**
* 校验申请单是否有效
@ -58,8 +64,23 @@ public class CheckBloodTypeUtil {
}
@Transactional(rollbackFor = Exception.class)
public void saveData(XkCheckBloodtype xkCheckBloodtype,XkTransfuseApply xkTransfuseApply){
public void saveData(XkCheckBloodtype xkCheckBloodtype, XkTransfuseApply xkTransfuseApply, XkPatientInfo xkPatientInfo){
xkCheckBloodtypeMapper.insert(xkCheckBloodtype);
xkTransfuseApplyMapper.update(xkTransfuseApply);
if(xkPatientInfo != null){
xkPatientInfoMapper.updateXkPatientInfo(xkPatientInfo);
}
}
@Transactional(rollbackFor = Exception.class)
public void deleteData(XkTransfuseApply xkTransfuseApply,String chargeBillNo,String checkBillNo){
xkCheckBloodtypeMapper.delete(checkBillNo);
xkTransfuseApplyMapper.update(xkTransfuseApply);
//删除血型复核收费数据
if(chargeBillNo != null && !chargeBillNo.equals("")){
xkChargeMainMapper.deleteByBillNo(chargeBillNo);
xkChargeDetailMapper.deleteByBillNo(chargeBillNo);
}
}
}

View File

@ -62,4 +62,7 @@
FROM xk_patient_info RIGHT OUTER JOIN xk_transfuse_apply ON xk_patient_info.beinhos_id = xk_transfuse_apply.beinhos_id
WHERE xk_transfuse_apply.bill_no = #{billNo}
</select>
<select id="queryOutMainCount" resultType="java.lang.Integer">
Select count (*) From xk_out_main where check_no = #{billNo} and check_sign ='N';
</select>
</mapper>