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