From 3d1de372eca7aa841b76c9bb094cd91b38703f94 Mon Sep 17 00:00:00 2001 From: wangxianzhang Date: Fri, 5 Aug 2022 16:28:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=86=E5=87=A0=E4=B8=AA?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E8=BF=94=E5=9B=9E=E5=80=BC=E8=BD=AC=E6=8D=A2?= =?UTF-8?q?=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/jimureport.mysql5.7.create.sql | 2 +- .../config/EpmetApiResultConvertAdapter.java | 61 ------------- .../BaseApiResultConvertAdapter.java | 89 +++++++++++++++++++ .../converter/ListApiResultConverter.java | 21 +++++ .../converter/PageDataApiResultConverter.java | 25 ++++++ .../SingleObjectApiResultConverter.java | 25 ++++++ src/main/resources/application.yml | 2 +- 7 files changed, 162 insertions(+), 63 deletions(-) delete mode 100644 src/main/java/com/epmet/jmreport/config/EpmetApiResultConvertAdapter.java create mode 100644 src/main/java/com/epmet/jmreport/converter/BaseApiResultConvertAdapter.java create mode 100644 src/main/java/com/epmet/jmreport/converter/ListApiResultConverter.java create mode 100644 src/main/java/com/epmet/jmreport/converter/PageDataApiResultConverter.java create mode 100644 src/main/java/com/epmet/jmreport/converter/SingleObjectApiResultConverter.java diff --git a/db/jimureport.mysql5.7.create.sql b/db/jimureport.mysql5.7.create.sql index ef76565..d18a2ac 100644 --- a/db/jimureport.mysql5.7.create.sql +++ b/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; -use `jimureport`; +use `epmet_jmreport`; /* Navicat Premium Data Transfer diff --git a/src/main/java/com/epmet/jmreport/config/EpmetApiResultConvertAdapter.java b/src/main/java/com/epmet/jmreport/config/EpmetApiResultConvertAdapter.java deleted file mode 100644 index af23c87..0000000 --- a/src/main/java/com/epmet/jmreport/config/EpmetApiResultConvertAdapter.java +++ /dev/null @@ -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"); - } -} \ No newline at end of file diff --git a/src/main/java/com/epmet/jmreport/converter/BaseApiResultConvertAdapter.java b/src/main/java/com/epmet/jmreport/converter/BaseApiResultConvertAdapter.java new file mode 100644 index 0000000..3e14b06 --- /dev/null +++ b/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()); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/epmet/jmreport/converter/ListApiResultConverter.java b/src/main/java/com/epmet/jmreport/converter/ListApiResultConverter.java new file mode 100644 index 0000000..d1381b2 --- /dev/null +++ b/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(); + } +} diff --git a/src/main/java/com/epmet/jmreport/converter/PageDataApiResultConverter.java b/src/main/java/com/epmet/jmreport/converter/PageDataApiResultConverter.java new file mode 100644 index 0000000..fb0fe87 --- /dev/null +++ b/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(); + } +} diff --git a/src/main/java/com/epmet/jmreport/converter/SingleObjectApiResultConverter.java b/src/main/java/com/epmet/jmreport/converter/SingleObjectApiResultConverter.java new file mode 100644 index 0000000..aa18c3e --- /dev/null +++ b/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(); + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 3259321..4751a60 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -3,7 +3,7 @@ server: spring: #数据库 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 password: root driver-class-name: com.mysql.cj.jdbc.Driver