From b10ee4d44302f6eaeb5b5e088dfbdf52dc6af01e Mon Sep 17 00:00:00 2001 From: qiuyt Date: Tue, 31 Dec 2024 16:46:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=8E=E4=BE=9B=E5=BA=94=E5=95=86=E9=80=89?= =?UTF-8?q?=E5=85=A5=E8=8D=AF=E5=93=81=E9=80=89=E5=85=A5=E8=8D=AF=E5=93=81?= =?UTF-8?q?=E5=B1=82=E7=BA=A7=E5=8A=9F=E8=83=BD=E6=90=AC=E5=88=B0=E5=86=85?= =?UTF-8?q?=E7=BD=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/service/basic/UdiContrastService.java | 149 +++++++++++++----- .../api/service/basic/UdiProductService.java | 38 ++++- src/main/java/com/glxp/api/util/DimaUtil.java | 16 ++ 3 files changed, 156 insertions(+), 47 deletions(-) diff --git a/src/main/java/com/glxp/api/service/basic/UdiContrastService.java b/src/main/java/com/glxp/api/service/basic/UdiContrastService.java index 940d17fc2..a01ad915f 100644 --- a/src/main/java/com/glxp/api/service/basic/UdiContrastService.java +++ b/src/main/java/com/glxp/api/service/basic/UdiContrastService.java @@ -424,63 +424,82 @@ public class UdiContrastService { } - for (int i = 0; i < thirdAliDrugList.size(); i++) { - ThirdAliDrug thirdAliDrug = thirdAliDrugList.get(i); + if (thirdAliDrugList != null && thirdAliDrugList.size() > 0) { + thirdAliDrugList = disposeYbDrugList(thirdAliDrugList,ybDrug); + if (thirdAliDrugList != null && thirdAliDrugList.size() > 0) { + for (int i = 0; i < thirdAliDrugList.size(); i++) { + ThirdAliDrug thirdAliDrug = thirdAliDrugList.get(i); - udiProductEntity.setNameCode(thirdAliDrug.getNameCode()); + 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.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.setBzgg(CopyUtils.copyNullStr(udiProductEntity.getBzgg(), thirdAliDrug.getBzgg())); + udiProductEntity.setPackRatio(CopyUtils.copyNullStr(udiProductEntity.getPackRatio(), thirdAliDrug.getPackRatio())); // udiProductEntity.setMatrial(ybDrug.getMaterialName()); // udiProductEntity.setPackMatrial(ybDrug.getMaterialName()); // udiProductEntity.setMedicareType(setMedicareType(ybDrug.getProductInsuranceType())); - //最小产品单位 - udiProductEntity.setPackUnit(CopyUtils.copyNullStr(udiProductEntity.getPackUnit(),thirdAliDrug.getPackUnitName())); - //设置最小产品数量 + //最小产品单位 + udiProductEntity.setPackUnit(CopyUtils.copyNullStr(udiProductEntity.getPackUnit(), thirdAliDrug.getPackUnitName())); + //设置最小产品数量 // udiProductEntity.setBhxjsl(ybDrug.getFactor()); - //生产厂家 + //生产厂家 // udiProductEntity.setManufactory(thirdAliDrug.getManufacturer()); - //商品条码 essentialDrugMarkName sptm + //商品条码 essentialDrugMarkName sptm // udiProductEntity.setSptm(ybDrug.getBusinessLicense()); - udiProductEntity.setPrepnUnit(CopyUtils.copyNullStr(udiProductEntity.getPrepnUnit(),thirdAliDrug.getPrepnUnitName())); + 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()); + } + if (thirdAliDrug.getPackLevel() != null && !thirdAliDrug.getPackLevel().equals("0")) { + udiProductEntity.setDiType(IntUtil.value(thirdAliDrug.getPackLevel()) == 1 ? 1 : 4); + } else { + udiProductEntity.setDiType(1); + } + udiProductEntity.setXjdw(thirdAliDrug.getPrepnUnitName()); + udiProductEntity.setPackUnit(thirdAliDrug.getPackUnitName()); + udiProductEntity.setId(IdUtil.getSnowflakeNextId()); + udiProductService.insertUdiInfo(udiProductEntity); + } + }else { + udiProductService.insertUdiInfo(udiProductEntity); - 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); - } + udiRelevanceEntity.setDetailSort(Integer.valueOf(thirdAliDrugList.get(0).getPhysicDetailType())); - 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()); - } - if (thirdAliDrug.getPackLevel() != null && !thirdAliDrug.getPackLevel().equals("0")) { - udiProductEntity.setDiType(IntUtil.value(thirdAliDrug.getPackLevel()) == 1 ? 1 : 4); - } else { - udiProductEntity.setDiType(1); + }catch (Exception e){ + log.error("明细分类转换出现错误"+e.getMessage()); } - udiProductEntity.setXjdw(thirdAliDrug.getPrepnUnitName()); - udiProductEntity.setPackUnit(thirdAliDrug.getPackUnitName()); - - udiProductEntity.setId(IdUtil.getSnowflakeNextId()); + } else { udiProductService.insertUdiInfo(udiProductEntity); } @@ -582,6 +601,54 @@ public class UdiContrastService { } } + 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) { diff --git a/src/main/java/com/glxp/api/service/basic/UdiProductService.java b/src/main/java/com/glxp/api/service/basic/UdiProductService.java index fd4cfc3fd..721ddeb39 100644 --- a/src/main/java/com/glxp/api/service/basic/UdiProductService.java +++ b/src/main/java/com/glxp/api/service/basic/UdiProductService.java @@ -8,10 +8,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; +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.BasicProductsDao; import com.glxp.api.dao.basic.SupEvaluateDetailMapper; import com.glxp.api.dao.basic.UdiProductDao; import com.glxp.api.dao.basic.UdiRelevanceDao; +import com.glxp.api.dao.thrsys.ThirdAliDrugMapper; +import com.glxp.api.dao.thrsys.ThrProductsDao; import com.glxp.api.entity.basic.SupEvaluateDetailEntity; import com.glxp.api.entity.basic.UdiEntity; import com.glxp.api.entity.basic.UdiProductEntity; @@ -643,22 +648,30 @@ public class UdiProductService extends ServiceImpl().eq("nameCode", thirdAliDrugRequest.getNameCodeRow()).last("limit 1") ); + String str = ""; if (thirdAliDrugServiceOne != null) { List thirdAliDrugList = thirdAliDrugService.list( - new QueryWrapper().eq(org.apache.commons.lang3.StringUtils.isNotBlank( thirdAliDrugServiceOne.getBzgg()),"bzgg", thirdAliDrugServiceOne.getBzgg()) - .eq(org.apache.commons.lang3.StringUtils.isNotBlank( thirdAliDrugServiceOne.getPackRatio()),"packRatio", thirdAliDrugServiceOne.getPackRatio()) - .eq(org.apache.commons.lang3.StringUtils.isNotBlank( thirdAliDrugRequest.getCpmctymc()),"cpmctymc", thirdAliDrugRequest.getCpmctymc()) - .eq(org.apache.commons.lang3.StringUtils.isNotBlank( thirdAliDrugRequest.getManufacturer()),"manufacturer", thirdAliDrugRequest.getManufacturer()) + new QueryWrapper().eq(StringUtils.isNotBlank( thirdAliDrugServiceOne.getBzgg()),"bzgg", thirdAliDrugServiceOne.getBzgg()) + .eq(StringUtils.isNotBlank( thirdAliDrugServiceOne.getPackRatio()),"packRatio", thirdAliDrugServiceOne.getPackRatio()) + .like(StringUtils.isNotBlank( thirdAliDrugRequest.getCpmctymc()),"cpmctymc", thirdAliDrugRequest.getCpmctymc()) + .like(StringUtils.isNotBlank( thirdAliDrugRequest.getManufacturer()),"manufacturer", thirdAliDrugRequest.getManufacturer()) .eq(StringUtils.isNotBlank( thirdAliDrugRequest.getApprovalNum()),"approvalNum", thirdAliDrugRequest.getApprovalNum()) ); if (thirdAliDrugList != null && thirdAliDrugList.size() > 0) { + udiProductDao.delete(new QueryWrapper() + .eq("uuid",thirdAliDrugRequest.getUuid()) + .isNull("nameCode") + ); ThrProductsEntity thrProductsEntity = thrProductsService.selectByCode(thirdAliDrugRequest.getYbbm()); for (ThirdAliDrug thirdAliDrug : thirdAliDrugList) { ThrInsDrugFeeRequest thrInsDrugFeeRequest = new ThrInsDrugFeeRequest(); @@ -783,11 +796,24 @@ public class UdiProductService extends ServiceImpl() + .eq("uuid",thirdAliDrugRequest.getUuid()) + ); + return ResultVOUtils.success(detailSort); + } } - // } + return ResultVOUtils.error("获取错误"); } diff --git a/src/main/java/com/glxp/api/util/DimaUtil.java b/src/main/java/com/glxp/api/util/DimaUtil.java index 827c2fd62..925bd04b9 100644 --- a/src/main/java/com/glxp/api/util/DimaUtil.java +++ b/src/main/java/com/glxp/api/util/DimaUtil.java @@ -50,4 +50,20 @@ public class DimaUtil { return null; } + public static List extractNumbers(String input) { + List result = new ArrayList<>(); + // 定义匹配小数和整数的正则表达式 + String patternStr = "\\d+\\.\\d+|\\d+"; + Pattern pattern = Pattern.compile(patternStr); + Matcher matcher = pattern.matcher(input); + while (matcher.find()) { + String match = matcher.group(); + if (match.contains(".")) { + result.add(Double.parseDouble(match)+""); + } else { + result.add(Integer.parseInt(match)+""); + } + } + return result; + } }