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 "" + "" + "" + 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) { List 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 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 + ")"); } } @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; } }