diff --git a/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/project/oil/controller/OilStatisticsController.java b/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/project/oil/controller/OilStatisticsController.java index a14868a..e3351a1 100644 --- a/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/project/oil/controller/OilStatisticsController.java +++ b/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/project/oil/controller/OilStatisticsController.java @@ -59,10 +59,21 @@ public class OilStatisticsController extends BaseController { } @GetMapping("/getAvgDsByDeptIdsAndDate") - public AjaxResult getAvgDsByDeptIdsAndDate(@RequestParam("ids") List ids, @RequestParam("startDate") String startDate, @RequestParam("endDate") String endDate) { + public AjaxResult getAvgDsByDeptIdsAndDate( + @RequestParam("ids") List ids, + @RequestParam("startDate") String startDate, + @RequestParam("endDate") String endDate, + @RequestParam("isDaily") boolean isDaily + + ) { Map resultMap = new HashMap<>(); for (Long id : ids) { - List> result = thDeviceReportMonthService.selectAvgDsByDeptIdAndDate(id, startDate, endDate); + List> result; + if (isDaily) { + result = oilThDeviceReportService.selectAvgDsByDateRange(id, startDate, endDate); + } else { + result = thDeviceReportMonthService.selectAvgDsByDeptIdAndDate(id, startDate, endDate); + } resultMap.put(id, result); } return success(resultMap); diff --git a/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/project/oil/mapper/ThDeviceReportMapper.java b/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/project/oil/mapper/ThDeviceReportMapper.java index f2ddf4c..d8c48ff 100644 --- a/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/project/oil/mapper/ThDeviceReportMapper.java +++ b/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/project/oil/mapper/ThDeviceReportMapper.java @@ -83,4 +83,7 @@ public interface ThDeviceReportMapper { @MapKey("sn") List> selectOverLimitCountByYearAndDeptId(@Param("deptId") Long deptId, @Param("year") String year); + + @MapKey("day") + List> selectAvgDsByDateRange(@Param("deptId") Long deptId, @Param("beginDate") String beginDate, @Param("endDate") String endDate); } diff --git a/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/project/oil/service/IOilThDeviceReportService.java b/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/project/oil/service/IOilThDeviceReportService.java index a9f36ef..14a45e2 100644 --- a/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/project/oil/service/IOilThDeviceReportService.java +++ b/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/project/oil/service/IOilThDeviceReportService.java @@ -17,4 +17,6 @@ public interface IOilThDeviceReportService { List> selectAlarmCountByDeptIdAndDateRangeDesc(Long deptId, String beginDate, String endDate); List> selectOverLimitCountByYearAndDeptId(Long deptId, String year); + + List> selectAvgDsByDateRange(Long deptId, String beginDate, String endDate); } diff --git a/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/project/oil/service/impl/OilThDeviceReportService.java b/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/project/oil/service/impl/OilThDeviceReportService.java index 30c6f29..528dcfe 100644 --- a/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/project/oil/service/impl/OilThDeviceReportService.java +++ b/RuoYi-Vue-Oracle/src/main/java/com/ruoyi/project/oil/service/impl/OilThDeviceReportService.java @@ -51,4 +51,9 @@ public class OilThDeviceReportService implements IOilThDeviceReportService { return camelCaseMapListKey(thDeviceReportMapper.selectOverLimitCountByYearAndDeptId(deptId, year)); } + @Override + public List> selectAvgDsByDateRange(Long deptId, String beginDate, String endDate) { + return camelCaseMapListKey(thDeviceReportMapper.selectAvgDsByDateRange(deptId, beginDate, endDate)); + } + } diff --git a/RuoYi-Vue-Oracle/src/main/resources/mybatis/oil/ThDeviceReportMapper.xml b/RuoYi-Vue-Oracle/src/main/resources/mybatis/oil/ThDeviceReportMapper.xml index 3121264..a987737 100644 --- a/RuoYi-Vue-Oracle/src/main/resources/mybatis/oil/ThDeviceReportMapper.xml +++ b/RuoYi-Vue-Oracle/src/main/resources/mybatis/oil/ThDeviceReportMapper.xml @@ -271,4 +271,20 @@ GROUP BY d.sn, td.address, p.dept_name, pp.dept_name, ppp.dept_name ORDER BY p.dept_name, pp.dept_name, ppp.dept_name, d.sn + + diff --git a/ruoyi-ui/src/views/dataStatistics/comparison/index.vue b/ruoyi-ui/src/views/dataStatistics/comparison/index.vue index ae7b684..69d155c 100644 --- a/ruoyi-ui/src/views/dataStatistics/comparison/index.vue +++ b/ruoyi-ui/src/views/dataStatistics/comparison/index.vue @@ -11,9 +11,9 @@ +
+ 日维度 +
@@ -49,12 +52,22 @@ export default { id: "comparisonChart", Xdata: [], Ydata: [], - option: {}, + option: { + tooltip: { + trigger: "axis", + formatter: function (params) { + return `${params[0].name}
${params + .map((item) => `${item.marker} ${item.seriesName}: ${item.value} mg/m³`) + .join("
")}`; + }, + }, + }, series: { data: [], }, }, queryDebounce: null, + isDaily: false, }; }, mounted() { @@ -66,6 +79,22 @@ export default { ]; this.queryDebounce = debounce(this.query, 100); }, + watch: { + isDaily: function (value) { + if (value) { + this.dateTimeRange = [ + moment().startOf("month").format("YYYY-MM-DD"), + moment().format("YYYY-MM-DD"), + ]; + } else { + this.dateTimeRange = [ + moment().startOf("month").format("YYYY-MM"), + moment().format("YYYY-MM"), + ]; + } + this.queryDebounce(); + }, + }, methods: { handleDateTimeChange() { this.queryDebounce(); @@ -89,6 +118,7 @@ export default { ids: this.deptIds.join(","), startDate: this.dateTimeRange[0], endDate: this.dateTimeRange[1], + isDaily: this.isDaily, }) ); @@ -102,15 +132,19 @@ export default { return; } const { data } = res; + const that = this; // 按照 month 正确排序 - function sortDataByMonth(data) { + function sortDataByMonth(data) { // 遍历对象的每个键 for (const key in data) { if (data.hasOwnProperty(key)) { // 对每个键对应的数组进行排序 data[key].sort((a, b) => { // 比较 month 属性 - return new Date(a.month) - new Date(b.month); + // return new Date(a.month) - new Date(b.month); + return that.isDaily + ? new Date(a.day) - new Date(b.day) + : new Date(a.month) - new Date(b.month); }); } } @@ -120,12 +154,15 @@ export default { this.chartData.series.data = Object.keys(sortedData).map((key) => { return { - name: this.deptList.find((item) => item.deptId === parseInt(key))?.deptName, + name: this.deptList.find((item) => item.deptId === parseInt(key)) + ?.deptName, type: "line", data: data[key].map((item) => item.avgValue.toFixed(2)), }; }); - this.chartData.Xdata = data[Object.keys(data)[0]].map((item) => item.month); + this.chartData.Xdata = data[Object.keys(data)[0]].map((item) => + that.isDaily ? item.day : item.month + ); }, }, }; @@ -139,4 +176,9 @@ export default { margin-top: 20px; } } +.switch-wrapper { + height: 36px; + display: flex; + align-items: center; +}