From 67c76aa67d7836b5560c32516afe87e311c2a350 Mon Sep 17 00:00:00 2001 From: qiuyt Date: Wed, 8 Jan 2025 21:03:21 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=89=E5=85=A5=E8=8D=AF=E5=93=81=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alihealth/AlihealthBusController.java | 38 +-- .../basic/UdiContrastController.java | 7 +- .../thrsys/ThirdAliDrugController.java | 3 + .../glxp/api/dto/BasicProductsCreateDto.java | 10 + .../com/glxp/api/entity/thrsys/CodeRel.java | 23 +- .../glxp/api/entity/thrsys/ThirdAliDrug.java | 24 +- .../AlihealthThirdAliDrugInsertReqeust.java | 8 +- .../basic/BasicBackUpdateProductService.java | 6 +- .../api/service/basic/UdiContrastService.java | 262 +++++++++++------- .../basic/impl/UdiProductServiceImpl.java | 4 + src/main/java/com/glxp/api/util/DimaUtil.java | 15 + .../glxp/api/util/alihealth/CopyUtils.java | 3 + .../mapper/thrsys/ThirdAliDrugMapper.xml | 2 +- 13 files changed, 273 insertions(+), 132 deletions(-) create mode 100644 src/main/java/com/glxp/api/dto/BasicProductsCreateDto.java diff --git a/src/main/java/com/glxp/api/controller/alihealth/AlihealthBusController.java b/src/main/java/com/glxp/api/controller/alihealth/AlihealthBusController.java index 30b5ddeb..86aa8519 100644 --- a/src/main/java/com/glxp/api/controller/alihealth/AlihealthBusController.java +++ b/src/main/java/com/glxp/api/controller/alihealth/AlihealthBusController.java @@ -31,8 +31,11 @@ import com.glxp.api.res.alihealth.AlihealthKytGetentinfoResponse; import com.glxp.api.service.alihealth.AlihealthBusService; import com.glxp.api.service.basic.UdiContrastService; import com.glxp.api.service.inout.IoOrderService; +import com.glxp.api.util.DimaUtil; +import com.glxp.api.util.IntUtil; import com.glxp.api.util.JsonUtils; import com.glxp.api.util.alihealth.AlihealthUtils; +import com.glxp.api.util.alihealth.CopyUtils; import com.google.api.client.json.Json; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -99,6 +102,7 @@ public class AlihealthBusController extends BaseController { } @Resource private UdiContrastService udiContrastService; + @PostMapping("/spms/alihealth/thirdAliDrugList") @Log(title = "获取阿里药品码段信息列表包括查询国家库", businessType = BusinessType.OTHER) public BaseResponse> thirdAliDrugList(@RequestBody AlihealthThirdAliDrugInsertReqeust alihealthThirdAliDrugInsertReqeust) { @@ -126,6 +130,10 @@ public class AlihealthBusController extends BaseController { } } + // 校验标识判断 为false不会后续增加多玛融合库的逻辑 直接返回 + if(alihealthThirdAliDrugInsertReqeust.isDrugCheckMark() == false){ + return ResultVOUtils.success(thirdAliDrugsListGjk); + } // 查询国家库药品信息 并且要插入到多玛融合表 AlihealthKytDrugrescodeReqeust alihealthKytDrugrescodeReqeust = alihealthThirdAliDrugInsertReqeust.getAlihealthKytDrugrescodeReqeust(); @@ -151,6 +159,10 @@ public class AlihealthBusController extends BaseController { map.put("bzgg", alihealthThirdAliDrugInsertReqeust.getBzgg()); } + map.put("page", alihealthThirdAliDrugInsertReqeust.getPage()); + map.put("limit", alihealthThirdAliDrugInsertReqeust.getLimit()); + + if(alihealthThirdAliDrugInsertReqeust.getGjkSwitch()){ try { String response = HttpUtil.get(udiUrl + "/udiwms/aliDrug/getDrugLevelList", map); @@ -198,32 +210,6 @@ public class AlihealthBusController extends BaseController { ){ // 规则匹配 thirdAliDrugsListGjk = udiContrastService.disposeYbDrugList(thirdAliDrugsListGjk,ybDrug,alihealthThirdAliDrugInsertReqeust.getNameCodeIn()); - if(thirdAliDrugsListGjk!=null && thirdAliDrugsListGjk.size()>0){ - List list = new ArrayList<>(); - for (ThirdAliDrug thirdAliDrug : thirdAliDrugsListGjk) { - CodeRel codeRel = new CodeRel(); - codeRel.setDrugCode(thirdAliDrug.getNameCode()); - codeRel.setYbbm(ybDrug.getGoodsCode()); - codeRel.setUpdateTime(new Date()); - list.add(codeRel); - } - try { - String response = HttpUtil.post(udiUrl + "/udchs/codeRel/updateBatch", JSONUtil.toJsonStr(list)); - BaseResponse baseResponse = JSONUtil.toBean(response,BaseResponse.class); - - if(baseResponse.getCode() == 2000){ - log.error("国家库===上传多码关系===成功==="); - - }else { - log.error("国家库===上传多码关系===出现错误===" + baseResponse.getMessage()); - - } - - } catch (Exception e) { - log.error("国家库===上传多码关系===出现错误===" + e.getMessage()); - - } - } } return ResultVOUtils.success(thirdAliDrugsListGjk); diff --git a/src/main/java/com/glxp/api/controller/basic/UdiContrastController.java b/src/main/java/com/glxp/api/controller/basic/UdiContrastController.java index a9acf1fc..8f0c03f9 100644 --- a/src/main/java/com/glxp/api/controller/basic/UdiContrastController.java +++ b/src/main/java/com/glxp/api/controller/basic/UdiContrastController.java @@ -13,6 +13,7 @@ import com.glxp.api.constant.AsyncDiDlHelper; import com.glxp.api.constant.BusinessType; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.controller.BaseController; +import com.glxp.api.dto.BasicProductsCreateDto; import com.glxp.api.entity.basic.CompanyProductRelevanceEntity; import com.glxp.api.entity.basic.ProductInfoEntity; import com.glxp.api.entity.basic.UdiProductEntity; @@ -120,7 +121,11 @@ public class UdiContrastController { if (udiContrastService.isExit(null, thirdId, null)) { buffer.append(thirdId).append(","); } else { - udiContrastService.createOnlyMainId(thirdId); + BasicProductsCreateDto basicProductsCreateDto =new BasicProductsCreateDto(); + basicProductsCreateDto.setMainId(thirdId); + basicProductsCreateDto.setDrugCheckMark(true); + + udiContrastService.createOnlyMainId(basicProductsCreateDto); } } if (StrUtil.isNotBlank(buffer.toString())) { diff --git a/src/main/java/com/glxp/api/controller/thrsys/ThirdAliDrugController.java b/src/main/java/com/glxp/api/controller/thrsys/ThirdAliDrugController.java index 7c981469..939d4d6e 100644 --- a/src/main/java/com/glxp/api/controller/thrsys/ThirdAliDrugController.java +++ b/src/main/java/com/glxp/api/controller/thrsys/ThirdAliDrugController.java @@ -108,6 +108,8 @@ public class ThirdAliDrugController extends BaseController { alihealthThirdAliDrugInsertReqeust.setFormSpec(thirdAliDrug.getFormSpec()); alihealthThirdAliDrugInsertReqeust.setNameCodeIn(nameCodeIn); alihealthThirdAliDrugInsertReqeust.setGjkSwitch(true); + alihealthThirdAliDrugInsertReqeust.setPage(thirdAliDrug.getPage()); + alihealthThirdAliDrugInsertReqeust.setLimit(thirdAliDrug.getLimit()); AlihealthKytDrugrescodeReqeust alihealthKytDrugrescodeReqeust = new AlihealthKytDrugrescodeReqeust(); alihealthKytDrugrescodeReqeust.setPhysic_name(thirdAliDrug.getCpmctymc()); alihealthKytDrugrescodeReqeust.setApproval_licence_no(thirdAliDrug.getApprovalNum()); @@ -124,6 +126,7 @@ public class ThirdAliDrugController extends BaseController { BaseResponse baseResponse = alihealthBusController.thirdAliDrugList(alihealthThirdAliDrugInsertReqeust); if (baseResponse.getCode() == 20000) { + list = thirdAliDrugService.filterList(thirdAliDrug); if (thirdAliDrugService.addOrUpdate((List) baseResponse.getData())) { list = thirdAliDrugService.filterList(thirdAliDrug); diff --git a/src/main/java/com/glxp/api/dto/BasicProductsCreateDto.java b/src/main/java/com/glxp/api/dto/BasicProductsCreateDto.java new file mode 100644 index 00000000..7146efe2 --- /dev/null +++ b/src/main/java/com/glxp/api/dto/BasicProductsCreateDto.java @@ -0,0 +1,10 @@ +package com.glxp.api.dto; + +import lombok.Data; + +@Data +public class BasicProductsCreateDto { + private String mainId; + private boolean drugCheckMark; + +} diff --git a/src/main/java/com/glxp/api/entity/thrsys/CodeRel.java b/src/main/java/com/glxp/api/entity/thrsys/CodeRel.java index 0a66ed3c..cd3aa939 100644 --- a/src/main/java/com/glxp/api/entity/thrsys/CodeRel.java +++ b/src/main/java/com/glxp/api/entity/thrsys/CodeRel.java @@ -76,6 +76,25 @@ public class CodeRel { @TableField(value = "fromType") public Integer fromType; + /** + * 层级单位 + */ + @TableField(value = "packUnit") + public String packUnit; + /** + * 下级数量 + */ + @TableField(value = "bhxjsl") + public Integer bhxjsl; + /** + * 下级单位 + */ + @TableField(value = "xjdw") + public String xjdw; + /** + * 医保包装规格 + */ + @TableField(value = "ybBzgg") + public String ybBzgg; - -} \ No newline at end of file +} diff --git a/src/main/java/com/glxp/api/entity/thrsys/ThirdAliDrug.java b/src/main/java/com/glxp/api/entity/thrsys/ThirdAliDrug.java index 3861eae4..8a077d06 100644 --- a/src/main/java/com/glxp/api/entity/thrsys/ThirdAliDrug.java +++ b/src/main/java/com/glxp/api/entity/thrsys/ThirdAliDrug.java @@ -159,8 +159,28 @@ public class ThirdAliDrug implements Serializable { @TableField(value = "packUnitName") @ApiModelProperty(value = "包装单位") private String packUnitName; - - + /** + * 层级单位 + */ + @TableField(exist = false) + public String packUnit; + /** + * 下级数量 + */ + @TableField(exist = false) + public Integer bhxjsl; + /** + * 下级单位 + */ + @TableField(exist = false) + public String xjdw; + /** + * 医保包装规格 + */ + @TableField(exist = false) + public String ybBzgg; + @TableField(exist = false) + public boolean dmcx = false; private static final long serialVersionUID = 1L; public ThirdAliDrug(String type, String manufacturer, String cpmctymc, String form, String formSpec, String bzgg,String approvalNum, String spmc, String nameCode, String packRatio, String packLevel, Date createTime, Date updateTime) { diff --git a/src/main/java/com/glxp/api/req/alihealth/local/AlihealthThirdAliDrugInsertReqeust.java b/src/main/java/com/glxp/api/req/alihealth/local/AlihealthThirdAliDrugInsertReqeust.java index affa59df..036a25f7 100644 --- a/src/main/java/com/glxp/api/req/alihealth/local/AlihealthThirdAliDrugInsertReqeust.java +++ b/src/main/java/com/glxp/api/req/alihealth/local/AlihealthThirdAliDrugInsertReqeust.java @@ -2,12 +2,14 @@ package com.glxp.api.req.alihealth.local; import com.glxp.api.entity.thrsys.YbDrug; import com.glxp.api.req.alihealth.AlihealthKytDrugrescodeReqeust; +import com.glxp.api.req.thrsys.ThirdAliDrugRequest; +import com.glxp.api.util.page.ListPageRequest; import lombok.Data; import java.util.List; @Data -public class AlihealthThirdAliDrugInsertReqeust { +public class AlihealthThirdAliDrugInsertReqeust extends ListPageRequest { private String erpId; private String appSecret; private String manufactory; @@ -16,6 +18,10 @@ public class AlihealthThirdAliDrugInsertReqeust { private String formSpec; private String bzgg; private List nameCodeIn; + /** + * 药品校验标识 + */ + private boolean drugCheckMark; private AlihealthKytDrugrescodeReqeust alihealthKytDrugrescodeReqeust; } diff --git a/src/main/java/com/glxp/api/service/basic/BasicBackUpdateProductService.java b/src/main/java/com/glxp/api/service/basic/BasicBackUpdateProductService.java index e1780289..ecbd3bca 100644 --- a/src/main/java/com/glxp/api/service/basic/BasicBackUpdateProductService.java +++ b/src/main/java/com/glxp/api/service/basic/BasicBackUpdateProductService.java @@ -2,6 +2,7 @@ package com.glxp.api.service.basic; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.constant.ConstantStatus; +import com.glxp.api.dto.BasicProductsCreateDto; import com.glxp.api.entity.basic.UdiProductEntity; import com.glxp.api.entity.basic.UdiRelevanceEntity; import com.glxp.api.entity.system.SystemParamConfigEntity; @@ -253,7 +254,10 @@ public class BasicBackUpdateProductService { // udiRelevanceService.insertUdiRelevanceignore(udiRelevanceEntity1); // } try { - udiContrastService.createOnlyMainId(thrProductsEntity.getCode()); + BasicProductsCreateDto basicProductsCreateDto =new BasicProductsCreateDto(); + basicProductsCreateDto.setMainId(thrProductsEntity.getCode()); + basicProductsCreateDto.setDrugCheckMark(false); + udiContrastService.createOnlyMainId(basicProductsCreateDto); } catch (Exception e) { } 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 0bf3e423..0855ac95 100644 --- a/src/main/java/com/glxp/api/service/basic/UdiContrastService.java +++ b/src/main/java/com/glxp/api/service/basic/UdiContrastService.java @@ -12,6 +12,7 @@ import com.glxp.api.common.res.BaseResponse; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.controller.alihealth.AlihealthBusController; 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; @@ -47,6 +48,8 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * 耗材字典对照 @@ -234,8 +237,10 @@ public class UdiContrastService { ThirdAliDrugService thirdAliDrugService; @Resource private AlihealthBusController alihealthBusController; + // @Transactional - public void createOnlyMainId(String mainId) { + public void createOnlyMainId(BasicProductsCreateDto basicProductsCreateDto) { + String mainId = basicProductsCreateDto.getMainId(); FilterThrProductsRequest filterThrProductsRequest = new FilterThrProductsRequest(); filterThrProductsRequest.setCode(mainId); ThrProductsEntity thrProductsEntity = thrProductsService.selectByCode(mainId); @@ -338,24 +343,26 @@ public class UdiContrastService { // // } else { - AuthAliUser authAliUser = authAliUserService.getOne(); - AlihealthThirdAliDrugInsertReqeust alihealthThirdAliDrugInsertReqeust = new AlihealthThirdAliDrugInsertReqeust(); - alihealthThirdAliDrugInsertReqeust.setErpId(authAliUser.getErpid()); - alihealthThirdAliDrugInsertReqeust.setAppSecret(authAliUser.getAppsecret()); + AuthAliUser authAliUser = authAliUserService.getOne(); + AlihealthThirdAliDrugInsertReqeust alihealthThirdAliDrugInsertReqeust = new AlihealthThirdAliDrugInsertReqeust(); + basicProductsCreateDto.setDrugCheckMark(basicProductsCreateDto.isDrugCheckMark()); + alihealthThirdAliDrugInsertReqeust.setErpId(authAliUser.getErpid()); + alihealthThirdAliDrugInsertReqeust.setAppSecret(authAliUser.getAppsecret()); + alihealthThirdAliDrugInsertReqeust.setDrugCheckMark(basicProductsCreateDto.isDrugCheckMark()); // alihealthThirdAliDrugInsertReqeust.setManufactory(udiProductEntity.getManufactory()); - alihealthThirdAliDrugInsertReqeust.setYbDrug(ybDrug); - AlihealthKytDrugrescodeReqeust alihealthKytDrugrescodeReqeust = new AlihealthKytDrugrescodeReqeust(); - alihealthKytDrugrescodeReqeust.setPhysic_name(udiProductEntity.getCpmctymc()); - alihealthKytDrugrescodeReqeust.setApproval_licence_no(udiProductEntity.getZczbhhzbapzbh()); - alihealthKytDrugrescodeReqeust.setPage_size(200); - alihealthKytDrugrescodeReqeust.setPage(1); - alihealthKytDrugrescodeReqeust.setApp_key(authAliUser.getAppkey()); - alihealthKytDrugrescodeReqeust.setRef_ent_id(authAliUser.getRefentid()); - alihealthThirdAliDrugInsertReqeust.setAlihealthKytDrugrescodeReqeust(alihealthKytDrugrescodeReqeust); - try { - BaseResponse baseResponse = alihealthBusController.thirdAliDrugList(alihealthThirdAliDrugInsertReqeust); - if (baseResponse.getCode() == 20000) { - thirdAliDrugList = (List) baseResponse.getData(); + alihealthThirdAliDrugInsertReqeust.setYbDrug(ybDrug); + AlihealthKytDrugrescodeReqeust alihealthKytDrugrescodeReqeust = new AlihealthKytDrugrescodeReqeust(); + alihealthKytDrugrescodeReqeust.setPhysic_name(udiProductEntity.getCpmctymc()); + alihealthKytDrugrescodeReqeust.setApproval_licence_no(udiProductEntity.getZczbhhzbapzbh()); + alihealthKytDrugrescodeReqeust.setPage_size(200); + alihealthKytDrugrescodeReqeust.setPage(1); + alihealthKytDrugrescodeReqeust.setApp_key(authAliUser.getAppkey()); + alihealthKytDrugrescodeReqeust.setRef_ent_id(authAliUser.getRefentid()); + alihealthThirdAliDrugInsertReqeust.setAlihealthKytDrugrescodeReqeust(alihealthKytDrugrescodeReqeust); + try { + BaseResponse baseResponse = alihealthBusController.thirdAliDrugList(alihealthThirdAliDrugInsertReqeust); + if (baseResponse.getCode() == 20000) { + thirdAliDrugList = (List) baseResponse.getData(); // if (thirdAliDrugService.addOrUpdate((List) baseResponse.getData())) { // thirdAliDrugList = thirdAliDrugService.list( @@ -372,22 +379,22 @@ public class UdiContrastService { // } - } else { - log.error("供应商平台获取阿里和国家库码段信息出现错误===" + baseResponse.getMessage()); + } else { + log.error("供应商平台获取阿里和国家库码段信息出现错误===" + baseResponse.getMessage()); // udiProductEntity.setBasicPrductRemak8("供应商平台获取阿里和国家库码段信息出现错误===" + baseResponse.getMessage()); // error = "供应商平台获取阿里和国家库码段信息出现错误===" + baseResponse.getMessage(); - udiProductService.insertUdiInfo(udiProductEntity); + udiProductService.insertUdiInfo(udiProductEntity); - } + } - } catch (Exception e) { - log.error("供应商平台获取阿里和国家库码段信息出现错误===" + e.getMessage()); + } catch (Exception e) { + log.error("供应商平台获取阿里和国家库码段信息出现错误===" + e.getMessage()); // udiProductEntity.setBasicPrductRemak8("供应商平台获取阿里和国家库码段信息出现错误===" + e.getMessage()); // error = "供应商平台获取阿里和国家库码段信息出现错误===" + e.getMessage(); - udiProductService.insertUdiInfo(udiProductEntity); + udiProductService.insertUdiInfo(udiProductEntity); - } + } // thirdAliDrugList = thirdAliDrugService.list( // new QueryWrapper() @@ -398,74 +405,102 @@ public class UdiContrastService { // udiProductService.insertUdiInfo(udiProductEntity); // } if (thirdAliDrugList != null && thirdAliDrugList.size() > 0) { + List codeRelArrayList = new ArrayList<>(); - for (int i = 0; i < thirdAliDrugList.size(); i++) { - ThirdAliDrug thirdAliDrug = thirdAliDrugList.get(i); + 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); - } + 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); - } + 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()); - udiProductEntity.setPackUnit(thirdAliDrug.getPackUnitName()); - udiProductEntity.setId(IdUtil.getSnowflakeNextId()); - udiProductService.insertUdiInfo(udiProductEntity); } + if (thirdAliDrug.getPackLevel() != null && !thirdAliDrug.getPackLevel().equals("0")) { + udiProductEntity.setDiType(IntUtil.value(thirdAliDrug.getPackLevel()) == 1 ? 1 : 4); + } else { + udiProductEntity.setDiType(1); + } +// udiProductEntity.setPackUnit(thirdAliDrug.getPackUnitName()); + + udiProductEntity.setId(IdUtil.getSnowflakeNextId()); + + // 多码融合表拼接参数 + if (basicProductsCreateDto.isDrugCheckMark() && !thirdAliDrug.isDmcx()) { + 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()); + } catch (Exception e) { + log.error("明细分类转换出现错误" + e.getMessage()); } + // 上传到多码融合表 + if (basicProductsCreateDto.isDrugCheckMark() + && CollUtil.isNotEmpty(codeRelArrayList)) { + this.codeRelUpdateBatch(codeRelArrayList); + } + } else { udiProductService.insertUdiInfo(udiProductEntity); @@ -568,24 +603,56 @@ public class UdiContrastService { } } - public List disposeYbDrugList(List thirdAliDrugList,YbDrug ybDrug,List codeIn){ + + /** + * 上传国家库多码融合库 + * + * @param list + */ + public void codeRelUpdateBatch(List list) { + if (list != null && list.size() > 0) { + + try { + String response = HttpUtil.post(udiUrl + "/udchs/codeRel/updateBatch", JSONUtil.toJsonStr(list)); + BaseResponse baseResponse = JSONUtil.toBean(response, BaseResponse.class); + + if (baseResponse.getCode() == 2000) { + log.error("国家库===上传多码关系===" + list.get(0).getYbbm() + "成功==="); + + } else { + log.error("国家库===上传多码关系===出现错误===" + baseResponse.getMessage()); + + } + + } catch (Exception e) { + log.error("国家库===上传多码关系===出现错误===" + e.getMessage()); + + } + } else { + log.error("国家库===上传多码关系===出现错误===数据为空"); + + } + + } + + public List disposeYbDrugList(List thirdAliDrugList, YbDrug ybDrug, List codeIn) { List list1 = new ArrayList<>(); - String result=null; - if(codeIn!=null && codeIn.size() >0){ - result = String.join(", ", codeIn); + String result = null; + if (codeIn != null && codeIn.size() > 0) { + result = String.join(", ", codeIn); } - if(thirdAliDrugList!=null && thirdAliDrugList.size() >0){ + if (thirdAliDrugList != null && thirdAliDrugList.size() > 0) { // List list2 = new ArrayList<>(); for (ThirdAliDrug thirdAliDrug : thirdAliDrugList) { - String str = drugRulesVerify(ybDrug,thirdAliDrug); - if(StringUtils.isNotEmpty(str)){ - if(str.equals("1") || str.equals("2")){ - if(StringUtils.isNotEmpty(result)){ - if(!result.contains(thirdAliDrug.getNameCode())){ + String str = drugRulesVerify(ybDrug, thirdAliDrug); + if (StringUtils.isNotEmpty(str)) { + if (str.equals("1")) { + if (StringUtils.isNotEmpty(result)) { + if (!result.contains(thirdAliDrug.getNameCode())) { list1.add(thirdAliDrug); } - }else { + } else { list1.add(thirdAliDrug); } @@ -601,28 +668,27 @@ public class UdiContrastService { return list1; } - public String drugRulesVerify(YbDrug ybDrug,ThirdAliDrug thirdAliDrug ){ + + public String drugRulesVerify(YbDrug ybDrug, ThirdAliDrug thirdAliDrug) { try { Integer bzggInt = DimaUtil.trMinCount(thirdAliDrug.getBzgg()); + + // 医保规格和阿里制剂规格双方都去除特殊符号和空格之后进行精准匹配 + String realityOutlook = DimaUtil.specialCharactersRemover(ybDrug.getRealityOutlook()); + String formSpec = DimaUtil.specialCharactersRemover(thirdAliDrug.getFormSpec()); + + // 按照医保数量与阿里包装规格对比 - if((bzggInt == ybDrug.getFactor())){ + if ((bzggInt == ybDrug.getFactor()) && realityOutlook.equals(formSpec)) { 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()); + } catch (Exception e) { + log.error("药品校验出现错误===" + e.getMessage()); return null; } return null; diff --git a/src/main/java/com/glxp/api/service/basic/impl/UdiProductServiceImpl.java b/src/main/java/com/glxp/api/service/basic/impl/UdiProductServiceImpl.java index 97eba344..f7660295 100644 --- a/src/main/java/com/glxp/api/service/basic/impl/UdiProductServiceImpl.java +++ b/src/main/java/com/glxp/api/service/basic/impl/UdiProductServiceImpl.java @@ -321,6 +321,10 @@ public class UdiProductServiceImpl implements UdiProductService { codeRel.setDrugCode(udiProductEntity.getNameCode()); codeRel.setYbbm(udiProductEntity.getYbbm()); codeRel.setUpdateTime(new Date()); + codeRel.setPackUnit(udiProductEntity.getPackUnit()); + codeRel.setBhxjsl(udiProductEntity.getBhxjsl()); + codeRel.setXjdw(udiProductEntity.getXjdw()); + codeRel.setYbBzgg(udiProductEntity.getBzgg()); list.add(codeRel); int i = udiProductDao.updateById(udiProductEntity); if (i == 0) { diff --git a/src/main/java/com/glxp/api/util/DimaUtil.java b/src/main/java/com/glxp/api/util/DimaUtil.java index aaad9649..ca98735d 100644 --- a/src/main/java/com/glxp/api/util/DimaUtil.java +++ b/src/main/java/com/glxp/api/util/DimaUtil.java @@ -79,4 +79,19 @@ public class DimaUtil { } return result; } + public static String specialCharactersRemover(String input){ + if(StringUtils.isNotEmpty(input)){ + Pattern pattern = Pattern.compile("\\W+"); + Matcher matcher = pattern.matcher(input); + StringBuffer sb = new StringBuffer(); + while (matcher.find()) { + matcher.appendReplacement(sb, ""); + } + matcher.appendTail(sb); + return sb.toString(); + }else { + return ""; + } + + } } diff --git a/src/main/java/com/glxp/api/util/alihealth/CopyUtils.java b/src/main/java/com/glxp/api/util/alihealth/CopyUtils.java index 428ecf7d..6aad78a8 100644 --- a/src/main/java/com/glxp/api/util/alihealth/CopyUtils.java +++ b/src/main/java/com/glxp/api/util/alihealth/CopyUtils.java @@ -13,6 +13,9 @@ public class CopyUtils { public static String copyNullStr(String str,String strNew){ return StringUtils.isNotEmpty(str) ? str : strNew; } + public static Integer copyNullNum(Integer integer,Integer integerNew){ + return integer!=null ? integer : integerNew; + } public static void compatibleCopy(Map map, Object target) { try { diff --git a/src/main/resources/mybatis/mapper/thrsys/ThirdAliDrugMapper.xml b/src/main/resources/mybatis/mapper/thrsys/ThirdAliDrugMapper.xml index 076b3282..030669ec 100644 --- a/src/main/resources/mybatis/mapper/thrsys/ThirdAliDrugMapper.xml +++ b/src/main/resources/mybatis/mapper/thrsys/ThirdAliDrugMapper.xml @@ -83,7 +83,7 @@ AND nameCode LIKE concat('%', #{nameCode}, '%') - AND approvalNum = #{approvalNum} + AND approvalNum LIKE concat('%', #{approvalNum}, '%') AND nameCode NOT IN