|  |  |  | @ -122,30 +122,7 @@ public class IoSplitFifoInvService extends ServiceImpl<IoSplitFifoInvMapper, IoS | 
			
		
	
		
			
				
					|  |  |  |  |                 splitFifoInv.setAvailableCount(IntUtil.value(splitFifoInv.getAvailableCount()) + IntUtil.value(ioSplitFifoCodeEntity.getTotalCount())); | 
			
		
	
		
			
				
					|  |  |  |  |                 updateById(splitFifoInv); | 
			
		
	
		
			
				
					|  |  |  |  |             } else { | 
			
		
	
		
			
				
					|  |  |  |  |                 splitFifoInv = IoSplitFifoInv.builder() | 
			
		
	
		
			
				
					|  |  |  |  |                         .id(IdUtil.getSnowflakeNextId()) | 
			
		
	
		
			
				
					|  |  |  |  |                         .workPlaceCode(ioSplitFifoCodeEntity.getWorkPlaceCode()) | 
			
		
	
		
			
				
					|  |  |  |  |                         .deptCode(ioSplitFifoCodeEntity.getDeptCode()) | 
			
		
	
		
			
				
					|  |  |  |  |                         .invCode(ioSplitFifoCodeEntity.getInvCode()) | 
			
		
	
		
			
				
					|  |  |  |  |                         .productType(ioSplitFifoCodeEntity.getProductType()) | 
			
		
	
		
			
				
					|  |  |  |  |                         .fifoSplit(ioSplitFifoCodeEntity.getFifoSplit()) | 
			
		
	
		
			
				
					|  |  |  |  |                         .relId(ioSplitFifoCodeEntity.getRelId()) | 
			
		
	
		
			
				
					|  |  |  |  |                         .inCodeCount(ioSplitFifoCodeEntity.getScanCount()) | 
			
		
	
		
			
				
					|  |  |  |  |                         .batchNo(ioSplitFifoCodeEntity.getBatchNo()) | 
			
		
	
		
			
				
					|  |  |  |  |                         .produceDate(ioSplitFifoCodeEntity.getProduceDate()) | 
			
		
	
		
			
				
					|  |  |  |  |                         .expireDate(ioSplitFifoCodeEntity.getExpireDate()) | 
			
		
	
		
			
				
					|  |  |  |  |                         .supId(ioSplitFifoCodeEntity.getSupId()) | 
			
		
	
		
			
				
					|  |  |  |  |                         .inCount(ioSplitFifoCodeEntity.getTotalCount()) | 
			
		
	
		
			
				
					|  |  |  |  |                         .outCount(0) | 
			
		
	
		
			
				
					|  |  |  |  |                         .reCount(IntUtil.value(ioSplitFifoCodeEntity.getTotalCount())) | 
			
		
	
		
			
				
					|  |  |  |  |                         .availableCount(IntUtil.value(ioSplitFifoCodeEntity.getTotalCount())) | 
			
		
	
		
			
				
					|  |  |  |  |                         .lockCount(0) | 
			
		
	
		
			
				
					|  |  |  |  |                         .createTime(new Date()) | 
			
		
	
		
			
				
					|  |  |  |  |                         .updateTime(new Date()) | 
			
		
	
		
			
				
					|  |  |  |  |                         .remark(null) | 
			
		
	
		
			
				
					|  |  |  |  |                         .enableRemind(false) | 
			
		
	
		
			
				
					|  |  |  |  |                         .invRemindCount(0) | 
			
		
	
		
			
				
					|  |  |  |  |                         .workPlaceQueueCode(orderEntity.getWorkPlaceQueueCode() == null ? setQueueCode(ioSplitFifoCodeEntity.getWorkPlaceCode(), orderEntity.getCreateUser()) : orderEntity.getWorkPlaceQueueCode()).build(); | 
			
		
	
		
			
				
					|  |  |  |  |                 splitFifoInv = IoSplitFifoInv.builder().id(IdUtil.getSnowflakeNextId()).workPlaceCode(ioSplitFifoCodeEntity.getWorkPlaceCode()).deptCode(ioSplitFifoCodeEntity.getDeptCode()).invCode(ioSplitFifoCodeEntity.getInvCode()).productType(ioSplitFifoCodeEntity.getProductType()).fifoSplit(ioSplitFifoCodeEntity.getFifoSplit()).relId(ioSplitFifoCodeEntity.getRelId()).inCodeCount(ioSplitFifoCodeEntity.getScanCount()).batchNo(ioSplitFifoCodeEntity.getBatchNo()).produceDate(ioSplitFifoCodeEntity.getProduceDate()).expireDate(ioSplitFifoCodeEntity.getExpireDate()).supId(ioSplitFifoCodeEntity.getSupId()).inCount(ioSplitFifoCodeEntity.getTotalCount()).outCount(0).reCount(IntUtil.value(ioSplitFifoCodeEntity.getTotalCount())).availableCount(IntUtil.value(ioSplitFifoCodeEntity.getTotalCount())).lockCount(0).createTime(new Date()).updateTime(new Date()).remark(null).enableRemind(false).invRemindCount(0).workPlaceQueueCode(orderEntity.getWorkPlaceQueueCode() == null ? setQueueCode(ioSplitFifoCodeEntity.getWorkPlaceCode(), orderEntity.getCreateUser()) : orderEntity.getWorkPlaceQueueCode()).build(); | 
			
		
	
		
			
				
					|  |  |  |  | //                if (isOnlyInv) {
 | 
			
		
	
		
			
				
					|  |  |  |  | //                    splitFifoInv.setBusType(ioSplitFifoCodeEntity.getBusType());
 | 
			
		
	
		
			
				
					|  |  |  |  | //                }
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -184,16 +161,10 @@ public class IoSplitFifoInvService extends ServiceImpl<IoSplitFifoInvMapper, IoS | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         SysWorkplaceQueue workplaceQueue = queues.get(0); | 
			
		
	
		
			
				
					|  |  |  |  |         // 使用流来过滤掉匹配的元素
 | 
			
		
	
		
			
				
					|  |  |  |  |         List<SysWorkplaceQueue> filteredQueues = queues.stream() | 
			
		
	
		
			
				
					|  |  |  |  |                 .filter(queue -> { | 
			
		
	
		
			
				
					|  |  |  |  |                     IoSplitFifoInv one = getOne( | 
			
		
	
		
			
				
					|  |  |  |  |                             new LambdaQueryWrapper<IoSplitFifoInv>() | 
			
		
	
		
			
				
					|  |  |  |  |                                     .eq(IoSplitFifoInv::getWorkPlaceQueueCode, queue.getCode()) | 
			
		
	
		
			
				
					|  |  |  |  |                     ); | 
			
		
	
		
			
				
					|  |  |  |  |         List<SysWorkplaceQueue> filteredQueues = queues.stream().filter(queue -> { | 
			
		
	
		
			
				
					|  |  |  |  |             IoSplitFifoInv one = getOne(new LambdaQueryWrapper<IoSplitFifoInv>().eq(IoSplitFifoInv::getWorkPlaceQueueCode, queue.getCode())); | 
			
		
	
		
			
				
					|  |  |  |  |             return one == null; // 只保留那些没有匹配的槽位
 | 
			
		
	
		
			
				
					|  |  |  |  |                 }) | 
			
		
	
		
			
				
					|  |  |  |  |                 .sorted((queue1, queue2) -> queue1.getCode().compareTo(queue2.getCode())) | 
			
		
	
		
			
				
					|  |  |  |  |                 .collect(Collectors.toList()); | 
			
		
	
		
			
				
					|  |  |  |  |         }).sorted((queue1, queue2) -> queue1.getCode().compareTo(queue2.getCode())).collect(Collectors.toList()); | 
			
		
	
		
			
				
					|  |  |  |  |         if (filteredQueues.size() > 0) { | 
			
		
	
		
			
				
					|  |  |  |  |             //还有剩余的槽位 可分配
 | 
			
		
	
		
			
				
					|  |  |  |  |             SysWorkplaceQueue sysWorkplaceQueue = filteredQueues.get(0); | 
			
		
	
	
		
			
				
					|  |  |  | @ -248,11 +219,36 @@ public class IoSplitFifoInvService extends ServiceImpl<IoSplitFifoInvMapper, IoS | 
			
		
	
		
			
				
					|  |  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                 } else { | 
			
		
	
		
			
				
					|  |  |  |  |                     if (ioSplitFifoCodeEntity != null) | 
			
		
	
		
			
				
					|  |  |  |  |                         splitCodeEntities.add(ioSplitFifoCodeEntity); | 
			
		
	
		
			
				
					|  |  |  |  |                     if (ioSplitFifoCodeEntity != null) splitCodeEntities.add(ioSplitFifoCodeEntity); | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         splitFifoCodeService.removeBatchByIds(splitCodeEntities); | 
			
		
	
		
			
				
					|  |  |  |  |         for (IoSplitFifoCodeEntity ioSplitFifoCodeEntity : splitCodeEntities) { | 
			
		
	
		
			
				
					|  |  |  |  |             IoSplitFifoInv splitFifoInv = findByFifoCode(ioSplitFifoCodeEntity); | 
			
		
	
		
			
				
					|  |  |  |  |             if (splitFifoInv != null) { | 
			
		
	
		
			
				
					|  |  |  |  |                 splitFifoInv.setOutCount(IntUtil.value(splitFifoInv.getOutCount()) + IntUtil.value(ioSplitFifoCodeEntity.getTotalCount())); | 
			
		
	
		
			
				
					|  |  |  |  |                 splitFifoInv.setOutCodeCount(IntUtil.value(splitFifoInv.getOutCodeCount()) + 1); | 
			
		
	
		
			
				
					|  |  |  |  |                 splitFifoInv.setReCount(IntUtil.value(splitFifoInv.getInCount()) - IntUtil.value(splitFifoInv.getOutCount())); | 
			
		
	
		
			
				
					|  |  |  |  |                 splitFifoInv.setReCodeCount(IntUtil.value(splitFifoInv.getInCodeCount()) - IntUtil.value(splitFifoInv.getOutCodeCount())); | 
			
		
	
		
			
				
					|  |  |  |  |                 splitFifoInv.setAvailableCount(IntUtil.value(splitFifoInv.getInCount()) - IntUtil.value(splitFifoInv.getOutCount()) - IntUtil.value(splitFifoInv.getLockCount())); | 
			
		
	
		
			
				
					|  |  |  |  |                 updateById(splitFifoInv); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     @Transactional(rollbackFor = Exception.class) | 
			
		
	
		
			
				
					|  |  |  |  |     public void removeByCodes(List<String> codes, Long workPlaceCode) { | 
			
		
	
		
			
				
					|  |  |  |  |         List<IoSplitFifoCodeEntity> splitCodeEntities = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |  |         for (String code : codes) { | 
			
		
	
		
			
				
					|  |  |  |  |             IoSplitFifoCodeEntity ioSplitFifoCodeEntity = splitFifoCodeService.findByCode(code, workPlaceCode); | 
			
		
	
		
			
				
					|  |  |  |  |             if (ioSplitFifoCodeEntity == null) { | 
			
		
	
		
			
				
					|  |  |  |  |                 throw new JsonException(500, "工位队列不存在!"); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |             splitCodeEntities.add(ioSplitFifoCodeEntity); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         if (CollUtil.isNotEmpty(splitCodeEntities)) { | 
			
		
	
		
			
				
					|  |  |  |  |             splitFifoCodeService.removeBatchByIds(splitCodeEntities); | 
			
		
	
		
			
				
					|  |  |  |  |             for (IoSplitFifoCodeEntity ioSplitFifoCodeEntity : splitCodeEntities) { | 
			
		
	
		
			
				
					|  |  |  |  |                 IoSplitFifoInv splitFifoInv = findByFifoCode(ioSplitFifoCodeEntity); | 
			
		
	
	
		
			
				
					|  |  |  | @ -265,17 +261,14 @@ public class IoSplitFifoInvService extends ServiceImpl<IoSplitFifoInvMapper, IoS | 
			
		
	
		
			
				
					|  |  |  |  |                     updateById(splitFifoInv); | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     public IoSplitFifoInv findByFifoCode(IoSplitFifoCodeEntity ioSplitFifoCodeEntity) { | 
			
		
	
		
			
				
					|  |  |  |  | //        Boolean isOnlyInv = sysWorkplaceDocumentService.isOnlyInv(ioSplitFifoCodeEntity.getWorkPlaceCode(), ioSplitFifoCodeEntity.getBusType());
 | 
			
		
	
		
			
				
					|  |  |  |  |         IoSplitFifoInv splitFifoInv = getOne(new LambdaQueryWrapper<IoSplitFifoInv>() | 
			
		
	
		
			
				
					|  |  |  |  |                 .eq(IoSplitFifoInv::getRelId, ioSplitFifoCodeEntity.getRelId()) | 
			
		
	
		
			
				
					|  |  |  |  |                 .eq(IoSplitFifoInv::getWorkPlaceCode, ioSplitFifoCodeEntity.getWorkPlaceCode()) | 
			
		
	
		
			
				
					|  |  |  |  |                 .eq(StrUtil.isNotEmpty(ioSplitFifoCodeEntity.getBatchNo()), IoSplitFifoInv::getBatchNo, ioSplitFifoCodeEntity.getBatchNo()) | 
			
		
	
		
			
				
					|  |  |  |  |                 .eq(ioSplitFifoCodeEntity.getSupId() != null, IoSplitFifoInv::getSupId, ioSplitFifoCodeEntity.getSupId()).last("limit 1")); | 
			
		
	
		
			
				
					|  |  |  |  |         IoSplitFifoInv splitFifoInv = getOne(new LambdaQueryWrapper<IoSplitFifoInv>().eq(IoSplitFifoInv::getRelId, ioSplitFifoCodeEntity.getRelId()).eq(IoSplitFifoInv::getWorkPlaceCode, ioSplitFifoCodeEntity.getWorkPlaceCode()).eq(StrUtil.isNotEmpty(ioSplitFifoCodeEntity.getBatchNo()), IoSplitFifoInv::getBatchNo, ioSplitFifoCodeEntity.getBatchNo()).eq(ioSplitFifoCodeEntity.getSupId() != null, IoSplitFifoInv::getSupId, ioSplitFifoCodeEntity.getSupId()).last("limit 1")); | 
			
		
	
		
			
				
					|  |  |  |  | //          .eq(StrUtil.isNotEmpty(ioSplitFifoCodeEntity.getBusType()) && isOnlyInv, IoSplitFifoInv::getBusType, ioSplitFifoCodeEntity.getBusType())
 | 
			
		
	
		
			
				
					|  |  |  |  |         return splitFifoInv; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
	
		
			
				
					|  |  |  | @ -357,12 +350,7 @@ public class IoSplitFifoInvService extends ServiceImpl<IoSplitFifoInvMapper, IoS | 
			
		
	
		
			
				
					|  |  |  |  |         Assert.notNull(ioSplitFifoInvRequest.getId(), "Id不能为空"); | 
			
		
	
		
			
				
					|  |  |  |  |         IoSplitFifoInv old = this.getById(ioSplitFifoInvRequest.getId()); | 
			
		
	
		
			
				
					|  |  |  |  |         Assert.notNull(old, "不存在该库存预警设置"); | 
			
		
	
		
			
				
					|  |  |  |  |         this.lambdaUpdate() | 
			
		
	
		
			
				
					|  |  |  |  |                 .set(ioSplitFifoInvRequest.getEnableRemind() != null, IoSplitFifoInv::getEnableRemind, ioSplitFifoInvRequest.getEnableRemind() ? 1 : 0) | 
			
		
	
		
			
				
					|  |  |  |  |                 .set(ioSplitFifoInvRequest.getInvRemindCount() != null, IoSplitFifoInv::getInvRemindCount, ioSplitFifoInvRequest.getInvRemindCount()) | 
			
		
	
		
			
				
					|  |  |  |  |                 .set(IoSplitFifoInv::getUpdateTime, new Date()) | 
			
		
	
		
			
				
					|  |  |  |  |                 .eq(IoSplitFifoInv::getId, ioSplitFifoInvRequest.getId()) | 
			
		
	
		
			
				
					|  |  |  |  |                 .update(); | 
			
		
	
		
			
				
					|  |  |  |  |         this.lambdaUpdate().set(ioSplitFifoInvRequest.getEnableRemind() != null, IoSplitFifoInv::getEnableRemind, ioSplitFifoInvRequest.getEnableRemind() ? 1 : 0).set(ioSplitFifoInvRequest.getInvRemindCount() != null, IoSplitFifoInv::getInvRemindCount, ioSplitFifoInvRequest.getInvRemindCount()).set(IoSplitFifoInv::getUpdateTime, new Date()).eq(IoSplitFifoInv::getId, ioSplitFifoInvRequest.getId()).update(); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
	
		
			
				
					|  |  |  | 
 |