龚焕茏
2024-03-08 0fa29e0dc36990e5826be5f6d1bcc84c9a13201a
数据大屏部分接口
7个文件已修改
4个文件已添加
290 ■■■■■ 已修改文件
dujy-admin/src/test/java/org/dromara/test/DemoUnitTest.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/DataDashboardController.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/vo/RsDangerTotalDashboardVo.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsDangerTotalMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsPcrDataMapper.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/mapper/RsSceneryOperationDataMapper.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IDataDashboardService.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/DataDashboardServiceImpl.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsDangerTotalMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsPcrDataMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsSceneryOperationDataMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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));
    }
}
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/controller/DataDashboardController.java
New file
@@ -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());
    }
}
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/domain/vo/RsDangerTotalDashboardVo.java
New file
@@ -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;
}
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();
}
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();
}
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();
}
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/IDataDashboardService.java
New file
@@ -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();
}
dujy-modules/dujy-demo/src/main/java/org/dromara/demo/service/impl/DataDashboardServiceImpl.java
New file
@@ -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;
    }
}
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>
dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsPcrDataMapper.xml
@@ -3,5 +3,16 @@
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>
dujy-modules/dujy-demo/src/main/resources/mapper/demo/RsSceneryOperationDataMapper.xml
@@ -3,5 +3,13 @@
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>