龚焕茏
2024-05-14 b236dd0d61a9130a842425d7c7d63cb9910ba8be
feat:部门调动
7个文件已修改
8个文件已添加
387 ■■■■■ 已修改文件
src/main/java/com/mindskip/xzs/controller/admin/DepartmentExamineController.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/controller/admin/UserController.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/domain/DepartmentExamine.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/domain/enums/DepartmentExamineEnum.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/domain/vo/DepartmentExamineVO.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/repository/DepartmentExamineMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/repository/UserDepartmentMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/IDepartmentExamineService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/UserDepartMentService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/impl/DepartmentExamineServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/service/impl/UserDepartMentServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/viewmodel/admin/user/UserResponseVM.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/DepartmentExamineMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/UserDepartmentMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/UserMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/controller/admin/DepartmentExamineController.java
New file
@@ -0,0 +1,52 @@
package com.mindskip.xzs.controller.admin;
import com.github.pagehelper.PageInfo;
import com.mindskip.xzs.base.BaseApiController;
import com.mindskip.xzs.base.RestResponse;
import com.mindskip.xzs.domain.DepartmentExamine;
import com.mindskip.xzs.domain.vo.DepartmentExamineVO;
import com.mindskip.xzs.service.IDepartmentExamineService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
/**
 * <p>
 * 部门审核表 前端控制器
 * </p>
 *
 * @author gonghl
 * @since 2024-05-13
 */
@RestController
@RequestMapping("/api/admin/department/examine")
@RequiredArgsConstructor
public class DepartmentExamineController extends BaseApiController {
    private final IDepartmentExamineService departmentExamineService;
    @RequestMapping(value = "list", method = RequestMethod.POST)
    public RestResponse<PageInfo<DepartmentExamineVO>> list(@RequestBody DepartmentExamineVO departmentExamineVO) {
        return RestResponse.ok(departmentExamineService.pageInfo(departmentExamineVO));
    }
    @RequestMapping(value = "save", method = RequestMethod.POST)
    public RestResponse<Boolean> save(@RequestBody DepartmentExamine departmentExamine) {
        departmentExamine.setCreateTime(LocalDateTime.now());
        departmentExamine.setCreateUser(getCurrentUser().getId());
        return RestResponse.ok(departmentExamineService.save(departmentExamine));
    }
    @RequestMapping(value = "delete/{id}", method = RequestMethod.POST)
    public RestResponse<Boolean> delete(@PathVariable Integer id) {
        return RestResponse.ok(departmentExamineService.removeById(id));
    }
    @RequestMapping(value = "audit", method = RequestMethod.POST)
    public RestResponse<Boolean> audit(@RequestBody DepartmentExamineVO departmentExamine) {
        return RestResponse.ok(departmentExamineService.audit(departmentExamine));
    }
}
src/main/java/com/mindskip/xzs/controller/admin/UserController.java
@@ -1,20 +1,19 @@
package com.mindskip.xzs.controller.admin;
import com.github.pagehelper.PageInfo;
import com.mindskip.xzs.base.BaseApiController;
import com.mindskip.xzs.base.RestResponse;
import com.mindskip.xzs.domain.*;
import com.mindskip.xzs.domain.other.KeyValue;
import com.mindskip.xzs.domain.enums.UserStatusEnum;
import com.mindskip.xzs.domain.other.KeyValue;
import com.mindskip.xzs.domain.vo.UserVO;
import com.mindskip.xzs.repository.UserDepartmentMapper;
import com.mindskip.xzs.service.*;
import com.mindskip.xzs.utility.DateTimeUtil;
import com.mindskip.xzs.utility.PageInfoHelper;
import com.mindskip.xzs.utility.convert.UserClassConvert;
import com.mindskip.xzs.utility.excel.ExcelUtils;
import com.mindskip.xzs.viewmodel.admin.user.*;
import com.mindskip.xzs.utility.PageInfoHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -58,15 +57,15 @@
                UserResponseVM.from(d));
        page.setList(page.getList().stream().map(e->{
            List<UserDepartment> userDepartments = userDepartmentMapper.selectByUserId(e.getId());
            String deptIds = "";
            List<Department> list = new ArrayList<>();
            for (UserDepartment userDepartment : userDepartments) {
                Department byId = departmentService.getById(userDepartment.getDepartmentId());
                if(byId != null){
                    deptIds = deptIds + byId.getName();
                    break;
                if (ObjectUtils.isNotEmpty(byId)) {
                    list.add(byId);
                }
            }
            e.setDeptNames(deptIds);
            e.setDeptNames(StringUtils.join(list.stream().map(Department::getName).collect(Collectors.toList()), ","));
            e.setDeptIdList(list.stream().map(Department::getId).collect(Collectors.toList()));
            e.setTagNames(tagService.selectTagNamesByUserId(e.getId()));
            return e;
        }).collect(Collectors.toList()));
src/main/java/com/mindskip/xzs/domain/DepartmentExamine.java
New file
@@ -0,0 +1,67 @@
package com.mindskip.xzs.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.mindskip.xzs.domain.enums.DepartmentExamineEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * <p>
 * 部门审核表
 * </p>
 *
 * @author gonghl
 * @since 2024-05-13
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_department_examine")
public class DepartmentExamine implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 用户id
     */
    private Integer userId;
    /**
     * 部门id
     */
    private String departmentIds;
    /**
     * 所在部门
     */
    private String nowDepartmentIds;
    private Integer createUser;
    private LocalDateTime createTime;
    /**
     * 审核结果
     */
    private DepartmentExamineEnum result;
    /**
     * 审核备注
     */
    private String remark;
    @TableLogic
    private Boolean deleted;
}
src/main/java/com/mindskip/xzs/domain/enums/DepartmentExamineEnum.java
New file
@@ -0,0 +1,32 @@
package com.mindskip.xzs.domain.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;
/**
 * 用户状态
 *
 * @author gonghl
 */
@Getter
public enum DepartmentExamineEnum {
    WAIT("0", "待审核"),
    PASS("1", "审核通过"),
    OVERRULE("2", "审核驳回"),
    ;
    @EnumValue // 标明该字段存入数据库
    private final String code;
    @JsonValue // 标明在转JSON时使用该字段,即响应时
    private final String desc;
    DepartmentExamineEnum(String code, String desc) {
        this.code = code;
        this.desc = desc;
    }
}
src/main/java/com/mindskip/xzs/domain/vo/DepartmentExamineVO.java
New file
@@ -0,0 +1,70 @@
package com.mindskip.xzs.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mindskip.xzs.domain.enums.DepartmentExamineEnum;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * <p>
 * 部门审核表
 * </p>
 *
 * @author gonghl
 * @since 2024-05-13
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class DepartmentExamineVO implements Serializable {
    private static final long serialVersionUID = 1L;
    private Integer id;
    /**
     * 用户id
     */
    private Integer userId;
    private String userName;
    /**
     * 部门id
     */
    private String departmentIds;
    private String departmentName;
    /**
     * 所在部门
     */
    private String nowDepartmentIds;
    private String nowDepartmentName;
    private Integer createUser;
    private String createUserName;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    /**
     * 审核结果
     */
    private DepartmentExamineEnum result;
    /**
     * 审核备注
     */
    private String remark;
    private Boolean deleted;
    private Integer pageIndex;
    private Integer pageSize;
}
src/main/java/com/mindskip/xzs/repository/DepartmentExamineMapper.java
New file
@@ -0,0 +1,22 @@
package com.mindskip.xzs.repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mindskip.xzs.domain.DepartmentExamine;
import com.mindskip.xzs.domain.vo.DepartmentExamineVO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
 * <p>
 * 部门审核表 Mapper 接口
 * </p>
 *
 * @author gonghl
 * @since 2024-05-13
 */
@Mapper
public interface DepartmentExamineMapper extends BaseMapper<DepartmentExamine> {
    List<DepartmentExamineVO> pageInfo(DepartmentExamineVO departmentExamineVO);
}
src/main/java/com/mindskip/xzs/repository/UserDepartmentMapper.java
@@ -2,6 +2,7 @@
import com.mindskip.xzs.domain.UserDepartment;
import com.mindskip.xzs.domain.vo.BaseSelect;
import com.mindskip.xzs.domain.vo.DepartmentExamineVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -22,4 +23,6 @@
    void updateUserDepartMent(UserDepartment userDepartment);
    List<BaseSelect> getDeptUserList(Integer deptId);
    void insertBatchByDepartmentExamine(DepartmentExamineVO departmentExamine);
}
src/main/java/com/mindskip/xzs/service/IDepartmentExamineService.java
New file
@@ -0,0 +1,21 @@
package com.mindskip.xzs.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.mindskip.xzs.domain.DepartmentExamine;
import com.mindskip.xzs.domain.vo.DepartmentExamineVO;
/**
 * <p>
 * 部门审核表 服务类
 * </p>
 *
 * @author gonghl
 * @since 2024-05-13
 */
public interface IDepartmentExamineService extends IService<DepartmentExamine> {
    PageInfo<DepartmentExamineVO> pageInfo(DepartmentExamineVO departmentExamineVO);
    Boolean audit(DepartmentExamineVO departmentExamine);
}
src/main/java/com/mindskip/xzs/service/UserDepartMentService.java
@@ -1,6 +1,7 @@
package com.mindskip.xzs.service;
import com.mindskip.xzs.domain.UserDepartment;
import com.mindskip.xzs.domain.vo.DepartmentExamineVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -18,4 +19,6 @@
    UserDepartment selectByUser(Integer id);
    void updateUserDepartMent(UserDepartment userDepartment);
    void insertBatchByDepartmentExamine(DepartmentExamineVO departmentExamine);
}
src/main/java/com/mindskip/xzs/service/impl/DepartmentExamineServiceImpl.java
New file
@@ -0,0 +1,51 @@
package com.mindskip.xzs.service.impl;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.mindskip.xzs.domain.DepartmentExamine;
import com.mindskip.xzs.domain.vo.DepartmentExamineVO;
import com.mindskip.xzs.repository.DepartmentExamineMapper;
import com.mindskip.xzs.service.IDepartmentExamineService;
import com.mindskip.xzs.service.UserDepartMentService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
 * <p>
 * 部门审核表 服务实现类
 * </p>
 *
 * @author gonghl
 * @since 2024-05-13
 */
@Service
@RequiredArgsConstructor
public class DepartmentExamineServiceImpl extends ServiceImpl<DepartmentExamineMapper, DepartmentExamine> implements IDepartmentExamineService {
    private final UserDepartMentService userDepartMentService;
    @Override
    public PageInfo<DepartmentExamineVO> pageInfo(DepartmentExamineVO departmentExamineVO) {
        return PageHelper.startPage(departmentExamineVO.getPageIndex(), departmentExamineVO.getPageSize(), "id desc").doSelectPageInfo(() ->
                baseMapper.pageInfo(departmentExamineVO)
        );
    }
    @Override
    @Transactional
    public Boolean audit(DepartmentExamineVO departmentExamine) {
        // 审核通过重新绑定
        if ("1".equals(departmentExamine.getResult().getCode())) {
            userDepartMentService.removeByUserId(departmentExamine.getUserId());
            userDepartMentService.insertBatchByDepartmentExamine(departmentExamine);
        }
        return new LambdaUpdateChainWrapper<>(baseMapper)
                .eq(DepartmentExamine::getId, departmentExamine.getId())
                .set(DepartmentExamine::getResult, departmentExamine.getResult())
                .set(DepartmentExamine::getRemark, departmentExamine.getRemark())
                .update();
    }
}
src/main/java/com/mindskip/xzs/service/impl/UserDepartMentServiceImpl.java
@@ -1,6 +1,7 @@
package com.mindskip.xzs.service.impl;
import com.mindskip.xzs.domain.UserDepartment;
import com.mindskip.xzs.domain.vo.DepartmentExamineVO;
import com.mindskip.xzs.repository.UserDepartmentMapper;
import com.mindskip.xzs.service.UserDepartMentService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -54,5 +55,8 @@
        userDepartmentMapper.updateUserDepartMent(userDepartment);
    }
    @Override
    public void insertBatchByDepartmentExamine(DepartmentExamineVO departmentExamine) {
        userDepartmentMapper.insertBatchByDepartmentExamine(departmentExamine);
    }
}
src/main/java/com/mindskip/xzs/viewmodel/admin/user/UserResponseVM.java
@@ -52,6 +52,16 @@
    private String conditionDetail;
    private List<Integer> deptIdList;
    public List<Integer> getDeptIdList() {
        return deptIdList;
    }
    public void setDeptIdList(List<Integer> deptIdList) {
        this.deptIdList = deptIdList;
    }
    public String getConditionDetail() {
        return conditionDetail;
    }
src/main/resources/mapper/DepartmentExamineMapper.xml
New file
@@ -0,0 +1,23 @@
<?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="com.mindskip.xzs.repository.DepartmentExamineMapper">
    <select id="pageInfo" resultType="com.mindskip.xzs.domain.vo.DepartmentExamineVO">
        SELECT a.*,
               GROUP_CONCAT(DISTINCT b.name)  as departmentName,
               GROUP_CONCAT(DISTINCT b2.name) as nowDepartmentName,
               c.real_name                    as createUserName,
               c2.real_name                   as userName
        FROM t_department_examine a
                 LEFT JOIN t_department b ON FIND_IN_SET(b.id, a.department_ids)
                 LEFT JOIN t_department b2 ON FIND_IN_SET(b2.id, a.now_department_ids)
                 left join t_user c on a.create_user = c.id and c.deleted = 0
                 left join t_user c2 on a.user_id = c2.id and c2.deleted = 0
        where a.deleted = 0
        <if test="userName != null">
            and c2.real_name like concat('%', #{userName}, '%')
        </if>
        GROUP BY a.id, a.create_time
        order by a.create_time desc
    </select>
</mapper>
src/main/resources/mapper/UserDepartmentMapper.xml
@@ -17,6 +17,14 @@
               )
    </insert>
    <insert id="insertBatchByDepartmentExamine">
        insert into t_user_department (user_id, department_id)
        values
        <foreach collection="departmentIds.split(',')" item="item" separator=",">
            (#{userId}, #{item})
        </foreach>
    </insert>
    <select id="selectByUserId" parameterType="java.lang.Integer" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List" />
src/main/resources/mapper/UserMapper.xml
@@ -497,7 +497,7 @@
    <select id="getUserByExam" resultType="com.mindskip.xzs.domain.User">
        <![CDATA[
        SELECT
        d.*
        DISTINCT d.*
        FROM t_exam_paper a
        left join t_exam_paper_user b on a.id = b.exam_paper_id and b.deleted = 0
        left join t_exam_paper_answer c on a.id = c.exam_paper_id and c.create_user = b.user_id