药品字典修改
							parent
							
								
									791f8c09fd
								
							
						
					
					
						commit
						4409ea42e3
					
				| @ -0,0 +1,35 @@ | ||||
| package com.glxp.api.req.basic; | ||||
| 
 | ||||
| import lombok.Data; | ||||
| 
 | ||||
| @Data | ||||
| public class UpdateLevelDrugRequest { | ||||
| 
 | ||||
|     private Long id; | ||||
|     /** | ||||
|      * 层级标识 | ||||
|      */ | ||||
|     private String nameCode; | ||||
|     /** | ||||
|      * 包装级别 | ||||
|      */ | ||||
|     private Integer packLevel; | ||||
|     /** | ||||
|      * 包装层级 | ||||
|      */ | ||||
|     private String packUnit; | ||||
|     /** | ||||
|      * 上级产品编码 | ||||
|      */ | ||||
|     private String sjcpbm; | ||||
|     /** | ||||
|      * 下级产品编码 | ||||
|      */ | ||||
|     private String bhxjcpbm; | ||||
|     /** | ||||
|      * 包含下级数量 | ||||
|      */ | ||||
|     private Integer bhxjsl; | ||||
|     private Long relId; | ||||
|     private String uuid; | ||||
| } | ||||
| @ -1,77 +1,422 @@ | ||||
| package com.glxp.api.service.basic; | ||||
| 
 | ||||
| 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; | ||||
| import com.glxp.api.dao.basic.UdiRelevanceDao; | ||||
| import com.glxp.api.entity.basic.UdiProductEntity; | ||||
| import com.glxp.api.entity.basic.UdiRelevanceEntity; | ||||
| import com.glxp.api.exception.JsonException; | ||||
| 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.basic.UdiRelevanceResponse; | ||||
| import org.apache.ibatis.annotations.Param; | ||||
| import com.glxp.api.service.auth.CustomerService; | ||||
| import com.glxp.api.util.*; | ||||
| 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 java.util.List; | ||||
| import javax.annotation.Resource; | ||||
| import java.util.*; | ||||
| import java.util.stream.Collectors; | ||||
| 
 | ||||
| /** | ||||
|  * 耗材字典-字典信息 | ||||
|  */ | ||||
| public interface UdiProductService { | ||||
| @Service | ||||
| @Transactional(rollbackFor = Exception.class) | ||||
| public class UdiProductService { | ||||
|     @Resource | ||||
|     private CustomerService customerService; | ||||
|     @Resource | ||||
|     UdiProductDao udiProductDao; | ||||
|     @Resource | ||||
|     UdiRelevanceDao udiRelevanceDao; | ||||
|     @Resource | ||||
|     GennerOrderUtils gennerOrderUtils; | ||||
|     @Resource | ||||
|     private com.glxp.api.service.system.ClassifyCodeService classifyCodeService; | ||||
| 
 | ||||
|     List<UdiProductEntity> filterUdiInfo(FilterUdiRelRequest filterUdiRelRequest); | ||||
|     private static final Logger logger = LoggerFactory.getLogger(UdiProductService.class); | ||||
| 
 | ||||
|     UdiProductEntity findBySptm(String sptm); | ||||
|     public List<UdiProductEntity> filterUdiInfo(FilterUdiRelRequest filterUdiRelRequest) { | ||||
|         if (filterUdiRelRequest == null) { | ||||
|             return Collections.emptyList(); | ||||
|         } | ||||
|         if (filterUdiRelRequest.getPage() != null) { | ||||
|             int offset = (filterUdiRelRequest.getPage() - 1) * filterUdiRelRequest.getLimit(); | ||||
|             PageHelper.offsetPage(offset, filterUdiRelRequest.getLimit()); | ||||
|         } | ||||
| 
 | ||||
|     List<UdiRelevanceResponse> filterUdiInfo2(FilterUdiRelRequest filterUdiRelRequest); | ||||
|         List<UdiProductEntity> data = udiProductDao.filterUdiInfo(filterUdiRelRequest); | ||||
|         return data; | ||||
|     } | ||||
| 
 | ||||
|     UdiRelevanceResponse filterUdiInfoById(String id); | ||||
| 
 | ||||
|     List<UdiProductEntity> filterAllUdiInfo(FilterUdiRelRequest filterUdiRelRequest); | ||||
|     public UdiProductEntity findBySptm(String sptm) { | ||||
|         FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); | ||||
|         filterUdiRelRequest.setSptm(sptm); | ||||
|         List<UdiProductEntity> data = udiProductDao.filterUdiInfo(filterUdiRelRequest); | ||||
|         if (CollUtil.isNotEmpty(data)) { | ||||
|             return data.get(0); | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
| 
 | ||||
|     UdiProductEntity findByNameCode(String nameCode); | ||||
|     public List<UdiRelevanceResponse> filterUdiInfo2(FilterUdiRelRequest filterUdiRelRequest) { | ||||
|         if (filterUdiRelRequest == null) { | ||||
|             return Collections.emptyList(); | ||||
|         } | ||||
|         if (filterUdiRelRequest.getPage() != null) { | ||||
|             int offset = (filterUdiRelRequest.getPage() - 1) * filterUdiRelRequest.getLimit(); | ||||
|             PageHelper.offsetPage(offset, filterUdiRelRequest.getLimit()); | ||||
|         } | ||||
| 
 | ||||
|     UdiProductEntity findById(@Param("id") String id); | ||||
|         List<UdiRelevanceResponse> data = udiProductDao.filterUdiInfo2(filterUdiRelRequest); | ||||
|         return data; | ||||
|     } | ||||
| 
 | ||||
|     UdiProductEntity findByUuid(String uuid); | ||||
|     public UdiRelevanceResponse filterUdiInfoById(String id) { | ||||
|         return udiProductDao.filterUdiInfoById(id); | ||||
|     } | ||||
| 
 | ||||
|     List<UdiProductEntity> findByOriginUuid(String originUuid); | ||||
|     public List<UdiProductEntity> filterAllUdiInfo(FilterUdiRelRequest filterUdiRelRequest) { | ||||
|         if (filterUdiRelRequest == null) { | ||||
|             return Collections.emptyList(); | ||||
|         } | ||||
|         List<UdiProductEntity> data = udiProductDao.filterUdiInfo(filterUdiRelRequest); | ||||
|         return data; | ||||
|     } | ||||
| 
 | ||||
|     UdiProductEntity findOneByOriginUuid(String originUuid); | ||||
|     public UdiProductEntity findByNameCode(String nameCode) { | ||||
|         String prefix = FilterUdiUtils.getDiStr(nameCode); | ||||
|         return udiProductDao.findByNameCode(prefix); | ||||
|     } | ||||
| 
 | ||||
|     List<UdiProductEntity> findByUuids(String uuid); | ||||
|     public UdiProductEntity findById(String id) { | ||||
|         return udiProductDao.findById(id); | ||||
|     } | ||||
| 
 | ||||
|     boolean insertUdiInfo(UdiProductEntity udiProductEntity); | ||||
|     public UdiProductEntity findByUuid(String uuid) { | ||||
|         return udiProductDao.findByUuid(uuid); | ||||
|     } | ||||
| 
 | ||||
|     boolean insertUdiInfos(List<UdiProductEntity> udiInfoEntities); | ||||
|     public List<UdiProductEntity> findByOriginUuid(String originUuid) { | ||||
|         return udiProductDao.findByOriginUuid(originUuid); | ||||
|     } | ||||
| 
 | ||||
|     boolean updateUdiInfo(UdiProductEntity udiProductEntity); | ||||
| 
 | ||||
|     boolean updateUdiInfoByUuid(UdiProductEntity udiProductEntity); | ||||
|     public UdiProductEntity findOneByOriginUuid(String originUuid) { | ||||
|         List<UdiProductEntity> udiProductEntities = findByOriginUuid(originUuid); | ||||
|         if (CollUtil.isNotEmpty(udiProductEntities)) | ||||
|             return udiProductEntities.get(0); | ||||
|         return null; | ||||
|     } | ||||
| 
 | ||||
|     boolean updateUdiInfoById(UdiProductEntity udiProductEntity); | ||||
|     public List<UdiProductEntity> findByUuids(String uuid) { | ||||
|         return udiProductDao.findByUuids(uuid); | ||||
|     } | ||||
| 
 | ||||
|     boolean deleteById(String id); | ||||
|     public boolean insertUdiInfo(UdiProductEntity udiProductEntity) { | ||||
|         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(); | ||||
|             } | ||||
| 
 | ||||
|     boolean deleteByUuid(String uuid); | ||||
|         } | ||||
|         return udiProductDao.insertUdiInfo(udiProductEntity); | ||||
|     } | ||||
| 
 | ||||
|     public boolean insertUdiInfos(List<UdiProductEntity> udiInfoEntities) { | ||||
|         return udiProductDao.insertUdiInfos(udiInfoEntities); | ||||
|     } | ||||
| 
 | ||||
|     public boolean updateUdiInfo(UdiProductEntity udiProductEntity) { | ||||
|         if (StrUtil.isEmpty(udiProductEntity.getNameCode())) | ||||
|             return false; | ||||
|         return udiProductDao.updateUdiInfo(udiProductEntity); | ||||
|     } | ||||
| 
 | ||||
|     public boolean updateUdiInfoByUuid(UdiProductEntity udiProductEntity) { | ||||
|         if (StrUtil.isEmpty(udiProductEntity.getUuid())) | ||||
|             return false; | ||||
|         return udiProductDao.updateUdiInfoByUuid(udiProductEntity); | ||||
|     } | ||||
| 
 | ||||
|     public boolean updateUdiInfoById(UdiProductEntity udiProductEntity) { | ||||
|         return udiProductDao.updateUdiInfoById(udiProductEntity); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     public boolean deleteById(String id) { | ||||
|         return udiProductDao.deleteById(id); | ||||
|     } | ||||
| 
 | ||||
|     public boolean deleteByUuid(String uuid) { | ||||
|         return udiProductDao.deleteByUuid(uuid); | ||||
|     } | ||||
| 
 | ||||
|     public boolean deleteByNameCode(String nameCode) { | ||||
|         return udiProductDao.delete(new QueryWrapper<UdiProductEntity>().eq("nameCode", nameCode)) > 0; | ||||
|     } | ||||
| 
 | ||||
|     public List<String> getGgxhList(String relId) { | ||||
|         return udiProductDao.selectGgxhList(relId); | ||||
|     } | ||||
| 
 | ||||
|     public boolean updateUdiInfoNotAll(UdiInfoRequest udiInfoRequest) { | ||||
|         if (StrUtil.isEmpty(udiInfoRequest.getUuid())) | ||||
|             return false; | ||||
|         return udiProductDao.updateUdiInfoNotAll(udiInfoRequest); | ||||
|     } | ||||
| 
 | ||||
|     public UdiProductEntity getAllowNoBatch(String nameCode) { | ||||
|         String di = FilterUdiUtils.getDiStr(nameCode); | ||||
|         return udiProductDao.selectAllowNoBatch(di); | ||||
|     } | ||||
| 
 | ||||
|     public UdiProductEntity selectUdiByName(String nameCode) { | ||||
|         return udiProductDao.selectUdiByName(nameCode); | ||||
|     } | ||||
| 
 | ||||
|     public UdiProductEntity selectMinUdiByUuid(String uuid, Integer diType) { | ||||
|         FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); | ||||
|         filterUdiRelRequest.setUuid(uuid); | ||||
|         filterUdiRelRequest.setDiType(diType); | ||||
|         List<UdiProductEntity> udiProductEntities = udiProductDao.filterUdiInfo(filterUdiRelRequest); | ||||
|         if (CollUtil.isNotEmpty(udiProductEntities)) | ||||
|             return udiProductEntities.get(0); | ||||
|         return null; | ||||
|     } | ||||
| 
 | ||||
|     public void addProduct(AddProductRequest addProductRequest) { | ||||
|         UdiProductEntity udiProductEntity = new UdiProductEntity(); | ||||
|         BeanUtils.copyProperties(addProductRequest, udiProductEntity); | ||||
|         long relId = gennerOrderUtils.getRelId(); | ||||
|         udiProductEntity.setId(relId); | ||||
|         String code = addProductRequest.getCode(); | ||||
|         if (StrUtil.isEmpty(code)) { | ||||
|             udiProductEntity.setNameCode(relId + ""); | ||||
|         } else { | ||||
|             udiProductEntity.setNameCode(code); | ||||
|         } | ||||
|         udiProductEntity.setUuid(IdUtil.getSnowflakeNextId() + ""); | ||||
| 
 | ||||
|         udiProductEntity.setCpmctymc(addProductRequest.getName()); | ||||
|         udiProductEntity.setGgxh(addProductRequest.getSpec()); | ||||
|         udiProductEntity.setZczbhhzbapzbh(addProductRequest.getRegisterNo()); | ||||
|         udiProductEntity.setDiType(ConstantStatus.DI_TYPE_MAIN); | ||||
| 
 | ||||
|         UdiRelevanceEntity udiRelevanceEntity = new UdiRelevanceEntity(); | ||||
|         udiRelevanceEntity.setId(IdUtil.getSnowflakeNextId()); | ||||
|         udiRelevanceEntity.setIsDisable(false); | ||||
|         udiRelevanceEntity.setIsUseDy(false); | ||||
|         udiRelevanceEntity.setUuid(udiProductEntity.getUuid()); | ||||
|         udiRelevanceEntity.setNeedCert(false); | ||||
|         udiRelevanceEntity.setPurType(1); | ||||
|         udiRelevanceEntity.setAttributeType(addProductRequest.getAttributeType()); | ||||
|         udiRelevanceEntity.setHcType(addProductRequest.getHcType()); | ||||
|         // TODO: 2024/2/27 初始化其他字段
 | ||||
|         setUpdateInfo(udiProductEntity, udiRelevanceEntity); | ||||
|         //处理是否需要扫码字段
 | ||||
|         classifyCodeService.updateRequireScanCode(udiProductEntity); | ||||
|         udiProductDao.insertUdiInfo(udiProductEntity); | ||||
|         udiRelevanceDao.insertUdiRelevance(udiRelevanceEntity); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 查询产品规格型号列表 | ||||
|      * 新增/编辑药品信息 | ||||
|      * | ||||
|      * @param relId | ||||
|      * @param addProductRequest | ||||
|      * @return | ||||
|      */ | ||||
|     List<String> getGgxhList(String relId); | ||||
|     public AddProductRequest addDrug(AddProductRequest addProductRequest) { | ||||
| 
 | ||||
|         UdiRelevanceEntity udiRelevanceEntity; | ||||
|         //编辑保存
 | ||||
|         if (addProductRequest.getRelId() != null) { | ||||
|             udiRelevanceEntity = udiRelevanceDao.selectById(addProductRequest.getRelId()); | ||||
|             List<UdiProductEntity> udiProductEntities = udiProductDao.findByUuids(udiRelevanceEntity.getUuid()); | ||||
|             for (UdiProductEntity udiProductEntity : udiProductEntities) { | ||||
|                 addProductRequest.setNameCode(udiProductEntity.getNameCode()); | ||||
|                 BeanUtils.copyProperties(addProductRequest, udiProductEntity); | ||||
|                 udiProductEntity.setCpmctymc(addProductRequest.getCpmctymc()); | ||||
|                 udiProductEntity.setProductsType(2); | ||||
|                 udiProductEntity.setGgxh(addProductRequest.getSpec()); | ||||
|                 udiProductEntity.setPrice(addProductRequest.getPrice() == null ? "0" : addProductRequest.getPrice().toString()); | ||||
|                 udiProductEntity.setZczbhhzbapzbh(addProductRequest.getRegisterNo()); | ||||
|                 if (IntUtil.value(udiProductEntity.getPackLevel()) == 1) { | ||||
|                     udiProductEntity.setDiType(1); | ||||
|                 } | ||||
|                 udiProductDao.updateById(udiProductEntity); | ||||
|             } | ||||
|         } else { | ||||
|             udiRelevanceEntity = new UdiRelevanceEntity(); | ||||
|             udiRelevanceEntity.setId(IdUtil.getSnowflakeNextId()); | ||||
|             udiRelevanceEntity.setIsDisable(false); | ||||
|             udiRelevanceEntity.setIsUseDy(false); | ||||
|             udiRelevanceEntity.setUuid(IdUtil.getSnowflakeNextId() + ""); | ||||
|             udiRelevanceEntity.setNeedCert(false); | ||||
|             udiRelevanceEntity.setPurType(1); | ||||
|             udiRelevanceEntity.setProductsType(2); | ||||
|             udiRelevanceEntity.setAttributeType(addProductRequest.getAttributeType()); | ||||
|             udiRelevanceEntity.setHcType(addProductRequest.getHcType()); | ||||
| 
 | ||||
|             if (CollUtil.isNotEmpty(addProductRequest.getDrugLevelLists())) { | ||||
|                 for (UpdateLevelDrugRequest updateLevelDrugRequest : addProductRequest.getDrugLevelLists()) { | ||||
|                     UdiProductEntity udiProductEntity1 = udiProductDao.findByNameCode(updateLevelDrugRequest.getNameCode()); | ||||
|                     if (udiProductEntity1 != null) { | ||||
|                         throw new JsonException(500, "层级编码已存在!"); | ||||
|                     } | ||||
|                     UdiProductEntity udiProductEntity = new UdiProductEntity(); | ||||
|                     BeanUtils.copyProperties(updateLevelDrugRequest, udiProductEntity); | ||||
|                     udiProductEntity.setCpmctymc(addProductRequest.getCpmctymc()); | ||||
|                     udiProductEntity.setUuid(udiRelevanceEntity.getUuid()); | ||||
|                     udiProductEntity.setProductsType(2); | ||||
|                     udiProductEntity.setGgxh(addProductRequest.getSpec()); | ||||
|                     udiProductEntity.setPrice(addProductRequest.getPrice() == null ? "0" : addProductRequest.getPrice().toString()); | ||||
|                     udiProductEntity.setZczbhhzbapzbh(addProductRequest.getRegisterNo()); | ||||
|                     udiProductEntity.setPackLevel(updateLevelDrugRequest.getPackLevel() + ""); | ||||
|                     udiProductEntity.setUuid(udiProductEntity.getUuid()); | ||||
|                     if (IntUtil.value(udiProductEntity.getPackLevel()) == 1 || addProductRequest.getDrugLevelLists().size() == 1) { | ||||
|                         udiProductEntity.setDiType(1); | ||||
|                         if (IntUtil.value(udiProductEntity.getPackLevel()) == 1) { | ||||
|                             calculateDistCount(udiProductEntity, udiRelevanceEntity); | ||||
|                             calculateUseCount(udiProductEntity, udiRelevanceEntity); | ||||
|                         } | ||||
|                     } | ||||
|                     setUpdateInfo(udiProductEntity, udiRelevanceEntity); | ||||
|                     udiProductEntity.setId(IdUtil.getSnowflakeNextId()); | ||||
|                     udiProductDao.insert(udiProductEntity); | ||||
|                 } | ||||
| 
 | ||||
|             } | ||||
|             udiRelevanceDao.insertUdiRelevance(udiRelevanceEntity); | ||||
|         } | ||||
|         return addProductRequest; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 添加或更新层级药品信息 | ||||
|      */ | ||||
|     public void saveOrUpadateLevelDrug(UpdateLevelDrugRequest updateLevelDrugRequest) { | ||||
|         //编辑保存
 | ||||
|         if (updateLevelDrugRequest.getRelId() != null) { | ||||
|             UdiRelevanceEntity udiRelevanceEntity = udiRelevanceDao.selectById(updateLevelDrugRequest.getRelId()); | ||||
| 
 | ||||
|     boolean updateUdiInfoNotAll(UdiInfoRequest udiInfoRequest); | ||||
|             UdiProductEntity 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()); | ||||
|                 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.setUuid(udiRelevanceEntity.getUuid()); | ||||
|                 udiProductEntity1.setId(IdUtil.getSnowflakeNextId()); | ||||
|                 udiProductDao.insert(udiProductEntity1); | ||||
|             } | ||||
|         } else { | ||||
|             //必须先提交后才能保存
 | ||||
|             UdiProductEntity udiProductEntity1 = udiProductDao.findByNameCode(updateLevelDrugRequest.getNameCode()); | ||||
|             if (udiProductEntity1 != null) { | ||||
|                 throw new JsonException(500, "层级编码已存在!"); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 根据DI查询此产品是否允许无批次号 | ||||
|      * | ||||
|      * @param nameCode | ||||
|      * @return | ||||
|      * 根据当前层级标识计算流通拆零数量 | ||||
|      */ | ||||
|     UdiProductEntity getAllowNoBatch(String nameCode); | ||||
|     public void calculateDistCount(UdiProductEntity udiProductEntity, UdiRelevanceEntity udiRelevanceEntity) { | ||||
|         List<UdiProductEntity> udiProductEntities = udiProductDao.findByOriginUuid(udiProductEntity.getUuid()); | ||||
|         CountWrapper xjCountWrapper = new CountWrapper(); | ||||
|         findUltimateEntity(udiProductEntity, udiProductEntities, xjCountWrapper); | ||||
|         udiRelevanceEntity.setDistributeLevelDi(udiProductEntity.getNameCode()); | ||||
|         udiRelevanceEntity.setDistributeLevelUnit(udiProductEntity.getPackUnit()); | ||||
|         udiRelevanceEntity.setDistributeLevelCount(xjCountWrapper.getCount()); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 根据当前层级标识计算使用拆零数量 | ||||
|      */ | ||||
|     public void calculateUseCount(UdiProductEntity udiProductEntity, UdiRelevanceEntity udiRelevanceEntity) { | ||||
|         List<UdiProductEntity> udiProductEntities = udiProductDao.findByOriginUuid(udiProductEntity.getUuid()); | ||||
|         CountWrapper xjCountWrapper = new CountWrapper(); | ||||
|         findUltimateEntity(udiProductEntity, udiProductEntities, xjCountWrapper); | ||||
|         udiRelevanceEntity.setUseLevelDi(udiProductEntity.getNameCode()); | ||||
|         udiRelevanceEntity.setUseLevelUnit(udiProductEntity.getPackUnit()); | ||||
|         udiRelevanceEntity.setUseLeverCount(xjCountWrapper.getCount()); | ||||
|     } | ||||
| 
 | ||||
|     public static UdiProductEntity findUltimateEntity(UdiProductEntity udiProductEntity, List<UdiProductEntity> udiProductEntities, CountWrapper xjCountWrapper) { | ||||
|         if (StrUtil.isEmpty(udiProductEntity.getBhxjcpbm())) { | ||||
|             xjCountWrapper.addCount(udiProductEntity.getBhxjsl()); | ||||
|             return udiProductEntity; | ||||
|         } | ||||
| 
 | ||||
|         Optional<UdiProductEntity> nextEntityOptional = udiProductEntities.stream() | ||||
|                 .filter(item -> item.getNameCode().equals(udiProductEntity.getBhxjcpbm())) | ||||
|                 .findFirst(); | ||||
| 
 | ||||
|         nextEntityOptional.ifPresent(entity -> xjCountWrapper.addCount(udiProductEntity.getBhxjsl())); | ||||
| 
 | ||||
|         return nextEntityOptional | ||||
|                 .map(entity -> findUltimateEntity(entity, udiProductEntities, xjCountWrapper)) | ||||
|                 .orElse(null); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     private void setUpdateInfo(UdiProductEntity udiProductEntity, UdiRelevanceEntity udiRelevanceEntity) { | ||||
|         Date now = new Date(); | ||||
|         String userId = String.valueOf(customerService.getUserBean().getId()); | ||||
|         udiProductEntity.setUpdateTime(now); | ||||
|         udiProductEntity.setUpdateUser(userId); | ||||
|         udiRelevanceEntity.setModifyTime(now); | ||||
|         udiRelevanceEntity.setUpdateTime(now); | ||||
|         udiRelevanceEntity.setUpdateUser(userId); | ||||
|     } | ||||
| 
 | ||||
|     public static class CountWrapper { | ||||
|         private int count; | ||||
| 
 | ||||
|     UdiProductEntity selectUdiByName(String nameCode); | ||||
|         public CountWrapper() { | ||||
|             this.count = 1; | ||||
|         } | ||||
| 
 | ||||
|     UdiProductEntity selectMinUdiByUuid(String uuid, Integer diType); | ||||
|         public int getCount() { | ||||
|             return count; | ||||
|         } | ||||
| 
 | ||||
|     void addProduct(AddProductRequest addProductRequest); | ||||
|     void addDrug(AddProductRequest addProductRequest); | ||||
|         public void addCount(int value) { | ||||
|             if (value == 0) | ||||
|                 value = 1; | ||||
|             this.count = this.count * value; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -1,350 +0,0 @@ | ||||
| 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.github.pagehelper.PageHelper; | ||||
| import com.glxp.api.constant.ConstantStatus; | ||||
| import com.glxp.api.dao.basic.UdiProductDao; | ||||
| import com.glxp.api.dao.basic.UdiRelevanceDao; | ||||
| import com.glxp.api.entity.basic.BasicBusTypeChangeEntity; | ||||
| import com.glxp.api.entity.basic.UdiProductEntity; | ||||
| import com.glxp.api.entity.basic.UdiRelevanceEntity; | ||||
| import com.glxp.api.idc.service.impl.IdcServiceImpl; | ||||
| 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.res.basic.UdiRelevanceResponse; | ||||
| import com.glxp.api.service.auth.CustomerService; | ||||
| import com.glxp.api.service.basic.UdiProductService; | ||||
| import com.glxp.api.service.basic.UdiRelevanceService; | ||||
| import com.glxp.api.util.BeanCopyUtils; | ||||
| import com.glxp.api.util.GennerOrderUtils; | ||||
| import com.glxp.api.util.HardWareUtils; | ||||
| 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; | ||||
| 
 | ||||
| @Service | ||||
| @Transactional(rollbackFor = Exception.class) | ||||
| public class UdiProductServiceImpl implements UdiProductService { | ||||
|     @Resource | ||||
|     private CustomerService customerService; | ||||
|     @Resource | ||||
|     UdiProductDao udiProductDao; | ||||
|     @Resource | ||||
|     UdiRelevanceDao udiRelevanceDao; | ||||
|     @Resource | ||||
|     GennerOrderUtils gennerOrderUtils; | ||||
|     @Resource | ||||
|     private com.glxp.api.service.system.ClassifyCodeService classifyCodeService; | ||||
| 
 | ||||
|     private static final Logger logger = LoggerFactory.getLogger(UdiProductServiceImpl.class); | ||||
| 
 | ||||
|     @Override | ||||
|     public List<UdiProductEntity> filterUdiInfo(FilterUdiRelRequest filterUdiRelRequest) { | ||||
|         if (filterUdiRelRequest == null) { | ||||
|             return Collections.emptyList(); | ||||
|         } | ||||
|         if (filterUdiRelRequest.getPage() != null) { | ||||
|             int offset = (filterUdiRelRequest.getPage() - 1) * filterUdiRelRequest.getLimit(); | ||||
|             PageHelper.offsetPage(offset, filterUdiRelRequest.getLimit()); | ||||
|         } | ||||
| 
 | ||||
|         List<UdiProductEntity> data = udiProductDao.filterUdiInfo(filterUdiRelRequest); | ||||
|         return data; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     @Override | ||||
|     public UdiProductEntity findBySptm(String sptm) { | ||||
|         FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); | ||||
|         filterUdiRelRequest.setSptm(sptm); | ||||
|         List<UdiProductEntity> data = udiProductDao.filterUdiInfo(filterUdiRelRequest); | ||||
|         if (CollUtil.isNotEmpty(data)) { | ||||
|             return data.get(0); | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public List<UdiRelevanceResponse> filterUdiInfo2(FilterUdiRelRequest filterUdiRelRequest) { | ||||
|         if (filterUdiRelRequest == null) { | ||||
|             return Collections.emptyList(); | ||||
|         } | ||||
|         if (filterUdiRelRequest.getPage() != null) { | ||||
|             int offset = (filterUdiRelRequest.getPage() - 1) * filterUdiRelRequest.getLimit(); | ||||
|             PageHelper.offsetPage(offset, filterUdiRelRequest.getLimit()); | ||||
|         } | ||||
| 
 | ||||
|         List<UdiRelevanceResponse> data = udiProductDao.filterUdiInfo2(filterUdiRelRequest); | ||||
|         return data; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public UdiRelevanceResponse filterUdiInfoById(String id) { | ||||
|         return udiProductDao.filterUdiInfoById(id); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public List<UdiProductEntity> filterAllUdiInfo(FilterUdiRelRequest filterUdiRelRequest) { | ||||
|         if (filterUdiRelRequest == null) { | ||||
|             return Collections.emptyList(); | ||||
|         } | ||||
|         List<UdiProductEntity> data = udiProductDao.filterUdiInfo(filterUdiRelRequest); | ||||
|         return data; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public UdiProductEntity findByNameCode(String nameCode) { | ||||
|         String prefix = FilterUdiUtils.getDiStr(nameCode); | ||||
|         return udiProductDao.findByNameCode(prefix); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public UdiProductEntity findById(String id) { | ||||
|         return udiProductDao.findById(id); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public UdiProductEntity findByUuid(String uuid) { | ||||
|         return udiProductDao.findByUuid(uuid); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public List<UdiProductEntity> findByOriginUuid(String originUuid) { | ||||
|         return udiProductDao.findByOriginUuid(originUuid); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     @Override | ||||
|     public UdiProductEntity findOneByOriginUuid(String originUuid) { | ||||
|         List<UdiProductEntity> udiProductEntities = findByOriginUuid(originUuid); | ||||
|         if (CollUtil.isNotEmpty(udiProductEntities)) | ||||
|             return udiProductEntities.get(0); | ||||
|         return null; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public List<UdiProductEntity> findByUuids(String uuid) { | ||||
|         return udiProductDao.findByUuids(uuid); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean insertUdiInfo(UdiProductEntity udiProductEntity) { | ||||
|         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(); | ||||
|             } | ||||
| 
 | ||||
|         } | ||||
|         return udiProductDao.insertUdiInfo(udiProductEntity); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean insertUdiInfos(List<UdiProductEntity> udiInfoEntities) { | ||||
|         return udiProductDao.insertUdiInfos(udiInfoEntities); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean updateUdiInfo(UdiProductEntity udiProductEntity) { | ||||
|         if (StrUtil.isEmpty(udiProductEntity.getNameCode())) | ||||
|             return false; | ||||
|         return udiProductDao.updateUdiInfo(udiProductEntity); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean updateUdiInfoByUuid(UdiProductEntity udiProductEntity) { | ||||
|         if (StrUtil.isEmpty(udiProductEntity.getUuid())) | ||||
|             return false; | ||||
|         return udiProductDao.updateUdiInfoByUuid(udiProductEntity); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean updateUdiInfoById(UdiProductEntity udiProductEntity) { | ||||
|         return udiProductDao.updateUdiInfoById(udiProductEntity); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean deleteById(String id) { | ||||
|         return udiProductDao.deleteById(id); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean deleteByUuid(String uuid) { | ||||
|         return udiProductDao.deleteByUuid(uuid); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public List<String> getGgxhList(String relId) { | ||||
|         return udiProductDao.selectGgxhList(relId); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean updateUdiInfoNotAll(UdiInfoRequest udiInfoRequest) { | ||||
|         if (StrUtil.isEmpty(udiInfoRequest.getUuid())) | ||||
|             return false; | ||||
|         return udiProductDao.updateUdiInfoNotAll(udiInfoRequest); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public UdiProductEntity getAllowNoBatch(String nameCode) { | ||||
|         String di = FilterUdiUtils.getDiStr(nameCode); | ||||
|         return udiProductDao.selectAllowNoBatch(di); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public UdiProductEntity selectUdiByName(String nameCode) { | ||||
|         return udiProductDao.selectUdiByName(nameCode); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public UdiProductEntity selectMinUdiByUuid(String uuid, Integer diType) { | ||||
|         FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); | ||||
|         filterUdiRelRequest.setUuid(uuid); | ||||
|         filterUdiRelRequest.setDiType(diType); | ||||
|         List<UdiProductEntity> udiProductEntities = udiProductDao.filterUdiInfo(filterUdiRelRequest); | ||||
|         if (CollUtil.isNotEmpty(udiProductEntities)) | ||||
|             return udiProductEntities.get(0); | ||||
|         return null; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void addProduct(AddProductRequest addProductRequest) { | ||||
|         UdiProductEntity udiProductEntity = new UdiProductEntity(); | ||||
|         BeanUtils.copyProperties(addProductRequest, udiProductEntity); | ||||
|         long relId = gennerOrderUtils.getRelId(); | ||||
|         udiProductEntity.setId(relId); | ||||
|         String code = addProductRequest.getCode(); | ||||
|         if (StrUtil.isEmpty(code)) { | ||||
|             udiProductEntity.setNameCode(relId + ""); | ||||
|         } else { | ||||
|             udiProductEntity.setNameCode(code); | ||||
|         } | ||||
|         udiProductEntity.setUuid(IdUtil.getSnowflakeNextId() + ""); | ||||
| 
 | ||||
|         udiProductEntity.setCpmctymc(addProductRequest.getName()); | ||||
|         udiProductEntity.setGgxh(addProductRequest.getSpec()); | ||||
|         udiProductEntity.setZczbhhzbapzbh(addProductRequest.getRegisterNo()); | ||||
|         udiProductEntity.setDiType(ConstantStatus.DI_TYPE_MAIN); | ||||
| 
 | ||||
|         UdiRelevanceEntity udiRelevanceEntity = new UdiRelevanceEntity(); | ||||
|         udiRelevanceEntity.setId(IdUtil.getSnowflakeNextId()); | ||||
|         udiRelevanceEntity.setIsDisable(false); | ||||
|         udiRelevanceEntity.setIsUseDy(false); | ||||
|         udiRelevanceEntity.setUuid(udiProductEntity.getUuid()); | ||||
|         udiRelevanceEntity.setNeedCert(false); | ||||
|         udiRelevanceEntity.setPurType(1); | ||||
|         udiRelevanceEntity.setAttributeType(addProductRequest.getAttributeType()); | ||||
|         udiRelevanceEntity.setHcType(addProductRequest.getHcType()); | ||||
|         // TODO: 2024/2/27 初始化其他字段
 | ||||
|         setUpdateInfo(udiProductEntity, udiRelevanceEntity); | ||||
|         //处理是否需要扫码字段
 | ||||
|         classifyCodeService.updateRequireScanCode(udiProductEntity); | ||||
|         udiProductDao.insertUdiInfo(udiProductEntity); | ||||
|         udiRelevanceDao.insertUdiRelevance(udiRelevanceEntity); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void addDrug(AddProductRequest addProductRequest) { | ||||
|         UdiProductEntity udiProductEntity = new UdiProductEntity(); | ||||
|         BeanUtils.copyProperties(addProductRequest, udiProductEntity); | ||||
|         long relId = gennerOrderUtils.getRelId(); | ||||
|         udiProductEntity.setId(relId); | ||||
|         String code = addProductRequest.getCode(); | ||||
|         if (StrUtil.isEmpty(code)) { | ||||
|             udiProductEntity.setNameCode(relId + ""); | ||||
|         } else { | ||||
|             udiProductEntity.setNameCode(code); | ||||
|         } | ||||
|         udiProductEntity.setUuid(IdUtil.getSnowflakeNextId() + ""); | ||||
| 
 | ||||
|         udiProductEntity.setCpmctymc(addProductRequest.getCpmctymc()); | ||||
|         udiProductEntity.setGgxh(addProductRequest.getSpec()); | ||||
|         udiProductEntity.setPrice(addProductRequest.getPrice().toString()); | ||||
|         udiProductEntity.setZczbhhzbapzbh(addProductRequest.getRegisterNo()); | ||||
|         udiProductEntity.setDiType(ConstantStatus.DI_TYPE_MAIN); | ||||
| 
 | ||||
|         UdiRelevanceEntity udiRelevanceEntity = new UdiRelevanceEntity(); | ||||
|         udiRelevanceEntity.setId(IdUtil.getSnowflakeNextId()); | ||||
|         udiRelevanceEntity.setIsDisable(false); | ||||
|         udiRelevanceEntity.setIsUseDy(false); | ||||
|         udiRelevanceEntity.setUuid(udiProductEntity.getUuid()); | ||||
|         udiRelevanceEntity.setNeedCert(false); | ||||
|         udiRelevanceEntity.setPurType(1); | ||||
|         udiRelevanceEntity.setAttributeType(addProductRequest.getAttributeType()); | ||||
|         udiRelevanceEntity.setHcType(addProductRequest.getHcType()); | ||||
|         // TODO: 2024/2/27 初始化其他字段
 | ||||
|         setUpdateInfo(udiProductEntity, udiRelevanceEntity); | ||||
|         //处理是否需要扫码字段
 | ||||
|         classifyCodeService.updateRequireScanCode(udiProductEntity); | ||||
|         udiProductDao.insertUdiInfo(udiProductEntity); | ||||
|         udiRelevanceDao.insertUdiRelevance(udiRelevanceEntity); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 添加或更新层级药品信息 | ||||
|      * | ||||
|      * @param addProductRequest | ||||
|      */ | ||||
|     @Override | ||||
|     public void saveOrUpadateLevelDrug(AddProductRequest addProductRequest) { | ||||
|         UdiProductEntity udiProductEntity = new UdiProductEntity(); | ||||
|         BeanUtils.copyProperties(addProductRequest, udiProductEntity); | ||||
|         if (addProductRequest.getRelId() != null) { | ||||
|             UdiRelevanceEntity udiRelevanceEntity = udiRelevanceDao.selectById(addProductRequest.getRelId()); | ||||
|             if (udiRelevanceEntity != null) { | ||||
|                 udiProductEntity.setUuid(udiRelevanceEntity.getUuid()); | ||||
|             } | ||||
|         } else { | ||||
|             udiProductEntity.setUuid(IdUtil.getSnowflakeNextId() + ""); | ||||
|         } | ||||
|         udiProductEntity.setCpmctymc(addProductRequest.getCpmctymc()); | ||||
|         udiProductEntity.setGgxh(addProductRequest.getSpec()); | ||||
|         udiProductEntity.setPrice(addProductRequest.getPrice().toString()); | ||||
|         udiProductEntity.setZczbhhzbapzbh(addProductRequest.getRegisterNo()); | ||||
|         udiProductEntity.setDiType(ConstantStatus.DI_TYPE_MAIN); | ||||
| 
 | ||||
|         //处理是否需要扫码字段
 | ||||
|         classifyCodeService.updateRequireScanCode(udiProductEntity); | ||||
| 
 | ||||
|         UdiProductEntity udiProductEntity1 = udiProductDao.findByNameCode(udiProductEntity.getNameCode()); | ||||
|         if (udiProductEntity1 != null) { | ||||
|             udiProductDao.updateUdiInfoById(udiProductEntity); | ||||
|         } else | ||||
|             udiProductDao.insertUdiInfo(udiProductEntity); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     private void setUpdateInfo(UdiProductEntity udiProductEntity, UdiRelevanceEntity udiRelevanceEntity) { | ||||
|         Date now = new Date(); | ||||
|         String userId = String.valueOf(customerService.getUserBean().getId()); | ||||
|         udiProductEntity.setUpdateTime(now); | ||||
|         udiProductEntity.setUpdateUser(userId); | ||||
|         udiProductEntity.setCreateTime(now); | ||||
|         udiProductEntity.setCreateUser(userId); | ||||
|         udiRelevanceEntity.setModifyTime(now); | ||||
|         udiRelevanceEntity.setUpdateTime(now); | ||||
|         udiRelevanceEntity.setUpdateUser(userId); | ||||
|         udiRelevanceEntity.setCreateTime(now); | ||||
|         udiRelevanceEntity.setCreateUser(userId); | ||||
|     } | ||||
| } | ||||
					Loading…
					
					
				
		Reference in New Issue