feat: 修复

dev_no_inv
chenhc 9 months ago
parent 8c94f1db23
commit 67e4600796

@ -3,10 +3,12 @@ package com.glxp.api.controller.basic;
import cn.hutool.core.bean.BeanUtil;
import com.glxp.api.dao.basic.UdiRelevanceDao;
import com.glxp.api.dto.DictDto;
import com.glxp.api.entity.thrsys.YbDrug;
import com.glxp.api.http.ErpBasicClient;
import com.glxp.api.res.chs.YbHcflEntityResponse;
import com.glxp.api.service.inout.impl.IoCodeService;
import com.glxp.api.service.inv.impl.InvProductService;
import com.glxp.api.service.thrsys.YbDrugService;
import org.springframework.beans.BeanUtils;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
@ -81,6 +83,8 @@ public class UdiRelevanceController extends BaseController {
UdiRelevanceDao udiRelevanceDao;
@Resource
ErpBasicClient erpBasicClient;
@Resource
YbDrugService ybDrugService;
//手持终端下载UDI产品信息
@ -847,4 +851,19 @@ public class UdiRelevanceController extends BaseController {
}
//国家库医保编码获取医保药品详情
@PostMapping("/udi/udirel/ybDrugDetail")
public BaseResponse ybDrugDetail(@RequestBody @Valid YbDrugDetailFilterRequest ybHcflDetailFilterRequest, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
}
List<YbDrug> list = ybDrugService.getList(ybHcflDetailFilterRequest);
if (list.size() > 0) {
return ResultVOUtils.success(list.get(0));
}
return ResultVOUtils.success(null);
}
}

@ -6,6 +6,7 @@ import com.glxp.api.constant.*;
import com.glxp.api.entity.basic.*;
import com.glxp.api.entity.collect.IoCollectCode;
import com.glxp.api.entity.collect.IoCollectOrder;
import com.glxp.api.entity.collect.IoCollectOrderOrigin;
import com.glxp.api.entity.inv.InvProductDetailEntity;
import com.glxp.api.exception.JsonException;
import com.glxp.api.req.collect.CollectOrderRequest;
@ -165,6 +166,13 @@ public class IoCodeTempController extends BaseController {
collectOrder = collectOrderService.unionSearch(null, null, code);
//=============================================//
if (collectOrder == null) {
//查询原始单据查到为异常提示
IoCollectOrderOrigin ioCollectOrigin = collectOriginService.getOrderByCode(code);
if (ioCollectOrigin != null){
BaseResponse response = ResultVOUtils.error(501, "单据已下载,转化异常");
response.setData(code);
return response;
}
BaseResponse response = ResultVOUtils.error(501, "查无此单据号,先选择要处理的单据");
response.setData(code);
return response;

@ -0,0 +1,17 @@
package com.glxp.api.dao.thrsys;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.entity.thrsys.YbDrug;
import com.glxp.api.req.basic.YbDrugDetailFilterRequest;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface YbDrugMapper extends BaseMapper<YbDrug> {
void batchSaveOrUpdateByGoodsCode(@Param("list")List<YbDrug> ybHcflEntities);
List<YbDrug> list(YbDrugDetailFilterRequest param);
}

@ -0,0 +1,149 @@
package com.glxp.api.entity.thrsys;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
/**
*
*/
@Data
@TableName(value = "yb_drug")
public class YbDrug implements Serializable {
/**
*
*/
@TableField(value = "businessLicense")
private String businessLicense;
/**
*
*/
@TableField(value = "companyNameSc")
private String companyNameSc;
/**
*
*/
@TableField(value = "approvalCode")
private String approvalCode;
/**
*
*/
@TableField(value = "goodsStandardCode")
private String goodsStandardCode;
/**
* baseId
*/
@TableField(value = "baseId")
private String baseId;
/**
*
*/
@TableField(value = "productName")
private String productName;
/**
*
*/
@TableField(value = "productMedicinemodel")
private String productMedicinemodel;
/**
*
*/
@TableField(value = "registeredProductName")
private String registeredProductName;
/**
*
*/
@TableField(value = "listingHolder")
private String listingHolder;
/**
*
*/
@TableField(value = "registeredMedicinemodel")
private String registeredMedicinemodel;
/**
*
*/
@TableField(value = "minUnit")
private String minUnit;
/**
*
*/
@TableField(value = "factor")
private Integer factor;
@TableField(value = "goodsName")
private String goodsName;
@TableField(value = "dataSouce")
private String dataSouce;
/**
*
*/
@TableField(value = "realityOutlook")
private String realityOutlook;
@TableField(value = "productRemark")
private String productRemark;
@TableField(value = "subpackager")
private String subpackager;
@TableField(value = "version")
private String version;
@TableField(value = "productInsuranceType")
private String productInsuranceType;
/**
*
*/
@TableField(value = "realityMedicinemodel")
private String realityMedicinemodel;
@TableField(value = "marketState")
private String marketState;
/**
*
*/
@TableField(value = "materialName")
private String materialName;
/**
*
*/
@TableField(value = "unit")
private String unit;
/**
*
*/
@TableField(value = "registeredOutlook")
private String registeredOutlook;
@TableField(value = "productCode")
private String productCode;
/**
*
*/
@TableField(value = "goodsCode")
private String goodsCode;
}

@ -11,17 +11,11 @@ import com.glxp.api.entity.basic.BasicSkProjectDetailEntity;
import com.glxp.api.entity.basic.BasicSkProjectEntity;
import com.glxp.api.entity.basic.BasicSkSickerEntity;
import com.glxp.api.entity.collect.IoCollectOrder;
import com.glxp.api.entity.thrsys.ThrManufacturerEntity;
import com.glxp.api.entity.thrsys.ThrOrderEntity;
import com.glxp.api.entity.thrsys.ThrSystemBusApiEntity;
import com.glxp.api.entity.thrsys.ThrSystemEntity;
import com.glxp.api.entity.thrsys.*;
import com.glxp.api.exception.JsonException;
import com.glxp.api.http.req.UdiwmsBusTypeRequest;
import com.glxp.api.http.req.UdiwmsUnitRequest;
import com.glxp.api.req.basic.DlThirdDestinyRequest;
import com.glxp.api.req.basic.GetSickPrescribeRequest;
import com.glxp.api.req.basic.GetSickRequest;
import com.glxp.api.req.basic.YbHcflDetailFilterRequest;
import com.glxp.api.req.basic.*;
import com.glxp.api.req.collect.PostCollectOrderRequest;
import com.glxp.api.req.inout.PostOrderRequest;
import com.glxp.api.req.thrsys.*;
@ -433,4 +427,22 @@ public class ErpBasicClient {
return ResultVOUtils.error(500, "连接第三方系统接口服务出错");
}
}
/**
*
*/
public BaseResponse<PageSimpleResponse<YbDrug>> getYbDrugDetail(YbDrugDetailFilterRequest ybHcflDetailFilterRequest) {
String url = "https://www.udims.com/UDI_DL_Server_test" + "/udchs/ybDrug/list";
try {
String response = httpOkClient.uCloudPost(url, ybHcflDetailFilterRequest);
BaseResponse<PageSimpleResponse<YbDrug>> listBaseResponse =
JSONObject.parseObject(response, new TypeReference<BaseResponse<PageSimpleResponse<YbDrug>>>() {
});
return listBaseResponse;
} catch (Exception e) {
log.error("医保药品详情", e);
return ResultVOUtils.error(500, "连接第三方系统接口服务出错");
}
}
}

@ -0,0 +1,15 @@
package com.glxp.api.req.basic;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
@Data
public class YbDrugDetailFilterRequest {
private String goodsCode;
private Integer page;
private Integer limit;
}

@ -1,12 +1,16 @@
package com.glxp.api.service.basic;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.entity.thrsys.BasicInsDrugEntity;
import com.glxp.api.entity.thrsys.BasicInsMaterialEntity;
import com.glxp.api.entity.thrsys.YbDrug;
import com.glxp.api.exception.JsonException;
import com.glxp.api.req.basic.YbDrugDetailFilterRequest;
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.service.thrsys.YbDrugService;
import com.glxp.api.util.IntUtil;
import org.apache.xmlbeans.impl.xb.xsdschema.Public;
import org.aspectj.weaver.ast.Var;
@ -62,6 +66,8 @@ public class UdiContrastService {
@Resource
BasicInsMaterialService basicInsMaterialService;
@Resource
YbDrugService ybDrugService;
public boolean isExit(String originUuid, String mainId, String thirdSys) {
@ -265,52 +271,40 @@ 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<BasicInsDrugEntity> basicInsDrugEntities = basicInsDrugService.filterList(thrInsDrugFeeRequest);
Collections.sort(basicInsDrugEntities, (o1, o2) -> o1.getTradeName().compareTo(o2.getTradeName()));
List<BasicInsDrugEntity> filteredEntities = basicInsDrugEntities.stream()
.filter(entity -> entity.getGenericName() != null) // 过滤掉 genericName 为 null 的元素
.collect(Collectors.toList());
if (filteredEntities.size() > 0) {
basicInsDrugEntity = filteredEntities.get(0);
} else {
Boolean aBoolean = insertProduct(thrProductsEntity, basicInsMaterialEntity, udiRelevanceEntity);
if (!aBoolean) {
throw new JsonException(500, "系统繁忙");
}
return;
}
int packLevel = 1; // 初始化计数器
//循环插入
for (BasicInsDrugEntity basicInsDrug : basicInsDrugEntities) {
UdiProductEntity udiProductEntity = new UdiProductEntity();
BeanUtils.copyProperties(thrProductsEntity, udiProductEntity);
udiProductEntity.setId(IdUtil.getSnowflakeNextId());
udiProductEntity.setNameCode(basicInsDrug.getTradeName());
udiProductEntity.setPrepnSpec(basicInsDrug.getPackagingSpec() != null ? basicInsDrug.getPackagingSpec() : basicInsDrugEntity.getPackagingSpec());
// udiProductEntity.setPrepnSpec(basicInsDrug.getPrepnSpec() != null ? basicInsDrug.getPrepnSpec() :basicInsDrugEntity.getPrepnSpec());
udiProductEntity.setZczbhhzbapzbh(basicInsDrug.getApprovalNum() != null ? basicInsDrug.getApprovalNum() : basicInsDrugEntity.getApprovalNum());
udiProductEntity.setCpmctymc(thrProductsEntity.getName());
if (basicInsDrugEntity != null && basicInsDrugEntity.getInsuranceDrugClass() != null) {
udiProductEntity.setMedicareType(setMedicareType(basicInsDrugEntity.getInsuranceDrugClass()));
}
YbDrugDetailFilterRequest ybHcflDetailFilterRequest = new YbDrugDetailFilterRequest();
ybHcflDetailFilterRequest.setLimit(1);
ybHcflDetailFilterRequest.setPage(1);
List<YbDrug> list = ybDrugService.getList(ybHcflDetailFilterRequest);
UdiProductEntity udiProductEntity = new UdiProductEntity();
BeanUtils.copyProperties(thrProductsEntity, udiProductEntity);
udiProductEntity.setId(IdUtil.getSnowflakeNextId());
if (list.size() > 0) {
YbDrug ybDrug = list.get(0);
udiProductEntity.setNameCode(ybDrug.getGoodsStandardCode());
udiProductEntity.setPrepnSpec(ybDrug.getRealityOutlook());
udiProductEntity.setZczbhhzbapzbh(ybDrug.getApprovalCode());
udiProductEntity.setCpmctymc(ybDrug.getProductRemark());
udiProductEntity.setMedicareType(setMedicareType(ybDrug.getProductInsuranceType()));
//最小产品单位
udiProductEntity.setPackUnit(basicInsDrug.getMinPackagingUnit() != null ? basicInsDrug.getMinPackagingUnit() : basicInsDrugEntity.getMinPackagingUnit());
udiProductEntity.setPackUnit(ybDrug.getUnit());
//设置最小产品数量
udiProductEntity.setBhxjsl(basicInsDrug.getMinPackagingQuantity() != null ? basicInsDrug.getMinPackagingQuantity() : basicInsDrugEntity.getMinPackagingQuantity());
udiProductEntity.setBhxjsl(ybDrug.getFactor());
//设置包装级别
udiProductEntity.setPackLevel(packLevel + "");
udiProductEntity.setPackLevel(1 + "");
//生产厂家
udiProductEntity.setManufactory(basicInsDrug.getManufacturerName() != null ? basicInsDrug.getManufacturerName() : basicInsDrugEntity.getManufacturerName());
udiProductEntity.setManufactory(ybDrug.getListingHolder());
//商品条码 essentialDrugMarkName sptm
udiProductEntity.setSptm(basicInsDrug.getEssentialDrugMarkName() != null ? basicInsDrug.getEssentialDrugMarkName() : basicInsDrugEntity.getEssentialDrugMarkName());
udiProductEntity.setPrepnUnit(thrProductsEntity.getPrepnUnit() == null ? null : thrProductsEntity.getPrepnUnit());
udiProductEntity.setSptm(ybDrug.getBusinessLicense());
udiProductEntity.setPrepnUnit(ybDrug.getMinUnit());
}
udiProductEntity.setUuid(udiRelevanceEntity.getUuid());
udiProductEntity.setDiType(1);
udiProductEntity.setScbssfbhph("是");
@ -326,7 +320,6 @@ public class UdiContrastService {
}
udiProductEntity = UdiInfoUtil.initUdiInfoEntity(udiProductEntity);
udiProductService.insertUdiInfo(udiProductEntity);
}
// setLevel(udiRelevanceEntity.getUuid());
UdiProductEntity byUuid = udiProductService.findByUuid(udiRelevanceEntity.getUuid());
udiRelevanceEntity = udiRelevanceService.insertDefaultLevel(udiRelevanceEntity, byUuid);
@ -508,11 +501,11 @@ public class UdiContrastService {
}
public Integer setMedicareType(String insuranceDrugClass) {
if ("甲".equals(insuranceDrugClass)) {
if ("甲".equals(insuranceDrugClass)) {
return 1;
} else if ("乙".equals(insuranceDrugClass)) {
} else if ("乙".equals(insuranceDrugClass)) {
return 2;
} else if ("丙".equals(insuranceDrugClass)) {
} else if ("丙".equals(insuranceDrugClass)) {
return 3;
} else {
return null; // 或者 throw new IllegalArgumentException("未知的医保类别");

@ -29,6 +29,7 @@ import com.glxp.api.res.basic.BasicSkPrescribeResponse;
import com.glxp.api.res.basic.SysWorkplaceDocumentResponse;
import com.glxp.api.service.basic.*;
import com.glxp.api.util.BeanCopyUtils;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -198,4 +199,12 @@ public class IoCollectOriginService {
}
return ResultVOUtils.success("提交成功");
}
public IoCollectOrderOrigin getOrderByCode(String code) {
List<IoCollectOrderOrigin> list = collectOrderOriginService.list(new LambdaUpdateWrapper<IoCollectOrderOrigin>().eq(IoCollectOrderOrigin::getBillNo, code));
if (list.size()>0){
return list.get(0);
}
return null;
}
}

@ -0,0 +1,34 @@
package com.glxp.api.service.thrsys;
import cn.hutool.core.collection.CollUtil;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.dao.thrsys.YbDrugMapper;
import com.glxp.api.entity.thrsys.YbDrug;
import com.glxp.api.http.ErpBasicClient;
import com.glxp.api.req.basic.YbDrugDetailFilterRequest;
import com.glxp.api.res.PageSimpleResponse;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class YbDrugService {
@Resource
YbDrugMapper ybDrugMapper;
@Resource
ErpBasicClient erpBasicClient;
public List<YbDrug> getList(YbDrugDetailFilterRequest ybHcflDetailFilterRequest) {
List<YbDrug> list = ybDrugMapper.list(ybHcflDetailFilterRequest);
if (CollUtil.isEmpty(list)){
BaseResponse<PageSimpleResponse<YbDrug>> ybDrugDetail = erpBasicClient.getYbDrugDetail(ybHcflDetailFilterRequest);
PageSimpleResponse<YbDrug> data = ybDrugDetail.getData();
List<YbDrug> list1 = data.getList();
ybDrugMapper.batchSaveOrUpdateByGoodsCode(list1);
return list1;
}
return list;
}
}

@ -0,0 +1,135 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.glxp.api.dao.thrsys.YbDrugMapper">
<!-- 自定义批量保存数据-->
<insert id="batchSaveOrUpdateByGoodsCode" parameterType="int">
INSERT INTO
yb_drug
(
businessLicense,
companyNameSc,
approvalCode,
goodsStandardCode,
baseId,
productName,
productMedicinemodel,
registeredProductName,
listingHolder,
registeredMedicinemodel,
minUnit,
factor,
goodsName,
dataSouce,
realityOutlook,
productRemark,
subpackager,
version,
productInsuranceType,
realityMedicinemodel,
marketState,
materialName,
unit,
registeredOutlook,
productCode,
goodsCode
)
VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.businessLicense},
#{item.companyNameSc},
#{item.approvalCode},
#{item.goodsStandardCode},
#{item.baseId},
#{item.productName},
#{item.productMedicinemodel},
#{item.registeredProductName},
#{item.listingHolder},
#{item.registeredMedicinemodel},
#{item.minUnit},
#{item.factor},
#{item.goodsName},
#{item.dataSouce},
#{item.realityOutlook},
#{item.productRemark},
#{item.subpackager},
#{item.version},
#{item.productInsuranceType},
#{item.realityMedicinemodel},
#{item.marketState},
#{item.materialName},
#{item.unit},
#{item.registeredOutlook},
#{item.productCode},
#{item.goodsCode}
)
</foreach>
ON DUPLICATE KEY UPDATE
businessLicense = VALUES(businessLicense),
companyNameSc = VALUES(companyNameSc),
approvalCode = VALUES(approvalCode),
goodsStandardCode = VALUES(goodsStandardCode),
baseId = VALUES(baseId),
productName = VALUES(productName),
productMedicinemodel = VALUES(productMedicinemodel),
registeredProductName = VALUES(registeredProductName),
listingHolder= VALUES(listingHolder),
registeredMedicinemodel = VALUES(registeredMedicinemodel),
minUnit = VALUES(minUnit),
factor = VALUES(factor),
goodsName = VALUES(goodsName),
dataSouce = VALUES(dataSouce),
realityOutlook = VALUES(realityOutlook),
productRemark = VALUES(productRemark),
subpackager = VALUES(subpackager),
version = VALUES(version),
productInsuranceType = VALUES(productInsuranceType),
realityMedicinemodel = VALUES(realityMedicinemodel),
marketState = VALUES(marketState),
materialName = VALUES(materialName),
unit = VALUES(unit),
registeredOutlook = VALUES(registeredOutlook),
productCode = VALUES(productCode),
goodsCode = VALUES(goodsCode)
</insert>
<select id="list" resultType="com.glxp.api.entity.thrsys.YbDrug" parameterType="com.glxp.api.entity.thrsys.YbDrug">
select
businessLicense,
companyNameSc,
approvalCode,
goodsStandardCode,
baseId,
productName,
productMedicinemodel,
registeredProductName,
listingHolder,
registeredMedicinemodel,
minUnit,
factor,
goodsName,
dataSouce,
realityOutlook,
productRemark,
subpackager,
version,
productInsuranceType,
realityMedicinemodel,
marketState,
materialName,
unit,
registeredOutlook,
productCode,
goodsCode
from yb_drug
<where>
<if test="goodsCode != '' and goodsCode != null">
and goodsCode like concat(#{goodsCode},'%')
</if>
</where>
order by goodsCode DESC
</select>
</mapper>
Loading…
Cancel
Save