From 0af0ca95e135a34f1d401b39769c6db9a74befaa Mon Sep 17 00:00:00 2001 From: xiangwb Date: Wed, 4 Jul 2018 20:26:22 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95=E7=99=BB=E5=87=BA=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E7=BB=9F=E8=AE=A1=E5=88=86=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/xwbing/demo/CountDemo.java | 1 - .../domain/entity/sys/SysUserLoginInOut.java | 1 + .../mapper/sys/SysUserLoginInOutMapper.java | 2 + .../service/sys/SysUserLoginInOutService.java | 97 +++++++++++++++++++ .../mapper/sys/SysUserLoginInOut.xml | 14 +++ .../sys/SysUserLoginInOutControl.java | 16 +++ 6 files changed, 130 insertions(+), 1 deletion(-) diff --git a/boot-service/src/main/java/com/xwbing/demo/CountDemo.java b/boot-service/src/main/java/com/xwbing/demo/CountDemo.java index d3e1258..e599b1b 100644 --- a/boot-service/src/main/java/com/xwbing/demo/CountDemo.java +++ b/boot-service/src/main/java/com/xwbing/demo/CountDemo.java @@ -62,7 +62,6 @@ public class CountDemo { * @param startDate * @param endDate * @return - * @throws Exception */ public static Map barOrLine(String startDate, String endDate, List list) { Map result = new HashMap<>(); diff --git a/boot-service/src/main/java/com/xwbing/domain/entity/sys/SysUserLoginInOut.java b/boot-service/src/main/java/com/xwbing/domain/entity/sys/SysUserLoginInOut.java index e58f99e..e07dd94 100644 --- a/boot-service/src/main/java/com/xwbing/domain/entity/sys/SysUserLoginInOut.java +++ b/boot-service/src/main/java/com/xwbing/domain/entity/sys/SysUserLoginInOut.java @@ -28,4 +28,5 @@ public class SysUserLoginInOut extends BaseEntity { private transient String inoutTypeName; private transient String startDate; private transient String endDate; + private transient int count; } diff --git a/boot-service/src/main/java/com/xwbing/domain/mapper/sys/SysUserLoginInOutMapper.java b/boot-service/src/main/java/com/xwbing/domain/mapper/sys/SysUserLoginInOutMapper.java index 98df2d1..7e2277f 100644 --- a/boot-service/src/main/java/com/xwbing/domain/mapper/sys/SysUserLoginInOutMapper.java +++ b/boot-service/src/main/java/com/xwbing/domain/mapper/sys/SysUserLoginInOutMapper.java @@ -14,4 +14,6 @@ import java.util.Map; */ public interface SysUserLoginInOutMapper extends BaseMapper { List findByInoutType(Map map); + + List countByType(Map map); } diff --git a/boot-service/src/main/java/com/xwbing/service/sys/SysUserLoginInOutService.java b/boot-service/src/main/java/com/xwbing/service/sys/SysUserLoginInOutService.java index 7d6e71d..e8ab76f 100644 --- a/boot-service/src/main/java/com/xwbing/service/sys/SysUserLoginInOutService.java +++ b/boot-service/src/main/java/com/xwbing/service/sys/SysUserLoginInOutService.java @@ -1,10 +1,13 @@ package com.xwbing.service.sys; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.xwbing.constant.CommonEnum; import com.xwbing.domain.entity.sys.SysUserLoginInOut; import com.xwbing.domain.mapper.sys.SysUserLoginInOutMapper; +import com.xwbing.util.DateUtil2; import com.xwbing.util.Pagination; import com.xwbing.util.RestMessage; import org.apache.commons.collections.CollectionUtils; @@ -16,6 +19,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 项目名称: boot-module-demo @@ -75,4 +79,97 @@ public class SysUserLoginInOutService { return page.result(page, pageInfo); } + /** + * 登录登出饼图 + * + * @param startDate + * @param endDate + * @return + */ + public JSONArray pie(String startDate, String endDate) { + Map map = new HashMap<>(); + if (StringUtils.isNotEmpty(startDate)) { + map.put("startDate", startDate + " 00:00:00"); + } + if (StringUtils.isNotEmpty(endDate)) { + map.put("endDate", endDate + " 23:59:59"); + } + List list = loginInOutMapper.countByType(map); + int in = 0; + int out = 0; + for (SysUserLoginInOut inOut : list) { + if (inOut.getInoutType() == 1) { + in = inOut.getCount(); + } else { + out = inOut.getCount(); + } + } + JSONArray result = new JSONArray(); + JSONObject obj = new JSONObject(); + obj.put("name", "in"); + obj.put("value", in); + result.add(obj); + obj = new JSONObject(); + obj.put("name", out); + obj.put("value", out); + return result; + } + + /** + * 登录登出柱状图 + * + * @param startDate + * @param endDate + * @return + */ + public Map bar(String startDate, String endDate) { + Map result = new HashMap<>(); + //统计时间 + List days = DateUtil2.listDate(startDate, endDate); + result.put("xAxis", days); + //统计数据 + Map map = new HashMap<>(); + if (StringUtils.isNotEmpty(startDate)) { + map.put("startDate", startDate + " 00:00:00"); + } + if (StringUtils.isNotEmpty(endDate)) { + map.put("endDate", endDate + " 23:59:59"); + } + List list = loginInOutMapper.findByInoutType(map); + JSONArray in = new JSONArray(); + JSONArray out = new JSONArray(); + if (CollectionUtils.isNotEmpty(list)) { + Map> collect = list.stream().peek(obj -> obj.setRecordTime(obj.getRecordTime().substring(0, 10))).collect(Collectors.groupingBy(SysUserLoginInOut::getRecordTime)); + days.forEach(day -> { + List sample = collect.get(day); + if (CollectionUtils.isNotEmpty(sample)) { + int sumIn = sample.stream().filter(obj -> obj.getInoutType() == 1).mapToInt(SysUserLoginInOut::getCount).sum(); + int sumOut = sample.stream().filter(obj -> obj.getInoutType() == 2).mapToInt(SysUserLoginInOut::getCount).sum(); + in.add(sumIn); + out.add(sumOut); + } else { + in.add(0); + out.add(0); + } + }); + + } else { + days.forEach(day -> { + in.add(0); + out.add(0); + }); + } + JSONArray series = new JSONArray(); + JSONObject obj = new JSONObject(); + obj.put("name", "in"); + obj.put("data", in); + series.add(obj); + obj = new JSONObject(); + obj.put("name", "out"); + obj.put("data", out); + series.add(obj); + result.put("series", series); + return result; + } + } diff --git a/boot-service/src/main/resources/mapper/sys/SysUserLoginInOut.xml b/boot-service/src/main/resources/mapper/sys/SysUserLoginInOut.xml index 6f758f6..a75223c 100644 --- a/boot-service/src/main/resources/mapper/sys/SysUserLoginInOut.xml +++ b/boot-service/src/main/resources/mapper/sys/SysUserLoginInOut.xml @@ -65,5 +65,19 @@ ORDER BY a.create_time DESC + \ No newline at end of file diff --git a/boot-web/src/main/java/com/xwbing/controller/sys/SysUserLoginInOutControl.java b/boot-web/src/main/java/com/xwbing/controller/sys/SysUserLoginInOutControl.java index 147b9df..99ced96 100644 --- a/boot-web/src/main/java/com/xwbing/controller/sys/SysUserLoginInOutControl.java +++ b/boot-web/src/main/java/com/xwbing/controller/sys/SysUserLoginInOutControl.java @@ -1,5 +1,6 @@ package com.xwbing.controller.sys; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.xwbing.annotation.LogInfo; import com.xwbing.domain.entity.vo.PageSysUserLoginInOutVo; @@ -17,6 +18,7 @@ import org.springframework.web.bind.annotation.RestController; import springfox.documentation.annotations.ApiIgnore; import javax.annotation.Resource; +import java.util.Map; /** * 项目名称: boot-module-demo @@ -42,4 +44,18 @@ public class SysUserLoginInOutControl { Pagination pagination = inOutService.page(inout, startDate, endDate, page); return JsonResult.toJSONObj(pagination, "获取列表成功"); } + + @LogInfo("获取饼图数据") + @GetMapping("pie") + public JSONObject pie(@RequestParam(required = false) String startDate, @RequestParam(required = false) String endDate) { + JSONArray pie = inOutService.pie(startDate, endDate); + return JsonResult.toJSONObj(pie, ""); + } + + @LogInfo("获取柱状图数据") + @GetMapping("bar") + public JSONObject bar(@RequestParam(required = false) String startDate, @RequestParam(required = false) String endDate) { + Map bar = inOutService.bar(startDate, endDate); + return JsonResult.toJSONObj(bar, ""); + } }