package com.glxp.api.http; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.entity.thrsys.ThrSystemBusApiEntity; import com.glxp.api.entity.thrsys.ThrSystemEntity; import com.glxp.api.http.req.UdiwmsBusTypeRequest; import com.glxp.api.http.req.UdiwmsUnitRequest; import com.glxp.api.req.thrsys.FilterBasicThirdSysDetailRequest; import com.glxp.api.req.thrsys.FilterThrProductsRequest; import com.glxp.api.req.thrsys.ThrUnitMaintainFilterRequest; import com.glxp.api.req.thrsys.UdiwmsWarehouseRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.thrsys.ThrCorpsResponse; import com.glxp.api.res.thrsys.ThrProductsResponse; import com.glxp.api.res.thrsys.UdiwmsWarehouseDetail; import com.glxp.api.service.thrsys.ThrSystemService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; /** * 第三方服务HttpClient */ @Slf4j @Service public class ErpBasicClient { @Resource HttpOkClient httpOkClient; @Resource private ThrSystemService basicThirdSysService; //获取往来单位 public BaseResponse> getErpCrop(ThrUnitMaintainFilterRequest thrUnitMaintainFilterRequest) { UdiwmsUnitRequest udiwmsUnitRequest = new UdiwmsUnitRequest(); BeanUtils.copyProperties(thrUnitMaintainFilterRequest, udiwmsUnitRequest); udiwmsUnitRequest.setUnitId(thrUnitMaintainFilterRequest.getErpId()); ThrSystemEntity thrSystemEntity = basicThirdSysService.selectByThirdId(thrUnitMaintainFilterRequest.getThirdSys()); try { String url = thrSystemEntity.getThridUrl() + "/udiwms/erp/getUnits"; String response = httpOkClient.uCloudPost(url, udiwmsUnitRequest, thrSystemEntity); if (StrUtil.isBlank(response)) { return ResultVOUtils.error(500, "连接第三方系统接口服务出错!"); } BaseResponse> udiDlDeviceResponse = JSONObject.parseObject(response, new TypeReference>>() { }); return udiDlDeviceResponse; } catch (Exception e) { log.error("获取往来单位异常", e); return ResultVOUtils.error(500, "连接第三方系统接口服务出错!"); } } //获取产品信息 public BaseResponse> getErpProducts(FilterThrProductsRequest filterThrProductsRequest) { ThrSystemEntity basicThirdSysEntity = basicThirdSysService.selectByThirdId(filterThrProductsRequest.getThirdSys()); String url = basicThirdSysEntity.getThridUrl() + "/udiwms/erp/getProducts"; try { String response = httpOkClient.uCloudPost(url, filterThrProductsRequest, basicThirdSysEntity); if (StrUtil.isBlank(response)) { return ResultVOUtils.error(500, "连接第三方系统接口服务出错!"); } BaseResponse> udiDlDeviceResponse = JSONObject.parseObject(response, new TypeReference>>() { }); return udiDlDeviceResponse; } catch (Exception e) { log.error("获取产品信息异常", e); return ResultVOUtils.error(500, "连接第三方系统接口服务出错!"); } } // //获取单据类型 // public BaseResponse> getBusTypes(FilterBasicThirdSysDetailRequest filterBasicThirdSysDetailRequest) { // BasicThirdSysEntity basicThirdSysEntity = basicThirdSysService.selectByThirdId(filterBasicThirdSysDetailRequest.getThirdSysFk()); // String url = basicThirdSysEntity.getThridUrl() + "/udiwms/erp/getOrderType"; // UdiwmsBusTypeRequest udiwmsBusTypeRequest = new UdiwmsBusTypeRequest(); // udiwmsBusTypeRequest.setThirdSys(filterBasicThirdSysDetailRequest.getThirdSysFk()); // udiwmsBusTypeRequest.setPage(filterBasicThirdSysDetailRequest.getPage()); // udiwmsBusTypeRequest.setLimit(filterBasicThirdSysDetailRequest.getLimit()); // try { // String response = httpOkClient.uCloudPost(url, udiwmsBusTypeRequest, basicThirdSysEntity); // log.info(response); // BaseResponse> udiDlDeviceResponse = // JSONObject.parseObject(response, new TypeReference>>() { // }); // return udiDlDeviceResponse; // } catch (Exception e) { // log.error("获取单据类型异常", e); // return ResultVOUtils.error(500, "连接第三方系统接口服务出错!"); // } // } // //查询仓库货位号 public BaseResponse> getWarehouse(UdiwmsWarehouseRequest udiwmsWarehouseRequest) { ThrSystemEntity basicThirdSysEntity = basicThirdSysService.selectByThirdId(udiwmsWarehouseRequest.getThirdSys()); String url = basicThirdSysEntity.getThridUrl() + "/udiwms/erp/getWarehouse"; try { String response = httpOkClient.uCloudPost(url, udiwmsWarehouseRequest); BaseResponse> listBaseResponse = JSONObject.parseObject(response, new TypeReference>>() { }); return listBaseResponse; } catch (Exception e) { log.error("获取第三方系统的仓库货位码异常", e); return ResultVOUtils.error(500, "连接第三方系统接口服务出错"); } } //测试连通性 public BaseResponse testConnection(ThrSystemEntity thrSystemEntity) { String response = httpOkClient.uCloudPost(thrSystemEntity.getThridUrl() + "/udispsync/sync/testConnection", "{}"); log.info(response); if (StrUtil.isBlank(response)) { return ResultVOUtils.error(500, "连接失败"); } try { return JSONObject.parseObject(response, BaseResponse.class); } catch (Exception e) { log.info("测试第三方服务连通性失败"); return ResultVOUtils.error(500, "连接失败"); } } //测试连通性 public BaseResponse testThridConnect(ThrSystemEntity thrSystemEntity) { String response = httpOkClient.uCloudPost(thrSystemEntity.getThridUrl() + "/udiwms/erp/testThirdSys", "{}"); log.info(response); try { return JSONObject.parseObject(response, BaseResponse.class); } catch (Exception e) { log.info("测试第三方服务接口连通性失败"); return ResultVOUtils.error(500, "连接失败"); } } //下载第三方系统单据类型 public BaseResponse> getBusTypes(FilterBasicThirdSysDetailRequest filterBasicThirdSysDetailRequest) { ThrSystemEntity thrSystemEntity = basicThirdSysService.selectByThirdId(filterBasicThirdSysDetailRequest.getThirdSysFk()); String url = thrSystemEntity.getThridUrl() + "/udiwms/erp/getOrderType"; UdiwmsBusTypeRequest udiwmsBusTypeRequest = new UdiwmsBusTypeRequest(); udiwmsBusTypeRequest.setThirdSys(filterBasicThirdSysDetailRequest.getThirdSysFk()); udiwmsBusTypeRequest.setPage(filterBasicThirdSysDetailRequest.getPage()); udiwmsBusTypeRequest.setLimit(filterBasicThirdSysDetailRequest.getLimit()); try { String response = httpOkClient.uCloudPost(url, udiwmsBusTypeRequest, thrSystemEntity); log.info(response); BaseResponse> udiDlDeviceResponse = JSONObject.parseObject(response, new TypeReference>>() { }); if(udiDlDeviceResponse!=null){ return udiDlDeviceResponse; }else{ return ResultVOUtils.error(500, "查询第三方数据失败!"); } } catch (Exception e) { log.error("获取单据类型异常", e); return ResultVOUtils.error(500, "连接第三方系统接口服务出错!"); } } }