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.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.dao.basic.UdiRelevanceDao; import com.glxp.api.dto.BasicProductsCreateDto; import com.glxp.api.entity.auth.AuthAliUser; import com.glxp.api.entity.basic.UdiProductEntity; import com.glxp.api.entity.basic.UdiRelevanceEntity; import com.glxp.api.entity.thrsys.*; import com.glxp.api.exception.JsonException; import com.glxp.api.http.NmpaUdiClient; import com.glxp.api.http.sync.SpGetHttpClient; import com.glxp.api.req.alihealth.AlihealthKytDrugrescodeReqeust; import com.glxp.api.req.alihealth.local.AlihealthThirdAliDrugInsertReqeust; import com.glxp.api.req.basic.FilterUdiRelRequest; import com.glxp.api.req.basic.UdiCombineRequest; import com.glxp.api.req.basic.YbDrugDetailFilterRequest; import com.glxp.api.req.thrsys.FilterThrProductsRequest; import com.glxp.api.req.thrsys.ThrInsDrugFeeRequest; import com.glxp.api.req.thrsys.ThrInsMaterialFeeRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.service.auth.AuthAliUserService; import com.glxp.api.service.thrsys.BasicInsMaterialService; import com.glxp.api.service.thrsys.ThirdAliDrugService; import com.glxp.api.service.thrsys.ThrProductsService; import com.glxp.api.service.thrsys.YbDrugService; import com.glxp.api.util.*; import com.glxp.api.util.alihealth.CopyUtils; import com.glxp.api.util.udi.UdiInfoUtil; import lombok.extern.slf4j.Slf4j; import org.jfree.util.Log; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * 耗材字典对照 */ @Service @Slf4j public class UdiContrastService { @Resource UdiRelevanceDao udiRelevanceDao; @Resource GennerOrderUtils gennerOrderUtils; @Resource ThrProductsService thrProductsService; @Resource UdiRelevanceService udiRelevanceService; @Resource UdiProductService udiProductService; @Resource NmpaUdiClient udiDlHttpClient; @Resource BasicInsMaterialService basicInsMaterialService; @Resource YbDrugService ybDrugService; @Resource private SpGetHttpClient spGetHttpClient; @Resource private AuthAliUserService authAliUserService; public boolean isExit(String originUuid, String mainId, String thirdSys) { String deviceRecordKey = null; if (StrUtil.isNotEmpty(originUuid)) { UdiProductEntity udiProductEntity = udiProductService.findOneByOriginUuid(originUuid); if (udiProductEntity != null) deviceRecordKey = udiProductEntity.getDeviceRecordKey(); } if (StrUtil.isNotEmpty(deviceRecordKey) && StrUtil.isNotEmpty(mainId) && StrUtil.isBlank(thirdSys)) { List udiRelevanceEntities = findDrkByUnion(deviceRecordKey, mainId); if (CollUtil.isNotEmpty(udiRelevanceEntities)) { return true; } else return false; } else if (StrUtil.isNotEmpty(deviceRecordKey) && StrUtil.isEmpty(mainId)) { List udiRelevanceEntities = findByDeviceRecordKey(deviceRecordKey); if (CollUtil.isNotEmpty(udiRelevanceEntities)) { for (UdiRelevanceResponse udiRelevanceEntity : udiRelevanceEntities) { if (StrUtil.isEmpty(udiRelevanceEntity.getMainId()) && StrUtil.isNotEmpty(udiRelevanceEntity.getOriginUuid())) { return true; } } } return false; } else if (StrUtil.isEmpty(originUuid) && StrUtil.isNotEmpty(mainId)) { List udiRelevanceEntities = findByMainId(mainId); if (CollUtil.isNotEmpty(udiRelevanceEntities)) { for (UdiRelevanceResponse udiRelevanceEntity : udiRelevanceEntities) { if (StrUtil.isEmpty(udiRelevanceEntity.getOriginUuid()) && StrUtil.isNotEmpty(udiRelevanceEntity.getMainId())) { return true; } } } return false; } else if (StrUtil.isNotBlank(deviceRecordKey) && StrUtil.isNotBlank(mainId) && StrUtil.isNotBlank(thirdSys)) { List udiRelevanceEntities = findByUnion2(deviceRecordKey, mainId, thirdSys); if (CollUtil.isNotEmpty(udiRelevanceEntities)) { return true; } else return false; } return false; } public boolean isDrugExit(String originUuid, String mainId, String thirdSys) { String deviceRecordKey = null; //国家库的key if (StrUtil.isNotEmpty(originUuid)) { UdiProductEntity udiProductEntity = udiProductService.findOneByOriginUuid(originUuid); if (udiProductEntity != null) deviceRecordKey = udiProductEntity.getDeviceRecordKey(); } if (StrUtil.isNotEmpty(deviceRecordKey) && StrUtil.isNotEmpty(mainId) && StrUtil.isBlank(thirdSys)) { List udiRelevanceEntities = findDrkByUnion(deviceRecordKey, mainId); if (CollUtil.isNotEmpty(udiRelevanceEntities)) { return true; } else return false; } else if (StrUtil.isNotEmpty(deviceRecordKey) && StrUtil.isEmpty(mainId)) { List udiRelevanceEntities = findByDeviceRecordKey(deviceRecordKey); if (CollUtil.isNotEmpty(udiRelevanceEntities)) { for (UdiRelevanceResponse udiRelevanceEntity : udiRelevanceEntities) { if (StrUtil.isEmpty(udiRelevanceEntity.getMainId()) && StrUtil.isNotEmpty(udiRelevanceEntity.getOriginUuid())) { return true; } } } return false; } else if (StrUtil.isNotEmpty(originUuid) && StrUtil.isNotEmpty(mainId)) { List udiRelevanceEntities = findByMainId(mainId); if (CollUtil.isNotEmpty(udiRelevanceEntities)) { for (UdiRelevanceResponse udiRelevanceEntity : udiRelevanceEntities) { if (StrUtil.isEmpty(udiRelevanceEntity.getOriginUuid()) && StrUtil.isNotEmpty(udiRelevanceEntity.getMainId())) { return true; } } } return false; } else if (StrUtil.isNotBlank(deviceRecordKey) && StrUtil.isNotBlank(mainId) && StrUtil.isNotBlank(thirdSys)) { List udiRelevanceEntities = findByUnion2(deviceRecordKey, mainId, thirdSys); if (CollUtil.isNotEmpty(udiRelevanceEntities)) { return true; } else return false; } return false; } private List findByUnion2(String deviceRecordKey, String mainId, String thirdSys) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setMainId(mainId); filterUdiRelRequest.setDeviceRecordKey(deviceRecordKey); filterUdiRelRequest.setThirdSys(thirdSys); List udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest); return udiRelevanceEntities; } public List findByUnion(String originUuid, String mainId) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setMainId(mainId); filterUdiRelRequest.setOriginUuid(originUuid); List udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest); return udiRelevanceEntities; } public List findDrkByUnion(String deviceRecordKey, String mainId) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setMainId(mainId); filterUdiRelRequest.setDeviceRecordKey(deviceRecordKey); List udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest); return udiRelevanceEntities; } public List findByUuid(String uuid) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setUuid(uuid); List udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest); return udiRelevanceEntities; } public UdiRelevanceResponse findById(Long id) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setId(id); List udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest); if (CollUtil.isNotEmpty(udiRelevanceEntities)) return udiRelevanceEntities.get(0); return null; } public List findByOriginUuid(String originUuid) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setOriginUuid(originUuid); List udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest); return udiRelevanceEntities; } public List findByDeviceRecordKey(String deviceRecordKey) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setDeviceRecordKey(deviceRecordKey); List udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest); return udiRelevanceEntities; } public List findByMainId(String mainId) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setMainId(mainId); List udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest); return udiRelevanceEntities; } public void createUnionContrast(UdiCombineRequest udiCombineRequest, String key) { List udiInfoEntities = udiDlHttpClient.getOrUpdateByUuid(key); UdiRelevanceEntity udiRelevanceEntity = new UdiRelevanceEntity(); udiRelevanceEntity.setThirdId(udiCombineRequest.getThirdId()); udiRelevanceEntity.setMainId(udiCombineRequest.getThirdId()); udiRelevanceEntity.setUpdateTime(new Date()); udiRelevanceEntity.setModifyTime(new Date()); udiRelevanceEntity.setUuid(udiInfoEntities.get(0).getUuid()); udiRelevanceEntity.setSupName(udiCombineRequest.getSupName()); udiRelevanceEntity.setId(gennerOrderUtils.getRelId()); udiRelevanceEntity.setIsDisable(false); UdiProductEntity udiProductEntity = getDiProduct(udiInfoEntities); udiRelevanceEntity = udiRelevanceService.insertDefaultLevel(udiRelevanceEntity, udiProductEntity); udiRelevanceService.insertUdiRelevance(udiRelevanceEntity); insertUdiInfos(udiInfoEntities); } public UdiProductEntity getDiProduct(List udiInfoEntities) { return udiInfoEntities.stream() .filter(udiProductEntity -> IntUtil.value(udiProductEntity.getDiType()) == 1) .findFirst() .orElse(null); } public BaseResponse createOnlyMainId(BasicProductsCreateDto basicProductsCreateDto) { String mainId = basicProductsCreateDto.getMainId(); FilterThrProductsRequest filterThrProductsRequest = new FilterThrProductsRequest(); filterThrProductsRequest.setCode(mainId); ThrProductsEntity thrProductsEntity = thrProductsService.selectByCode(mainId); UdiRelevanceEntity udiRelevanceEntity = new UdiRelevanceEntity(); udiRelevanceEntity.setThirdId(thrProductsEntity.getCode()); udiRelevanceEntity.setMainId(thrProductsEntity.getCode()); udiRelevanceEntity.setUpdateTime(new Date()); udiRelevanceEntity.setModifyTime(new Date()); udiRelevanceEntity.setUuid(CustomUtil.getUUId()); udiRelevanceEntity.setSupName(thrProductsEntity.getSupName()); udiRelevanceEntity.setId(gennerOrderUtils.getRelId()); udiRelevanceEntity.setSplitEnable(true); udiRelevanceEntity.setAutoCode(true); udiRelevanceEntity.setIsDisable(false); BasicInsMaterialEntity basicInsMaterialEntity = null; if (thrProductsEntity.getYbbm() != null) { //判断药品还是器械 if (thrProductsEntity.getProductType() == 2) { ThrInsDrugFeeRequest thrInsDrugFeeRequest = new ThrInsDrugFeeRequest(); thrInsDrugFeeRequest.setMedCatalogCode(thrProductsEntity.getYbbm()); YbDrugDetailFilterRequest ybHcflDetailFilterRequest = new YbDrugDetailFilterRequest(); ybHcflDetailFilterRequest.setLimit(1); ybHcflDetailFilterRequest.setPage(1); ybHcflDetailFilterRequest.setGoodsCode(thrProductsEntity.getYbbm()); List list = ybDrugService.getList(ybHcflDetailFilterRequest); YbDrug ybDrug; if (list != null && list.size() > 0) { ybDrug = list.get(0); } else { return ResultVOUtils.error(500, "未能查询到此医保编码"); } if (StrUtil.isEmpty(ybDrug.getApprovalCode()) || StrUtil.isEmpty(ybDrug.getRegisteredProductName())) { return ResultVOUtils.success(); } // 本地查询先注释了 // 查询多玛融合库 List thirdAliDrugList = new ArrayList<>(); AuthAliUser authAliUser = authAliUserService.getOne(); AlihealthThirdAliDrugInsertReqeust alihealthThirdAliDrugInsertReqeust = new AlihealthThirdAliDrugInsertReqeust(); alihealthThirdAliDrugInsertReqeust.setErpId(authAliUser.getErpid()); alihealthThirdAliDrugInsertReqeust.setAppSecret(authAliUser.getAppsecret()); alihealthThirdAliDrugInsertReqeust.setSelectCodeRelMark(true); // alihealthThirdAliDrugInsertReqeust.setManufactory(udiProductEntity.getManufactory()); alihealthThirdAliDrugInsertReqeust.setYbDrug(ybDrug); AlihealthKytDrugrescodeReqeust alihealthKytDrugrescodeReqeust = new AlihealthKytDrugrescodeReqeust(); alihealthKytDrugrescodeReqeust.setPhysic_name(ybDrug.getRegisteredProductName()); alihealthKytDrugrescodeReqeust.setApproval_licence_no(ybDrug.getApprovalCode()); alihealthKytDrugrescodeReqeust.setPage_size(200); alihealthKytDrugrescodeReqeust.setPage(1); alihealthKytDrugrescodeReqeust.setApp_key(authAliUser.getAppkey()); alihealthKytDrugrescodeReqeust.setRef_ent_id(authAliUser.getRefentid()); alihealthThirdAliDrugInsertReqeust.setAlihealthKytDrugrescodeReqeust(alihealthKytDrugrescodeReqeust); try { BaseResponse> baseResponse = spGetHttpClient.thirdAliDrugList(alihealthThirdAliDrugInsertReqeust); if (baseResponse.getCode() == 20000) { thirdAliDrugList = baseResponse.getData().getList(); } } catch (Exception e) { log.error("供应商平台获取阿里和国家库码段信息出现错误===" + e.getMessage()); } // 处理药品数据 disposeDrugData(basicProductsCreateDto,thrProductsEntity,ybDrug,thirdAliDrugList,udiRelevanceEntity); // setLevel(udiRelevanceEntity.getUuid()); UdiProductEntity byUuid = udiProductService.findByUuid(udiRelevanceEntity.getUuid()); udiRelevanceEntity = udiRelevanceService.insertDefaultLevel(udiRelevanceEntity, byUuid); udiRelevanceService.insertUdiRelevance(udiRelevanceEntity); udiProductService.updateLevelCount(udiRelevanceEntity); } else { //器械 ThrInsMaterialFeeRequest request = new ThrInsMaterialFeeRequest(); request.setMedCatalogCode(thrProductsEntity.getYbbm()); List basicInsMaterialEntities = basicInsMaterialService.filterList(request); if (basicInsMaterialEntities.size() > 0) { basicInsMaterialEntity = basicInsMaterialEntities.get(0); } UdiProductEntity udiProductEntity = new UdiProductEntity(); BeanUtils.copyProperties(thrProductsEntity, udiProductEntity); udiProductEntity.setNameCode(thrProductsEntity.getCode()); udiProductEntity.setZczbhhzbapzbh(thrProductsEntity.getRegisterNo()); udiProductEntity.setPackUnit(thrProductsEntity.getMeasname()); if (basicInsMaterialEntity != null) { udiProductEntity.setGgxh(basicInsMaterialEntity.getSpecification() != null ? basicInsMaterialEntity.getSpecification() : thrProductsEntity.getSpec()); udiProductEntity.setManufactory(basicInsMaterialEntity.getManufacturerName() != null ? basicInsMaterialEntity.getManufacturerName() : thrProductsEntity.getManufactory()); } // udiProductEntity.setBzgg(thrProductsEntity.getSpec()); udiProductEntity.setGgxh(thrProductsEntity.getSpec()); udiProductEntity.setCpmctymc(thrProductsEntity.getName()); udiProductEntity.setYlqxzcrbarmc(thrProductsEntity.getManufactory()); //包装单位 udiProductEntity.setPrepnUnit(thrProductsEntity.getPrepnUnit() == null ? null : thrProductsEntity.getPrepnUnit()); udiProductEntity.setUuid(udiRelevanceEntity.getUuid()); udiProductEntity.setProductType(ConstantStatus.PRODUCT_TYPE_THIRD); udiProductEntity.setDiType(1); udiProductEntity.setScbssfbhph("是"); udiProductEntity.setScbssfbhscrq("是"); udiProductEntity.setScbssfbhsxrq("是"); udiProductEntity.setScbssfbhxlh("否"); udiProductEntity.setPackLevel(1 + ""); udiProductEntity.setProductsType(thrProductsEntity.getProductType()); udiProductEntity.setRequireScanCode(0); udiProductEntity.setUpdateTime(new Date()); if (StrUtil.isEmpty(udiProductEntity.getPrice())) { udiProductEntity.setPrice(null); } udiProductEntity = UdiInfoUtil.initUdiInfoEntity(udiProductEntity); udiProductService.insertUdiInfo(udiProductEntity); udiRelevanceEntity = udiRelevanceService.insertDefaultLevel(udiRelevanceEntity, udiProductEntity); udiRelevanceService.insertUdiRelevance(udiRelevanceEntity); udiProductService.updateLevelCount(udiRelevanceEntity); } } else { //没有医保编码 Boolean aBoolean = insertProduct(thrProductsEntity, basicInsMaterialEntity, udiRelevanceEntity); if (!aBoolean) { throw new JsonException(500, "系统繁忙,"); } return ResultVOUtils.success(); } return ResultVOUtils.success(); } public UdiProductEntity disposeDrugDataNew(ThrProductsEntity thrProductsEntity,UdiRelevanceEntity udiRelevanceEntity, YbDrug ybDrug){ UdiProductEntity udiProductEntity = new UdiProductEntity(); BeanUtils.copyProperties(thrProductsEntity, udiProductEntity); // 数据处理 udiProductEntity.setId(IdUtil.getSnowflakeNextId()); udiProductEntity.setUuid(udiRelevanceEntity.getUuid()); udiProductEntity.setDiType(1); udiProductEntity.setScbssfbhph("是"); udiProductEntity.setScbssfbhscrq("是"); udiProductEntity.setScbssfbhsxrq("是"); udiProductEntity.setScbssfbhxlh("否"); udiProductEntity.setProductsType(thrProductsEntity.getProductType()); udiProductEntity.setRequireScanCode(1); udiProductEntity.setMajorStatus(1); udiProductEntity.setPhysicType(3); //设置包装级别 udiProductEntity.setPackLevel(1 + ""); if (StrUtil.isEmpty(udiProductEntity.getPrice())) { udiProductEntity.setPrice("0.00"); } udiProductEntity.setUpdateTime(new Date()); udiProductEntity = UdiInfoUtil.initUdiInfoEntity(udiProductEntity); udiProductEntity.setPrepnSpec(ybDrug.getRealityOutlook()); udiProductEntity.setZczbhhzbapzbh(ybDrug.getApprovalCode()); udiProductEntity.setCpmctymc(ybDrug.getRegisteredProductName()); udiProductEntity.setSpmc(ybDrug.getGoodsName()); udiProductEntity.setBzgg(String.valueOf(ybDrug.getFactor()) + ybDrug.getMinUnit() + "/" + ybDrug.getUnit()); udiProductEntity.setMatrial(ybDrug.getMaterialName()); udiProductEntity.setPackMatrial(ybDrug.getMaterialName()); udiProductEntity.setMedicareType(setMedicareType(ybDrug.getProductInsuranceType())); //最小产品单位 udiProductEntity.setPackUnit(ybDrug.getUnit()); //设置最小产品数量 udiProductEntity.setBhxjsl(ybDrug.getFactor()); //生产厂家 udiProductEntity.setManufactory(ybDrug.getCompanyNameSc()); //商品条码 essentialDrugMarkName sptm // udiProductEntity.setSptm(ybDrug.getBusinessLicense()); udiProductEntity.setPrepnUnit(ybDrug.getRealityMedicinemodel()); return udiProductEntity; } /** * 处理药品数据 * * @param thrProductsEntity * @param ybDrug * @param thirdAliDrugList */ public void disposeDrugData(BasicProductsCreateDto basicProductsCreateDto, ThrProductsEntity thrProductsEntity , YbDrug ybDrug, List thirdAliDrugList,UdiRelevanceEntity udiRelevanceEntity) { if (thirdAliDrugList != null && thirdAliDrugList.size() > 0) { List codeRelArrayList = new ArrayList<>(); for (int i = 0; i < thirdAliDrugList.size(); i++) { UdiProductEntity udiProductEntity = disposeDrugDataNew(thrProductsEntity,udiRelevanceEntity,ybDrug); ThirdAliDrug thirdAliDrug = thirdAliDrugList.get(i); udiProductEntity.setNameCode(thirdAliDrug.getNameCode()); // 数据处理 udiProductEntity.setPrepnSpec(CopyUtils.copyNullStr(udiProductEntity.getPrepnSpec(), thirdAliDrug.getFormSpec())); udiProductEntity.setZczbhhzbapzbh(CopyUtils.copyNullStr(udiProductEntity.getZczbhhzbapzbh(), thirdAliDrug.getApprovalNum())); udiProductEntity.setCpmctymc(CopyUtils.copyNullStr(udiProductEntity.getCpmctymc(), thirdAliDrug.getCpmctymc())); udiProductEntity.setSpmc(CopyUtils.copyNullStr(udiProductEntity.getSpmc(), thirdAliDrug.getSpmc())); udiProductEntity.setBzgg(CopyUtils.copyNullStr(udiProductEntity.getBzgg(), thirdAliDrug.getBzgg())); udiProductEntity.setPackRatio(CopyUtils.copyNullStr(udiProductEntity.getPackRatio(), thirdAliDrug.getPackRatio())); //最小产品单位 udiProductEntity.setPackUnit(CopyUtils.copyNullStr(udiProductEntity.getPackUnit(), thirdAliDrug.getPackUnitName())); //商品条码 essentialDrugMarkName sptm // udiProductEntity.setSptm(ybDrug.getBusinessLicense()); udiProductEntity.setPrepnUnit(CopyUtils.copyNullStr(udiProductEntity.getPrepnUnit(), thirdAliDrug.getPrepnUnitName())); List integers = new ArrayList<>(); if (StrUtil.isNotEmpty(thirdAliDrug.getPackRatio())) { integers = DimaUtil.calculateLevels(thirdAliDrug.getPackRatio()); } udiProductEntity.setPackLevel(thirdAliDrug.getPackLevel()); try { udiProductEntity.setBhxjsl(integers.get(IntUtil.value(thirdAliDrug.getPackLevel()) - 1)); } catch (IndexOutOfBoundsException e) { e.printStackTrace(); Log.error("计算包装级别出错" + thirdAliDrug.getPackLevel() + "---" + integers + "-----" + thirdAliDrug.toString()); udiProductEntity.setBhxjsl(0); } if (IntUtil.value(udiProductEntity.getBhxjsl()) == 0) { udiProductEntity.setBhxjsl(IntUtil.value(ybDrug.getFactor())); } if (IntUtil.value(thirdAliDrug.getPackLevel()) == 1) { udiProductEntity.setXjdw(ybDrug.getMinUnit()); if (DimaUtil.trMinCount(thirdAliDrug.getBzgg()) != null) { udiProductEntity.setBhxjsl(DimaUtil.trMinCount(thirdAliDrug.getBzgg())); } else udiProductEntity.setBhxjsl(ybDrug.getFactor()); } else { udiProductEntity.setXjdw(thirdAliDrug.getPrepnUnitName()); } if (thirdAliDrug.getPackLevel() != null && !thirdAliDrug.getPackLevel().equals("0")) { udiProductEntity.setDiType(IntUtil.value(thirdAliDrug.getPackLevel()) == 1 ? 1 : 4); } else { udiProductEntity.setDiType(1); } udiProductEntity.setId(IdUtil.getSnowflakeNextId()); // 多码融合表拼接参数 if (basicProductsCreateDto.isAddCodeRelMark()) { CodeRel codeRel = new CodeRel(); codeRel.setDrugCode(thirdAliDrug.getNameCode()); codeRel.setUpdateTime(new Date()); codeRel.setYbbm(ybDrug.getGoodsCode()); codeRel.setPackUnit(udiProductEntity.getPackUnit()); codeRel.setBhxjsl(udiProductEntity.getBhxjsl()); codeRel.setXjdw(udiProductEntity.getXjdw()); codeRel.setYbBzgg(udiProductEntity.getBzgg()); codeRelArrayList.add(codeRel); } // 多码融合存在就以多码融合为准 udiProductEntity.setPackUnit(CopyUtils.copyNullStr(thirdAliDrug.getPackUnit(), udiProductEntity.getPackUnit())); udiProductEntity.setBhxjsl(CopyUtils.copyNullNum(thirdAliDrug.getBhxjsl(), udiProductEntity.getBhxjsl())); udiProductEntity.setXjdw(CopyUtils.copyNullStr(thirdAliDrug.getXjdw(), udiProductEntity.getXjdw())); udiProductEntity.setBzgg(CopyUtils.copyNullStr(thirdAliDrug.getBzgg(), udiProductEntity.getBzgg())); udiProductService.insertUdiInfo(udiProductEntity); } try { udiRelevanceEntity.setDetailSort(Integer.valueOf(thirdAliDrugList.get(0).getPhysicDetailType())); } catch (Exception e) { log.error("明细分类转换出现错误" + e.getMessage()); } // 上传到多码融合表 if (basicProductsCreateDto.isAddCodeRelMark() && CollUtil.isNotEmpty(codeRelArrayList)) { spGetHttpClient.codeRelUpdateBatch(codeRelArrayList); } } else { UdiProductEntity udiProductEntity = disposeDrugDataNew(thrProductsEntity,udiRelevanceEntity,ybDrug); udiProductService.insertUdiInfo(udiProductEntity); } } public List disposeYbDrugList(List thirdAliDrugList,YbDrug ybDrug){ List list1 = new ArrayList<>(); List list2 = new ArrayList<>(); for (ThirdAliDrug thirdAliDrug : thirdAliDrugList) { String str = drugRulesVerify(ybDrug,thirdAliDrug); if(StringUtils.isNotEmpty(str)){ if(str.equals("1")){ list1.add(thirdAliDrug); }else if(str.equals("2")){ list2.add(thirdAliDrug); } } } if(list1 !=null && list1.size() >0){ return list1; }else if(list2 !=null && list2.size() >0){ return list2; } return new ArrayList<>(); } public String drugRulesVerify(YbDrug ybDrug,ThirdAliDrug thirdAliDrug ){ try { Integer bzggInt = DimaUtil.trMinCount(thirdAliDrug.getBzgg()); // 按照医保数量与阿里包装规格对比 if((bzggInt == ybDrug.getFactor())){ return "1"; } // 医保规格拆分与阿里规格拆分做匹配 List list = DimaUtil.extractNumbers(ybDrug.getRealityOutlook()); if(list!=null && list.size() >0){ for (String str : list) { if(str.equals(String.valueOf(bzggInt))){ return "2"; } } } // // 医保的规格与阿里制剂规格完全匹配 // if(thirdAliDrug.getFormSpec().equals(ybDrug.getRealityOutlook())){ // return "3"; // } }catch (Exception e){ log.error("药品校验出现错误==="+e.getMessage()); return null; } return null; } public Boolean insertProduct(ThrProductsEntity thrProductsEntity, BasicInsMaterialEntity basicInsMaterialEntity, UdiRelevanceEntity udiRelevanceEntity) { //没有医保编码 UdiProductEntity udiProductEntity = new UdiProductEntity(); BeanUtils.copyProperties(thrProductsEntity, udiProductEntity); if (thrProductsEntity.getProductType() != 2) { //不是药品就设置namecode udiProductEntity.setNameCode(thrProductsEntity.getCode()); udiProductEntity.setZczbhhzbapzbh(thrProductsEntity.getRegisterNo()); udiProductEntity.setPackUnit(thrProductsEntity.getMeasname()); udiProductEntity.setGgxh(basicInsMaterialEntity != null ? basicInsMaterialEntity.getSpecification() : thrProductsEntity.getSpec()); udiProductEntity.setManufactory(basicInsMaterialEntity != null ? basicInsMaterialEntity.getManufacturerName() : thrProductsEntity.getManufactory()); } udiProductEntity.setBzgg(thrProductsEntity.getSpec()); udiProductEntity.setCpmctymc(thrProductsEntity.getName()); udiProductEntity.setYlqxzcrbarmc(thrProductsEntity.getManufactory()); //包装单位 udiProductEntity.setPackUnit(thrProductsEntity.getMeasname()); udiProductEntity.setUuid(udiRelevanceEntity.getUuid()); udiProductEntity.setProductType(ConstantStatus.PRODUCT_TYPE_THIRD); udiProductEntity.setDiType(1); udiProductEntity.setScbssfbhph("是"); udiProductEntity.setScbssfbhscrq("是"); udiProductEntity.setScbssfbhsxrq("是"); udiProductEntity.setScbssfbhxlh("否"); udiProductEntity.setProductsType(thrProductsEntity.getProductType()); if (thrProductsEntity.getProductType() == 2) { udiProductEntity.setRequireScanCode(1); udiProductEntity.setMajorStatus(1); udiProductEntity.setPhysicType(3); } else { udiProductEntity.setPackLevel(1 + ""); udiProductEntity.setRequireScanCode(0); } if (StrUtil.isEmpty(udiProductEntity.getPrice())) { udiProductEntity.setPrice(null); } udiProductEntity = UdiInfoUtil.initUdiInfoEntity(udiProductEntity); udiProductService.insertUdiInfo(udiProductEntity); udiRelevanceEntity = udiRelevanceService.insertDefaultLevel(udiRelevanceEntity, udiProductEntity); udiRelevanceService.insertUdiRelevance(udiRelevanceEntity); return true; } public Long createOnlyUuid(UdiCombineRequest udiCombineRequest, String key) { List udiInfoEntities = udiDlHttpClient.getOrUpdateByUuid(key); UdiRelevanceEntity udiRelevanceEntity = new UdiRelevanceEntity(); udiRelevanceEntity.setUpdateTime(new Date()); udiRelevanceEntity.setModifyTime(new Date()); udiRelevanceEntity.setUuid(udiInfoEntities.get(0).getUuid()); if (StrUtil.isNotBlank(udiCombineRequest.getSupName())) { udiRelevanceEntity.setSupName(udiCombineRequest.getSupName()); } Long relId = gennerOrderUtils.getRelId(); udiRelevanceEntity.setId(relId); udiRelevanceEntity.setIsDisable(false); UdiProductEntity udiProductEntity = udiRelevanceService.getDiProduct(udiInfoEntities); udiRelevanceEntity = udiRelevanceService.insertDefaultLevel(udiRelevanceEntity, udiProductEntity); insertUdiInfos(udiInfoEntities); udiRelevanceService.insertUdiRelevance(udiRelevanceEntity); return relId; } public void insertUdiInfos(List udiInfoEntities) { Boolean falg = false; String uuid = ""; if (CollUtil.isNotEmpty(udiInfoEntities)) { UdiProductEntity udiProductEntity = udiProductService.findByUuid(udiInfoEntities.get(0).getUuid()); if (udiProductEntity == null) { for (UdiProductEntity udiInfoEntity : udiInfoEntities) { udiInfoEntity.setId(IdUtil.getSnowflakeNextId()); if (udiInfoEntity.getZxxsbzbhsydysl() > 0) { uuid = udiInfoEntity.getUuid(); falg = true; } } udiProductService.insertUdiInfos(UdiInfoUtil.initUdiInfoEntitys(udiInfoEntities)); //判断产品zxxsbzbhsydysl大于0就启动使用单元 if (falg) { QueryWrapper ew = new QueryWrapper<>(); ew.eq("uuid", uuid); UdiRelevanceEntity udiRelevanceEntity = new UdiRelevanceEntity(); udiRelevanceEntity.setIsUseDy(true); udiRelevanceService.update(udiRelevanceEntity, ew); } } } } public Integer setMedicareType(String insuranceDrugClass) { if ("甲".equals(insuranceDrugClass)) { return 1; } else if ("乙".equals(insuranceDrugClass)) { return 2; } else if ("丙".equals(insuranceDrugClass)) { return 3; } else { return null; // 或者 throw new IllegalArgumentException("未知的医保类别"); } } public void setLevel(String uuid) { List list = udiProductService.getList(uuid); if (list.size() > 1) { // 根据条件设置上级和下级标识 for (int i = 0; i < list.size(); i++) { // 设置上级标识 if (i > 0) { list.get(i).setSjcpbm(String.valueOf(list.get(i - 1).getNameCode())); } else { // 第一个对象没有上级标识,可以设置为null或者特定的值 list.get(i).setSjcpbm(null); } // 设置下级标识 if (i < list.size() - 1) { list.get(i).setBhxjcpbm(String.valueOf(list.get(i + 1).getNameCode())); } else { // 最后一个对象没有下级标识,设置为null list.get(i).setBhxjcpbm(null); } udiProductService.updateUdiInfo(list.get(i)); } } } }