JAVA 快递100wms工具类

快递wms工具类

在这里插入图片描述

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.kuaidi100.sdk.api.QueryTrack;
import com.kuaidi100.sdk.api.Subscribe;
import com.kuaidi100.sdk.contant.ApiInfoConstant;
import com.kuaidi100.sdk.core.IBaseClient;
import com.kuaidi100.sdk.pojo.HttpResult;
import com.kuaidi100.sdk.request.QueryTrackParam;
import com.kuaidi100.sdk.request.QueryTrackReq;
import com.kuaidi100.sdk.request.SubscribeParam;
import com.kuaidi100.sdk.request.SubscribeParameters;
import com.kuaidi100.sdk.request.SubscribeReq;
import com.kuaidi100.sdk.response.QueryTrackResp;
import com.kuaidi100.sdk.response.SubscribeResp;
import com.kuaidi100.sdk.utils.SignUtils;
import jakarta.annotation.Nullable;
import jakarta.validation.constraints.NotNull;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpStatus;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;import java.util.Objects;/*** @author lisong*/
@Component
@Slf4j
public class WmsUtil {@Value("${wms.kuaidi-100.key}")private String key;@Value("${wms.kuaidi-100.customer}")private String customer;@Value("${wms.kuaidi-100.callbackUrl}")private String callbackUrl;/**** Desc: 订阅物流* @param companyEncoded 物流公司编码* @param wmsOrderNo 物流单号* @param phoneNum   手机号* @author lisong**/public void subscribe(String companyEncoded, String wmsOrderNo, String phoneNum) throws Exception {SubscribeParameters subscribeParameters = new SubscribeParameters();subscribeParameters.setCallbackurl(callbackUrl);subscribeParameters.setPhone(phoneNum);SubscribeParam subscribeParam = new SubscribeParam();subscribeParam.setParameters(subscribeParameters);subscribeParam.setCompany(companyEncoded);subscribeParam.setNumber(wmsOrderNo);subscribeParam.setKey(key);SubscribeReq subscribeReq = new SubscribeReq();subscribeReq.setSchema(ApiInfoConstant.SUBSCRIBE_SCHEMA);subscribeReq.setParam(new Gson().toJson(subscribeParam));IBaseClient subscribe = new Subscribe();HttpResult httpResult = subscribe.execute(subscribeReq);SubscribeResp subscribeResp = handleWmsResult(httpResult, SubscribeResp.class);log.info("订阅物流返回信息:{}", JSON.toJSONString(subscribeResp));}public QueryTrackResp queryTrack(String companyEncoded, String wmsOrderNo, String phoneNum) throws Exception {QueryTrackReq queryTrackReq = new QueryTrackReq();QueryTrackParam queryTrackParam = new QueryTrackParam();queryTrackParam.setCom(companyEncoded);queryTrackParam.setNum(wmsOrderNo);queryTrackParam.setPhone(phoneNum);String param = new Gson().toJson(queryTrackParam);queryTrackReq.setParam(param);queryTrackReq.setCustomer(customer);queryTrackReq.setSign(SignUtils.querySign(param, key, customer));IBaseClient baseClient = new QueryTrack();HttpResult httpResult = baseClient.execute(queryTrackReq);return handleWmsResult(httpResult, QueryTrackResp.class);}/**** Desc: 处理快递100接口返回结果* @param httpResult 快递100接口返回结果* @return* @author lisong**/@Nullable@SuppressWarnings("all")private <T> T handleWmsResult(@NotNull HttpResult httpResult, Class<T> clazz) {if (httpResult.getStatus() == HttpStatus.SC_OK && StringUtils.isNotBlank(httpResult.getBody())) {String body = httpResult.getBody();JSONObject jsonObject = JSON.parseObject(httpResult.getBody());if (Objects.nonNull(jsonObject.get("data"))) {return JSONObject.toJavaObject(jsonObject, clazz);} else if (Objects.nonNull(jsonObject.get("message"))) {QueryTrackResp queryTrackResp = JSON.parseObject(httpResult.getBody(), QueryTrackResp.class);return JSONObject.toJavaObject(jsonObject, clazz);}return JSONObject.toJavaObject(jsonObject, clazz);}return null;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/865834.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

go开源webssh终端源码main.go分析

1.地址: https://github.com/Jrohy/webssh.git 2.添加中文注释地址: https://github.com/tonyimax/webssh_cn.git main.go分析 主包名&#xff1a;main package main //主包名 依赖包加载 //导入依赖包 import ("embed" //可执行文件…

为什么从Java程序粘贴数值到Excel 2024会变为两行?

问题描述 在从Java程序中粘贴一个数值到Excel 2024时&#xff0c;该数值会自动分成两行显示&#xff0c;而在Excel 2021中不会出现这个问题。 可能原因 这个问题可能是由于以下几个原因导致的&#xff1a; 换行符问题&#xff1a; Java程序在输出数据时可能包含了换行符&…

中英双语介绍美国的州:内布拉斯加州(Nebraska)

中文版 内布拉斯加州&#xff08;Nebraska&#xff09;位于美国中部&#xff0c;以其广阔的平原、农业生产和丰富的历史遗产而闻名。以下是对内布拉斯加州的详细介绍&#xff0c;包括其地理位置、人口、经济、教育、文化和主要城市。 地理位置 内布拉斯加州东临爱荷华州和密…

解决js对象解构赋值多行格式被prettier格式化为一行的问题

目前没有特别好的解决方法&#xff0c;但是有一个hack方法&#xff0c;就是在第一个解构参数后面加个空注释&#xff0c;骗过prettier。 代码示例如下&#xff1a; const {prop1, //prop2,prop3, } props 欢迎关注公众号&#xff1a;清晰编程&#xff0c;获取更多精彩内容

方向导数和梯度

方向导数和梯度 1 导数的回忆2 偏导数及其向量形式偏导数的几何意义偏导数的向量形式 3 方向导数向量形式几何意义方向导数和偏导的关系 4 梯度5 梯度下降算法 1 导数的回忆 导数的几何意义如图所示&#xff1a; 当 P 0 P_{0} P0​点不断接近 P P P时&#xff0c;导数如下定义…

springboot私人诊所管理系统-计算机毕业设计源码93887

摘要 随着科技的不断发展和医疗服务的日益普及&#xff0c;私人诊所管理系统成为现代医疗管理的重要组成部分。该系统通过引入计算机技术和互联网平台&#xff0c;为患者提供方便快捷的就诊方式&#xff0c;同时也为诊所、医院提供高效的资源管理和服务优化的途径。本文将介绍私…

[Mdp] lc 494. 目标和(01背包变种+dp+dfs)

文章目录 1. 题目来源2. 题目解析1. 题目来源 链接:494. 目标和 2. 题目解析 方法一:dfs 数据量比较小,长度只有 20,那么针对每一个数都有两种选择,正、负,即 2 20 = 100 w 2^{20} = 100w 220=100w 差不多的时间复杂度,dfs 解决即可。时间复杂度: O ( 2 n ) O(2^{n…

RocketMQ 顺序消息

顺序消息 顺序消息为云消息队列 RocketMQ 版中的高级特性消息&#xff0c;本文为您介绍顺序消息的应用场景、功能原理、使用限制、使用方法和使用建议。 应用场景 在有序事件处理、撮合交易、数据实时增量同步等场景下&#xff0c;异构系统间需要维持强一致的状态同步&#…

前后端交互常用的时间敏感算法

前后端交互常用的时间敏感算法 前后端交互中涉及时间敏感的算法主要用于确保数据传输的安全性、有效性和同步性。以下是一些常见的时间敏感算法和技术&#xff1a; 1. 基于时间戳的签名算法&#xff08;HMAC&#xff09;&#xff1a; 描述&#xff1a; HMAC&#xff08;哈希…

万字详解AI开发中的数据预处理(清洗)

数据清洗&#xff08;Data Cleaning&#xff09;是通过修改、添加或删除数据的方式为数据分析做准备的过程&#xff0c;这个过程通常也被称为数据预处理&#xff08;Data Preprocessing&#xff09;。对于数据科学家和机器学习工程师来说&#xff0c;熟练掌握数据清洗全流程至关…

21_硬件电路基础

目录 组合逻辑电路 组合逻辑电路原理 真值表 布尔代数 门电路 译码器 发光二极管LED 液晶字符显示器LCD 数据选择器 数据分配器 多路开关 时序逻辑电路 时序逻辑电路原理 时钟信号 触发器 电位触发方式触发器 边沿触发方式触发器 寄存器 移位器 计数器 总线…

经营人心:Mrs. B的百年传奇

这个故事的主角是Rose Blumkin&#xff0c;也被称为Mrs. B&#xff0c;她是Nebraska Furniture Mart的创始人。 她的故事确实是一个关于用户思维、客户关系和创业精神的经典案例。 Rose Blumkin于1893年出生在俄罗斯的一个小村庄&#xff0c;她在1921年移民到美国。 1937年&…

NEEP-EN2-2019-Text1

英二-2019-Text1摘自大西洋月刊《The Atlantic》2018年4月的一篇名为“When Guilt is Good”的文章。 以下为个人解析&#xff0c;非官方公开标准资料&#xff0c;可能有误&#xff0c;仅供参考。&#xff08;单词解释仅摘出部分词性和意思&#xff09; Paragraph 1 Unlike s…

微信小程序利用第三方库xlsx导出excel

微信小程序导出excel 微信小程序利用第三方库xlsx导出excel&#xff1a; 参考&#xff1a; https://blog.csdn.net/weixin_57263939/article/details/128905216 https://blog.csdn.net/gao511147456/article/details/132009965 另外&#xff1a; 微信小程序中pdf的上传、下载及…

ImportError cannot import name ‘uic‘ from ‘PyQt5‘

ImportError cannot import name ‘uic’ from ‘PyQt5’ 1、描述 使用nuitka把PyQt5打包exe文件时报错: ImportError cannot import name ‘uic’ from ‘PyQt5’ 2、原因 这个是由于无法找到uic的目录导致的,在PyQt5的目录下是有uic文件的。 3、解决方案 找到导入uic…

SQL Server 2022的组成

《SQL Server 2022从入门到精通&#xff08;视频教学超值版&#xff09;》图书介绍-CSDN博客 SQL Server 2022主要由4部分组成&#xff0c;分别是数据库引擎、分析服务、集成服务和报表服务。本节将详细介绍这些内容。 1.2.1 SQL Server 2022的数据库引擎 SQL Server 2022的…

NGINX+KEEPALIVED | 一文搞懂NG+KL负载均衡高可用架构的实操教程(详细)

文章目录 NGINXKEEPALIVED负载均衡高可用架构为什么需要多节点应用为什么需要Nginx服务为什么需要Keepalived服务NGKL简述前期准备Linux服务器公共环境配置Server1 NGKL服务器配置Server2 NGKL服务器配置Server3 HTTP服务器配置Server4 HTTP服务器配置运行测试用例 NGINXKEEPAL…

C# winform中权限页面的设计和开发

在C# WinForm应用中设计和开发权限页面&#xff0c;主要涉及到用户界面的创建、数据模型的构建以及业务逻辑的实现。以下是一个基本的步骤&#xff0c;可用来参考构建一个权限管理页面&#xff1a; 第一步&#xff1a;设计用户界面 创建一个新的WinForm&#xff1a;在Visual S…

CPU/内存/综合性能评估工具汇总-1:lmbench

目录 一、概括二、lmbench 一、概括 嵌入式开发中对要设计的产品、立项的项目进行设计时&#xff0c;往往需要对关键芯片进行性能评估&#xff0c;本文主要总结基于linux系统的产品在性能评估时的工具使用总结&#xff0c;在aarch64(arm64平台下测试)&#xff0c;板卡根文件系…

使用Keil将STM32部分程序放在RAM中运行

手动分配RAM区域,新建.sct文件,定义RAM_CODE区域,并指定其正确的起始地址和大小。 ; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; ************************************************…