|  |  |  | @ -67,6 +67,7 @@ import java.io.InputStream; | 
			
		
	
		
			
				
					|  |  |  |  | import java.text.ParseException; | 
			
		
	
		
			
				
					|  |  |  |  | import java.text.SimpleDateFormat; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.*; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.concurrent.ConcurrentHashMap; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.stream.Collectors; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | @Service | 
			
		
	
	
		
			
				
					|  |  |  | @ -463,66 +464,77 @@ public class IoCollectOrderService extends ServiceImpl<IoCollectOrderMapper, IoC | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     // 添加一个用于同步的Map,存储正在处理的单号
 | 
			
		
	
		
			
				
					|  |  |  |  |     private static final Map<String, Object> BILL_LOCKS = new ConcurrentHashMap<>(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     public void importPrescribe(List<BasicSkPrescribeEntity> basicSkPrescribeEntities) { | 
			
		
	
		
			
				
					|  |  |  |  |         //下载处方
 | 
			
		
	
		
			
				
					|  |  |  |  |         if (CollUtil.isEmpty(basicSkPrescribeEntities)) basicSkPrescribeEntities = basicSkPrescribeService.list(); | 
			
		
	
		
			
				
					|  |  |  |  |         List<SysWorkplaceResponse> allWorksList = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |  |         for (BasicSkPrescribeEntity basicSkPrescribeEntity : basicSkPrescribeEntities) { | 
			
		
	
		
			
				
					|  |  |  |  |             if (collectOrderMapper.exists(new LambdaQueryWrapper<IoCollectOrder>().eq(IoCollectOrder::getBillNo, basicSkPrescribeEntity.getCode()))) { | 
			
		
	
		
			
				
					|  |  |  |  |                 continue; | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |             SysWorkplaceDocumentEntity sysWorkplaceDocumentEntity = sysWorkplaceDocumentService.findByBusType(basicSkPrescribeEntity.getAddr()); | 
			
		
	
		
			
				
					|  |  |  |  |             if (sysWorkplaceDocumentEntity == null) continue; | 
			
		
	
		
			
				
					|  |  |  |  |             //自动分配工位
 | 
			
		
	
		
			
				
					|  |  |  |  |             final Long[] defaultWorkplace = {null}; | 
			
		
	
		
			
				
					|  |  |  |  |             List<SysWorkplaceResponse> sysWorkplaces = sysWorkplaceService.getAllByBusType(basicSkPrescribeEntity.getAddr()); | 
			
		
	
		
			
				
					|  |  |  |  |             if (CollUtil.isNotEmpty(sysWorkplaces)) { | 
			
		
	
		
			
				
					|  |  |  |  |                 if (sysWorkplaces.size() == 1) { | 
			
		
	
		
			
				
					|  |  |  |  |                     defaultWorkplace[0] = sysWorkplaces.get(0).getWorkplaceId(); | 
			
		
	
		
			
				
					|  |  |  |  |                 } else { | 
			
		
	
		
			
				
					|  |  |  |  |                     List<SysWorkplaceResponse> addWorkplace = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |  |                     for (SysWorkplaceResponse sysWorkplace : sysWorkplaces) { | 
			
		
	
		
			
				
					|  |  |  |  |                         //获取是否有正在处理的工位
 | 
			
		
	
		
			
				
					|  |  |  |  |                         List<IoCollectOrder> collectOrderList1 = collectOrderMapper.selectList(new LambdaQueryWrapper<IoCollectOrder>().eq(IoCollectOrder::getWorkPlaceCode, sysWorkplace.getWorkplaceId()).in(IoCollectOrder::getTagStatus, -1, 1, 2)); | 
			
		
	
		
			
				
					|  |  |  |  |                         sysWorkplace.setOrderCount(collectOrderList1.size()); | 
			
		
	
		
			
				
					|  |  |  |  |                         if (IntUtil.value(sysWorkplace.getOrderCount()) > 0) { | 
			
		
	
		
			
				
					|  |  |  |  |                             addWorkplace.add(sysWorkplace); | 
			
		
	
		
			
				
					|  |  |  |  |             // 获取单号
 | 
			
		
	
		
			
				
					|  |  |  |  |             String billNo = basicSkPrescribeEntity.getCode(); | 
			
		
	
		
			
				
					|  |  |  |  |             // 为每个单号创建一个锁对象,如果已存在则使用现有的
 | 
			
		
	
		
			
				
					|  |  |  |  |             Object billLock = BILL_LOCKS.computeIfAbsent(billNo, k -> new Object()); | 
			
		
	
		
			
				
					|  |  |  |  |             // 使用同步块确保同一单号的处理是同步的
 | 
			
		
	
		
			
				
					|  |  |  |  |             synchronized (billLock) { | 
			
		
	
		
			
				
					|  |  |  |  |                 try { | 
			
		
	
		
			
				
					|  |  |  |  |                     if (collectOrderMapper.exists(new LambdaQueryWrapper<IoCollectOrder>().eq(IoCollectOrder::getBillNo, billNo))) { | 
			
		
	
		
			
				
					|  |  |  |  |                         continue; | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                     SysWorkplaceDocumentEntity sysWorkplaceDocumentEntity = sysWorkplaceDocumentService.findByBusType(basicSkPrescribeEntity.getAddr()); | 
			
		
	
		
			
				
					|  |  |  |  |                     if (sysWorkplaceDocumentEntity == null) continue; | 
			
		
	
		
			
				
					|  |  |  |  |                     //自动分配工位
 | 
			
		
	
		
			
				
					|  |  |  |  |                     final Long[] defaultWorkplace = {null}; | 
			
		
	
		
			
				
					|  |  |  |  |                     List<SysWorkplaceResponse> sysWorkplaces = sysWorkplaceService.getAllByBusType(basicSkPrescribeEntity.getAddr()); | 
			
		
	
		
			
				
					|  |  |  |  |                     if (CollUtil.isNotEmpty(sysWorkplaces)) { | 
			
		
	
		
			
				
					|  |  |  |  |                         if (sysWorkplaces.size() == 1) { | 
			
		
	
		
			
				
					|  |  |  |  |                             defaultWorkplace[0] = sysWorkplaces.get(0).getWorkplaceId(); | 
			
		
	
		
			
				
					|  |  |  |  |                         } else { | 
			
		
	
		
			
				
					|  |  |  |  |                             List<SysWorkplaceResponse> addWorkplace = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |  |                             for (SysWorkplaceResponse sysWorkplace : sysWorkplaces) { | 
			
		
	
		
			
				
					|  |  |  |  |                                 //获取是否有正在处理的工位
 | 
			
		
	
		
			
				
					|  |  |  |  |                                 List<IoCollectOrder> collectOrderList1 = collectOrderMapper.selectList(new LambdaQueryWrapper<IoCollectOrder>().eq(IoCollectOrder::getWorkPlaceCode, sysWorkplace.getWorkplaceId()).in(IoCollectOrder::getTagStatus, -1, 1, 2)); | 
			
		
	
		
			
				
					|  |  |  |  |                                 sysWorkplace.setOrderCount(collectOrderList1.size()); | 
			
		
	
		
			
				
					|  |  |  |  |                                 if (IntUtil.value(sysWorkplace.getOrderCount()) > 0) { | 
			
		
	
		
			
				
					|  |  |  |  |                                     addWorkplace.add(sysWorkplace); | 
			
		
	
		
			
				
					|  |  |  |  |                                 } | 
			
		
	
		
			
				
					|  |  |  |  |                             } | 
			
		
	
		
			
				
					|  |  |  |  |                             if (addWorkplace.size() > 0) { | 
			
		
	
		
			
				
					|  |  |  |  |                                 Optional<SysWorkplaceResponse> minCountObject = addWorkplace.stream().min((o1, o2) -> Integer.compare(o1.getOrderCount(), o2.getOrderCount())); | 
			
		
	
		
			
				
					|  |  |  |  |                                 minCountObject.ifPresent(sysWorkplace -> defaultWorkplace[0] = sysWorkplace.getWorkplaceId()); | 
			
		
	
		
			
				
					|  |  |  |  |                             } else { | 
			
		
	
		
			
				
					|  |  |  |  |                                 defaultWorkplace[0] = sysWorkplaces.get(0).getWorkplaceId(); | 
			
		
	
		
			
				
					|  |  |  |  |                             } | 
			
		
	
		
			
				
					|  |  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                     if (addWorkplace.size() > 0) { | 
			
		
	
		
			
				
					|  |  |  |  |                         Optional<SysWorkplaceResponse> minCountObject = addWorkplace.stream().min((o1, o2) -> Integer.compare(o1.getOrderCount(), o2.getOrderCount())); | 
			
		
	
		
			
				
					|  |  |  |  |                         minCountObject.ifPresent(sysWorkplace -> defaultWorkplace[0] = sysWorkplace.getWorkplaceId()); | 
			
		
	
		
			
				
					|  |  |  |  |                     } else { | 
			
		
	
		
			
				
					|  |  |  |  |                         defaultWorkplace[0] = sysWorkplaces.get(0).getWorkplaceId(); | 
			
		
	
		
			
				
					|  |  |  |  |                     IoCollectOrder collectOrder = IoCollectOrder.builder().billNo(billNo).busType(sysWorkplaceDocumentEntity.getDocumentTypeCode()).fromType("HIS系统").fromCorp(basicSkPrescribeEntity.getSickerCode()).workPlaceCode(defaultWorkplace[0]).billTime(MsDateUtil.localToDate(basicSkPrescribeEntity.getPrescribeDate())).createTime(new Date()).createUser(basicSkPrescribeEntity.getCreateUser()).backupOrderRemark1(basicSkPrescribeEntity.getStooutNo()).updateTime(new Date()).orderCirType(sysWorkplaceDocumentEntity.getOrderCirType()).splitStatus(0).tagStatus(0).remark(basicSkPrescribeEntity.getRemark()).build(); | 
			
		
	
		
			
				
					|  |  |  |  |                     if (collectOrder.getWorkPlaceCode() != null) { | 
			
		
	
		
			
				
					|  |  |  |  |                         collectOrder.setTagStatus(1); | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                     save(collectOrder); | 
			
		
	
		
			
				
					|  |  |  |  |                     List<BasicSkPrescribeItemEntity> basicSkPrescribeItemEntities = basicSkPrescirbeDetailService.findByPrescribeNum(billNo); | 
			
		
	
		
			
				
					|  |  |  |  |                     List<IoCollectOrderBiz> collectOrderBizs = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |  |                     for (BasicSkPrescribeItemEntity bizEntity : basicSkPrescribeItemEntities) { | 
			
		
	
		
			
				
					|  |  |  |  |                         UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByRelId(bizEntity.getRelId() + ""); | 
			
		
	
		
			
				
					|  |  |  |  |                         double doubleValue = Double.parseDouble(bizEntity.getMeasureCount()); | 
			
		
	
		
			
				
					|  |  |  |  |                         IoCollectOrderBiz collectOrderBiz = IoCollectOrderBiz.builder().orderIdFk(collectOrder.getBillNo()).relId(bizEntity.getRelId()).thrCode(bizEntity.getItemCode()).ybbm(udiRelevanceResponse.getYbbm()).payFeeCode(udiRelevanceResponse.getPayFeeCode()).cpmctymc(bizEntity.getItemName()).nameCode(udiRelevanceResponse.getNameCode()).batchNo(bizEntity.getBatchNo()).count((int) doubleValue).measureUnit(bizEntity.getMeasureUnit()).tagStatus(1).unTagCount(bizEntity.getCount()).build(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                         if (IntUtil.value(udiRelevanceResponse.getProductsType()) == 2) { | 
			
		
	
		
			
				
					|  |  |  |  |                             collectOrderBiz.setMeasureUnit(udiRelevanceResponse.getPrepnUnit()); | 
			
		
	
		
			
				
					|  |  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |  |                         collectOrderBizs.add(collectOrderBiz); | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                     if (CollUtil.isNotEmpty(collectOrderBizs)) collectOrderBizService.saveBatch(collectOrderBizs); | 
			
		
	
		
			
				
					|  |  |  |  |                     allWorksList.addAll(sysWorkplaces); | 
			
		
	
		
			
				
					|  |  |  |  |                     if (IntUtil.value(sysWorkplaceDocumentEntity.getAutoTag()) == 1 && IntUtil.value(collectOrder.getTagStatus()) == 1) { | 
			
		
	
		
			
				
					|  |  |  |  |                         splitFifoCodeService.lockInventoryByOrder(billNo, 1); | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                 } finally { | 
			
		
	
		
			
				
					|  |  |  |  |                     // 处理完成后,移除锁对象,释放内存
 | 
			
		
	
		
			
				
					|  |  |  |  |                     BILL_LOCKS.remove(billNo); | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             IoCollectOrder collectOrder = IoCollectOrder.builder().billNo(basicSkPrescribeEntity.getCode()).busType(sysWorkplaceDocumentEntity.getDocumentTypeCode()).fromType("HIS系统").fromCorp(basicSkPrescribeEntity.getSickerCode()).workPlaceCode(defaultWorkplace[0]).billTime(MsDateUtil.localToDate(basicSkPrescribeEntity.getPrescribeDate())).createTime(new Date()).createUser(basicSkPrescribeEntity.getCreateUser()).backupOrderRemark1(basicSkPrescribeEntity.getStooutNo()).updateTime(new Date()).orderCirType(sysWorkplaceDocumentEntity.getOrderCirType()).splitStatus(0).tagStatus(0).remark(basicSkPrescribeEntity.getRemark()).build(); | 
			
		
	
		
			
				
					|  |  |  |  |             if (collectOrder.getWorkPlaceCode() != null) { | 
			
		
	
		
			
				
					|  |  |  |  |                 collectOrder.setTagStatus(1); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |             save(collectOrder); | 
			
		
	
		
			
				
					|  |  |  |  |             List<BasicSkPrescribeItemEntity> basicSkPrescribeItemEntities = basicSkPrescirbeDetailService.findByPrescribeNum(basicSkPrescribeEntity.getCode()); | 
			
		
	
		
			
				
					|  |  |  |  |             List<IoCollectOrderBiz> collectOrderBizs = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |  |             for (BasicSkPrescribeItemEntity bizEntity : basicSkPrescribeItemEntities) { | 
			
		
	
		
			
				
					|  |  |  |  |                 UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByRelId(bizEntity.getRelId() + ""); | 
			
		
	
		
			
				
					|  |  |  |  |                 double doubleValue = Double.parseDouble(bizEntity.getMeasureCount()); | 
			
		
	
		
			
				
					|  |  |  |  |                 IoCollectOrderBiz collectOrderBiz = IoCollectOrderBiz.builder().orderIdFk(collectOrder.getBillNo()).relId(bizEntity.getRelId()).thrCode(bizEntity.getItemCode()).ybbm(udiRelevanceResponse.getYbbm()).payFeeCode(udiRelevanceResponse.getPayFeeCode()).cpmctymc(bizEntity.getItemName()).nameCode(udiRelevanceResponse.getNameCode()).batchNo(bizEntity.getBatchNo()).count((int) doubleValue).measureUnit(bizEntity.getMeasureUnit()).tagStatus(1).unTagCount(bizEntity.getCount()).build(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                 if (IntUtil.value(udiRelevanceResponse.getProductsType()) == 2) { | 
			
		
	
		
			
				
					|  |  |  |  |                     collectOrderBiz.setMeasureUnit(udiRelevanceResponse.getPrepnUnit()); | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |                 collectOrderBizs.add(collectOrderBiz); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |             if (CollUtil.isNotEmpty(collectOrderBizs)) collectOrderBizService.saveBatch(collectOrderBizs); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             allWorksList.addAll(sysWorkplaces); | 
			
		
	
		
			
				
					|  |  |  |  |             if (IntUtil.value(sysWorkplaceDocumentEntity.getAutoTag()) == 1 && IntUtil.value(collectOrder.getTagStatus()) == 1) { | 
			
		
	
		
			
				
					|  |  |  |  |                 splitFifoCodeService.lockInventoryByOrder(collectOrder.getBillNo(), 1); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -540,53 +552,62 @@ public class IoCollectOrderService extends ServiceImpl<IoCollectOrderMapper, IoC | 
			
		
	
		
			
				
					|  |  |  |  |     public void importPrescribe(List<IoCollectOrder> ioCollectOrderList, CollectOrderRequest collectOrderRequest) { | 
			
		
	
		
			
				
					|  |  |  |  |         String addr = collectOrderRequest.getBusType(); | 
			
		
	
		
			
				
					|  |  |  |  |         if (CollUtil.isNotEmpty(ioCollectOrderList)) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             //是否自动转成待处理单据
 | 
			
		
	
		
			
				
					|  |  |  |  |             IoCollectSet collectSet = collectSetService.getSet(); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             for (IoCollectOrder collectOrder : ioCollectOrderList) { | 
			
		
	
		
			
				
					|  |  |  |  |                 IoCollectOrderOrigin ioCollectOrderOrigin = new IoCollectOrderOrigin(); | 
			
		
	
		
			
				
					|  |  |  |  |                 if (collectOrderMapper.exists(new LambdaQueryWrapper<IoCollectOrder>().eq(IoCollectOrder::getBillNo, collectOrder.getBillNo()))) { | 
			
		
	
		
			
				
					|  |  |  |  |                     continue; | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |                 SysWorkplaceDocumentEntity sysWorkplaceDocumentEntity = sysWorkplaceDocumentService.findByBusType(addr); | 
			
		
	
		
			
				
					|  |  |  |  |                 if (sysWorkplaceDocumentEntity == null) { | 
			
		
	
		
			
				
					|  |  |  |  |                     continue; | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |                 // 获取单号
 | 
			
		
	
		
			
				
					|  |  |  |  |                 String billNo = collectOrder.getBillNo(); | 
			
		
	
		
			
				
					|  |  |  |  |                 // 为每个单号创建一个锁对象,如果已存在则使用现有的
 | 
			
		
	
		
			
				
					|  |  |  |  |                 Object billLock = BILL_LOCKS.computeIfAbsent(billNo, k -> new Object()); | 
			
		
	
		
			
				
					|  |  |  |  |                 // 使用同步块确保同一单号的处理是同步的
 | 
			
		
	
		
			
				
					|  |  |  |  |                 synchronized (billLock) { | 
			
		
	
		
			
				
					|  |  |  |  |                     try { | 
			
		
	
		
			
				
					|  |  |  |  |                         IoCollectOrderOrigin ioCollectOrderOrigin = new IoCollectOrderOrigin(); | 
			
		
	
		
			
				
					|  |  |  |  |                         if (collectOrderMapper.exists(new LambdaQueryWrapper<IoCollectOrder>().eq(IoCollectOrder::getBillNo, collectOrder.getBillNo()))) { | 
			
		
	
		
			
				
					|  |  |  |  |                             continue; | 
			
		
	
		
			
				
					|  |  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |  |                         SysWorkplaceDocumentEntity sysWorkplaceDocumentEntity = sysWorkplaceDocumentService.findByBusType(addr); | 
			
		
	
		
			
				
					|  |  |  |  |                         if (sysWorkplaceDocumentEntity == null) { | 
			
		
	
		
			
				
					|  |  |  |  |                             continue; | 
			
		
	
		
			
				
					|  |  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                 collectOrder.setOrderCirType(sysWorkplaceDocumentEntity.getOrderCirType()); | 
			
		
	
		
			
				
					|  |  |  |  |                 BeanUtils.copyProperties(collectOrder, ioCollectOrderOrigin); | 
			
		
	
		
			
				
					|  |  |  |  |                 collectOrderOriginService.remove(new LambdaUpdateWrapper<IoCollectOrderOrigin>().eq(IoCollectOrderOrigin::getBillNo, ioCollectOrderOrigin.getBillNo())); | 
			
		
	
		
			
				
					|  |  |  |  |                 collectOrderOriginService.save(ioCollectOrderOrigin); | 
			
		
	
		
			
				
					|  |  |  |  |                 List<IoCollectOrderBiz> bizList = collectOrder.getBizList(); | 
			
		
	
		
			
				
					|  |  |  |  |                 if (CollUtil.isNotEmpty(bizList)) { | 
			
		
	
		
			
				
					|  |  |  |  |                     //先清空 原来的biz
 | 
			
		
	
		
			
				
					|  |  |  |  |                     String billNo = collectOrder.getBillNo(); | 
			
		
	
		
			
				
					|  |  |  |  |                     collectOrderBizOriginService.remove(new LambdaUpdateWrapper<IoCollectOrderBizOrigin>().eq(IoCollectOrderBizOrigin::getOrderIdFk, billNo)); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                     for (IoCollectOrderBiz collectOrderBiz : bizList) { | 
			
		
	
		
			
				
					|  |  |  |  |                         if (collectOrderBiz.getRelId() != null) { | 
			
		
	
		
			
				
					|  |  |  |  |                             UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByRelId(collectOrderBiz.getRelId() + ""); | 
			
		
	
		
			
				
					|  |  |  |  |                             if (udiRelevanceResponse != null) { | 
			
		
	
		
			
				
					|  |  |  |  |                                 collectOrderBiz.setYbbm(udiRelevanceResponse.getYbbm()); | 
			
		
	
		
			
				
					|  |  |  |  |                                 collectOrderBiz.setPayFeeCode(udiRelevanceResponse.getPayFeeCode()); | 
			
		
	
		
			
				
					|  |  |  |  |                                 collectOrderBiz.setNameCode(udiRelevanceResponse.getNameCode()); | 
			
		
	
		
			
				
					|  |  |  |  |                                 if (IntUtil.value(udiRelevanceResponse.getProductsType()) == 2) { | 
			
		
	
		
			
				
					|  |  |  |  |                                     collectOrderBiz.setMeasureUnit(udiRelevanceResponse.getPrepnUnit()); | 
			
		
	
		
			
				
					|  |  |  |  |                         collectOrder.setOrderCirType(sysWorkplaceDocumentEntity.getOrderCirType()); | 
			
		
	
		
			
				
					|  |  |  |  |                         BeanUtils.copyProperties(collectOrder, ioCollectOrderOrigin); | 
			
		
	
		
			
				
					|  |  |  |  |                         collectOrderOriginService.remove(new LambdaUpdateWrapper<IoCollectOrderOrigin>().eq(IoCollectOrderOrigin::getBillNo, ioCollectOrderOrigin.getBillNo())); | 
			
		
	
		
			
				
					|  |  |  |  |                         collectOrderOriginService.save(ioCollectOrderOrigin); | 
			
		
	
		
			
				
					|  |  |  |  |                         List<IoCollectOrderBiz> bizList = collectOrder.getBizList(); | 
			
		
	
		
			
				
					|  |  |  |  |                         if (CollUtil.isNotEmpty(bizList)) { | 
			
		
	
		
			
				
					|  |  |  |  |                             //先清空 原来的biz
 | 
			
		
	
		
			
				
					|  |  |  |  |                             for (IoCollectOrderBiz collectOrderBiz : bizList) { | 
			
		
	
		
			
				
					|  |  |  |  |                                 if (collectOrderBiz.getRelId() != null) { | 
			
		
	
		
			
				
					|  |  |  |  |                                     UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByRelId(collectOrderBiz.getRelId() + ""); | 
			
		
	
		
			
				
					|  |  |  |  |                                     if (udiRelevanceResponse != null) { | 
			
		
	
		
			
				
					|  |  |  |  |                                         collectOrderBiz.setYbbm(udiRelevanceResponse.getYbbm()); | 
			
		
	
		
			
				
					|  |  |  |  |                                         collectOrderBiz.setPayFeeCode(udiRelevanceResponse.getPayFeeCode()); | 
			
		
	
		
			
				
					|  |  |  |  |                                         collectOrderBiz.setNameCode(udiRelevanceResponse.getNameCode()); | 
			
		
	
		
			
				
					|  |  |  |  |                                         if (IntUtil.value(udiRelevanceResponse.getProductsType()) == 2) { | 
			
		
	
		
			
				
					|  |  |  |  |                                             collectOrderBiz.setMeasureUnit(udiRelevanceResponse.getPrepnUnit()); | 
			
		
	
		
			
				
					|  |  |  |  |                                         } | 
			
		
	
		
			
				
					|  |  |  |  |                                     } | 
			
		
	
		
			
				
					|  |  |  |  |                                 } | 
			
		
	
		
			
				
					|  |  |  |  |                             } | 
			
		
	
		
			
				
					|  |  |  |  |                             List<IoCollectOrderBizOrigin> ioCollectOrderBizOrigins = BeanCopyUtils.copyList(bizList, IoCollectOrderBizOrigin.class); | 
			
		
	
		
			
				
					|  |  |  |  |                             collectOrderBizOriginService.remove(new LambdaUpdateWrapper<IoCollectOrderBizOrigin>().eq(IoCollectOrderBizOrigin::getOrderIdFk, billNo)); | 
			
		
	
		
			
				
					|  |  |  |  |                             collectOrderBizOriginService.saveBatch(ioCollectOrderBizOrigins); | 
			
		
	
		
			
				
					|  |  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                     List<IoCollectOrderBizOrigin> ioCollectOrderBizOrigins = BeanCopyUtils.copyList(bizList, IoCollectOrderBizOrigin.class); | 
			
		
	
		
			
				
					|  |  |  |  |                     collectOrderBizOriginService.saveBatch(ioCollectOrderBizOrigins); | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                 if (!collectOrder.getTagStatus().equals(4) && (IntUtil.value(collectSet.getAutoDealOrder()) || IntUtil.value(collectOrderRequest.getForceAllot()))) {//没出现耗材不匹配 且 开启了自动转成待处理单据
 | 
			
		
	
		
			
				
					|  |  |  |  |                     collectOrder.setTagStatus(1); | 
			
		
	
		
			
				
					|  |  |  |  |                     boolean isExit = collectOrderMapper.exists(new LambdaQueryWrapper<IoCollectOrder>().eq(IoCollectOrder::getBillNo, collectOrder.getBillNo()).eq(IoCollectOrder::getBusType, collectOrder.getBusType())); | 
			
		
	
		
			
				
					|  |  |  |  |                     if (!isExit) { | 
			
		
	
		
			
				
					|  |  |  |  |                         collectOrderMapper.insert(collectOrder); | 
			
		
	
		
			
				
					|  |  |  |  |                         collectOrderBizService.saveBatch(bizList); | 
			
		
	
		
			
				
					|  |  |  |  |                         if (!collectOrder.getTagStatus().equals(4) && (IntUtil.value(collectSet.getAutoDealOrder()) || IntUtil.value(collectOrderRequest.getForceAllot()))) {//没出现耗材不匹配 且 开启了自动转成待处理单据
 | 
			
		
	
		
			
				
					|  |  |  |  |                             collectOrder.setTagStatus(1); | 
			
		
	
		
			
				
					|  |  |  |  |                             boolean isExit = collectOrderMapper.exists(new LambdaQueryWrapper<IoCollectOrder>().eq(IoCollectOrder::getBillNo, collectOrder.getBillNo()).eq(IoCollectOrder::getBusType, collectOrder.getBusType())); | 
			
		
	
		
			
				
					|  |  |  |  |                             if (!isExit) { | 
			
		
	
		
			
				
					|  |  |  |  |                                 collectOrderMapper.insert(collectOrder); | 
			
		
	
		
			
				
					|  |  |  |  |                                 collectOrderBizService.saveBatch(bizList); | 
			
		
	
		
			
				
					|  |  |  |  |                             } | 
			
		
	
		
			
				
					|  |  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |  |                     } finally { | 
			
		
	
		
			
				
					|  |  |  |  |                         // 处理完成后,移除锁对象,释放内存
 | 
			
		
	
		
			
				
					|  |  |  |  |                         BILL_LOCKS.remove(billNo); | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
	
		
			
				
					|  |  |  | @ -820,7 +841,7 @@ public class IoCollectOrderService extends ServiceImpl<IoCollectOrderMapper, IoC | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     public Boolean decideOrder(CollectOrderRequest request, Long userId) { | 
			
		
	
		
			
				
					|  |  |  |  |         //判断当前用户是否已经绑定改工位
 | 
			
		
	
		
			
				
					|  |  |  |  |         //判断当前用户是否已经绑定该工位
 | 
			
		
	
		
			
				
					|  |  |  |  |         SysWorkplace workplace = sysWorkplaceService.getWorkplaceByUser(request, userId); | 
			
		
	
		
			
				
					|  |  |  |  |         if (workplace == null) { | 
			
		
	
		
			
				
					|  |  |  |  |             throw new JsonException(500, "当前用户未绑定该工位"); | 
			
		
	
	
		
			
				
					|  |  |  | 
 |