From b7632143542a96da2be4bc400aa3603c41343c82 Mon Sep 17 00:00:00 2001 From: wangwei <1610949092@qq.com> Date: Tue, 11 Mar 2025 15:56:12 +0800 Subject: [PATCH] =?UTF-8?q?3/11=20=E8=AE=A2=E5=8D=95=E5=8A=A0=E5=85=A5?= =?UTF-8?q?=E6=8B=86=E9=9B=B6=E6=A0=87=E8=AE=B0=20=E6=89=AB=E7=A0=81servic?= =?UTF-8?q?e=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=961.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inout/IoCodeTempController.java | 137 +++++++++--------- .../basic/BasicBussinessTypeEntity.java | 10 +- .../glxp/api/entity/inout/IoOrderEntity.java | 7 + .../glxp/api/req/inout/AddOrderRequest.java | 7 + src/main/resources/schemas/schema_v2.4.sql | 4 + 5 files changed, 88 insertions(+), 77 deletions(-) diff --git a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java index 3dbb9096c..ffb09f8ec 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java @@ -1218,8 +1218,9 @@ public class IoCodeTempController extends BaseController { // @Transactional(rollbackFor = Exception.class) public BaseResponse addDrugOrder(AddOrderRequest addOrderRequest, UdiEntity udiEntity, String code, Integer groupNumber) { AddCodeResult addCodeResult = new AddCodeResult(); - BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(addOrderRequest.getAction()); + InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByInvSubByCode(addOrderRequest.getInvCode()); + UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByNameCode(udiEntity.getUdi()); //批次号校验 //判断此产品是否开启允许无批次号 @@ -1238,88 +1239,29 @@ public class IoCodeTempController extends BaseController { String orderId = addOrderRequest.getBillNo(); //过期提醒: - if (IntUtil.value(bussinessTypeEntity.getCheckExpire()) == 1 && !addOrderRequest.isIgnoreExpire()) { - if (StrUtil.isNotEmpty(udiEntity.getExpireDate())) { - String expireDate = "20" + udiEntity.getExpireDate(); - long expireTime = MsDateUtil.parseDateExpire(expireDate); - if (expireTime - System.currentTimeMillis() < 0) { - return ResultVOUtils.error(504, "当前产品已过期,是否确定继续添加?"); - } - } - } - if (IntUtil.value(bussinessTypeEntity.getCheckExpire()) == 2) { - if (StrUtil.isNotEmpty(udiEntity.getExpireDate())) { - String expireDate = "20" + udiEntity.getExpireDate(); - long expireTime = MsDateUtil.parseDateExpire(expireDate); - if (expireTime - System.currentTimeMillis() < 0) { - return ResultVOUtils.error(604, "当前产品已过期,无法添加!"); - } - } + BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(addOrderRequest.getAction()); + int checkExpire = IntUtil.value(bussinessTypeEntity.getCheckExpire()); + BaseResponse response = checkExpireDate(checkExpire,udiEntity,addOrderRequest); + if (response.getCode() != 20000){ + return response; } - UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByNameCode(udiEntity.getUdi()); //判断层级标识是否正确 if (bussinessTypeEntity.isUse()) { - if (udiRelevanceResponse.getUseMaxLevel() != null && IntUtil.value(udiRelevanceResponse.getUseMaxLevel()) < IntUtil.value(udiRelevanceResponse.getPackLevel())) { - return ResultVOUtils.error(500, "当前产品不支持采集该包装层级追溯码!"); - } - - if (udiRelevanceResponse.getUseMaxLevel() == null && IntUtil.value(udiRelevanceResponse.getPackLevel()) > 1) { + if (!isPackLevelValid(udiRelevanceResponse.getUseMaxLevel(),IntUtil.value(udiRelevanceResponse.getPackLevel()), udiRelevanceResponse.getUseLevel())) { return ResultVOUtils.error(500, "当前产品不支持采集该包装层级追溯码!"); } - if (IntUtil.value(udiRelevanceResponse.getPackLevel()) < IntUtil.value(udiRelevanceResponse.getUseLevel())) { - return ResultVOUtils.error(500, "当前产品不支持采集该包装层级追溯码!"); - } - - } else { - if (udiRelevanceResponse.getDistributeMaxLevel() != null && IntUtil.value(udiRelevanceResponse.getDistributeMaxLevel()) < IntUtil.value(udiRelevanceResponse.getPackLevel())) { - return ResultVOUtils.error(500, "当前产品不支持采集该包装层级追溯码!"); - } - - if (udiRelevanceResponse.getDistributeMaxLevel() == null && IntUtil.value(udiRelevanceResponse.getPackLevel()) > 1) { - return ResultVOUtils.error(500, "当前产品不支持采集该包装层级追溯码!"); - } - - if (IntUtil.value(udiRelevanceResponse.getPackLevel()) < IntUtil.value(udiRelevanceResponse.getDistributeLevel())) { + }else { + if (!isPackLevelValid(udiRelevanceResponse.getDistributeMaxLevel(),IntUtil.value(udiRelevanceResponse.getPackLevel()), udiRelevanceResponse.getDistributeLevel())) { return ResultVOUtils.error(500, "当前产品不支持采集该包装层级追溯码!"); } } //近效期提醒 - long recent = 0; - if (udiRelevanceResponse.getRecentDateTime() != null) - recent = udiRelevanceResponse.getRecentDateTime().longValue(); - if (IntUtil.value(bussinessTypeEntity.getCheckVailDate()) == 1 && recent > 0 && !addOrderRequest.isIgnoreRecentExpire() && udiRelevanceResponse.getIsDateBy() == 2) { - if (StrUtil.isNotEmpty(udiEntity.getExpireDate())) { - String expireDate = "20" + udiEntity.getExpireDate(); - long expireTime = MsDateUtil.parseDateExpire(expireDate); - long recentTieme = Math.abs(recent * 24 * 60 * 60 * 1000); - long resultTime = expireTime - System.currentTimeMillis(); - - if (resultTime > 0) { - long time = resultTime / (60 * 60 * 1000); - if (resultTime < recentTieme) { - return ResultVOUtils.error(505, "当前产品临近过期,距过期还剩" + time + "时,是否确定继续添加?"); - } - } - } - } - - if (IntUtil.value(bussinessTypeEntity.getCheckVailDate()) == 1 && recent > 0 && !addOrderRequest.isIgnoreRecentExpire() && udiRelevanceResponse.getIsDateBy() == 1) { - if (StrUtil.isNotEmpty(udiEntity.getExpireDate())) { - String expireDate = "20" + udiEntity.getExpireDate(); - long expireTime = MsDateUtil.parseDateExpire(expireDate); - long recentTieme = Math.abs(recent * 24 * 60 * 60 * 1000); - long resultTime = expireTime - System.currentTimeMillis(); - - if (resultTime > 0) { - long time = resultTime / (24 * 60 * 60 * 1000); - if (resultTime < recentTieme) { - return ResultVOUtils.error(505, "当前产品临近过期,距过期还剩" + time + "天,是否确定继续添加?"); - } - } - } + BaseResponse checkResponse = checkIsExpired(udiRelevanceResponse,udiEntity,addOrderRequest,bussinessTypeEntity); + if (checkResponse.getCode() == 505){ + return checkResponse; } //------工位上货相关-----校验工位存量是否存在---- @@ -1624,6 +1566,7 @@ public class IoCodeTempController extends BaseController { orderEntity.setSplitBusType(addOrderRequest.getSplitBusType()); orderEntity.setWorkPlaceQueueCode(queueCode); orderEntity.setProductType(2); + orderEntity.setFifoSplitTag(addOrderRequest.getFifoSplitTag()); orderService.insertOrder(orderEntity); } @@ -1797,6 +1740,58 @@ public class IoCodeTempController extends BaseController { return ResultVOUtils.success(addCodeResult); } + private BaseResponse checkIsExpired(UdiRelevanceResponse udiRelevanceResponse, UdiEntity udiEntity, AddOrderRequest addOrderRequest,BasicBussinessTypeEntity bussinessTypeEntity) { + long recent = udiRelevanceResponse.getRecentDateTime() != null ? udiRelevanceResponse.getRecentDateTime().longValue() : 0; + if (IntUtil.value(bussinessTypeEntity.getCheckVailDate()) == 1 && recent > 0 && !addOrderRequest.isIgnoreRecentExpire()){ + if (StrUtil.isNotEmpty(udiEntity.getExpireDate())) { + String expireDate = "20" + udiEntity.getExpireDate(); + long expireTime = MsDateUtil.parseDateExpire(expireDate); + long recentTime = Math.abs(recent * 24 * 60 * 60 * 1000); + long resultTime = expireTime - System.currentTimeMillis(); + if (resultTime > 0 && resultTime < recentTime) { + long time = udiRelevanceResponse.getIsDateBy() == 2 + ? resultTime / (60 * 60 * 1000) // 单位:小时 + : resultTime / (24 * 60 * 60 * 1000); // 单位:天 + String unit = udiRelevanceResponse.getIsDateBy() == 2 ? "时" : "天"; + return ResultVOUtils.error(505, "当前产品临近过期,距过期还剩" + time + unit + ",是否确定继续添加?"); + } + } + } + return ResultVOUtils.success(); + } + + private BaseResponse checkExpireDate(int checkExpire,UdiEntity udiEntity, AddOrderRequest addOrderRequest) { + if (StrUtil.isNotEmpty(udiEntity.getExpireDate())) { + String expireDate = "20" + udiEntity.getExpireDate(); + long expireTime = MsDateUtil.parseDateExpire(expireDate); + long currentTimeMillis = System.currentTimeMillis(); + if (expireTime < currentTimeMillis) { + if (checkExpire == 1 && !addOrderRequest.isIgnoreExpire()) { + return ResultVOUtils.error(504, "当前产品已过期,是否确定继续添加?"); + } else if (checkExpire == 2) { + return ResultVOUtils.error(604, "当前产品已过期,无法添加!"); + } + } + } + return ResultVOUtils.success(); + } + + + private boolean isPackLevelValid(Integer maxLevel, Integer packLevel, Integer compareLevel) { + //maxLevel 当业务使用单据类型的时候 为使用允许采集最大层级 不适用的时候 为流通允许采集的最大层级 + //compareLevel 当业务类型使用单据类型的时候 为使用层级 不使用的为流通 + //packLevel 包装层级 + + if (maxLevel != null && packLevel > maxLevel) { + return false; + } + if (maxLevel == null && packLevel > 1 ) { + return false; + } + + return packLevel >= compareLevel; + } + public Integer getMaxGroupNumber() { Integer groupNumber = codeTempService.selectMaxGroupNumber(); diff --git a/src/main/java/com/glxp/api/entity/basic/BasicBussinessTypeEntity.java b/src/main/java/com/glxp/api/entity/basic/BasicBussinessTypeEntity.java index f82c3a6c6..b07816158 100644 --- a/src/main/java/com/glxp/api/entity/basic/BasicBussinessTypeEntity.java +++ b/src/main/java/com/glxp/api/entity/basic/BasicBussinessTypeEntity.java @@ -542,12 +542,10 @@ public class BasicBussinessTypeEntity { * @return */ public Boolean isUse() { - if (this.action.equals(ConstantType.SPLIT_RETURN) || this.action.equals(ConstantType.SPLIT_OUT)) { - return true; - } - if (this.corpType == 1) - return true; - return false; + return this.action.equals(ConstantType.SPLIT_RETURN) || + this.action.equals(ConstantType.SPLIT_OUT) || + this.corpType == 1; } + } diff --git a/src/main/java/com/glxp/api/entity/inout/IoOrderEntity.java b/src/main/java/com/glxp/api/entity/inout/IoOrderEntity.java index 3f74a2594..8a9e01caf 100644 --- a/src/main/java/com/glxp/api/entity/inout/IoOrderEntity.java +++ b/src/main/java/com/glxp/api/entity/inout/IoOrderEntity.java @@ -365,4 +365,11 @@ public class IoOrderEntity { */ @TableField(value = "ycBillNo") private String ycBillNo; + + /** + * 拆零标记:0:防止空指针没有用 1:拆零上货;2:整取上货 + */ + @TableField(value = "fifoSplitTag") + private Integer fifoSplitTag; + } diff --git a/src/main/java/com/glxp/api/req/inout/AddOrderRequest.java b/src/main/java/com/glxp/api/req/inout/AddOrderRequest.java index 6a4f09cd7..5a80f7876 100644 --- a/src/main/java/com/glxp/api/req/inout/AddOrderRequest.java +++ b/src/main/java/com/glxp/api/req/inout/AddOrderRequest.java @@ -1,5 +1,6 @@ package com.glxp.api.req.inout; +import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; @Data @@ -64,5 +65,11 @@ public class AddOrderRequest { private String workPlaceQueueCode; + /** + * 拆零标记:0:防止空指针没有用 1:拆零上货;2:整取上货 + */ + @TableField(value = "fifoSplitTag") + private Integer fifoSplitTag; + } diff --git a/src/main/resources/schemas/schema_v2.4.sql b/src/main/resources/schemas/schema_v2.4.sql index 0acf363a8..5ab868f86 100644 --- a/src/main/resources/schemas/schema_v2.4.sql +++ b/src/main/resources/schemas/schema_v2.4.sql @@ -5422,3 +5422,7 @@ CREATE TABLE IF NOT EXISTS `inv_product_batch` COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; + +CALL Pro_Temp_ColumnWork('io_order', 'fifoSplitTag', + 'tinyint NULL DEFAULT b''0''COMMENT ''拆零标记 0:防止空指针 1:拆零上货 2:整取上货''', + 1);