|  |  | @ -38,6 +38,7 @@ import com.glxp.api.util.StringUtils; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.api.util.udi.FilterUdiUtils; |  |  |  | import com.glxp.api.util.udi.FilterUdiUtils; | 
			
		
	
		
		
			
				
					
					|  |  |  | import lombok.extern.slf4j.Slf4j; |  |  |  | import lombok.extern.slf4j.Slf4j; | 
			
		
	
		
		
			
				
					
					|  |  |  | import org.springframework.beans.BeanUtils; |  |  |  | import org.springframework.beans.BeanUtils; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import org.springframework.scheduling.annotation.Async; | 
			
		
	
		
		
			
				
					
					|  |  |  | import org.springframework.stereotype.Service; |  |  |  | import org.springframework.stereotype.Service; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |  |  |  | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.api.dao.collect.RelCodeBatchMapper; |  |  |  | import com.glxp.api.dao.collect.RelCodeBatchMapper; | 
			
		
	
	
		
		
			
				
					|  |  | @ -101,7 +102,6 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     /** |  |  |  |     /** | 
			
		
	
		
		
			
				
					
					|  |  |  |      * 手动添加 |  |  |  |      * 手动添加 | 
			
		
	
		
		
			
				
					
					|  |  |  |      * |  |  |  |      * | 
			
		
	
	
		
		
			
				
					|  |  | @ -280,6 +280,7 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode | 
			
		
	
		
		
			
				
					
					|  |  |  |     SpsDirectClient spsDirectClient; |  |  |  |     SpsDirectClient spsDirectClient; | 
			
		
	
		
		
			
				
					
					|  |  |  |     @Resource |  |  |  |     @Resource | 
			
		
	
		
		
			
				
					
					|  |  |  |     private SpGetHttpClient spGetHttpClient; |  |  |  |     private SpGetHttpClient spGetHttpClient; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /** |  |  |  |     /** | 
			
		
	
		
		
			
				
					
					|  |  |  |      * 层级编码查询spms同步库 |  |  |  |      * 层级编码查询spms同步库 | 
			
		
	
		
		
			
				
					
					|  |  |  |      */ |  |  |  |      */ | 
			
		
	
	
		
		
			
				
					|  |  | @ -299,93 +300,96 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode | 
			
		
	
		
		
			
				
					
					|  |  |  |     UdiProductService udiProductService; |  |  |  |     UdiProductService udiProductService; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     public void threadUpdateIoCodeTempEntity(String parentCode) { |  |  |  |     public void threadUpdateIoCodeTempEntity(String parentCode) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         List<IoCodeTempEntity> ioCodeTempEntities = ioCodeTempDao.selectList(new LambdaQueryWrapper<IoCodeTempEntity>().eq(IoCodeTempEntity::getCode, parentCode)); |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         if (CollUtil.isNotEmpty(ioCodeTempEntities)) { |  |  |  |         ThreadUtil.execAsync(() -> { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             IoCodeTempEntity codeTempEntity = ioCodeTempEntities.get(0); |  |  |  |             List<IoCodeTempEntity> ioCodeTempEntities = ioCodeTempDao.selectList(new LambdaQueryWrapper<IoCodeTempEntity>().eq(IoCodeTempEntity::getCode, parentCode)); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             //1、排除掉层级是1的
 |  |  |  |             if (CollUtil.isNotEmpty(ioCodeTempEntities)) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             UdiEntity udi = FilterUdiUtils.getUdi(parentCode); |  |  |  |                 IoCodeTempEntity codeTempEntity = ioCodeTempEntities.get(0); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             if (udi == null) |  |  |  |                 //1、排除掉层级是1的
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 return; |  |  |  |                 UdiEntity udi = FilterUdiUtils.getUdi(parentCode); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             String udi1 = udi.getUdi(); |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             UdiProductEntity udiProductEntity = udiProductService.findByNameCode(udi1); |  |  |  |                 if (udi == null) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             if (udiProductEntity == null) |  |  |  |                     return; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 return; |  |  |  |                 String udi1 = udi.getUdi(); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             List<RelCodeBatch> navList = this.list(new LambdaQueryWrapper<RelCodeBatch>() |  |  |  |                 UdiProductEntity udiProductEntity = udiProductService.findByNameCode(udi1); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     .eq(RelCodeBatch::getParentCode, parentCode)); |  |  |  |                 if (udiProductEntity == null) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |                     return; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             //
 |  |  |  |                 List<RelCodeBatch> navList = this.list(new LambdaQueryWrapper<RelCodeBatch>() | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             if(navList == null || navList.size() == 0 ){ |  |  |  |                         .eq(RelCodeBatch::getParentCode, parentCode)); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 CompanyEntity companyEntity = companyService.findCompany(); |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 BasicCorpEntity basicCorpEntity  = basicCorpService.selectByErpId(codeTempEntity.getSupId()); |  |  |  |                 //
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 AlihealthRelCodeInsertReqeust alihealthRelCodeInsertReqeust = new AlihealthRelCodeInsertReqeust(); |  |  |  |                 if (navList == null || navList.size() == 0) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 alihealthRelCodeInsertReqeust.setName(basicCorpEntity.getName()); |  |  |  |                     CompanyEntity companyEntity = companyService.findCompany(); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 alihealthRelCodeInsertReqeust.setAppKey(companyEntity.getAppId()); |  |  |  |                     BasicCorpEntity basicCorpEntity = basicCorpService.selectByErpId(codeTempEntity.getSupId()); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 alihealthRelCodeInsertReqeust.setAppSecret(companyEntity.getAppSecret()); |  |  |  |                     AlihealthRelCodeInsertReqeust alihealthRelCodeInsertReqeust = new AlihealthRelCodeInsertReqeust(); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 alihealthRelCodeInsertReqeust.setCustomerId(codeTempEntity.getSupId()); |  |  |  |                     alihealthRelCodeInsertReqeust.setName(basicCorpEntity.getName()); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 alihealthRelCodeInsertReqeust.setCode(parentCode); |  |  |  |                     alihealthRelCodeInsertReqeust.setAppKey(companyEntity.getAppId()); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 alihealthRelCodeInsertReqeust.setRefEntId(companyEntity.getRefEntId()); |  |  |  |                     alihealthRelCodeInsertReqeust.setAppSecret(companyEntity.getAppSecret()); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |                     alihealthRelCodeInsertReqeust.setCustomerId(codeTempEntity.getSupId()); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 BaseResponse baseResponse = spGetHttpClient.relCodeInsert(alihealthRelCodeInsertReqeust); |  |  |  |                     alihealthRelCodeInsertReqeust.setCode(parentCode); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 if(baseResponse.getCode() == 20000){ |  |  |  |                     alihealthRelCodeInsertReqeust.setRefEntId(companyEntity.getRefEntId()); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     System.out.println("sda"+baseResponse.getData().toString()); |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     AlihealthKytSinglerelationResponse alihealthKytSinglerelationResponse = JSONUtil.toBean(baseResponse.getData().toString(),AlihealthKytSinglerelationResponse.class); |  |  |  |                     BaseResponse baseResponse = spGetHttpClient.relCodeInsert(alihealthRelCodeInsertReqeust); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     // 返回的码关联关系进行插入
 |  |  |  |                     if (baseResponse.getCode() == 20000) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     RelCodeBatch relCodeBatch =  alihealthKytSinglerelationResponse.disposeRelCodeBatch( alihealthRelCodeInsertReqeust.getCustomerId()); |  |  |  |                         System.out.println("sda" + baseResponse.getData().toString()); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     RelCodeBatch relCodeBatchOne  = relCodeBatchService.getOne(new QueryWrapper<RelCodeBatch>().eq("productCode",relCodeBatch.getProductCode()) |  |  |  |                         AlihealthKytSinglerelationResponse alihealthKytSinglerelationResponse = JSONUtil.toBean(baseResponse.getData().toString(), AlihealthKytSinglerelationResponse.class); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                             .last("limit 1") |  |  |  |                         // 返回的码关联关系进行插入
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     ); |  |  |  |                         RelCodeBatch relCodeBatch = alihealthKytSinglerelationResponse.disposeRelCodeBatch(alihealthRelCodeInsertReqeust.getCustomerId()); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     if(Objects.isNull(relCodeBatchOne)){ |  |  |  |                         RelCodeBatch relCodeBatchOne = relCodeBatchService.getOne(new QueryWrapper<RelCodeBatch>().eq("productCode", relCodeBatch.getProductCode()) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                         relCodeBatch.setCreateUser(alihealthRelCodeInsertReqeust.getCustomerId()); |  |  |  |                                 .last("limit 1") | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                         relCodeBatch.setCreateTime(new Date()); |  |  |  |                         ); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                         relCodeBatchService.save(relCodeBatch); |  |  |  |                         if (Objects.isNull(relCodeBatchOne)) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |                             relCodeBatch.setCreateUser(alihealthRelCodeInsertReqeust.getCustomerId()); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     }else { |  |  |  |                             relCodeBatch.setCreateTime(new Date()); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                         relCodeBatchService.update(relCodeBatch,new QueryWrapper<RelCodeBatch>().eq("productCode",relCodeBatch.getProductCode())); |  |  |  |                             relCodeBatchService.save(relCodeBatch); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     } |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     Integer  id = Objects.isNull(relCodeBatch.getId()) ? relCodeBatchOne.getId() :relCodeBatch.getId(); |  |  |  |                         } else { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     // 进行查询
 |  |  |  |                             relCodeBatchService.update(relCodeBatch, new QueryWrapper<RelCodeBatch>().eq("productCode", relCodeBatch.getProductCode())); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     List<RelCodeDetail> list  = alihealthKytSinglerelationResponse.disposeRelRodeDetailList(id); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                     if(list!=null && list.size()>0){ |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                         List curCodeList = new ArrayList(); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                         for (RelCodeDetail relCodeDetail : list) { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                             curCodeList.add(relCodeDetail.getCurCode()); |  |  |  |  | 
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                         } |  |  |  |                         } | 
			
		
	
		
		
			
				
					
					|  |  |  |                         relCodeDetailService.remove(new QueryWrapper<RelCodeDetail>().in("curCode",curCodeList)); |  |  |  |                         Integer id = Objects.isNull(relCodeBatch.getId()) ? relCodeBatchOne.getId() : relCodeBatch.getId(); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         // 进行查询
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         List<RelCodeDetail> list = alihealthKytSinglerelationResponse.disposeRelRodeDetailList(id); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         if (list != null && list.size() > 0) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             List curCodeList = new ArrayList(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             for (RelCodeDetail relCodeDetail : list) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 curCodeList.add(relCodeDetail.getCurCode()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             relCodeDetailService.remove(new QueryWrapper<RelCodeDetail>().in("curCode", curCodeList)); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                         relCodeDetailService.saveBatch(list); |  |  |  |                             relCodeDetailService.saveBatch(list); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     } |  |  |  |                         } | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                     // 插入成功就重新查询一下
 |  |  |  |                         // 插入成功就重新查询一下
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     navList = this.list(new LambdaQueryWrapper<RelCodeBatch>() |  |  |  |                         navList = this.list(new LambdaQueryWrapper<RelCodeBatch>() | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                             .eq(RelCodeBatch::getCurCode, parentCode)); |  |  |  |                                 .eq(RelCodeBatch::getCurCode, parentCode)); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                     if(StringUtils.isEmpty(companyEntity.getRefEntId())){ |  |  |  |                         if (StringUtils.isEmpty(companyEntity.getRefEntId())) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                         companyEntity.setRefEntId(alihealthKytSinglerelationResponse.getRefEntId()); |  |  |  |                             companyEntity.setRefEntId(alihealthKytSinglerelationResponse.getRefEntId()); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                         companyService.modifyCompany(companyEntity); |  |  |  |                             companyService.modifyCompany(companyEntity); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     } |  |  |  |                         } | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 }else { |  |  |  |                     } else { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     if(StringUtils.isNotEmpty(companyEntity.getRefEntId())){ |  |  |  |                         if (StringUtils.isNotEmpty(companyEntity.getRefEntId())) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                         companyEntity.setRefEntId(null); |  |  |  |                             companyEntity.setRefEntId(null); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                         companyService.modifyCompany(companyEntity); |  |  |  |                             companyService.modifyCompany(companyEntity); | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         log.error(baseResponse.getMessage()); | 
			
		
	
		
		
			
				
					
					|  |  |  |                     } |  |  |  |                     } | 
			
		
	
		
		
			
				
					
					|  |  |  |                     log.error(baseResponse.getMessage()); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 } |  |  |  |                 } | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |                 if ((udiProductEntity != null && "1".equals(udiProductEntity.getPackLevel())) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             if ((udiProductEntity != null && "1".equals(udiProductEntity.getPackLevel())) |  |  |  |                         || (CollUtil.isNotEmpty(navList)) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     || (CollUtil.isNotEmpty(navList)) |  |  |  |                 ) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             ) { |  |  |  |                     //打上匹配到了药品关联关系的标记
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 //打上匹配到了药品关联关系的标记
 |  |  |  |                     for (int i = 0; i < ioCodeTempEntities.size(); i++) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 for (int i = 0; i < ioCodeTempEntities.size(); i++) { |  |  |  |                         IoCodeTempEntity ioCodeTempEntity = ioCodeTempEntities.get(i); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     IoCodeTempEntity ioCodeTempEntity = ioCodeTempEntities.get(i); |  |  |  |                         ioCodeTempEntity.setDrugLink(1); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     ioCodeTempEntity.setDrugLink(1); |  |  |  |                         ioCodeTempDao.updateById(ioCodeTempEntity); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     ioCodeTempDao.updateById(ioCodeTempEntity); |  |  |  |                     } | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 } |  |  |  |                 } else { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             } else { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 ThreadUtil.execAsync(() -> { |  |  |  |  | 
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                     asynThreadUpdateIoCodeTempEntity(parentCode, ioCodeTempEntities); |  |  |  |                     asynThreadUpdateIoCodeTempEntity(parentCode, ioCodeTempEntities); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 }); |  |  |  |                 } | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         }); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -411,7 +415,7 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     @Transactional(rollbackFor = Exception.class) |  |  |  |     @Transactional(rollbackFor = Exception.class) | 
			
		
	
		
		
			
				
					
					|  |  |  |     void ProcessData(Element rootElement){ |  |  |  |     void ProcessData(Element rootElement) { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         //截取Relation
 |  |  |  |         //截取Relation
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         NodeList relation = rootElement.getElementsByTagName("Relation"); |  |  |  |         NodeList relation = rootElement.getElementsByTagName("Relation"); | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (relation == null) { |  |  |  |         if (relation == null) { | 
			
		
	
	
		
		
			
				
					|  |  | @ -484,19 +488,19 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode | 
			
		
	
		
		
			
				
					
					|  |  |  |                         relCodeDetail.setFlag(Integer.valueOf(flag)); |  |  |  |                         relCodeDetail.setFlag(Integer.valueOf(flag)); | 
			
		
	
		
		
			
				
					
					|  |  |  |                         //判断是否已存在
 |  |  |  |                         //判断是否已存在
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                         List<RelCodeDetail> relCodeDetails = codeMap.get(StrUtil.isNotBlank(parentCode) ? parentCode : "0"); |  |  |  |                         List<RelCodeDetail> relCodeDetails = codeMap.get(StrUtil.isNotBlank(parentCode) ? parentCode : "0"); | 
			
		
	
		
		
			
				
					
					|  |  |  |                         if (relCodeDetails == null){ |  |  |  |                         if (relCodeDetails == null) { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                             List<RelCodeDetail> newRelCodeDetails = new ArrayList<>(); |  |  |  |                             List<RelCodeDetail> newRelCodeDetails = new ArrayList<>(); | 
			
		
	
		
		
			
				
					
					|  |  |  |                             newRelCodeDetails.add(relCodeDetail); |  |  |  |                             newRelCodeDetails.add(relCodeDetail); | 
			
		
	
		
		
			
				
					
					|  |  |  |                             codeMap.put(StrUtil.isNotBlank(parentCode) ? parentCode : "0",newRelCodeDetails); |  |  |  |                             codeMap.put(StrUtil.isNotBlank(parentCode) ? parentCode : "0", newRelCodeDetails); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                         }else { |  |  |  |                         } else { | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                             relCodeDetails.add(relCodeDetail); |  |  |  |                             relCodeDetails.add(relCodeDetail); | 
			
		
	
		
		
			
				
					
					|  |  |  |                             codeMap.put(StrUtil.isNotBlank(parentCode) ? parentCode : "0",relCodeDetails); |  |  |  |                             codeMap.put(StrUtil.isNotBlank(parentCode) ? parentCode : "0", relCodeDetails); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                         } |  |  |  |                         } | 
			
		
	
		
		
			
				
					
					|  |  |  |                     } |  |  |  |                     } | 
			
		
	
		
		
			
				
					
					|  |  |  |                 } |  |  |  |                 } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                 //开始处理codeMap
 |  |  |  |                 //开始处理codeMap
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                 if (!codeMap.isEmpty()){ |  |  |  |                 if (!codeMap.isEmpty()) { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                     Map<String, Integer> batchIdFkMap = new HashMap<>(); |  |  |  |                     Map<String, Integer> batchIdFkMap = new HashMap<>(); | 
			
		
	
		
		
			
				
					
					|  |  |  |                     List<RelCodeDetail> addRelCodeDetail = new ArrayList<>(); |  |  |  |                     List<RelCodeDetail> addRelCodeDetail = new ArrayList<>(); | 
			
		
	
		
		
			
				
					
					|  |  |  |                     RelCodeBatch updateDrugLevelRelCodeBatch = null; |  |  |  |                     RelCodeBatch updateDrugLevelRelCodeBatch = null; | 
			
		
	
	
		
		
			
				
					|  |  | @ -506,9 +510,9 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode | 
			
		
	
		
		
			
				
					
					|  |  |  |                         List<RelCodeDetail> list = entry.getValue(); |  |  |  |                         List<RelCodeDetail> list = entry.getValue(); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                         RelCodeBatch addRelCodeBatch = new RelCodeBatch(); |  |  |  |                         RelCodeBatch addRelCodeBatch = new RelCodeBatch(); | 
			
		
	
		
		
			
				
					
					|  |  |  |                         BeanUtils.copyProperties(relCodeBatch,addRelCodeBatch); |  |  |  |                         BeanUtils.copyProperties(relCodeBatch, addRelCodeBatch); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                         addRelCodeBatch.setParentCode(key); |  |  |  |                         addRelCodeBatch.setParentCode(key); | 
			
		
	
		
		
			
				
					
					|  |  |  |                         if ("0".equals(key)){ |  |  |  |                         if ("0".equals(key)) { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                             RelCodeDetail relCodeDetail = list.get(0); |  |  |  |                             RelCodeDetail relCodeDetail = list.get(0); | 
			
		
	
		
		
			
				
					
					|  |  |  |                             String curCode = relCodeDetail.getCurCode(); |  |  |  |                             String curCode = relCodeDetail.getCurCode(); | 
			
		
	
		
		
			
				
					
					|  |  |  |                             String diStr = FilterUdiUtils.getUdi(curCode).getUdi(); |  |  |  |                             String diStr = FilterUdiUtils.getUdi(curCode).getUdi(); | 
			
		
	
	
		
		
			
				
					|  |  | @ -517,14 +521,14 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode | 
			
		
	
		
		
			
				
					
					|  |  |  |                             addRelCodeBatch.setThreeLevelCount(1); |  |  |  |                             addRelCodeBatch.setThreeLevelCount(1); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                             this.save(addRelCodeBatch); |  |  |  |                             this.save(addRelCodeBatch); | 
			
		
	
		
		
			
				
					
					|  |  |  |                             batchIdFkMap.put(curCode,addRelCodeBatch.getId()); |  |  |  |                             batchIdFkMap.put(curCode, addRelCodeBatch.getId()); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                             updateDrugLevelRelCodeBatch = addRelCodeBatch; |  |  |  |                             updateDrugLevelRelCodeBatch = addRelCodeBatch; | 
			
		
	
		
		
			
				
					
					|  |  |  |                         }else { |  |  |  |                         } else { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                             for (RelCodeDetail detail : list) { |  |  |  |                             for (RelCodeDetail detail : list) { | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 Integer packLayer = detail.getPackLayer(); |  |  |  |                                 Integer packLayer = detail.getPackLayer(); | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 if (packLayer == 2){ |  |  |  |                                 if (packLayer == 2) { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                                     RelCodeBatch addRelCodeBatch2 = new RelCodeBatch(); |  |  |  |                                     RelCodeBatch addRelCodeBatch2 = new RelCodeBatch(); | 
			
		
	
		
		
			
				
					
					|  |  |  |                                     BeanUtils.copyProperties(relCodeBatch,addRelCodeBatch2); |  |  |  |                                     BeanUtils.copyProperties(relCodeBatch, addRelCodeBatch2); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                                     addRelCodeBatch2.setParentCode(key); |  |  |  |                                     addRelCodeBatch2.setParentCode(key); | 
			
		
	
		
		
			
				
					
					|  |  |  |                                     String curCode = detail.getCurCode(); |  |  |  |                                     String curCode = detail.getCurCode(); | 
			
		
	
		
		
			
				
					
					|  |  |  |                                     String diStr = FilterUdiUtils.getUdi(curCode).getUdi(); |  |  |  |                                     String diStr = FilterUdiUtils.getUdi(curCode).getUdi(); | 
			
		
	
	
		
		
			
				
					|  |  | @ -534,12 +538,12 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode | 
			
		
	
		
		
			
				
					
					|  |  |  |                                     addRelCodeBatch2.setTwoLevelCount(1); |  |  |  |                                     addRelCodeBatch2.setTwoLevelCount(1); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                                     this.save(addRelCodeBatch2); |  |  |  |                                     this.save(addRelCodeBatch2); | 
			
		
	
		
		
			
				
					
					|  |  |  |                                     batchIdFkMap.put(curCode,addRelCodeBatch2.getId()); |  |  |  |                                     batchIdFkMap.put(curCode, addRelCodeBatch2.getId()); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                                     //同时也是上面的明细
 |  |  |  |                                     //同时也是上面的明细
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                                     detail.setBatchIdFk(batchIdFkMap.get(key)); |  |  |  |                                     detail.setBatchIdFk(batchIdFkMap.get(key)); | 
			
		
	
		
		
			
				
					
					|  |  |  |                                     addRelCodeDetail.add(detail); |  |  |  |                                     addRelCodeDetail.add(detail); | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 }else if (packLayer == 1){ |  |  |  |                                 } else if (packLayer == 1) { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                                     //直接明细
 |  |  |  |                                     //直接明细
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                                     detail.setBatchIdFk(batchIdFkMap.get(key)); |  |  |  |                                     detail.setBatchIdFk(batchIdFkMap.get(key)); | 
			
		
	
		
		
			
				
					
					|  |  |  |                                     addRelCodeDetail.add(detail); |  |  |  |                                     addRelCodeDetail.add(detail); | 
			
		
	
	
		
		
			
				
					|  |  | @ -547,7 +551,7 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode | 
			
		
	
		
		
			
				
					
					|  |  |  |                             } |  |  |  |                             } | 
			
		
	
		
		
			
				
					
					|  |  |  |                         } |  |  |  |                         } | 
			
		
	
		
		
			
				
					
					|  |  |  |                     } |  |  |  |                     } | 
			
		
	
		
		
			
				
					
					|  |  |  |                     if (CollUtil.isNotEmpty(addRelCodeDetail)){ |  |  |  |                     if (CollUtil.isNotEmpty(addRelCodeDetail)) { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                         relCodeDetailService.saveBatch(addRelCodeDetail); |  |  |  |                         relCodeDetailService.saveBatch(addRelCodeDetail); | 
			
		
	
		
		
			
				
					
					|  |  |  |                         //更新层级关系的数量
 |  |  |  |                         //更新层级关系的数量
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                         this.updateDrugLevelCount(updateDrugLevelRelCodeBatch); |  |  |  |                         this.updateDrugLevelCount(updateDrugLevelRelCodeBatch); | 
			
		
	
	
		
		
			
				
					|  |  | @ -561,15 +565,16 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode | 
			
		
	
		
		
			
				
					
					|  |  |  |     /** |  |  |  |     /** | 
			
		
	
		
		
			
				
					
					|  |  |  |      * 通过curCode 获取明细的数量 如果是 三级 需要先去计算二级单下的一级数量 在算出二级数量 |  |  |  |      * 通过curCode 获取明细的数量 如果是 三级 需要先去计算二级单下的一级数量 在算出二级数量 | 
			
		
	
		
		
			
				
					
					|  |  |  |      * 如果是 二级 直接计算出 一级 |  |  |  |      * 如果是 二级 直接计算出 一级 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      * | 
			
		
	
		
		
			
				
					
					|  |  |  |      * @param item |  |  |  |      * @param item | 
			
		
	
		
		
			
				
					
					|  |  |  |      */ |  |  |  |      */ | 
			
		
	
		
		
			
				
					
					|  |  |  |     private void updateDrugLevelCount(RelCodeBatch item) { |  |  |  |     private void updateDrugLevelCount(RelCodeBatch item) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         String curCode = item.getCurCode(); |  |  |  |         String curCode = item.getCurCode(); | 
			
		
	
		
		
			
				
					
					|  |  |  |         List<RelCodeDetail> list = relCodeDetailService.list(new LambdaQueryWrapper<RelCodeDetail>().eq(RelCodeDetail::getParentCode, curCode)); |  |  |  |         List<RelCodeDetail> list = relCodeDetailService.list(new LambdaQueryWrapper<RelCodeDetail>().eq(RelCodeDetail::getParentCode, curCode)); | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (CollUtil.isNotEmpty(list)){ |  |  |  |         if (CollUtil.isNotEmpty(list)) { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             RelCodeDetail relCodeDetail = list.get(0); |  |  |  |             RelCodeDetail relCodeDetail = list.get(0); | 
			
		
	
		
		
			
				
					
					|  |  |  |             Integer packLayer = relCodeDetail.getPackLayer(); |  |  |  |             Integer packLayer = relCodeDetail.getPackLayer(); | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (packLayer == 2){ |  |  |  |             if (packLayer == 2) { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                 item.setThreeLevelCount(1); |  |  |  |                 item.setThreeLevelCount(1); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 item.setTwoLevelCount(list.size()); |  |  |  |                 item.setTwoLevelCount(list.size()); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -580,12 +585,12 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                 //更新下 二级单
 |  |  |  |                 //更新下 二级单
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                 List<RelCodeBatch> twoRelCodeBatchs = this.list(new LambdaQueryWrapper<RelCodeBatch>().in(RelCodeBatch::getCurCode, twoCurCodes)); |  |  |  |                 List<RelCodeBatch> twoRelCodeBatchs = this.list(new LambdaQueryWrapper<RelCodeBatch>().in(RelCodeBatch::getCurCode, twoCurCodes)); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 if (CollUtil.isNotEmpty(twoRelCodeBatchs)){ |  |  |  |                 if (CollUtil.isNotEmpty(twoRelCodeBatchs)) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     twoRelCodeBatchs.forEach( t -> { |  |  |  |                     twoRelCodeBatchs.forEach(t -> { | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                         this.updateDrugLevelCount(t); |  |  |  |                         this.updateDrugLevelCount(t); | 
			
		
	
		
		
			
				
					
					|  |  |  |                     }); |  |  |  |                     }); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 } |  |  |  |                 } | 
			
		
	
		
		
			
				
					
					|  |  |  |             }else if (packLayer == 1){ |  |  |  |             } else if (packLayer == 1) { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                 item.setThreeLevelCount(0); |  |  |  |                 item.setThreeLevelCount(0); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 item.setTwoLevelCount(1); |  |  |  |                 item.setTwoLevelCount(1); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 item.setOneLevelCount(list.size()); |  |  |  |                 item.setOneLevelCount(list.size()); | 
			
		
	
	
		
		
			
				
					|  |  | 
 |