From 0dffccd895690dcc5f6f035f1f2fd46accfe8b62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=A8=E5=AD=90=E6=9D=8E=C2=B7De?= Date: Tue, 22 Jun 2021 14:15:25 +0800 Subject: [PATCH] Dashboard --- .../controller/ReportDashboardController.java | 64 ++++ .../dashboard/controller/dto/ChartDto.java | 51 +++ .../controller/dto/ReportDashboardDto.java | 55 +++ .../dto/ReportDashboardObjectDto.java | 32 ++ .../param/ReportDashboardParam.java | 20 ++ .../dashboard/dao/ReportDashboardMapper.java | 16 + .../dashboard/dao/entity/ReportDashboard.java | 58 ++++ .../data/dashboard/service/ChartStrategy.java | 26 ++ .../service/ReportDashboardService.java | 38 +++ .../service/impl/BarChartServiceImpl.java | 81 +++++ .../service/impl/BarLineChartServiceImpl.java | 108 ++++++ .../service/impl/GaugeChartServiceImpl.java | 43 +++ .../service/impl/PieChartServiceImpl.java | 52 +++ .../impl/ReportDashboardServiceImpl.java | 314 ++++++++++++++++++ .../modules/data/dashboard/util/DateUtil.java | 47 +++ .../dto/ReportDashboardWidgetDto.java | 28 ++ .../dto/ReportDashboardWidgetValueDto.java | 42 +++ .../param/ReportDashboardWidgetParam.java | 20 ++ .../dao/ReportDashboardWidgetMapper.java | 16 + .../dao/entity/ReportDashboardWidget.java | 45 +++ .../service/ReportDashboardWidgetService.java | 21 ++ .../ReportDashboardWidgetServiceImpl.java | 34 ++ 22 files changed, 1211 insertions(+) create mode 100644 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/controller/ReportDashboardController.java create mode 100644 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/controller/dto/ChartDto.java create mode 100644 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/controller/dto/ReportDashboardDto.java create mode 100644 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/controller/dto/ReportDashboardObjectDto.java create mode 100644 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/controller/param/ReportDashboardParam.java create mode 100644 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/dao/ReportDashboardMapper.java create mode 100644 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/dao/entity/ReportDashboard.java create mode 100644 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/ChartStrategy.java create mode 100644 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/ReportDashboardService.java create mode 100644 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/impl/BarChartServiceImpl.java create mode 100644 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/impl/BarLineChartServiceImpl.java create mode 100644 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/impl/GaugeChartServiceImpl.java create mode 100644 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/impl/PieChartServiceImpl.java create mode 100644 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/impl/ReportDashboardServiceImpl.java create mode 100644 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/util/DateUtil.java create mode 100644 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/controller/dto/ReportDashboardWidgetDto.java create mode 100644 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/controller/dto/ReportDashboardWidgetValueDto.java create mode 100644 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/controller/param/ReportDashboardWidgetParam.java create mode 100644 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/dao/ReportDashboardWidgetMapper.java create mode 100644 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/dao/entity/ReportDashboardWidget.java create mode 100644 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/service/ReportDashboardWidgetService.java create mode 100644 report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/service/impl/ReportDashboardWidgetServiceImpl.java diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/controller/ReportDashboardController.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/controller/ReportDashboardController.java new file mode 100644 index 00000000..a1754871 --- /dev/null +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/controller/ReportDashboardController.java @@ -0,0 +1,64 @@ + +package com.anjiplus.template.gaea.business.modules.data.dashboard.controller; + +import com.anji.plus.gaea.annotation.Permission; +import com.anji.plus.gaea.annotation.log.GaeaAuditLog; +import com.anji.plus.gaea.bean.ResponseBean; +import com.anjiplus.template.gaea.business.modules.data.dashboard.controller.dto.ChartDto; +import com.anjiplus.template.gaea.business.modules.data.dashboard.controller.dto.ReportDashboardObjectDto; +import com.anjiplus.template.gaea.business.modules.data.dashboard.service.ReportDashboardService; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** +* @desc 大屏设计 controller +* @website https://gitee.com/anji-plus/gaea +* @author Raod +* @date 2021-04-12 14:52:21.761 +**/ +@RestController +@Api(tags = "大屏设计管理") +@RequestMapping("/reportDashboard") +public class ReportDashboardController { + + @Autowired + private ReportDashboardService reportDashboardService; + + /** + * 预览、查询大屏详情 + * @param reportCode + * @return + */ + @GetMapping({"/{reportCode}"}) + @Permission(code = "DETAIL", name = "明细") + public ResponseBean detail(@PathVariable("reportCode") String reportCode) { + return ResponseBean.builder().data(reportDashboardService.getDetail(reportCode)).build(); + } + + /** + * 保存大屏设计 + * @param dto + * @return + */ + @PostMapping + @Permission(code = "INSERT", name = "新增") + @GaeaAuditLog(pageTitle = "新增") + public ResponseBean insert(@RequestBody ReportDashboardObjectDto dto) { + reportDashboardService.insertDashboard(dto); + return ResponseBean.builder().build(); + } + + + /** + * 获取去单个图层数据 + * @param dto + * @return + */ + @PostMapping("/getData") + @Permission(code = "DETAIL", name = "明细图表数据") + public ResponseBean getData(@RequestBody ChartDto dto) { + return ResponseBean.builder().data(reportDashboardService.getChartData(dto)).build(); + } + +} diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/controller/dto/ChartDto.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/controller/dto/ChartDto.java new file mode 100644 index 00000000..b821eff3 --- /dev/null +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/controller/dto/ChartDto.java @@ -0,0 +1,51 @@ + +package com.anjiplus.template.gaea.business.modules.data.dashboard.controller.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Map; + + +/** +* +* @description 大屏设计 dto +* @author Raod +* @date 2021-04-12 14:52:21.761 +**/ +@Data +public class ChartDto implements Serializable { + + private String chartType; + + /**数据集编码*/ + private String setCode; + + /** 传入的自定义参数*/ + private Map contextData; + + /**图表属性*/ + private Map chartProperties; + + /**时间字段*/ + private String timeLineFiled; + + /**时间颗粒度*/ + private String particles; + + /**时间格式化*/ + private String dataTimeFormat; + + /**时间展示层*/ + private String timeLineFormat; + + private int timeUnit; + + /**时间区间*/ + private String startTime; + + /**时间区间*/ + private String endTime; + + +} diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/controller/dto/ReportDashboardDto.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/controller/dto/ReportDashboardDto.java new file mode 100644 index 00000000..b4ba347a --- /dev/null +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/controller/dto/ReportDashboardDto.java @@ -0,0 +1,55 @@ + +package com.anjiplus.template.gaea.business.modules.data.dashboard.controller.dto; + +import com.anji.plus.gaea.curd.dto.GaeaBaseDTO; +import com.anjiplus.template.gaea.business.modules.data.dashboardwidget.controller.dto.ReportDashboardWidgetDto; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + + +/** +* +* @description 大屏设计 dto +* @author Raod +* @date 2021-04-12 14:52:21.761 +**/ +@Data +public class ReportDashboardDto extends GaeaBaseDTO implements Serializable { + /** 报表编码 */ + private String reportCode; + + /** 看板标题 */ + private String title; + + /** 宽度px */ + private Long width; + + /** 高度px */ + private Long height; + + /** 背景色 */ + private String backgroundColor; + + /** 背景图片 */ + private String backgroundImage; + + /** 工作台中的辅助线 */ + private String presetLine; + + /** 自动刷新间隔秒,数据字典REFRESH_TYPE */ + private Integer refreshSeconds; + + /** 0--已禁用 1--已启用 DIC_NAME=ENABLE_FLAG */ + private Integer enableFlag; + + /** 0--未删除 1--已删除 DIC_NAME=DEL_FLAG */ + private Integer deleteFlag; + + /** 排序,降序 */ + private Integer sort; + + private List widgets; + +} \ No newline at end of file diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/controller/dto/ReportDashboardObjectDto.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/controller/dto/ReportDashboardObjectDto.java new file mode 100644 index 00000000..a74d3fa9 --- /dev/null +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/controller/dto/ReportDashboardObjectDto.java @@ -0,0 +1,32 @@ + +package com.anjiplus.template.gaea.business.modules.data.dashboard.controller.dto; + +import com.anjiplus.template.gaea.business.modules.data.dashboardwidget.controller.dto.ReportDashboardWidgetDto; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + + +/** +* +* @description 大屏设计 dto +* @author Raod +* @date 2021-04-12 14:52:21.761 +**/ +@Data +public class ReportDashboardObjectDto implements Serializable { + + /** 报表编码 */ + private String reportCode; + /** + * 报表编码 + */ + private ReportDashboardDto dashboard; + + /** + * 大屏画布中的组件 + */ + private List widgets; + +} diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/controller/param/ReportDashboardParam.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/controller/param/ReportDashboardParam.java new file mode 100644 index 00000000..f2045fcd --- /dev/null +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/controller/param/ReportDashboardParam.java @@ -0,0 +1,20 @@ +/**/ +package com.anjiplus.template.gaea.business.modules.data.dashboard.controller.param; + +import lombok.Data; +import java.io.Serializable; +import com.anji.plus.gaea.annotation.Query; +import com.anji.plus.gaea.constant.QueryEnum; +import com.anji.plus.gaea.curd.params.PageParam; + +import java.util.List; + + +/** +* @desc ReportDashboard 大屏设计查询输入类 +* @author Raod +* @date 2021-04-12 14:52:21.761 +**/ +@Data +public class ReportDashboardParam extends PageParam implements Serializable{ +} \ No newline at end of file diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/dao/ReportDashboardMapper.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/dao/ReportDashboardMapper.java new file mode 100644 index 00000000..9c339a02 --- /dev/null +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/dao/ReportDashboardMapper.java @@ -0,0 +1,16 @@ +package com.anjiplus.template.gaea.business.modules.data.dashboard.dao; + +import org.apache.ibatis.annotations.Mapper; + +import com.anji.plus.gaea.curd.mapper.GaeaBaseMapper; +import com.anjiplus.template.gaea.business.modules.data.dashboard.dao.entity.ReportDashboard; + +/** +* ReportDashboard Mapper +* @author Raod +* @date 2021-04-12 14:52:21.761 +**/ +@Mapper +public interface ReportDashboardMapper extends GaeaBaseMapper { + +} \ No newline at end of file diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/dao/entity/ReportDashboard.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/dao/entity/ReportDashboard.java new file mode 100644 index 00000000..24623063 --- /dev/null +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/dao/entity/ReportDashboard.java @@ -0,0 +1,58 @@ + +package com.anjiplus.template.gaea.business.modules.data.dashboard.dao.entity; + +import com.anji.plus.gaea.annotation.Unique; +import com.anjiplus.template.gaea.common.RespCommonCode; +import lombok.Data; +import io.swagger.annotations.ApiModelProperty; + +import com.anji.plus.gaea.curd.entity.GaeaBaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; + +import javax.validation.constraints.*; +import java.sql.Timestamp; + +/** +* @description 大屏设计 entity +* @author Raod +* @date 2021-04-12 14:52:21.761 +**/ +@TableName(value="gaea_report_dashboard") +@Data +public class ReportDashboard extends GaeaBaseEntity { + @ApiModelProperty(value = "报表编码") + @Unique(code = RespCommonCode.REPORT_CODE_ISEXIST) + private String reportCode; + + @ApiModelProperty(value = "看板标题") + private String title; + + @ApiModelProperty(value = "宽度px") + private Long width; + + @ApiModelProperty(value = "高度px") + private Long height; + + @ApiModelProperty(value = "背景色") + private String backgroundColor; + + @ApiModelProperty(value = "背景图片") + private String backgroundImage; + + @ApiModelProperty(value = "工作台中的辅助线") + private String presetLine; + + @ApiModelProperty(value = "自动刷新间隔秒,数据字典REFRESH_TYPE") + private Integer refreshSeconds; + + @ApiModelProperty(value = "0--已禁用 1--已启用 DIC_NAME=ENABLE_FLAG") + private Integer enableFlag; + + @ApiModelProperty(value = " 0--未删除 1--已删除 DIC_NAME=DEL_FLAG") + private Integer deleteFlag; + + @ApiModelProperty(value = "排序,降序") + private Integer sort; + + +} \ No newline at end of file diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/ChartStrategy.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/ChartStrategy.java new file mode 100644 index 00000000..aaa79d0c --- /dev/null +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/ChartStrategy.java @@ -0,0 +1,26 @@ +package com.anjiplus.template.gaea.business.modules.data.dashboard.service; + +import com.alibaba.fastjson.JSONObject; +import com.anjiplus.template.gaea.business.modules.data.dashboard.controller.dto.ChartDto; + +import java.util.List; + +/** + * Created by raodeming on 2021/4/26. + */ +public interface ChartStrategy { + + /** + * 图表类型 + * @return + */ + String type(); + + /** + * 针对每种图表类型做单独的数据转换解析 + * + * @param dto + * @return + */ + Object transform(ChartDto dto, List data); +} diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/ReportDashboardService.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/ReportDashboardService.java new file mode 100644 index 00000000..2a5d62c6 --- /dev/null +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/ReportDashboardService.java @@ -0,0 +1,38 @@ + +package com.anjiplus.template.gaea.business.modules.data.dashboard.service; + +import com.anji.plus.gaea.curd.service.GaeaBaseService; +import com.anjiplus.template.gaea.business.modules.data.dashboard.controller.dto.ChartDto; +import com.anjiplus.template.gaea.business.modules.data.dashboard.controller.dto.ReportDashboardObjectDto; +import com.anjiplus.template.gaea.business.modules.data.dashboard.controller.param.ReportDashboardParam; +import com.anjiplus.template.gaea.business.modules.data.dashboard.dao.entity.ReportDashboard; + +/** +* @desc ReportDashboard 大屏设计服务接口 +* @author Raod +* @date 2021-04-12 14:52:21.761 +**/ +public interface ReportDashboardService extends GaeaBaseService { + + /*** + * 查询详情 + * + * @param reportCode + */ + ReportDashboardObjectDto getDetail(String reportCode); + + /*** + * 保存大屏设计 + * + * @param dto + */ + void insertDashboard(ReportDashboardObjectDto dto); + + + /** + * 获取单个图表数据 + * @param dto + * @return + */ + Object getChartData(ChartDto dto); +} diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/impl/BarChartServiceImpl.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/impl/BarChartServiceImpl.java new file mode 100644 index 00000000..780d17d3 --- /dev/null +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/impl/BarChartServiceImpl.java @@ -0,0 +1,81 @@ +package com.anjiplus.template.gaea.business.modules.data.dashboard.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.anjiplus.template.gaea.business.modules.data.dashboard.controller.dto.ChartDto; +import com.anjiplus.template.gaea.business.modules.data.dashboard.service.ChartStrategy; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +/** + * 柱状体或者折线图 + * Created by raodeming on 2021/4/26. + */ +@Component +public class BarChartServiceImpl implements ChartStrategy { + /** + * 图表类型 + * + * @return + */ + @Override + public String type() { + return "widget-barchart|widget-linechart"; + } + + /** + * 针对每种图表类型做单独的数据转换解析 + * + * @param dto + * @param data + * @return + */ + @Override + public Object transform(ChartDto dto, List data) { +// JSONObject json = new JSONObject(); +// List xAxis = new ArrayList<>(); +// List series = new ArrayList<>(); +// data.forEach(jsonObject -> { +// jsonObject.forEach((s, o) -> { +// if ("xAxis".equals(s)) { +// xAxis.add(o); +// } else { +// series.add(o); +// } +// }); +// }); +// +// json.put("xAxis", xAxis); +// JSONArray objects = new JSONArray(); +// JSONObject jsonObject = new JSONObject(); +// jsonObject.put("data", series); +// objects.add(jsonObject); +// json.put("series", objects); +// return json.toJSONString(); + return data; + } + + +/* { + "xAxis": [ + "哈哈", + "洗洗", + "来了", + "问问", + "天天" + ], + "series": [ + { + "data": [ + 1, + 2, + 3, + 4, + 5 + ] + } + ] + }*/ +} diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/impl/BarLineChartServiceImpl.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/impl/BarLineChartServiceImpl.java new file mode 100644 index 00000000..362abb0e --- /dev/null +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/impl/BarLineChartServiceImpl.java @@ -0,0 +1,108 @@ +package com.anjiplus.template.gaea.business.modules.data.dashboard.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.anjiplus.template.gaea.business.modules.data.dashboard.controller.dto.ChartDto; +import com.anjiplus.template.gaea.business.modules.data.dashboard.service.ChartStrategy; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 折柱图 + * Created by raodeming on 2021/4/26. + */ +@Component +public class BarLineChartServiceImpl implements ChartStrategy { + /** + * 图表类型 + * + * @return + */ + @Override + public String type() { + return "widget-barlinechart"; + } + + /** + * 针对每种图表类型做单独的数据转换解析 + * + * @param dto + * @param data + * @return + */ + @Override + public Object transform(ChartDto dto, List data) { +// JSONObject json = new JSONObject(); +// List xAxis = new ArrayList<>(); +// Map> series = new HashMap<>(); +// data.forEach(jsonObject -> { +// jsonObject.forEach((s, o) -> { +// if ("xAxis".equals(s)) { +// xAxis.add(o); +// } else { +// List objects; +// if (series.containsKey(s)) { +// objects = series.get(s); +// } else { +// objects = new ArrayList<>(); +// +// } +// objects.add(o); +// series.put(s, objects); +// +// } +// }); +// }); +// +// json.put("xAxis", xAxis); +// List result = new ArrayList<>(); +// series.forEach((s, objects) -> { +// JSONObject jsonObject = new JSONObject(); +// jsonObject.put("name", s); +// if (s.endsWith("bar")) { +// jsonObject.put("type", "bar"); +// } else { +// jsonObject.put("type", "line"); +// } +// jsonObject.put("data", objects); +// result.add(jsonObject); +// }); +// json.put("series", result); +// return json.toJSONString(); + return data; + } + + + /*{ + "xAxis": [ + "1月", + "2月", + "3月" + ], + "series": [ + { + "name": "指标1", //暂时用不上 + "type": "bar", //需要处理 + "data": [ + 2, + 49, + 2 + ] + }, + { + "name": "指标2", + "type": "line", + "yAxisIndex": 1, + "data": [ + 2, + 32, + 4 + ] + } + ] + }*/ + +} diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/impl/GaugeChartServiceImpl.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/impl/GaugeChartServiceImpl.java new file mode 100644 index 00000000..c9d75a05 --- /dev/null +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/impl/GaugeChartServiceImpl.java @@ -0,0 +1,43 @@ +package com.anjiplus.template.gaea.business.modules.data.dashboard.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.anjiplus.template.gaea.business.modules.data.dashboard.controller.dto.ChartDto; +import com.anjiplus.template.gaea.business.modules.data.dashboard.service.ChartStrategy; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * 饼图或者空心饼图或者漏斗图 + * Created by raodeming on 2021/4/26. + */ +@Component +public class GaugeChartServiceImpl implements ChartStrategy { + /** + * 图表类型 + * + * @return + */ + @Override + public String type() { + return "widget-gauge"; + } + + /** + * 针对每种图表类型做单独的数据转换解析 + * + * @param dto + * @param data + * @return + */ + @Override + public Object transform(ChartDto dto, List data) { + +// return "{\"value\": 50, \"name\": \"名称1\", \"unit\": \"%\"}"; + return data; + } + + + + +} diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/impl/PieChartServiceImpl.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/impl/PieChartServiceImpl.java new file mode 100644 index 00000000..e19e0055 --- /dev/null +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/impl/PieChartServiceImpl.java @@ -0,0 +1,52 @@ +package com.anjiplus.template.gaea.business.modules.data.dashboard.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.anjiplus.template.gaea.business.modules.data.dashboard.controller.dto.ChartDto; +import com.anjiplus.template.gaea.business.modules.data.dashboard.service.ChartStrategy; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * 饼图或者空心饼图或者漏斗图 + * Created by raodeming on 2021/4/26. + */ +@Component +public class PieChartServiceImpl implements ChartStrategy { + /** + * 图表类型 + * + * @return + */ + @Override + public String type() { + return "widget-piechart|widget-hollow-piechart|widget-funnel"; + } + + /** + * 针对每种图表类型做单独的数据转换解析 + * + * @param dto + * @param data + * @return + */ + @Override + public Object transform(ChartDto dto, List data) { + + return data; + } + +/* [ + { + "value": 11, + "name": "指标1" + }, + { + "value": 10, + "name": "指标2" + } + ]*/ + + + +} diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/impl/ReportDashboardServiceImpl.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/impl/ReportDashboardServiceImpl.java new file mode 100644 index 00000000..cfc1bd56 --- /dev/null +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/service/impl/ReportDashboardServiceImpl.java @@ -0,0 +1,314 @@ + +package com.anjiplus.template.gaea.business.modules.data.dashboard.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.anji.plus.gaea.curd.mapper.GaeaBaseMapper; +import com.anji.plus.gaea.exception.BusinessExceptionBuilder; +import com.anji.plus.gaea.utils.GaeaAssert; +import com.anji.plus.gaea.utils.GaeaBeanUtils; +import com.anjiplus.template.gaea.business.code.ResponseCode; +import com.anjiplus.template.gaea.business.modules.data.dashboard.controller.dto.ChartDto; +import com.anjiplus.template.gaea.business.modules.data.dashboard.controller.dto.ReportDashboardDto; +import com.anjiplus.template.gaea.business.modules.data.dashboard.controller.dto.ReportDashboardObjectDto; +import com.anjiplus.template.gaea.business.modules.data.dashboard.dao.ReportDashboardMapper; +import com.anjiplus.template.gaea.business.modules.data.dashboard.dao.entity.ReportDashboard; +import com.anjiplus.template.gaea.business.modules.data.dashboard.service.ChartStrategy; +import com.anjiplus.template.gaea.business.modules.data.dashboard.service.ReportDashboardService; +import com.anjiplus.template.gaea.business.modules.data.dashboard.util.DateUtil; +import com.anjiplus.template.gaea.business.modules.data.dashboardwidget.controller.dto.ReportDashboardWidgetDto; +import com.anjiplus.template.gaea.business.modules.data.dashboardwidget.controller.dto.ReportDashboardWidgetValueDto; +import com.anjiplus.template.gaea.business.modules.data.dashboardwidget.dao.entity.ReportDashboardWidget; +import com.anjiplus.template.gaea.business.modules.data.dashboardwidget.service.ReportDashboardWidgetService; +import com.anjiplus.template.gaea.business.modules.data.dataSet.controller.dto.DataSetDto; +import com.anjiplus.template.gaea.business.modules.data.dataSet.controller.dto.OriginalDataDto; +import com.anjiplus.template.gaea.business.modules.data.dataSet.service.DataSetService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * @author Raod + * @desc ReportDashboard 大屏设计服务实现 + * @date 2021-04-12 14:52:21.761 + **/ +@Service +//@RequiredArgsConstructor +public class ReportDashboardServiceImpl implements ReportDashboardService, InitializingBean, ApplicationContextAware { + + @Autowired + private ReportDashboardMapper reportDashboardMapper; + + @Autowired + private ReportDashboardWidgetService reportDashboardWidgetService; + + @Autowired + private DataSetService dataSetService; + + private Map queryServiceImplMap = new HashMap<>(); + private ApplicationContext applicationContext; + + @Override + public GaeaBaseMapper getMapper() { + return reportDashboardMapper; + } + + @Override + public ReportDashboardObjectDto getDetail(String reportCode) { + ReportDashboardObjectDto result = new ReportDashboardObjectDto(); + ReportDashboardDto reportDashboardDto = new ReportDashboardDto(); + ReportDashboard reportDashboard = this.selectOne("report_code", reportCode); + GaeaAssert.notNull(reportDashboard, ResponseCode.RULE_CONTENT_NOT_EXIST, "reportDashboard"); + GaeaBeanUtils.copyAndFormatter(reportDashboard, reportDashboardDto); + + List list = reportDashboardWidgetService.list( + new QueryWrapper().lambda() + .eq(ReportDashboardWidget::getReportCode, reportCode) + .orderByAsc(ReportDashboardWidget::getSort) + ); + List reportDashboardWidgetDtoList = new ArrayList<>(); + list.forEach(reportDashboardWidget -> { + ReportDashboardWidgetDto reportDashboardWidgetDto = new ReportDashboardWidgetDto(); + ReportDashboardWidgetValueDto value = new ReportDashboardWidgetValueDto(); + value.setSetup(StringUtils.isNotBlank(reportDashboardWidget.getSetup()) ? JSONObject.parseObject(reportDashboardWidget.getSetup()) : new JSONObject()); + value.setData(StringUtils.isNotBlank(reportDashboardWidget.getData()) ? JSONObject.parseObject(reportDashboardWidget.getData()) : new JSONObject()); + value.setPosition(StringUtils.isNotBlank(reportDashboardWidget.getPosition()) ? JSONObject.parseObject(reportDashboardWidget.getPosition()) : new JSONObject()); + value.setCollapse(StringUtils.isNotBlank(reportDashboardWidget.getCollapse()) ? JSONObject.parseObject(reportDashboardWidget.getCollapse()) : new JSONObject()); + + //实时数据的替换 + analysisData(value); + reportDashboardWidgetDto.setType(reportDashboardWidget.getType()); + reportDashboardWidgetDto.setValue(value); + reportDashboardWidgetDtoList.add(reportDashboardWidgetDto); + }); + reportDashboardDto.setWidgets(reportDashboardWidgetDtoList); + result.setDashboard(reportDashboardDto); + result.setReportCode(reportCode); + return result; + } + + /*** + * 保存大屏设计 + * + * @param dto + */ + @Override + @Transactional + public void insertDashboard(ReportDashboardObjectDto dto) { + String reportCode = dto.getReportCode(); + GaeaAssert.notEmpty(reportCode, ResponseCode.PARAM_IS_NULL, "reportCode"); + //查询ReportDashboard + ReportDashboard reportDashboard = this.selectOne("report_code", reportCode); + ReportDashboard dashboard = new ReportDashboard(); + GaeaBeanUtils.copyAndFormatter(dto.getDashboard(), dashboard); + BeanUtils.copyProperties(dto.getDashboard(), dashboard); + dashboard.setReportCode(reportCode); + if (null == reportDashboard) { + //新增 + this.insert(dashboard); + } else { + //更新 + dashboard.setId(reportDashboard.getId()); + this.update(dashboard); + } + + //删除reportDashboardWidget + reportDashboardWidgetService.delete(new QueryWrapper() + .lambda().eq(ReportDashboardWidget::getReportCode, reportCode)); + List widgets = dto.getWidgets(); + + List reportDashboardWidgetList = new ArrayList<>(); + for (int i = 0; i < widgets.size(); i++) { + ReportDashboardWidget reportDashboardWidget = new ReportDashboardWidget(); + ReportDashboardWidgetDto reportDashboardWidgetDto = widgets.get(i); + String type = reportDashboardWidgetDto.getType(); + ReportDashboardWidgetValueDto value = reportDashboardWidgetDto.getValue(); + reportDashboardWidget.setReportCode(reportCode); + reportDashboardWidget.setType(type); + reportDashboardWidget.setSetup(value.getSetup() != null ? JSONObject.toJSONString(value.getSetup()) : ""); + reportDashboardWidget.setData(value.getData() != null ? JSONObject.toJSONString(value.getData()) : ""); + reportDashboardWidget.setPosition(value.getPosition() != null ? JSONObject.toJSONString(value.getPosition()) : ""); + reportDashboardWidget.setCollapse(value.getCollapse() != null ? JSONObject.toJSONString(value.getCollapse()) : ""); + reportDashboardWidget.setEnableFlag(1); + reportDashboardWidget.setDeleteFlag(0); + reportDashboardWidget.setSort((long) (i + 1)); + reportDashboardWidgetList.add(reportDashboardWidget); + } + reportDashboardWidgetService.insertBatch(reportDashboardWidgetList); + + } + + @Override + public Object getChartData(ChartDto dto) { +// String chartType = dto.getChartType(); + DataSetDto setDto = new DataSetDto(); + setDto.setSetCode(dto.getSetCode()); + setDto.setContextData(dto.getContextData()); + OriginalDataDto result = dataSetService.getData(setDto); + List data = result.getData(); + //处理时间轴 + List resultData = buildTimeLine(data, dto); + return resultData; +// return getTarget(chartType).transform(dto, result.getData()); + } + + public ChartStrategy getTarget(String type) { + for (String s : queryServiceImplMap.keySet()) { + if (s.contains(type)) { + return queryServiceImplMap.get(s); + } + } + throw BusinessExceptionBuilder.build(ResponseCode.RULE_CONTENT_NOT_EXIST); + } + + @Override + public void afterPropertiesSet() { + Map beanMap = applicationContext.getBeansOfType(ChartStrategy.class); + //遍历该接口的所有实现,将其放入map中 + for (ChartStrategy serviceImpl : beanMap.values()) { + queryServiceImplMap.put(serviceImpl.type(), serviceImpl); + } + } + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + this.applicationContext = applicationContext; + } + + + /** + * 解析图层数据 + * + * @param dto + */ + public void analysisData(ReportDashboardWidgetValueDto dto) { +// if (StringUtils.isBlank(reportDashboardWidgetDto.getSetCode())) { +// return; +// } +// DataSetDto dto = new DataSetDto(); +// dto.setSetCode(reportDashboardWidgetDto.getSetCode()); +// if (reportDashboardWidgetDto.getContextData() != null && reportDashboardWidgetDto.getContextData().size() > 0) { +// dto.setContextData(reportDashboardWidgetDto.getContextData()); +// } +// OriginalDataDto data = dataSetService.getData(dto); +// reportDashboardWidgetDto.setData(JSONObject.toJSONString(data.getData())); + } + + + public List buildTimeLine(List data, ChartDto dto) { + Map chartProperties = dto.getChartProperties(); + if (null == chartProperties || chartProperties.size() < 1) { + return data; + } + Map contextData = dto.getContextData(); + if (null == contextData || contextData.size() < 1) { + return data; + } + if (contextData.containsKey("startTime") && contextData.containsKey("endTime")) { + dto.setStartTime(contextData.get("startTime").toString()); + dto.setEndTime(contextData.get("endTime").toString()); + } + if (StringUtils.isBlank(dto.getStartTime()) || StringUtils.isBlank(dto.getEndTime())) { + return data; + } + //获取时间轴字段和解析时间颗粒度 + chartProperties.forEach((key, value) -> { + dto.setParticles(value); + setTimeLineFormat(dto); + if (StringUtils.isNotBlank(dto.getDataTimeFormat())) { + dto.setTimeLineFiled(key); + return; + } + }); + + if (StringUtils.isBlank(dto.getDataTimeFormat())) { + return data; + } + + Date beginTime = DateUtil.parseHmsTime(dto.getStartTime()); + Date endTime = DateUtil.parseHmsTime(dto.getEndTime()); + SimpleDateFormat showFormat = new SimpleDateFormat(dto.getTimeLineFormat()); + SimpleDateFormat dataFormat = new SimpleDateFormat(dto.getDataTimeFormat()); + + + Calendar calendar = Calendar.getInstance(); + calendar.setTime(beginTime); + + Calendar calendarEnd = Calendar.getInstance(); + calendarEnd.setTime(endTime); + + List timeLine = new ArrayList<>(); + List dataTimeline = new ArrayList<>(); + timeLine.add(showFormat.format(calendar.getTime())); + dataTimeline.add(dataFormat.format(calendar.getTime())); + + //添加时间轴数据 + while (true) { + calendar.add(dto.getTimeUnit(), 1); + timeLine.add(showFormat.format(calendar.getTime())); + dataTimeline.add(dataFormat.format(calendar.getTime())); + if (showFormat.format(calendar.getTime()).equals(showFormat.format(calendarEnd.getTime()))) { + break; + } + } + + //根据时间轴生成对应的时间线,数据不存在,补数据 + List result = new ArrayList<>(); + JSONObject jsonDemo = data.get(0); + String timeLineFiled = dto.getTimeLineFiled(); + for (String dateFormat : dataTimeline) { + boolean flag = true; + for (JSONObject datum : data) { + if (datum.containsKey(timeLineFiled) && datum.getString(timeLineFiled).equals(dateFormat)) { + result.add(datum); + flag = false; + } + } + if (flag) { + //补数据 + JSONObject json = new JSONObject(); + jsonDemo.forEach((s, o) -> { + if (s.equals(timeLineFiled)) { + json.put(timeLineFiled, dateFormat); + } else { + json.put(s, 0); + } + }); + result.add(json); + } + + } + return result; + } + + //设置时间格式 + private void setTimeLineFormat(ChartDto dto) { + String particles = dto.getParticles(); + if ("xAxis-hour".equals(particles)) { + dto.setDataTimeFormat("yyyy-MM-dd HH"); + dto.setTimeLineFormat("MM-dd HH"); + dto.setTimeUnit(Calendar.HOUR); + } else if ("xAxis-day".equals(particles)) { + dto.setDataTimeFormat("yyyy-MM-dd"); + dto.setTimeLineFormat("yyyy-MM-dd"); + dto.setTimeUnit(Calendar.DATE); + } else if ("xAxis-month".equals(particles)) { + dto.setDataTimeFormat("yyyy-MM"); + dto.setTimeLineFormat("yyyy-MM"); + dto.setTimeUnit(Calendar.MONTH); + } else if ("xAxis-year".equals(particles)) { + dto.setDataTimeFormat("yyyy"); + dto.setTimeLineFormat("yyyy"); + dto.setTimeUnit(Calendar.YEAR); + } + } +} diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/util/DateUtil.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/util/DateUtil.java new file mode 100644 index 00000000..da8e3f4b --- /dev/null +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboard/util/DateUtil.java @@ -0,0 +1,47 @@ +package com.anjiplus.template.gaea.business.modules.data.dashboard.util; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * Created by raodeming on 2021/4/29. + */ +public class DateUtil { + + private static String defaultDatePattern = "yyyy-MM-dd"; + + private static String defaultDateTimePattern = "yyyy-MM-dd HH:mm:ss.SSS"; + + private static String defaultyyyyMMddPattern = "yyyyMMdd"; + + private static String defaultYmdHmsPattern = "yyyy-MM-dd HH:mm:ss"; + + private static String defaultHmsPattern = "HH:mm:ss"; + /**字符串yyyy-MM-dd HH:mm:ss转日期 + * @param dateStr yyyy-MM-dd HH:mm:ss + * @return + */ + public static Date parseHmsTime(String dateStr) { + return parse(dateStr, defaultYmdHmsPattern); + } + + /**字符串转日期 + * @param dateStr + * @param pattern + * @return + */ + public static Date parse(String dateStr, String pattern) { + SimpleDateFormat sdf = new SimpleDateFormat(pattern); + if (dateStr == null || "".equals(dateStr)) { + return null; + } + try { + Date d = sdf.parse(dateStr); + return d; + } catch (ParseException e) { + System.out.println("日期转换错误: " + e.getMessage()); + return null; + } + } +} diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/controller/dto/ReportDashboardWidgetDto.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/controller/dto/ReportDashboardWidgetDto.java new file mode 100644 index 00000000..43965a43 --- /dev/null +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/controller/dto/ReportDashboardWidgetDto.java @@ -0,0 +1,28 @@ + +package com.anjiplus.template.gaea.business.modules.data.dashboardwidget.controller.dto; + +import lombok.Data; + +import java.io.Serializable; + + +/** +* +* @description 大屏看板数据渲染 dto +* @author Raod +* @date 2021-04-12 15:12:43.724 +**/ +@Data +public class ReportDashboardWidgetDto implements Serializable { + + /** + * 组件类型参考字典DASHBOARD_PANEL_TYPE + */ + private String type; + + /** + * value + */ + private ReportDashboardWidgetValueDto value; + +} diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/controller/dto/ReportDashboardWidgetValueDto.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/controller/dto/ReportDashboardWidgetValueDto.java new file mode 100644 index 00000000..c7a5ded1 --- /dev/null +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/controller/dto/ReportDashboardWidgetValueDto.java @@ -0,0 +1,42 @@ + +package com.anjiplus.template.gaea.business.modules.data.dashboardwidget.controller.dto; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +import java.io.Serializable; + + +/** +* +* @description 大屏看板数据渲染 dto +* @author Raod +* @date 2021-04-12 15:12:43.724 +**/ +@Data +public class ReportDashboardWidgetValueDto implements Serializable { + /** 报表编码 */ + private String reportCode; + + /** 组件的渲染属性json */ + private JSONObject setup; + + /** 组件的数据属性json */ + private JSONObject data; + + /** 组件的配置属性json */ + private JSONObject collapse; + + /** 组件的大小位置属性json */ + private JSONObject position; + + /** 0--已禁用 1--已启用 DIC_NAME=ENABLE_FLAG */ + private Integer enableFlag; + + /** 0--未删除 1--已删除 DIC_NAME=DEL_FLAG */ + private Integer deleteFlag; + + /** 排序,图层的概念 */ + private Long sort; + +} diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/controller/param/ReportDashboardWidgetParam.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/controller/param/ReportDashboardWidgetParam.java new file mode 100644 index 00000000..8e6073c5 --- /dev/null +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/controller/param/ReportDashboardWidgetParam.java @@ -0,0 +1,20 @@ +/**/ +package com.anjiplus.template.gaea.business.modules.data.dashboardwidget.controller.param; + +import lombok.Data; +import java.io.Serializable; +import com.anji.plus.gaea.annotation.Query; +import com.anji.plus.gaea.constant.QueryEnum; +import com.anji.plus.gaea.curd.params.PageParam; + +import java.util.List; + + +/** +* @desc ReportDashboardWidget 大屏看板数据渲染查询输入类 +* @author Raod +* @date 2021-04-12 15:12:43.724 +**/ +@Data +public class ReportDashboardWidgetParam extends PageParam implements Serializable{ +} \ No newline at end of file diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/dao/ReportDashboardWidgetMapper.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/dao/ReportDashboardWidgetMapper.java new file mode 100644 index 00000000..cfa0d532 --- /dev/null +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/dao/ReportDashboardWidgetMapper.java @@ -0,0 +1,16 @@ +package com.anjiplus.template.gaea.business.modules.data.dashboardwidget.dao; + +import org.apache.ibatis.annotations.Mapper; + +import com.anji.plus.gaea.curd.mapper.GaeaBaseMapper; +import com.anjiplus.template.gaea.business.modules.data.dashboardwidget.dao.entity.ReportDashboardWidget; + +/** +* ReportDashboardWidget Mapper +* @author Raod +* @date 2021-04-12 15:12:43.724 +**/ +@Mapper +public interface ReportDashboardWidgetMapper extends GaeaBaseMapper { + +} \ No newline at end of file diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/dao/entity/ReportDashboardWidget.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/dao/entity/ReportDashboardWidget.java new file mode 100644 index 00000000..2214cb40 --- /dev/null +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/dao/entity/ReportDashboardWidget.java @@ -0,0 +1,45 @@ + +package com.anjiplus.template.gaea.business.modules.data.dashboardwidget.dao.entity; + +import com.anji.plus.gaea.curd.entity.GaeaBaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** +* @description 大屏看板数据渲染 entity +* @author Raod +* @date 2021-04-12 15:12:43.724 +**/ +@TableName(value="gaea_report_dashboard_widget") +@Data +public class ReportDashboardWidget extends GaeaBaseEntity { + @ApiModelProperty(value = "报表编码") + private String reportCode; + + @ApiModelProperty(value = "组件类型参考字典DASHBOARD_PANEL_TYPE") + private String type; + + @ApiModelProperty(value = "组件的渲染属性json") + private String setup; + + @ApiModelProperty(value = "组件的数据属性json") + private String data; + + @ApiModelProperty(value = "组件的配置属性json") + private String collapse; + + @ApiModelProperty(value = "组件的大小位置属性json") + private String position; + + @ApiModelProperty(value = "0--已禁用 1--已启用 DIC_NAME=ENABLE_FLAG") + private Integer enableFlag; + + @ApiModelProperty(value = " 0--未删除 1--已删除 DIC_NAME=DEL_FLAG") + private Integer deleteFlag; + + @ApiModelProperty(value = "排序,图层的概念") + private Long sort; + + +} diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/service/ReportDashboardWidgetService.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/service/ReportDashboardWidgetService.java new file mode 100644 index 00000000..690d5830 --- /dev/null +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/service/ReportDashboardWidgetService.java @@ -0,0 +1,21 @@ + +package com.anjiplus.template.gaea.business.modules.data.dashboardwidget.service; + +import com.anjiplus.template.gaea.business.modules.data.dashboardwidget.dao.entity.ReportDashboardWidget; +import com.anjiplus.template.gaea.business.modules.data.dashboardwidget.controller.param.ReportDashboardWidgetParam; +import com.anji.plus.gaea.curd.service.GaeaBaseService; + +/** +* @desc ReportDashboardWidget 大屏看板数据渲染服务接口 +* @author Raod +* @date 2021-04-12 15:12:43.724 +**/ +public interface ReportDashboardWidgetService extends GaeaBaseService { + + /*** + * 查询详情 + * + * @param id + */ + ReportDashboardWidget getDetail(Long id); +} \ No newline at end of file diff --git a/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/service/impl/ReportDashboardWidgetServiceImpl.java b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/service/impl/ReportDashboardWidgetServiceImpl.java new file mode 100644 index 00000000..f6dff004 --- /dev/null +++ b/report-core/src/main/java/com/anjiplus/template/gaea/business/modules/data/dashboardwidget/service/impl/ReportDashboardWidgetServiceImpl.java @@ -0,0 +1,34 @@ + +package com.anjiplus.template.gaea.business.modules.data.dashboardwidget.service.impl; + +import com.anji.plus.gaea.curd.mapper.GaeaBaseMapper; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.anjiplus.template.gaea.business.modules.data.dashboardwidget.dao.entity.ReportDashboardWidget; +import com.anjiplus.template.gaea.business.modules.data.dashboardwidget.service.ReportDashboardWidgetService; +import com.anjiplus.template.gaea.business.modules.data.dashboardwidget.dao.ReportDashboardWidgetMapper; +/** +* @desc ReportDashboardWidget 大屏看板数据渲染服务实现 +* @author Raod +* @date 2021-04-12 15:12:43.724 +**/ +@Service +//@RequiredArgsConstructor +public class ReportDashboardWidgetServiceImpl implements ReportDashboardWidgetService { + + @Autowired + private ReportDashboardWidgetMapper reportDashboardWidgetMapper; + + @Override + public GaeaBaseMapper getMapper() { + return reportDashboardWidgetMapper; + } + + @Override + public ReportDashboardWidget getDetail(Long id) { + ReportDashboardWidget reportDashboardWidget = this.selectOne(id); + return reportDashboardWidget; + } +} \ No newline at end of file