diff --git a/src/main/java/com/glxp/api/controller/collect/IoCollectOrderController.java b/src/main/java/com/glxp/api/controller/collect/IoCollectOrderController.java index b8a488716..48d66a2be 100644 --- a/src/main/java/com/glxp/api/controller/collect/IoCollectOrderController.java +++ b/src/main/java/com/glxp/api/controller/collect/IoCollectOrderController.java @@ -34,6 +34,7 @@ import com.glxp.api.res.collect.IoCollectOrderResponse; import com.glxp.api.service.basic.BasicCollectUserService; import com.glxp.api.service.basic.SysWorkplaceDocumentService; import com.glxp.api.service.collect.*; +import com.glxp.api.service.inout.IoSplitCodeService; import com.glxp.api.util.IntUtil; import com.glxp.api.util.MsDateUtil; import org.springframework.beans.BeanUtils; @@ -399,14 +400,7 @@ public class IoCollectOrderController extends BaseController { boolean isAllTag = collectOrderBizResponses.stream() .allMatch(obj -> StrUtil.isNotEmpty(obj.getFinishUdiCode()) || obj.getAutoTagStatus() == 2); if (!isAllTag) { -// SysWorkplaceDocumentEntity sysWorkplaceDocumentEntity = sysWorkplaceDocumentService.findByBusType(collectOrderRequest.getBusType()); -// if (IntUtil.value(sysWorkplaceDocumentEntity.getOrderFinishVerify()) == 1) { -// -// } else { -// return ResultVOUtils.error(503, "该业务单据未全部赋码,无法完成单据?"); -// } return ResultVOUtils.error(502, "该业务单据未全部赋码,是否强制完成单据?"); - } } collectOrderRequest.setUpdateUser(getUserId()); @@ -414,7 +408,31 @@ public class IoCollectOrderController extends BaseController { return ResultVOUtils.success(); } + @Resource + IoSplitCodeService splitCodeService; + /** + * 取货确认 + * + * @return + */ + @PostMapping("/udiwms/basic/collect/order/bizConfirm") + @Transactional(rollbackFor = Exception.class) + public BaseResponse bizConfirmOrder(@RequestBody CollectOrderRequest collectOrderRequest) { + /** + * 取货确认 + */ + splitCodeService.confirmBizAutiTagCode(collectOrderRequest); + return ResultVOUtils.success("确认成功!"); + } + + + /** + * 确认取药 + * + * @param collectOrderRequest + * @return + */ @PostMapping("/udiwms/basic/collect/order/vailFinish") public BaseResponse vailOrderFinish(@RequestBody CollectOrderRequest collectOrderRequest) { if (StrUtil.isEmpty(collectOrderRequest.getBillNo())) diff --git a/src/main/java/com/glxp/api/entity/collect/IoCollectOrderBiz.java b/src/main/java/com/glxp/api/entity/collect/IoCollectOrderBiz.java index 33485afe4..656a304cf 100644 --- a/src/main/java/com/glxp/api/entity/collect/IoCollectOrderBiz.java +++ b/src/main/java/com/glxp/api/entity/collect/IoCollectOrderBiz.java @@ -274,5 +274,12 @@ public class IoCollectOrderBiz implements Serializable { private String remark10; + /** + * 取货确认状态 + */ + @TableField(value = "getConfirm") + private Boolean getConfirm; + + private static final long serialVersionUID = 1L; } 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 693c4f5d6..35596c6e2 100644 --- a/src/main/java/com/glxp/api/req/collect/CollectOrderRequest.java +++ b/src/main/java/com/glxp/api/req/collect/CollectOrderRequest.java @@ -149,5 +149,10 @@ public class CollectOrderRequest extends ListPageRequest { //发货方 private String shipperName; + /** + * 业务单号ID + */ + private Long bizId; + } diff --git a/src/main/java/com/glxp/api/service/collect/IoCollectOrderService.java b/src/main/java/com/glxp/api/service/collect/IoCollectOrderService.java index d895e6a4f..32cab79ab 100644 --- a/src/main/java/com/glxp/api/service/collect/IoCollectOrderService.java +++ b/src/main/java/com/glxp/api/service/collect/IoCollectOrderService.java @@ -821,6 +821,9 @@ public class IoCollectOrderService extends ServiceImpl().eq(IoCollectOrder::getBillNo, billNo)); diff --git a/src/main/java/com/glxp/api/service/inout/IoSplitCodeService.java b/src/main/java/com/glxp/api/service/inout/IoSplitCodeService.java index d54b71b08..435b95b14 100644 --- a/src/main/java/com/glxp/api/service/inout/IoSplitCodeService.java +++ b/src/main/java/com/glxp/api/service/inout/IoSplitCodeService.java @@ -17,6 +17,7 @@ import com.glxp.api.entity.inout.IoSplitFifoInv; import com.glxp.api.exception.JsonException; import com.glxp.api.req.basic.FilterUdiRelRequest; import com.glxp.api.req.collect.AddInvDesDetaiRequest; +import com.glxp.api.req.collect.CollectOrderRequest; import com.glxp.api.req.inout.IoSplitCodeRequest; import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.service.basic.UdiRelevanceService; @@ -147,29 +148,34 @@ public class IoSplitCodeService extends ServiceImpl 0) { - ioSplitCodeEntity.setRemainCount(count); - break; - } else if (count == 0) { - ioSplitCodeEntity.setRemainCount(0); - } else { - ioSplitCodeEntity.setRemainCount(0); - unCount = -count; + if (IntUtil.value(ioSplitCodeEntity.getRemainCount()) > 0) { + count = IntUtil.value(ioSplitCodeEntity.getRemainCount()) - unCount; + collectOrderCodeAutoService.save(IoCollectOrderCodeAuto.builder() + .codeIdFk(ioSplitCodeEntity.getId()) + .udiCode(ioSplitCodeEntity.getCode()) + .orderIdFk(collectOrder.getBillNo()) + .batchNo(ioSplitCodeEntity.getBatchNo()) + .productDate(ioSplitCodeEntity.getProduceDate()) + .expireDate(ioSplitCodeEntity.getExpireDate()) + .serialNo(ioSplitCodeEntity.getSerialNo()) + .relId(collectOrderBiz.getRelId()) + .bizIdFk(collectOrderBiz.getId()) + .fifoSplit(ioSplitCodeEntity.getFifoSplit()) + .createTime(new Date()) + .updateTime(new Date()) + .build()); + if (count > 0) { + ioSplitCodeEntity.setRemainCount(count); + splitCodeMapper.updateById(ioSplitCodeEntity); + break; + } else if (count == 0) { + ioSplitCodeEntity.setRemainCount(0); + splitCodeMapper.updateById(ioSplitCodeEntity); + } else { + ioSplitCodeEntity.setRemainCount(0); + splitCodeMapper.updateById(ioSplitCodeEntity); + unCount = -count; + } } } if (unCount > 0) { @@ -368,7 +374,72 @@ public class IoSplitCodeService extends ServiceImpl 0) { + collectOrderBiz.setUnTagCount(unTagCount); + } + + int quotient = collectOrderBiz.getUnTagCount() / IntUtil.value(udiRelevanceResponse.getBhxjsl()); + int remainder = collectOrderBiz.getUnTagCount() % IntUtil.value(udiRelevanceResponse.getBhxjsl()); + //2.如果整盒,从工位队列扣除 默认最后一个追溯码拆零 + if (quotient > 0) { + List ioSplitFifoCodeEntities = splitFifoCodeService.findByRelId(putWorkPlaceCode, collectOrderBiz.getRelId(), collectOrderBiz.getBatchNo()); + if (ioSplitFifoCodeEntities.size() < quotient) { + throw new JsonException(500, "确认失败,工位库存数量不足!"); + } + for (int i = 0; i < quotient; i++) { + IoSplitFifoCodeEntity splitFifoCodeEntity = ioSplitFifoCodeEntities.get(i); + collectOrderBiz.setUnTagCount(IntUtil.value(collectOrderBiz.getUnTagCount()) - IntUtil.value(udiRelevanceResponse.getBhxjsl())); + collectOrderCodeAutoService.save(IoCollectOrderCodeAuto.builder() + .codeIdFk(splitFifoCodeEntity.getId()) + .udiCode(splitFifoCodeEntity.getCode()) + .orderIdFk(collectOrder.getBillNo()) + .batchNo(splitFifoCodeEntity.getBatchNo()) + .productDate(splitFifoCodeEntity.getProduceDate()) + .expireDate(splitFifoCodeEntity.getExpireDate()) + .serialNo(splitFifoCodeEntity.getSerialNo()) + .relId(collectOrderBiz.getRelId()) + .bizIdFk(collectOrderBiz.getId()) + .fifoSplit(splitFifoCodeEntity.getFifoSplit()) + .createTime(new Date()) + .updateTime(new Date()) + .build()); + splitFifoCodeService.removeById(splitFifoCodeEntity.getId()); + IoSplitFifoInv splitFifoInv = splitFifoInvService.findByFifoCode(splitFifoCodeEntity); + if (splitFifoInv != null) { + splitFifoInv.setOutCount(IntUtil.value(splitFifoInv.getOutCount()) + IntUtil.value(splitFifoCodeEntity.getTotalCount())); + int lockCount = IntUtil.value(splitFifoInv.getLockCount()) - IntUtil.value(splitFifoCodeEntity.getTotalCount()); + splitFifoInv.setLockCount(lockCount > 0 ? lockCount : 0); + splitFifoInv.setReCount(IntUtil.value(splitFifoInv.getInCount()) - IntUtil.value(splitFifoInv.getOutCount())); + splitFifoInv.setAvailableCount(IntUtil.value(splitFifoInv.getInCount()) - IntUtil.value(splitFifoInv.getLockCount()) - IntUtil.value(splitFifoInv.getOutCount())); + splitFifoInvService.updateById(splitFifoInv); + } + } + } + //.如果拆零,拆零表扣除 + if (remainder > 0) { + splitRemove(collectOrderBiz, collectOrder, putWorkPlaceCode); + } } diff --git a/src/main/resources/schemas/schema_v2.4.sql b/src/main/resources/schemas/schema_v2.4.sql index cb3fec6b4..5e90ab05c 100644 --- a/src/main/resources/schemas/schema_v2.4.sql +++ b/src/main/resources/schemas/schema_v2.4.sql @@ -4665,6 +4665,13 @@ CALL Pro_Temp_ColumnWork('sys_workplace_queue', 'freightCode', 'varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ''货架code''', 1); + +CALL Pro_Temp_ColumnWork('io_collect_order_biz', 'getConfirm', + ' tinyint NULL DEFAULT b''1''COMMENT ''取货确认状态''', + 1); + + 1); + CALL Pro_Temp_ColumnWork('io_split_fifo_inv', 'workPlaceQueueCode', 'varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ''出货槽编码''', 1);