智慧保安后台管理-外网项目备份
Administrator
2021-07-15 7b1d4ea5a82843e76655f4e5955ec7ab58767b5a
1.工作汇报接口新增
2.新增保安人员树接口
10 files modified
7 files added
643 ■■■■■ changed files
src/main/java/org/springblade/modules/system/controller/DeptController.java 11 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/mapper/DeptMapper.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml 37 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/mapper/UserMapper.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/mapper/UserMapper.xml 8 ●●●●● 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/IUserService.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java 12 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java 9 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/workreport/controller/WorkReportController.java 192 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/workreport/entity/WorkReport.java 107 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/workreport/mapper/WorkReportMapper.java 40 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/workreport/mapper/WorkReportMapper.xml 87 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/workreport/service/WorkReportService.java 35 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/workreport/service/impl/WorkReportServiceImpl.java 42 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/workreport/vo/WorkReportVo.java 35 ●●●●● patch | view | raw | blame | history
src/main/resources/application.yml 1 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/controller/DeptController.java
@@ -124,6 +124,17 @@
        return R.data(tree);
    }
    /**
     * 懒加载获取部门树形结构(包含用户数据)
     * @return
     */
    @GetMapping("/lazy-tree-user")
    public R<List<DeptVO>> lazyTreeUser(String tenantId, Long parentId, BladeUser bladeUser) {
        List<DeptVO> tree = deptService.lazyTreeUser(Func.toStrWithEmpty(tenantId, bladeUser.getTenantId()), parentId);
        return R.data(tree);
    }
    /**
     * 懒加载获取部门树形结构,不包含顶级管理员公安局
     */
src/main/java/org/springblade/modules/system/mapper/DeptMapper.java
@@ -16,6 +16,7 @@
 */
package org.springblade.modules.system.mapper;
import com.baomidou.mybatisplus.annotation.SqlParser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springblade.modules.system.entity.Dept;
import org.springblade.modules.system.vo.DeptVO;
@@ -85,4 +86,11 @@
     * 懒加载获取部门树形结构,不包含顶级管理员公安局
     */
    List<DeptVO> securityLazyTree(String tenantId, Long parentId);
    /**
     * 懒加载获取部门树形结构(包含用户数据)
     * @return
     */
    @SqlParser(filter=true)
    List<DeptVO> lazyTreeUser(String tenantId, Long parentId);
}
src/main/java/org/springblade/modules/system/mapper/DeptMapper.xml
@@ -128,6 +128,43 @@
        ORDER BY dept.sort
    </select>
    <!--懒加载获取部门树形结构(包含用户数据)-->
    <select id="lazyTreeUser" resultMap="treeNodeResultMap" >
        select DISTINCT  * from (
            (SELECT
              dept.id,
              dept.parent_id,
              dept.dept_name AS title,
              dept.id AS "value",
              dept.id AS "key",
                        (
                            SELECT
                                CASE WHEN count(1) > 0 THEN 1 ELSE 0 END
                            FROM
                                blade_dept
                            WHERE
                                parent_id = dept.id and is_deleted = 0
                        ) AS "has_children"
                    FROM
                        blade_dept dept
                    WHERE
                        dept.is_deleted = 0
            )
            union
            (select
                id,
                dept_id  parent_id,
                real_name AS title,
                id AS "value",
                id AS "key",
                0 as "has_children"
                from blade_user
            )
        )c
    </select>
    <select id="lazyTrees" resultMap="treeNodeResultMap" >
src/main/java/org/springblade/modules/system/mapper/UserMapper.java
@@ -61,4 +61,10 @@
     */
    List<UserExcel> exportUser(@Param("ew") Wrapper<User> queryWrapper);
    /**
     * 通过 身份证号查询用户信息
     * @param idCardNo 身份证号
     * @return
     */
    User getUserInfoByIdCardNo(String idCardNo);
}
src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
@@ -109,4 +109,12 @@
        SELECT id, tenant_id, user_type, account, name, real_name, email, phone, birthday, role_id, dept_id, post_id FROM blade_user ${ew.customSqlSegment}
    </select>
    <!--通过 身份证号查询用户信息-->
    <select id="getUserInfoByIdCardNo" resultType="org.springblade.modules.system.entity.User">
        SELECT id, name, real_name RealName
            FROM
        blade_user
        where cardid = #{param1}
    </select>
</mapper>
src/main/java/org/springblade/modules/system/service/IDeptService.java
@@ -131,4 +131,10 @@
     */
    List<DeptVO> securityLazyTree(String tenantId, Long parentId);
    List<String> selectIn();
    /**
     * 懒加载获取部门树形结构(包含用户数据)
     * @return
     */
    List<DeptVO> lazyTreeUser(String tenantId, Long parentId);
}
src/main/java/org/springblade/modules/system/service/IUserService.java
@@ -206,4 +206,11 @@
     * @return
     */
    UserVO platformDetail(User user);
    /**
     * 通过 身份证号查询用户信息
     * @param idCardNo 身份证号
     * @return
     */
    User getUserInfoByIdCardNo(String idCardNo);
}
src/main/java/org/springblade/modules/system/service/impl/DeptServiceImpl.java
@@ -199,4 +199,16 @@
    public List<String> selectIn() {
        return baseMapper.selectIn();
    }
    /**
     * 懒加载获取部门树形结构(包含用户数据)
     * @return
     */
    @Override
    public List<DeptVO> lazyTreeUser(String tenantId, Long parentId) {
        if (AuthUtil.isAdministrator()) {
            tenantId = StringPool.EMPTY;
        }
        return ForestNodeMerger.merge(baseMapper.lazyTreeUser(tenantId, parentId));
    }
}
src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
@@ -422,4 +422,13 @@
        return userVO;
    }
    /**
     * 通过 身份证号查询用户信息
     * @param idCardNo 身份证号
     * @return
     */
    @Override
    public User getUserInfoByIdCardNo(String idCardNo) {
        return baseMapper.getUserInfoByIdCardNo(idCardNo);
    }
}
src/main/java/org/springblade/modules/workreport/controller/WorkReportController.java
New file
@@ -0,0 +1,192 @@
package org.springblade.modules.workreport.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.modules.system.entity.Dept;
import org.springblade.modules.system.entity.User;
import org.springblade.modules.system.service.IDeptService;
import org.springblade.modules.system.service.IUserService;
import org.springblade.modules.workreport.entity.WorkReport;
import org.springblade.modules.workreport.service.WorkReportService;
import org.springblade.modules.workreport.vo.WorkReportVo;
import org.springframework.web.bind.annotation.*;
import java.sql.Wrapper;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @author zhongrj
 * @time 2021-07-12
 * @desc 工作汇报管理控制层
 */
@RestController
@AllArgsConstructor
@RequestMapping("/workReport")
public class WorkReportController {
    private final WorkReportService workReportService;
    private final IUserService userService;
    private final IDeptService deptService;
    /**
     * 自定义分页
     * @param query page,size
     * @param workReport 工作汇报信息对象
     */
    @GetMapping("/page")
    public R<IPage<WorkReportVo>> page(WorkReportVo workReport, Query query) {
        IPage<WorkReportVo> pages = workReportService.selectWorkReportPage(Condition.getPage(query), workReport);
        List<WorkReportVo> records = pages.getRecords();
        for (WorkReportVo record : records) {
            record.setReplyRealName(getReplyRealName(record));
            record.setReplyDeptName(getReplyDeptName(record));
        }
        return R.data(pages);
    }
    /**
     * 自定义分页--接收到的汇报信息page
     * @param query page,size
     * @param workReport 工作汇报信息对象
     */
    @GetMapping("/pageReply")
    public R<IPage<WorkReportVo>> pageReply(WorkReportVo workReport, Query query) {
        IPage<WorkReportVo> pages = workReportService.selectWorkReplyPage(Condition.getPage(query), workReport);
//        List<WorkReportVo> records = pages.getRecords();
//        for (WorkReportVo record : records) {
//            record.setReplyRealName(getReplyRealName(record));
//            record.setReplyDeptName(getReplyDeptName(record));
//        }
        return R.data(pages);
    }
    /**
     * 新增
     * @param workReport 工作汇报信息对象
     */
    @PostMapping("/save")
    @ApiOperation(value = "新增", notes = "传入workReport")
    public R save(@RequestBody WorkReport workReport) {
        return R.status(workReportService.save(workReport));
    }
    /**
     * 修改
     * @param workReport 工作汇报信息对象
     */
    @PostMapping("/update")
    public R update(@RequestBody WorkReport workReport) {
        return R.status(workReportService.updateById(workReport));
    }
    /**
     * 新增或修改
     * @param workReport 工作汇报信息对象
     */
    @PostMapping("/submit")
    public R submit(@RequestBody WorkReport workReport) {
        if (null!=workReport.getId()){
            workReport.setReplyTime(new Date());
            workReport.setReplyDeptIds(getReplyDeptIds(workReport.getReceivedIds()));
        }else {
            workReport.setReportTime(new Date());
            workReport.setReplyDeptIds(getReplyDeptIds(workReport.getReceivedIds()));
        }
        return R.status(workReportService.saveOrUpdate(workReport));
    }
    /**
     * 删除
     * @param ids 工作汇报信息ids 数组
     */
    @PostMapping("/remove")
    public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) {
        return R.status(workReportService.removeByIds(Func.toLongList(ids)));
    }
    /**
     * 详情
     * @param workReport 工作汇报信息对象
     */
    @GetMapping("/detail")
    @ApiOperation(value = "详情", notes = "传入workReport")
    public R<WorkReportVo> detail(WorkReport workReport) {
        //查询工作汇报详情
        WorkReportVo detail = workReportService.selectWorkReportInfo(workReport);
        detail.setReplyRealName(getReplyRealName(detail));
        detail.setReplyDeptName(getReplyDeptName(detail));
        //查询接收人单位(名称)信息
        return R.data(detail);
    }
    /**
     * 获取接收人的单位信息
     * @param detail 汇报详情
     * @return
     */
    private String getReplyDeptName(WorkReportVo detail) {
        List<String> replyDeptIds = Arrays.asList(detail.getReplyDeptIds().split(","));
        StringBuilder replyDeptNameInfo = new StringBuilder();
        for (String deptId : replyDeptIds) {
            //查询接收人单位信息
            Dept deptDetail = deptService.getById(Long.parseLong(deptId));
            replyDeptNameInfo = replyDeptNameInfo.append(deptDetail.getDeptName()).append(",");
        }
        //截取
        return replyDeptNameInfo.substring(0, replyDeptNameInfo.length() - 1);
    }
    /**
     * 获取接收人的单位id(dept)信息
     * @param
     * @return
     */
    private String getReplyDeptIds(String detail) {
        List<String> userIds = Arrays.asList(detail.split(","));
        List<String> list = new ArrayList<>();
        for (String userId : userIds) {
            //查询接收人单位信息
            User userDetail = userService.getById(userId);
            list.add(userDetail.getDeptId());
        }
        //去重
        List<String> collect = list.stream().distinct().collect(Collectors.toList());
        //截取
        return String.join(",",collect);
    }
    /**
     * 查询接收人姓名信息
     *
     * @param detail 汇报详情
     * @return
     */
    private String getReplyRealName(WorkReportVo detail){
        List<String> userIds = Arrays.asList(detail.getReceivedIds().split(","));
        StringBuilder replyRealNameInfo = new StringBuilder();
        for (String userId : userIds) {
            //查询接收人姓名信息
//            User user = new User();
//            user.setCardid(idCardNo);
//            User userDetail = userService.getOne(Condition.getQueryWrapper(user));
            User userDetail = userService.getById(userId);
            replyRealNameInfo = replyRealNameInfo.append(userDetail.getRealName()).append(",");
        }
        //截取
        return replyRealNameInfo.substring(0, replyRealNameInfo.length() - 1);
    }
}
src/main/java/org/springblade/modules/workreport/entity/WorkReport.java
New file
@@ -0,0 +1,107 @@
package org.springblade.modules.workreport.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
 * 工作汇报实体类
 * @author zhongrj
 * @time 2021-07-15
 */
@Data
@TableName("sys_work_report")
public class WorkReport implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 工作汇报主键id
     */
    @TableId(value = "id",type = IdType.AUTO)
    private Long id;
    /**
     * 汇报类别(1:保安向保安,2:保安向民警汇报,3:民警向民警)
     */
    private Integer category;
    /**
     * 汇报类型  1:日报  2:周报  3:月报
     */
    private Integer type;
    /**
     * 汇报内容
     */
    private String content;
    /**
     * 备注
     */
    @TableField("work_desc")
    private String workDesc;
    /**
     * 汇报人身份证号
     */
    @TableField("id_card_no")
    private String idCardNo;
    /**
     * 接收人id(存身份证号)
     */
    @TableField("received_ids")
    private String receivedIds;
    /**
     * 汇报时间
     */
    @TableField("report_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date reportTime;
    /**
     * 回复时间
     */
    @TableField("reply_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date replyTime;
    /**
     * 回复内容
     */
    @TableField("reply_content")
    private String replyContent;
    /**
     * 发送人部门id
     */
    @TableField("dept_id")
    private String deptId;
    /**
     * 接收人部门id
     */
    @TableField("reply_dept_ids")
    private String replyDeptIds;
    /**
     * 汇报人 user id
     */
    @TableField("user_id")
    private Long userId;
}
src/main/java/org/springblade/modules/workreport/mapper/WorkReportMapper.java
New file
@@ -0,0 +1,40 @@
package org.springblade.modules.workreport.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.modules.workreport.entity.WorkReport;
import org.springblade.modules.workreport.vo.WorkReportVo;
import java.util.List;
/**
 * 工作汇报Mapper 接口
 * @author zhongrj
 */
public interface WorkReportMapper extends BaseMapper<WorkReport> {
    /**
     * 自定义分页
     *
     * @param page   分页
     * @param workReport 实体
     * @return
     */
    List<WorkReportVo> selectWorkReportPage(IPage page, @Param("workReport") WorkReportVo workReport);
    /**
     * 详情
     * @param workReport 工作汇报信息对象
     */
    WorkReportVo selectWorkReportInfo(@Param("workReport") WorkReport workReport);
    /**
     * 自定义分页--接收到的汇报信息page
     * @param  page,size
     * @param workReport 工作汇报信息对象
     */
    List<WorkReportVo> selectWorkReplyPage(IPage<WorkReportVo> page,@Param("workReport") WorkReportVo workReport);
}
src/main/java/org/springblade/modules/workreport/mapper/WorkReportMapper.xml
New file
@@ -0,0 +1,87 @@
<?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.workreport.mapper.WorkReportMapper">
    <!--工作汇报分页信息-->
    <select id="selectWorkReportPage" resultType="org.springblade.modules.workreport.vo.WorkReportVo">
        SELECT
            swr.*,bu.real_name realName,bt.dept_name AS deptName
        FROM
            sys_work_report swr
        left join
            blade_user bu
        on
            bu.id = swr.user_id
        LEFT JOIN
            blade_dept bt
        ON
            swr.dept_id = bt.id
        WHERE
            1=1
        <if test="workReport.realName!=null and  workReport.realName!=''">
            and bu.real_name like concat('%', #{workReport.realName},'%')
        </if>
        <if test="workReport.type!=null">
            and swr.type = #{workReport.type}
        </if>
        <if test="workReport.userId!=null">
            and swr.user_id = #{workReport.userId}
        </if>
        <if test="workReport.category!=null">
            and swr.category = #{workReport.category}
        </if>
    </select>
    <!--工作汇报分页信息-->
    <select id="selectWorkReplyPage" resultType="org.springblade.modules.workreport.vo.WorkReportVo">
        SELECT
            swr.*,bu.real_name realName,bt.dept_name AS deptName
        FROM
            sys_work_report swr
        left join
            blade_user bu
        on
            bu.id = swr.user_id
        LEFT JOIN
            blade_dept bt
        ON
            swr.dept_id = bt.id
        WHERE
            1=1
        <if test="workReport.realName!=null and  workReport.realName!=''">
            and bu.real_name like concat('%', #{workReport.realName},'%')
        </if>
        <if test="workReport.type!=null">
            and swr.type = #{workReport.type}
        </if>
        <if test="workReport.userId!=null">
            and swr.received_ids like concat('%', #{workReport.userId},'%')
        </if>
        <if test="workReport.category!=null">
            and swr.category = #{workReport.category}
        </if>
    </select>
    <!--工作汇报详情信息-->
    <select id="selectWorkReportInfo" resultType="org.springblade.modules.workreport.vo.WorkReportVo">
        SELECT
        swr.*,bu.real_name realName,bt.dept_name AS deptName
        FROM
        sys_work_report swr
        left join
        blade_user bu
        on
        bu.id = swr.user_id
        LEFT JOIN
        blade_dept bt
        ON
        swr.dept_id = bt.id
        WHERE
        1=1
        <if test="workReport.id!=null">
            and swr.id = #{workReport.id}
        </if>
    </select>
</mapper>
src/main/java/org/springblade/modules/workreport/service/WorkReportService.java
New file
@@ -0,0 +1,35 @@
package org.springblade.modules.workreport.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.modules.workreport.entity.WorkReport;
import org.springblade.modules.workreport.vo.WorkReportVo;
/**
 * 工作汇报服务类
 * @author zhongrj
 */
public interface WorkReportService extends IService<WorkReport> {
    /**
     * 自定义分页
     * @param page
     * @param workReport
     * @return
     */
    IPage<WorkReportVo> selectWorkReportPage(IPage<WorkReportVo> page, WorkReportVo workReport);
    /**
     * 详情
     * @param workReport 工作汇报信息对象
     */
    WorkReportVo selectWorkReportInfo(WorkReport workReport);
    /**
     * 自定义分页--接收到的汇报信息page
     * @param  page,size
     * @param workReport 工作汇报信息对象
     */
    IPage<WorkReportVo> selectWorkReplyPage(IPage<WorkReportVo> page, WorkReportVo workReport);
}
src/main/java/org/springblade/modules/workreport/service/impl/WorkReportServiceImpl.java
New file
@@ -0,0 +1,42 @@
package org.springblade.modules.workreport.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.modules.workreport.entity.WorkReport;
import org.springblade.modules.workreport.mapper.WorkReportMapper;
import org.springblade.modules.workreport.service.WorkReportService;
import org.springblade.modules.workreport.vo.WorkReportVo;
import org.springframework.stereotype.Service;
/**
 * 工作汇报服务实现类
 * @author zhongrj
 */
@Service
public class WorkReportServiceImpl extends ServiceImpl<WorkReportMapper, WorkReport> implements WorkReportService {
    @Override
    public IPage<WorkReportVo> selectWorkReportPage(IPage<WorkReportVo> page, WorkReportVo workReport) {
        return page.setRecords(baseMapper.selectWorkReportPage(page, workReport));
    }
    /**
     * 详情
     * @param workReport 工作汇报信息对象
     */
    @Override
    public WorkReportVo selectWorkReportInfo(WorkReport workReport) {
        return baseMapper.selectWorkReportInfo(workReport);
    }
    /**
     * 自定义分页--接收到的汇报信息page
     * @param  page,size
     * @param workReport 工作汇报信息对象
     */
    @Override
    public IPage<WorkReportVo> selectWorkReplyPage(IPage<WorkReportVo> page, WorkReportVo workReport) {
        return page.setRecords(baseMapper.selectWorkReplyPage(page, workReport));
    }
}
src/main/java/org/springblade/modules/workreport/vo/WorkReportVo.java
New file
@@ -0,0 +1,35 @@
package org.springblade.modules.workreport.vo;
import lombok.Data;
import org.springblade.modules.workreport.entity.WorkReport;
import java.io.Serializable;
/**
 * @author zhongrj
 */
@Data
public class WorkReportVo extends WorkReport implements Serializable {
    /**
     * 发送人姓名
     */
    private String realName;
    /**
     * 汇报人所在单位名称
     */
    private String deptName;
    /**
     * 接收人所在单位名称
     */
    private String replyDeptName;
    /**
     * 接收人姓名
     */
    private String replyRealName;
}
src/main/resources/application.yml
@@ -200,6 +200,7 @@
      - /car/**
      - /gun/**
      - /trainingRegistration/**
      - /workReport/**
    #授权认证配置
    auth:
      - method: ALL