林火综合应急信息管理系统后端
guoshilong
2023-03-09 dc4a461fa49310b5a3a1cecfb6e9f23d06002b32
大屏接口
13 files modified
11 files added
562 ■■■■■ changed files
src/main/java/org/springblade/common/config/BladeConfiguration.java 1 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/device/entity/DeviceEntity.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/dp/controller/ComprehensiveStatisticsController.java 97 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/dp/controller/FireWarningController.java 44 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/dp/controller/MilitaryLocalCoordinationController.java 68 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/dp/mapper/ComprehensiveStatisticsMapper.java 22 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/dp/mapper/ComprehensiveStatisticsMapper.xml 79 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/dp/mapper/FireWarningMapper.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/dp/mapper/FireWarningMapper.xml 6 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/dp/service/IComprehensiveStatisticsService.java 39 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/dp/service/IFireWarningService.java 4 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/dp/service/impl/ComprehensiveStatisticsServiceImpl.java 50 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/dp/service/impl/FireWarningServiceImpl.java 12 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/fire/mapper/FireMapper.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/fire/mapper/FireMapper.xml 35 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/fire/service/IFireService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/fire/service/impl/FireServiceImpl.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/fire/vo/FireVO.java 26 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/dto/DeptDTO.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/mapper/DeptMapper.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml 20 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/service/IDeptService.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/vehicle/entity/VehicleEntity.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/common/config/BladeConfiguration.java
@@ -51,6 +51,7 @@
        secureRegistry.excludePathPatterns("/webjars/**");
        secureRegistry.excludePathPatterns("/swagger-resources/**");
        secureRegistry.excludePathPatterns("/druid/**");
        secureRegistry.excludePathPatterns("/dp/**");
        return secureRegistry;
    }
src/main/java/org/springblade/modules/device/entity/DeviceEntity.java
@@ -56,5 +56,15 @@
     */
    @ApiModelProperty(value = "所在单位id")
    private String deptId;
    /**
     * 经度
     */
    @ApiModelProperty(value = "经度")
    private String lon;
    /**
     * 纬度
     */
    @ApiModelProperty(value = "纬度")
    private String lat;
}
src/main/java/org/springblade/modules/dp/controller/ComprehensiveStatisticsController.java
New file
@@ -0,0 +1,97 @@
package org.springblade.modules.dp.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.tool.api.R;
import org.springblade.modules.device.entity.DeviceEntity;
import org.springblade.modules.dp.service.IComprehensiveStatisticsService;
import org.springblade.modules.fire.service.IFireService;
import org.springblade.modules.fire.vo.FireVO;
import org.springblade.modules.fireSupplement.service.IFireSupplementService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
/**
 * 大屏综合统计 控制器
 *
 * @author GuoShiLong
 * @since 2023-03-08
 */
@RestController
@AllArgsConstructor
@RequestMapping("dp/comprehensiveStatistics")
@Api(value = "综合统计", tags = "综合统计接口")
public class ComprehensiveStatisticsController extends BladeController {
    private IComprehensiveStatisticsService comprehensiveStatisticsService;
    private IFireService fireService;
    private IFireSupplementService fireSupplementService;
    /**
     * 数据概览 (出警次数还没有统计)
     */
    @GetMapping("/dataOverview")
    @ApiOperation(value = "数据概览", notes = "数据概览")
    public R getDataOverview() {
        List<HashMap<String,String>> dataStatistics = comprehensiveStatisticsService.getDataOverview();
        return R.data(dataStatistics);
    }
    /**
     * 入驻单位统计
     */
    @GetMapping("/deptStatistics")
    @ApiOperation(value = "入驻单位统计", notes = "入驻单位统计")
    public R getDeptStatistics() {
        List<HashMap<String,String>> deptStatistics = comprehensiveStatisticsService.getDeptStatistics();
        return R.data(deptStatistics);
    }
    /**
     * 实时火警事件
     */
    @GetMapping("/realtimeFireAlarmIncident")
    @ApiOperation(value = "实时火警事件", notes = "实时火警事件")
    public R getRealtimeFireAlarmIncident(@RequestParam(name="time", defaultValue="48")String time) {
        List<FireVO> fireList = fireService.getRealtime(time);
        return R.data(fireList);
    }
    /**
     * 火警事件来源
     */
    @GetMapping("/fireCallSource")
    @ApiOperation(value = "火警事件来源", notes = "火警事件来源")
    public R getFireCallSource() {
        List fireCallSource = comprehensiveStatisticsService.getFireCallSource();
        return R.data(fireCallSource);
    }
    /**
     * 易发区统计
     */
    @GetMapping("/proneAreasStatistics")
    @ApiOperation(value = "易发区统计", notes = "易发区统计")
    public R getProneAreasStatistics(String regionCode, @RequestParam(name="limit", defaultValue="15")Integer limit) {
        List proneAreasStatistics = comprehensiveStatisticsService.getProneAreasStatistics(regionCode,limit);
        return R.data(proneAreasStatistics);
    }
    /**
     * 火警上报趋势
     */
    @GetMapping("/fireReportingTrend")
    @ApiOperation(value = "火警上报趋势", notes = "火警上报趋势")
    public R getFireReportingTrend() {
        List<HashMap<String,String>> FireReportingTrend = comprehensiveStatisticsService.getFireReportingTrend();
        return R.data(FireReportingTrend);
    }
}
src/main/java/org/springblade/modules/dp/controller/FireWarningController.java
New file
@@ -0,0 +1,44 @@
package org.springblade.modules.dp.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.modules.dp.service.IFireWarningService;
import org.springblade.modules.fire.service.IFireService;
import org.springblade.modules.fire.vo.FireVO;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
/**
 * 大屏防火预警 控制器
 *
 * @author GuoShiLong
 * @since 2023-03-08
 */
@RestController
@AllArgsConstructor
@RequestMapping("dp/fireWarning")
@Api(value = "防火预警", tags = "防火预警接口")
public class FireWarningController extends BladeController {
//    private IFireWarningService fireWarningService;
    private IFireService fireService;
    /**
     * 预警台账
     */
    @GetMapping("/earlyWarningLedger")
    @ApiOperation(value = "预警台账", notes = "预警台账")
    public R getEarlyWarningLedger() {
        return null;
    }
}
src/main/java/org/springblade/modules/dp/controller/MilitaryLocalCoordinationController.java
New file
@@ -0,0 +1,68 @@
package org.springblade.modules.dp.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.modules.fire.service.IFireService;
import org.springblade.modules.fire.vo.FireVO;
import org.springblade.modules.fireSupplement.entity.FireSupplementEntity;
import org.springblade.modules.fireSupplement.service.IFireSupplementService;
import org.springblade.modules.system.dto.DeptDTO;
import org.springblade.modules.system.service.IDeptService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
 * 大屏军地协同 控制器
 *
 * @author GuoShiLong
 * @since 2023-03-08
 */
@RestController
@AllArgsConstructor
@RequestMapping("dp/militaryLocalCoordination")
@Api(value = "军地协同", tags = "军地协同接口")
public class MilitaryLocalCoordinationController extends BladeController {
    private IFireService fireService;
    private IFireSupplementService fireSupplementService;
    private final IDeptService deptService;
    /**
     * 火警事件
     */
    @GetMapping("/fireAlarmIncident")
    @ApiOperation(value = "火警事件", notes = "火警事件")
    public R<IPage<FireVO>> getEarlyWarningLedger(FireVO fire, Query query) {
        IPage<FireVO> pages = fireService.selectFirePage(Condition.getPage(query), fire);
        return R.data(pages);
    }
    /**
     * 灾后评估
     */
    @GetMapping("/disasterAssessment")
    @ApiOperation(value = "详情", notes = "传入fireSupplement")
    public R<FireSupplementEntity> detail(FireSupplementEntity fireSupplement) {
        FireSupplementEntity detail = fireSupplementService.getOne(Condition.getQueryWrapper(fireSupplement));
        return R.data(detail);
    }
    /**
     * 视频会商,传部门和部门下的人
     */
    @GetMapping("/getUserGroupByDept")
    @ApiOperation(value = "视频会商", notes = "视频会商")
    public R getUserGroupByDept() {
        List<DeptDTO> deptDTO = deptService.getUserGroupByDept();
        return R.data(deptDTO);
    }
}
src/main/java/org/springblade/modules/dp/mapper/ComprehensiveStatisticsMapper.java
New file
@@ -0,0 +1,22 @@
package org.springblade.modules.dp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.HashMap;
import java.util.List;
@Repository
public interface ComprehensiveStatisticsMapper {
    List<HashMap<String, String>> getDataOverview();
    List<HashMap<String, String>> getDeptStatistics();
    List<HashMap<String,String>> getFireCallSource();
    List<HashMap<String, String>> getFireReportingTrend();
    List getProneAreasStatistics(@Param("regionCode") String regionCode,@Param("limit") Integer limit);
}
src/main/java/org/springblade/modules/dp/mapper/ComprehensiveStatisticsMapper.xml
New file
@@ -0,0 +1,79 @@
<?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">
<mapper namespace="org.springblade.modules.dp.mapper.ComprehensiveStatisticsMapper">
    <select id="getDataOverview" resultType="java.util.HashMap">
        SELECT a.deptNumber,b.policeCarNumber,c.deviceNumber
        FROM(
            ( SELECT COUNT(*) AS deptNumber FROM blade_dept dept WHERE dept.is_deleted = 0 ) a,
            ( SELECT COUNT(*) AS policeCarNumber FROM sys_vehicle vehicle WHERE vehicle.is_deleted = 0 ) b,
            ( SELECT COUNT(*) AS deviceNumber FROM sys_device device WHERE device.is_deleted = 0 ) c
        );
    </select>
    <select id="getDeptStatistics" resultType="java.util.HashMap">
        SELECT DISTINCT a.city cityCode,a.cityNumber,region.city_name cityName
        FROM
        (
            SELECT dept.city,COUNT(*) AS cityNumber
            FROM blade_dept dept WHERE dept.is_deleted = 0
            GROUP BY dept.city
        ) a LEFT JOIN blade_region region ON region.city_code = a.city
    </select>
    <select id="getFireCallSource" resultType="java.util.HashMap">
        SELECT
            CONVERT(COUNT(*),CHAR) AS number,
            fire.find_way findWay,
            biz.dict_value findWayName
        FROM
            sys_fire fire
            LEFT JOIN blade_dict_biz biz ON biz.dict_key = fire.find_way AND biz.`code` = 'fire_find_way'
        WHERE
            fire.is_deleted = 0
        GROUP BY
            fire.find_way
    </select>
    <select id="getFireReportingTrend" resultType="java.util.HashMap">
        SELECT
            m.id month,IFNULL(b.number,0) number
        FROM
            (
            SELECT 1 AS id UNION
            SELECT 2 UNION
            SELECT 3 UNION
            SELECT 4 UNION
            SELECT 5 UNION
            SELECT 6 UNION
            SELECT 7 UNION
            SELECT 8 UNION
            SELECT 9 UNION
            SELECT 10 UNION
            SELECT 11 UNION
            SELECT 12
            ) m
        LEFT JOIN
        (
            SELECT MONTH(fire.alarm_time) month,COUNT(*) number
            FROM sys_fire fire
            WHERE fire.is_deleted = 0
            GROUP BY MONTH ( fire.alarm_time )
        ) b ON b.`month` = m.id
        ORDER BY month
    </select>
    <select id="getProneAreasStatistics" resultType="java.util.HashMap">
        SELECT
            address,COUNT(*) times
        FROM
            `sys_fire`
        WHERE
            is_deleted = 0
            AND find_way = 1
            AND FIND_IN_SET(#{regionCode},REPLACE(SUBSTRING_INDEX(SUBSTRING_INDEX(location,'[',-1),']',1),'"',''))
        GROUP BY
            address
        ORDER BY times DESC
            LIMIT #{limit}
    </select>
</mapper>
src/main/java/org/springblade/modules/dp/mapper/FireWarningMapper.java
New file
@@ -0,0 +1,7 @@
package org.springblade.modules.dp.mapper;
import org.springframework.stereotype.Repository;
@Repository
public interface FireWarningMapper {
}
src/main/java/org/springblade/modules/dp/mapper/FireWarningMapper.xml
New file
@@ -0,0 +1,6 @@
<?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">
<mapper namespace="org.springblade.modules.dp.mapper.FireWarningMapper">
</mapper>
src/main/java/org/springblade/modules/dp/service/IComprehensiveStatisticsService.java
New file
@@ -0,0 +1,39 @@
package org.springblade.modules.dp.service;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.HashMap;
import java.util.List;
public interface IComprehensiveStatisticsService {
    /**
     * 获取数据概览
     * @return
     */
    List<HashMap<String, String>> getDataOverview();
    /**
     * 获取入驻单位统计
     * @return
     */
    List<HashMap<String, String>> getDeptStatistics();
    /**
     * 获取火警事件来源
     * @return
     */
    List getFireCallSource();
    /**
     * 获取火警上报趋势
     * @return
     */
    List<HashMap<String, String>> getFireReportingTrend();
    /**
     * 获取易发区统计数据
     * @param regionCode 区域编号
     * @return
     */
    List<HashMap<String, String>> getProneAreasStatistics(String regionCode,Integer limit);
}
src/main/java/org/springblade/modules/dp/service/IFireWarningService.java
New file
@@ -0,0 +1,4 @@
package org.springblade.modules.dp.service;
public interface IFireWarningService {
}
src/main/java/org/springblade/modules/dp/service/impl/ComprehensiveStatisticsServiceImpl.java
New file
@@ -0,0 +1,50 @@
package org.springblade.modules.dp.service.impl;
import org.springblade.modules.dp.mapper.ComprehensiveStatisticsMapper;
import org.springblade.modules.dp.service.IComprehensiveStatisticsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
@Service
public class ComprehensiveStatisticsServiceImpl  implements IComprehensiveStatisticsService {
    @Autowired
    private ComprehensiveStatisticsMapper comprehensiveStatisticsMapper;
    @Override
    public List<HashMap<String, String>> getDataOverview() {
        return comprehensiveStatisticsMapper.getDataOverview();
    }
    @Override
    public List<HashMap<String, String>> getDeptStatistics() {
        return comprehensiveStatisticsMapper.getDeptStatistics();
    }
    @Override
    public List getFireCallSource() {
        List list = new ArrayList();
        Map<String, Integer> m1 = new HashMap<>(16);
        List<HashMap<String,String>> fireCallSource = comprehensiveStatisticsMapper.getFireCallSource();
        int number = fireCallSource.stream().mapToInt(e -> Integer.parseInt(e.get("number"))).sum();
        m1.put("sum",number);
        list.add(fireCallSource);
        list.add(m1);
        return list;
    }
    @Override
    public List<HashMap<String, String>> getFireReportingTrend() {
        return comprehensiveStatisticsMapper.getFireReportingTrend();
    }
    @Override
    public List getProneAreasStatistics(String regionCode,Integer limit) {
        return comprehensiveStatisticsMapper.getProneAreasStatistics(regionCode,limit);
    }
}
src/main/java/org/springblade/modules/dp/service/impl/FireWarningServiceImpl.java
New file
@@ -0,0 +1,12 @@
package org.springblade.modules.dp.service.impl;
import org.springblade.modules.dp.mapper.FireWarningMapper;
import org.springblade.modules.dp.service.IFireWarningService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class FireWarningServiceImpl implements IFireWarningService {
    @Autowired
    private FireWarningMapper fireWarningMapper;
}
src/main/java/org/springblade/modules/fire/mapper/FireMapper.java
@@ -42,4 +42,6 @@
    List<FireVO> getAll(@Param("fire") FireVO fire);
    List<FireVO> getRealtime(@Param("time") String time);
}
src/main/java/org/springblade/modules/fire/mapper/FireMapper.xml
@@ -21,13 +21,19 @@
        <result column="is_deleted" property="isDeleted"/>
        <result column="tenant_id" property="tenantId"/>
        <result column="supplementId" property="supplementId"/>
        <result column="fireLevelName" property="fireLevelName"/>
        <result column="findWayName" property="findWayName"/>
    </resultMap>
    <select id="selectFirePage" resultMap="fireResultMap">
        select fire.*,sup.id supplementId from sys_fire fire
        LEFT JOIN sys_fire_supplement sup ON sup.fire_id = fire.id AND sup.is_deleted = 0
        where fire.is_deleted = 0
        SELECT fire.*,sup.id supplementId,biz.dict_value fireLevelName,biz2.dict_value findWayName
        FROM sys_fire fire
        LEFT JOIN blade_dict_biz biz ON biz.dict_key = fire.`level` AND biz.code = 'fire_level'
        LEFT JOIN blade_dict_biz biz2 ON biz2.dict_key = fire.find_way AND biz2.`code` = 'fire_find_way'
        LEFT JOIN sys_fire_supplement sup ON sup.fire_id = fire.id
        AND sup.is_deleted = 0
        WHERE
        fire.is_deleted = 0
        <if test="fire.location !=null and fire.location !='' ">
            AND fire.location = #{fire.location,typeHandler=com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler}
        </if>
@@ -49,6 +55,12 @@
        <if test="fire.alarmTimeEnd !=null and fire.alarmTimeEnd !=''">
            AND DATE_FORMAT(fire.alarm_time,'%Y-%m-%d') &lt;= #{fire.alarmTimeEnd}
        </if>
        <if test="fire.level !=null and fire.level !=''">
            AND fire.level = #{fire.level}
        </if>
        <if test="fire.fireDate !=null and fire.fireDate !=''">
            AND DATE_FORMAT(fire.alarm_time,'%Y-%m-%d') = #{fire.fireDate}
        </if>
    </select>
@@ -62,5 +74,20 @@
    </select>
    <select id="getRealtime" resultMap="fireResultMap">
        SELECT
        fire.*,biz.dict_value fireLevelName,biz2.dict_value findWayName
        FROM
        sys_fire fire
        LEFT JOIN blade_dict_biz biz ON biz.dict_key = fire.level AND biz.`code` = 'fire_level'
        LEFT JOIN blade_dict_biz biz2 ON biz2.dict_key = fire.find_way AND biz2.`code` = 'fire_find_way'
        WHERE
        fire.is_deleted = 0
        AND DATE_FORMAT( fire.alarm_time, '%Y-%m-%d' ) &gt;= DATE_FORMAT(DATE_SUB(now(),INTERVAL #{time} HOUR ), '%Y-%m-%d' )
        AND DATE_FORMAT( fire.alarm_time, '%Y-%m-%d' ) &lt;=  DATE_FORMAT(NOW(),'%Y-%m-%d' )
        ORDER BY fire.alarm_time DESC
    </select>
</mapper>
src/main/java/org/springblade/modules/fire/service/IFireService.java
@@ -46,4 +46,6 @@
     * @return
     */
    List<FireVO> getAll(FireVO fire);
    List<FireVO> getRealtime(String time);
}
src/main/java/org/springblade/modules/fire/service/impl/FireServiceImpl.java
@@ -45,5 +45,10 @@
        return baseMapper.getAll(fire);
    }
    @Override
    public List<FireVO> getRealtime(String time) {
        return baseMapper.getRealtime(time);
    }
}
src/main/java/org/springblade/modules/fire/vo/FireVO.java
@@ -20,6 +20,7 @@
import org.springblade.core.tool.node.INode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.modules.fireSupplement.vo.FireSupplementVO;
/**
 * 火灾记录表 视图实体类
@@ -31,11 +32,28 @@
@EqualsAndHashCode(callSuper = true)
public class FireVO extends FireEntity {
    private static final long serialVersionUID = 1L;
    /**
     * 补充id
     */
    private String supplementId;
    /**
     * 发现时间开始
     */
    private String alarmTimeStart;
    /**
     * 发现时间结束
     */
    private String alarmTimeEnd;
    /**
     * 火灾发生日期(2023-01-10)
     */
    private String fireDate;
    /**
     * 火灾等级
     */
    private String fireLevelName;
    /**
     * 发现方式
     */
    private String findWayName;
}
src/main/java/org/springblade/modules/system/dto/DeptDTO.java
@@ -19,6 +19,9 @@
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.modules.system.entity.Dept;
import org.springblade.modules.system.entity.User;
import java.util.List;
/**
 * 数据传输对象实体类
@@ -30,4 +33,6 @@
public class DeptDTO extends Dept {
    private static final long serialVersionUID = 1L;
    private List<User> userList;
}
src/main/java/org/springblade/modules/system/mapper/DeptMapper.java
@@ -17,6 +17,7 @@
package org.springblade.modules.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springblade.modules.system.dto.DeptDTO;
import org.springblade.modules.system.entity.Dept;
import org.springblade.modules.system.vo.DeptVO;
@@ -65,4 +66,9 @@
     */
    List<String> getDeptNames(Long[] ids);
    /**
     * 获取部门分组和部门下的用户
     * @return
     */
    List<DeptDTO> getUserGroupByDept();
}
src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml
@@ -112,4 +112,24 @@
        and is_deleted = 0
    </select>
    <resultMap id="userDeptGroup" type="org.springblade.modules.system.dto.DeptDTO">
        <id column="dept_id" property="id"/>
        <result column="dept_name" property="deptName"/>
        <collection property="userList" javaType="java.util.List" ofType="org.springblade.modules.system.entity.User">
            <result column="id" property="id"/>
            <result column="real_name" property="realName"/>
            <result column="avatar" property="avatar"/>
            <result column="email" property="email"/>
            <result column="phone" property="phone"/>
            <result column="role_id" property="roleId"/>
        </collection>
    </resultMap>
    <select id="getUserGroupByDept" resultMap="userDeptGroup">
        SELECT user.id,user.real_name,user.avatar,user.email,user.phone,user.dept_id,user.role_id,dept.dept_name
        FROM blade_user user
        LEFT JOIN blade_dept dept ON dept.id = user.dept_id and dept.is_deleted = 0
        WHERE user.is_deleted = 0
    </select>
</mapper>
src/main/java/org/springblade/modules/system/service/IDeptService.java
@@ -17,6 +17,7 @@
package org.springblade.modules.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.modules.system.dto.DeptDTO;
import org.springblade.modules.system.entity.Dept;
import org.springblade.modules.system.vo.DeptVO;
@@ -116,4 +117,9 @@
     */
    List<DeptVO> search(String deptName, Long parentId);
    /**
     * 获取部门分组和部门下的用户
     * @return
     */
    List<DeptDTO> getUserGroupByDept();
}
src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java
@@ -26,6 +26,7 @@
import org.springblade.core.tool.node.ForestNodeMerger;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringPool;
import org.springblade.modules.system.dto.DeptDTO;
import org.springblade.modules.system.entity.Dept;
import org.springblade.modules.system.mapper.DeptMapper;
import org.springblade.modules.system.service.IDeptService;
@@ -168,4 +169,9 @@
        return DeptWrapper.build().listNodeVO(deptList);
    }
    @Override
    public List<DeptDTO> getUserGroupByDept() {
        return baseMapper.getUserGroupByDept();
    }
}
src/main/java/org/springblade/modules/vehicle/entity/VehicleEntity.java
@@ -51,5 +51,15 @@
     */
    @ApiModelProperty(value = "车辆类型")
    private String type;
    /**
     * 经度
     */
    @ApiModelProperty(value = "经度")
    private String lon;
    /**
     * 纬度
     */
    @ApiModelProperty(value = "纬度")
    private String lat;
}