package com.glxp.mipsdl.client.ctqyy; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.glxp.mipsdl.client.CommonHttpClient; import com.glxp.mipsdl.constant.Constants; import com.glxp.mipsdl.entity.ctqyy.MaterialDictEntity; import com.glxp.mipsdl.entity.ctqyy.PriceClassEntity; import com.glxp.mipsdl.entity.ctqyy.ThrHslbEntity; import com.glxp.mipsdl.http.HttpClient; import com.glxp.mipsdl.req.base.*; import com.glxp.mipsdl.req.ctqyy.*; import com.glxp.mipsdl.req.post.*; import com.glxp.mipsdl.res.BaseResponse; import com.glxp.mipsdl.res.ctqyy.CtBaseResponse; import com.glxp.mipsdl.res.udiwms.*; import com.glxp.mipsdl.service.thrsys.ThrSystemDetailService; import com.glxp.mipsdl.util.ResultVOUtils; import lombok.extern.slf4j.Slf4j; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.Map; @Slf4j @Service(value = "100011HttpClient") public class CtqyyClient extends CommonHttpClient { @Resource private ThrSystemDetailService thrSystemDetailService; @Resource private HttpClient httpClient; /** * 拼接xml请求头 * * @param methodName 方法名 * @return */ public String getMsgHeader(String methodName) { return "" + "" + "" + methodName + "" + ""; } public String parserResult(String response) { if (response.contains(" zzzyyProductsResponse = JSON.parseArray(map.get("list") + "", ZzzyyProductsResponse.class); for (ZzzyyProductsResponse productsResponse : zzzyyProductsResponse) { //判断要是规格和型号一致就是取规格 不一致就合并 if (StrUtil.isNotEmpty(productsResponse.getModel_number()) && StrUtil.isNotEmpty(productsResponse.getStandard())) { if (productsResponse.getModel_number().equals(productsResponse.getStandard())) { productsResponse.setStandard(productsResponse.getStandard()); } else { productsResponse.setStandard(productsResponse.getStandard() + productsResponse.getModel_number()); } } else if (StrUtil.isNotEmpty(productsResponse.getModel_number()) && StrUtil.isBlank(productsResponse.getStandard())) { productsResponse.setStandard(productsResponse.getModel_number()); } } map.put("list", JSON.toJSON(zzzyyProductsResponse)); baseResponse.setData(""); baseResponse.setData(map); return baseResponse; } catch (Exception e) { log.error("解析漳州中医院智业接口返回产品信息字典数据异常,返回结果:{}", response); log.error("异常信息:{}", e); return ResultVOUtils.error(500, "网络错误,或远程服务器异常无法返回正确结果(" + response + ")"); } } @Override public BaseResponse getOrderTypes(UdiwmsBusTypeRequest udiwmsBusTypeRequest) { CtqyyRequest ctqyyRequest = new CtqyyRequest(); ctqyyRequest.setMsgHeader(getMsgHeader("getMaterialType")); ctqyyRequest.setMsgBody(JSONUtil.toJsonStr(udiwmsBusTypeRequest)); String response = httpClient.postJson(thrSystemDetailService.getUrlExclude(Constants.URL_NAME_BUS_TYPE_QUERY_URL), ctqyyRequest); response = parserResult(response); try { BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class); return baseResponse; } catch (Exception e) { log.error("解析漳州中医院智业接口返回单据类型数据异常,返回结果:{}", response); log.error("异常信息:{}", e); return ResultVOUtils.error(500, "网络错误,或远程服务器异常无法返回正确结果(" + response + ")"); } } /** * 提交关联产品更新 * * @return */ @Override public BaseResponse postRelProduct(PostRelProductRequest postThrInvProductsRequest) { UdiRelevanceResponse udiRelevanceResponse = postThrInvProductsRequest.getUdiRelevanceResponse(); if (udiRelevanceResponse == null) { return ResultVOUtils.error(500, "提交产品列表不能为空!"); } MaterialDictEntity materialDictEntity = new MaterialDictEntity(); if (udiRelevanceResponse.getMainId().isEmpty() && StrUtil.isNotEmpty(udiRelevanceResponse.getOriginUuid())) materialDictEntity.setOperatType("1"); else materialDictEntity.setOperatType("2"); materialDictEntity.setMaterialName(udiRelevanceResponse.getCpmctymc()); materialDictEntity.setCostlySign("1"); materialDictEntity.setMaterialMasterCode(udiRelevanceResponse.getNameCode()); materialDictEntity.setHisMaterialCode(udiRelevanceResponse.getMainId()); materialDictEntity.setMaterialSpec(udiRelevanceResponse.getGgxh()); materialDictEntity.setMaterialUnit(udiRelevanceResponse.getMeasname()); //暂无区分进货价,零售价 materialDictEntity.setImportPrice(udiRelevanceResponse.getPrice() == null ? "0" : udiRelevanceResponse.getPrice().toString()); materialDictEntity.setRetailPrice(udiRelevanceResponse.getPrice() == null ? "0" : udiRelevanceResponse.getPrice().toString()); materialDictEntity.setFactoryName(udiRelevanceResponse.getManufactory()); materialDictEntity.setSupplierName(udiRelevanceResponse.getSupName()); materialDictEntity.setInsuranceCode(udiRelevanceResponse.getYbbm()); materialDictEntity.setRegeditNo(udiRelevanceResponse.getZczbhhzbapzbh()); materialDictEntity.setMaterialClass(udiRelevanceResponse.getBasicPrductRemak7()); //暂无中标标识 materialDictEntity.setPublicFlag("1"); materialDictEntity.setPriceItemClass(udiRelevanceResponse.getBasicPrductRemak8()); //暂无收费标志 materialDictEntity.setFeeFlag("1"); CtqyyRequest ctqyyRequest = new CtqyyRequest(); ctqyyRequest.setMsgHeader(getMsgHeader("addMaterialDict")); ctqyyRequest.setMsgBody(JSONUtil.toJsonStr(materialDictEntity)); String response = httpClient.postJson(thrSystemDetailService.getUrlExclude(Constants.URL_NAME_PRODUCT_SUBMIT_URL), ctqyyRequest); response = parserResult(response); try { log.error("提交新增产品信息:" + ctqyyRequest.getMsgBody()); CtBaseResponse baseResponse = JSONObject.parseObject(response, CtBaseResponse.class); if (baseResponse.getReturnCode() != 20000) { String errMsg = "提交新增产品信息,异常:{}" + response; log.error(errMsg); return ResultVOUtils.error(500, "提交新增产品失败!"); } else { // materialDictEntity.setMaterialNo(baseResponse.getMaterialNo()); log.error("提交新增产品信息,成功:{}", response); return ResultVOUtils.success(baseResponse.getMaterialNo()); } } catch (Exception e) { String errMsg = "提交新增产品信息,异常:{}" + response; log.error(errMsg); log.error("异常信息:{}", e); return ResultVOUtils.error(500, errMsg); } } /** * 获取患者信息 * * @param getSickRequest * @return */ public BaseResponse getSickInfo(GetSickRequest getSickRequest) { CtqyyRequest ctqyyRequest = new CtqyyRequest(); ctqyyRequest.setMsgHeader(getMsgHeader("getMaterialDict")); ctqyyRequest.setMsgBody(JSONUtil.toJsonStr(getSickRequest)); String response = httpClient.postJson(thrSystemDetailService.getUrlExclude(Constants.URI_GET_SICKER), ctqyyRequest); response = parserResult(response); try { BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class); Map map = (Map) baseResponse.getData(); List basicSkSickerResponses = JSON.parseArray(map.get("list") + "", BasicSkSickerResponse.class); for (BasicSkSickerResponse productsResponse : basicSkSickerResponses) { } map.put("list", JSON.toJSON(basicSkSickerResponses)); baseResponse.setData(""); baseResponse.setData(map); return baseResponse; } catch (Exception e) { log.error("解析长泰医院智业返回病人信息数据异常,返回结果:{}", response); log.error("异常信息:{}", e); return ResultVOUtils.error(500, "网络错误,或远程服务器异常无法返回正确结果(" + response + ")"); } } /** * 获取患者处方信息 * * @param getSickPrescribeRequest * @return */ public BaseResponse getSickPescribe(GetSickPrescribeRequest getSickPrescribeRequest) { CtqyyRequest ctqyyRequest = new CtqyyRequest(); ctqyyRequest.setMsgHeader(getMsgHeader("getMaterialDict")); ctqyyRequest.setMsgBody(JSONUtil.toJsonStr(getSickPrescribeRequest)); String response = httpClient.postJson(thrSystemDetailService.getUrlExclude(Constants.URI_GET_SICKER_PRESCIRBE), ctqyyRequest); response = parserResult(response); try { BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class); Map map = (Map) baseResponse.getData(); List basicSkPrescribeResponses = JSON.parseArray(map.get("list") + "", BasicSkPrescribeResponse.class); for (BasicSkPrescribeResponse basicSkPrescribeResponse : basicSkPrescribeResponses) { } map.put("list", JSON.toJSON(basicSkPrescribeResponses)); baseResponse.setData(""); baseResponse.setData(map); return baseResponse; } catch (Exception e) { log.error("解析长泰医院智业返回处方信息数据异常,返回结果:{}", response); log.error("异常信息:{}", e); return ResultVOUtils.error(500, "网络错误,或远程服务器异常无法返回正确结果(" + response + ")"); } } /** * 获取项目组套字典 * * @param dlThirdProjectRequest * @return */ @Override public BaseResponse getBasicProject(DlThirdProjectRequest dlThirdProjectRequest) { CtqyyRequest ctqyyRequest = new CtqyyRequest(); ctqyyRequest.setMsgHeader(getMsgHeader("getMaterialDict")); ctqyyRequest.setMsgBody(JSONUtil.toJsonStr(dlThirdProjectRequest)); String response = httpClient.postJson(thrSystemDetailService.getUrlExclude(Constants.URI_GET_PROJECT), ctqyyRequest); response = parserResult(response); try { BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class); Map map = (Map) baseResponse.getData(); List basicSkProjectResponses = JSON.parseArray(map.get("list") + "", BasicSkProjectResponse.class); for (BasicSkProjectResponse basicSkProjectResponse : basicSkProjectResponses) { } map.put("list", JSON.toJSON(basicSkProjectResponses)); baseResponse.setData(""); baseResponse.setData(map); return baseResponse; } catch (Exception e) { log.error("解析长泰医院智业返回项目信息数据异常,返回结果:{}", response); log.error("异常信息:{}", e); return ResultVOUtils.error(500, "网络错误,或远程服务器异常无法返回正确结果(" + response + ")"); } } /** * 获取核算类别 * * @param hslbRequest * @return */ @Override public BaseResponse getHsfl(FilterThrHslbRequest hslbRequest) { CtqyyRequest ctqyyRequest = new CtqyyRequest(); ctqyyRequest.setMsgHeader(getMsgHeader("getItemClass")); ctqyyRequest.setMsgBody(JSONUtil.toJsonStr(hslbRequest)); String response = httpClient.postJson(thrSystemDetailService.getUrlExclude(Constants.URI_GET_HSLB), ctqyyRequest); response = parserResult(response); try { BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class); Map map = (Map) baseResponse.getData(); List priceClassEntities = JSON.parseArray(map.get("list") + "", PriceClassEntity.class); List hslbEntities = new ArrayList<>(); for (PriceClassEntity priceClassEntity : priceClassEntities) { ThrHslbEntity thrHslbEntity = new ThrHslbEntity(); thrHslbEntity.setHsbm(priceClassEntity.getClassCode()); thrHslbEntity.setHsmc(priceClassEntity.getClassName()); hslbEntities.add(thrHslbEntity); } map.put("list", JSON.toJSON(hslbEntities)); baseResponse.setData(""); baseResponse.setData(map); return baseResponse; } catch (Exception e) { log.error("解析长泰医院智业返回物价类别信息异常,返回结果:{}", response); log.error("异常信息:{}", e); return ResultVOUtils.error(500, "网络错误,或远程服务器异常无法返回正确结果(" + response + ")"); } } @Override public BaseResponse getOrders(UdiwmsOrderQueryRequest udiwmsOrderQueryRequest) { return null; } @Override public BaseResponse submitOrders(UdiwmsOrderRequest udiwmsOrderRequest) { return null; } @Override public BaseResponse getInvProducts(UdiwmsInvProductsRequest udiwmsInvProductsRequest) { return null; } @Override public BaseResponse getWarehouse(UdiwmsWarehouseRequest udiwmsWarehouseRequest) { return null; } @Override public BaseResponse testConnect() { UdiwmsUnitRequest udiwmsUnitRequest = new UdiwmsUnitRequest(); udiwmsUnitRequest.setPage(1); udiwmsUnitRequest.setLimit(1); BaseResponse baseResponse = getUnit(udiwmsUnitRequest); if (baseResponse.getCode() == 20000) { return ResultVOUtils.success("连接成功!"); } return ResultVOUtils.error(500, "连接失败!"); } @Override public BaseResponse queryUdiInvProducts(UdiwmsQueryUdiInvProductsRequest queryUdiInvProductsRequest) { return null; } @Override public BaseResponse submitProducts(UdiwmsAddProductsRequest udiwmsAddProductsRequest) { return null; } @Override public BaseResponse submitUnit(UdiwmsAddUnitRequest udiwmsAddUnitRequest) { return null; } @Override public BaseResponse submitPreInOrders(UdiwmsPreInOrderRequest udiwmsPreInOrderRequest) { return null; } @Override public BaseResponse postProducts(PostThrProductsRequest postThrProductsRequest) { return null; } @Override public BaseResponse postCorps(PostThrCorpRequest postThrCorpRequest) { return null; } @Override public BaseResponse postOrderDetail(PostFileThrOrderRequest postFileThrOrderRequest) { return null; } @Override public BaseResponse postInvProducts(PostThrInvProductsRequest postThrInvProductsRequest) { return null; } }