diff --git a/src/main/java/com/glxp/api/entity/thrsys/BasicInsMaterialEntity.java b/src/main/java/com/glxp/api/entity/thrsys/BasicInsMaterialEntity.java index dd886e8b7..8cd05f1aa 100644 --- a/src/main/java/com/glxp/api/entity/thrsys/BasicInsMaterialEntity.java +++ b/src/main/java/com/glxp/api/entity/thrsys/BasicInsMaterialEntity.java @@ -517,6 +517,12 @@ public class BasicInsMaterialEntity implements Serializable { @TableField(value = "versionName") @ApiModelProperty(value="版本名称") private String versionName; + /** + * 备注 + */ + @TableField(value = "remark") + @ApiModelProperty(value="备注") + private String remark; private static final long serialVersionUID = 1L; } 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 589444e14..f74861a4c 100644 --- a/src/main/java/com/glxp/api/service/basic/UdiContrastService.java +++ b/src/main/java/com/glxp/api/service/basic/UdiContrastService.java @@ -1,5 +1,11 @@ package com.glxp.api.service.basic; +import com.glxp.api.entity.thrsys.BasicInsDrugEntity; +import com.glxp.api.entity.thrsys.BasicInsMaterialEntity; +import com.glxp.api.req.thrsys.ThrInsDrugFeeRequest; +import com.glxp.api.req.thrsys.ThrInsMaterialFeeRequest; +import com.glxp.api.service.thrsys.BasicInsDrugService; +import com.glxp.api.service.thrsys.BasicInsMaterialService; import com.glxp.api.util.IntUtil; import org.springframework.beans.BeanUtils; import cn.hutool.core.collection.CollUtil; @@ -21,13 +27,12 @@ import com.glxp.api.util.CustomUtil; import com.glxp.api.util.GennerOrderUtils; import com.glxp.api.util.udi.UdiInfoUtil; -import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Date; import java.util.List; -import java.util.logging.Logger; +import java.util.stream.Collectors; /** * 耗材字典对照 @@ -48,6 +53,13 @@ public class UdiContrastService { @Resource NmpaUdiClient udiDlHttpClient; + @Resource + BasicInsDrugService basicInsDrugService; + + @Resource + BasicInsMaterialService basicInsMaterialService; + + public boolean isExit(String originUuid, String mainId, String thirdSys) { String deviceRecordKey = null; @@ -249,25 +261,64 @@ public class UdiContrastService { udiRelevanceEntity.setAutoCode(true); udiRelevanceEntity.setIsDisable(false); + BasicInsDrugEntity basicInsDrugEntity = null; + BasicInsMaterialEntity basicInsMaterialEntity = null; + if (thrProductsEntity.getYbbm() != null){ + //判断药品还是器械 + if (thrProductsEntity.getProductType() == 2){ + ThrInsDrugFeeRequest thrInsDrugFeeRequest = new ThrInsDrugFeeRequest(); + thrInsDrugFeeRequest.setMedCatalogCode(thrProductsEntity.getYbbm()); + List basicInsDrugEntities = basicInsDrugService.filterList(thrInsDrugFeeRequest); + List filteredEntities = basicInsDrugEntities.stream() + .filter(entity -> entity.getGenericName() != null) // 过滤掉 genericName 为 null 的元素 + .collect(Collectors.toList()); + if (filteredEntities.size() > 0){ + basicInsDrugEntity= filteredEntities.get(0); + } + }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); 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()); } + if (basicInsDrugEntity != null){ + if (thrProductsEntity.getProductType() == 2){ + //药品设置 + udiProductEntity.setBzgg(basicInsDrugEntity.getPackagingSpec()); + udiProductEntity.setPrepnSpec(basicInsDrugEntity.getPrepnSpec()); + udiProductEntity.setZczbhhzbapzbh(basicInsDrugEntity.getApprovalNum()); + if (basicInsDrugEntity.getInsuranceDrugClass() != null){ + udiProductEntity.setMedicareType(setMedicareType(basicInsDrugEntity.getInsuranceDrugClass())); + } + //最小产品单位 + udiProductEntity.setPackUnit(basicInsDrugEntity.getMinPackagingUnit()); + //设置最小产品数量 + udiProductEntity.setBhxjsl(basicInsDrugEntity.getMinPackagingQuantity()); + //生产厂家 + udiProductEntity.setManufactory(basicInsDrugEntity.getManufacturerName() != null ? basicInsDrugEntity.getManufacturerName() : thrProductsEntity.getManufactory()); + } + } + udiProductEntity.setBzgg(thrProductsEntity.getSpec()); udiProductEntity.setCpmctymc(thrProductsEntity.getName()); - udiProductEntity.setManufactory(thrProductsEntity.getManufactory()); udiProductEntity.setYlqxzcrbarmc(thrProductsEntity.getManufactory()); - udiProductEntity.setGgxh(thrProductsEntity.getSpec()); - if (thrProductsEntity.getProductType() == 2){ - //不是药品就设置namecode - udiProductEntity.setBzgg(thrProductsEntity.getSpec()); - } - if (thrProductsEntity.getProductType() != 2){ - //不是药品就设置namecode - udiProductEntity.setZczbhhzbapzbh(thrProductsEntity.getRegisterNo()); - } + //包装单位 + udiProductEntity.setPrepnUnit(thrProductsEntity.getMeasname()); udiProductEntity.setUuid(udiRelevanceEntity.getUuid()); udiProductEntity.setProductType(ConstantStatus.PRODUCT_TYPE_THIRD); udiProductEntity.setDiType(1); @@ -339,4 +390,16 @@ public class UdiContrastService { } } + 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("未知的医保类别"); + } + } + } 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 7932c93b5..05015bab7 100644 --- a/src/main/java/com/glxp/api/service/basic/UdiProductService.java +++ b/src/main/java/com/glxp/api/service/basic/UdiProductService.java @@ -462,10 +462,10 @@ public class UdiProductService { List byUuids = udiProductDao.findByUuids(updateLevelDrugRequest.getUuid()); UdiProductEntity udiProductEntity1 = null; - if (byUuids.size() == 1) { + if (byUuids.size() == 1){ //只有一条药品数据 udiProductEntity1 = byUuids.get(0); - if (udiProductEntity1 != null && udiProductEntity1.getNameCode() == null) { + if (udiProductEntity1!= null && udiProductEntity1.getNameCode() == null){ //更新 udiProductEntity1.setNameCode(updateLevelDrugRequest.getNameCode()); udiProductEntity1.setPackLevel(updateLevelDrugRequest.getPackLevel() + ""); @@ -473,7 +473,7 @@ public class UdiProductService { udiProductEntity1.setSjcpbm(updateLevelDrugRequest.getSjcpbm()); udiProductEntity1.setBhxjcpbm(updateLevelDrugRequest.getBhxjcpbm()); udiProductEntity1.setBhxjsl(updateLevelDrugRequest.getMyBhxjsl()); - + udiProductDao.updateById(udiProductEntity1); } } udiProductEntity1 = udiProductDao.findByNameCode(updateLevelDrugRequest.getNameCode()); @@ -486,6 +486,7 @@ public class UdiProductService { udiProductEntity1.setSjcpbm(updateLevelDrugRequest.getSjcpbm()); udiProductEntity1.setBhxjcpbm(updateLevelDrugRequest.getBhxjcpbm()); udiProductEntity1.setBhxjsl(updateLevelDrugRequest.getMyBhxjsl()); + udiProductDao.updateById(udiProductEntity1); } else { //新增 udiProductEntity1 = udiProductDao.findByUuid(udiRelevanceEntity.getUuid()); @@ -497,14 +498,8 @@ public class UdiProductService { udiProductEntity1.setBhxjsl(updateLevelDrugRequest.getMyBhxjsl()); udiProductEntity1.setUuid(udiRelevanceEntity.getUuid()); udiProductEntity1.setId(IdUtil.getSnowflakeNextId()); + udiProductDao.insert(udiProductEntity1); } - if (IntUtil.value(udiProductEntity1.getPackLevel()) == 1) { - if (IntUtil.value(udiProductEntity1.getPackLevel()) == 1) { - calculateDistCount(udiProductEntity1, udiRelevanceEntity); - calculateUseCount(udiProductEntity1, udiRelevanceEntity); - } - } - udiProductDao.updateById(udiProductEntity1); } else { //必须先提交后才能保存 UdiProductEntity udiProductEntity1 = udiProductDao.findByNameCode(updateLevelDrugRequest.getNameCode()); diff --git a/src/main/resources/schemas/schema_v2.4.sql b/src/main/resources/schemas/schema_v2.4.sql index c76c8951d..9a526ef44 100644 --- a/src/main/resources/schemas/schema_v2.4.sql +++ b/src/main/resources/schemas/schema_v2.4.sql @@ -4333,6 +4333,16 @@ CALL Pro_Temp_ColumnWork('io_collect_order_biz', 'autoTagStatus', 'tinyint NULL DEFAULT 1 COMMENT ''自动赋码状态:1:无法自动赋码;2:可以自动赋码;3:可以自动赋码,但是数量不足''', 1); + CALL Pro_Temp_ColumnWork('basic_ins_drug', 'prepnSpec', 'varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ''采集规格''', 1); +CALL Pro_Temp_ColumnWork('basic_ins_material', 'remark', + 'varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ''备注''', + 1); +CALL Pro_Temp_ColumnWork('thr_products', 'prepnSpec', + 'varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ''制剂规格''', + 1); +CALL Pro_Temp_ColumnWork('thr_products', 'prepnUnit', + 'varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ''制剂单位''', + 1);