交叉配血功能
This commit is contained in:
parent
88d214bc24
commit
dd0aaf74f1
@ -53,4 +53,13 @@ public class BloodInterfaceTypeConstants {
|
||||
* 取消血型复核
|
||||
*/
|
||||
public static final String CANCEL_CHECK_BLOOD_TYPE = "CANCEL_CHECK_BLOOD_TYPE";
|
||||
/**
|
||||
* 交叉配血
|
||||
*/
|
||||
public static final String MATCH_BLOOD_TYPE = "MATCH_BLOOD_TYPE";
|
||||
|
||||
/**
|
||||
* 作废配血单
|
||||
*/
|
||||
public static final String CANCEL_MATCH_BLOOD_TYPE = "CANCEL_MATCH_BLOOD_TYPE";
|
||||
}
|
||||
|
||||
@ -9,5 +9,6 @@ public interface XkCheckBloodtypeMapper {
|
||||
void insert(XkCheckBloodtype xkCheckBloodtype);
|
||||
XkCheckBloodtype queryOne(String billNo);
|
||||
void delete(String billNo);
|
||||
void update(XkCheckBloodtype xkCheckBloodtype);
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,12 @@
|
||||
package com.czblood.bus.mapper;
|
||||
|
||||
import com.czblood.bus.pojo.XkMatchDetail;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface XkMatchDetailMapper {
|
||||
void insert(XkMatchDetail xkMatchDetail);
|
||||
List<XkMatchDetail> queryListByBillNo(String bill_no);
|
||||
void update(XkMatchDetail xkMatchDetail);
|
||||
void deleteByBillNo(String bill_no);
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
package com.czblood.bus.mapper;
|
||||
|
||||
import com.czblood.bus.pojo.XkMatchMain;
|
||||
|
||||
public interface XkMatchMainMapper {
|
||||
void insertMatch(XkMatchMain xkMatchMain);
|
||||
XkMatchMain queryOne(String bill_no);
|
||||
void update(XkMatchMain xkMatchMain);
|
||||
}
|
||||
@ -62,6 +62,7 @@ public class XkCheckBloodtype {
|
||||
private String bill_status;
|
||||
@ApiModelProperty("备注")
|
||||
private String remark;
|
||||
@ApiModelProperty("亚型")
|
||||
private String Sub_Blood;
|
||||
private String bz1;
|
||||
private String hos_id;
|
||||
|
||||
@ -26,7 +26,7 @@ public class XkMatchMain {
|
||||
private String sample_id;
|
||||
@ApiModelProperty("检验日期")
|
||||
private Date test_date;
|
||||
@ApiModelProperty("单据状态")
|
||||
@ApiModelProperty("单据状态,A未发血,B已发血,ZF已作废")
|
||||
private String bill_status;
|
||||
@ApiModelProperty("是否配型")
|
||||
private String match_sign;
|
||||
|
||||
@ -0,0 +1,20 @@
|
||||
package com.czblood.bus.pojo.inter;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.czblood.bus.constants.BloodInterfaceTypeConstants;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class CancelMatchBloodTypeRequest implements BloodInterfaceType {
|
||||
private final String method = BloodInterfaceTypeConstants.CANCEL_MATCH_BLOOD_TYPE;
|
||||
private String billNo;
|
||||
|
||||
@Override
|
||||
public String serializationJson() {
|
||||
return JSONUtil.toJsonStr(this);
|
||||
}
|
||||
}
|
||||
@ -10,7 +10,6 @@ import lombok.NoArgsConstructor;
|
||||
@NoArgsConstructor
|
||||
@Data
|
||||
public class CheckBloodTypeRequest implements BloodInterfaceType {
|
||||
|
||||
private final String method = BloodInterfaceTypeConstants.CHECK_BLOOD_TYPE;
|
||||
private String billNo;
|
||||
|
||||
|
||||
@ -0,0 +1,21 @@
|
||||
package com.czblood.bus.pojo.inter;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.czblood.bus.constants.BloodInterfaceTypeConstants;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class MatchBloodTypeRequest implements BloodInterfaceType{
|
||||
|
||||
private final String method = BloodInterfaceTypeConstants.MATCH_BLOOD_TYPE;
|
||||
private String billNo;
|
||||
|
||||
@Override
|
||||
public String serializationJson() {
|
||||
return JSONUtil.toJsonStr(this);
|
||||
}
|
||||
}
|
||||
@ -6,9 +6,13 @@ import com.czblood.bus.cache.DmzdCache;
|
||||
import com.czblood.bus.cache.OptionCache;
|
||||
import com.czblood.bus.mapper.*;
|
||||
import com.czblood.bus.pojo.XkBloodInfo;
|
||||
import com.czblood.bus.pojo.XkCheckBloodtype;
|
||||
import com.czblood.bus.pojo.XkMatchDetail;
|
||||
import com.czblood.bus.pojo.XkOutMain;
|
||||
import com.czblood.bus.pojo.xtwh.XkBloodBreed;
|
||||
import com.czblood.bus.pojo.xtwh.XkDmzd;
|
||||
import com.czblood.bus.pojo.xtwh.XkParameter;
|
||||
import com.czblood.common.core.domain.Result;
|
||||
import com.czblood.common.core.domain.entity.SysUser;
|
||||
import com.czblood.system.mapper.SysUserMapper;
|
||||
import com.czblood.system.util.CommonUtil;
|
||||
@ -40,6 +44,12 @@ public class BloodBankUtil {
|
||||
SysUserMapper sysUserMapper;
|
||||
@Resource
|
||||
XkBloodInfoMapper xkBloodInfoMapper;
|
||||
@Resource
|
||||
XkCheckBloodtypeMapper xkCheckBloodtypeMapper;
|
||||
@Resource
|
||||
XkMatchDetailMapper xkMatchDetailMapper;
|
||||
@Resource
|
||||
XkOutMainMapper xkOutMainMapper;
|
||||
|
||||
|
||||
/**
|
||||
@ -183,4 +193,47 @@ public class BloodBankUtil {
|
||||
return xkBloodInfoMapper.queryOne(bloodNo, productNo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验操作权限
|
||||
* @param flag
|
||||
* @param billNo
|
||||
* @param billModify
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
public Result checkOperatorModify(String flag,String billNo,boolean billModify,String userId){
|
||||
//操作人是否只能修改自己操作的单据?(血型复核、交叉配血、临床发血等)Y是,N否
|
||||
String usermodifyset = getParameterValue("USERMODIFYSET");
|
||||
if(!usermodifyset.equals("Y")) return new Result("0","参数未开启,校验通过!");
|
||||
if(!billModify) return new Result("0","校验通过!");
|
||||
switch (flag){
|
||||
case "XXFH": //血型复核
|
||||
XkCheckBloodtype xkCheckBloodtype = xkCheckBloodtypeMapper.queryOne(billNo);
|
||||
if(xkCheckBloodtype == null) return new Result("0","校验通过");
|
||||
if(!xkCheckBloodtype.getTest_person().equals(userId)){
|
||||
return new Result("-1","当前血型复核单[" + billNo + "]是由【" +
|
||||
getUserInfo(userId).getNickName() + "】登记,您没有权限操作!");
|
||||
}
|
||||
break;
|
||||
case "JCPX": //交叉配血
|
||||
List<XkMatchDetail> xkMatchDetailList = xkMatchDetailMapper.queryListByBillNo(billNo);
|
||||
if(xkMatchDetailList.isEmpty()) return new Result("0","校验通过");
|
||||
List<XkMatchDetail> collect = xkMatchDetailList.stream().filter(xkMatchDetail -> xkMatchDetail.getMatch_medic().equals(userId)).collect(Collectors.toList());
|
||||
if(collect.size() > 0){
|
||||
return new Result("-1","当前交叉配血单[" + billNo + "]是由【" +
|
||||
getUserInfo(userId).getNickName() + "】登记,您没有权限操作!");
|
||||
}
|
||||
break;
|
||||
case "LCFX": //临床发血
|
||||
XkOutMain xkOutMain = xkOutMainMapper.queryOne(billNo);
|
||||
if(xkOutMain == null) return new Result("0","校验通过");
|
||||
if(!xkOutMain.getHandle_person().equals(userId) || !xkOutMain.getInput_person().equals(userId)){
|
||||
return new Result("-1","当前临床发血单[" + billNo + "]是由【" +
|
||||
getUserInfo(userId).getNickName() + "】登记,您没有权限操作!");
|
||||
}
|
||||
break;
|
||||
}
|
||||
return new Result("0","校验通过");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -46,6 +46,36 @@
|
||||
<if test="plt_test != null">#{plt_test},</if>
|
||||
#{hos_id},#{bill_no},#{apply_no},#{beinhos_id},#{patient_name},#{dept_id},#{check_abo},#{check_fabo},#{affirm_abo})
|
||||
</insert>
|
||||
<update id="update">
|
||||
update xk_check_bloodtype set
|
||||
<if test="apply_no != null">apply_no = #{apply_no},</if>
|
||||
<if test="beinhos_id != null">beinhos_id = #{beinhos_id},</if>
|
||||
<if test="patient_name != null">patient_name = #{patient_name},</if>
|
||||
<if test="dept_id != null">dept_id = #{dept_id},</if>
|
||||
<if test="check_abo != null">check_abo = #{check_abo},</if>
|
||||
<if test="check_fabo != null">check_fabo = #{check_fabo},</if>
|
||||
<if test="affirm_abo != null">affirm_abo = #{affirm_abo},</if>
|
||||
<if test="check_rh != null">check_rh = #{check_rh},</if>
|
||||
<if test="antibody1 != null">antibody1 = #{antibody1},</if>
|
||||
<if test="antibody2 != null">antibody2 = #{antibody2},</if>
|
||||
<if test="antibody3 != null">antibody3 = #{antibody3},</if>
|
||||
<if test="affirm_antibody != null">affirm_antibody = #{affirm_antibody},</if>
|
||||
<if test="proteid_test != null">proteid_test = #{proteid_test},</if>
|
||||
<if test="test_person != null">test_person = #{test_person},</if>
|
||||
<if test="test_date != null">test_date = #{test_date},</if>
|
||||
<if test="check_person != null">check_person = #{check_person},</if>
|
||||
<if test="input_person != null">input_person = #{input_person},</if>
|
||||
<if test="input_date != null">input_date = #{input_date},</if>
|
||||
<if test="sample_id != null">sample_id = #{sample_id},</if>
|
||||
<if test="need_match != null">need_match = #{need_match},</if>
|
||||
<if test="bill_sort != null">bill_sort = #{bill_sort},</if>
|
||||
<if test="bill_status != null">bill_status = #{bill_status},</if>
|
||||
<if test="remark != null">remark = #{remark},</if>
|
||||
<if test="Sub_Blood != null">Sub_Blood = #{Sub_Blood},</if>
|
||||
<if test="bz1 != null">bz1 = #{bz1},</if>
|
||||
<if test="plt_test != null">plt_test = #{plt_test},</if>
|
||||
where bill_no = #{billNo}
|
||||
</update>
|
||||
<delete id="delete">
|
||||
delete from xk_check_bloodtype where bill_no = #{billNo}
|
||||
</delete>
|
||||
@ -55,6 +85,7 @@
|
||||
<if test="bill_no != null and bill_no != ''">and bill_no = #{bill_no}</if>
|
||||
<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>
|
||||
<if test="bill_status != null and bill_status != ''">and bill_status = #{bill_status}</if>
|
||||
</select>
|
||||
<select id="queryOne" resultType="com.czblood.bus.pojo.XkCheckBloodtype">
|
||||
select * from xk_check_bloodtype where bill_no = #{billNo}
|
||||
|
||||
75
blood_bus/src/main/resources/mapper/XkMatchDetailMapper.xml
Normal file
75
blood_bus/src/main/resources/mapper/XkMatchDetailMapper.xml
Normal file
@ -0,0 +1,75 @@
|
||||
<?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.XkMatchDetailMapper">
|
||||
|
||||
<insert id="insert">
|
||||
insert into xk_match_detail (
|
||||
<if test="check_offer_abo != null">check_offer_abo,</if>
|
||||
<if test="check_offer_fabo != null">check_offer_fabo,</if>
|
||||
<if test="offer_affirm_abo != null">offer_affirm_abo,</if>
|
||||
<if test="check_offer_rh != null">check_offer_rh,</if>
|
||||
<if test="match_medic != null">match_medic,</if>
|
||||
<if test="second_match_medic != null">second_match_medic,</if>
|
||||
<if test="match_date != null">match_date,</if>
|
||||
<if test="match_method != null">match_method,</if>
|
||||
<if test="check_method != null">check_method,</if>
|
||||
<if test="first_side != null">first_side,</if>
|
||||
<if test="second_side != null">second_side,</if>
|
||||
<if test="result != null">result,</if>
|
||||
<if test="add_sign != null">add_sign,</if>
|
||||
<if test="delay_day != null">delay_day,</if>
|
||||
<if test="delay_sign != null">delay_sign,</if>
|
||||
<if test="position_blood != null">position_blood,</if>
|
||||
<if test="position_barcode != null">position_barcode,</if>
|
||||
bill_no,sid,hos_id,blood_no,product_no
|
||||
)values (
|
||||
<if test="check_offer_abo != null">#{check_offer_abo},</if>
|
||||
<if test="check_offer_fabo != null">#{check_offer_fabo},</if>
|
||||
<if test="offer_affirm_abo != null">#{offer_affirm_abo},</if>
|
||||
<if test="check_offer_rh != null">#{check_offer_rh},</if>
|
||||
<if test="match_medic != null">#{match_medic},</if>
|
||||
<if test="second_match_medic != null">#{second_match_medic},</if>
|
||||
<if test="match_date != null">#{match_date},</if>
|
||||
<if test="match_method != null">#{match_method},</if>
|
||||
<if test="check_method != null">#{check_method},</if>
|
||||
<if test="first_side != null">#{first_side},</if>
|
||||
<if test="second_side != null">#{second_side},</if>
|
||||
<if test="result != null">#{result},</if>
|
||||
<if test="add_sign != null">#{add_sign},</if>
|
||||
<if test="delay_day != null">#{delay_day},</if>
|
||||
<if test="delay_sign != null">#{delay_sign},</if>
|
||||
<if test="position_blood != null">#{position_blood},</if>
|
||||
<if test="position_barcode != null">#{position_barcode},</if>
|
||||
#{bill_no},#{sid},#{hos_id},#{blood_no},#{product_no}
|
||||
)
|
||||
</insert>
|
||||
<update id="update">
|
||||
update xk_match_detail set
|
||||
<if test="check_offer_abo != null">check_offer_abo = #{check_offer_abo},</if>
|
||||
<if test="check_offer_fabo != null">check_offer_fabo = #{check_offer_fabo},</if>
|
||||
<if test="offer_affirm_abo != null">offer_affirm_abo = #{offer_affirm_abo},</if>
|
||||
<if test="check_offer_rh != null">check_offer_rh = #{check_offer_rh},</if>
|
||||
<if test="match_medic != null">match_medic = #{match_medic},</if>
|
||||
<if test="second_match_medic != null">second_match_medic = #{second_match_medic},</if>
|
||||
<if test="match_date != null">match_date = #{match_date},</if>
|
||||
<if test="match_method != null">match_method = #{match_method},</if>
|
||||
<if test="check_method != null">check_method = #{check_method},</if>
|
||||
<if test="first_side != null">first_side = #{first_side},</if>
|
||||
<if test="second_side != null">second_side = #{second_side},</if>
|
||||
<if test="result != null">result = #{result},</if>
|
||||
<if test="add_sign != null">add_sign = #{add_sign},</if>
|
||||
<if test="delay_day != null">delay_day = #{delay_day},</if>
|
||||
<if test="delay_sign != null">delay_sign = #{delay_sign},</if>
|
||||
<if test="position_blood != null">position_blood = #{position_blood},</if>
|
||||
<if test="position_barcode != null">position_barcode = #{position_barcode},</if>
|
||||
bill_no = #{bill_no}
|
||||
where bill_no = #{bill_no}
|
||||
</update>
|
||||
<delete id="deleteByBillNo">
|
||||
delete from xk_match_detail where bill_no = #{bill_no}
|
||||
</delete>
|
||||
<select id="queryListByBillNo" resultType="com.czblood.bus.pojo.XkMatchDetail">
|
||||
select * from xk_match_detail where bill_no = #{bill_no}
|
||||
</select>
|
||||
</mapper>
|
||||
54
blood_bus/src/main/resources/mapper/XkMatchMainMapper.xml
Normal file
54
blood_bus/src/main/resources/mapper/XkMatchMainMapper.xml
Normal file
@ -0,0 +1,54 @@
|
||||
<?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.XkMatchMainMapper">
|
||||
<insert id="insertMatch">
|
||||
insert into xk_match_main (
|
||||
<if test="dept_id != null">dept_id,</if>
|
||||
<if test="apply_no != null">apply_no,</if>
|
||||
<if test="check_no != null">check_no,</if>
|
||||
<if test="sample_id != null">sample_id,</if>
|
||||
<if test="test_date != null">test_date,</if>
|
||||
<if test="bill_status != null">bill_status,</if>
|
||||
<if test="match_sign != null">match_sign,</if>
|
||||
<if test="remark != null">remark,</if>
|
||||
<if test="input_person != null">input_person,</if>
|
||||
<if test="input_date != null">input_date,</if>
|
||||
<if test="last_modified != null">last_modified,</if>
|
||||
bill_no,hos_id,beinhos_id,patient_name
|
||||
)values (
|
||||
<if test="dept_id != null">#{dept_id},</if>
|
||||
<if test="apply_no != null">#{apply_no},</if>
|
||||
<if test="check_no != null">#{check_no},</if>
|
||||
<if test="sample_id != null">#{sample_id},</if>
|
||||
<if test="test_date != null">#{test_date},</if>
|
||||
<if test="bill_status != null">#{bill_status},</if>
|
||||
<if test="match_sign != null">#{match_sign},</if>
|
||||
<if test="remark != null">#{remark},</if>
|
||||
<if test="input_person != null">#{input_person},</if>
|
||||
<if test="input_date != null">#{input_date},</if>
|
||||
<if test="last_modified != null">#{last_modified},</if>
|
||||
#{bill_no},#{hos_id},#{beinhos_id},#{patient_name})
|
||||
</insert>
|
||||
<update id="update">
|
||||
update xk_match_main set
|
||||
<if test="beinhos_id != null">beinhos_id = #{beinhos_id},</if>
|
||||
<if test="patient_name != null">patient_name = #{patient_name},</if>
|
||||
<if test="dept_id != null">dept_id = #{dept_id},</if>
|
||||
<if test="apply_no != null">apply_no = #{apply_no},</if>
|
||||
<if test="check_no != null">check_no = #{check_no},</if>
|
||||
<if test="sample_id != null">sample_id = #{sample_id},</if>
|
||||
<if test="test_date != null">test_date = #{test_date},</if>
|
||||
<if test="bill_status != null">bill_status = #{bill_status},</if>
|
||||
<if test="match_sign != null">match_sign = #{match_sign},</if>
|
||||
<if test="remark != null">remark = #{remark},</if>
|
||||
<if test="input_person != null">input_person = #{input_person},</if>
|
||||
<if test="input_date != null">input_date = #{input_date},</if>
|
||||
<if test="last_modified != null">last_modified = #{last_modified},</if>
|
||||
bill_no = #{bill_no}
|
||||
where bill_no = #{bill_no}
|
||||
</update>
|
||||
<select id="queryOne" resultType="com.czblood.bus.pojo.XkMatchMain">
|
||||
select * from xk_match_main where bill_no = #{bill_no}
|
||||
</select>
|
||||
</mapper>
|
||||
@ -1,12 +1,13 @@
|
||||
package com.czblood.busBloodbank.controller;
|
||||
|
||||
import com.czblood.bus.mapper.XkBloodInfoMapper;
|
||||
import com.czblood.bus.pojo.XkBloodInfo;
|
||||
import com.czblood.busBloodbank.pojo.VO.MatchBloodVO;
|
||||
import com.czblood.busBloodbank.service.MatchBloodService;
|
||||
import com.czblood.common.core.controller.BaseController;
|
||||
import com.czblood.common.core.domain.Result;
|
||||
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;
|
||||
|
||||
@ -15,7 +16,7 @@ import javax.annotation.Resource;
|
||||
@Api(tags = "交叉配血")
|
||||
@RestController
|
||||
@RequestMapping("/bus/bloodbank/matchBlood")
|
||||
public class MatchBloodController {
|
||||
public class MatchBloodController extends BaseController {
|
||||
|
||||
@Resource
|
||||
MatchBloodService matchBloodService;
|
||||
@ -44,4 +45,27 @@ public class MatchBloodController {
|
||||
public Result getBloodInfoMatch(String bloodNo,String productNo){
|
||||
return matchBloodService.getBloodInfoMatch(bloodNo, productNo);
|
||||
}
|
||||
|
||||
@ApiOperation("取消血液配血")
|
||||
@PostMapping("/cancelBloodInfoMatch")
|
||||
public Result cancelBloodInfoMatch(String bloodNo,String productNo){
|
||||
return matchBloodService.cancelBloodInfoMatch(bloodNo, productNo);
|
||||
}
|
||||
|
||||
@ApiOperation("保存数据")
|
||||
@PostMapping("/saveData")
|
||||
public Result saveData(MatchBloodVO matchBloodVO){
|
||||
matchBloodVO.setUserId(getUsername());
|
||||
return matchBloodService.saveData(matchBloodVO);
|
||||
}
|
||||
|
||||
@ApiOperation("作废配血单")
|
||||
@GetMapping("/deleteBloodInfoMatch")
|
||||
public Result deleteBloodInfoMatch(String billNo){
|
||||
return matchBloodService.deleteBloodInfoMatch(billNo);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -23,4 +23,5 @@ public interface MatchBloodMapper {
|
||||
int queryBloodOutHosCountTwo(@Param("bloodNo") String bloodNo, @Param("productNo") String productNo);
|
||||
String checkBloodNeedMatch(@Param("bloodNo") String bloodNo, @Param("productNo") String productNo);
|
||||
int queryOutCountThree(@Param("bloodNo") String bloodNo, @Param("productNo") String productNo);
|
||||
String queryChargeMainBillNo(String billNo);
|
||||
}
|
||||
|
||||
@ -0,0 +1,18 @@
|
||||
package com.czblood.busBloodbank.pojo.VO;
|
||||
|
||||
import com.czblood.bus.pojo.XkMatchDetail;
|
||||
import com.czblood.bus.pojo.XkMatchMain;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class MatchBloodVO {
|
||||
private XkMatchMain xkMatchMain;
|
||||
private List<XkMatchDetail> xkMatchDetailList;
|
||||
private String userId;
|
||||
}
|
||||
@ -1,9 +1,13 @@
|
||||
package com.czblood.busBloodbank.service;
|
||||
|
||||
import com.czblood.busBloodbank.pojo.VO.MatchBloodVO;
|
||||
import com.czblood.common.core.domain.Result;
|
||||
|
||||
public interface MatchBloodService {
|
||||
Result queryWaitInfo();
|
||||
Result queryOne(String billNo);
|
||||
Result getBloodInfoMatch(String bloodNo, String productNo);
|
||||
Result cancelBloodInfoMatch(String bloodNo, String productNo);
|
||||
Result saveData(MatchBloodVO matchBloodVO);
|
||||
Result deleteBloodInfoMatch(String billNo);
|
||||
}
|
||||
|
||||
@ -1,13 +1,17 @@
|
||||
package com.czblood.busBloodbank.service.impl;
|
||||
|
||||
import com.czblood.bus.mapper.XkCheckBloodtypeMapper;
|
||||
import com.czblood.bus.mapper.XkMatchMainMapper;
|
||||
import com.czblood.bus.mapper.XkTransfuseApplyBloodbreedMapper;
|
||||
import com.czblood.bus.mapper.XkTransfuseApplyMapper;
|
||||
import com.czblood.bus.pojo.XkBloodInfo;
|
||||
import com.czblood.bus.pojo.XkTransfuseApply;
|
||||
import com.czblood.bus.pojo.XkTransfuseApplyBloodbreed;
|
||||
import com.czblood.bus.pojo.*;
|
||||
import com.czblood.bus.pojo.inter.CancelMatchBloodTypeRequest;
|
||||
import com.czblood.bus.pojo.inter.MatchBloodTypeRequest;
|
||||
import com.czblood.bus.utils.BloodBankUtil;
|
||||
import com.czblood.bus.utils.BloodInterfaceUtil;
|
||||
import com.czblood.busBloodbank.mapper.MatchBloodMapper;
|
||||
import com.czblood.busBloodbank.pojo.DTO.MatchBloodDTO;
|
||||
import com.czblood.busBloodbank.pojo.VO.MatchBloodVO;
|
||||
import com.czblood.busBloodbank.service.MatchBloodService;
|
||||
import com.czblood.busBloodbank.utils.MatchBloodUtil;
|
||||
import com.czblood.common.core.domain.Result;
|
||||
@ -31,6 +35,10 @@ public class MatchBloodServiceImpl implements MatchBloodService {
|
||||
XkTransfuseApplyBloodbreedMapper xkTransfuseApplyBloodbreedMapper;
|
||||
@Resource
|
||||
BloodBankUtil bloodBankUtil;
|
||||
@Resource
|
||||
XkCheckBloodtypeMapper xkCheckBloodtypeMapper;
|
||||
@Resource
|
||||
XkMatchMainMapper xkMatchMainMapper;
|
||||
|
||||
@Override
|
||||
public Result queryWaitInfo() {
|
||||
@ -102,12 +110,149 @@ public class MatchBloodServiceImpl implements MatchBloodService {
|
||||
case "4":
|
||||
return new Result("-1","该血液已经出库!");
|
||||
}
|
||||
int i = matchBloodMapper.queryOutCountThree(bloodNo, productNo);
|
||||
if(i > 0) return new Result("-1","该血液已经登记出库信息,请检查!");
|
||||
|
||||
//返回数据 TODO
|
||||
|
||||
|
||||
return new Result("0","获取数据成功!",xkBloodInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result cancelBloodInfoMatch(String bloodNo, String productNo) {
|
||||
int i = matchBloodMapper.queryOutCountThree(bloodNo, productNo);
|
||||
if(i > 0) return new Result("-1","该血液已经登记出库信息,请检查!");
|
||||
return new Result("0","取消配配血成功!");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result saveData(MatchBloodVO matchBloodVO) {
|
||||
XkMatchMain xkMatchMain = matchBloodVO.getXkMatchMain();
|
||||
String billNo = BloodBankUtil.isBank(xkMatchMain.getBill_no());
|
||||
boolean bModify = false;
|
||||
if(!billNo.equals("")) bModify = true;
|
||||
Result result = bloodBankUtil.checkOperatorModify("JCPX", billNo, bModify, matchBloodVO.getUserId());
|
||||
if(!result.getCode().equals("0")) return result;
|
||||
String billStatus = xkMatchMain.getBill_status();
|
||||
String applyNo = xkMatchMain.getApply_no();
|
||||
if(bModify && billStatus.equals("B")) return new Result("-1","该配血单已发血,不可修改!");
|
||||
List<XkMatchDetail> xkMatchDetailList = matchBloodVO.getXkMatchDetailList();
|
||||
if(xkMatchDetailList.isEmpty()) return new Result("-1","配血血液不可为空,请先添加配血血液!");
|
||||
String newBillNo = "";
|
||||
if(!bModify){
|
||||
//新增数据
|
||||
newBillNo = bloodBankUtil.produceBillNo("PXD");
|
||||
xkMatchMain.setBill_no(newBillNo);
|
||||
xkMatchMain.setBill_status("A");
|
||||
xkMatchMain.setMatch_sign("N");
|
||||
XkTransfuseApply xkTransfuseApply = xkTransfuseApplyMapper.queryOne(applyNo);
|
||||
if(xkTransfuseApply == null) return new Result("-1","该申请单不存在!");
|
||||
String billStasus = xkTransfuseApply.getBill_stasus();
|
||||
String checkNo = "";
|
||||
String billStatusTemp = "";
|
||||
XkCheckBloodtype xkCheckBloodtypeTemp = null;
|
||||
if(billStasus.equals("F") || billStasus.equals("SF")){
|
||||
XkCheckBloodtype xkCheckBloodtypeQuery = new XkCheckBloodtype();
|
||||
xkCheckBloodtypeQuery.setApply_no(applyNo);
|
||||
xkCheckBloodtypeQuery.setBill_status("A");
|
||||
List<XkCheckBloodtype> xkCheckBloodtypeList = xkCheckBloodtypeMapper.queryList(xkCheckBloodtypeQuery);
|
||||
if(!xkCheckBloodtypeList.isEmpty()){
|
||||
checkNo = xkCheckBloodtypeList.get(0).getBill_no();
|
||||
xkCheckBloodtypeTemp = new XkCheckBloodtype();
|
||||
xkCheckBloodtypeTemp.setBill_no(checkNo);
|
||||
xkCheckBloodtypeTemp.setBill_status("B");
|
||||
}
|
||||
}else{
|
||||
XkCheckBloodtype xkCheckBloodtypeQuery = new XkCheckBloodtype();
|
||||
xkCheckBloodtypeQuery.setApply_no(applyNo);
|
||||
xkCheckBloodtypeQuery.setBill_status("C");
|
||||
List<XkCheckBloodtype> xkCheckBloodtypeList = xkCheckBloodtypeMapper.queryList(xkCheckBloodtypeQuery);
|
||||
if(xkCheckBloodtypeList.isEmpty()){
|
||||
billStasus = "F";
|
||||
}
|
||||
}
|
||||
XkCheckBloodtype xkCheckBloodtypeQuery1 = new XkCheckBloodtype();
|
||||
xkCheckBloodtypeQuery1.setApply_no(applyNo);
|
||||
List<XkCheckBloodtype> xkCheckBloodtypeList = xkCheckBloodtypeMapper.queryList(xkCheckBloodtypeQuery1);
|
||||
if(xkCheckBloodtypeList.isEmpty()){
|
||||
billStasus = "F";
|
||||
}
|
||||
xkMatchMain.setCheck_no(checkNo);
|
||||
xkMatchMain.setLast_modified(bloodBankUtil.getCurrentTimeDate());
|
||||
if(billStasus.equals("F")){
|
||||
billStatusTemp = "C";
|
||||
}else if(billStasus.equals("SF") || billStasus.equals("D")){
|
||||
billStatusTemp = "S";
|
||||
}
|
||||
|
||||
XkTransfuseApply xkTransfuseApplyTemp = new XkTransfuseApply();
|
||||
xkTransfuseApplyTemp.setBill_no(applyNo);
|
||||
xkTransfuseApplyTemp.setBill_stasus(billStatusTemp);
|
||||
xkTransfuseApplyTemp.setNotify_sign("Y");
|
||||
|
||||
for (XkMatchDetail xkMatchDetail : xkMatchDetailList) {
|
||||
xkMatchDetail.setBill_no(newBillNo);
|
||||
}
|
||||
|
||||
matchBloodUtil.saveData(matchBloodVO,xkCheckBloodtypeTemp,xkTransfuseApplyTemp);
|
||||
}else{
|
||||
//修改数据
|
||||
matchBloodUtil.updateData(matchBloodVO);
|
||||
}
|
||||
|
||||
//调用外部接口
|
||||
if(billNo.equals("")) billNo = newBillNo;
|
||||
MatchBloodTypeRequest matchBloodTypeRequest = new MatchBloodTypeRequest();
|
||||
matchBloodTypeRequest.setBillNo(billNo);
|
||||
Result result1 = BloodInterfaceUtil.invokeBloodInterface(matchBloodTypeRequest);
|
||||
if(!result1.getCode().equals("0")) return result1;
|
||||
|
||||
return new Result("0","保存成功!");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result deleteBloodInfoMatch(String billNo) {
|
||||
XkMatchMain xkMatchMain = xkMatchMainMapper.queryOne(billNo);
|
||||
if(xkMatchMain == null) return new Result("-1","该配血单不存在!");
|
||||
String billStatus = BloodBankUtil.isBank(xkMatchMain.getBill_status());
|
||||
if(billStatus.equals("B")) return new Result("-1","该配血单已发血,不可作废!");
|
||||
String chargeMainBillNo = BloodBankUtil.isBank(matchBloodMapper.queryChargeMainBillNo(billNo));
|
||||
String checkNo = BloodBankUtil.isBank(xkMatchMain.getCheck_no());
|
||||
XkCheckBloodtype xkCheckBloodtypeTemp = null;
|
||||
if(!checkNo.equals("")){
|
||||
//修改血型复核数据
|
||||
xkCheckBloodtypeTemp = new XkCheckBloodtype();
|
||||
xkCheckBloodtypeTemp.setBill_no(checkNo);
|
||||
xkCheckBloodtypeTemp.setBill_status("A");
|
||||
}
|
||||
String applyNo = xkMatchMain.getApply_no();
|
||||
XkTransfuseApply xkTransfuseApply = xkTransfuseApplyMapper.queryOne(applyNo);
|
||||
if(xkTransfuseApply == null) return new Result("-1","该申请单不存在!");
|
||||
String billStasus = xkTransfuseApply.getBill_stasus();
|
||||
String newBillStatus = "";
|
||||
switch (billStasus){
|
||||
case "C":
|
||||
newBillStatus = "F";
|
||||
break;
|
||||
case "S":
|
||||
newBillStatus = "SF";
|
||||
break;
|
||||
case "I":
|
||||
newBillStatus = "B";
|
||||
break;
|
||||
}
|
||||
XkTransfuseApply xkTransfuseApplyTemp = new XkTransfuseApply();
|
||||
xkTransfuseApplyTemp.setBill_no(applyNo);
|
||||
xkTransfuseApplyTemp.setBill_stasus(newBillStatus);
|
||||
|
||||
XkMatchMain xkMatchMainTemp = new XkMatchMain();
|
||||
xkMatchMainTemp.setBill_no(billNo);
|
||||
xkMatchMainTemp.setBill_status("ZF");
|
||||
matchBloodUtil.deleteBloodInfoMatch(chargeMainBillNo,xkMatchMainTemp,xkCheckBloodtypeTemp,xkTransfuseApplyTemp);
|
||||
|
||||
//调用外部接口
|
||||
CancelMatchBloodTypeRequest cancelMatchBloodTypeRequest = new CancelMatchBloodTypeRequest();
|
||||
cancelMatchBloodTypeRequest.setBillNo(billNo);
|
||||
Result result = BloodInterfaceUtil.invokeBloodInterface(cancelMatchBloodTypeRequest);
|
||||
if(!result.getCode().equals("0")) return result;
|
||||
|
||||
return new Result("0","作废成功!");
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,13 +2,14 @@ package com.czblood.busBloodbank.utils;
|
||||
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.czblood.bus.mapper.XkInstorageDetailMapper;
|
||||
import com.czblood.bus.pojo.XkBloodInfo;
|
||||
import com.czblood.bus.pojo.XkInstorageDetail;
|
||||
import com.czblood.bus.mapper.*;
|
||||
import com.czblood.bus.pojo.*;
|
||||
import com.czblood.bus.utils.BloodBankUtil;
|
||||
import com.czblood.busBloodbank.mapper.MatchBloodMapper;
|
||||
import com.czblood.busBloodbank.pojo.VO.MatchBloodVO;
|
||||
import com.czblood.common.core.domain.Result;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Date;
|
||||
@ -23,6 +24,18 @@ public class MatchBloodUtil {
|
||||
MatchBloodMapper matchBloodMapper;
|
||||
@Resource
|
||||
XkInstorageDetailMapper xkInstorageDetailMapper;
|
||||
@Resource
|
||||
XkMatchMainMapper xkMatchMainMapper;
|
||||
@Resource
|
||||
XkMatchDetailMapper xkMatchDetailMapper;
|
||||
@Resource
|
||||
XkTransfuseApplyMapper xkTransfuseApplyMapper;
|
||||
@Resource
|
||||
XkCheckBloodtypeMapper xkCheckBloodtypeMapper;
|
||||
@Resource
|
||||
XkChargeMainMapper xkChargeMainMapper;
|
||||
@Resource
|
||||
XkChargeDetailMapper xkChargeDetailMapper;
|
||||
|
||||
public Result checkSampleValid(String applyNo){
|
||||
//xkSampleInfoMapper.queryOne()
|
||||
@ -93,4 +106,38 @@ public class MatchBloodUtil {
|
||||
if(isMatch.equals("Y")) return new Result("0","校验通过!");
|
||||
return new Result("-1","该血液流水号:"+bloodNo+"产品码:"+productNo+"该血液流水号对应的血液不需要进行配血操作!");
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void saveData(MatchBloodVO matchBloodVO, XkCheckBloodtype xkCheckBloodtype, XkTransfuseApply xkTransfuseApply){
|
||||
XkMatchMain xkMatchMain = matchBloodVO.getXkMatchMain();
|
||||
List<XkMatchDetail> xkMatchDetailList = matchBloodVO.getXkMatchDetailList();
|
||||
xkMatchMainMapper.insertMatch(xkMatchMain);
|
||||
for (XkMatchDetail xkMatchDetail : xkMatchDetailList) {
|
||||
xkMatchDetailMapper.insert(xkMatchDetail);
|
||||
}
|
||||
if(xkTransfuseApply != null) xkTransfuseApplyMapper.update(xkTransfuseApply);
|
||||
if(xkCheckBloodtype != null) xkCheckBloodtypeMapper.update(xkCheckBloodtype);
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateData(MatchBloodVO matchBloodVO){
|
||||
XkMatchMain xkMatchMain = matchBloodVO.getXkMatchMain();
|
||||
xkMatchMainMapper.update(xkMatchMain);
|
||||
List<XkMatchDetail> xkMatchDetailList = matchBloodVO.getXkMatchDetailList();
|
||||
xkMatchDetailMapper.deleteByBillNo(xkMatchMain.getBill_no());
|
||||
for (XkMatchDetail xkMatchDetail : xkMatchDetailList) {
|
||||
xkMatchDetailMapper.insert(xkMatchDetail);
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void deleteBloodInfoMatch(String chargeMainBillNo,XkMatchMain xkMatchMain,XkCheckBloodtype xkCheckBloodtype,XkTransfuseApply xkTransfuseApply){
|
||||
if(!chargeMainBillNo.equals("")){
|
||||
xkChargeMainMapper.deleteByBillNo(chargeMainBillNo);
|
||||
xkChargeDetailMapper.deleteByBillNo(chargeMainBillNo);
|
||||
}
|
||||
xkMatchMainMapper.update(xkMatchMain);
|
||||
if(xkCheckBloodtype != null) xkCheckBloodtypeMapper.update(xkCheckBloodtype);
|
||||
xkTransfuseApplyMapper.update(xkTransfuseApply);
|
||||
}
|
||||
}
|
||||
|
||||
@ -157,4 +157,8 @@
|
||||
Where blood_no = #{bloodNo}
|
||||
<![CDATA[and product_no = #{productNo} AND isnull(exp1,'N') <> 'Y']]>
|
||||
</select>
|
||||
<select id="queryChargeMainBillNo" resultType="java.lang.String">
|
||||
SELECT xk_charge_main.bill_no FROM xk_charge_main
|
||||
Where xk_charge_main.relative_billno = #{billNo} AND send_flag ='N'
|
||||
</select>
|
||||
</mapper>
|
||||
Loading…
x
Reference in New Issue
Block a user