From 4f113d1862ee978e7d0756f31af79ad73b1dc6d7 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期四, 12 九月 2024 16:33:39 +0800
Subject: [PATCH] #
---
zy-asrs-admin/package.json | 1
zy-asrs-framework/src/main/java/com/zy/asrs/framework/common/DateUtils.java | 20 +++
zy-asrs-admin/package-lock.json | 45 +++++++
zy-asrs-admin/src/views/HomeView.vue | 142 +++++++++++++++++++++++
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/EChartController.java | 114 +++++++++++++++++++
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/echart/EChartLineBean.java | 14 ++
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/echart/EChartPieBean.java | 12 ++
7 files changed, 346 insertions(+), 2 deletions(-)
diff --git a/zy-asrs-admin/package-lock.json b/zy-asrs-admin/package-lock.json
index a3d8b08..08aaa64 100644
--- a/zy-asrs-admin/package-lock.json
+++ b/zy-asrs-admin/package-lock.json
@@ -12,6 +12,7 @@
"@vitejs/plugin-vue-jsx": "^4.0.0",
"ant-design-vue": "^4.2.3",
"axios": "^1.7.2",
+ "echarts": "^5.5.1",
"pinia": "^2.1.7",
"pixi.js": "^5.3.12",
"vue": "^3.4.29",
@@ -1910,6 +1911,15 @@
"resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz",
"integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ=="
},
+ "node_modules/echarts": {
+ "version": "5.5.1",
+ "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.5.1.tgz",
+ "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==",
+ "dependencies": {
+ "tslib": "2.3.0",
+ "zrender": "5.6.0"
+ }
+ },
"node_modules/electron-to-chromium": {
"version": "1.4.812",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.812.tgz",
@@ -2637,6 +2647,11 @@
"node": ">=4"
}
},
+ "node_modules/tslib": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
+ "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+ },
"node_modules/update-browserslist-db": {
"version": "1.0.16",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz",
@@ -2800,6 +2815,14 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+ },
+ "node_modules/zrender": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.6.0.tgz",
+ "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==",
+ "dependencies": {
+ "tslib": "2.3.0"
+ }
}
},
"dependencies": {
@@ -4127,6 +4150,15 @@
"resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz",
"integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ=="
},
+ "echarts": {
+ "version": "5.5.1",
+ "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.5.1.tgz",
+ "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==",
+ "requires": {
+ "tslib": "2.3.0",
+ "zrender": "5.6.0"
+ }
+ },
"electron-to-chromium": {
"version": "1.4.812",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.812.tgz",
@@ -4619,6 +4651,11 @@
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
},
+ "tslib": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
+ "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+ },
"update-browserslist-db": {
"version": "1.0.16",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz",
@@ -4696,6 +4733,14 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+ },
+ "zrender": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.6.0.tgz",
+ "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==",
+ "requires": {
+ "tslib": "2.3.0"
+ }
}
}
}
diff --git a/zy-asrs-admin/package.json b/zy-asrs-admin/package.json
index ec9100c..6a4b1d6 100644
--- a/zy-asrs-admin/package.json
+++ b/zy-asrs-admin/package.json
@@ -13,6 +13,7 @@
"@vitejs/plugin-vue-jsx": "^4.0.0",
"ant-design-vue": "^4.2.3",
"axios": "^1.7.2",
+ "echarts": "^5.5.1",
"pinia": "^2.1.7",
"pixi.js": "^5.3.12",
"vue": "^3.4.29",
diff --git a/zy-asrs-admin/src/views/HomeView.vue b/zy-asrs-admin/src/views/HomeView.vue
index 6ece80c..42278e5 100644
--- a/zy-asrs-admin/src/views/HomeView.vue
+++ b/zy-asrs-admin/src/views/HomeView.vue
@@ -1,6 +1,140 @@
<script setup>
-import { getCurrentInstance, ref } from 'vue';
+import { getCurrentInstance, ref, onMounted } from 'vue';
+import { get, post } from '@/utils/request.js'
+import * as echarts from "echarts";
const context = getCurrentInstance()?.appContext.config.globalProperties;
+
+let chartPie = null;
+const chartPieContainer = ref(null);
+let chartLine = null;
+const chartLineContainer = ref(null);
+
+function getPieOptions() {
+ post('/api/charts/loc/use', {}).then(resp => {
+ let result = resp.data;
+ if (result.code == 200) {
+ let data = result.data;
+
+ let pieOptions = {
+ title: {
+ text: '搴撲綅浣跨敤姣斾緥',
+ left: 'center',
+ top: '0%'
+ },
+ tooltip: {
+ trigger: 'item',
+ top: '0%'
+ },
+ grid: {
+ top: '0%',
+ left: '3%',
+ right: '4%',
+ bottom: '3%',
+ containLabel: true
+ },
+ // legend: {
+ // orient: 'vertical',
+ // left: 'left'
+ // },
+ series: [
+ {
+ type: 'pie',
+ radius: '70%',
+ data: data,
+ emphasis: {
+ itemStyle: {
+ shadowBlur: 10,
+ shadowOffsetX: 0,
+ shadowColor: 'rgba(0, 0, 0, 0.5)'
+ }
+ }
+ }
+ ]
+ }
+
+ chartPie.setOption(pieOptions);
+
+ }
+ })
+}
+
+function getLineOptions() {
+ post('/api/charts/loc/line', {}).then(resp => {
+ let result = resp.data;
+ if (result.code == 200) {
+ let data = result.data;
+
+ let lineOptions = {
+ title: {
+ text: '鏃ュ嚭鍏ュ簱鏁伴噺',
+ left: 'center',
+ },
+ tooltip: {
+ trigger: 'axis'
+ },
+ legend: {
+ data: ['鍏ュ簱鏁伴噺', '鍑哄簱鏁伴噺'],
+ top: '10%'
+ },
+ grid: {
+ top: '20%',
+ left: '3%',
+ right: '4%',
+ bottom: '3%',
+ containLabel: true
+ },
+ xAxis: {
+ type: 'category',
+ boundaryGap: false,
+ data: data.days
+ },
+ yAxis: {
+ type: 'value'
+ },
+ series: [
+ {
+ name: '鍏ュ簱鏁伴噺',
+ type: 'line',
+ data: data.in.value,
+ smooth: true
+ },
+ {
+ name: '鍑哄簱鏁伴噺',
+ type: 'line',
+ data: data.out.value,
+ smooth: true
+ }
+ ]
+ }
+
+ console.log(lineOptions);
+
+ chartLine.setOption(lineOptions);
+
+ }
+ })
+}
+
+function initChart() {
+ chartPie = echarts.init(chartPieContainer.value);
+ chartPie.setOption({
+ type: Object,
+ required: true
+ })
+
+ chartLine = echarts.init(chartLineContainer.value);
+ chartLine.setOption({
+ type: Object,
+ required: true
+ })
+}
+
+onMounted(() => {
+ initChart()
+ getPieOptions()
+ getLineOptions()
+})
+
</script>
<script>
@@ -10,5 +144,9 @@
</script>
<template>
- Hello World
+ <div style="display: flex;">
+ <div ref="chartPieContainer" style="width: 49%;height: 400px;"></div>
+ <div ref="chartLineContainer" style="width: 49%;height: 400px;"></div>
+ <!-- <EChartView ref="chartChild2" /> -->
+ </div>
</template>
diff --git a/zy-asrs-framework/src/main/java/com/zy/asrs/framework/common/DateUtils.java b/zy-asrs-framework/src/main/java/com/zy/asrs/framework/common/DateUtils.java
index 3145824..471ac2c 100644
--- a/zy-asrs-framework/src/main/java/com/zy/asrs/framework/common/DateUtils.java
+++ b/zy-asrs-framework/src/main/java/com/zy/asrs/framework/common/DateUtils.java
@@ -120,6 +120,26 @@
return calculate(date, val, timeUnit, false);
}
+ public static Date getStartOfDay(Date date) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ calendar.set(Calendar.HOUR_OF_DAY, 0);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+ return calendar.getTime();
+ }
+
+ public static Date getEndOfDay(Date date) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(date);
+ calendar.set(Calendar.HOUR_OF_DAY, 23);
+ calendar.set(Calendar.MINUTE, 59);
+ calendar.set(Calendar.SECOND, 59);
+ calendar.set(Calendar.MILLISECOND, 999);
+ return calendar.getTime();
+ }
+
/**
* 鏃堕棿瀵硅薄DateEntity
*/
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/EChartController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/EChartController.java
new file mode 100644
index 0000000..9e1a1dd
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/EChartController.java
@@ -0,0 +1,114 @@
+package com.zy.asrs.wms.asrs.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.asrs.framework.common.DateUtils;
+import com.zy.asrs.framework.common.R;
+import com.zy.asrs.wms.asrs.entity.Loc;
+import com.zy.asrs.wms.asrs.entity.TaskLog;
+import com.zy.asrs.wms.asrs.entity.echart.EChartLineBean;
+import com.zy.asrs.wms.asrs.entity.echart.EChartPieBean;
+import com.zy.asrs.wms.asrs.entity.enums.LocStsType;
+import com.zy.asrs.wms.asrs.service.LocService;
+import com.zy.asrs.wms.asrs.service.TaskLogService;
+import com.zy.asrs.wms.system.controller.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+@RestController
+@RequestMapping("/api")
+public class EChartController extends BaseController {
+
+ @Autowired
+ private LocService locService;
+ @Autowired
+ private TaskLogService taskLogService;
+
+ @PostMapping("/charts/loc/use")
+ public R locUse(){
+ List<EChartPieBean> list = new ArrayList<>();
+
+ long fqty = locService.count(new LambdaQueryWrapper<Loc>().in(Loc::getLocStsId, LocStsType.F.val(), LocStsType.D.val()));
+ long oqty = locService.count(new LambdaQueryWrapper<Loc>().in(Loc::getLocStsId, LocStsType.O.val()));
+ long uqty = locService.count(new LambdaQueryWrapper<Loc>().in(Loc::getLocStsId, LocStsType.S.val(), LocStsType.R.val()));
+ long xqty = locService.count(new LambdaQueryWrapper<Loc>().in(Loc::getLocStsId, LocStsType.X.val()));
+
+ EChartPieBean fbean = new EChartPieBean();
+ fbean.setName("鍦ㄥ簱搴撲綅");
+ fbean.setValue(fqty);
+ list.add(fbean);
+
+ EChartPieBean obean = new EChartPieBean();
+ obean.setName("绌哄簱浣�");
+ obean.setValue(oqty);
+ list.add(obean);
+
+ EChartPieBean ubean = new EChartPieBean();
+ ubean.setName("浣跨敤搴撲綅");
+ ubean.setValue(uqty);
+ list.add(ubean);
+
+ EChartPieBean xbean = new EChartPieBean();
+ xbean.setName("绂佺敤搴撲綅");
+ xbean.setValue(xqty);
+ list.add(xbean);
+ return R.ok(list);
+ }
+
+ @PostMapping("/charts/loc/line")
+ public R locIoLineCharts(){
+ SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
+ Calendar calendar = Calendar.getInstance();
+ calendar.add(Calendar.DATE, -12);
+
+ ArrayList<String> days = new ArrayList<>();
+ ArrayList<Long> inData = new ArrayList<>();
+ ArrayList<Long> outData = new ArrayList<>();
+ for (int i = 0; i < 12; i++) {
+ calendar.add(Calendar.DATE, 1);
+ Date time = calendar.getTime();
+ days.add(sf.format(time));
+
+ Date startOfDay = DateUtils.getStartOfDay(time);
+ Date endOfDay = DateUtils.getEndOfDay(time);
+
+ LambdaQueryWrapper<TaskLog> inWrapper = new LambdaQueryWrapper<TaskLog>()
+ .ge(TaskLog::getCreateTime, startOfDay)
+ .le(TaskLog::getCreateTime, endOfDay)
+ .eq(TaskLog::getTaskSts, 100)
+ .in(TaskLog::getTaskType, 1, 53, 57);
+
+ LambdaQueryWrapper<TaskLog> outWrapper = new LambdaQueryWrapper<TaskLog>()
+ .ge(TaskLog::getCreateTime, startOfDay)
+ .le(TaskLog::getCreateTime, endOfDay)
+ .eq(TaskLog::getTaskSts, 200)
+ .in(TaskLog::getTaskType, 101, 103, 107);
+
+ long inCount = taskLogService.count(inWrapper);
+ long outCount = taskLogService.count(outWrapper);
+
+ inData.add(inCount);
+ outData.add(outCount);
+ }
+
+ EChartLineBean inBean = new EChartLineBean();
+ inBean.setName("鍏ュ簱鏁伴噺");
+ inBean.setValue(inData);
+
+ EChartLineBean outBean = new EChartLineBean();
+ outBean.setName("鍑哄簱鏁伴噺");
+ outBean.setValue(outData);
+
+ HashMap<String, Object> map = new HashMap<>();
+ map.put("in", inBean);
+ map.put("out", outBean);
+ map.put("days", days);
+
+ return R.ok().add(map);
+ }
+
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/echart/EChartLineBean.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/echart/EChartLineBean.java
new file mode 100644
index 0000000..272f3a1
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/echart/EChartLineBean.java
@@ -0,0 +1,14 @@
+package com.zy.asrs.wms.asrs.entity.echart;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class EChartLineBean {
+
+ private String name;
+
+ private List<Long> value;
+
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/echart/EChartPieBean.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/echart/EChartPieBean.java
new file mode 100644
index 0000000..e17fbe4
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/echart/EChartPieBean.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.wms.asrs.entity.echart;
+
+import lombok.Data;
+
+@Data
+public class EChartPieBean {
+
+ private String name;
+
+ private Long value;
+
+}
--
Gitblit v1.9.1