继续操作前请注册或者登录。
提交 93160438 authored 作者: 李炎's avatar 李炎

索斯

上级
/target
/.idea
/.idea/libraries
/*.iml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.santos</groupId>
<artifactId>SoSsDome</artifactId>
<packaging>jar</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>SoSsDome</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- SpringBootText注解依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- Junit依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
<!--开发时使用spring boot 内嵌tomacata调试,生产使用外部tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>-->
<!--打包用:声名所有第三方jar包-->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<scope>system</scope>
<version>1.0</version>
<systemPath>${project.basedir}/src/main/resources/lib/commons-logging.jar</systemPath>
</dependency>
<dependency>
<groupId>client</groupId>
<artifactId>k3cloud-webapi-client</artifactId>
<scope>system</scope>
<version>1.0</version>
<systemPath>${project.basedir}/src/main/resources/lib/k3cloud-webapi-client.jar</systemPath>
</dependency>
<!--<dependency>-->
<!--<groupId>httpmime</groupId>-->
<!--<artifactId>httpmime-4.1.1</artifactId>-->
<!--<scope>system</scope>-->
<!--<version>1.0</version>-->
<!--<systemPath>${project.basedir}/src/main/resources/lib/httpmime-4.1.1.jar</systemPath>-->
<!--</dependency>-->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.1.1</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.3.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.72</version>
</dependency>
<dependency>
<groupId>com.hikvision.ga</groupId>
<artifactId>artemis-http-client</artifactId>
<version>1.1.3</version>
</dependency>
<!-- Swagger API文档 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
<exclusions>
<exclusion>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
</exclusion>
<exclusion>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>
<!-- # 增加两个配置解决 NumberFormatException -->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.22</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.5.22</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.2.3</version>
<classifier>jdk15</classifier>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.0.5.RELEASE</version>
<!--加入下面两项配置后,maven打包时才会把第三方jar包一起打入-->
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
</plugins>
</build>
</project>
package com.santos.iost;
import lombok.extern.slf4j.Slf4j;
//import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.Environment;
import java.net.InetAddress;
import java.net.UnknownHostException;
@SpringBootApplication
@Slf4j
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) throws UnknownHostException {
ConfigurableApplicationContext application = SpringApplication.run(Application.class, args);
Environment env = application.getEnvironment();
String ip = InetAddress.getLocalHost().getHostAddress();
String port = env.getProperty("server.port");
String path = ConvertUtils.getString(env.getProperty("server.servlet.context-path"));
log.info("\n----------------------------------------------------------\n\t" +
"Application wmssystem is running! Access URLs:\n\t" +
"Local: \t\thttp://localhost:" + port + path + "/\n\t" +
"External: \thttp://" + ip + ":" + port + path + "/\n\t" +
"----------------------------------------------------------");
}
}
package com.santos.iost.Exception.ConnectConstant;
public interface Constant {
String URL="连接的服务器地址异常";
String PORT="连接服务器的端口异常";
}
package com.santos.iost.Exception;
import com.santos.iost.dto.Result;
import org.aspectj.lang.ProceedingJoinPoint;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
@ControllerAdvice
public class GlobalExceptionHandler {
/*索斯异常*/
@ResponseBody
@ExceptionHandler(SoSsRequestException.class)
public Result soSsRequestException(HttpServletRequest req, SoSsRequestException e)
{
/* Result r=new Result();
r.setResult(e.getResult());*/
return Result.fail(e.getMessage(),e.getResult(),e.getCode());
}
// /*索斯异常*/
// @ResponseBody
// @ExceptionHandler(RuntimeException.class)
// public Result RuntimeException(HttpServletRequest req, RuntimeException e)
// {
// /* Result r=new Result();
// r.setResult(e.getResult());*/
// return Result.fail(e.getMessage(),e.get,e.getCode());
// }
}
package com.santos.iost.Exception;
import lombok.Data;
/*索斯访问异常异常*/
@Data
public class SoSsRequestException extends RuntimeException {
public String result;
public String code;
public SoSsRequestException(String message,String result,String code) {
super(message);
this.result=result;
this.code=code;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
package com.santos.iost.TimeTask;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.santos.iost.dao.SoSsDao;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.text.ParseException;
@Slf4j
@Component
@EnableScheduling
public class SynTimed {
@Autowired
SoSsDao soSsDao;
/*自动登录定时任务40分钟执行一次*/
@Scheduled(fixedDelay = 1000*60*30)
public void timed() throws IOException, ParseException {
System.out.println("更新token");
soSsDao.init();
}
//可以使用页面上的任务来控制方法
}
package com.santos.iost.common;
public interface CommonConstant {
/**
* 正常状态
*/
public static final Integer STATUS_NORMAL = 0;
/**
* 禁用状态
*/
public static final Integer STATUS_DISABLE = -1;
/**
* 删除标志
*/
public static final Integer DEL_FLAG_1 = 1;
/**
* 未删除
*/
public static final Integer DEL_FLAG_0 = 0;
/**
* 系统日志类型: 登录
*/
public static final int LOG_TYPE_1 = 1;
/**
* 系统日志类型: 操作
*/
public static final int LOG_TYPE_2 = 2;
/**
* 操作日志类型: 查询
*/
public static final int OPERATE_TYPE_1 = 1;
/**
* 操作日志类型: 添加
*/
public static final int OPERATE_TYPE_2 = 2;
/**
* 操作日志类型: 更新
*/
public static final int OPERATE_TYPE_3 = 3;
/**
* 操作日志类型: 删除
*/
public static final int OPERATE_TYPE_4 = 4;
/**
* 操作日志类型: 倒入
*/
public static final int OPERATE_TYPE_5 = 5;
/**
* 操作日志类型: 导出
*/
public static final int OPERATE_TYPE_6 = 6;
/** {@code 500 Server Error} (HTTP/1.0 - RFC 1945) */
public static final Integer SC_INTERNAL_SERVER_ERROR_500 = 500;
/** {@code 200 OK} (HTTP/1.0 - RFC 1945) */
public static final Integer SC_OK_200 = 200;
/**访问权限认证未通过 510*/
public static final Integer SC_JEECG_NO_AUTHZ=510;
/** 登录用户Shiro权限缓存KEY前缀 */
public static String PREFIX_USER_SHIRO_CACHE = "shiro:cache:org.jeecg.config.shiro.ShiroRealm.authorizationCache:";
/** 登录用户Token令牌缓存KEY前缀 */
public static final String PREFIX_USER_TOKEN = "prefix_user_token_";
/** Token缓存时间:3600秒即一小时 */
public static final int TOKEN_EXPIRE_TIME = 3600;
/**
* 0:一级菜单
*/
public static final Integer MENU_TYPE_0 = 0;
/**
* 1:子菜单
*/
public static final Integer MENU_TYPE_1 = 1;
/**
* 2:按钮权限
*/
public static final Integer MENU_TYPE_2 = 2;
/**通告对象类型(USER:指定用户,ALL:全体用户)*/
public static final String MSG_TYPE_UESR = "USER";
public static final String MSG_TYPE_ALL = "ALL";
/**发布状态(0未发布,1已发布,2已撤销)*/
public static final String NO_SEND = "0";
public static final String HAS_SEND = "1";
public static final String HAS_CANCLE = "2";
/**阅读状态(0未读,1已读)*/
public static final String HAS_READ_FLAG = "1";
public static final String NO_READ_FLAG = "0";
/**优先级(L低,M中,H高)*/
public static final String PRIORITY_L = "L";
public static final String PRIORITY_M = "M";
public static final String PRIORITY_H = "H";
/**
* 短信模板方式 0 .登录模板、1.注册模板、2.忘记密码模板
*/
public static final String SMS_TPL_TYPE_0 = "0";
public static final String SMS_TPL_TYPE_1 = "1";
public static final String SMS_TPL_TYPE_2 = "2";
/**
* 状态(0无效1有效)
*/
public static final String STATUS_0 = "0";
public static final String STATUS_1 = "1";
/**
* 同步工作流引擎1同步0不同步
*/
public static final Integer ACT_SYNC_1 = 1;
public static final Integer ACT_SYNC_0 = 0;
/**
* 消息类型1:通知公告2:系统消息
*/
public static final String MSG_CATEGORY_1 = "1";
public static final String MSG_CATEGORY_2 = "2";
/**
* 是否配置菜单的数据权限 1是0否
*/
public static final Integer RULE_FLAG_0 = 0;
public static final Integer RULE_FLAG_1 = 1;
/**
* 是否用户已被冻结 1正常(解冻) 2冻结
*/
public static final Integer USER_UNFREEZE = 1;
public static final Integer USER_FREEZE = 2;
/**字典翻译文本后缀*/
public static final String DICT_TEXT_SUFFIX = "_dictText";
/**
* 表单设计器主表类型
*/
public static final Integer DESIGN_FORM_TYPE_MAIN = 1;
/**
* 表单设计器子表表类型
*/
public static final Integer DESIGN_FORM_TYPE_SUB = 2;
/**
* 表单设计器URL授权通过
*/
public static final Integer DESIGN_FORM_URL_STATUS_PASSED = 1;
/**
* 表单设计器URL授权未通过
*/
public static final Integer DESIGN_FORM_URL_STATUS_NOT_PASSED = 2;
/**
* 表单设计器新增 Flag
*/
public static final String DESIGN_FORM_URL_TYPE_ADD = "add";
/**
* 表单设计器修改 Flag
*/
public static final String DESIGN_FORM_URL_TYPE_EDIT = "edit";
/**
* 表单设计器详情 Flag
*/
public static final String DESIGN_FORM_URL_TYPE_DETAIL = "detail";
/**
* 表单设计器复用数据 Flag
*/
public static final String DESIGN_FORM_URL_TYPE_REUSE = "reuse";
/**
* 表单设计器编辑 Flag (已弃用)
*/
public static final String DESIGN_FORM_URL_TYPE_VIEW = "view";
/**
* online参数值设置(是:Y, 否:N)
*/
public static final String ONLINE_PARAM_VAL_IS_TURE = "Y";
public static final String ONLINE_PARAM_VAL_IS_FALSE = "N";
/**
* 文件上传类型(本地:local,Minio:minio,阿里云:alioss)
*/
public static final String UPLOAD_TYPE_LOCAL = "local";
public static final String UPLOAD_TYPE_MINIO = "minio";
public static final String UPLOAD_TYPE_OSS = "alioss";
/**
* 文档上传自定义桶名称
*/
public static final String UPLOAD_CUSTOM_BUCKET = "eoafile";
/**
* 文档上传自定义路径
*/
public static final String UPLOAD_CUSTOM_PATH = "eoafile";
/**
* 文件外链接有效天数
*/
public static final Integer UPLOAD_EFFECTIVE_DAYS = 1;
/**
* 员工身份 (1:普通员工 2:上级)
*/
public static final Integer USER_IDENTITY_1 = 1;
public static final Integer USER_IDENTITY_2 = 2;
/** sys_user 表 username 唯一键索引 */
public static final String SQL_INDEX_UNIQ_SYS_USER_USERNAME = "uniq_sys_user_username";
/** sys_user 表 work_no 唯一键索引 */
public static final String SQL_INDEX_UNIQ_SYS_USER_WORK_NO = "uniq_sys_user_work_no";
/** sys_user 表 phone 唯一键索引 */
public static final String SQL_INDEX_UNIQ_SYS_USER_PHONE = "uniq_sys_user_phone";
/** sys_user 表 email 唯一键索引 */
public static final String SQL_INDEX_UNIQ_SYS_USER_EMAIL = "uniq_sys_user_email";
/** sys_quartz_job 表 job_class_name 唯一键索引 */
public static final String SQL_INDEX_UNIQ_JOB_CLASS_NAME = "uniq_job_class_name";
/** sys_position 表 code 唯一键索引 */
public static final String SQL_INDEX_UNIQ_CODE = "uniq_code";
/** sys_role 表 code 唯一键索引 */
public static final String SQL_INDEX_UNIQ_SYS_ROLE_CODE = "uniq_sys_role_role_code";
/** sys_depart 表 code 唯一键索引 */
public static final String SQL_INDEX_UNIQ_DEPART_ORG_CODE = "uniq_depart_org_code";
/**
* 在线聊天 是否为默认分组
*/
public static final String IM_DEFAULT_GROUP = "1";
/**
* 在线聊天 图片文件保存路径
*/
public static final String IM_UPLOAD_CUSTOM_PATH = "imfile";
/**
* 在线聊天 用户状态
*/
public static final String IM_STATUS_ONLINE = "online";
/**
* 在线聊天 SOCKET消息类型
*/
public static final String IM_SOCKET_TYPE = "chatMessage";
/**
* 在线聊天 是否开启默认添加好友 1是 0否
*/
public static final String IM_DEFAULT_ADD_FRIEND = "1";
/**
* 在线聊天 用户好友缓存前缀
*/
public static final String IM_PREFIX_USER_FRIEND_CACHE = "im_prefix_user_friend_";
/**
* 考勤补卡业务状态 (1:同意 2:不同意)
*/
public static final String SIGN_PATCH_BIZ_STATUS_1 = "1";
public static final String SIGN_PATCH_BIZ_STATUS_2 = "2";
/**
* 公文文档上传自定义路径
*/
public static final String UPLOAD_CUSTOM_PATH_OFFICIAL = "officialdoc";
/**
* 公文文档下载自定义路径
*/
public static final String DOWNLOAD_CUSTOM_PATH_OFFICIAL = "officaldown";
/**
* WPS存储值类别(1 code文号 2 text(WPS模板还是公文发文模板))
*/
public static final String WPS_TYPE_1="1";
public static final String WPS_TYPE_2="2";
public final static String X_ACCESS_TOKEN = "X-Access-Token";
/**
* 多租户 请求头
*/
public final static String TENANT_ID = "tenant_id";
/**
* 微服务读取配置文件属性 服务地址
*/
public final static String CLOUD_SERVER_KEY = "spring.cloud.nacos.discovery.server-addr";
/**
* 第三方登录 验证密码/创建用户 都需要设置一个操作码 防止被恶意调用
*/
public final static String THIRD_LOGIN_CODE = "third_login_code";
}
package com.santos.iost.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.Feature;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.santos.iost.Exception.SoSsRequestException;
import com.santos.iost.dao.SoSsDao;
import com.santos.iost.dto.Result;
import com.santos.iost.dto.SoSsResponseDate;
import com.santos.iost.service.SoSsMaterialServer;
import com.santos.iost.service.SpSsSalesOrderService;
import com.santos.iost.utils.HttpUtil;
import com.santos.iost.utils.StringUtil;
import com.santos.iost.vo.SoSsRequestVo;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.util.TextUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @Description: 第三方通用接口
* @Author: jeecg-boot
* @Date: 2021-12-02
* @Version: V1.0
*/
@RestController
//@RequestMapping("/api")
@Slf4j
public class WebApi {
@Autowired
SoSsMaterialServer materialServer;
@Autowired
SpSsSalesOrderService salesOrderService;
@ApiOperation(value = "查询通用接口", notes = "查询通用接口")
@GetMapping(value = "/queryMasterBatch")
public Result<?> GetData(SoSsRequestVo soSsRequestVo) throws Exception {
checkRequest(soSsRequestVo);
Result result = new Result();
try {
if (null==soSsRequestVo.getObjAPIName()) {
return Result.fail("操作失败", "apiName不可为空", "500");
} else if (soSsRequestVo.getObjAPIName().equals(SoSsMaterialServer.apiName)) {
result = materialServer.getData(soSsRequestVo);
} else if (soSsRequestVo.getObjAPIName().equals(SpSsSalesOrderService.apiName)) {
result = salesOrderService.getData(soSsRequestVo);
} else {
return Result.fail("操作失败", soSsRequestVo.getObjAPIName() + "不存在", "406");
}
} finally {
}
return result;
}
//检查ERM日期是否可用作过滤条件
void checkRequest(SoSsRequestVo soSsRequestVo) {
// 时间字段检查
if (null == soSsRequestVo.getStartTime() && null == soSsRequestVo.getEndTime()) {
} else if (null == soSsRequestVo.getStartTime() || null == soSsRequestVo.getEndTime()) {
throw new SoSsRequestException("操作失败!", "起止时间为空", "500");
} else if (StringUtil.isNumber(soSsRequestVo.getStartTime()) && StringUtil.isNumber(soSsRequestVo.getEndTime())) {
if (Integer.parseInt(soSsRequestVo.getStartTime()) > Integer.parseInt(soSsRequestVo.getEndTime()))
throw new SoSsRequestException("操作失败!", "开始时间大于结束时间", "500");
} else {
throw new SoSsRequestException("操作失败!", "startTime以及endTime字段请使用 unix 时间戳填写,单位毫秒", "500");
}
//分页用字段检查
if (null == soSsRequestVo.getLimit()) {
throw new SoSsRequestException("操作失败!", "limit不允许为空", "201");
}
if (soSsRequestVo.getLimit() <= 0) {
throw new SoSsRequestException("操作失败!", "limit不可小于或等于0", "201");
}
}
public static String TimeStamp2Date(String timestampString, String formats) {
if (TextUtils.isEmpty(formats))
formats = "yyyy-MM-dd HH:mm:ss";
Long timestamp = Long.parseLong(timestampString) * 1000;
String date = new SimpleDateFormat(formats, Locale.CHINA).format(new Date(timestamp));
return date;
}
/*List<Map<String,Object>>转换Map<String,Object>*/
public Map<String, Object> change(List<Map<String, Object>> data) {
Map<String, Object> maps = new HashMap<>();
for (Map<String, Object> datum : data) {
for (String s : datum.keySet()) {
maps.put(s, datum.get(s));
}
}
return maps;
}
}
package com.santos.iost.dao;
import com.alibaba.fastjson.JSON;
import com.santos.iost.utils.HttpUtil;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@Component
public class SoSsDao {
public String getTokenUrl = "http://123.58.109.39:86/K3API/Token/Create?authorityCode=606d25b51be50949e768241934225bc05bfd6db0bae63e82";
String requestUrl = "http://123.58.109.39:86";
public static String token;
Map<String, String> hreader = new HashMap<>();
// @PostConstruct
public void init() throws IOException {
String s = HttpUtil.get(getTokenUrl);
Map map = JSON.parseObject(s, Map.class);
String D = map.get("Data").toString();
Map mapDate = JSON.parseObject(D, Map.class);
this.token = mapDate.get("Token").toString();
System.out.println(token);
}
public SoSsDao() throws Exception {
this.hreader.put("Content-Type", "application/json");
}
//请求主体
public String requestK3Api(String getMaterialUrl, String paramsMap) throws Exception {
System.out.println("====head====="+paramsMap+"====head====");
String post = HttpUtil.post(requestUrl + getMaterialUrl + "?token=" + token, paramsMap, hreader);
System.out.println(token);
// System.out.println("================response=============="+post+"=================response===================");
return post;
}
//请求主体
public String requestK3ApiDetail(String getMaterialUrl, String paramsMap) throws Exception {
System.out.println("====Detail====="+paramsMap+"====Detail====");
String post = HttpUtil.post(requestUrl + getMaterialUrl + "?token=" + token, paramsMap, hreader);
// System.out.println(token);
// System.out.println("================response=============="+post+"=================response===================");
return post;
}
}
package com.santos.iost.dto;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.santos.iost.common.CommonConstant;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 接口返回数据格式
* @author scott
* @email jeecgos@163.com
* @date 2019年1月19日
*/
@Data
@ApiModel(value="接口返回对象", description="接口返回对象")
public class Result<T> implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 返回代码
*/
@ApiModelProperty(value = "返回代码")
private String code ;
/**
* 返回处理消息
*/
@ApiModelProperty(value = "返回处理消息")
private String message = "操作成功!";
/**
* 返回数据对象 data
*/
@ApiModelProperty(value = "返回数据对象")
private T data;
/**
* 时间戳
*/
@ApiModelProperty(value = "时间戳")
private long timestamp = System.currentTimeMillis();
public Result() {
}
public Result<T> success(String message) {
this.message = message;
this.code = CommonConstant.SC_OK_200.toString();
return this;
}
@Deprecated
public static Result<Object> ok() {
Result<Object> r = new Result<Object>();
r.setCode(CommonConstant.SC_OK_200.toString());
r.setMessage("成功");
return r;
}
@Deprecated
public static Result<Object> ok(String msg) {
Result<Object> r = new Result<Object>();
r.setCode(CommonConstant.SC_OK_200.toString());
r.setMessage(msg);
return r;
}
@Deprecated
public static Result<Object> ok(Object data) {
Result<Object> r = new Result<Object>();
r.setCode(CommonConstant.SC_OK_200.toString());
r.setData(data);
return r;
}
public static<T> Result<T> OK() {
Result<T> r = new Result<T>();
r.setCode(CommonConstant.SC_OK_200.toString());
r.setMessage("成功");
return r;
}
public static<T> Result<T> OK(T data) {
Result<T> r = new Result<T>();
r.setCode(CommonConstant.SC_OK_200.toString());
r.setData(data);
return r;
}
public static<T> Result<T> OKMSG(String msg, T data) {
Result<T> r = new Result<T>();
r.setCode(CommonConstant.SC_OK_200.toString());
r.setMessage(msg);
r.setData(data);
return r;
}
public static<T> Result<T> fail(String msg, T data,String Code) {
Result<T> r = new Result<T>();
r.setCode(Code);
r.setMessage(msg);
r.setData(data);
return r;
}
public static<T> Result<T> OK(T data,String code) {
Result<T> r = new Result<T>();
r.setCode(code);
r.setMessage("操作成功");
r.setData(data);
return r;
}
public static Result<Object> error(String msg) {
return error(CommonConstant.SC_INTERNAL_SERVER_ERROR_500.toString(), msg);
}
public static Result<Object> error(String code, String msg) {
Result<Object> r = new Result<Object>();
r.setCode(code);
r.setMessage(msg);
return r;
}
public Result<T> error500(String message) {
this.message = message;
this.code = CommonConstant.SC_INTERNAL_SERVER_ERROR_500.toString();
return this;
}
public Result<T> SoSsOk(String message) {
this.message = message;
this.code = CommonConstant.SC_INTERNAL_SERVER_ERROR_500.toString();
return this;
}
/**
* 无权限访问返回结果
*/
public static Result<Object> noauth(String msg) {
return error(CommonConstant.SC_JEECG_NO_AUTHZ.toString(), msg);
}
@JsonIgnore
private String onlTable;
}
\ No newline at end of file
package com.santos.iost.dto;
import lombok.Data;
@Data
public class SoSsRequestData {
String Top;
String PageSize;
String PageIndex;
String Filter;
String OrderBy;
String Fields;
}
package com.santos.iost.dto;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Data
public class SoSsResponseDate {
public String StatusCode;
public String Message;
public Object Data;
}
package com.santos.iost.service;
import com.santos.iost.dao.SoSsDao;
import com.santos.iost.dto.Result;
import com.santos.iost.vo.SoSsRequestVo;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
public interface SoSsMaterialServer {
String apiName ="Material";
public Result getData(SoSsRequestVo soSsRequestVo);
}
package com.santos.iost.service;
import com.santos.iost.dto.Result;
import com.santos.iost.vo.SoSsRequestVo;
public interface SpSsSalesOrderService {
String apiName ="SO";
public Result getData(SoSsRequestVo soSsRequestVo);
}
package com.santos.iost.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.parser.Feature;
import com.santos.iost.Exception.SoSsRequestException;
import com.santos.iost.dao.SoSsDao;
import com.santos.iost.dto.Result;
import com.santos.iost.dto.SoSsResponseDate;
import com.santos.iost.service.SoSsMaterialServer;
import com.santos.iost.utils.JsonUtil;
import com.santos.iost.vo.SoSsRequestVo;
import jdk.nashorn.internal.codegen.CompilerConstants;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
@Service
public class SoSsMaterialServerImpl implements SoSsMaterialServer {
@Autowired
SoSsDao soSsDao;
String Url;//拼接用请求地址-(http://127.0.0.1/K3API/Material/GetList?token=${token})
String fields;//需要查询出的字段
/**
* 请求字段
*/
String FNumber = "FNumber";
String FName = "FName";
String F_101 = "F_101";
String FSalePrice = "FSalePrice";
String FUnitID = "FUnitID";
String FUnitID_FName = "FUnitID_FName";
String FUnitID_FNumber = "FUnitID_FNumber";
String FTypeID = "FTypeID";
String FTypeID_FID = "FTypeID_FID";
String FTypeID_FName = "FTypeID_FName";
public SoSsMaterialServerImpl() {
// this.apiName = "Material";
this.Url = "/K3API/Material/GetList";//拼接用请求地址-(http://127.0.0.1/K3API/Material/GetList?token=${token})
this.fields = "FNumber,FName,F_101,FUnitID,FSalePrice,FTypeID";//需要查询出的字段
}
@Override
public Result getData(SoSsRequestVo soSsRequestVo) {
String s = new String();
Map map = changeGeta(soSsRequestVo);
try {
s = soSsDao.requestK3Api(Url, JsonUtil.Mapjson(map));
} catch (Exception e) {
e.printStackTrace();
}
SoSsResponseDate soSsResponseDate = JSON.parseObject(s, SoSsResponseDate.class, Feature.OrderedField);
Result result = changeResponse(soSsResponseDate);//
return result;
}
/*转换请求参数*/
public Map changeGeta(SoSsRequestVo soSsRequestVo) {
Map paramsMap = new HashMap();
Map Data = new LinkedHashMap();
Data.put("Top", soSsRequestVo.getLimit());//返回行数
Data.put("PageSize", soSsRequestVo.getLimit());//每页行数
Data.put("PageIndex", soSsRequestVo.getOffset());//第几页
if (checkFilter(soSsRequestVo)) {
Data.put("Filter", "");//过滤条件
}
Data.put("OrderBy", "FNumber asc");//排序规则
Data.put("Fields", fields);//查询字段
paramsMap.put("Data", Data);
return paramsMap;
}
//检查ERM日期是否可用作过滤条件
boolean checkFilter(SoSsRequestVo soSsRequestVo) {
if (null == soSsRequestVo.getStartTime() && null == soSsRequestVo.getEndTime()) {
return false;
}
return true;
}
/*转换*/
public Result changeResponse(SoSsResponseDate soSsRequestVo) {
Map<Object, Object> map = new HashMap<>();
Result result = new Result();
try {//字段转换-变化soSsRequestVo的data参数格式 为CRM规定格式
List dataList = new ArrayList<>();
Map data = (Map) soSsRequestVo.getData();
Object data1 = data.get("Data");
List list = JSON.parseObject(data1.toString(), List.class, Feature.OrderedField);
for (Object o : list) {
Map listDateMap = JSON.parseObject(o.toString(), Map.class, Feature.OrderedField);
Map masterField = new LinkedHashMap<>();
Map masterFieldVal = new LinkedHashMap<>();
masterFieldVal.put("productCode", listDateMap.get(FNumber));//产品编码
masterFieldVal.put("productName", listDateMap.get(FName));//产品名称
masterFieldVal.put("remarks", listDateMap.get(F_101));//备注
masterFieldVal.put("company", listDateMap.get(FUnitID_FNumber));//单位
masterFieldVal.put("standardPrice", listDateMap.get(FSalePrice));//标准价格
masterFieldVal.put("classification", listDateMap.get(FTypeID_FID));//分类
masterField.put("masterFieldVal", masterFieldVal);
dataList.add(masterField);
}
map.put("totalNum", data.get("RowCount"));
map.put("dataList", dataList);
soSsRequestVo.setData(map);
} catch (Exception e) {
e.printStackTrace();
}
//将ERP格式变换为CRM格式
result.setMessage(soSsRequestVo.getMessage());
result.setCode(soSsRequestVo.getStatusCode());
result.setData(soSsRequestVo.getData());
return result;
}
}
package com.santos.iost.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.parser.Feature;
import com.santos.iost.dao.SoSsDao;
import com.santos.iost.dto.Result;
import com.santos.iost.dto.SoSsResponseDate;
import com.santos.iost.service.SpSsSalesOrderService;
import com.santos.iost.utils.JsonUtil;
import com.santos.iost.utils.StringUtil;
import com.santos.iost.vo.SoSsRequestVo;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
@Service
public class SpSsSalesOrderServiceImpl implements SpSsSalesOrderService {
@Autowired
SoSsDao soSsDao;
String Url;//拼接用请求地址-(http://127.0.0.1/K3API/Material/GetList?token=${token})
String includeDetailUrl;
String fields;//需要查询出的字段
/**
* K3金蝶方请求字段
*/
String FCustID_DSPName = "FCustID_DSPName";//客户名称
String FHeadSelfS0166 = "FHeadSelfS0166";//整单价税合计
String FBillNo = "FBillNo";//编号
String FHeadSelfS0157 = "FHeadSelfS0157";//客户订单编号
String Fdate = "Fdate";//日期
/**
* K3金蝶方请求字段-明细字段
*/
String FItemID = "FItemID";//产品代码
String Fauxqty = "Fauxqty";//数量
String FEntrySelfS0170 = "FEntrySelfS0170";//运输方式
String FAdviceConsignDate = "FAdviceConsignDate";//建议交货日期
String FDate1 = "FDate1";//交货日期
String FEntrySelfS0163 = "FEntrySelfS0163";//中文描述
String FUnitID = "FUnitID";//单位
String FAuxPriceDiscount = "FAuxPriceDiscount";//实际含税单价
String FAllAmount="FAllAmount";//价税合计
public SpSsSalesOrderServiceImpl() {
this.Url = "/K3API/SO/GetList";//拼接用请求地址-(http://127.0.0.1/K3API/Material/GetList?token=${token})
this.includeDetailUrl = "/K3API/SO/GetDetail";
this.fields = "FHeadSelfS0166,FHeadSelfS0157,Fdate";//需要查询出的字段
}
@Override
public Result getData(SoSsRequestVo soSsRequestVo) {
String s = new String();
Map map = changeGeta(soSsRequestVo);
try {
s = soSsDao.requestK3Api(Url, JsonUtil.Mapjson(map));
} catch (Exception e) {
e.printStackTrace();
}
SoSsResponseDate soSsResponseDate = JSON.parseObject(s, SoSsResponseDate.class, Feature.OrderedField);//转换数据类型
Result result = changeResponse(soSsResponseDate, soSsRequestVo);//转换返回的数据格式
return result;
}
/*转换请求参数*/
public Map changeGeta(SoSsRequestVo soSsRequestVo) {
Map paramsMap = new HashMap();
Map Data = new LinkedHashMap();
Data.put("Top", "100");//返回行数
Data.put("PageSize", soSsRequestVo.getLimit());//每页行数
Data.put("PageIndex", soSsRequestVo.getOffset());//第几页
if (checkFilter(soSsRequestVo)) {
Data.put("Filter", setFilter(soSsRequestVo));//过滤条件
}
Data.put("OrderBy", "[FBillNo] asc");//排序规则
Data.put("SelectPage", "1");//表体索引,文档默认为2
Data.put("Fields", fields);//查询字段
paramsMap.put("Data", Data);
return paramsMap;
}
//检查ERM日期是否可用作过滤条件
boolean checkFilter(SoSsRequestVo soSsRequestVo) {
if (null == soSsRequestVo.getStartTime() && null == soSsRequestVo.getEndTime()) {
return false;
}
return true;
}
//配置过滤条件
String setFilter(SoSsRequestVo soSsRequestVo) {
String startTime = StringUtil.TimeStamp2Date(soSsRequestVo.getStartTime(), null);
String endTime = StringUtil.TimeStamp2Date(soSsRequestVo.getEndTime(), null);
return "[" + Fdate + "] >= '" + startTime + "' and [" + Fdate + "] < '" + endTime + "'";
}
List includeDetailFalse(List list) {
List dataList = new ArrayList<>();
for (Object o : list) {
Map listDateMap = JSON.parseObject(o.toString(), Map.class, Feature.OrderedField);
Map masterField = new LinkedHashMap<>();
Map masterFieldVal = new LinkedHashMap<>();
masterFieldVal.put("customerName", listDateMap.get(FCustID_DSPName));//客户名称
masterFieldVal.put("salesOrderAmount", listDateMap.get(FHeadSelfS0166));//销售订单金额
masterFieldVal.put("erpSystemNumber", listDateMap.get(FBillNo));//erp系统编号
masterFieldVal.put("customerOrderNumber", listDateMap.get(FHeadSelfS0157));//客户订单编号
masterFieldVal.put("orderDate", listDateMap.get(Fdate));//下单日期
masterField.put("masterFieldVal", masterFieldVal);
dataList.add(masterField);
}
return dataList;
}
List includeDetailTrue(List list) {
List dataList = new ArrayList<>();
for (Object o : list) {
Map listDateMap = JSON.parseObject(o.toString(), Map.class, Feature.OrderedField);
Map masterField = new LinkedHashMap<>();
Map masterFieldVal = new LinkedHashMap<>();
masterFieldVal.put("customerName", listDateMap.get(FCustID_DSPName));//客户名称
masterFieldVal.put("salesOrderAmount", listDateMap.get(FHeadSelfS0166));//销售订单金额
masterFieldVal.put("erpSystemNumber", listDateMap.get(FBillNo));//erp系统编号
masterFieldVal.put("customerOrderNumber", listDateMap.get(FHeadSelfS0157));//客户订单编号
masterFieldVal.put("orderDate", listDateMap.get(Fdate));//下单日期
masterField.put("masterFieldVal", masterFieldVal);
masterField.put("detailFieldVals", getDetail(listDateMap.get(FBillNo).toString()));
dataList.add(masterField);
}
return dataList;
}
Map getDetail(String code) {//获取明细并且转换为需要的格式
Map returnDate = new LinkedHashMap();
Map paramsMap = new HashMap();
Map requestData = new HashMap();
requestData.put(FBillNo, code);
paramsMap.put("Data", requestData);
try {
String s = soSsDao.requestK3ApiDetail(includeDetailUrl, JsonUtil.Mapjson(paramsMap));
SoSsResponseDate soSsResponseDate = JSON.parseObject(s, SoSsResponseDate.class);//转换数据类型
if (null != soSsResponseDate.getStatusCode() && soSsResponseDate.getStatusCode().equals("200")) {
Map Data = JSON.parseObject(soSsResponseDate.getData().toString(), Map.class);//转换数据类型
List list = JSON.parseObject(Data.get("Page2").toString(), List.class, Feature.OrderedField);
int i = 1;
for (Object o : list) {
Map listDateMap = JSON.parseObject(o.toString(), Map.class);
Map<String,Object> map = new LinkedHashMap();
map.put("productNumber", JSONObject.fromObject(listDateMap.get(FItemID)).get("FNumber"));//产品编号
map.put("quantity", listDateMap.get(Fauxqty));//数量
map.put("transportTypeNumber", JSONObject.fromObject(listDateMap.get(FEntrySelfS0170)).get("FNumber"));//运输方式
map.put("suggestedDeliveryDate", listDateMap.get(FAdviceConsignDate));//建议交货日期
map.put("deliveryDate", listDateMap.get(FDate1));//交货日期
map.put("chineseDescription", listDateMap.get(FEntrySelfS0163));//中文描述
map.put("companyNumber", JSONObject.fromObject(listDateMap.get(FUnitID)).get("FNumber"));//单位
map.put("actualUnitPriceIncludingTax", listDateMap.get(FAuxPriceDiscount));//实际含税单价
map.put("totalPriceAndTax",listDateMap.get(FAllAmount));//价税合计
returnDate.put(apiName + i, new ArrayList<Map>() {{
add(map);
}});
i++;
}
} else {
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
return returnDate;
}
/*转换*/
public Result changeResponse(SoSsResponseDate ResponseDate, SoSsRequestVo RequestVo) {
Map<Object, Object> map = new HashMap<>();
Result result = new Result();
try {//字段转换-变化soSsRequestVo的data参数格式 为CRM规定格式
List dataList = new ArrayList<>();
Map data = (Map) ResponseDate.getData();
Object data1 = data.get("DATA");
List list = JSON.parseObject(data1.toString(), List.class, Feature.OrderedField);
if (null == RequestVo.getIncludeDetail() || false == RequestVo.getIncludeDetail()) {
dataList = includeDetailFalse(list);
} else if (null != RequestVo.getIncludeDetail() && true == RequestVo.getIncludeDetail()) {
dataList = includeDetailTrue(list);
}
map.put("totalNum", data.get("ROWCOUNT"));
map.put("dataList", dataList);
ResponseDate.setData(map);
} catch (Exception e) {
e.printStackTrace();
}
//将ERP格式变换为CRM格式
result.setMessage(ResponseDate.getMessage());
result.setCode(ResponseDate.getStatusCode());
result.setData(ResponseDate.getData());
return result;
}
}
package com.santos.iost.utils;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.config.ConnectionConfig;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.config.SocketConfig;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.LayeredConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLContexts;
import org.apache.http.conn.ssl.TrustStrategy;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.message.BasicHeader;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import javax.net.ssl.SSLContext;
import java.io.IOException;
import java.nio.charset.Charset;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
/**
* <p>类名: HttpUtils</p>
* <p>描述: http请求工具类</p>
* <p>修改时间: 2019年04月30日 上午10:12:35</p>
*
* @author lidongyang
*/
public class HttpUtils {
public static String defaultEncoding = "utf-8";
/**
* 发送http post请求,并返回响应实体
*
* @param url 请求地址
* @return url响应实体
*/
public static String postRequest(String url) {
return postRequest(url, null, null);
}
/**
* <p>方法名: postRequest</p>
* <p>描述: 发送httpPost请求</p>
*
* @param url
* @param params
* @return
*/
public static String postRequest(String url, Map<String, Object> params) {
return postRequest(url, null, params);
}
/**
* 发送http post请求,并返回响应实体
*
* @param url 访问的url
* @param headers 请求需要添加的请求头
* @param params 请求参数
* @return
*/
public static String postRequest(String url, Map<String, String> headers,
Map<String, Object> params) {
String result = null;
CloseableHttpClient httpClient = buildHttpClient();
HttpPost httpPost = new HttpPost(url);
if (null != headers && headers.size() > 0) {
for (Entry<String, String> entry : headers.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
httpPost.addHeader(new BasicHeader(key, value));
}
}
if (null != params && params.size() > 0) {
List<NameValuePair> pairList = new ArrayList<NameValuePair>(params.size());
for (Entry<String, Object> entry : params.entrySet()) {
NameValuePair pair = new BasicNameValuePair(entry.getKey(), entry.getValue().toString());
pairList.add(pair);
}
httpPost.setEntity(new UrlEncodedFormEntity(pairList, Charset.forName(defaultEncoding)));
}
try {
CloseableHttpResponse response = httpClient.execute(httpPost);
try {
HttpEntity entity = response.getEntity();
if (entity != null) {
result = EntityUtils.toString(entity,
Charset.forName(defaultEncoding));
}
} finally {
response.close();
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
/**
* 发送http get请求
*
* @param url 请求url
* @return url返回内容
*/
public static String getRequest(String url) {
return getRequest(url, null);
}
/**
* 发送http get请求
*
* @param url 请求的url
* @param params 请求的参数
* @return
*/
public static String getRequest(String url, Map<String, Object> params) {
return getRequest(url, null, params);
}
/**
* 发送http get请求
*
* @param url 请求的url
* @param headersMap 请求头
* @param params 请求的参数
* @return
*/
public static String getRequest(String url, Map<String, String> headersMap, Map<String, Object> params) {
String result = null;
CloseableHttpClient httpClient = buildHttpClient();
try {
String apiUrl = url;
if (null != params && params.size() > 0) {
StringBuffer param = new StringBuffer();
int i = 0;
for (String key : params.keySet()) {
if (i == 0)
param.append("?");
else
param.append("&");
param.append(key).append("=").append(params.get(key));
i++;
}
apiUrl += param;
}
HttpGet httpGet = new HttpGet(apiUrl);
if (null != headersMap && headersMap.size() > 0) {
for (Entry<String, String> entry : headersMap.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
httpGet.addHeader(new BasicHeader(key, value));
}
}
CloseableHttpResponse response = httpClient.execute(httpGet);
try {
HttpEntity entity = response.getEntity();
if (null != entity) {
result = EntityUtils.toString(entity, defaultEncoding);
}
} finally {
response.close();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
httpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
/**
* 创建httpclient
*
* @return
*/
public static CloseableHttpClient buildHttpClient() {
try {
RegistryBuilder<ConnectionSocketFactory> builder = RegistryBuilder
.create();
ConnectionSocketFactory factory = new PlainConnectionSocketFactory();
builder.register("http", factory);
KeyStore trustStore = KeyStore.getInstance(KeyStore
.getDefaultType());
SSLContext context = SSLContexts.custom().useTLS()
.loadTrustMaterial(trustStore, new TrustStrategy() {
public boolean isTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
return true;
}
}).build();
LayeredConnectionSocketFactory sslFactory = new SSLConnectionSocketFactory(
context,
SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
builder.register("https", sslFactory);
Registry<ConnectionSocketFactory> registry = builder.build();
PoolingHttpClientConnectionManager manager = new PoolingHttpClientConnectionManager(
registry);
ConnectionConfig connConfig = ConnectionConfig.custom()
.setCharset(Charset.forName(defaultEncoding)).build();
SocketConfig socketConfig = SocketConfig.custom()
.setSoTimeout(100000).build();
manager.setDefaultConnectionConfig(connConfig);
manager.setDefaultSocketConfig(socketConfig);
return HttpClientBuilder.create().setConnectionManager(manager)
.build();
} catch (KeyStoreException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
}
\ No newline at end of file
package com.santos.iost.utils;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* 把不同的数据类型转化成json类型字符串
*/
public class JsonUtil {
public static String Objectjson(Object obj) {
StringBuilder json = new StringBuilder();
if (obj == null) {
json.append("\"\"");
} else if (obj instanceof String || obj instanceof Integer || obj instanceof Float
|| obj instanceof Boolean || obj instanceof Short || obj instanceof Double
|| obj instanceof Long || obj instanceof BigDecimal || obj instanceof BigInteger
|| obj instanceof Byte) {
json.append("\"").append(Stringjson(obj.toString())).append("\"");
} else if (obj instanceof Object[]) {
json.append(array2json((Object[]) obj));
} else if (obj instanceof List) {
json.append(Listjson((List<?>) obj));
} else if (obj instanceof Map) {
json.append(Mapjson((Map<?, ?>) obj));
} else if (obj instanceof Set) {
json.append(Setjson((Set<?>) obj));
} else {
json.append(bean2json(obj));
}
return json.toString();
}
public static String Stringjson(String s) {
if (s == null)
return "";
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
switch (ch) {
case '"':
sb.append("\\\"");
break;
case '\\':
sb.append("\\\\");
break;
case '\b':
sb.append("\\b");
break;
case '\f':
sb.append("\\f");
break;
case '\n':
sb.append("\\n");
break;
case '\r':
sb.append("\\r");
break;
case '\t':
sb.append("\\t");
break;
case '/':
sb.append("\\/");
break;
default:
if (ch >= '\u0000' && ch <= '\u001F') {
String ss = Integer.toHexString(ch);
sb.append("\\u");
for (int k = 0; k < 4 - ss.length(); k++) {
sb.append('0');
}
sb.append(ss.toUpperCase());
} else {
sb.append(ch);
}
}
}
return sb.toString();
}
public static String array2json(Object[] array) {
StringBuilder json = new StringBuilder();
json.append("[");
if (array != null && array.length > 0) {
for (Object obj : array) {
json.append(Objectjson(obj));
json.append(",");
}
json.setCharAt(json.length() - 1, ']');
} else {
json.append("]");
}
return json.toString();
}
public static String Listjson(List<?> list) {
StringBuilder json = new StringBuilder();
json.append("[");
if (list != null && list.size() > 0) {
for (Object obj : list) {
json.append(Objectjson(obj));
json.append(",");
}
json.setCharAt(json.length() - 1, ']');
} else {
json.append("]");
}
return json.toString();
}
public static String Mapjson(Map<?, ?> map) {
StringBuilder json = new StringBuilder();
json.append("{");
if (map != null && map.size() > 0) {
for (Object key : map.keySet()) {
json.append(Objectjson(key));
json.append(":");
json.append(Objectjson(map.get(key)));
json.append(",");
}
json.setCharAt(json.length() - 1, '}');
} else {
json.append("}");
}
return json.toString();
}
public static String Setjson(Set<?> set) {
StringBuilder json = new StringBuilder();
json.append("[");
if (set != null && set.size() > 0) {
for (Object obj : set) {
json.append(Objectjson(obj));
json.append(",");
}
json.setCharAt(json.length() - 1, ']');
} else {
json.append("]");
}
return json.toString();
}
public static String bean2json(Object bean) {
StringBuilder json = new StringBuilder();
json.append("{");
PropertyDescriptor[] props = null;
try {
props = Introspector.getBeanInfo(bean.getClass(), Object.class).getPropertyDescriptors();
} catch (IntrospectionException e) {}
if (props != null) {
for (int i = 0; i < props.length; i++) {
try {
String name = Objectjson(props[i].getName());
String value = Objectjson(props[i].getReadMethod().invoke(bean));
json.append(name);
json.append(":");
json.append(value);
json.append(",");
} catch (Exception e) {}
}
json.setCharAt(json.length() - 1, '}');
} else {
json.append("}");
}
return json.toString();
}
}
\ No newline at end of file
package com.santos.iost.utils;
import java.util.LinkedHashSet;
import java.util.List;
public class ListUtil {
public static void reduplicate(List list){
LinkedHashSet set = new LinkedHashSet(list);
//把List集合所有元素清空
list.clear();
//把HashSet对象添加至List集合
list.addAll(set);
}
}
package com.santos.iost.utils;
import org.apache.http.util.TextUtils;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringUtil {
// 根据阿里巴巴代码规范,将Pattern设置为全局常量
// 通过 -?[0-9]+(\\\\.[0-9]+)? 进行匹配是否为数字
private static Pattern pattern = Pattern.compile("-?[0-9]+(\\\\.[0-9]+)?");
/**
* 通过正则表达式判断字符串是否为数字
* @param str
* @return
*/
public static boolean isNumber(String str) {
// 通过Matcher进行字符串匹配
Matcher m = pattern.matcher(str);
// 如果正则匹配通过 m.matches() 方法返回 true ,反之 false
return m.matches();
}
public static String TimeStamp2Date(String timestampString, String formats) {
if (TextUtils.isEmpty(formats))
formats = "yyyy-MM-dd HH:mm:ss";
Long timestamp = Long.parseLong(timestampString) * 1000;
String date = new SimpleDateFormat(formats, Locale.CHINA).format(new Date(timestamp));
return date;
}
}
\ No newline at end of file
package com.santos.iost.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* 接口请求数据格式Vo对象
*/
@Data
@ApiModel(value = "接口请求数据格式Vo对象", description = "接口请求数据格式Vo对象")
public class SoSsRequestVo {
@ApiModelProperty(value = "查询 ERP 对象的 APIName")
private String objAPIName;//
@ApiModelProperty(value = "数据变更的开始时间")
// @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
// @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private String startTime;
@ApiModelProperty(value = "数据变更的结束时间")
// @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
// @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private String endTime;
@ApiModelProperty(value = "是否获取明细")
private Boolean includeDetail;
@ApiModelProperty(value = "获取记录的偏移")
private Integer offset;
@ApiModelProperty(value = "当前请求记录条数")
private Integer limit;
}
spring:
mvc:
servlet:
load-on-startup: 100
server:
servlet:
context-path: /santos
port: 8090
\ No newline at end of file
package com.santos.iost;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.parser.Feature;
import com.santos.iost.dao.SoSsDao;
import com.santos.iost.dto.SoSsRequestData;
import com.santos.iost.dto.SoSsResponseDate;
import com.santos.iost.utils.HttpUtil;
import com.santos.iost.utils.HttpUtils;
import com.santos.iost.utils.JsonUtil;
import com.santos.iost.utils.StringUtil;
import com.santos.iost.vo.SoSsRequestVo;
import kingdee.bos.webapi.client.K3CloudApiClient;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.util.TextUtils;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.text.SimpleDateFormat;
import java.util.*;
//
//@SpringBootTest
//@Slf4j
//@RunWith(SpringJUnit4ClassRunner.class)
@EnableScheduling
class JintaiDomeApplicationTests {
String getTokenUrl = "http://123.58.109.39:86/K3API/Token/Create?authorityCode=606d25b51be50949e768241934225bc05bfd6db0bae63e82";
String getGetMaterialUrl = "http://123.58.109.39:86/K3API/Material/GetList?token=";
String includeDetailUrl = "http://123.58.109.39:86/K3API/SO/GetDetail?token=";
String token;
@Autowired
SoSsDao soSsDao;
@Test
void contextLoads() throws Exception {
String s = HttpUtil.get(getTokenUrl);
Map map = JSON.parseObject(s, Map.class);
String D = map.get("Data").toString();
Map mapDate = JSON.parseObject(D, Map.class);
token = mapDate.get("Token").toString();
System.out.println(token);
Map paramsMap = new HashMap();
Map Data = new LinkedHashMap();
Data.put("Top", "100");
Data.put("PageSize", "17");
Data.put("PageIndex", "1");
// Data.put("Filter","FNumber like '%003%' ");
Data.put("OrderBy", "FNumber asc");
Data.put("Fields", "FNumber,FName,F_101,FUnitID,FSalePrice");
paramsMap.put("Data", Data);
Map<String, String> hreader = new HashMap<>();
hreader.put("Content-Type", "application/json");
String post = HttpUtil.post(getGetMaterialUrl + token, JsonUtil.Mapjson(paramsMap), hreader);
System.out.println(post);
}
@Test
void dsads() throws Exception {
String s = HttpUtil.get(getTokenUrl);
Map map = JSON.parseObject(s, Map.class);
String D = map.get("Data").toString();
Map mapDate = JSON.parseObject(D, Map.class);
token = mapDate.get("Token").toString();
System.out.println(token);
Map paramsMap = new HashMap();
Map Data = new LinkedHashMap();
Data.put("FBillNo", "1220200102001");
paramsMap.put("Data", Data);
Map<String, String> hreader = new HashMap<>();
hreader.put("Content-Type", "application/json");
System.out.println(JsonUtil.Mapjson(paramsMap));
String post = HttpUtil.post(includeDetailUrl + token, JsonUtil.Mapjson(paramsMap), hreader);
// SoSsResponseDate soSsResponseDate = JSON.parseObject(post, SoSsResponseDate.class, Feature.OrderedField);//转换数据类型
// System.out.println(soSsResponseDate);
SoSsResponseDate soSsResponseDate = JSON.parseObject(post, SoSsResponseDate.class, Feature.OrderedField);//转换数据类型
String statusCode = soSsResponseDate.getStatusCode();
System.out.println(soSsResponseDate.getStatusCode().equals("200"));
System.out.println(soSsResponseDate);
if (null != soSsResponseDate.getStatusCode() && soSsResponseDate.getStatusCode().equals("200")) {
Map Datas = JSON.parseObject(soSsResponseDate.getData().toString(), Map.class, Feature.OrderedField);//转换数据类型
List list = JSON.parseObject(Datas.get("Page2").toString(), List.class, Feature.OrderedField);
int i = 1;
for (Object o : list) {
Map listDateMap = JSON.parseObject(o.toString(), Map.class, Feature.OrderedField);
System.out.println(listDateMap);
// returnDate.put(apiName + i, new ArrayList<Map>() {{
// add(listDateMap);
// }});
i++;
}
}
}
@Test
void asd() throws Exception {
System.out.println(SoSsDao.token);
System.out.println(StringUtil.isNumber("1473048265"));
System.out.println(TimeStamp2Date("1609499999", "yyyy-MM-dd HH:mm:ss"));
System.out.println(TimeStamp2Date("1609999999", "yyyy-MM-dd HH:mm:ss"));
}
public static String TimeStamp2Date(String timestampString, String formats) {
if (TextUtils.isEmpty(formats))
formats = "yyyy-MM-dd HH:mm:ss";
Long timestamp = Long.parseLong(timestampString) * 1000;
String date = new SimpleDateFormat(formats, Locale.CHINA).format(new Date(timestamp));
return date;
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论