From 0fa29e0dc36990e5826be5f6d1bcc84c9a13201a Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期五, 08 三月 2024 17:10:19 +0800
Subject: [PATCH] 数据大屏部分接口

---
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsDangerTotalMapper.java            |    6 +
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IDataDashboardService.java         |   47 +++++++++
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/DataDashboardController.java    |   72 ++++++++++++++
 dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsDangerTotalMapper.xml                    |    7 +
 dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsSceneryOperationDataMapper.xml           |   12 ++
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsPcrDataMapper.java                |    5 
 dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsPcrDataMapper.xml                        |   15 ++
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsSceneryOperationDataMapper.java   |    5 
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/vo/RsDangerTotalDashboardVo.java    |   38 +++++++
 dujy-admin/src/test/java/org/dromara/test/DemoUnitTest.java                                      |   32 ++++++
 dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/DataDashboardServiceImpl.java |   59 +++++++++++
 11 files changed, 292 insertions(+), 6 deletions(-)

diff --git a/dujy-admin/src/test/java/org/dromara/test/DemoUnitTest.java b/dujy-admin/src/test/java/org/dromara/test/DemoUnitTest.java
index 5b3dfdc..072226d 100644
--- a/dujy-admin/src/test/java/org/dromara/test/DemoUnitTest.java
+++ b/dujy-admin/src/test/java/org/dromara/test/DemoUnitTest.java
@@ -5,6 +5,8 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 
+import java.time.LocalDate;
+import java.time.Month;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -67,4 +69,34 @@
         System.out.println("@AfterAll ==================");
     }
 
+    /**
+     * @Description TODO 鑾峰彇鏈搴︾殑绗竴澶╂垨鏈�鍚庝竴澶�
+     * @Param: [today, isFirst: true 琛ㄧず寮�濮嬫椂闂达紝false琛ㄧず缁撴潫鏃堕棿]
+     * @return: java.lang.String
+     */
+    public static String getStartOrEndDayOfQuarter(LocalDate today, Boolean isFirst) {
+        LocalDate resDate = LocalDate.now();
+        if (today == null) {
+            today = resDate;
+        }
+        Month month = today.getMonth();
+        Month firstMonthOfQuarter = month.firstMonthOfQuarter();
+        Month endMonthOfQuarter = Month.of(firstMonthOfQuarter.getValue() + 2);
+        if (isFirst) {
+            resDate = LocalDate.of(today.getYear(), firstMonthOfQuarter, 1);
+        } else {
+            resDate = LocalDate.of(today.getYear(), endMonthOfQuarter, endMonthOfQuarter.length(today.isLeapYear()));
+        }
+        return resDate.toString();
+    }
+
+    public static void main(String[] args) {
+        System.out.println(getStartOrEndDayOfQuarter(LocalDate.parse("2024-05-04"), false));
+        System.out.println(getStartOrEndDayOfQuarter(LocalDate.parse("2024-06-04"), false));
+        System.out.println(getStartOrEndDayOfQuarter(LocalDate.parse("2024-07-04"), false));
+        System.out.println(getStartOrEndDayOfQuarter(LocalDate.parse("2024-01-04"), false));
+        System.out.println(getStartOrEndDayOfQuarter(LocalDate.parse("2024-02-04"), false));
+    }
+
+
 }
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/DataDashboardController.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/DataDashboardController.java
new file mode 100644
index 0000000..e85b8ac
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/DataDashboardController.java
@@ -0,0 +1,72 @@
+package org.dromara.demo.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import lombok.RequiredArgsConstructor;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.demo.domain.bo.RsDangerTotalBo;
+import org.dromara.demo.domain.vo.*;
+import org.dromara.demo.service.IDataDashboardService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author ghl
+ * @since 2024/3/8 涓婂崍 10:57
+ */
+
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/dataDashboard")
+public class DataDashboardController {
+
+    private final IDataDashboardService service;
+
+    /**
+     * 杩�3骞翠氦閫氫簨鏁呮寚鏁�
+     */
+    @SaCheckPermission("rs:trafficIndex:list")
+    @GetMapping("/trafficIndex")
+    public R<RsTrafficIndexVo> getTrafficIndex() {
+        return R.ok(service.getTrafficIndex());
+    }
+
+    /**
+     * 浜鸿溅璺熀纭�淇℃伅
+     */
+    @SaCheckPermission("rs:pcrData:list")
+    @GetMapping("/pcrData")
+    public TableDataInfo<RsPcrDataVo> getPcrData() {
+        return TableDataInfo.build(service.getPcrData());
+    }
+
+    /**
+     * 閲嶇偣鏅尯杩愯鎯呭喌
+     */
+    @SaCheckPermission("demo:sceneryOperationData:list")
+    @GetMapping("/sceneryOperationData")
+    public TableDataInfo<RsSceneryOperationDataVo> getSceneryOperationData() {
+        return TableDataInfo.build(service.getSceneryOperationData());
+    }
+
+    /**
+     * 瀹夊叏闅愭偅鎯呭喌
+     */
+    @SaCheckPermission("demo:dangerInfo:list")
+    @GetMapping("/dangerInfo")
+    public TableDataInfo<RsDangerInfoVo> getDangerInfo() {
+        return TableDataInfo.build(service.getDangerInfo());
+    }
+
+    /**
+     * 瀹夊叏闅愭偅缁熻
+     */
+    @SaCheckPermission("demo:dangerTotal:list")
+    @GetMapping("/dangerTotal")
+    public R<RsDangerTotalDashboardVo> getDangerTotal() {
+        return R.ok(service.getDangerTotal());
+    }
+
+}
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/vo/RsDangerTotalDashboardVo.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/vo/RsDangerTotalDashboardVo.java
new file mode 100644
index 0000000..1fdac98
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/vo/RsDangerTotalDashboardVo.java
@@ -0,0 +1,38 @@
+package org.dromara.demo.domain.vo;
+
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import org.dromara.demo.domain.RsDangerTotal;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+/**
+ * 瀹夊叏闅愭偅缁熻瑙嗗浘瀵硅薄 rs_danger_total
+ *
+ * @author gonghl
+ * @date 2024-02-29
+ */
+@Data
+@AutoMapper(target = RsDangerTotal.class)
+public class RsDangerTotalDashboardVo implements Serializable {
+
+    /**
+     * 鍙戠幇瀹夊叏闅愭偅
+     */
+    private Long findSecurityRisks;
+
+    /**
+     * 涓嬪彂閫氱煡涔�
+     */
+    private Long issueNotice;
+
+    /**
+     * 澶勭疆瀹夊叏闅愭偅
+     */
+    private Long dealWithSecurityRisks;
+
+    private List<RsDangerTotalVo> list;
+
+}
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsDangerTotalMapper.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsDangerTotalMapper.java
index 4f2ea63..44e5972 100644
--- a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsDangerTotalMapper.java
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsDangerTotalMapper.java
@@ -1,6 +1,7 @@
 package org.dromara.demo.mapper;
 
 import org.dromara.demo.domain.RsDangerTotal;
+import org.dromara.demo.domain.vo.RsDangerTotalDashboardVo;
 import org.dromara.demo.domain.vo.RsDangerTotalVo;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 
@@ -12,4 +13,9 @@
  */
 public interface RsDangerTotalMapper extends BaseMapperPlus<RsDangerTotal, RsDangerTotalVo> {
 
+    /**
+     * 鑾峰彇闅愭偅缁熻鏁伴噺
+     * @return 闅愭偅缁熻鏁伴噺
+     */
+    RsDangerTotalDashboardVo getDangerTotalNums();
 }
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsPcrDataMapper.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsPcrDataMapper.java
index 9e7eb76..e03c1f1 100644
--- a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsPcrDataMapper.java
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsPcrDataMapper.java
@@ -1,8 +1,10 @@
 package org.dromara.demo.mapper;
 
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 import org.dromara.demo.domain.RsPcrData;
 import org.dromara.demo.domain.vo.RsPcrDataVo;
-import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+import java.util.List;
 
 /**
  * 浜鸿溅璺熀纭�淇℃伅Mapper鎺ュ彛
@@ -12,4 +14,5 @@
  */
 public interface RsPcrDataMapper extends BaseMapperPlus<RsPcrData, RsPcrDataVo> {
 
+    List<RsPcrDataVo> getPcrData();
 }
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsSceneryOperationDataMapper.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsSceneryOperationDataMapper.java
index 5a029cb..bd837b3 100644
--- a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsSceneryOperationDataMapper.java
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsSceneryOperationDataMapper.java
@@ -1,8 +1,10 @@
 package org.dromara.demo.mapper;
 
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 import org.dromara.demo.domain.RsSceneryOperationData;
 import org.dromara.demo.domain.vo.RsSceneryOperationDataVo;
-import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+import java.util.List;
 
 /**
  * 鏅尯杩愯鏁版嵁Mapper鎺ュ彛
@@ -12,4 +14,5 @@
  */
 public interface RsSceneryOperationDataMapper extends BaseMapperPlus<RsSceneryOperationData, RsSceneryOperationDataVo> {
 
+    List<RsSceneryOperationDataVo> getSceneryOperationData();
 }
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IDataDashboardService.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IDataDashboardService.java
new file mode 100644
index 0000000..90eb577
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IDataDashboardService.java
@@ -0,0 +1,47 @@
+package org.dromara.demo.service;
+
+import org.dromara.demo.domain.vo.*;
+
+import java.util.List;
+
+/**
+ * @author ghl
+ * @since 2024/3/8 涓婂崍 10:59
+ */
+public interface IDataDashboardService {
+
+
+    /**
+     * 杩�3骞翠氦閫氫簨鏁呮寚鏁�
+     *
+     * @return 杩�3骞翠氦閫氫簨鏁呮寚鏁�
+     */
+    RsTrafficIndexVo getTrafficIndex();
+
+    /**
+     * 浜鸿溅璺熀纭�淇℃伅
+     *
+     * @return 浜鸿溅璺熀纭�淇℃伅
+     */
+    List<RsPcrDataVo> getPcrData();
+
+    /**
+     * 閲嶇偣鏅尯杩愯鎯呭喌
+     *
+     * @return 閲嶇偣鏅尯杩愯鎯呭喌
+     */
+    List<RsSceneryOperationDataVo> getSceneryOperationData();
+
+    /**
+     * 瀹夊叏闅愭偅鎯呭喌
+     *
+     * @return 瀹夊叏闅愭偅鎯呭喌
+     */
+    List<RsDangerInfoVo> getDangerInfo();
+
+    /**
+     * 瀹夊叏闅愭偅缁熻
+     * @return 瀹夊叏闅愭偅缁熻
+     */
+    RsDangerTotalDashboardVo getDangerTotal();
+}
diff --git a/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/DataDashboardServiceImpl.java b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/DataDashboardServiceImpl.java
new file mode 100644
index 0000000..eb839b7
--- /dev/null
+++ b/dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/DataDashboardServiceImpl.java
@@ -0,0 +1,59 @@
+package org.dromara.demo.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.dromara.demo.domain.RsDangerInfo;
+import org.dromara.demo.domain.RsTrafficIndex;
+import org.dromara.demo.domain.vo.*;
+import org.dromara.demo.mapper.*;
+import org.dromara.demo.service.IDataDashboardService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author gonghl
+ * @date 2024-3-8
+ */
+@RequiredArgsConstructor
+@Service
+public class DataDashboardServiceImpl implements IDataDashboardService {
+
+    private final RsTrafficIndexMapper trafficIndexMapper;
+    private final RsPcrDataMapper pcrDataMapper;
+    private final RsSceneryOperationDataMapper sceneryOperationDataMapper;
+    private final RsDangerInfoMapper dangerInfoMapper;
+    private final RsDangerTotalMapper dangerTotalMapper;
+
+    @Override
+    public RsTrafficIndexVo getTrafficIndex() {
+        LambdaQueryWrapper<RsTrafficIndex> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(RsTrafficIndex::getStatus, 1).orderByDesc(RsTrafficIndex::getCreateTime).last("limit 1");
+        return trafficIndexMapper.selectVoOne(queryWrapper);
+    }
+
+    @Override
+    public List<RsPcrDataVo> getPcrData() {
+        return pcrDataMapper.getPcrData();
+    }
+
+    @Override
+    public List<RsSceneryOperationDataVo> getSceneryOperationData() {
+        return sceneryOperationDataMapper.getSceneryOperationData();
+    }
+
+    @Override
+    public List<RsDangerInfoVo> getDangerInfo() {
+        LambdaQueryWrapper<RsDangerInfo> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(RsDangerInfo::getStatus, 1).orderByDesc(RsDangerInfo::getCreateTime);
+        return dangerInfoMapper.selectVoList(queryWrapper);
+    }
+
+    @Override
+    public RsDangerTotalDashboardVo getDangerTotal() {
+        RsDangerTotalDashboardVo dangerTotalDashboardVo = dangerTotalMapper.getDangerTotalNums();
+        // dangerTotalMapper.
+        return dangerTotalDashboardVo;
+    }
+}
diff --git a/dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsDangerTotalMapper.xml b/dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsDangerTotalMapper.xml
index 51741a8..680f7f2 100644
--- a/dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsDangerTotalMapper.xml
+++ b/dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsDangerTotalMapper.xml
@@ -4,4 +4,11 @@
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.dromara.demo.mapper.RsDangerTotalMapper">
 
+    <select id="getDangerTotalNums" resultType="org.dromara.demo.domain.vo.RsDangerTotalDashboardVo">
+        select sum(find_security_risks) as find_security_risks, sum(issue_notice) as issue_notice, sum(deal_with_security_risks) as deal_with_security_risks
+        from rs_danger_total
+        where status = 1
+    </select>
+
+
 </mapper>
diff --git a/dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsPcrDataMapper.xml b/dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsPcrDataMapper.xml
index 89d8e04..bc783f3 100644
--- a/dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsPcrDataMapper.xml
+++ b/dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsPcrDataMapper.xml
@@ -1,7 +1,18 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.dromara.demo.mapper.RsPcrDataMapper">
 
+    <select id="getPcrData" resultType="org.dromara.demo.domain.vo.RsPcrDataVo">
+        select *
+        from (select * from rs_pcr_data where `status` = 1 and mode_name = '閬撹矾閲岀▼鏁伴噺' ORDER BY create_time desc LIMIT 1) a
+        union
+        select *
+        from (select * from rs_pcr_data where `status` = 1 and mode_name = '鏈哄姩杞︿繚鏈夐噺' ORDER BY create_time desc LIMIT 1) b
+        union
+        select *
+        from (select * from rs_pcr_data where `status` = 1 and mode_name = '椹鹃┒浜轰繚鏈夐噺' ORDER BY create_time desc LIMIT 1) c
+    </select>
+
 </mapper>
diff --git a/dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsSceneryOperationDataMapper.xml b/dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsSceneryOperationDataMapper.xml
index 8502b2b..9750d73 100644
--- a/dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsSceneryOperationDataMapper.xml
+++ b/dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsSceneryOperationDataMapper.xml
@@ -1,7 +1,15 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.dromara.demo.mapper.RsSceneryOperationDataMapper">
 
+    <select id="getSceneryOperationData" resultType="org.dromara.demo.domain.vo.RsSceneryOperationDataVo">
+        select a.*
+        from rs_scenery_operation_data a
+                 inner join rs_scenery_info b on a.scenery_info_name = b.scenery_name
+        where a.status = 1
+        order by b.sequence
+    </select>
+
 </mapper>

--
Gitblit v1.8.0