|  |  |  | @ -3,6 +3,7 @@ package com.glxp.api.service.basic.impl; | 
			
		
	
		
			
				
					|  |  |  |  | import cn.hutool.core.collection.CollUtil; | 
			
		
	
		
			
				
					|  |  |  |  | import cn.hutool.core.util.IdUtil; | 
			
		
	
		
			
				
					|  |  |  |  | import cn.hutool.core.util.StrUtil; | 
			
		
	
		
			
				
					|  |  |  |  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
			
		
	
		
			
				
					|  |  |  |  | import com.github.pagehelper.PageHelper; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.api.constant.ConstantStatus; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.api.dao.basic.UdiProductDao; | 
			
		
	
	
		
			
				
					|  |  |  | @ -14,20 +15,23 @@ 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.service.basic.UdiProductService; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.api.util.IntUtil; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.api.util.PinyinUtils; | 
			
		
	
		
			
				
					|  |  |  |  | import com.glxp.api.util.udi.FilterUdiUtils; | 
			
		
	
		
			
				
					|  |  |  |  | import org.apache.commons.lang3.exception.ExceptionUtils; | 
			
		
	
		
			
				
					|  |  |  |  | import org.slf4j.Logger; | 
			
		
	
		
			
				
					|  |  |  |  | import org.slf4j.LoggerFactory; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.beans.BeanUtils; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.stereotype.Service; | 
			
		
	
		
			
				
					|  |  |  |  | import org.springframework.transaction.annotation.Transactional; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | import javax.annotation.Resource; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.Collections; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.Date; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.List; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.Optional; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.*; | 
			
		
	
		
			
				
					|  |  |  |  | import java.util.stream.Collectors; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | @Service | 
			
		
	
		
			
				
					|  |  |  |  | @Transactional(rollbackFor = Exception.class) | 
			
		
	
	
		
			
				
					|  |  |  | @ -42,6 +46,8 @@ public class UdiProductServiceImpl implements UdiProductService { | 
			
		
	
		
			
				
					|  |  |  |  |     @Resource | 
			
		
	
		
			
				
					|  |  |  |  |     private CustomerService customerService; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     private static final Logger logger = LoggerFactory.getLogger(UdiProductService.class); | 
			
		
	
		
			
				
					|  |  |  |  |     @Override | 
			
		
	
		
			
				
					|  |  |  |  |     public List<UdiProductEntity> filterUdiInfo(FilterUdiRelRequest filterUdiRelRequest) { | 
			
		
	
		
			
				
					|  |  |  |  |         if (filterUdiRelRequest == null) { | 
			
		
	
	
		
			
				
					|  |  |  | @ -124,27 +130,42 @@ public class UdiProductServiceImpl implements UdiProductService { | 
			
		
	
		
			
				
					|  |  |  |  |             return udiProductEntities.get(0); | 
			
		
	
		
			
				
					|  |  |  |  |         return null; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     @Override | 
			
		
	
		
			
				
					|  |  |  |  |     public boolean insertUdiInfo(UdiProductEntity udiProductEntity) { | 
			
		
	
		
			
				
					|  |  |  |  |         udiProductEntity.setUpdateTime(new Date()); | 
			
		
	
		
			
				
					|  |  |  |  |         if (udiProductEntity.getId() == null) { | 
			
		
	
		
			
				
					|  |  |  |  |             udiProductEntity.setId(IdUtil.getSnowflakeNextId()); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         if (StrUtil.isNotBlank(udiProductEntity.getCpmctymc()) && StrUtil.isBlank(udiProductEntity.getPinyinInitial())) { | 
			
		
	
		
			
				
					|  |  |  |  |             try { | 
			
		
	
		
			
				
					|  |  |  |  |                 String pinyin = PinyinUtils.converterToFirstSpell(udiProductEntity.getCpmctymc()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity.setPinyinInitial(pinyin); | 
			
		
	
		
			
				
					|  |  |  |  |             } catch (Exception e) { | 
			
		
	
		
			
				
					|  |  |  |  |                 logger.error(ExceptionUtils.getStackTrace(e)); | 
			
		
	
		
			
				
					|  |  |  |  |                 e.printStackTrace(); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         //医保编码解析
 | 
			
		
	
		
			
				
					|  |  |  |  |         String catalogcode = udiProductEntity.getCatalogcode(); | 
			
		
	
		
			
				
					|  |  |  |  |         if (StrUtil.isNotEmpty(catalogcode) && catalogcode.length() >= 7) { | 
			
		
	
		
			
				
					|  |  |  |  |             Integer catalogcode1 = Integer.valueOf(catalogcode.substring(1, 3)); | 
			
		
	
		
			
				
					|  |  |  |  |             Integer catalogcode2 = Integer.valueOf(catalogcode1 + catalogcode.substring(3, 5)); | 
			
		
	
		
			
				
					|  |  |  |  |             Integer catalogcode3 = Integer.valueOf(catalogcode2 + catalogcode.substring(5, 7)); | 
			
		
	
		
			
				
					|  |  |  |  |             udiProductEntity.setCatalogCode1(catalogcode1); | 
			
		
	
		
			
				
					|  |  |  |  |             udiProductEntity.setCatalogCode2(catalogcode2); | 
			
		
	
		
			
				
					|  |  |  |  |             udiProductEntity.setCatalogCode3(catalogcode3); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         return udiProductDao.insertUdiInfo(udiProductEntity); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | //    @Override
 | 
			
		
	
		
			
				
					|  |  |  |  | //    public boolean insertUdiInfo(UdiProductEntity udiProductEntity) {
 | 
			
		
	
		
			
				
					|  |  |  |  | //        udiProductEntity.setUpdateTime(new Date());
 | 
			
		
	
		
			
				
					|  |  |  |  | //        if (udiProductEntity.getId() == null) {
 | 
			
		
	
		
			
				
					|  |  |  |  | //            udiProductEntity.setId(IdUtil.getSnowflakeNextId());
 | 
			
		
	
		
			
				
					|  |  |  |  | //        }
 | 
			
		
	
		
			
				
					|  |  |  |  | //
 | 
			
		
	
		
			
				
					|  |  |  |  | //        //医保编码解析
 | 
			
		
	
		
			
				
					|  |  |  |  | //        String catalogcode = udiProductEntity.getCatalogcode();
 | 
			
		
	
		
			
				
					|  |  |  |  | //        if (StrUtil.isNotEmpty(catalogcode) && catalogcode.length() >= 7) {
 | 
			
		
	
		
			
				
					|  |  |  |  | //            Integer catalogcode1 = Integer.valueOf(catalogcode.substring(1, 3));
 | 
			
		
	
		
			
				
					|  |  |  |  | //            Integer catalogcode2 = Integer.valueOf(catalogcode1 + catalogcode.substring(3, 5));
 | 
			
		
	
		
			
				
					|  |  |  |  | //            Integer catalogcode3 = Integer.valueOf(catalogcode2 + catalogcode.substring(5, 7));
 | 
			
		
	
		
			
				
					|  |  |  |  | //            udiProductEntity.setCatalogCode1(catalogcode1);
 | 
			
		
	
		
			
				
					|  |  |  |  | //            udiProductEntity.setCatalogCode2(catalogcode2);
 | 
			
		
	
		
			
				
					|  |  |  |  | //            udiProductEntity.setCatalogCode3(catalogcode3);
 | 
			
		
	
		
			
				
					|  |  |  |  | //        }
 | 
			
		
	
		
			
				
					|  |  |  |  | //
 | 
			
		
	
		
			
				
					|  |  |  |  | //        return udiProductDao.insertUdiInfo(udiProductEntity);
 | 
			
		
	
		
			
				
					|  |  |  |  | //    }
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     @Override | 
			
		
	
		
			
				
					|  |  |  |  |     public boolean insertUdiInfos(List<UdiProductEntity> udiInfoEntities) { | 
			
		
	
	
		
			
				
					|  |  |  | @ -159,38 +180,48 @@ public class UdiProductServiceImpl implements UdiProductService { | 
			
		
	
		
			
				
					|  |  |  |  |         return udiProductDao.updateUdiInfo(udiProductEntity); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     @Override | 
			
		
	
		
			
				
					|  |  |  |  | //    @Override
 | 
			
		
	
		
			
				
					|  |  |  |  | //    public boolean updateUdiInfoByUuid(UdiProductEntity udiProductEntity) {
 | 
			
		
	
		
			
				
					|  |  |  |  | //        if (StrUtil.isEmpty(udiProductEntity.getUuid()))
 | 
			
		
	
		
			
				
					|  |  |  |  | //            return false;
 | 
			
		
	
		
			
				
					|  |  |  |  | //        udiProductEntity.setUpdateTime(new Date());
 | 
			
		
	
		
			
				
					|  |  |  |  | //        //医保编码解析
 | 
			
		
	
		
			
				
					|  |  |  |  | //        String catalogcode = udiProductEntity.getCatalogcode();
 | 
			
		
	
		
			
				
					|  |  |  |  | //        if (StrUtil.isNotEmpty(catalogcode) && catalogcode.length() >= 7) {
 | 
			
		
	
		
			
				
					|  |  |  |  | //            Integer catalogcode1 = Integer.valueOf(catalogcode.substring(1, 3));
 | 
			
		
	
		
			
				
					|  |  |  |  | //            Integer catalogcode2 = Integer.valueOf(catalogcode1 + catalogcode.substring(3, 5));
 | 
			
		
	
		
			
				
					|  |  |  |  | //            Integer catalogcode3 = Integer.valueOf(catalogcode2 + catalogcode.substring(5, 7));
 | 
			
		
	
		
			
				
					|  |  |  |  | //            udiProductEntity.setCatalogCode1(catalogcode1);
 | 
			
		
	
		
			
				
					|  |  |  |  | //            udiProductEntity.setCatalogCode2(catalogcode2);
 | 
			
		
	
		
			
				
					|  |  |  |  | //            udiProductEntity.setCatalogCode3(catalogcode3);
 | 
			
		
	
		
			
				
					|  |  |  |  | //        }
 | 
			
		
	
		
			
				
					|  |  |  |  | //        return udiProductDao.updateUdiInfoByUuid(udiProductEntity);
 | 
			
		
	
		
			
				
					|  |  |  |  | //    }
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     public boolean updateUdiInfoByUuid(UdiProductEntity udiProductEntity) { | 
			
		
	
		
			
				
					|  |  |  |  |         if (StrUtil.isEmpty(udiProductEntity.getUuid())) | 
			
		
	
		
			
				
					|  |  |  |  |             return false; | 
			
		
	
		
			
				
					|  |  |  |  |         udiProductEntity.setUpdateTime(new Date()); | 
			
		
	
		
			
				
					|  |  |  |  |         //医保编码解析
 | 
			
		
	
		
			
				
					|  |  |  |  |         String catalogcode = udiProductEntity.getCatalogcode(); | 
			
		
	
		
			
				
					|  |  |  |  |         if (StrUtil.isNotEmpty(catalogcode) && catalogcode.length() >= 7) { | 
			
		
	
		
			
				
					|  |  |  |  |             Integer catalogcode1 = Integer.valueOf(catalogcode.substring(1, 3)); | 
			
		
	
		
			
				
					|  |  |  |  |             Integer catalogcode2 = Integer.valueOf(catalogcode1 + catalogcode.substring(3, 5)); | 
			
		
	
		
			
				
					|  |  |  |  |             Integer catalogcode3 = Integer.valueOf(catalogcode2 + catalogcode.substring(5, 7)); | 
			
		
	
		
			
				
					|  |  |  |  |             udiProductEntity.setCatalogCode1(catalogcode1); | 
			
		
	
		
			
				
					|  |  |  |  |             udiProductEntity.setCatalogCode2(catalogcode2); | 
			
		
	
		
			
				
					|  |  |  |  |             udiProductEntity.setCatalogCode3(catalogcode3); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         return udiProductDao.updateUdiInfoByUuid(udiProductEntity); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | //    @Override
 | 
			
		
	
		
			
				
					|  |  |  |  | //    public boolean updateUdiInfoById(UdiProductEntity udiProductEntity) {
 | 
			
		
	
		
			
				
					|  |  |  |  | //        udiProductEntity.setUpdateTime(new Date());
 | 
			
		
	
		
			
				
					|  |  |  |  | //        //医保编码解析
 | 
			
		
	
		
			
				
					|  |  |  |  | //        String catalogcode = udiProductEntity.getCatalogcode();
 | 
			
		
	
		
			
				
					|  |  |  |  | //        if (StrUtil.isNotEmpty(catalogcode) && catalogcode.length() >= 7) {
 | 
			
		
	
		
			
				
					|  |  |  |  | //            Integer catalogcode1 = Integer.valueOf(catalogcode.substring(1, 3));
 | 
			
		
	
		
			
				
					|  |  |  |  | //            Integer catalogcode2 = Integer.valueOf(catalogcode1 + catalogcode.substring(3, 5));
 | 
			
		
	
		
			
				
					|  |  |  |  | //            Integer catalogcode3 = Integer.valueOf(catalogcode2 + catalogcode.substring(5, 7));
 | 
			
		
	
		
			
				
					|  |  |  |  | //            udiProductEntity.setCatalogCode1(catalogcode1);
 | 
			
		
	
		
			
				
					|  |  |  |  | //            udiProductEntity.setCatalogCode2(catalogcode2);
 | 
			
		
	
		
			
				
					|  |  |  |  | //            udiProductEntity.setCatalogCode3(catalogcode3);
 | 
			
		
	
		
			
				
					|  |  |  |  | //        }
 | 
			
		
	
		
			
				
					|  |  |  |  | //
 | 
			
		
	
		
			
				
					|  |  |  |  | //        return udiProductDao.updateUdiInfoById(udiProductEntity);
 | 
			
		
	
		
			
				
					|  |  |  |  | //    }
 | 
			
		
	
		
			
				
					|  |  |  |  |     @Override | 
			
		
	
		
			
				
					|  |  |  |  |     public boolean updateUdiInfoById(UdiProductEntity udiProductEntity) { | 
			
		
	
		
			
				
					|  |  |  |  |         udiProductEntity.setUpdateTime(new Date()); | 
			
		
	
		
			
				
					|  |  |  |  |         //医保编码解析
 | 
			
		
	
		
			
				
					|  |  |  |  |         String catalogcode = udiProductEntity.getCatalogcode(); | 
			
		
	
		
			
				
					|  |  |  |  |         if (StrUtil.isNotEmpty(catalogcode) && catalogcode.length() >= 7) { | 
			
		
	
		
			
				
					|  |  |  |  |             Integer catalogcode1 = Integer.valueOf(catalogcode.substring(1, 3)); | 
			
		
	
		
			
				
					|  |  |  |  |             Integer catalogcode2 = Integer.valueOf(catalogcode1 + catalogcode.substring(3, 5)); | 
			
		
	
		
			
				
					|  |  |  |  |             Integer catalogcode3 = Integer.valueOf(catalogcode2 + catalogcode.substring(5, 7)); | 
			
		
	
		
			
				
					|  |  |  |  |             udiProductEntity.setCatalogCode1(catalogcode1); | 
			
		
	
		
			
				
					|  |  |  |  |             udiProductEntity.setCatalogCode2(catalogcode2); | 
			
		
	
		
			
				
					|  |  |  |  |             udiProductEntity.setCatalogCode3(catalogcode3); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         return udiProductDao.updateUdiInfoById(udiProductEntity); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -227,6 +258,12 @@ public class UdiProductServiceImpl implements UdiProductService { | 
			
		
	
		
			
				
					|  |  |  |  |     @Override | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     /** | 
			
		
	
		
			
				
					|  |  |  |  |      * 新增/编辑药品信息 | 
			
		
	
		
			
				
					|  |  |  |  |      * | 
			
		
	
		
			
				
					|  |  |  |  |      * @param addProductRequest | 
			
		
	
		
			
				
					|  |  |  |  |      * @return | 
			
		
	
		
			
				
					|  |  |  |  |      */ | 
			
		
	
		
			
				
					|  |  |  |  |     /** | 
			
		
	
		
			
				
					|  |  |  |  |      * 新增/编辑药品信息 | 
			
		
	
		
			
				
					|  |  |  |  |      * | 
			
		
	
	
		
			
				
					|  |  |  | @ -253,20 +290,29 @@ public class UdiProductServiceImpl implements UdiProductService { | 
			
		
	
		
			
				
					|  |  |  |  |                 if (IntUtil.value(udiProductEntity.getPackLevel()) == 1) { | 
			
		
	
		
			
				
					|  |  |  |  |                     udiProductEntity.setDiType(1); | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductDao.updateUdiInfo(udiProductEntity); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                 //修改关联表
 | 
			
		
	
		
			
				
					|  |  |  |  |                 udiRelevanceEntity.setUseLeverCount(addProductRequest.getUseLeverCount()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiRelevanceEntity.setUseLevelDi(addProductRequest.getUseLevelDi()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiRelevanceEntity.setUseLevelUnit(addProductRequest.getUseLevelUnit()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiRelevanceEntity.setDistributeLevelDi(addProductRequest.getDistributeLevelDi()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiRelevanceEntity.setDistributeLevelUnit(addProductRequest.getDistributeLevelUnit()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiRelevanceEntity.setDistributeLevelCount(addProductRequest.getDistributeLevelCount()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiRelevanceEntity.setPayFeeCode(addProductRequest.getPayFeeCode()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiRelevanceEntity.setUpdateTime(new Date()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiRelevanceDao.updateById(udiRelevanceEntity); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |                 int i = udiProductDao.updateById(udiProductEntity); | 
			
		
	
		
			
				
					|  |  |  |  |                 if (i == 0) { | 
			
		
	
		
			
				
					|  |  |  |  |                     throw new JsonException(500, "更新错误"); | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             //修改关联表
 | 
			
		
	
		
			
				
					|  |  |  |  | //            udiRelevanceEntity.setUseLeverCount(addProductRequest.getUseLeverCount());
 | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setSplitEnable(addProductRequest.getSplitEnable()); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setAutoCode(addProductRequest.getAutoCode()); | 
			
		
	
		
			
				
					|  |  |  |  | //            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.setDistributeLevel(addProductRequest.getDistributeLevel()); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setPayFeeCode(addProductRequest.getPayFeeCode()); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setUseMaxLevel(addProductRequest.getUseMaxLevel()); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setDistributeMaxLevel(addProductRequest.getDistributeMaxLevel()); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setUnpackUseTime(addProductRequest.getUnpackUseTime()); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceDao.updateById(udiRelevanceEntity); | 
			
		
	
		
			
				
					|  |  |  |  |             updateLevelCount(udiRelevanceEntity); | 
			
		
	
		
			
				
					|  |  |  |  |         } else { | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity = new UdiRelevanceEntity(); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setId(IdUtil.getSnowflakeNextId()); | 
			
		
	
	
		
			
				
					|  |  |  | @ -274,13 +320,41 @@ public class UdiProductServiceImpl implements UdiProductService { | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setIsUseDy(false); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setUuid(IdUtil.getSnowflakeNextId() + ""); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setNeedCert(false); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setSplitEnable(true); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setAutoCode(true); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setPurType(1); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setProductsType(2); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setAttributeType(addProductRequest.getAttributeType()); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setHcType(addProductRequest.getHcType()); | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setPayFeeCode(addProductRequest.getPayFeeCode()); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceEntity.setUnpackUseTime(addProductRequest.getUnpackUseTime()); | 
			
		
	
		
			
				
					|  |  |  |  | //            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()); | 
			
		
	
	
		
			
				
					|  |  |  | @ -291,10 +365,11 @@ public class UdiProductServiceImpl implements UdiProductService { | 
			
		
	
		
			
				
					|  |  |  |  | //                    BeanUtils.copyProperties(updateLevelDrugRequest, udiProductEntity);
 | 
			
		
	
		
			
				
					|  |  |  |  |                     BeanUtils.copyProperties(addProductRequest, udiProductEntity); | 
			
		
	
		
			
				
					|  |  |  |  |                     udiProductEntity.setNameCode(updateLevelDrugRequest.getNameCode()); | 
			
		
	
		
			
				
					|  |  |  |  |                     udiProductEntity.setBhxjsl(updateLevelDrugRequest.getBhxjsl()); | 
			
		
	
		
			
				
					|  |  |  |  |                     udiProductEntity.setBhxjsl(updateLevelDrugRequest.getMyBhxjsl()); | 
			
		
	
		
			
				
					|  |  |  |  |                     udiProductEntity.setPackUnit(updateLevelDrugRequest.getPackUnit()); | 
			
		
	
		
			
				
					|  |  |  |  |                     udiProductEntity.setSjcpbm(updateLevelDrugRequest.getSjcpbm()); | 
			
		
	
		
			
				
					|  |  |  |  |                     udiProductEntity.setCpmctymc(addProductRequest.getCpmctymc()); | 
			
		
	
		
			
				
					|  |  |  |  |                     udiProductEntity.setPackLevel(String.valueOf(updateLevelDrugRequest.getPackLevel())); | 
			
		
	
		
			
				
					|  |  |  |  |                     udiProductEntity.setUuid(udiRelevanceEntity.getUuid()); | 
			
		
	
		
			
				
					|  |  |  |  |                     udiProductEntity.setProductsType(2); | 
			
		
	
		
			
				
					|  |  |  |  |                     udiProductEntity.setGgxh(addProductRequest.getSpec()); | 
			
		
	
	
		
			
				
					|  |  |  | @ -302,8 +377,7 @@ public class UdiProductServiceImpl implements UdiProductService { | 
			
		
	
		
			
				
					|  |  |  |  |                     udiProductEntity.setZczbhhzbapzbh(addProductRequest.getRegisterNo()); | 
			
		
	
		
			
				
					|  |  |  |  |                     udiProductEntity.setPackLevel(updateLevelDrugRequest.getPackLevel() + ""); | 
			
		
	
		
			
				
					|  |  |  |  |                     udiProductEntity.setUuid(udiProductEntity.getUuid()); | 
			
		
	
		
			
				
					|  |  |  |  |                     //药品扫码 过滤 三期
 | 
			
		
	
		
			
				
					|  |  |  |  |                     udiProductEntity.setAllowNoSerial(true); | 
			
		
	
		
			
				
					|  |  |  |  |                     udiProductEntity.setPrice(udiProductEntity.getPrice()); | 
			
		
	
		
			
				
					|  |  |  |  |                     if (IntUtil.value(udiProductEntity.getPackLevel()) == 1 || addProductRequest.getDrugLevelLists().size() == 1) { | 
			
		
	
		
			
				
					|  |  |  |  |                         udiProductEntity.setDiType(1); | 
			
		
	
		
			
				
					|  |  |  |  |                         if (IntUtil.value(udiProductEntity.getPackLevel()) == 1) { | 
			
		
	
	
		
			
				
					|  |  |  | @ -318,6 +392,7 @@ public class UdiProductServiceImpl implements UdiProductService { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |             udiRelevanceDao.insertUdiRelevance(udiRelevanceEntity); | 
			
		
	
		
			
				
					|  |  |  |  |             updateLevelCount(udiRelevanceEntity); | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         return addProductRequest; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
	
		
			
				
					|  |  |  | @ -328,31 +403,31 @@ public class UdiProductServiceImpl implements UdiProductService { | 
			
		
	
		
			
				
					|  |  |  |  |         if (updateLevelDrugRequest.getRelId() != null) { | 
			
		
	
		
			
				
					|  |  |  |  |             UdiRelevanceEntity udiRelevanceEntity = udiRelevanceDao.selectById(updateLevelDrugRequest.getRelId()); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             UdiProductEntity udiProductEntity1 = udiProductDao.findByNameCode(updateLevelDrugRequest.getNameCode()); | 
			
		
	
		
			
				
					|  |  |  |  |             UdiProductEntity byUuids = udiProductDao.findById(updateLevelDrugRequest.getProductId() + ""); | 
			
		
	
		
			
				
					|  |  |  |  |             UdiProductEntity udiProductEntity1 = null; | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             if (updateLevelDrugRequest.getProductId() != null) { | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1 = byUuids; | 
			
		
	
		
			
				
					|  |  |  |  |             } else { | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1 = udiProductDao.findByNameCode(updateLevelDrugRequest.getNameCode()); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |             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.getBhxjsl()); | 
			
		
	
		
			
				
					|  |  |  |  |                 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.getBhxjsl()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1 = new UdiProductEntity(); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1.setUuid(udiRelevanceEntity.getUuid()); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity1.setId(IdUtil.getSnowflakeNextId()); | 
			
		
	
		
			
				
					|  |  |  |  |                 updateUdiProductEntity(udiProductEntity1, updateLevelDrugRequest); | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductDao.insert(udiProductEntity1); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |             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, "层级编码已存在!"); | 
			
		
	
	
		
			
				
					|  |  |  | @ -360,16 +435,63 @@ public class UdiProductServiceImpl implements UdiProductService { | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     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()); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     @Override | 
			
		
	
		
			
				
					|  |  |  |  |     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 void calculateDistCount(UdiProductEntity udiProductEntity, UdiRelevanceEntity udiRelevanceEntity) { | 
			
		
	
		
			
				
					|  |  |  |  |         List<UdiProductEntity> udiProductEntities = udiProductDao.findByOriginUuid(udiProductEntity.getUuid()); | 
			
		
	
		
			
				
					|  |  |  |  |         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()); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
	
		
			
				
					|  |  |  | @ -377,12 +499,13 @@ public class UdiProductServiceImpl implements UdiProductService { | 
			
		
	
		
			
				
					|  |  |  |  |      * 根据当前层级标识计算使用拆零数量 | 
			
		
	
		
			
				
					|  |  |  |  |      */ | 
			
		
	
		
			
				
					|  |  |  |  |     public void calculateUseCount(UdiProductEntity udiProductEntity, UdiRelevanceEntity udiRelevanceEntity) { | 
			
		
	
		
			
				
					|  |  |  |  |         List<UdiProductEntity> udiProductEntities = udiProductDao.findByOriginUuid(udiProductEntity.getUuid()); | 
			
		
	
		
			
				
					|  |  |  |  |         List<UdiProductEntity> udiProductEntities = udiProductDao.findByUuids(udiProductEntity.getUuid()); | 
			
		
	
		
			
				
					|  |  |  |  |         CountWrapper xjCountWrapper = new CountWrapper(); | 
			
		
	
		
			
				
					|  |  |  |  |         findUltimateEntity(udiProductEntity, udiProductEntities, xjCountWrapper); | 
			
		
	
		
			
				
					|  |  |  |  |         udiRelevanceEntity.setUseLevelDi(udiProductEntity.getNameCode()); | 
			
		
	
		
			
				
					|  |  |  |  |         udiRelevanceEntity.setUseLevelUnit(udiProductEntity.getPackUnit()); | 
			
		
	
		
			
				
					|  |  |  |  |         udiRelevanceEntity.setUseLeverCount(xjCountWrapper.getCount()); | 
			
		
	
		
			
				
					|  |  |  |  | //        udiRelevanceEntity.setUseLevelDi(udiProductEntity.getNameCode());
 | 
			
		
	
		
			
				
					|  |  |  |  | //        udiRelevanceEntity.setUseLevelUnit(udiProductEntity.getPackUnit());
 | 
			
		
	
		
			
				
					|  |  |  |  |         udiRelevanceEntity.setUseLevel(IntUtil.value(udiProductEntity.getPackLevel())); | 
			
		
	
		
			
				
					|  |  |  |  | //        udiRelevanceEntity.setUseLeverCount(xjCountWrapper.getCount());
 | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     public static UdiProductEntity findUltimateEntity(UdiProductEntity udiProductEntity, List<UdiProductEntity> udiProductEntities, CountWrapper xjCountWrapper) { | 
			
		
	
	
		
			
				
					|  |  |  | @ -403,12 +526,60 @@ public class UdiProductServiceImpl implements UdiProductService { | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     /** | 
			
		
	
		
			
				
					|  |  |  |  |      * 更新各个层级数量换算 | 
			
		
	
		
			
				
					|  |  |  |  |      * | 
			
		
	
		
			
				
					|  |  |  |  |      * @param udiRelevanceEntity | 
			
		
	
		
			
				
					|  |  |  |  |      */ | 
			
		
	
		
			
				
					|  |  |  |  |     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) { | 
			
		
	
		
			
				
					|  |  |  |  |                 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(); | 
			
		
	
		
			
				
					|  |  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity.setBhltcjsl(bhltsl); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |         curLevel = udiRelevanceEntity.getUseLevel(); | 
			
		
	
		
			
				
					|  |  |  |  |         //更新各个层级使用时包含计量单元数量
 | 
			
		
	
		
			
				
					|  |  |  |  |         if (CollUtil.isNotEmpty(udiProductEntities)) { | 
			
		
	
		
			
				
					|  |  |  |  |             for (UdiProductEntity udiProductEntity : udiProductEntities) { | 
			
		
	
		
			
				
					|  |  |  |  |                 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(); | 
			
		
	
		
			
				
					|  |  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |                 udiProductEntity.setBhsycjsl(bhltsl); | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |         udiProductDao.updateBatchById(udiProductEntities); | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     @Override | 
			
		
	
		
			
				
					|  |  |  |  |     public boolean deleteByNameCode(String nameCode) { | 
			
		
	
		
			
				
					|  |  |  |  |         return udiProductDao.delete(new QueryWrapper<UdiProductEntity>().eq("nameCode", nameCode)) > 0; | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     /** | 
			
		
	
		
			
				
					|  |  |  |  |      * 根据当前层级标识计算流通拆零数量 | 
			
		
	
		
			
				
					|  |  |  |  |      */ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     private void setUpdateInfo(UdiProductEntity udiProductEntity, UdiRelevanceEntity udiRelevanceEntity) { | 
			
		
	
		
			
				
					|  |  |  |  |         Date now = new Date(); | 
			
		
	
		
			
				
					|  |  |  |  |         String userId = String.valueOf(customerService.getUserBean().getId()); | 
			
		
	
	
		
			
				
					|  |  |  | 
 |