From dd0aaf74f16179ea6999eb02548127a137c6d03f Mon Sep 17 00:00:00 2001 From: jiangs <373297395@qq.com> Date: Fri, 7 Aug 2026 18:02:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=A4=E5=8F=89=E9=85=8D=E8=A1=80=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BloodInterfaceTypeConstants.java | 9 + .../bus/mapper/XkCheckBloodtypeMapper.java | 1 + .../bus/mapper/XkMatchDetailMapper.java | 12 ++ .../czblood/bus/mapper/XkMatchMainMapper.java | 9 + .../czblood/bus/pojo/XkCheckBloodtype.java | 1 + .../com/czblood/bus/pojo/XkMatchMain.java | 2 +- .../inter/CancelMatchBloodTypeRequest.java | 20 +++ .../bus/pojo/inter/CheckBloodTypeRequest.java | 1 - .../bus/pojo/inter/MatchBloodTypeRequest.java | 21 +++ .../com/czblood/bus/utils/BloodBankUtil.java | 53 ++++++ .../mapper/XkCheckBloodtypeMapper.xml | 31 ++++ .../resources/mapper/XkMatchDetailMapper.xml | 75 +++++++++ .../resources/mapper/XkMatchMainMapper.xml | 54 ++++++ .../controller/MatchBloodController.java | 30 +++- .../busBloodbank/mapper/MatchBloodMapper.java | 1 + .../busBloodbank/pojo/VO/MatchBloodVO.java | 18 ++ .../service/MatchBloodService.java | 4 + .../service/impl/MatchBloodServiceImpl.java | 159 +++++++++++++++++- .../busBloodbank/utils/MatchBloodUtil.java | 53 +++++- .../resources/mapper/MatchBloodMapper.xml | 4 + 20 files changed, 543 insertions(+), 15 deletions(-) create mode 100644 blood_bus/src/main/java/com/czblood/bus/mapper/XkMatchDetailMapper.java create mode 100644 blood_bus/src/main/java/com/czblood/bus/mapper/XkMatchMainMapper.java create mode 100644 blood_bus/src/main/java/com/czblood/bus/pojo/inter/CancelMatchBloodTypeRequest.java create mode 100644 blood_bus/src/main/java/com/czblood/bus/pojo/inter/MatchBloodTypeRequest.java create mode 100644 blood_bus/src/main/resources/mapper/XkMatchDetailMapper.xml create mode 100644 blood_bus/src/main/resources/mapper/XkMatchMainMapper.xml create mode 100644 blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/pojo/VO/MatchBloodVO.java diff --git a/blood_bus/src/main/java/com/czblood/bus/constants/BloodInterfaceTypeConstants.java b/blood_bus/src/main/java/com/czblood/bus/constants/BloodInterfaceTypeConstants.java index df2b01a..77948e2 100644 --- a/blood_bus/src/main/java/com/czblood/bus/constants/BloodInterfaceTypeConstants.java +++ b/blood_bus/src/main/java/com/czblood/bus/constants/BloodInterfaceTypeConstants.java @@ -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"; } diff --git a/blood_bus/src/main/java/com/czblood/bus/mapper/XkCheckBloodtypeMapper.java b/blood_bus/src/main/java/com/czblood/bus/mapper/XkCheckBloodtypeMapper.java index 334bc65..ac6a040 100644 --- a/blood_bus/src/main/java/com/czblood/bus/mapper/XkCheckBloodtypeMapper.java +++ b/blood_bus/src/main/java/com/czblood/bus/mapper/XkCheckBloodtypeMapper.java @@ -9,5 +9,6 @@ public interface XkCheckBloodtypeMapper { void insert(XkCheckBloodtype xkCheckBloodtype); XkCheckBloodtype queryOne(String billNo); void delete(String billNo); + void update(XkCheckBloodtype xkCheckBloodtype); } diff --git a/blood_bus/src/main/java/com/czblood/bus/mapper/XkMatchDetailMapper.java b/blood_bus/src/main/java/com/czblood/bus/mapper/XkMatchDetailMapper.java new file mode 100644 index 0000000..3af23dd --- /dev/null +++ b/blood_bus/src/main/java/com/czblood/bus/mapper/XkMatchDetailMapper.java @@ -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 queryListByBillNo(String bill_no); + void update(XkMatchDetail xkMatchDetail); + void deleteByBillNo(String bill_no); +} diff --git a/blood_bus/src/main/java/com/czblood/bus/mapper/XkMatchMainMapper.java b/blood_bus/src/main/java/com/czblood/bus/mapper/XkMatchMainMapper.java new file mode 100644 index 0000000..ad5b715 --- /dev/null +++ b/blood_bus/src/main/java/com/czblood/bus/mapper/XkMatchMainMapper.java @@ -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); +} diff --git a/blood_bus/src/main/java/com/czblood/bus/pojo/XkCheckBloodtype.java b/blood_bus/src/main/java/com/czblood/bus/pojo/XkCheckBloodtype.java index 2ee8b29..8ea0a9c 100644 --- a/blood_bus/src/main/java/com/czblood/bus/pojo/XkCheckBloodtype.java +++ b/blood_bus/src/main/java/com/czblood/bus/pojo/XkCheckBloodtype.java @@ -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; diff --git a/blood_bus/src/main/java/com/czblood/bus/pojo/XkMatchMain.java b/blood_bus/src/main/java/com/czblood/bus/pojo/XkMatchMain.java index 01dff67..e346e36 100644 --- a/blood_bus/src/main/java/com/czblood/bus/pojo/XkMatchMain.java +++ b/blood_bus/src/main/java/com/czblood/bus/pojo/XkMatchMain.java @@ -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; diff --git a/blood_bus/src/main/java/com/czblood/bus/pojo/inter/CancelMatchBloodTypeRequest.java b/blood_bus/src/main/java/com/czblood/bus/pojo/inter/CancelMatchBloodTypeRequest.java new file mode 100644 index 0000000..6b47dce --- /dev/null +++ b/blood_bus/src/main/java/com/czblood/bus/pojo/inter/CancelMatchBloodTypeRequest.java @@ -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); + } +} diff --git a/blood_bus/src/main/java/com/czblood/bus/pojo/inter/CheckBloodTypeRequest.java b/blood_bus/src/main/java/com/czblood/bus/pojo/inter/CheckBloodTypeRequest.java index bc1c2f5..99ea7bb 100644 --- a/blood_bus/src/main/java/com/czblood/bus/pojo/inter/CheckBloodTypeRequest.java +++ b/blood_bus/src/main/java/com/czblood/bus/pojo/inter/CheckBloodTypeRequest.java @@ -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; diff --git a/blood_bus/src/main/java/com/czblood/bus/pojo/inter/MatchBloodTypeRequest.java b/blood_bus/src/main/java/com/czblood/bus/pojo/inter/MatchBloodTypeRequest.java new file mode 100644 index 0000000..76479be --- /dev/null +++ b/blood_bus/src/main/java/com/czblood/bus/pojo/inter/MatchBloodTypeRequest.java @@ -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); + } +} diff --git a/blood_bus/src/main/java/com/czblood/bus/utils/BloodBankUtil.java b/blood_bus/src/main/java/com/czblood/bus/utils/BloodBankUtil.java index bae2995..58c7eb7 100644 --- a/blood_bus/src/main/java/com/czblood/bus/utils/BloodBankUtil.java +++ b/blood_bus/src/main/java/com/czblood/bus/utils/BloodBankUtil.java @@ -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 xkMatchDetailList = xkMatchDetailMapper.queryListByBillNo(billNo); + if(xkMatchDetailList.isEmpty()) return new Result("0","校验通过"); + List 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","校验通过"); + } + } diff --git a/blood_bus/src/main/resources/mapper/XkCheckBloodtypeMapper.xml b/blood_bus/src/main/resources/mapper/XkCheckBloodtypeMapper.xml index af011df..02d8b14 100644 --- a/blood_bus/src/main/resources/mapper/XkCheckBloodtypeMapper.xml +++ b/blood_bus/src/main/resources/mapper/XkCheckBloodtypeMapper.xml @@ -46,6 +46,36 @@ #{plt_test}, #{hos_id},#{bill_no},#{apply_no},#{beinhos_id},#{patient_name},#{dept_id},#{check_abo},#{check_fabo},#{affirm_abo}) + + update xk_check_bloodtype set + apply_no = #{apply_no}, + beinhos_id = #{beinhos_id}, + patient_name = #{patient_name}, + dept_id = #{dept_id}, + check_abo = #{check_abo}, + check_fabo = #{check_fabo}, + affirm_abo = #{affirm_abo}, + check_rh = #{check_rh}, + antibody1 = #{antibody1}, + antibody2 = #{antibody2}, + antibody3 = #{antibody3}, + affirm_antibody = #{affirm_antibody}, + proteid_test = #{proteid_test}, + test_person = #{test_person}, + test_date = #{test_date}, + check_person = #{check_person}, + input_person = #{input_person}, + input_date = #{input_date}, + sample_id = #{sample_id}, + need_match = #{need_match}, + bill_sort = #{bill_sort}, + bill_status = #{bill_status}, + remark = #{remark}, + Sub_Blood = #{Sub_Blood}, + bz1 = #{bz1}, + plt_test = #{plt_test}, + where bill_no = #{billNo} + delete from xk_check_bloodtype where bill_no = #{billNo} @@ -55,6 +85,7 @@ and bill_no = #{bill_no} and apply_no = #{apply_no} and beinhos_id = #{beinhos_id} + and bill_status = #{bill_status} + select * from xk_match_detail where bill_no = #{bill_no} + + \ No newline at end of file diff --git a/blood_bus/src/main/resources/mapper/XkMatchMainMapper.xml b/blood_bus/src/main/resources/mapper/XkMatchMainMapper.xml new file mode 100644 index 0000000..9b44b2f --- /dev/null +++ b/blood_bus/src/main/resources/mapper/XkMatchMainMapper.xml @@ -0,0 +1,54 @@ + + + + + insert into xk_match_main ( + dept_id, + apply_no, + check_no, + sample_id, + test_date, + bill_status, + match_sign, + remark, + input_person, + input_date, + last_modified, + bill_no,hos_id,beinhos_id,patient_name + )values ( + #{dept_id}, + #{apply_no}, + #{check_no}, + #{sample_id}, + #{test_date}, + #{bill_status}, + #{match_sign}, + #{remark}, + #{input_person}, + #{input_date}, + #{last_modified}, + #{bill_no},#{hos_id},#{beinhos_id},#{patient_name}) + + + update xk_match_main set + beinhos_id = #{beinhos_id}, + patient_name = #{patient_name}, + dept_id = #{dept_id}, + apply_no = #{apply_no}, + check_no = #{check_no}, + sample_id = #{sample_id}, + test_date = #{test_date}, + bill_status = #{bill_status}, + match_sign = #{match_sign}, + remark = #{remark}, + input_person = #{input_person}, + input_date = #{input_date}, + last_modified = #{last_modified}, + bill_no = #{bill_no} + where bill_no = #{bill_no} + + + \ No newline at end of file diff --git a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/controller/MatchBloodController.java b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/controller/MatchBloodController.java index abfddc9..bb3eaad 100644 --- a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/controller/MatchBloodController.java +++ b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/controller/MatchBloodController.java @@ -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); + } + + + + } diff --git a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/mapper/MatchBloodMapper.java b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/mapper/MatchBloodMapper.java index a1391d1..d7ff6a9 100644 --- a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/mapper/MatchBloodMapper.java +++ b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/mapper/MatchBloodMapper.java @@ -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); } diff --git a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/pojo/VO/MatchBloodVO.java b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/pojo/VO/MatchBloodVO.java new file mode 100644 index 0000000..cfa83b6 --- /dev/null +++ b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/pojo/VO/MatchBloodVO.java @@ -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 xkMatchDetailList; + private String userId; +} diff --git a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/MatchBloodService.java b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/MatchBloodService.java index 58b3340..099a82a 100644 --- a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/MatchBloodService.java +++ b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/MatchBloodService.java @@ -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); } diff --git a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/impl/MatchBloodServiceImpl.java b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/impl/MatchBloodServiceImpl.java index 6833486..a3280ad 100644 --- a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/impl/MatchBloodServiceImpl.java +++ b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/impl/MatchBloodServiceImpl.java @@ -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 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 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 xkCheckBloodtypeList = xkCheckBloodtypeMapper.queryList(xkCheckBloodtypeQuery); + if(xkCheckBloodtypeList.isEmpty()){ + billStasus = "F"; + } + } + XkCheckBloodtype xkCheckBloodtypeQuery1 = new XkCheckBloodtype(); + xkCheckBloodtypeQuery1.setApply_no(applyNo); + List 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","作废成功!"); + } } diff --git a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/utils/MatchBloodUtil.java b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/utils/MatchBloodUtil.java index f6b49e0..baa348c 100644 --- a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/utils/MatchBloodUtil.java +++ b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/utils/MatchBloodUtil.java @@ -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 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 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); + } } diff --git a/blood_bus_bloodbank/src/main/resources/mapper/MatchBloodMapper.xml b/blood_bus_bloodbank/src/main/resources/mapper/MatchBloodMapper.xml index 3d1a67e..5d5ac83 100644 --- a/blood_bus_bloodbank/src/main/resources/mapper/MatchBloodMapper.xml +++ b/blood_bus_bloodbank/src/main/resources/mapper/MatchBloodMapper.xml @@ -157,4 +157,8 @@ Where blood_no = #{bloodNo} 'Y']]> + \ No newline at end of file