|  |  |  | @ -235,16 +235,16 @@ public class AddCoodeService { | 
			
		
	
		
			
				
					|  |  |  |  |         if (StringUtils.isNotBlank(orderId)) { | 
			
		
	
		
			
				
					|  |  |  |  |             existingCodesMap = codeTempService.batchCheckCodesExistence(processedCodes, orderId); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         for (Map.Entry<String, IoCodeTempEntity> entry : existingCodesMap.entrySet()) { | 
			
		
	
		
			
				
					|  |  |  |  |             IoCodeTempEntity codeTempEntity = entry.getValue(); | 
			
		
	
		
			
				
					|  |  |  |  |             if (codeTempEntity != null) { | 
			
		
	
		
			
				
					|  |  |  |  |                 VailCodeResultResponse invalidResponse = new VailCodeResultResponse(); | 
			
		
	
		
			
				
					|  |  |  |  |                 invalidResponse.setCode(codeTempEntity.getCode()); | 
			
		
	
		
			
				
					|  |  |  |  |                 invalidResponse.setStatus(2); | 
			
		
	
		
			
				
					|  |  |  |  |                 invalidResponse.setErrMsg("重复扫码"); | 
			
		
	
		
			
				
					|  |  |  |  |                 vailCodeResultResponses.add(invalidResponse); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | //        for (Map.Entry<String, IoCodeTempEntity> entry : existingCodesMap.entrySet()) {
 | 
			
		
	
		
			
				
					|  |  |  |  | //            IoCodeTempEntity codeTempEntity = entry.getValue();
 | 
			
		
	
		
			
				
					|  |  |  |  | //            if (codeTempEntity != null) {
 | 
			
		
	
		
			
				
					|  |  |  |  | //                VailCodeResultResponse invalidResponse = new VailCodeResultResponse();
 | 
			
		
	
		
			
				
					|  |  |  |  | //                invalidResponse.setCode(codeTempEntity.getCode());
 | 
			
		
	
		
			
				
					|  |  |  |  | //                invalidResponse.setStatus(2);
 | 
			
		
	
		
			
				
					|  |  |  |  | //                invalidResponse.setErrMsg("重复扫码");
 | 
			
		
	
		
			
				
					|  |  |  |  | //                vailCodeResultResponses.add(invalidResponse);
 | 
			
		
	
		
			
				
					|  |  |  |  | //            }
 | 
			
		
	
		
			
				
					|  |  |  |  | //        }
 | 
			
		
	
		
			
				
					|  |  |  |  |         InvWarehouseEntity invWarehouseEntity = invWarehouseService.findByInvSubByCode(invCode); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         // 4. 获取组编号
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -253,12 +253,14 @@ public class AddCoodeService { | 
			
		
	
		
			
				
					|  |  |  |  |         int processors = Runtime.getRuntime().availableProcessors(); | 
			
		
	
		
			
				
					|  |  |  |  |         ExecutorService executor = Executors.newFixedThreadPool(Math.min(processors * 2, 10)); | 
			
		
	
		
			
				
					|  |  |  |  |         // 准备请求参数
 | 
			
		
	
		
			
				
					|  |  |  |  |         IoOrderEntity orderEntity; | 
			
		
	
		
			
				
					|  |  |  |  |         AddOrderRequest addOrderRequest = new AddOrderRequest(); | 
			
		
	
		
			
				
					|  |  |  |  |         synchronized (addOrderCodeRequest.getCorpOrderId().intern()) { | 
			
		
	
		
			
				
					|  |  |  |  |             BeanUtils.copyProperties(addOrderCodeRequest, addOrderRequest); | 
			
		
	
		
			
				
					|  |  |  |  |             addOrderRequest.setBillNo(orderId); | 
			
		
	
		
			
				
					|  |  |  |  |             addOrderRequest.setInvCode(invCode); | 
			
		
	
		
			
				
					|  |  |  |  |             IoOrderEntity isExit = orderService.findByBillNo(orderId); | 
			
		
	
		
			
				
					|  |  |  |  |         IoOrderEntity orderEntity = new IoOrderEntity(); | 
			
		
	
		
			
				
					|  |  |  |  |             orderEntity = new IoOrderEntity(); | 
			
		
	
		
			
				
					|  |  |  |  |             if (isExit == null) { | 
			
		
	
		
			
				
					|  |  |  |  |                 String orderNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER + StrUtil.trimToEmpty(bussinessTypeEntity.getPrefix()), "yyyyMMdd")); | 
			
		
	
		
			
				
					|  |  |  |  |                 orderEntity.setBillNo(orderNo); | 
			
		
	
	
		
			
				
					|  |  |  | @ -288,14 +290,17 @@ public class AddCoodeService { | 
			
		
	
		
			
				
					|  |  |  |  |                 orderEntity.setWorkPlaceCode(addOrderRequest.getWorkPlaceCode()); | 
			
		
	
		
			
				
					|  |  |  |  |                 orderEntity.setSplitBusType(addOrderRequest.getSplitBusType()); | 
			
		
	
		
			
				
					|  |  |  |  |                 orderEntity.setFifoSplit(addOrderRequest.getFifoSplit()); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             orderEntity.setSplitBusType(addOrderRequest.getSplitBusType()); | 
			
		
	
		
			
				
					|  |  |  |  | //                                    orderEntity.setWorkPlaceQueueCode(queueCode);
 | 
			
		
	
		
			
				
					|  |  |  |  |                 orderEntity.setProductType(2); | 
			
		
	
		
			
				
					|  |  |  |  |                 orderEntity.setFifoSplitTag(addOrderRequest.getFifoSplitTag()); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                 // 使用corpOrderId作为同步锁
 | 
			
		
	
		
			
				
					|  |  |  |  |                 synchronized (addOrderRequest.getCorpOrderId().intern()) { | 
			
		
	
		
			
				
					|  |  |  |  |                     orderService.insertOrder(orderEntity); | 
			
		
	
		
			
				
					|  |  |  |  |                     addOrderRequest.setBillNo(orderNo); | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |             } else orderEntity = isExit; | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         try { | 
			
		
	
		
			
				
					|  |  |  |  |             // 创建异步任务
 | 
			
		
	
		
			
				
					|  |  |  |  |             List<CompletableFuture<VailCodeResultResponse>> futures = udiEntityMap.entrySet().stream().map(entry -> { | 
			
		
	
	
		
			
				
					|  |  |  | @ -366,9 +371,11 @@ public class AddCoodeService { | 
			
		
	
		
			
				
					|  |  |  |  |         }); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         if (CollUtil.isNotEmpty(successCodes)) { | 
			
		
	
		
			
				
					|  |  |  |  |             synchronized (orderEntity.getBillNo().intern()) { | 
			
		
	
		
			
				
					|  |  |  |  |                 List<IoCodeTempEntity> codeTempEntities = codeTempService.selectByCodes(successCodes, orderEntity.getBillNo()); | 
			
		
	
		
			
				
					|  |  |  |  |                 genOrderDetailCodeBatch(orderEntity, codeTempEntities); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         addCodeResult.setOrderId(orderEntity.getBillNo()); | 
			
		
	
		
			
				
					|  |  |  |  |         addCodeResult.setVailCodeResultResponses(vailCodeResultResponses); | 
			
		
	
		
			
				
					|  |  |  |  |         log.info("批量处理药品追溯码完成,共{}个,耗时{}ms", codeList.size(), (System.currentTimeMillis() - startTime)); | 
			
		
	
	
		
			
				
					|  |  |  | @ -521,7 +528,7 @@ public class AddCoodeService { | 
			
		
	
		
			
				
					|  |  |  |  |                     if (byBillNo != null && !StrUtil.isBlank(byBillNo.getWorkPlaceQueueCode())) { | 
			
		
	
		
			
				
					|  |  |  |  |                         queueCode = byBillNo.getWorkPlaceQueueCode(); | 
			
		
	
		
			
				
					|  |  |  |  |                     } else { | 
			
		
	
		
			
				
					|  |  |  |  |                         // userId 没有什么用 设置为1 问题不大 避免空指针
 | 
			
		
	
		
			
				
					|  |  |  |  |                         // userId Nothing 没有什么用 设置为1 问题不大 避免空指针
 | 
			
		
	
		
			
				
					|  |  |  |  |                         queueCode = ioSplitFifoInvService.setQueueCode(addOrderRequest.getWorkPlaceCode(), 1 + "", udiRelevanceResponse1.getRelId()); | 
			
		
	
		
			
				
					|  |  |  |  |                         addCodeResult.setQueueCode(queueCode); | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
	
		
			
				
					|  |  |  | 
 |