diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java index a0e4d6cf..117bc2e1 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/DepositoryController.java @@ -201,19 +201,22 @@ public class DepositoryController { * @param request * @return */ + @GetMapping("/getWareHouseVisiblePermissionByUser") public RestResponse getWareHouseVisiblePermissionByUser(HttpServletRequest request) { String token = request.getHeader("user-token"); if (token == null) { token = (String) request.getSession().getAttribute("userToken"); } UserByPort userToken = AuthenticationTokenPool.getUserToken(token); + Integer maindeparment = userToken.getMaindeparment(); // 获取当前用户是否存在可见仓库 - List union = roleService.findDepositoryIdForWareHouseVisiblePermissionByUser(userToken); - boolean flag = false; - if (union.size() > 0) { - flag = true; + Map depositoryAllNameAndId = new HashMap<>(); + if (PublicConfig.roleAdminorgList.contains(maindeparment)) { + depositoryAllNameAndId = depositoryService.findAllDepositoryNameAndId(); + } else { + depositoryAllNameAndId = depositoryService.findDepositoryAllNameAndId(userToken); } - return new RestResponse(flag); + return new RestResponse(depositoryAllNameAndId); } /** @@ -1244,6 +1247,7 @@ public class DepositoryController { return new RestResponse(list); } + /** * 获取当前条件下用户管理的仓库 * @@ -1256,6 +1260,54 @@ public class DepositoryController { return new RestResponse(result); } + + /** + * 用于获取出入库的柱状图数据 + * + * @param map 查询数据 + * @param request + * @return + */ + @PostMapping("/getBarChartDataByDateType") + public RestResponse getBarChartDataByDateType(@RequestBody Map map, HttpServletRequest request) { + if (!map.containsKey("echartType")) { + throw new MyException("错误,请指定图表类型"); + } + String echartType = map.get("echartType"); + // 获取要查询的类型(1入库2出库) + String type = map.get("type"); + // 声明要查询时的日期类型 day代表按天,month代表按月 + String dateType = "day"; + + if (map.containsKey("dateType")) { + dateType = map.get("dateType"); + } + Integer depositoryId = -1; + if (map.containsKey("depositoryId")) { + // 如果选择了仓库,则使用选中的仓库 + depositoryId = ObjectFormatUtil.toInteger(map.get("depositoryId")); + } else { + // 如果没选中仓库 + String token = request.getHeader("user-token"); + if (token == null) { + token = (String) request.getSession().getAttribute("userToken"); + } + UserByPort userToken = AuthenticationTokenPool.getUserToken(token); + // 获取当前用户可见的仓库id + List depositoryIdForUser = roleService.findDepositoryIdForUser(userToken); + // 如果存在仓库 + if (depositoryIdForUser != null && depositoryIdForUser.size() > 0) { + // 默认为第一个 + depositoryId = depositoryIdForUser.get(0); + } + } + Map data = new HashMap<>(); + if (depositoryId != -1) { + data = depositoryRecordService.getLineOrBarChartData(depositoryId, type, dateType, echartType); + } + return new RestResponse(data); + } + /** * 用于获取当前仓库的所有子类 * diff --git a/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java b/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java index 0b1fbfe7..36d42b77 100644 --- a/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java +++ b/src/main/java/com/dreamchaser/depository_manage/controller/PageController.java @@ -3943,4 +3943,19 @@ public class PageController { return mv; } + + @GetMapping("/echartForTable") + public ModelAndView echartForTable(String type, String echartType) { + ModelAndView mv = new ModelAndView(); + mv.addObject("type", type); + if ("line".equals(echartType)) { + + mv.setViewName("pages/depository/inEchart/LineChart"); + } else if ("bar".equals(echartType)) { + + mv.setViewName("pages/depository/inEchart/BarChart"); + } + return mv; + } + } diff --git a/src/main/java/com/dreamchaser/depository_manage/service/DepositoryRecordService.java b/src/main/java/com/dreamchaser/depository_manage/service/DepositoryRecordService.java index 5de36f47..b02c77e3 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/DepositoryRecordService.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/DepositoryRecordService.java @@ -500,6 +500,16 @@ public interface DepositoryRecordService { Map createStackedAreaChartSeriesItem(String name, List data); + /** + * 获取折线图数据 + * @param depositoryId 待获取仓库Id + * @param type 查看类型(1入库2出库) + * @param dateType 日期类型(day按天month按月) + * @return + */ + Map getLineOrBarChartData(Integer depositoryId, String type, String dateType, String echartType); + + } diff --git a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java b/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java index fa7539bd..b3a08ca5 100644 --- a/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java +++ b/src/main/java/com/dreamchaser/depository_manage/service/impl/DepositoryRecordServiceImpl.java @@ -5236,7 +5236,6 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { quantity = (double) depositoryRecordMapper.findApplicationInRecordByDate(map) / 100; return quantity; } else { - map.put("state", "已出库"); quantity = (double) depositoryRecordMapper.findApplicationOutRecordByDate(map) / 100; return quantity; } @@ -5833,6 +5832,9 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { return result; } + + + /** * 用于计算当前主记录下的总额与数量 */ @@ -5886,4 +5888,82 @@ public class DepositoryRecordServiceImpl implements DepositoryRecordService { } } + + /** + * 获取折线图数据 + * @param depositoryId 待获取仓库Id + * @param type 查看类型(1入库2出库) + * @param dateType 日期类型(day按天month按月) + * @return + */ + public Map getLineOrBarChartData(Integer depositoryId, String type, String dateType, String echartType) { + + + // 获取至今的日期名称 + List dayNames = new ArrayList<>(); + List dayTimeSpaces = new ArrayList<>(); + if ("month".equals(dateType)) { + //获取获取系统的当前日历对象 + + Map monthBeginToNow = DateUtil.getPreviousMonth(); + + // 获取至今的日期名称 + dayNames = ObjectFormatUtil.objToList(monthBeginToNow.get("monthNames"), String.class); + Collections.reverse(dayNames); + // 获取至今的日期时间戳 + dayTimeSpaces = ObjectFormatUtil.objToList(monthBeginToNow.get("months"), Long.class); + Collections.reverse(dayTimeSpaces); + + } else if ("day".equals(dateType)) { + //获取获取系统的当前日历对象 + Map monthBeginToNow = DateUtil.getMonthBeginToNow(); + // 获取至今的日期名称 + dayNames = ObjectFormatUtil.objToList(monthBeginToNow.get("dayName"), String.class); + // 获取至今的日期时间戳 + dayTimeSpaces = ObjectFormatUtil.objToList(monthBeginToNow.get("dayTimeSpace"), Long.class); + dayTimeSpaces.add(Calendar.getInstance().getTimeInMillis()); + } + // 每天仓库出入库数目 + Map show_data = new HashMap<>(); + Map applicationRecordByDate = getLineOrBarChartDataForApplicationRecord(type, dayTimeSpaces, depositoryId,echartType); + show_data.put("data",applicationRecordByDate); + show_data.put("dayNames",dayNames); + return show_data; + } + + /** + * 获取当前折线图的具体数据 + * @param type 查看类型(1入库2出库) + * @param days 查询日期 + * @param depositoryId 仓库id + * @return + */ + public Map getLineOrBarChartDataForApplicationRecord(String type, List days, Integer depositoryId, String echartType) { + Map map = new HashMap<>(); + if("line".equals(echartType)){ + map.put("type", "line"); + Map areaStyleItem = new HashMap<>(); + map.put("areaStyle", areaStyleItem); + }else if("bar".equals(echartType)){ + map.put("type", "bar"); + Map emphasisItem = new HashMap<>(); + emphasisItem.put("focus", "series"); + map.put("emphasis", emphasisItem); + Map labelItem = new HashMap<>(); + labelItem.put("show", true); + labelItem.put("position", "inside"); + map.put("label", labelItem); + } + int i; + List drCountbyDrName = new ArrayList<>(); + for (i = 0; i < days.size() - 1; i++) { + // 遍历 Map并计算各仓库的入库数 + // 获取一段时间内的库存额度 + Double depositoryRecordByDate = findApplicationRecordByDate(days.get(i + 1), days.get(i), ObjectFormatUtil.toInteger(type), depositoryId); + drCountbyDrName.add(depositoryRecordByDate); + } + map.put("data", drCountbyDrName); + return map; + } + } diff --git a/src/main/java/com/dreamchaser/depository_manage/utils/DateUtil.java b/src/main/java/com/dreamchaser/depository_manage/utils/DateUtil.java index bff2b903..9f7541ea 100644 --- a/src/main/java/com/dreamchaser/depository_manage/utils/DateUtil.java +++ b/src/main/java/com/dreamchaser/depository_manage/utils/DateUtil.java @@ -240,8 +240,9 @@ public class DateUtil { public static Map getPreviousMonth() { Calendar instance = Calendar.getInstance(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); - Map source = new HashMap<>(); + HashMap source = new HashMap<>(); List sourceList = new ArrayList<>(); + List monthNames = new ArrayList<>(); int month = instance.get(Calendar.MONTH) + 1; // 获取下个月 instance.add(Calendar.MONTH, 1); @@ -253,16 +254,19 @@ public class DateUtil { while (month > 0) { instance.set(Calendar.MONTH, month); instance.set(Calendar.DAY_OF_MONTH, -1); - source.put("month", month + "月"); + String monthName = month + "月"; + source.put("month", monthName); + monthNames.add(monthName); months.add(DateTimeByMonthToTimeStamp(formatter.format(instance.getTime()))); month--; - sourceList.add(((HashMap) source).clone()); + sourceList.add(source.clone()); } instance.set(Calendar.MONTH, month); instance.add(Calendar.MONTH, 1); Map map = new HashMap<>(); map.put("months", months); map.put("sourceList", sourceList); + map.put("monthNames", monthNames); return map; } diff --git a/src/main/resources/templates/pages/depository/inEchart/BarChart.html b/src/main/resources/templates/pages/depository/inEchart/BarChart.html new file mode 100644 index 00000000..18f22bc6 --- /dev/null +++ b/src/main/resources/templates/pages/depository/inEchart/BarChart.html @@ -0,0 +1,215 @@ + + + + + 柱状图 + + + + + + + + + + + +
+
+

柱状图

+
+ + + + +
+
+
+
+
+ + + + + + + + diff --git a/src/main/resources/templates/pages/depository/inEchart/LineChart.html b/src/main/resources/templates/pages/depository/inEchart/LineChart.html index 9bc466af..dc87bb57 100644 --- a/src/main/resources/templates/pages/depository/inEchart/LineChart.html +++ b/src/main/resources/templates/pages/depository/inEchart/LineChart.html @@ -2,7 +2,7 @@ - 折线图 + 柱状图 @@ -38,22 +38,23 @@
-
-

折线图

-
- - - -
-
+
+

折线图

+
+ + + + +
+
@@ -62,9 +63,14 @@ diff --git a/src/main/resources/templates/pages/depository/table-in.html b/src/main/resources/templates/pages/depository/table-in.html index 42f63750..a75b7825 100644 --- a/src/main/resources/templates/pages/depository/table-in.html +++ b/src/main/resources/templates/pages/depository/table-in.html @@ -273,7 +273,8 @@ } }); - } else if (obj.event === 'delete') { // 监听删除操作 + } + else if (obj.event === 'delete') { // 监听删除操作 var checkStatus = table.checkStatus('currentTableId') , data = checkStatus.data; var req = {}; @@ -323,13 +324,39 @@ let listItem = `
  • 查看面积图
  • 查看旭日图
  • +
  • 查看折线图
  • +
  • 查看柱状图
`; $("#showEchart").append(listItem) - }else if(obj.event === 'showLineEchart'){ - console.log("showLineEchart") + }else if(obj.event === 'showAreaEchart'){ + console.log("showAreaEchart") }else if(obj.event === "showSunburstEchart"){ console.log("showSunburstEchart") + }else if(obj.event === "showLineEchart"){ + layer.open({ + type: 2, + offset: 'l', + anim: 'slideRight', // 从右往左 + area: ['40%', '100%'], + shade: 0.1, + title: "折线图", + shadeClose: true, + id: 'applicationOutInfoForLeft', + content: '/echartForTable?type=1&echartType=line', + }); + }else if(obj.event === "showBarEchart"){ + layer.open({ + type: 2, + offset: 'l', + anim: 'slideRight', // 从右往左 + area: ['40%', '100%'], + shade: 0.1, + title: "柱状图", + shadeClose: true, + id: 'applicationOutInfoForLeft', + content: '/echartForTable?type=1&echartType=bar', + }); } }); diff --git a/src/main/resources/templates/pages/depository/table-out.html b/src/main/resources/templates/pages/depository/table-out.html index 480c1bcc..dc1c08c9 100644 --- a/src/main/resources/templates/pages/depository/table-out.html +++ b/src/main/resources/templates/pages/depository/table-out.html @@ -248,6 +248,7 @@ defaultToolbar: ['filter', 'exports', 'print',{ title: '图表展示' ,layEvent: 'showEchart' + ,id:"showEchart" ,icon: 'layui-icon-chart-screen' }], //这里layui和thymeleaf冲突了,要加个空格 @@ -482,14 +483,41 @@ let listItem = `
  • 查看面积图
  • 查看旭日图
  • +
  • 查看折线图
  • +
  • 查看柱状图
`; $("#showEchart").append(listItem) - }else if(obj.event === 'showLineEchart'){ - console.log("showLineEchart") + }else if(obj.event === 'showAreaEchart'){ + console.log("showAreaEchart") }else if(obj.event === "showSunburstEchart"){ console.log("showSunburstEchart") + }else if(obj.event === "showLineEchart"){ + layer.open({ + type: 2, + offset: 'l', + anim: 'slideRight', // 从右往左 + area: ['40%', '100%'], + shade: 0.1, + title: "折线图", + shadeClose: true, + id: 'applicationOutInfoForLeft', + content: '/echartForTable?type=2&echartType=line', + }); + }else if(obj.event === "showBarEchart"){ + layer.open({ + type: 2, + offset: 'l', + anim: 'slideRight', // 从右往左 + area: ['40%', '100%'], + shade: 0.1, + title: "柱状图", + shadeClose: true, + id: 'applicationOutInfoForLeft', + content: '/echartForTable?type=2&echartType=bar', + }); } + }); table.on('rowDouble(currentTableFilter)', function (obj) { @@ -572,9 +600,6 @@ } }); - $('body').on('click', '[data-refresh]', function () { - location.reload(); - }) }); diff --git a/src/test/java/com/dreamchaser/depository_manage/BarChartTest.java b/src/test/java/com/dreamchaser/depository_manage/BarChartTest.java index b80d3d1a..8ac21b17 100644 --- a/src/test/java/com/dreamchaser/depository_manage/BarChartTest.java +++ b/src/test/java/com/dreamchaser/depository_manage/BarChartTest.java @@ -78,23 +78,13 @@ public class BarChartTest { map.put("password", "123456789"); map.put("captcha", "528765"); map.put("captchaId", "UksBSXVFy0xVZbXUC4dQ"); - JSONObject jsonObject = PublicConfig.baseLogin(map); +// JSONObject jsonObject = PublicConfig.baseLogin(map); // UserByPort userByPort = JSONObject.toJavaObject((JSONObject) jsonObject.get("usercont"), UserByPort.class); - Map barChartData = getBarChartData("2", 41); + Map barChartData = getBarChartDataByDateType(28,"1", "day"); System.out.println(barChartData); } - /** - * 用于获取出入库对照柱状图 - * - * @return - */ - Map getBarChartData(String type, Integer depositoryId) { - // 定义CompletionService - Map barChartData = getBarChartData(depositoryId, type); - return barChartData; - } /** @@ -102,69 +92,66 @@ public class BarChartTest { * * @param depositoryId 要查看的仓库id * @param type 类型(1入库2出库) + * @param dateType 日期类型(month按月,day按天(月初至今)) * @return */ - public Map getBarChartData(Integer depositoryId, String type) { - - //获取获取系统的当前日历对象 - - Map monthBeginToNow = DateUtil.getMonthBeginToNow(); - + public Map getBarChartDataByDateType(Integer depositoryId, String type, String dateType) { // 获取至今的日期名称 - List dayNames = ObjectFormatUtil.objToList(monthBeginToNow.get("dayName"), String.class); - // 获取至今的日期时间戳 - List dayTimeSpaces = ObjectFormatUtil.objToList(monthBeginToNow.get("dayTimeSpace"), Long.class); - // 定义线程 + List dayNames = new ArrayList<>(); + List dayTimeSpaces = new ArrayList<>(); + if ("month".equals(dateType)) { + //获取获取系统的当前日历对象 + + Map monthBeginToNow = DateUtil.getPreviousMonth(); + + // 获取至今的日期名称 + dayNames = ObjectFormatUtil.objToList(monthBeginToNow.get("monthNames"), String.class); + Collections.reverse(dayNames); + // 获取至今的日期时间戳 + dayTimeSpaces = ObjectFormatUtil.objToList(monthBeginToNow.get("months"), Long.class); + Collections.reverse(dayTimeSpaces); + + } else if ("day".equals(dateType)) { + //获取获取系统的当前日历对象 + Map monthBeginToNow = DateUtil.getMonthBeginToNow(); + // 获取至今的日期名称 + dayNames = ObjectFormatUtil.objToList(monthBeginToNow.get("dayName"), String.class); + // 获取至今的日期时间戳 + dayTimeSpaces = ObjectFormatUtil.objToList(monthBeginToNow.get("dayTimeSpace"), Long.class); + dayTimeSpaces.add(Calendar.getInstance().getTimeInMillis()); + } // 每天各仓库入库数目 Map show_data = new HashMap<>(); - getBarChartDataForApplicationRecord getApplicationRecordByDate = new getBarChartDataForApplicationRecord(type, depositoryId, dayTimeSpaces); - try { - Object call = getApplicationRecordByDate.call(); - show_data.put("data", call); - } catch (Exception e) { - e.printStackTrace(); - } - show_data.put("dayNames",dayNames); + Map data = getBarChartDataForApplicationRecord(type, depositoryId, dayTimeSpaces); + show_data.put("data", data); + show_data.put("dayNames", dayNames); return show_data; } /** * 根据日期获取出入库的数量(用于柱状图) */ - @Data - class getBarChartDataForApplicationRecord implements Callable { - Integer depositoryId; - List days; - String type; - - - getBarChartDataForApplicationRecord(String type, Integer depositoryId, List days) { - this.days = days; - this.type = type; - this.depositoryId = depositoryId; - } - - @Override - public Object call() throws Exception { - Map map = new HashMap<>(); - map.put("type", "bar"); - Map emphasisItem = new HashMap<>(); - emphasisItem.put("focus", "series"); - map.put("emphasis", emphasisItem); - Map labelItem = new HashMap<>(); - labelItem.put("show", true); - labelItem.put("position", "inside"); - map.put("label", labelItem); - int i; - List drCountbyDrName = new ArrayList<>(); - for (i = days.size() - 1; i > 0; i--) { - // 遍历 Map并计算各仓库的入库数 - // 获取一段时间内的库存额度 - Double depositoryRecordByDate1 = depositoryRecordService.findApplicationRecordByDate( days.get(i),days.get(i - 1), ObjectFormatUtil.toInteger(type), depositoryId); - drCountbyDrName.add(depositoryRecordByDate1); - } - map.put("data", drCountbyDrName); - return map; + public Map getBarChartDataForApplicationRecord(String type, Integer depositoryId, List days) { + Map map = new HashMap<>(); + map.put("type", "bar"); + Map emphasisItem = new HashMap<>(); + emphasisItem.put("focus", "series"); + map.put("emphasis", emphasisItem); + Map labelItem = new HashMap<>(); + labelItem.put("show", true); + labelItem.put("position", "inside"); + map.put("label", labelItem); + int i; + List drCountbyDrName = new ArrayList<>(); + + for (i = 0; i < days.size() - 1; i++) { + // 遍历 Map并计算各仓库的入库数 + // 获取一段时间内的库存额度 + Double depositoryRecordByDate = depositoryRecordService.findApplicationRecordByDate(days.get(i + 1), days.get(i), ObjectFormatUtil.toInteger(type), depositoryId); + drCountbyDrName.add(depositoryRecordByDate); } + map.put("data", drCountbyDrName); + return map; } + } diff --git a/src/test/java/com/dreamchaser/depository_manage/LineChartTest.java b/src/test/java/com/dreamchaser/depository_manage/LineChartTest.java index 3cde61fb..5ae53471 100644 --- a/src/test/java/com/dreamchaser/depository_manage/LineChartTest.java +++ b/src/test/java/com/dreamchaser/depository_manage/LineChartTest.java @@ -1,24 +1,18 @@ package com.dreamchaser.depository_manage; -import com.alibaba.fastjson.JSONObject; -import com.dreamchaser.depository_manage.config.PublicConfig; -import com.dreamchaser.depository_manage.entity.UserByPort; import com.dreamchaser.depository_manage.service.DepositoryRecordService; import com.dreamchaser.depository_manage.service.DepositoryService; import com.dreamchaser.depository_manage.service.MaterialService; import com.dreamchaser.depository_manage.service.MaterialTypeService; import com.dreamchaser.depository_manage.utils.DateUtil; import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; -import lombok.Data; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import java.text.SimpleDateFormat; import java.util.*; -import java.util.concurrent.*; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @RunWith(SpringRunner.class) @@ -37,140 +31,87 @@ public class LineChartTest { @Autowired DepositoryService depositoryService; - /** - * 获取本月之前的月份 - * - * @return - */ - public static Map getPreviousMonth() { - Calendar instance = Calendar.getInstance(); - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); - Map source = new HashMap<>(); - List sourceList = new ArrayList<>(); - int month = instance.get(Calendar.MONTH) + 1; - // 获取下个月 - instance.add(Calendar.MONTH, 1); - Long nextMonth = DateUtil.DateTimeByMonthToTimeStamp(formatter.format(instance.getTime())); - ArrayList months = new ArrayList<>(); - months.add(nextMonth); - instance.add(Calendar.MONTH, -1); - - while (month > 0) { - instance.set(Calendar.MONTH, month); - instance.set(Calendar.DAY_OF_MONTH, -1); - source.put("month", month + "月"); - months.add(DateUtil.DateTimeByMonthToTimeStamp(formatter.format(instance.getTime()))); - month--; - sourceList.add(((HashMap) source).clone()); - } - instance.set(Calendar.MONTH, month); - instance.add(Calendar.MONTH, 1); - Map map = new HashMap<>(); - map.put("months", months); - map.put("sourceList", sourceList); - return map; - } @Test public void main() { - UserByPort userByPort = PublicConfig.FindUserById(87, null,null); - Map depositoryAllNameAndId = depositoryService.findDepositoryAllNameAndId(userByPort); - Map barChartData = getBarChartData(depositoryAllNameAndId, "1"); - System.out.println(JSONObject.toJSONString(barChartData)); + Map day = getLineOrBarChartData(28, "1", "day","bar"); + System.out.println(day); } - // 获取柱状图数据 - public Map getBarChartData(Map depositoryAllNameAndId, String type) { - - // 获取遍历器 - Iterator it = depositoryAllNameAndId.keySet().iterator(); - //获取获取系统的当前日历对象 - Calendar instance = Calendar.getInstance(); - // 获取日期 - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); - int now = instance.get(Calendar.DAY_OF_WEEK) - 1 == 0 ? 7 : instance.get(Calendar.DAY_OF_WEEK) - 1; - List days = new ArrayList<>(); // 周一至今的每天 - instance.add(Calendar.DATE, 1); - days.add(DateUtil.DateTimeByDayToTimeStamp(formatter.format(instance.getTime()))); - instance.add(Calendar.DATE, -1); - days.add(DateUtil.DateTimeByDayToTimeStamp(formatter.format(instance.getTime()))); - while (now - 1 > 0) { - now--; - instance.add(Calendar.DATE, -1); - Long format = DateUtil.DateTimeByDayToTimeStamp(formatter.format(instance.getTime())); - days.add(format); - } - // 定义线程 - int threadSize = depositoryAllNameAndId.size(); - ExecutorService exs = new ThreadPoolExecutor(threadSize, threadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(threadSize)); - - // 结果集 - List> futureList = new ArrayList>(); - // 1.定义CompletionService - CompletionService completionService = new ExecutorCompletionService(exs); - - // 每天各仓库入库数目 - Map show_data = new HashMap<>(); - while (it.hasNext()) { - Object next = it.next(); - getApplicationRecordByDate getApplicationRecordByDate = new getApplicationRecordByDate(type, next.toString(), days, depositoryAllNameAndId); - Future future = completionService.submit(getApplicationRecordByDate); - futureList.add(future); - } - - for (int i = 0; i < depositoryAllNameAndId.size(); i++) { - Object result = null; - try { - result = completionService.take().get(); - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - show_data.putAll((Map) result); + /** + * 获取折线图数据 + * @param depositoryId 待获取仓库Id + * @param type 查看类型(1入库2出库) + * @param dateType 日期类型(day按天month按月) + * @return + */ + public Map getLineOrBarChartData(Integer depositoryId, String type, String dateType, String echartType) { + + + // 获取至今的日期名称 + List dayNames = new ArrayList<>(); + List dayTimeSpaces = new ArrayList<>(); + if ("month".equals(dateType)) { + //获取获取系统的当前日历对象 + + Map monthBeginToNow = DateUtil.getPreviousMonth(); + + // 获取至今的日期名称 + dayNames = ObjectFormatUtil.objToList(monthBeginToNow.get("monthNames"), String.class); + Collections.reverse(dayNames); + // 获取至今的日期时间戳 + dayTimeSpaces = ObjectFormatUtil.objToList(monthBeginToNow.get("months"), Long.class); + Collections.reverse(dayTimeSpaces); + + } else if ("day".equals(dateType)) { + //获取获取系统的当前日历对象 + Map monthBeginToNow = DateUtil.getMonthBeginToNow(); + // 获取至今的日期名称 + dayNames = ObjectFormatUtil.objToList(monthBeginToNow.get("dayName"), String.class); + // 获取至今的日期时间戳 + dayTimeSpaces = ObjectFormatUtil.objToList(monthBeginToNow.get("dayTimeSpace"), Long.class); + dayTimeSpaces.add(Calendar.getInstance().getTimeInMillis()); } - + // 每天仓库出入库数目 + Map show_data = new HashMap<>(); + Map applicationRecordByDate = getLineOrBarChartDataForApplicationRecord(type, dayTimeSpaces, depositoryId,echartType); + show_data.put("data",applicationRecordByDate); + show_data.put("dayNames",dayNames); return show_data; } /** - * 根据日期获取出入库的数量 + * 获取当前折线图的具体数据 + * @param type 查看类型(1入库2出库) + * @param days 查询日期 + * @param depositoryId 仓库id + * @return */ - @Data - class getApplicationRecordByDate implements Callable { - String key; - List days; - Map depositoryAllNameAndId; - - - String type; - - - getApplicationRecordByDate(String type, String key, List days, Map depositoryAllNameAndId) { - this.key = key; - this.depositoryAllNameAndId = depositoryAllNameAndId; - this.days = days; - this.type = type; - } - - @Override - public Object call() throws Exception { - Map result = new HashMap<>(); + public Map getLineOrBarChartDataForApplicationRecord(String type, List days, Integer depositoryId, String echartType) { Map map = new HashMap<>(); - map.put("type", "line"); - Map areaStyleItem = new HashMap<>(); - map.put("areaStyle", areaStyleItem); + if("line".equals(echartType)){ + map.put("type", "line"); + Map areaStyleItem = new HashMap<>(); + map.put("areaStyle", areaStyleItem); + }else if("bar".equals(echartType)){ + map.put("type", "bar"); + Map emphasisItem = new HashMap<>(); + emphasisItem.put("focus", "series"); + map.put("emphasis", emphasisItem); + Map labelItem = new HashMap<>(); + labelItem.put("show", true); + labelItem.put("position", "inside"); + map.put("label", labelItem); + } int i; List drCountbyDrName = new ArrayList<>(); - - Integer val = (Integer) depositoryAllNameAndId.get(key); - for (i = days.size() - 1; i > 0; i--) { + for (i = 0; i < days.size() - 1; i++) { // 遍历 Map并计算各仓库的入库数 // 获取一段时间内的库存额度 - Double depositoryRecordByDate1 = depositoryRecordService.findApplicationRecordByDate(days.get(i - 1), days.get(i), ObjectFormatUtil.toInteger(type), val); - drCountbyDrName.add(depositoryRecordByDate1); + Double depositoryRecordByDate = depositoryRecordService.findApplicationRecordByDate(days.get(i + 1), days.get(i), ObjectFormatUtil.toInteger(type), depositoryId); + drCountbyDrName.add(depositoryRecordByDate); } map.put("data", drCountbyDrName); - result.put(val,map); - return result; - } + return map; } }