diff --git a/src/main/java/com/glxp/api/controller/auth/LoginController.java b/src/main/java/com/glxp/api/controller/auth/LoginController.java index 509dabac4..0dd84fa43 100644 --- a/src/main/java/com/glxp/api/controller/auth/LoginController.java +++ b/src/main/java/com/glxp/api/controller/auth/LoginController.java @@ -454,7 +454,7 @@ public class LoginController extends BaseController { public void getImage(HttpServletResponse response, @RequestParam String type, @RequestParam String name) throws IOException { - File file = new File(filePath + "/register/" + type + "/" + name); + File file = new File(filePath + "/register/" + type + "/" + name); // 检查文件是否存在 if (!file.exists()) { @@ -488,5 +488,4 @@ public class LoginController extends BaseController { } - } 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 ee3750bf9..3ac6015ca 100644 --- a/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java +++ b/src/main/java/com/glxp/api/controller/inout/IoCodeTempController.java @@ -1295,7 +1295,8 @@ public class IoCodeTempController extends BaseController { return ResultVOUtils.error(500, "药品字典不存在此产品!"); } - if (IntUtil.value(udiRelevanceResponse.getNotCodeType()) != 0) { + IoCollectSet collectSet = collectSetService.getSet(); + if (IntUtil.value(collectSet.getNoCodeScan()) && IntUtil.value(udiRelevanceResponse.getNotCodeType()) != 0) { return ResultVOUtils.error(500, "当前为无码类型产品,无需扫码!"); } @@ -1324,13 +1325,9 @@ public class IoCodeTempController extends BaseController { // 层级标识校验 boolean packLevelValid; if (bussinessTypeEntity.isUse()) { - packLevelValid = isPackLevelValid(udiRelevanceResponse.getUseMaxLevel(), - IntUtil.value(udiRelevanceResponse.getPackLevel()), - udiRelevanceResponse.getUseLevel()); + packLevelValid = isPackLevelValid(udiRelevanceResponse.getUseMaxLevel(), IntUtil.value(udiRelevanceResponse.getPackLevel()), udiRelevanceResponse.getUseLevel()); } else { - packLevelValid = isPackLevelValid(udiRelevanceResponse.getDistributeMaxLevel(), - IntUtil.value(udiRelevanceResponse.getPackLevel()), - udiRelevanceResponse.getDistributeLevel()); + packLevelValid = isPackLevelValid(udiRelevanceResponse.getDistributeMaxLevel(), IntUtil.value(udiRelevanceResponse.getPackLevel()), udiRelevanceResponse.getDistributeLevel()); } if (!packLevelValid) { @@ -1531,10 +1528,8 @@ public class IoCodeTempController extends BaseController { codeEnttity.setReCount(codeEnttity.getMyReCount() + udiCalCountUtil.getCirActCount(udiRelevanceResponse)); } } else { - if (unitFk == null) - return ResultVOUtils.error(500, "耗材字典不存在此产品!"); - else - return ResultVOUtils.error(500, "当前供应商不存在此配送产品!"); + if (unitFk == null) return ResultVOUtils.error(500, "耗材字典不存在此产品!"); + else return ResultVOUtils.error(500, "当前供应商不存在此配送产品!"); } if (!(bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_RETURN) || bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_OUT))) { @@ -1585,13 +1580,11 @@ public class IoCodeTempController extends BaseController { if (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_OUT)) { //工位上货 只允许上货一个产品 开关以及控制 - IoCollectSet collectSet = collectSetService.getSet(); // 判断货位里面是否有相同产品 if (orderEntity != null && StrUtil.isNotEmpty(orderEntity.getWorkPlaceQueueCode())) { SysWorkplace sysWorkplace = sysWorkplaceService.getOne(new LambdaQueryWrapper().eq(SysWorkplace::getWorkplaceId, addOrderRequest.getWorkPlaceCode())); if (sysWorkplace.getQueueStatus() == 1) { - SysWorkplaceQueue workplaceQueue = sysWorkplaceQueueService.getOne(new LambdaQueryWrapper() - .eq(SysWorkplaceQueue::getCode, orderEntity.getWorkPlaceQueueCode())); + SysWorkplaceQueue workplaceQueue = sysWorkplaceQueueService.getOne(new LambdaQueryWrapper().eq(SysWorkplaceQueue::getCode, orderEntity.getWorkPlaceQueueCode())); if (workplaceQueue != null) { //判断槽位产品是否一样 if (StrUtil.isNotBlank(workplaceQueue.getRelId())) { @@ -1621,8 +1614,7 @@ public class IoCodeTempController extends BaseController { //校验完成 获取当前槽位 绑定产品 - SysWorkplaceQueue sysWorkplaceQueue = sysWorkplaceQueueService.getOne(new LambdaQueryWrapper() - .eq(SysWorkplaceQueue::getCode, orderEntity.getWorkPlaceQueueCode()).last("limit 1")); + SysWorkplaceQueue sysWorkplaceQueue = sysWorkplaceQueueService.getOne(new LambdaQueryWrapper().eq(SysWorkplaceQueue::getCode, orderEntity.getWorkPlaceQueueCode()).last("limit 1")); if (sysWorkplaceQueue.getRelId() == null) { //虚拟槽位这个时候就要设置 if (sysWorkplace.getQueueStatus() == 0) { @@ -1638,8 +1630,7 @@ public class IoCodeTempController extends BaseController { isSame = true; } } - if (!isSame) - return ResultVOUtils.error(507, "当前单据下只允许上货单一产品!"); + if (!isSame) return ResultVOUtils.error(507, "当前单据下只允许上货单一产品!"); } } else if (orderEntity != null && CollUtil.isNotEmpty(codeEnttitys) && IntUtil.value(collectSet.getSplitOutOnlyProductSwitch())) { for (IoCodeTempEntity ioOrderDetailCodeEntity : codeEnttitys) { @@ -1669,8 +1660,7 @@ public class IoCodeTempController extends BaseController { genDetaiEntity = codeEnttity; if (baseResponse == null) { baseResponse = checkSupId(bussinessTypeEntity, codeEnttity, unitFk); - if (baseResponse != null) - return baseResponse; + if (baseResponse != null) return baseResponse; } else { if (baseResponse.getCode() == 501) { return baseResponse; @@ -1732,8 +1722,7 @@ public class IoCodeTempController extends BaseController { String errMsg = ioCheckInoutService.checkCode(codeEnttity); if (errMsg != null) { return ResultVOUtils.error(500, errMsg); - } else - codeTempService.insert(codeEnttity); + } else codeTempService.insert(codeEnttity); // 查询是否存在药品关联信息 后将结果更新至 temp表 updateRelCode(bussinessTypeEntity, code); // relCodeBatchService.threadUpdateIoCodeTempEntity(code); @@ -1742,8 +1731,7 @@ public class IoCodeTempController extends BaseController { String errMsg = ioCheckInoutService.checkDrugNoPiCode(codeEnttity); if (errMsg != null) { return ResultVOUtils.error(500, errMsg); - } else - codeTempService.insert(codeEnttity); + } else codeTempService.insert(codeEnttity); // 异步调用 查询是否存在药品关联信息 后将结果更新至 temp表 updateRelCode(bussinessTypeEntity, code); // relCodeBatchService.threadUpdateIoCodeTempEntity(code); diff --git a/src/main/java/com/glxp/api/entity/collect/IoCollectSet.java b/src/main/java/com/glxp/api/entity/collect/IoCollectSet.java index 2e5202e30..4e3bbc7dd 100644 --- a/src/main/java/com/glxp/api/entity/collect/IoCollectSet.java +++ b/src/main/java/com/glxp/api/entity/collect/IoCollectSet.java @@ -138,6 +138,11 @@ public class IoCollectSet implements Serializable { @ApiModelProperty(value = "是否启用退货扫码冲突替换:1:是;0:否") private Boolean conflictReturn; + @TableField(value = "noCodeScan") + @ApiModelProperty(value = "无码类型是否允许上货:1:是;0:否") + private Boolean noCodeScan; + + private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/glxp/api/service/inout/AddCoodeService.java b/src/main/java/com/glxp/api/service/inout/AddCoodeService.java index 0bc020f38..b899b2249 100644 --- a/src/main/java/com/glxp/api/service/inout/AddCoodeService.java +++ b/src/main/java/com/glxp/api/service/inout/AddCoodeService.java @@ -157,6 +157,8 @@ public class AddCoodeService { * 药品批量扫码 */ public BaseResponse batchProcessDrugCodes(AddOrderCodeRequest addOrderCodeRequest, AuthAdmin authAdmin) { + + IoCollectSet collectSet = collectSetService.getSet(); long startTime = System.currentTimeMillis(); AddCodeResult addCodeResult = new AddCodeResult(); List codeList = addOrderCodeRequest.getCodeList(); @@ -293,8 +295,7 @@ public class AddCoodeService { orderEntity.setFifoSplitTag(addOrderRequest.getFifoSplitTag()); orderService.insertOrder(orderEntity); addOrderRequest.setBillNo(orderNo); - } else - orderEntity = isExit; + } else orderEntity = isExit; try { // 创建异步任务 List> futures = udiEntityMap.entrySet().stream().map(entry -> { @@ -324,7 +325,7 @@ public class AddCoodeService { udiEntity.setSerialNo(addOrderRequest.getSerialNo()); } // 处理药品追溯码 - BaseResponse baseResponse = addDrugOrder(addOrderRequest, udiEntity, code, groupNumber, bussinessTypeEntity, udiRelevanceMap.get(udiEntity.getUdi()), authAdmin, invWarehouseEntity); + BaseResponse baseResponse = addDrugOrder(addOrderRequest, udiEntity, code, groupNumber, bussinessTypeEntity, udiRelevanceMap.get(udiEntity.getUdi()), authAdmin, invWarehouseEntity, collectSet); // 处理结果 if (baseResponse.getCode() == 20000) { resultResponse.setStatus(1); @@ -378,7 +379,7 @@ public class AddCoodeService { /** * 药品扫码添加校验 */ - public BaseResponse addDrugOrder(AddOrderRequest addOrderRequest, UdiEntity udiEntity, String code, Integer groupNumber, BasicBussinessTypeEntity bussinessTypeEntity, UdiRelevanceResponse udiRelevanceResponse, AuthAdmin authAdmin, InvWarehouseEntity invWarehouseEntity) { + public BaseResponse addDrugOrder(AddOrderRequest addOrderRequest, UdiEntity udiEntity, String code, Integer groupNumber, BasicBussinessTypeEntity bussinessTypeEntity, UdiRelevanceResponse udiRelevanceResponse, AuthAdmin authAdmin, InvWarehouseEntity invWarehouseEntity, IoCollectSet collectSet) { AddCodeResult addCodeResult = new AddCodeResult(); // 检查码是否空 @@ -386,7 +387,7 @@ public class AddCoodeService { return ResultVOUtils.error(500, "无效条码"); } - if (IntUtil.value(udiRelevanceResponse.getNotCodeType()) != 0 && (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_OUT) || bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_RETURN))) { + if (IntUtil.value(collectSet.getNoCodeScan()) && IntUtil.value(udiRelevanceResponse.getNotCodeType()) != 0 && (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_OUT) || bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_RETURN))) { return ResultVOUtils.error(500, "当前为无码类型产品,无需扫码!"); } @@ -630,7 +631,7 @@ public class AddCoodeService { } if (bussinessTypeEntity.getAction().equals(ConstantType.SPLIT_OUT)) { //工位上货 只允许上货一个产品 开关以及控制 - IoCollectSet collectSet = collectSetService.getSet(); +// IoCollectSet collectSet = collectSetService.getSet(); // 判断货位里面是否有相同产品 if (orderEntity != null && StrUtil.isNotEmpty(orderEntity.getWorkPlaceQueueCode())) { SysWorkplace sysWorkplace = sysWorkplaceService.getOne(new LambdaQueryWrapper().eq(SysWorkplace::getWorkplaceId, addOrderRequest.getWorkPlaceCode())); @@ -775,8 +776,7 @@ public class AddCoodeService { } // 按照关联ID和批次号分组码实体 - Map> groupedTempEntities = codeTempEntities.stream() - .collect(Collectors.groupingBy(entity -> entity.getRelId() + ":" + StrUtil.trimToEmpty(entity.getBatchNo()))); + Map> groupedTempEntities = codeTempEntities.stream().collect(Collectors.groupingBy(entity -> entity.getRelId() + ":" + StrUtil.trimToEmpty(entity.getBatchNo()))); // 使用synchronized块来保护关键部分 // 获取当前订单的所有明细码 @@ -788,21 +788,14 @@ public class AddCoodeService { } IoCodeTempEntity representative = group.get(0); - UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectSupGroupById( - representative.getRelId(), - representative.getSupId()); + UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectSupGroupById(representative.getRelId(), representative.getSupId()); // 计算该组的总数量 int totalCount = group.stream().mapToInt(IoCodeTempEntity::getMyCount).sum(); int totalReCount = group.stream().mapToInt(IoCodeTempEntity::getMyReCount).sum(); // 在数据库层面使用悲观锁或乐观锁查询现有记录 - IoOrderDetailCodeEntity existingEntity = orderDetailCodeDao.selectOne( - new QueryWrapper() - .eq("orderIdFk", orderEntity.getBillNo()) - .eq("bindRlFk", representative.getRelId()) - .eq(StrUtil.isNotEmpty(representative.getBatchNo()), "batchNo", representative.getBatchNo()) - .last("limit 1 FOR UPDATE")); // 添加行级锁 + IoOrderDetailCodeEntity existingEntity = orderDetailCodeDao.selectOne(new QueryWrapper().eq("orderIdFk", orderEntity.getBillNo()).eq("bindRlFk", representative.getRelId()).eq(StrUtil.isNotEmpty(representative.getBatchNo()), "batchNo", representative.getBatchNo()).last("limit 1 FOR UPDATE")); // 添加行级锁 IoOrderDetailCodeEntity resultDetailEntity; if (existingEntity != null) { @@ -834,10 +827,7 @@ public class AddCoodeService { } // 返回最新的明细码列表 - return orderDetailCodeDao.selectList( - new QueryWrapper() - .select("id", "count", "reCount", "bindRlFk", "batchNo", "price") - .eq("orderIdFk", orderEntity.getBillNo())); + return orderDetailCodeDao.selectList(new QueryWrapper().select("id", "count", "reCount", "bindRlFk", "batchNo", "price").eq("orderIdFk", orderEntity.getBillNo())); } public Integer getMaxGroupNumber() { diff --git a/src/main/resources/schemas/schema_v2.4.sql b/src/main/resources/schemas/schema_v2.4.sql index ececaae42..70a9b53fa 100644 --- a/src/main/resources/schemas/schema_v2.4.sql +++ b/src/main/resources/schemas/schema_v2.4.sql @@ -5598,6 +5598,10 @@ CALL Pro_Temp_ColumnWork('io_collect_set', 'conflictReturn', 'tinyint NULL DEFAULT NULL COMMENT ''是否启用退货扫码冲突替换:1:是;0:否''', 1); +CALL Pro_Temp_ColumnWork('io_collect_set', 'noCodeScan', + 'tinyint NULL DEFAULT NULL COMMENT ''无码类型是否允许上货:1:是;0:否''', + 1); + CREATE TABLE IF NOT EXISTS `yb_uploading_log` ( `id` int NOT NULL AUTO_INCREMENT,