From 1a2a766a54b25552c78b490b2d20923a4c6a3055 Mon Sep 17 00:00:00 2001 From: yewj Date: Fri, 8 Nov 2024 09:17:17 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=A4=87=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../collect/IoCollectOrderController.java | 32 +++++++--- .../api/req/collect/CollectOrderRequest.java | 5 ++ .../collect/IoCollectOrderService.java | 3 + .../api/service/inout/IoSplitCodeService.java | 59 +++++++++++-------- src/main/resources/schemas/schema_v2.4.sql | 4 +- 5 files changed, 72 insertions(+), 31 deletions(-) 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..620ca5a79 100644 --- a/src/main/java/com/glxp/api/controller/collect/IoCollectOrderController.java +++ b/src/main/java/com/glxp/api/controller/collect/IoCollectOrderController.java @@ -399,14 +399,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()); @@ -415,6 +408,31 @@ public class IoCollectOrderController extends BaseController { } + /** + * 完成单据 + * + * @return + */ + @PostMapping("/udiwms/basic/collect/order/bizConfirm") + @Transactional(rollbackFor = Exception.class) + public BaseResponse bizConfirmOrder(@RequestBody CollectOrderRequest 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/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..df9b1ad76 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) { @@ -371,6 +377,13 @@ public class IoSplitCodeService extends ServiceImpl Date: Fri, 8 Nov 2024 09:30:18 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8F=96=E8=B4=A7?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../collect/IoCollectOrderController.java | 14 ++--- .../api/entity/collect/IoCollectOrderBiz.java | 7 +++ .../api/service/inout/IoSplitCodeService.java | 62 ++++++++++++++++++- src/main/resources/schemas/schema_v2.4.sql | 54 +++++++++------- 4 files changed, 105 insertions(+), 32 deletions(-) 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 620ca5a79..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; @@ -407,23 +408,22 @@ 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) { - - /** - * 扫码确认 + * 取货确认 */ - - - return ResultVOUtils.success(); + splitCodeService.confirmBizAutiTagCode(collectOrderRequest); + return ResultVOUtils.success("确认成功!"); } 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/service/inout/IoSplitCodeService.java b/src/main/java/com/glxp/api/service/inout/IoSplitCodeService.java index df9b1ad76..435b95b14 100644 --- a/src/main/java/com/glxp/api/service/inout/IoSplitCodeService.java +++ b/src/main/java/com/glxp/api/service/inout/IoSplitCodeService.java @@ -374,14 +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 cb172cda9..0b3dffc00 100644 --- a/src/main/resources/schemas/schema_v2.4.sql +++ b/src/main/resources/schemas/schema_v2.4.sql @@ -4605,17 +4605,18 @@ CALL Pro_Temp_ColumnWork('sys_workplace', 'queueStatus', 1); -CREATE TABLE IF NOT EXISTS `sys_workplace_freight` ( - `id` int NOT NULL AUTO_INCREMENT, - `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '货架编码', - `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '货架名称', - `workPlaceIdFk` bigint NULL DEFAULT NULL COMMENT '工位ID', - `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', - `createTime` datetime NULL DEFAULT NULL, - `updateTime` datetime NULL DEFAULT NULL, - `createUser` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - `updateUser` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - PRIMARY KEY (`id`) USING BTREE +CREATE TABLE IF NOT EXISTS `sys_workplace_freight` +( + `id` int NOT NULL AUTO_INCREMENT, + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '货架编码', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '货架名称', + `workPlaceIdFk` bigint NULL DEFAULT NULL COMMENT '工位ID', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', + `createTime` datetime NULL DEFAULT NULL, + `updateTime` datetime NULL DEFAULT NULL, + `createUser` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `updateUser` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci @@ -4638,17 +4639,18 @@ CALL Pro_Temp_ColumnWork('io_collect_set', 'lastCodeSplit', ' tinyint NULL DEFAULT b''1''COMMENT ''是否最后追溯码拆零0:关闭 1:启用''', 1); -CREATE TABLE IF NOT EXISTS `sys_workplace_layer` ( - `id` int NOT NULL AUTO_INCREMENT, - `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '摆货层编码', - `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', - `createTime` datetime NULL DEFAULT NULL, - `updateTime` datetime NULL DEFAULT NULL, - `createUser` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - `updateUser` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, - `freightCode` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '取货架Code', - `queueNum` int NULL DEFAULT NULL COMMENT '出货槽数量', - PRIMARY KEY (`id`) USING BTREE +CREATE TABLE IF NOT EXISTS `sys_workplace_layer` +( + `id` int NOT NULL AUTO_INCREMENT, + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '摆货层编码', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注', + `createTime` datetime NULL DEFAULT NULL, + `updateTime` datetime NULL DEFAULT NULL, + `createUser` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `updateUser` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, + `freightCode` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '取货架Code', + `queueNum` int NULL DEFAULT NULL COMMENT '出货槽数量', + PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci @@ -4665,4 +4667,10 @@ CALL Pro_Temp_ColumnWork('sys_workplace_freight', 'layerNum', CALL Pro_Temp_ColumnWork('sys_workplace_queue', 'freightCode', 'varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ''货架code''', - 1) + 1); + + +CALL Pro_Temp_ColumnWork('io_collect_order_biz', 'getConfirm', + ' tinyint NULL DEFAULT b''1''COMMENT ''取货确认状态''', + 1); +