diff --git a/src/main/java/com/glxp/api/controller/inout/IoSplitController.java b/src/main/java/com/glxp/api/controller/inout/IoSplitController.java index 76c932325..c683eb80b 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoSplitController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoSplitController.java @@ -9,6 +9,7 @@ import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.controller.BaseController; import com.glxp.api.entity.basic.*; import com.glxp.api.entity.collect.IoCollectOrder; +import com.glxp.api.entity.inout.IoCodeTempEntity; import com.glxp.api.entity.inout.IoSplitCodeEntity; import com.glxp.api.entity.thrsys.BasicInsChdrugEntity; import com.glxp.api.req.inout.AddTagCodeReqeust; @@ -20,13 +21,16 @@ import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.res.inout.IoSplitCodeDetailResponse; import com.glxp.api.service.basic.*; import com.glxp.api.service.collect.IoCollectOrderService; +import com.glxp.api.service.inout.IoCodeTempService; import com.glxp.api.service.inout.IoSplitCodeDetailService; import com.glxp.api.service.inout.IoSplitCodeService; import com.glxp.api.service.inout.IoSplitFifoCodeService; +import com.glxp.api.service.inout.impl.IoCodeService; import com.glxp.api.util.IntUtil; import com.glxp.api.util.udi.FilterUdiUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -58,6 +62,12 @@ public class IoSplitController extends BaseController { BasicSkPrescribeService basicSkPrescribeService; @Resource BasicSkPrescribeItemCodeService basicSkPrescribeItemCodeService; + @Resource + private IBasicBussinessTypeService basicBussinessTypeService; + @Resource + IoCodeService codeService; + @Resource + private IoCodeTempService codeTempService; /** * 器械拆零按码查询 @@ -207,6 +217,43 @@ public class IoSplitController extends BaseController { if (basicSkPrescribeDiEntity == null) return ResultVOUtils.error(500, "非此处方单UDI码!"); + //2-1.校验预验收库存是否已存在 + String preInBillNo = addTagCodeReqeust.getPreInBillNo(); + String orderId = addTagCodeReqeust.getBillNo(); + if (StrUtil.isNotEmpty(preInBillNo)){ + BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction("SC74047369831589"); + if (bussinessTypeEntity.isScanPreIn() && checkDiAttribute(bussinessTypeEntity, udiRelevanceResponse, 2)) { + if (bussinessTypeEntity.getBackPreinType() == 1 && bussinessTypeEntity.isPreInBack()) {//按单出库&& bussinessTypeEntity.isPreInBack() + String orderIds = preInBillNo; + if (StrUtil.isNotEmpty(orderIds)) { + String[] orderIdArray = orderIds.split(","); + List orderList = CollUtil.toList(orderIdArray); + int count = codeService.findByOrderIdsCount(orderList, code); + if (count <= 0) { + return ResultVOUtils.error(500, "非预验收单产品或预验收库存数量不足!"); + } + if (StrUtil.isNotEmpty(orderId)) {//非首次添加 + if (StrUtil.isEmpty(udiEntity.getSerialNo())) {//该单据已有该产品 + //无序列号,则可能存在多个预验收入库单 + IoCodeTempEntity codeTempEntity = codeTempService.findByUnique(orderId, code); + if (codeTempEntity != null) { + if (count < (codeTempEntity.getMyCount() + 1)) { + return ResultVOUtils.error(500, "超出预验收库存数量"); + } + } + } else { + if (count < 1) { + return ResultVOUtils.error(500, "预验收库存数量不足"); + } + } + } + } else { + return ResultVOUtils.error(500, "未选择预验收入库单,请先选择预验收入库单!"); + } + } + } + } + //3.校验该UDI码是否已经出库(是否在预出库队列) Boolean b1 = splitFifoCodeService.isExitCode(code, basicSkPrescribeEntity.getWorkPlaceCode()); if (!b1) { @@ -275,4 +322,18 @@ public class IoSplitController extends BaseController { } + /** + * @param purType 1:入账库;2:预验收库;3:寄售库 + */ + public boolean checkDiAttribute(BasicBussinessTypeEntity bussinessTypeEntity, UdiRelevanceResponse + udiRelevanceEntity, Integer purType) { + if (bussinessTypeEntity.getUseDyCount() == 2) { + if (IntUtil.value(udiRelevanceEntity.getPurType()) == IntUtil.value(purType)) { + return true; + } else + return false; + } + return true; + } + } diff --git a/src/main/java/com/glxp/api/entity/collect/IoCollectOrder.java b/src/main/java/com/glxp/api/entity/collect/IoCollectOrder.java index 97a90b600..660bd7e47 100644 --- a/src/main/java/com/glxp/api/entity/collect/IoCollectOrder.java +++ b/src/main/java/com/glxp/api/entity/collect/IoCollectOrder.java @@ -285,6 +285,10 @@ public class IoCollectOrder implements Serializable { @ApiModelProperty(value = "第三方单据类型编码") private String thrBusType; + @TableField(value = "preInBillNo") + @ApiModelProperty(value = "关联预验收入库单号") + private String preInBillNo; + private static final long serialVersionUID = 1L; } diff --git a/src/main/java/com/glxp/api/entity/collect/IoCollectOrderBackup.java b/src/main/java/com/glxp/api/entity/collect/IoCollectOrderBackup.java index 102c307f9..2b9ccb8cd 100644 --- a/src/main/java/com/glxp/api/entity/collect/IoCollectOrderBackup.java +++ b/src/main/java/com/glxp/api/entity/collect/IoCollectOrderBackup.java @@ -275,6 +275,9 @@ public class IoCollectOrderBackup implements Serializable { private Integer checkCodeConfirm; + @TableField(value = "preInBillNo") + @ApiModelProperty(value = "关联预验收入库单号") + private String preInBillNo; private static final long serialVersionUID = 1L; } diff --git a/src/main/java/com/glxp/api/entity/collect/IoCollectOrderOrigin.java b/src/main/java/com/glxp/api/entity/collect/IoCollectOrderOrigin.java index d566b115b..26f0b02e6 100644 --- a/src/main/java/com/glxp/api/entity/collect/IoCollectOrderOrigin.java +++ b/src/main/java/com/glxp/api/entity/collect/IoCollectOrderOrigin.java @@ -332,4 +332,8 @@ public class IoCollectOrderOrigin implements Serializable { @ApiModelProperty(value = "第三方单据类型编码") private String thrBusType; + + @TableField(value = "preInBillNo") + @ApiModelProperty(value = "关联预验收入库单号") + private String preInBillNo; } diff --git a/src/main/java/com/glxp/api/req/collect/CollectOrderRequest.java b/src/main/java/com/glxp/api/req/collect/CollectOrderRequest.java index 115a59d49..962efd2ba 100644 --- a/src/main/java/com/glxp/api/req/collect/CollectOrderRequest.java +++ b/src/main/java/com/glxp/api/req/collect/CollectOrderRequest.java @@ -167,6 +167,6 @@ public class CollectOrderRequest extends ListPageRequest { private Integer isCheckFinish; - + private String preInBillNo; } diff --git a/src/main/java/com/glxp/api/req/inout/AddTagCodeReqeust.java b/src/main/java/com/glxp/api/req/inout/AddTagCodeReqeust.java index d0aef23b3..7abb1617f 100644 --- a/src/main/java/com/glxp/api/req/inout/AddTagCodeReqeust.java +++ b/src/main/java/com/glxp/api/req/inout/AddTagCodeReqeust.java @@ -55,6 +55,7 @@ public class AddTagCodeReqeust { private String shipper; private String shipperName; + private String preInBillNo; /** * 是否拆零码 diff --git a/src/main/resources/schemas/schema_v2.4.sql b/src/main/resources/schemas/schema_v2.4.sql index df76dc493..e245c890b 100644 --- a/src/main/resources/schemas/schema_v2.4.sql +++ b/src/main/resources/schemas/schema_v2.4.sql @@ -5318,3 +5318,18 @@ CALL Pro_Temp_ColumnWork('io_code_temp', 'queueCode', CALL Pro_Temp_ColumnWork('sys_workplace_document', 'busType', 'tinyint NULL DEFAULT NULL COMMENT ''业务类型 1器械业务 2药品业务''', 1); + +CALL Pro_Temp_ColumnWork('io_collect_order', 'preInBillNo', + ' varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT ''关联预验收入库单号(只有出库时需校验预验收库存才有)''', + 1); + + +CALL Pro_Temp_ColumnWork('io_collect_order_backup', 'preInBillNo', + ' varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT ''关联预验收入库单号(只有出库时需校验预验收库存才有)''', + 1); + + + +CALL Pro_Temp_ColumnWork('io_collect_order_origin', 'preInBillNo', + ' varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT ''关联预验收入库单号(只有出库时需校验预验收库存才有)''', + 1);