|  |  |  | @ -19,6 +19,7 @@ import com.glxp.api.req.basic.AddProductRequest; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.api.req.basic.FilterUdiRelRequest; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.api.req.basic.UdiInfoRequest; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.api.req.basic.UpdateLevelDrugRequest; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.api.res.DiLevelResponse; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.api.res.basic.UdiRelevanceResponse; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.api.service.auth.CustomerService; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.api.util.*; | 
			
		
	
	
		
			
				
					|  |  |  | @ -129,6 +130,41 @@ public class UdiProductService extends ServiceImpl<UdiProductDao, UdiProductEnti | 
			
		
	
		
			
				
					|  |  |  |  |         return udiProductDao.findByUuids(uuid); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     public List<DiLevelResponse> findLevelByRelId(Long relId) { | 
			
		
	
		
			
				
					|  |  |  |  |         UdiRelevanceEntity udiRelevanceEntity = udiRelevanceDao.selectById(relId); | 
			
		
	
		
			
				
					|  |  |  |  |         List<UdiProductEntity> udiInfoEntities = findByUuids(udiRelevanceEntity.getUuid()); | 
			
		
	
		
			
				
					|  |  |  |  |         List<DiLevelResponse> diLevelResponses = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |  |         if (CollUtil.isNotEmpty(udiInfoEntities)) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             Map<String, List<UdiProductEntity>> groupedByLevel = udiInfoEntities.stream() | 
			
		
	
		
			
				
					|  |  |  |  |                     .collect(Collectors.groupingBy(UdiProductEntity::getPackLevel)); | 
			
		
	
		
			
				
					|  |  |  |  |             groupedByLevel.forEach((level, entities) -> { | 
			
		
	
		
			
				
					|  |  |  |  |                 UdiProductEntity udiProductEntity = entities.get(0); | 
			
		
	
		
			
				
					|  |  |  |  |                 DiLevelResponse diLevelResponse = new DiLevelResponse(); | 
			
		
	
		
			
				
					|  |  |  |  |                 diLevelResponse.setLevelUnit(udiProductEntity.getLevelUnit()); | 
			
		
	
		
			
				
					|  |  |  |  |                 diLevelResponse.setPackLevel(IntUtil.value(udiProductEntity.getPackLevel())); | 
			
		
	
		
			
				
					|  |  |  |  |                 diLevelResponse.setDiType(udiProductEntity.getDiType()); | 
			
		
	
		
			
				
					|  |  |  |  |                 diLevelResponse.setXjdw(udiProductEntity.getXjdw()); | 
			
		
	
		
			
				
					|  |  |  |  |                 diLevelResponse.setPackUnit(udiProductEntity.getPackUnit()); | 
			
		
	
		
			
				
					|  |  |  |  |                 diLevelResponse.setBhxjsl(udiProductEntity.getBhxjsl()); | 
			
		
	
		
			
				
					|  |  |  |  |                 diLevelResponses.add(diLevelResponse); | 
			
		
	
		
			
				
					|  |  |  |  |                 if (udiProductEntity.getProductsType() == 2 && IntUtil.value(udiProductEntity.getPackLevel()) == 1) { | 
			
		
	
		
			
				
					|  |  |  |  |                     DiLevelResponse diLevelResponse1 = new DiLevelResponse(); | 
			
		
	
		
			
				
					|  |  |  |  |                     diLevelResponse1.setLevelUnit(udiProductEntity.getXjdw()); | 
			
		
	
		
			
				
					|  |  |  |  |                     diLevelResponse1.setPackLevel(0); | 
			
		
	
		
			
				
					|  |  |  |  |                     diLevelResponse1.setDiType(ConstantStatus.DITYPE_SYDY); | 
			
		
	
		
			
				
					|  |  |  |  |                     diLevelResponse1.setXjdw(udiProductEntity.getXjdw()); | 
			
		
	
		
			
				
					|  |  |  |  |                     diLevelResponse1.setPackUnit(udiProductEntity.getXjdw()); | 
			
		
	
		
			
				
					|  |  |  |  |                     diLevelResponse1.setBhxjsl(1); | 
			
		
	
		
			
				
					|  |  |  |  |                     diLevelResponses.add(diLevelResponse1); | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |             }); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         Collections.sort(diLevelResponses, Comparator.comparing(DiLevelResponse::getPackLevel)); | 
			
		
	
		
			
				
					|  |  |  |  |         return diLevelResponses; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     public boolean insertUdiInfo(UdiProductEntity udiProductEntity) { | 
			
		
	
		
			
				
					|  |  |  |  |         if (udiProductEntity.getId() == null) { | 
			
		
	
		
			
				
					|  |  |  |  |             udiProductEntity.setId(IdUtil.getSnowflakeNextId()); | 
			
		
	
	
		
			
				
					|  |  |  | @ -278,17 +314,19 @@ public class UdiProductService extends ServiceImpl<UdiProductDao, UdiProductEnti | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             //修改关联表
 | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setUseLeverCount(addProductRequest.getUseLeverCount()); | 
			
		
	
		
			
				
					|  |  |  |  | //            udiRelevanceEntity.setUseLeverCount(addProductRequest.getUseLeverCount());
 | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setSplitEnable(addProductRequest.getSplitEnable()); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setAutoCode(addProductRequest.getAutoCode()); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setUseLevelDi(addProductRequest.getUseLevelDi()); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setUseLevelUnit(addProductRequest.getUseLevelUnit()); | 
			
		
	
		
			
				
					|  |  |  |  | //            udiRelevanceEntity.setUseLevelDi(addProductRequest.getUseLevelDi());
 | 
			
		
	
		
			
				
					|  |  |  |  | //            udiRelevanceEntity.setUseLevelUnit(addProductRequest.getUseLevelUnit());
 | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setUseLevel(addProductRequest.getUseLevel()); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setDistributeLevelDi(addProductRequest.getDistributeLevelDi()); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setDistributeLevelUnit(addProductRequest.getDistributeLevelUnit()); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setDistributeLevelCount(addProductRequest.getDistributeLevelCount()); | 
			
		
	
		
			
				
					|  |  |  |  | //            udiRelevanceEntity.setDistributeLevelDi(addProductRequest.getDistributeLevelDi());
 | 
			
		
	
		
			
				
					|  |  |  |  | //            udiRelevanceEntity.setDistributeLevelUnit(addProductRequest.getDistributeLevelUnit());
 | 
			
		
	
		
			
				
					|  |  |  |  | //            udiRelevanceEntity.setDistributeLevelCount(addProductRequest.getDistributeLevelCount());
 | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setDistributeLevel(addProductRequest.getDistributeLevel()); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setPayFeeCode(addProductRequest.getPayFeeCode()); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setUseMaxLevel(addProductRequest.getUseMaxLevel()); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setDistributeMaxLevel(addProductRequest.getDistributeMaxLevel()); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceDao.updateById(udiRelevanceEntity); | 
			
		
	
		
			
				
					|  |  |  |  |             updateLevelCount(udiRelevanceEntity); | 
			
		
	
		
			
				
					|  |  |  |  |         } else { | 
			
		
	
	
		
			
				
					|  |  |  | @ -305,32 +343,33 @@ public class UdiProductService extends ServiceImpl<UdiProductDao, UdiProductEnti | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setAttributeType(addProductRequest.getAttributeType()); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setHcType(addProductRequest.getHcType()); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setPayFeeCode(addProductRequest.getPayFeeCode()); | 
			
		
	
		
			
				
					|  |  |  |  |             if (addProductRequest.getDistributeLevelDi() != null) { | 
			
		
	
		
			
				
					|  |  |  |  |                 udiRelevanceEntity.setDistributeLevelDi(addProductRequest.getDistributeLevelDi()); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |             if (addProductRequest.getDistributeLevelCount() != null) { | 
			
		
	
		
			
				
					|  |  |  |  |                 udiRelevanceEntity.setDistributeLevelCount(addProductRequest.getDistributeLevelCount()); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |             if (addProductRequest.getDistributeLevelUnit() != null) { | 
			
		
	
		
			
				
					|  |  |  |  |                 udiRelevanceEntity.setDistributeLevelUnit(addProductRequest.getDistributeLevelUnit()); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             if (addProductRequest.getUseLevelDi() != null) { | 
			
		
	
		
			
				
					|  |  |  |  |                 udiRelevanceEntity.setUseLevelDi(addProductRequest.getUseLevelDi()); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |             if (addProductRequest.getUseLevelUnit() != null) { | 
			
		
	
		
			
				
					|  |  |  |  |                 udiRelevanceEntity.setUseLevelUnit(addProductRequest.getUseLevelUnit()); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |             if (addProductRequest.getUseLeverCount() != null) { | 
			
		
	
		
			
				
					|  |  |  |  |                 udiRelevanceEntity.setUseLeverCount(addProductRequest.getUseLeverCount()); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  | //            if (addProductRequest.getDistributeLevelDi() != null) {
 | 
			
		
	
		
			
				
					|  |  |  |  | //                udiRelevanceEntity.setDistributeLevelDi(addProductRequest.getDistributeLevelDi());
 | 
			
		
	
		
			
				
					|  |  |  |  | //            }
 | 
			
		
	
		
			
				
					|  |  |  |  | //            if (addProductRequest.getDistributeLevelCount() != null) {
 | 
			
		
	
		
			
				
					|  |  |  |  | //                udiRelevanceEntity.setDistributeLevelCount(addProductRequest.getDistributeLevelCount());
 | 
			
		
	
		
			
				
					|  |  |  |  | //            }
 | 
			
		
	
		
			
				
					|  |  |  |  | //            if (addProductRequest.getDistributeLevelUnit() != null) {
 | 
			
		
	
		
			
				
					|  |  |  |  | //                udiRelevanceEntity.setDistributeLevelUnit(addProductRequest.getDistributeLevelUnit());
 | 
			
		
	
		
			
				
					|  |  |  |  | //            }
 | 
			
		
	
		
			
				
					|  |  |  |  | //
 | 
			
		
	
		
			
				
					|  |  |  |  | //            if (addProductRequest.getUseLevelDi() != null) {
 | 
			
		
	
		
			
				
					|  |  |  |  | //                udiRelevanceEntity.setUseLevelDi(addProductRequest.getUseLevelDi());
 | 
			
		
	
		
			
				
					|  |  |  |  | //            }
 | 
			
		
	
		
			
				
					|  |  |  |  | //            if (addProductRequest.getUseLevelUnit() != null) {
 | 
			
		
	
		
			
				
					|  |  |  |  | //                udiRelevanceEntity.setUseLevelUnit(addProductRequest.getUseLevelUnit());
 | 
			
		
	
		
			
				
					|  |  |  |  | //            }
 | 
			
		
	
		
			
				
					|  |  |  |  | //            if (addProductRequest.getUseLeverCount() != null) {
 | 
			
		
	
		
			
				
					|  |  |  |  | //                udiRelevanceEntity.setUseLeverCount(addProductRequest.getUseLeverCount());
 | 
			
		
	
		
			
				
					|  |  |  |  | //            }
 | 
			
		
	
		
			
				
					|  |  |  |  |             if (addProductRequest.getDistributeLevel() != null) { | 
			
		
	
		
			
				
					|  |  |  |  |                 udiRelevanceEntity.setDistributeLevel(addProductRequest.getDistributeLevel()); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |             if (addProductRequest.getUseLevel() != null) { | 
			
		
	
		
			
				
					|  |  |  |  |                 udiRelevanceEntity.setUseLevel(addProductRequest.getUseLevel()); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setUseMaxLevel(addProductRequest.getUseMaxLevel()); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setDistributeMaxLevel(addProductRequest.getDistributeMaxLevel()); | 
			
		
	
		
			
				
					|  |  |  |  |             if (CollUtil.isNotEmpty(addProductRequest.getDrugLevelLists())) { | 
			
		
	
		
			
				
					|  |  |  |  |                 for (UpdateLevelDrugRequest updateLevelDrugRequest : addProductRequest.getDrugLevelLists()) { | 
			
		
	
		
			
				
					|  |  |  |  |                     UdiProductEntity udiProductEntity1 = udiProductDao.findByNameCode(updateLevelDrugRequest.getNameCode()); | 
			
		
	
	
		
			
				
					|  |  |  | @ -381,78 +420,54 @@ public class UdiProductService extends ServiceImpl<UdiProductDao, UdiProductEnti | 
			
		
	
		
			
				
					|  |  |  |  |     public void updateLevelCount(UdiRelevanceEntity udiRelevanceEntity) { | 
			
		
	
		
			
				
					|  |  |  |  |         List<UdiProductEntity> udiProductEntities = udiProductDao.findByUuids(udiRelevanceEntity.getUuid()); | 
			
		
	
		
			
				
					|  |  |  |  |         Integer curLevel = udiRelevanceEntity.getDistributeLevel(); | 
			
		
	
		
			
				
					|  |  |  |  |         List<DiLevelResponse> diLevelResponses = findLevelByRelId(udiRelevanceEntity.getId()); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         //更新各个层级流通时包含计量单元数量
 | 
			
		
	
		
			
				
					|  |  |  |  |         if (CollUtil.isNotEmpty(udiProductEntities)) { | 
			
		
	
		
			
				
					|  |  |  |  |             for (UdiProductEntity udiProductEntity : udiProductEntities) { | 
			
		
	
		
			
				
					|  |  |  |  |                 if (IntUtil.value(udiProductEntity.getPackLevel()) > IntUtil.value(curLevel)) { | 
			
		
	
		
			
				
					|  |  |  |  |                     UdiProductEntity nextLevelProduct1 = getNextLevelProduct(udiProductEntity, udiProductEntities); | 
			
		
	
		
			
				
					|  |  |  |  |                     if (nextLevelProduct1 != null && IntUtil.value(nextLevelProduct1.getPackLevel()) > IntUtil.value(curLevel)) { | 
			
		
	
		
			
				
					|  |  |  |  |                         UdiProductEntity nextLevelProduct2 = getNextLevelProduct(nextLevelProduct1, udiProductEntities); | 
			
		
	
		
			
				
					|  |  |  |  |                         if (nextLevelProduct2 != null && IntUtil.value(nextLevelProduct2.getPackLevel()) > IntUtil.value(curLevel)) { | 
			
		
	
		
			
				
					|  |  |  |  |                             UdiProductEntity nextLevelProduct3 = getNextLevelProduct(nextLevelProduct2, udiProductEntities); | 
			
		
	
		
			
				
					|  |  |  |  |                             if (nextLevelProduct3 != null && IntUtil.value(nextLevelProduct3.getPackLevel()) == IntUtil.value(curLevel)) { | 
			
		
	
		
			
				
					|  |  |  |  |                                 udiProductEntity.setBhltcjsl(IntUtil.value(udiProductEntity.getMyBhxjsl()) * IntUtil.value(nextLevelProduct1.getMyBhxjsl()) * IntUtil.value(nextLevelProduct2.getMyBhxjsl())); | 
			
		
	
		
			
				
					|  |  |  |  |                             } else { | 
			
		
	
		
			
				
					|  |  |  |  |                                 udiProductEntity.setBhltcjsl(IntUtil.value(udiProductEntity.getMyBhxjsl()) * IntUtil.value(nextLevelProduct1.getMyBhxjsl()) * IntUtil.value(nextLevelProduct2.getMyBhxjsl())); | 
			
		
	
		
			
				
					|  |  |  |  |                             } | 
			
		
	
		
			
				
					|  |  |  |  |                         } else { | 
			
		
	
		
			
				
					|  |  |  |  |                             udiProductEntity.setBhltcjsl(IntUtil.value(udiProductEntity.getMyBhxjsl()) * IntUtil.value(nextLevelProduct1.getMyBhxjsl())); | 
			
		
	
		
			
				
					|  |  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |  |                     } else { | 
			
		
	
		
			
				
					|  |  |  |  |                         if (nextLevelProduct1 != null && IntUtil.value(nextLevelProduct1.getPackLevel()) == IntUtil.value(curLevel)) { | 
			
		
	
		
			
				
					|  |  |  |  |                             udiProductEntity.setBhltcjsl(IntUtil.value(udiProductEntity.getMyBhxjsl())); | 
			
		
	
		
			
				
					|  |  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |  |                 int bhltsl = 1; | 
			
		
	
		
			
				
					|  |  |  |  |                 if (IntUtil.value(udiProductEntity.getPackLevel()) > curLevel) { | 
			
		
	
		
			
				
					|  |  |  |  |                     bhltsl = udiProductEntity.getBhxjsl(); | 
			
		
	
		
			
				
					|  |  |  |  |                     for (DiLevelResponse diLevelResponse : diLevelResponses) { | 
			
		
	
		
			
				
					|  |  |  |  |                         if (IntUtil.value(udiProductEntity.getPackLevel()) > diLevelResponse.getPackLevel() && IntUtil.value(diLevelResponse.getPackLevel()) > curLevel) { | 
			
		
	
		
			
				
					|  |  |  |  |                             bhltsl = bhltsl * diLevelResponse.getBhxjsl(); | 
			
		
	
		
			
				
					|  |  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |  |                 } else { | 
			
		
	
		
			
				
					|  |  |  |  |                     if (udiProductEntity != null && IntUtil.value(udiProductEntity.getPackLevel()) == IntUtil.value(curLevel)) { | 
			
		
	
		
			
				
					|  |  |  |  |                         udiProductEntity.setBhltcjsl(IntUtil.value(udiRelevanceEntity.getDistributeLevelCount())); | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity.setBhltcjsl(bhltsl); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         curLevel = udiRelevanceEntity.getUseLevel(); | 
			
		
	
		
			
				
					|  |  |  |  |         //更新各个层级使用时包含计量单元数量
 | 
			
		
	
		
			
				
					|  |  |  |  |         if (CollUtil.isNotEmpty(udiProductEntities)) { | 
			
		
	
		
			
				
					|  |  |  |  |             for (UdiProductEntity udiProductEntity : udiProductEntities) { | 
			
		
	
		
			
				
					|  |  |  |  |                 if (IntUtil.value(udiProductEntity.getPackLevel()) > IntUtil.value(curLevel)) { | 
			
		
	
		
			
				
					|  |  |  |  |                     UdiProductEntity nextLevelProduct1 = getNextLevelProduct(udiProductEntity, udiProductEntities); | 
			
		
	
		
			
				
					|  |  |  |  |                     if (nextLevelProduct1 != null && IntUtil.value(nextLevelProduct1.getPackLevel()) > IntUtil.value(curLevel)) { | 
			
		
	
		
			
				
					|  |  |  |  |                         UdiProductEntity nextLevelProduct2 = getNextLevelProduct(nextLevelProduct1, udiProductEntities); | 
			
		
	
		
			
				
					|  |  |  |  |                         if (nextLevelProduct2 != null && IntUtil.value(nextLevelProduct2.getPackLevel()) > IntUtil.value(curLevel)) { | 
			
		
	
		
			
				
					|  |  |  |  |                             UdiProductEntity nextLevelProduct3 = getNextLevelProduct(nextLevelProduct2, udiProductEntities); | 
			
		
	
		
			
				
					|  |  |  |  |                             if (nextLevelProduct3 != null && IntUtil.value(nextLevelProduct3.getPackLevel()) == IntUtil.value(curLevel)) { | 
			
		
	
		
			
				
					|  |  |  |  |                                 udiProductEntity.setBhsycjsl(IntUtil.value(udiProductEntity.getMyBhxjsl()) * IntUtil.value(nextLevelProduct1.getMyBhxjsl()) * IntUtil.value(nextLevelProduct2.getMyBhxjsl())); | 
			
		
	
		
			
				
					|  |  |  |  |                             } else { | 
			
		
	
		
			
				
					|  |  |  |  |                                 udiProductEntity.setBhsycjsl(IntUtil.value(udiProductEntity.getMyBhxjsl()) * IntUtil.value(nextLevelProduct1.getMyBhxjsl()) * IntUtil.value(nextLevelProduct2.getMyBhxjsl())); | 
			
		
	
		
			
				
					|  |  |  |  |                 int bhltsl = 1; | 
			
		
	
		
			
				
					|  |  |  |  |                 if (IntUtil.value(udiProductEntity.getPackLevel()) > curLevel) { | 
			
		
	
		
			
				
					|  |  |  |  |                     bhltsl = udiProductEntity.getBhxjsl(); | 
			
		
	
		
			
				
					|  |  |  |  |                     for (DiLevelResponse diLevelResponse : diLevelResponses) { | 
			
		
	
		
			
				
					|  |  |  |  |                         if (IntUtil.value(udiProductEntity.getPackLevel()) > diLevelResponse.getPackLevel() && IntUtil.value(diLevelResponse.getPackLevel()) > curLevel) { | 
			
		
	
		
			
				
					|  |  |  |  |                             bhltsl = bhltsl * diLevelResponse.getBhxjsl(); | 
			
		
	
		
			
				
					|  |  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |  |                         } else { | 
			
		
	
		
			
				
					|  |  |  |  |                             udiProductEntity.setBhsycjsl(IntUtil.value(udiProductEntity.getMyBhxjsl()) * IntUtil.value(nextLevelProduct1.getMyBhxjsl())); | 
			
		
	
		
			
				
					|  |  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |  |                     } else { | 
			
		
	
		
			
				
					|  |  |  |  |                         if (nextLevelProduct1 != null && IntUtil.value(nextLevelProduct1.getPackLevel()) == IntUtil.value(curLevel)) { | 
			
		
	
		
			
				
					|  |  |  |  |                             udiProductEntity.setBhsycjsl(IntUtil.value(udiProductEntity.getMyBhxjsl())); | 
			
		
	
		
			
				
					|  |  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                 } else { | 
			
		
	
		
			
				
					|  |  |  |  |                     if (udiProductEntity != null && IntUtil.value(udiProductEntity.getPackLevel()) == IntUtil.value(curLevel)) { | 
			
		
	
		
			
				
					|  |  |  |  |                         udiProductEntity.setBhsycjsl(IntUtil.value(udiRelevanceEntity.getUseLeverCount())); | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity.setBhsycjsl(bhltsl); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         udiProductDao.updateBatchById(udiProductEntities); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     public UdiProductEntity getNextLevelProduct(UdiProductEntity curProductEntity, List<UdiProductEntity> udiProductEntities) { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     public List<UdiProductEntity> getNextLevelProduct(UdiProductEntity curProductEntity, List<UdiProductEntity> udiProductEntities) { | 
			
		
	
		
			
				
					|  |  |  |  |         List<UdiProductEntity> nextUdiProductEntities = new ArrayList<>(); | 
			
		
	
		
			
				
					|  |  |  |  |         for (UdiProductEntity udiProductEntity : udiProductEntities) { | 
			
		
	
		
			
				
					|  |  |  |  |             if (StrUtil.emptyIfNull(curProductEntity.getBhxjcpbm()).equals(udiProductEntity.getNameCode())) { | 
			
		
	
		
			
				
					|  |  |  |  |                 return udiProductEntity; | 
			
		
	
		
			
				
					|  |  |  |  | //            if (StrUtil.emptyIfNull(curProductEntity.getBhxjcpbm()).equals(udiProductEntity.getNameCode())) {
 | 
			
		
	
		
			
				
					|  |  |  |  | //                return udiProductEntity;
 | 
			
		
	
		
			
				
					|  |  |  |  | //            }
 | 
			
		
	
		
			
				
					|  |  |  |  |             if ((IntUtil.value(curProductEntity.getPackLevel()) - IntUtil.value(udiProductEntity.getPackLevel())) == 1) { | 
			
		
	
		
			
				
					|  |  |  |  |                 nextUdiProductEntities.add(udiProductEntity); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         return null; | 
			
		
	
		
			
				
					|  |  |  |  |         return nextUdiProductEntities; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -466,48 +481,29 @@ public class UdiProductService extends ServiceImpl<UdiProductDao, UdiProductEnti | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             UdiProductEntity byUuids = udiProductDao.findById(updateLevelDrugRequest.getProductId() + ""); | 
			
		
	
		
			
				
					|  |  |  |  |             UdiProductEntity udiProductEntity1 = null; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             if (updateLevelDrugRequest.getProductId() != null) { | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1 = byUuids; | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1.setNameCode(updateLevelDrugRequest.getNameCode()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1.setPackLevel(updateLevelDrugRequest.getPackLevel() + ""); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1.setPackUnit(updateLevelDrugRequest.getPackUnit()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1.setSjcpbm(updateLevelDrugRequest.getSjcpbm()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1.setBhxjcpbm(updateLevelDrugRequest.getBhxjcpbm()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1.setBhxjsl(updateLevelDrugRequest.getMyBhxjsl()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductDao.updateById(udiProductEntity1); | 
			
		
	
		
			
				
					|  |  |  |  |                 return; | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |             } else { | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1 = udiProductDao.findByNameCode(updateLevelDrugRequest.getNameCode()); | 
			
		
	
		
			
				
					|  |  |  |  |             //有药品数据 但是nameCode如果为空的话 院内新增的 更改nameCode
 | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             if (udiProductEntity1 != null) { | 
			
		
	
		
			
				
					|  |  |  |  |                 //更新
 | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1.setNameCode(updateLevelDrugRequest.getNameCode()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1.setPackLevel(updateLevelDrugRequest.getPackLevel() + ""); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1.setPackUnit(updateLevelDrugRequest.getPackUnit()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1.setSjcpbm(updateLevelDrugRequest.getSjcpbm()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1.setBhxjcpbm(updateLevelDrugRequest.getBhxjcpbm()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1.setBhxjsl(updateLevelDrugRequest.getMyBhxjsl()); | 
			
		
	
		
			
				
					|  |  |  |  |                 updateUdiProductEntity(udiProductEntity1, updateLevelDrugRequest); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductDao.updateById(udiProductEntity1); | 
			
		
	
		
			
				
					|  |  |  |  |             } else { | 
			
		
	
		
			
				
					|  |  |  |  |                 //新增
 | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1 = udiProductDao.findByUuid(udiRelevanceEntity.getUuid()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1.setNameCode(updateLevelDrugRequest.getNameCode()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1.setPackLevel(updateLevelDrugRequest.getPackLevel() + ""); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1.setPackUnit(updateLevelDrugRequest.getPackUnit()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1.setSjcpbm(updateLevelDrugRequest.getSjcpbm()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1.setBhxjcpbm(updateLevelDrugRequest.getBhxjcpbm()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1.setBhxjsl(updateLevelDrugRequest.getMyBhxjsl()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1 = new UdiProductEntity(); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1.setUuid(udiRelevanceEntity.getUuid()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1.setId(IdUtil.getSnowflakeNextId()); | 
			
		
	
		
			
				
					|  |  |  |  |                 updateUdiProductEntity(udiProductEntity1, updateLevelDrugRequest); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductDao.insert(udiProductEntity1); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |             if (IntUtil.value(udiProductEntity1.getPackLevel()) == 1) { | 
			
		
	
		
			
				
					|  |  |  |  |                 calculateDistCount(udiProductEntity1, udiRelevanceEntity); | 
			
		
	
		
			
				
					|  |  |  |  |                 calculateUseCount(udiProductEntity1, udiRelevanceEntity); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             updateLevelCount(udiRelevanceEntity); | 
			
		
	
		
			
				
					|  |  |  |  | //            if (IntUtil.value(udiProductEntity1.getPackLevel()) == 1) {
 | 
			
		
	
		
			
				
					|  |  |  |  | //                calculateDistCount(udiProductEntity1, udiRelevanceEntity);
 | 
			
		
	
		
			
				
					|  |  |  |  | //                calculateUseCount(udiProductEntity1, udiRelevanceEntity);
 | 
			
		
	
		
			
				
					|  |  |  |  | //            }
 | 
			
		
	
		
			
				
					|  |  |  |  |         } else { | 
			
		
	
		
			
				
					|  |  |  |  |             //必须先提交后才能保存
 | 
			
		
	
		
			
				
					|  |  |  |  |             UdiProductEntity udiProductEntity1 = udiProductDao.findByNameCode(updateLevelDrugRequest.getNameCode()); | 
			
		
	
		
			
				
					|  |  |  |  |             if (udiProductEntity1 != null) { | 
			
		
	
		
			
				
					|  |  |  |  |                 throw new JsonException(500, "层级编码已存在!"); | 
			
		
	
	
		
			
				
					|  |  |  | @ -515,6 +511,17 @@ public class UdiProductService extends ServiceImpl<UdiProductDao, UdiProductEnti | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     private void updateUdiProductEntity(UdiProductEntity entity, UpdateLevelDrugRequest request) { | 
			
		
	
		
			
				
					|  |  |  |  |         entity.setNameCode(request.getNameCode()); | 
			
		
	
		
			
				
					|  |  |  |  |         entity.setPackLevel(String.valueOf(request.getPackLevel())); | 
			
		
	
		
			
				
					|  |  |  |  |         entity.setPackUnit(request.getPackUnit()); | 
			
		
	
		
			
				
					|  |  |  |  |         entity.setSjcpbm(request.getSjcpbm()); | 
			
		
	
		
			
				
					|  |  |  |  |         entity.setBhxjcpbm(request.getBhxjcpbm()); | 
			
		
	
		
			
				
					|  |  |  |  |         entity.setBhxjsl(request.getMyBhxjsl()); | 
			
		
	
		
			
				
					|  |  |  |  |         entity.setDiType(request.getDiType()); | 
			
		
	
		
			
				
					|  |  |  |  |         entity.setXjdw(request.getXjdw()); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     /** | 
			
		
	
		
			
				
					|  |  |  |  |      * 根据当前层级标识计算流通拆零数量 | 
			
		
	
		
			
				
					|  |  |  |  |      */ | 
			
		
	
	
		
			
				
					|  |  |  | @ -522,8 +529,8 @@ public class UdiProductService extends ServiceImpl<UdiProductDao, UdiProductEnti | 
			
		
	
		
			
				
					|  |  |  |  |         List<UdiProductEntity> udiProductEntities = udiProductDao.findByUuids(udiProductEntity.getUuid()); | 
			
		
	
		
			
				
					|  |  |  |  |         CountWrapper xjCountWrapper = new CountWrapper(); | 
			
		
	
		
			
				
					|  |  |  |  |         findUltimateEntity(udiProductEntity, udiProductEntities, xjCountWrapper); | 
			
		
	
		
			
				
					|  |  |  |  |         udiRelevanceEntity.setDistributeLevelDi(udiProductEntity.getNameCode()); | 
			
		
	
		
			
				
					|  |  |  |  |         udiRelevanceEntity.setDistributeLevelUnit(udiProductEntity.getPackUnit()); | 
			
		
	
		
			
				
					|  |  |  |  | //        udiRelevanceEntity.setDistributeLevelDi(udiProductEntity.getNameCode());
 | 
			
		
	
		
			
				
					|  |  |  |  | //        udiRelevanceEntity.setDistributeLevelUnit(udiProductEntity.getPackUnit());
 | 
			
		
	
		
			
				
					|  |  |  |  |         udiRelevanceEntity.setDistributeLevel(IntUtil.value(udiProductEntity.getPackLevel())); | 
			
		
	
		
			
				
					|  |  |  |  |         udiRelevanceEntity.setDistributeLevelCount(xjCountWrapper.getCount()); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
	
		
			
				
					|  |  |  | @ -535,10 +542,10 @@ public class UdiProductService extends ServiceImpl<UdiProductDao, UdiProductEnti | 
			
		
	
		
			
				
					|  |  |  |  |         List<UdiProductEntity> udiProductEntities = udiProductDao.findByUuids(udiProductEntity.getUuid()); | 
			
		
	
		
			
				
					|  |  |  |  |         CountWrapper xjCountWrapper = new CountWrapper(); | 
			
		
	
		
			
				
					|  |  |  |  |         findUltimateEntity(udiProductEntity, udiProductEntities, xjCountWrapper); | 
			
		
	
		
			
				
					|  |  |  |  |         udiRelevanceEntity.setUseLevelDi(udiProductEntity.getNameCode()); | 
			
		
	
		
			
				
					|  |  |  |  |         udiRelevanceEntity.setUseLevelUnit(udiProductEntity.getPackUnit()); | 
			
		
	
		
			
				
					|  |  |  |  | //        udiRelevanceEntity.setUseLevelDi(udiProductEntity.getNameCode());
 | 
			
		
	
		
			
				
					|  |  |  |  | //        udiRelevanceEntity.setUseLevelUnit(udiProductEntity.getPackUnit());
 | 
			
		
	
		
			
				
					|  |  |  |  |         udiRelevanceEntity.setUseLevel(IntUtil.value(udiProductEntity.getPackLevel())); | 
			
		
	
		
			
				
					|  |  |  |  |         udiRelevanceEntity.setUseLeverCount(xjCountWrapper.getCount()); | 
			
		
	
		
			
				
					|  |  |  |  | //        udiRelevanceEntity.setUseLeverCount(xjCountWrapper.getCount());
 | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     public UdiProductEntity findUltimateEntity(UdiProductEntity udiProductEntity, List<UdiProductEntity> udiProductEntities, CountWrapper xjCountWrapper) { | 
			
		
	
	
		
			
				
					|  |  |  | 
 |