Browse Source

新增了几个基础返回值转换器

test
wangxianzhang 3 years ago
parent
commit
3d1de372ec
  1. 2
      db/jimureport.mysql5.7.create.sql
  2. 61
      src/main/java/com/epmet/jmreport/config/EpmetApiResultConvertAdapter.java
  3. 89
      src/main/java/com/epmet/jmreport/converter/BaseApiResultConvertAdapter.java
  4. 21
      src/main/java/com/epmet/jmreport/converter/ListApiResultConverter.java
  5. 25
      src/main/java/com/epmet/jmreport/converter/PageDataApiResultConverter.java
  6. 25
      src/main/java/com/epmet/jmreport/converter/SingleObjectApiResultConverter.java
  7. 2
      src/main/resources/application.yml

2
db/jimureport.mysql5.7.create.sql

@ -1,5 +1,5 @@
CREATE database if NOT EXISTS `epmet_jmreport` default character set utf8mb4 collate utf8mb4_unicode_ci; CREATE database if NOT EXISTS `epmet_jmreport` default character set utf8mb4 collate utf8mb4_unicode_ci;
use `jimureport`; use `epmet_jmreport`;
/* /*
Navicat Premium Data Transfer Navicat Premium Data Transfer

61
src/main/java/com/epmet/jmreport/config/EpmetApiResultConvertAdapter.java

@ -1,61 +0,0 @@
package com.epmet.jmreport.config;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.jeecg.modules.jmreport.desreport.render.handler.convert.ApiDataConvertAdapter;
import org.springframework.stereotype.Component;
/**
* 接口数据格式转换
*/
@Component("epmetApiResultConvertAdapter")
public class EpmetApiResultConvertAdapter implements ApiDataConvertAdapter {
/**
* 返回list数据集
* @param jsonObject 接口数据原始对象
* @return
*/
@Override
public String getData(JSONObject jsonObject) {
JSONObject data = jsonObject.getJSONObject("data");
//if (data == null) {
// // 没有数据返回
// return null;
//}
JSONArray list = data.getJSONArray("list");
return list.toJSONString();
}
/**
* 返回links
* @param jsonObject 接口数据原始对象
* @return
*/
@Override
public String getLinks(JSONObject jsonObject) {
return null;
}
/**
* 返回总页数
* @param jsonObject 接口数据原始对象
* @return
*/
@Override
public String getTotal(JSONObject jsonObject) {
return "10";
}
/**
* 返回总条数
* @param jsonObject 接口数据原始对象
* @return
*/
@Override
public String getCount(JSONObject jsonObject) {
JSONObject data = jsonObject.getJSONObject("data");
return data.getString("total");
}
}

89
src/main/java/com/epmet/jmreport/converter/BaseApiResultConvertAdapter.java

@ -0,0 +1,89 @@
package com.epmet.jmreport.converter;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.jeecg.modules.jmreport.desreport.render.handler.convert.ApiDataConvertAdapter;
/**
* 基础接口数据格式转换实现了total和count的获取data留给具体的子类其他具体业务所用的转换器可以集成自这个
*/
public abstract class BaseApiResultConvertAdapter implements ApiDataConvertAdapter {
///**
// * 返回list数据集
// * @param jsonObject 接口数据原始对象
// * @return
// */
//@Override
//public String getData(JSONObject jsonObject) {
// Object data = jsonObject.get("data");
//
// if (data == null) {
// // 没有数据返回
// return null;
// }
//
// if (data instanceof JSONObject) {
// // 单个对象
// JSONObject dataObject = jsonObject.getJSONObject("data");
// } else {
// // 列表
// JSONArray dataArray = jsonObject.getJSONArray("data");
// }
//
// JSONArray list = data.getJSONArray("list");
// return list.toJSONString();
//}
/**
* 返回links
*
* @param jsonObject 接口数据原始对象
* @return
*/
@Override
public String getLinks(JSONObject jsonObject) {
return null;
}
/**
* 返回总页数
*
* @param jsonObject 接口数据原始对象
* @return
*/
@Override
public String getTotal(JSONObject jsonObject) {
return "10";
}
/**
* 返回总条数
*
* @param jsonObject 接口数据原始对象
* @return
*/
@Override
public String getCount(JSONObject jsonObject) {
Object data = jsonObject.get("data");
if (data == null) {
// 没有数据返回
return null;
}
if (data instanceof JSONObject) {
// data是个对象,还要解析里层的
JSONArray list = ((JSONObject)data).getJSONArray("list");
if (list == null) {
// 就是单个对象,详情查询等
return "1";
} else {
// 返回的是pageData对象
return String.valueOf(list.size());
}
} else {
// data就是个列表,直接返回
return String.valueOf(((JSONArray)data).size());
}
}
}

21
src/main/java/com/epmet/jmreport/converter/ListApiResultConverter.java

@ -0,0 +1,21 @@
package com.epmet.jmreport.converter;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Component;
/**
* 通用的data=list的解析如果更复杂需要自己写
*/
@Component("listApiResultConverter")
public class ListApiResultConverter extends BaseApiResultConvertAdapter {
@Override
public String getData(JSONObject jsonObject) {
JSONArray list = jsonObject.getJSONArray("data");
if (list == null) {
return "0";
}
return list.toJSONString();
}
}

25
src/main/java/com/epmet/jmreport/converter/PageDataApiResultConverter.java

@ -0,0 +1,25 @@
package com.epmet.jmreport.converter;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Component;
/**
* 通用的pageData的解析如果更复杂需要自己写
*/
@Component("pageDataApiResultConverter")
public class PageDataApiResultConverter extends BaseApiResultConvertAdapter {
@Override
public String getData(JSONObject jsonObject) {
JSONObject data = jsonObject.getJSONObject("data");
if (data == null) {
// 没有数据返回
return null;
}
JSONArray list = data.getJSONArray("list");
return list.toJSONString();
}
}

25
src/main/java/com/epmet/jmreport/converter/SingleObjectApiResultConverter.java

@ -0,0 +1,25 @@
package com.epmet.jmreport.converter;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Component;
/**
* 通用的单个对象的解析如果更复杂需要自己写
*/
@Component("singleObjectApiResultConverter")
public class SingleObjectApiResultConverter extends BaseApiResultConvertAdapter {
@Override
public String getData(JSONObject jsonObject) {
JSONObject data = jsonObject.getJSONObject("data");
if (data == null) {
// 没有数据返回
return null;
}
JSONArray objects = new JSONArray();
objects.add(data);
return objects.toJSONString();
}
}

2
src/main/resources/application.yml

@ -3,7 +3,7 @@ server:
spring: spring:
#数据库 #数据库
datasource: datasource:
url: jdbc:mysql://${MYSQL-HOST:192.168.1.140}:${MYSQL-PORT:3306}/${MYSQL-DB:epmet_jmreport}?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai url: jdbc:mysql://${MYSQL-HOST:localhost}:${MYSQL-PORT:3306}/${MYSQL-DB:jimureport}?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
username: root username: root
password: root password: root
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver

Loading…
Cancel
Save