From ebfc24a73c51ce440434ada7cbcb9a474136d7e7 Mon Sep 17 00:00:00 2001 From: jiangs <373297395@qq.com> Date: Wed, 12 Aug 2026 09:13:39 +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=EF=BC=8C=E4=B8=B4=E5=BA=8A=E5=8F=91=E8=A1=80=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/misc.xml | 39 +++++++ .../bus/constants/BloodSysLogConstants.java | 1 + .../czblood/bus/mapper/XkBloodInfoMapper.java | 3 +- .../bus/mapper/XkInstorageDetailMapper.java | 3 +- .../bus/mapper/XkMatchDetailMapper.java | 2 + .../czblood/bus/mapper/XkOutDetailMapper.java | 9 ++ .../com/czblood/bus/pojo/XkBloodInfo.java | 2 +- .../com/czblood/bus/pojo/XkMatchDetail.java | 2 + .../com/czblood/bus/pojo/XkOutDetail.java | 29 +++++ .../resources/mapper/XkMatchDetailMapper.xml | 3 + .../resources/mapper/XkOutDetailMapper.xml | 8 ++ .../controller/BloodOutController.java | 28 +++++ .../controller/MatchBloodController.java | 41 ++++++- .../busBloodbank/mapper/BloodOutMapper.java | 5 + .../busBloodbank/mapper/MatchBloodMapper.java | 7 ++ .../pojo/VO/MatchBloodListQueryVO.java | 18 +++ .../pojo/VO/MatchBloodStockQueryVO.java | 13 +++ .../busBloodbank/service/BloodOutService.java | 7 ++ .../service/MatchBloodService.java | 6 + .../service/impl/BloodOutServiceImpl.java | 110 ++++++++++++++++++ .../service/impl/MatchBloodServiceImpl.java | 63 +++++++++- .../busBloodbank/utils/BloodOutUtil.java | 9 ++ .../busBloodbank/utils/MatchBloodUtil.java | 22 ++-- .../main/resources/mapper/BloodOutMapper.xml | 8 ++ .../resources/mapper/MatchBloodMapper.xml | 72 +++++++++++- sql/updatedb_blood.sql | 8 ++ 26 files changed, 495 insertions(+), 23 deletions(-) create mode 100644 blood_bus/src/main/java/com/czblood/bus/mapper/XkOutDetailMapper.java create mode 100644 blood_bus/src/main/java/com/czblood/bus/pojo/XkOutDetail.java create mode 100644 blood_bus/src/main/resources/mapper/XkOutDetailMapper.xml create mode 100644 blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/controller/BloodOutController.java create mode 100644 blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/mapper/BloodOutMapper.java create mode 100644 blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/pojo/VO/MatchBloodListQueryVO.java create mode 100644 blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/pojo/VO/MatchBloodStockQueryVO.java create mode 100644 blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/BloodOutService.java create mode 100644 blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/impl/BloodOutServiceImpl.java create mode 100644 blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/utils/BloodOutUtil.java create mode 100644 blood_bus_bloodbank/src/main/resources/mapper/BloodOutMapper.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index 8f861dd..baded0a 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -13,6 +13,45 @@ + + + + diff --git a/blood_bus/src/main/java/com/czblood/bus/constants/BloodSysLogConstants.java b/blood_bus/src/main/java/com/czblood/bus/constants/BloodSysLogConstants.java index f132a4e..1eeb7f1 100644 --- a/blood_bus/src/main/java/com/czblood/bus/constants/BloodSysLogConstants.java +++ b/blood_bus/src/main/java/com/czblood/bus/constants/BloodSysLogConstants.java @@ -14,4 +14,5 @@ public class BloodSysLogConstants { public static final String LOG_TYPE_ACCEPT_SAMPLE_INFO = "标本接收"; 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 = "交叉配血"; } diff --git a/blood_bus/src/main/java/com/czblood/bus/mapper/XkBloodInfoMapper.java b/blood_bus/src/main/java/com/czblood/bus/mapper/XkBloodInfoMapper.java index 3216a62..1297f19 100644 --- a/blood_bus/src/main/java/com/czblood/bus/mapper/XkBloodInfoMapper.java +++ b/blood_bus/src/main/java/com/czblood/bus/mapper/XkBloodInfoMapper.java @@ -1,10 +1,11 @@ package com.czblood.bus.mapper; import com.czblood.bus.pojo.XkBloodInfo; +import org.apache.ibatis.annotations.Param; import java.util.List; public interface XkBloodInfoMapper { - XkBloodInfo queryOne(String bloodNo,String productNo); + XkBloodInfo queryOne(@Param("bloodNo") String bloodNo, @Param("productNo") String productNo); List queryListByBloodNo(String bloodNo); } diff --git a/blood_bus/src/main/java/com/czblood/bus/mapper/XkInstorageDetailMapper.java b/blood_bus/src/main/java/com/czblood/bus/mapper/XkInstorageDetailMapper.java index 54c6fbd..33fca68 100644 --- a/blood_bus/src/main/java/com/czblood/bus/mapper/XkInstorageDetailMapper.java +++ b/blood_bus/src/main/java/com/czblood/bus/mapper/XkInstorageDetailMapper.java @@ -1,10 +1,11 @@ package com.czblood.bus.mapper; import com.czblood.bus.pojo.XkInstorageDetail; +import org.apache.ibatis.annotations.Param; import java.util.List; public interface XkInstorageDetailMapper { List queryByBillNo(String bill_no); - List queryByBloodNo(String blood_no,String product_no); + List queryByBloodNo(@Param("blood_no") String blood_no, @Param("product_no") String product_no); } 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 index 3af23dd..f714f25 100644 --- a/blood_bus/src/main/java/com/czblood/bus/mapper/XkMatchDetailMapper.java +++ b/blood_bus/src/main/java/com/czblood/bus/mapper/XkMatchDetailMapper.java @@ -1,6 +1,7 @@ package com.czblood.bus.mapper; import com.czblood.bus.pojo.XkMatchDetail; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -9,4 +10,5 @@ public interface XkMatchDetailMapper { List queryListByBillNo(String bill_no); void update(XkMatchDetail xkMatchDetail); void deleteByBillNo(String bill_no); + List queryListByBloodNo(@Param("bloodNo") String bloodNo, @Param("productNo") String productNo); } diff --git a/blood_bus/src/main/java/com/czblood/bus/mapper/XkOutDetailMapper.java b/blood_bus/src/main/java/com/czblood/bus/mapper/XkOutDetailMapper.java new file mode 100644 index 0000000..3e5d274 --- /dev/null +++ b/blood_bus/src/main/java/com/czblood/bus/mapper/XkOutDetailMapper.java @@ -0,0 +1,9 @@ +package com.czblood.bus.mapper; + +import com.czblood.bus.pojo.XkOutDetail; + +import java.util.List; + +public interface XkOutDetailMapper { + List queryListByBillNo(String billNo); +} diff --git a/blood_bus/src/main/java/com/czblood/bus/pojo/XkBloodInfo.java b/blood_bus/src/main/java/com/czblood/bus/pojo/XkBloodInfo.java index f3b30b5..d1a6fc1 100644 --- a/blood_bus/src/main/java/com/czblood/bus/pojo/XkBloodInfo.java +++ b/blood_bus/src/main/java/com/czblood/bus/pojo/XkBloodInfo.java @@ -49,7 +49,7 @@ public class XkBloodInfo { private String blood_bag_no; @ApiModelProperty("血袋生成批号") private String blood_bag_batch; - @ApiModelProperty("血液状态") + @ApiModelProperty("血液状态,1.在库,4.出库") private String blood_status; @ApiModelProperty("特殊处理") private String special_deal; diff --git a/blood_bus/src/main/java/com/czblood/bus/pojo/XkMatchDetail.java b/blood_bus/src/main/java/com/czblood/bus/pojo/XkMatchDetail.java index 36a5630..75e6a3d 100644 --- a/blood_bus/src/main/java/com/czblood/bus/pojo/XkMatchDetail.java +++ b/blood_bus/src/main/java/com/czblood/bus/pojo/XkMatchDetail.java @@ -48,6 +48,8 @@ public class XkMatchDetail { @ApiModelProperty("延迟标志") private Integer delay_sign; private String product_no; + @ApiModelProperty("血液存放位子") private String position_blood; + @ApiModelProperty("标本存放位子") private String position_barcode; } diff --git a/blood_bus/src/main/java/com/czblood/bus/pojo/XkOutDetail.java b/blood_bus/src/main/java/com/czblood/bus/pojo/XkOutDetail.java new file mode 100644 index 0000000..18b7406 --- /dev/null +++ b/blood_bus/src/main/java/com/czblood/bus/pojo/XkOutDetail.java @@ -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 XkOutDetail { + private String bill_no; + private Integer sid; + private String blood_no; + private BigDecimal price; + private String special_deal; + private String have_reaction; + private String finish_sign; + private String accept_flag; + private String exp1; + private String exp2; + private String exp3; + private String remark; + private String accept_dept; + private String product_no; +} diff --git a/blood_bus/src/main/resources/mapper/XkMatchDetailMapper.xml b/blood_bus/src/main/resources/mapper/XkMatchDetailMapper.xml index daa984b..6fb6308 100644 --- a/blood_bus/src/main/resources/mapper/XkMatchDetailMapper.xml +++ b/blood_bus/src/main/resources/mapper/XkMatchDetailMapper.xml @@ -72,4 +72,7 @@ + \ No newline at end of file diff --git a/blood_bus/src/main/resources/mapper/XkOutDetailMapper.xml b/blood_bus/src/main/resources/mapper/XkOutDetailMapper.xml new file mode 100644 index 0000000..397fad7 --- /dev/null +++ b/blood_bus/src/main/resources/mapper/XkOutDetailMapper.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/controller/BloodOutController.java b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/controller/BloodOutController.java new file mode 100644 index 0000000..bb4dce6 --- /dev/null +++ b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/controller/BloodOutController.java @@ -0,0 +1,28 @@ +package com.czblood.busBloodbank.controller; + + +import com.czblood.busBloodbank.service.BloodOutService; +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.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +@Api(tags = "血液出库") +@RestController +@RequestMapping("/bus/bloodbank/bloodOut") +public class BloodOutController { + + @Resource + private BloodOutService bloodOutService; + + @ApiOperation("查询发血数据") + @GetMapping("/queryOne") + public Result queryOne(String applyNo){ + return bloodOutService.queryOne(applyNo); + } + +} 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 bb3eaad..7a5cb10 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,15 +1,17 @@ package com.czblood.busBloodbank.controller; +import com.czblood.bus.constants.BloodSysLogConstants; +import com.czblood.busBloodbank.pojo.VO.MatchBloodListQueryVO; +import com.czblood.busBloodbank.pojo.VO.MatchBloodStockQueryVO; import com.czblood.busBloodbank.pojo.VO.MatchBloodVO; import com.czblood.busBloodbank.service.MatchBloodService; +import com.czblood.common.annotation.Log; import com.czblood.common.core.controller.BaseController; import com.czblood.common.core.domain.Result; +import com.czblood.common.enums.BusinessType; 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 org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -47,24 +49,51 @@ public class MatchBloodController extends BaseController { } @ApiOperation("取消血液配血") - @PostMapping("/cancelBloodInfoMatch") + @GetMapping("/cancelBloodInfoMatch") public Result cancelBloodInfoMatch(String bloodNo,String productNo){ return matchBloodService.cancelBloodInfoMatch(bloodNo, productNo); } + @Log(title = BloodSysLogConstants.LOG_TYPE_MATCH_BLOOD, businessType = BusinessType.INSERT) @ApiOperation("保存数据") @PostMapping("/saveData") - public Result saveData(MatchBloodVO matchBloodVO){ + public Result saveData(@RequestBody MatchBloodVO matchBloodVO){ matchBloodVO.setUserId(getUsername()); return matchBloodService.saveData(matchBloodVO); } + @Log(title = BloodSysLogConstants.LOG_TYPE_MATCH_BLOOD, businessType = BusinessType.DELETE) @ApiOperation("作废配血单") @GetMapping("/deleteBloodInfoMatch") public Result deleteBloodInfoMatch(String billNo){ return matchBloodService.deleteBloodInfoMatch(billNo); } + @ApiOperation("查询血液库存") + @GetMapping("/queryBloodStock") + public Result queryBloodStock(MatchBloodStockQueryVO matchBloodStockQueryVO){ + return matchBloodService.queryBloodStock(matchBloodStockQueryVO); + } + + @ApiOperation("查询检验结果") + @GetMapping("/queryListResult") + public Result queryLisResult(String billNo){ + return matchBloodService.queryLisResult(billNo); + } + + @ApiOperation("获取交叉配血列表") + @GetMapping("/queryMatchBloodList") + public Result queryMatchBloodList(MatchBloodListQueryVO matchBloodListQueryVO){ + return matchBloodService.queryMatchBloodList(matchBloodListQueryVO); + } + + @ApiOperation("校验该血液是否已经存在配血数据") + @GetMapping("/checkBloodMatched") + public Result checkBloodMatched(String bloodNo,String productNo,String billNo){ + return matchBloodService.checkBloodMatched(bloodNo, productNo, billNo); + } + + diff --git a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/mapper/BloodOutMapper.java b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/mapper/BloodOutMapper.java new file mode 100644 index 0000000..2b288db --- /dev/null +++ b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/mapper/BloodOutMapper.java @@ -0,0 +1,5 @@ +package com.czblood.busBloodbank.mapper; + +public interface BloodOutMapper { + int queryApplyBloodTypeCount(String 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 d7ff6a9..0f96afa 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 @@ -1,5 +1,8 @@ package com.czblood.busBloodbank.mapper; +import com.czblood.bus.pojo.XkBloodInfo; +import com.czblood.busBloodbank.pojo.VO.MatchBloodListQueryVO; +import com.czblood.busBloodbank.pojo.VO.MatchBloodStockQueryVO; import org.apache.ibatis.annotations.Param; import java.util.Date; @@ -24,4 +27,8 @@ public interface MatchBloodMapper { String checkBloodNeedMatch(@Param("bloodNo") String bloodNo, @Param("productNo") String productNo); int queryOutCountThree(@Param("bloodNo") String bloodNo, @Param("productNo") String productNo); String queryChargeMainBillNo(String billNo); + List> queryBloodStock(MatchBloodStockQueryVO matchBloodStockQueryVO); + List> querySearchBloodLastMatchDate(); + List> queryMatchBloodList(MatchBloodListQueryVO matchBloodListQueryVO); + List> queryBloodMatchOthers(@Param("billNo") String billNo, @Param("bloodNo") String bloodNo, @Param("productNo") String productNo); } diff --git a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/pojo/VO/MatchBloodListQueryVO.java b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/pojo/VO/MatchBloodListQueryVO.java new file mode 100644 index 0000000..4fe7243 --- /dev/null +++ b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/pojo/VO/MatchBloodListQueryVO.java @@ -0,0 +1,18 @@ +package com.czblood.busBloodbank.pojo.VO; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class MatchBloodListQueryVO { + private String billNo; + private String stime; + private String etime; + private String dept; + private String applyNo; + private String beinhos_id; + private String bloodNo; +} diff --git a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/pojo/VO/MatchBloodStockQueryVO.java b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/pojo/VO/MatchBloodStockQueryVO.java new file mode 100644 index 0000000..e8769e4 --- /dev/null +++ b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/pojo/VO/MatchBloodStockQueryVO.java @@ -0,0 +1,13 @@ +package com.czblood.busBloodbank.pojo.VO; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class MatchBloodStockQueryVO { + private String bloodNo; + private String affirmAbo; +} diff --git a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/BloodOutService.java b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/BloodOutService.java new file mode 100644 index 0000000..2a69eaf --- /dev/null +++ b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/BloodOutService.java @@ -0,0 +1,7 @@ +package com.czblood.busBloodbank.service; + +import com.czblood.common.core.domain.Result; + +public interface BloodOutService { + Result queryOne(String applyNo); +} 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 099a82a..c1bb76d 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,5 +1,7 @@ package com.czblood.busBloodbank.service; +import com.czblood.busBloodbank.pojo.VO.MatchBloodListQueryVO; +import com.czblood.busBloodbank.pojo.VO.MatchBloodStockQueryVO; import com.czblood.busBloodbank.pojo.VO.MatchBloodVO; import com.czblood.common.core.domain.Result; @@ -10,4 +12,8 @@ public interface MatchBloodService { Result cancelBloodInfoMatch(String bloodNo, String productNo); Result saveData(MatchBloodVO matchBloodVO); Result deleteBloodInfoMatch(String billNo); + Result queryBloodStock(MatchBloodStockQueryVO matchBloodStockQueryVO); + Result queryLisResult(String billNo); + Result queryMatchBloodList(MatchBloodListQueryVO matchBloodListQueryVO); + Result checkBloodMatched(String bloodNo, String productNo, String billNo); } diff --git a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/impl/BloodOutServiceImpl.java b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/impl/BloodOutServiceImpl.java new file mode 100644 index 0000000..dfd90bb --- /dev/null +++ b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/service/impl/BloodOutServiceImpl.java @@ -0,0 +1,110 @@ +package com.czblood.busBloodbank.service.impl; + +import com.czblood.bus.mapper.XkTransfuseApplyMapper; +import com.czblood.bus.pojo.XkTransfuseApply; +import com.czblood.busBloodbank.mapper.BloodOutMapper; +import com.czblood.busBloodbank.service.BloodOutService; +import com.czblood.common.core.domain.Result; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class BloodOutServiceImpl implements BloodOutService { + + @Resource + BloodOutMapper bloodOutMapper; + @Resource + XkTransfuseApplyMapper xkTransfuseApplyMapper; + + @Override + public Result queryOne(String applyNo) { + XkTransfuseApply xkTransfuseApply = xkTransfuseApplyMapper.queryOne(applyNo); + if(xkTransfuseApply == null) return new Result("-1","该申请单不存在,请检查!"); + String operationType = xkTransfuseApply.getOperation_type(); + if(operationType.equals("Z")) return new Result("-1","该申请单为自体血申请单,无法在这操作!"); + if(!operationType.equals("S")) return new Result("-1","该申请单为输血治疗申请单,无法在这操作!"); + String billSort = xkTransfuseApply.getBill_sort(); + String billStatus = xkTransfuseApply.getBill_stasus(); + switch (billSort){ + case "N": + return new Result("-1","该申请单尚未审核,不能进行发血!"); + case "A": + if(billStatus.equals("B")) { + return new Result("-1","该申请单尚未复核血型,请先复核血型!"); + }else if(billStatus.equals("N")){ + return new Result("-1","该申请单未通过审核,不能进行发血操作!"); + }else if(billStatus.equals("D")){ + return new Result("-1","该申请单已经发血!"); + }else if(billStatus.equals("Z")){ + return new Result("-1","该申请单已经作废!"); + } + return new Result("0","操作成功"); + } + //返回数据 TODO + return null; + } + + + public Result checkBloodValid(XkTransfuseApply xkTransfuseApply){ + String billSort = xkTransfuseApply.getBill_sort(); + String billStatus = xkTransfuseApply.getBill_stasus(); + String billNo = xkTransfuseApply.getBill_no(); + switch (billSort){ + case "N": + return new Result("-1","该申请单尚未审核,不能进行发血!"); + case "A": + switch (billStatus){ + case "B": + return new Result("-1","该申请单尚未复核血型,请先复核血型!"); + case "N": + return new Result("-1","该申请单未通过审核,不能进行发血操作!"); + case "D": + return new Result("-1","该申请单已经发血!"); + case "Z": + return new Result("-1","该申请单已经作废!"); + } + break; + case "C": + switch (billStatus){ + case "Z": + return new Result("-1","该申请单已经作废!"); + case "N": + return new Result("-1","该申请单未通过审核,不能进行发血操作!"); + case "D": + return new Result("-1","该申请单已经发血!"); + } + break; + case "B": + int i = bloodOutMapper.queryApplyBloodTypeCount(billNo); + if(i > 0) { + if(billStatus.equals("F") || billStatus.equals("SF") || billStatus.equals("B")){ + return new Result("-1","该申请单有非红细胞类的血液尚未配血,不能发血!"); + } + } + switch (billStatus){ + case "F": + return new Result("-1","该申请单尚未配血,请先配血!"); + case "N": + return new Result("-1","该申请单未通过审核,不能进行发血操作!"); + case "SF": + return new Result("-1","该申请单尚未配血,请先配血!"); + case "B": + return new Result("-1","该申请单尚未复核血型,请先复核血型!"); + case "D": + //TODO 这里还有个函数没写 + break; + case "Z": + return new Result("-1","该申请单已经作废!"); + case "BD": + return new Result("-1","该申请单为补单,若要按正常流程,请先复核血型、配血后再发血,否则按紧急流程!"); + case "W": + return new Result("-1","该申请单已经补录,若要追加发血,请先复核血型、配血后再发血!"); + //TODO 这里还有个C,S状态没有写,要看下 + } + + } + + return new Result("0","操作成功"); + } +} 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 a3280ad..a4272d7 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,9 +1,8 @@ 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 cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.czblood.bus.mapper.*; import com.czblood.bus.pojo.*; import com.czblood.bus.pojo.inter.CancelMatchBloodTypeRequest; import com.czblood.bus.pojo.inter.MatchBloodTypeRequest; @@ -11,6 +10,8 @@ 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.MatchBloodListQueryVO; +import com.czblood.busBloodbank.pojo.VO.MatchBloodStockQueryVO; import com.czblood.busBloodbank.pojo.VO.MatchBloodVO; import com.czblood.busBloodbank.service.MatchBloodService; import com.czblood.busBloodbank.utils.MatchBloodUtil; @@ -21,6 +22,7 @@ import javax.annotation.Resource; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; @Service public class MatchBloodServiceImpl implements MatchBloodService { @@ -39,6 +41,8 @@ public class MatchBloodServiceImpl implements MatchBloodService { XkCheckBloodtypeMapper xkCheckBloodtypeMapper; @Resource XkMatchMainMapper xkMatchMainMapper; + @Resource + XkTransfuseApplyTestitemMapper xkTransfuseApplyTestitemMapper; @Override public Result queryWaitInfo() { @@ -255,4 +259,55 @@ public class MatchBloodServiceImpl implements MatchBloodService { return new Result("0","作废成功!"); } + + @Override + public Result queryBloodStock(MatchBloodStockQueryVO matchBloodStockQueryVO) { + List> xkBloodInfoList = matchBloodMapper.queryBloodStock(matchBloodStockQueryVO); + //配血超过多少天后,在交叉配血,库存浏览中用特殊颜色进行显示 + String pxcgts = bloodBankUtil.getParameterValue("PXCGTS"); + //标记交叉配血 + List> xkMatchDetailList = matchBloodMapper.querySearchBloodLastMatchDate(); + for (Map stringObjectMap : xkMatchDetailList) { + String matchDate = BloodBankUtil.isBank(stringObjectMap.get("match_date")); + String bloodNo = BloodBankUtil.isBank(stringObjectMap.get("blood_no")); + String productNo = BloodBankUtil.isBank(stringObjectMap.get("product_no")); + DateTime matchDateDelay = DateUtil.offsetDay(DateUtil.parse(matchDate, "yyyy-MM-dd"), Integer.parseInt(pxcgts)); + //match_delay 配血超过预定天数未出库 + if(matchDateDelay.compareTo(bloodBankUtil.getCurrentTimeDate()) > 0){ + xkBloodInfoList.stream().filter(mapParam -> + BloodBankUtil.isBank(mapParam.get("blood_no")).equals(bloodNo) && BloodBankUtil.isBank(mapParam.get("product_no")).equals(productNo)) + .forEach(mapParam -> mapParam.put("match_delay","Y")); + } + } + return new Result("0","查询成功!",xkBloodInfoList); + + } + + @Override + public Result queryLisResult(String billNo) { + List xkTransfuseApplyTestitemList = xkTransfuseApplyTestitemMapper.queryList(billNo); + return new Result("0","查询成功!",xkTransfuseApplyTestitemList); + } + + @Override + public Result queryMatchBloodList(MatchBloodListQueryVO matchBloodListQueryVO) { + List> mapList = matchBloodMapper.queryMatchBloodList(matchBloodListQueryVO); + return new Result("0","查询成功!",mapList); + } + + @Override + public Result checkBloodMatched(String bloodNo, String productNo, String billNo) { + List> mapList = matchBloodMapper.queryBloodMatchOthers(bloodNo, productNo, billNo); + if(!mapList.isEmpty()){ + String msg = "检测到该血液存在以下配血记录:\r\n"; + for (Map stringObjectMap : mapList) { + String temp = "科室:"+stringObjectMap.get("dept_id")+"患者姓名:"+stringObjectMap.get("patient_name") + +"申请单:"+stringObjectMap.get("apply_no") + +"配血日期:"+stringObjectMap.get("test_date"); + msg += temp+"\n"; + } + return new Result("2",msg); + } + return new Result("0","校验通过!"); + } } diff --git a/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/utils/BloodOutUtil.java b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/utils/BloodOutUtil.java new file mode 100644 index 0000000..76301d7 --- /dev/null +++ b/blood_bus_bloodbank/src/main/java/com/czblood/busBloodbank/utils/BloodOutUtil.java @@ -0,0 +1,9 @@ +package com.czblood.busBloodbank.utils; + +import org.springframework.stereotype.Component; + +@Component +public class BloodOutUtil { + + +} 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 baa348c..ad98503 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 @@ -46,11 +46,13 @@ public class MatchBloodUtil { validDate = DateUtil.offsetDay(bloodBankUtil.getCurrentTimeDate(),-Integer.parseInt(overstepDay)); } Date maxPickDate = matchBloodMapper.querySampleMaxDate(applyNo); - if (validDate != null && validDate.compareTo(maxPickDate) > 0) { - //当标本采集时间与发血时间的间隔大于“overstep_day”参数值时,执行本参数定义的操作。‘0’不操作、‘1’提醒、‘2’禁止发血 - String overstepOperate = bloodBankUtil.getParameterValue("overstep_operate"); - if (overstepOperate.equals("1")) return new Result("1", "请注意,标本时间已经超过了设定的有效天数"); - if (overstepOperate.equals("2")) return new Result("-1", "标本时间已经超过了设定的有效天数,不可以继续操作!"); + if (validDate != null && maxPickDate != null) { + if(validDate.compareTo(maxPickDate) > 0){ + //当标本采集时间与发血时间的间隔大于“overstep_day”参数值时,执行本参数定义的操作。‘0’不操作、‘1’提醒、‘2’禁止发血 + String overstepOperate = bloodBankUtil.getParameterValue("overstep_operate"); + if (overstepOperate.equals("1")) return new Result("1", "请注意,标本时间已经超过了设定的有效天数"); + if (overstepOperate.equals("2")) return new Result("-1", "标本时间已经超过了设定的有效天数,不可以继续操作!"); + } } return new Result("0","校验通过!"); } @@ -92,10 +94,12 @@ public class MatchBloodUtil { XkBloodInfo xkBloodInfo = bloodBankUtil.queryBloodInfoOne(bloodNo, productNo); List xkInstorageDetailList = xkInstorageDetailMapper.queryByBloodNo(bloodNo, productNo); if(xkInstorageDetailList.size() > 0){ - String checkAbo = xkInstorageDetailList.get(0).getCheck_abo(); - String checkRh = xkInstorageDetailList.get(0).getCheck_rh(); - if(!checkAbo.equals(xkBloodInfo.getBlood_type()) || !checkRh.equals(xkBloodInfo.getRh_blood_type())){ - return new Result("-1","该血液流水号:"+bloodNo+"产品码:"+productNo+"的Abo型或Rh型与入库时的不一致!"); + String checkAbo = BloodBankUtil.isBank(xkInstorageDetailList.get(0).getCheck_abo()); + String checkRh = BloodBankUtil.isBank(xkInstorageDetailList.get(0).getCheck_rh()); + if(!checkAbo.equals("") && !checkRh.equals("")){ + if(!checkAbo.equals(xkBloodInfo.getBlood_type()) || !checkRh.equals(xkBloodInfo.getRh_blood_type())){ + return new Result("-1","该血液流水号:"+bloodNo+"产品码:"+productNo+"的Abo型或Rh型与入库时的不一致!"); + } } } return new Result("0","校验通过!"); diff --git a/blood_bus_bloodbank/src/main/resources/mapper/BloodOutMapper.xml b/blood_bus_bloodbank/src/main/resources/mapper/BloodOutMapper.xml new file mode 100644 index 0000000..211af1f --- /dev/null +++ b/blood_bus_bloodbank/src/main/resources/mapper/BloodOutMapper.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/blood_bus_bloodbank/src/main/resources/mapper/MatchBloodMapper.xml b/blood_bus_bloodbank/src/main/resources/mapper/MatchBloodMapper.xml index 5d5ac83..7e2f751 100644 --- a/blood_bus_bloodbank/src/main/resources/mapper/MatchBloodMapper.xml +++ b/blood_bus_bloodbank/src/main/resources/mapper/MatchBloodMapper.xml @@ -60,6 +60,7 @@ xk_transfuse_apply.beinhos_id, xk_transfuse_apply.dept_id, xk_transfuse_apply.patient_bed, + xk_transfuse_apply.bill_stasus, xk_transfuse_apply_bloodbreed.blood_breed, xk_transfuse_apply_bloodbreed.blood_num, xk_transfuse_apply_bloodbreed.unit, @@ -110,7 +111,7 @@ xk_backout_detail.product_no = #{productNo} + + + + \ No newline at end of file diff --git a/sql/updatedb_blood.sql b/sql/updatedb_blood.sql index 5b4fb68..845ac76 100644 --- a/sql/updatedb_blood.sql +++ b/sql/updatedb_blood.sql @@ -356,6 +356,14 @@ if not exists(select 1 from dbo.xk_dmzd where wordbook_sign = 'BASE') ('sampleStatus','4','已签收','Y'), ('sampleStatus','5','复核血型','Y') + insert into xk_dmzd(wordbook_sign,wordbook_code,wordbook_name,use_sign) values('BASE','zccc','交叉配血主侧','Y') + insert into xk_dmzd(wordbook_sign,wordbook_code,wordbook_name,use_sign) values + ('zccc','N','不凝集,不溶血','Y'), + ('zccc','Y','凝集','Y'), + ('zccc','R','溶血','Y'), + ('zccc','C','血液中心配血','Y'), + ('zccc','W','未做','Y') + END if not exists(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'xk_transfuse_apply_before' AND COLUMN_NAME = 'bill_status')