|  |  |  | @ -199,10 +199,12 @@ public class IoSplitCodeService extends ServiceImpl<IoSplitCodeMapper, IoSplitCo | 
			
		
	
		
			
				
					|  |  |  |  |         collectOrderBizService.updateById(collectOrderBiz); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     @Resource | 
			
		
	
		
			
				
					|  |  |  |  |     IoCollectSetService collectSetService; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     @Transactional(rollbackFor = Exception.class) | 
			
		
	
		
			
				
					|  |  |  |  |     public void finishAutoTagCode(IoCollectOrder collectOrder, Boolean isAuto, String queueCode) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         IoCollectSet collectSet = collectSetService.getSet(); | 
			
		
	
		
			
				
					|  |  |  |  |         SysWorkplacePutRel sysWorkplacePutRel = workplacePutRelService.findPutWorkPlace(collectOrder.getWorkPlaceCode(), collectOrder.getBusType()); | 
			
		
	
		
			
				
					|  |  |  |  |         Long putWorkPlaceCode = null; | 
			
		
	
		
			
				
					|  |  |  |  |         if (sysWorkplacePutRel != null) putWorkPlaceCode = sysWorkplacePutRel.getWorkPlaceCode(); | 
			
		
	
	
		
			
				
					|  |  |  | @ -212,7 +214,9 @@ public class IoSplitCodeService extends ServiceImpl<IoSplitCodeMapper, IoSplitCo | 
			
		
	
		
			
				
					|  |  |  |  |         List<IoCollectOrderCodeMan> collectOrderCodeMEN = collectOrderCodeManService.listByBillNo(collectOrder.getBillNo()); | 
			
		
	
		
			
				
					|  |  |  |  |         if (CollUtil.isNotEmpty(collectOrderCodeMEN)) { | 
			
		
	
		
			
				
					|  |  |  |  |             //扫码冲突
 | 
			
		
	
		
			
				
					|  |  |  |  |             dealOrderReplace(collectOrderCodeMEN, collectOrder, putWorkPlaceCode); | 
			
		
	
		
			
				
					|  |  |  |  |             if (IntUtil.value(collectSet.getConflictScan())) { | 
			
		
	
		
			
				
					|  |  |  |  |                 dealOrderReplace(collectOrderCodeMEN, collectOrder, putWorkPlaceCode); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |             for (IoCollectOrderCodeMan collectOrderCodeMan : collectOrderCodeMEN) { | 
			
		
	
		
			
				
					|  |  |  |  |                 if (IntUtil.value(collectOrderCodeMan.getRemoveFlag())) { | 
			
		
	
		
			
				
					|  |  |  |  |                     continue; | 
			
		
	
	
		
			
				
					|  |  |  | @ -408,7 +412,7 @@ public class IoSplitCodeService extends ServiceImpl<IoSplitCodeMapper, IoSplitCo | 
			
		
	
		
			
				
					|  |  |  |  |                     if (splitFifoCodeEntity == null) { | 
			
		
	
		
			
				
					|  |  |  |  |                         throw new JsonException(500, "工位存量不足!"); | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                     IoCollectErrorLog ioCollectErrorLog = IoCollectErrorLog.builder().orderId(collectOrder.getId() + "").autoCode(splitFifoCodeEntity.getCode()).manuCode(collectOrderCodeMan.getUdiCode()).type(1)    //未上传医保替换码
 | 
			
		
	
		
			
				
					|  |  |  |  |                     IoCollectErrorLog ioCollectErrorLog = IoCollectErrorLog.builder().orderId(collectOrder.getBillNo()).autoCode(splitFifoCodeEntity.getCode()).manuCode(collectOrderCodeMan.getUdiCode()).type(1)    //未上传医保替换码
 | 
			
		
	
		
			
				
					|  |  |  |  |                             .updateTime(new Date()).build(); | 
			
		
	
		
			
				
					|  |  |  |  |                     collectErrorLogMapper.insert(ioCollectErrorLog); | 
			
		
	
		
			
				
					|  |  |  |  |                     //替换已完成单据的码
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -426,66 +430,59 @@ public class IoSplitCodeService extends ServiceImpl<IoSplitCodeMapper, IoSplitCo | 
			
		
	
		
			
				
					|  |  |  |  |      */ | 
			
		
	
		
			
				
					|  |  |  |  |     public void workReturnReplace(IoCodeEntity codeEntity, Long workPlaceCode) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         IoSplitFifoCodeEntity ioSplitFifoCodeEntity = splitFifoCodeService.findByCode(codeEntity.getCode(), workPlaceCode); | 
			
		
	
		
			
				
					|  |  |  |  |         if (ioSplitFifoCodeEntity == null) { | 
			
		
	
		
			
				
					|  |  |  |  |             //   1.判断工位库存是否足够
 | 
			
		
	
		
			
				
					|  |  |  |  |             //   2.工位库存足够的话,判断已完成单是否存在,
 | 
			
		
	
		
			
				
					|  |  |  |  |             //   3.存在的话,判断已完成单是否已上传医保
 | 
			
		
	
		
			
				
					|  |  |  |  |             //   4.已上传医保的话,调用医保删除接口
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             List<IoSplitFifoCodeEntity> splitFifoCodeEntitys = splitFifoCodeService.findByRelId(workPlaceCode, codeEntity.getRelId(), codeEntity.getBatchNo(), null); | 
			
		
	
		
			
				
					|  |  |  |  |             if (CollUtil.isEmpty(splitFifoCodeEntitys)) { | 
			
		
	
		
			
				
					|  |  |  |  |                 throw new JsonException(500, "工位库存不足!"); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  | //            ioSplitFifoCodeEntity = splitFifoCodeEntitys.get(0);
 | 
			
		
	
		
			
				
					|  |  |  |  |         //   1.判断工位库存是否足够
 | 
			
		
	
		
			
				
					|  |  |  |  |         //   2.工位库存足够的话,判断已完成单是否存在,
 | 
			
		
	
		
			
				
					|  |  |  |  |         //   3.存在的话,判断已完成单是否已上传医保
 | 
			
		
	
		
			
				
					|  |  |  |  |         //   4.已上传医保的话,调用医保删除接口
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             List<IoCollectCodeBackup> collectCodeBackups = collectCodeBackMapper.selectList(new LambdaQueryWrapper<IoCollectCodeBackup>().eq(IoCollectCodeBackup::getCode, ioSplitFifoCodeEntity.getCode())); | 
			
		
	
		
			
				
					|  |  |  |  |             if (CollUtil.isNotEmpty(collectCodeBackups)) { | 
			
		
	
		
			
				
					|  |  |  |  |                 IoCollectCodeBackup collectCodeBackup = collectCodeBackups.get(0); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                 if (IntUtil.value(collectCodeBackup.getFifoSplit()) == 3) { | 
			
		
	
		
			
				
					|  |  |  |  |                     throw new JsonException(500, collectCodeBackup.getCode() + "重复扫码,请盘查后重试!"); | 
			
		
	
		
			
				
					|  |  |  |  |         List<IoSplitFifoCodeEntity> splitFifoCodeEntitys = splitFifoCodeService.findByRelId(workPlaceCode, codeEntity.getRelId(), codeEntity.getBatchNo(), null); | 
			
		
	
		
			
				
					|  |  |  |  |         if (CollUtil.isEmpty(splitFifoCodeEntitys)) { | 
			
		
	
		
			
				
					|  |  |  |  |             throw new JsonException(500, "工位库存不足!"); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         IoSplitFifoCodeEntity ioSplitFifoCodeEntity = splitFifoCodeEntitys.get(0); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         List<IoCollectCodeBackup> collectCodeBackups = collectCodeBackMapper.selectList(new LambdaQueryWrapper<IoCollectCodeBackup>().eq(IoCollectCodeBackup::getCode, codeEntity.getCode())); | 
			
		
	
		
			
				
					|  |  |  |  |         if (CollUtil.isNotEmpty(collectCodeBackups)) { | 
			
		
	
		
			
				
					|  |  |  |  |             IoCollectCodeBackup collectCodeBackup = collectCodeBackups.get(0); | 
			
		
	
		
			
				
					|  |  |  |  | //            if (IntUtil.value(collectCodeBackup.getFifoSplit()) == 3) {
 | 
			
		
	
		
			
				
					|  |  |  |  | //                throw new JsonException(500, collectCodeBackup.getCode() + "重复扫码,请盘查后重试!");
 | 
			
		
	
		
			
				
					|  |  |  |  | //            }
 | 
			
		
	
		
			
				
					|  |  |  |  |             IoCollectOrderBackup collectOrderBackup = collectOrderBackupMapper.selectOne(new LambdaQueryWrapper<IoCollectOrderBackup>().eq(IoCollectOrderBackup::getBillNo, collectCodeBackup.getBillNo())); | 
			
		
	
		
			
				
					|  |  |  |  |             if (IntUtil.value(collectOrderBackup.getUploadStatus()) == 2) { | 
			
		
	
		
			
				
					|  |  |  |  |                 // 单据已被上传至医保 ----  取当前库存的码替换至已完成单的码,并退库,以当前的码为退库单的码,并生成替换日志
 | 
			
		
	
		
			
				
					|  |  |  |  |                 IoSplitFifoCodeEntity splitFifoCodeEntity = removeInvByCode(ioSplitFifoCodeEntity); | 
			
		
	
		
			
				
					|  |  |  |  |                 if (splitFifoCodeEntity == null) { | 
			
		
	
		
			
				
					|  |  |  |  |                     throw new JsonException(500, "工位存量不足!"); | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                 IoCollectOrderBackup collectOrderBackup = collectOrderBackupMapper.selectOne(new LambdaQueryWrapper<IoCollectOrderBackup>().eq(IoCollectOrderBackup::getBillNo, collectCodeBackup.getBillNo())); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                 if (IntUtil.value(collectOrderBackup.getUploadStatus()) == 2) { | 
			
		
	
		
			
				
					|  |  |  |  |                     // 单据已被上传至医保 ----  取当前库存的码替换至已完成单的码,并退库,以当前的码为退库单的码,并生成替换日志
 | 
			
		
	
		
			
				
					|  |  |  |  |                     IoSplitFifoCodeEntity splitFifoCodeEntity = removeInvByCode(ioSplitFifoCodeEntity); | 
			
		
	
		
			
				
					|  |  |  |  |                     if (splitFifoCodeEntity == null) { | 
			
		
	
		
			
				
					|  |  |  |  |                         throw new JsonException(500, "工位存量不足!"); | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                 IoCollectErrorLog ioCollectErrorLog = IoCollectErrorLog.builder().orderId(codeEntity.getOrderId()).autoCode(splitFifoCodeEntity.getCode()).manuCode(codeEntity.getCode()).type(4)    //退货已上传医保替换码
 | 
			
		
	
		
			
				
					|  |  |  |  |                         .updateTime(new Date()).build(); | 
			
		
	
		
			
				
					|  |  |  |  |                 collectErrorLogMapper.insert(ioCollectErrorLog); | 
			
		
	
		
			
				
					|  |  |  |  |                 collectCodeBackup.setCode(splitFifoCodeEntity.getCode()); | 
			
		
	
		
			
				
					|  |  |  |  |                 collectCodeBackMapper.updateById(collectCodeBackup); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                     IoCollectErrorLog ioCollectErrorLog = IoCollectErrorLog.builder().orderId(codeEntity.getOrderId()).autoCode(splitFifoCodeEntity.getCode()).manuCode(ioSplitFifoCodeEntity.getCode()).type(4)    //退货已上传医保替换码
 | 
			
		
	
		
			
				
					|  |  |  |  |                             .updateTime(new Date()).build(); | 
			
		
	
		
			
				
					|  |  |  |  |                     collectErrorLogMapper.insert(ioCollectErrorLog); | 
			
		
	
		
			
				
					|  |  |  |  |                     collectCodeBackup.setCode(splitFifoCodeEntity.getCode()); | 
			
		
	
		
			
				
					|  |  |  |  |                     collectCodeBackMapper.updateById(collectCodeBackup); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                     // 若已完成单已上传医保,则当前已完成单的码就与医保实际已上传的码不匹配;
 | 
			
		
	
		
			
				
					|  |  |  |  |                     // 解决方案1: 调用医保接口删除当前单据,并重新把最新的单据上传;
 | 
			
		
	
		
			
				
					|  |  |  |  |                 // 若已完成单已上传医保,则当前已完成单的码就与医保实际已上传的码不匹配;
 | 
			
		
	
		
			
				
					|  |  |  |  |                 // 解决方案1: 调用医保接口删除当前单据,并重新把最新的单据上传;
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                     // 解决方案2: 不管,保留替换记录
 | 
			
		
	
		
			
				
					|  |  |  |  |                 // 解决方案2: 不管,保留替换记录
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                 } else { | 
			
		
	
		
			
				
					|  |  |  |  |                     //单据未上传医保,上传医保失败
 | 
			
		
	
		
			
				
					|  |  |  |  |                     IoSplitFifoCodeEntity splitFifoCodeEntity = removeInvByCode(ioSplitFifoCodeEntity); | 
			
		
	
		
			
				
					|  |  |  |  |                     if (splitFifoCodeEntity == null) { | 
			
		
	
		
			
				
					|  |  |  |  |                         throw new JsonException(500, "工位存量不足!"); | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                     IoCollectErrorLog ioCollectErrorLog = IoCollectErrorLog.builder().orderId(codeEntity.getOrderId()).autoCode(splitFifoCodeEntity.getCode()).manuCode(codeEntity.getCode()).type(3)    //退货未上传医保替换码
 | 
			
		
	
		
			
				
					|  |  |  |  |                             .updateTime(new Date()).build(); | 
			
		
	
		
			
				
					|  |  |  |  |                     collectErrorLogMapper.insert(ioCollectErrorLog); | 
			
		
	
		
			
				
					|  |  |  |  |                     //替换已完成单据的码
 | 
			
		
	
		
			
				
					|  |  |  |  |                     collectCodeBackup.setCode(splitFifoCodeEntity.getCode()); | 
			
		
	
		
			
				
					|  |  |  |  |                     collectCodeBackMapper.updateById(collectCodeBackup); | 
			
		
	
		
			
				
					|  |  |  |  |             } else { | 
			
		
	
		
			
				
					|  |  |  |  |                 //单据未上传医保,上传医保失败
 | 
			
		
	
		
			
				
					|  |  |  |  |                 IoSplitFifoCodeEntity splitFifoCodeEntity = removeInvByCode(ioSplitFifoCodeEntity); | 
			
		
	
		
			
				
					|  |  |  |  |                 if (splitFifoCodeEntity == null) { | 
			
		
	
		
			
				
					|  |  |  |  |                     throw new JsonException(500, "工位存量不足!"); | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |                 IoCollectErrorLog ioCollectErrorLog = IoCollectErrorLog.builder().orderId(codeEntity.getOrderId()).autoCode(splitFifoCodeEntity.getCode()).manuCode(codeEntity.getCode()).type(3)    //退货未上传医保替换码
 | 
			
		
	
		
			
				
					|  |  |  |  |                         .updateTime(new Date()).build(); | 
			
		
	
		
			
				
					|  |  |  |  |                 collectErrorLogMapper.insert(ioCollectErrorLog); | 
			
		
	
		
			
				
					|  |  |  |  |                 //替换已完成单据的码
 | 
			
		
	
		
			
				
					|  |  |  |  |                 collectCodeBackup.setCode(splitFifoCodeEntity.getCode()); | 
			
		
	
		
			
				
					|  |  |  |  |                 collectCodeBackMapper.updateById(collectCodeBackup); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | 
 |