|
|
|
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.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 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
|
|
|
|
"<root>" +
|
|
|
|
"<serverName>" +
|
|
|
|
methodName +
|
|
|
|
"</serverName>" +
|
|
|
|
"</root>";
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public String parserResult(String response) {
|
|
|
|
if (response.contains("<root")) {
|
|
|
|
try {
|
|
|
|
Document document = DocumentHelper.parseText(response);
|
|
|
|
String message = document.getRootElement().element("message").getText();
|
|
|
|
return message;
|
|
|
|
} catch (DocumentException e) {
|
|
|
|
log.info("解析长泰区医院智业接口返回结果异常, 返回结果:{}", response);
|
|
|
|
log.error("异常信息:", e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return response;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public BaseResponse getUnit(UdiwmsUnitRequest udiwmsUnitRequest) {
|
|
|
|
CtqyyRequest ctqyyRequest = new CtqyyRequest();
|
|
|
|
ctqyyRequest.setMsgHeader(getMsgHeader("getMaterialUnit"));
|
|
|
|
ctqyyRequest.setMsgBody(JSONUtil.toJsonStr(udiwmsUnitRequest));
|
|
|
|
String response = httpClient.postJson(thrSystemDetailService.getUrlExclude(Constants.URL_NAME_CORP_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 + ")");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public BaseResponse getProducts(UdiwmsProductRequest udiwmsProductRequest) {
|
|
|
|
CtqyyRequest ctqyyRequest = new CtqyyRequest();
|
|
|
|
ctqyyRequest.setMsgHeader(getMsgHeader("getMaterialDict"));
|
|
|
|
ctqyyRequest.setMsgBody(JSONUtil.toJsonStr(udiwmsProductRequest));
|
|
|
|
String response = httpClient.postJson(thrSystemDetailService.getUrlExclude(Constants.URL_NAME_PI_QUERY_URL), ctqyyRequest);
|
|
|
|
response = parserResult(response);
|
|
|
|
try {
|
|
|
|
BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class);
|
|
|
|
Map map = (Map) baseResponse.getData();
|
|
|
|
List<ZzzyyProductsResponse> 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) {
|
|
|
|
List<UdiRelevanceResponse> udiRelevanceResponses = postThrInvProductsRequest.getDatas();
|
|
|
|
|
|
|
|
if (CollUtil.isEmpty(udiRelevanceResponses)) {
|
|
|
|
return ResultVOUtils.error(500, "提交产品列表不能为空!");
|
|
|
|
}
|
|
|
|
List<MaterialDictEntity> materialDictEntities = new ArrayList<>();
|
|
|
|
for (UdiRelevanceResponse udiRelevanceResponse : udiRelevanceResponses) {
|
|
|
|
MaterialDictEntity materialDictEntity = new MaterialDictEntity();
|
|
|
|
materialDictEntity.setOperatType(1);
|
|
|
|
materialDictEntity.setMaterialName(udiRelevanceResponse.getCpmctymc());
|
|
|
|
materialDictEntity.setCostlySign(1);
|
|
|
|
materialDictEntity.setHisMaterialCode(udiRelevanceResponse.getNameCode());
|
|
|
|
materialDictEntity.setHisMaterialCode(udiRelevanceResponse.getMainId());
|
|
|
|
materialDictEntity.setMaterialSpec(udiRelevanceResponse.getGgxh());
|
|
|
|
materialDictEntity.setMaterialUnit(udiRelevanceResponse.getMeasname());
|
|
|
|
//暂无区分进货价,零售价
|
|
|
|
materialDictEntity.setImportPrice(udiRelevanceResponse.getPrice());
|
|
|
|
materialDictEntity.setRetailPrice(udiRelevanceResponse.getPrice());
|
|
|
|
materialDictEntity.setFactoryName(udiRelevanceResponse.getManufactory());
|
|
|
|
materialDictEntity.setSupplierName(udiRelevanceResponse.getSupName());
|
|
|
|
materialDictEntity.setInsuranceCode(udiRelevanceResponse.getYbbm());
|
|
|
|
materialDictEntity.setRegeditNo(udiRelevanceResponse.getZczbhhzbapzbh());
|
|
|
|
//暂无中标标识
|
|
|
|
materialDictEntity.setPublicFlag(null);
|
|
|
|
materialDictEntity.setPriceItemClass(udiRelevanceResponse.getBasicPrductRemak8());
|
|
|
|
//暂无收费标志
|
|
|
|
materialDictEntity.setFeeFlag(null);
|
|
|
|
materialDictEntities.add(materialDictEntity);
|
|
|
|
|
|
|
|
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());
|
|
|
|
BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class);
|
|
|
|
if (baseResponse.getCode() != 20000) {
|
|
|
|
log.error("提交新增产品信息,异常:{}", response);
|
|
|
|
} else {
|
|
|
|
log.error("提交新增产品信息,成功:{}", response);
|
|
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
|
|
log.error("提交新增产品信息,返回结果:{}", response);
|
|
|
|
log.error("异常信息:{}", e);
|
|
|
|
// return ResultVOUtils.error(500, "网络错误,或远程服务器异常无法返回正确结果(" + response + ")");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return ResultVOUtils.success("新增成功!");
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 获取患者信息
|
|
|
|
*
|
|
|
|
* @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<BasicSkSickerResponse> 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<BasicSkPrescribeResponse> 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<BasicSkProjectResponse> 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<PriceClassEntity> priceClassEntities = JSON.parseArray(map.get("list") + "", PriceClassEntity.class);
|
|
|
|
|
|
|
|
List<ThrHslbEntity> 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;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|