You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
351 lines
14 KiB
Java
351 lines
14 KiB
Java
2 years ago
|
package com.glxp.mipsdl.client.ctqyy;
|
||
|
|
||
|
import cn.hutool.core.bean.BeanUtil;
|
||
|
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.BaseHttpClient;
|
||
|
import com.glxp.mipsdl.client.CommonHttpClient;
|
||
|
import com.glxp.mipsdl.config.ThirdSysConfig;
|
||
|
import com.glxp.mipsdl.constant.Constants;
|
||
|
import com.glxp.mipsdl.dao.auth.AuthUserDao;
|
||
|
import com.glxp.mipsdl.dao.auth.AuthWarehouseDao;
|
||
|
import com.glxp.mipsdl.dao.auth.AuthWarehouseUserMapper;
|
||
|
import com.glxp.mipsdl.dao.basic.BasicBussinessTypeDao;
|
||
|
import com.glxp.mipsdl.dao.basic.BasicCorpDao;
|
||
|
import com.glxp.mipsdl.dao.inout.*;
|
||
|
import com.glxp.mipsdl.dao.thrsys.ThrInvWarehouseDao;
|
||
|
import com.glxp.mipsdl.dao.thrsys.ThrSystemBusApiDao;
|
||
|
import com.glxp.mipsdl.http.HttpClient;
|
||
|
import com.glxp.mipsdl.req.base.*;
|
||
|
import com.glxp.mipsdl.req.ctqyy.CtqPostRelProductRequest;
|
||
|
import com.glxp.mipsdl.req.ctqyy.CtqyyRequest;
|
||
|
import com.glxp.mipsdl.req.ctqyy.GetSickPrescribeRequest;
|
||
|
import com.glxp.mipsdl.req.ctqyy.GetSickRequest;
|
||
|
import com.glxp.mipsdl.req.post.*;
|
||
|
import com.glxp.mipsdl.req.zzzyy.ZzzyyRequest;
|
||
|
import com.glxp.mipsdl.res.BaseResponse;
|
||
|
import com.glxp.mipsdl.res.udiwms.BasicSkPrescribeResponse;
|
||
|
import com.glxp.mipsdl.res.udiwms.BasicSkSickerResponse;
|
||
|
import com.glxp.mipsdl.res.udiwms.UdiRelevanceResponse;
|
||
|
import com.glxp.mipsdl.res.udiwms.ZzzyyProductsResponse;
|
||
|
import com.glxp.mipsdl.service.auth.AuthWarehouseService;
|
||
|
import com.glxp.mipsdl.service.thrsys.ThrCorpService;
|
||
|
import com.glxp.mipsdl.service.thrsys.ThrSystemDetailService;
|
||
|
import com.glxp.mipsdl.util.ResultVOUtils;
|
||
|
import com.glxp.mipsdl.util.SubmitOrderUtil;
|
||
|
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.List;
|
||
|
import java.util.Map;
|
||
|
|
||
|
@Slf4j
|
||
|
@Service(value = "100011HttpClient")
|
||
|
public class CtqyyClient extends CommonHttpClient {
|
||
|
|
||
|
@Resource
|
||
|
private ThrSystemDetailService thrSystemDetailService;
|
||
|
@Resource
|
||
|
private HttpClient httpClient;
|
||
|
@Resource
|
||
|
private IoOrderDao orderDao;
|
||
|
@Resource
|
||
|
private ThrSystemBusApiDao thrSystemBusApiDao;
|
||
|
@Resource
|
||
|
private AuthUserDao authUserDao;
|
||
|
@Resource
|
||
|
private BasicBussinessTypeDao basicBussinessTypeDao;
|
||
|
@Resource
|
||
|
private BasicCorpDao basicCorpDao;
|
||
|
@Resource
|
||
|
private IoCodeDao codeDao;
|
||
|
@Resource
|
||
|
private AuthWarehouseDao authWarehouseDao;
|
||
|
@Resource
|
||
|
private ThrInvWarehouseDao thrInvWarehouseDao;
|
||
|
@Resource
|
||
|
private AuthWarehouseService authWarehouseService;
|
||
|
@Resource
|
||
|
private ThirdSysConfig thirdSysConfig;
|
||
|
@Resource
|
||
|
private ThrCorpService thrCorpService;
|
||
|
@Resource
|
||
|
private IoOrderDetailBizDao orderDetailBizDao;
|
||
|
@Resource
|
||
|
private IoOrderDetailCodeDao orderDetailCodeDao;
|
||
|
|
||
|
|
||
|
@Resource
|
||
|
private IoOrderUploadLogDao orderUploadLogDao;
|
||
|
@Resource
|
||
|
private SubmitOrderUtil submitOrderUtil;
|
||
|
@Resource
|
||
|
AuthWarehouseUserMapper authWarehouseUserMapper;
|
||
|
|
||
|
/**
|
||
|
* 拼接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, "提交产品列表不能为空!");
|
||
|
}
|
||
|
for (UdiRelevanceResponse udiRelevanceResponse : udiRelevanceResponses) {
|
||
|
CtqPostRelProductRequest ctqPostRelProductRequest = new CtqPostRelProductRequest();
|
||
|
BeanUtil.copyProperties(udiRelevanceResponse, ctqPostRelProductRequest);
|
||
|
ctqPostRelProductRequest.setDiCode(udiRelevanceResponse.getNameCode());
|
||
|
ctqPostRelProductRequest.setPriceCategory(udiRelevanceResponse.getBasicPrductRemak8());
|
||
|
}
|
||
|
|
||
|
//todo 调用提交接口
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* 获取患者信息
|
||
|
*
|
||
|
* @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 + ")");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
@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;
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|