From b236dd0d61a9130a842425d7c7d63cb9910ba8be Mon Sep 17 00:00:00 2001 From: 龚焕茏 <2842157468@qq.com> Date: 星期二, 14 五月 2024 10:09:47 +0800 Subject: [PATCH] feat:部门调动 --- src/main/java/com/mindskip/xzs/service/UserDepartMentService.java | 3 src/main/java/com/mindskip/xzs/service/impl/UserDepartMentServiceImpl.java | 6 src/main/java/com/mindskip/xzs/repository/UserDepartmentMapper.java | 3 src/main/java/com/mindskip/xzs/domain/enums/DepartmentExamineEnum.java | 32 ++++ src/main/java/com/mindskip/xzs/controller/admin/UserController.java | 17 +- src/main/resources/mapper/UserMapper.xml | 2 src/main/resources/mapper/UserDepartmentMapper.xml | 8 + src/main/java/com/mindskip/xzs/service/impl/DepartmentExamineServiceImpl.java | 51 +++++++ src/main/java/com/mindskip/xzs/domain/DepartmentExamine.java | 67 +++++++++ src/main/java/com/mindskip/xzs/controller/admin/DepartmentExamineController.java | 52 +++++++ src/main/java/com/mindskip/xzs/repository/DepartmentExamineMapper.java | 22 +++ src/main/java/com/mindskip/xzs/domain/vo/DepartmentExamineVO.java | 70 ++++++++++ src/main/java/com/mindskip/xzs/service/IDepartmentExamineService.java | 21 +++ src/main/resources/mapper/DepartmentExamineMapper.xml | 23 +++ src/main/java/com/mindskip/xzs/viewmodel/admin/user/UserResponseVM.java | 10 + 15 files changed, 376 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/mindskip/xzs/controller/admin/DepartmentExamineController.java b/src/main/java/com/mindskip/xzs/controller/admin/DepartmentExamineController.java new file mode 100644 index 0000000..075741a --- /dev/null +++ b/src/main/java/com/mindskip/xzs/controller/admin/DepartmentExamineController.java @@ -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)); + } + +} diff --git a/src/main/java/com/mindskip/xzs/controller/admin/UserController.java b/src/main/java/com/mindskip/xzs/controller/admin/UserController.java index 623b48d..db30138 100644 --- a/src/main/java/com/mindskip/xzs/controller/admin/UserController.java +++ b/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())); diff --git a/src/main/java/com/mindskip/xzs/domain/DepartmentExamine.java b/src/main/java/com/mindskip/xzs/domain/DepartmentExamine.java new file mode 100644 index 0000000..359307f --- /dev/null +++ b/src/main/java/com/mindskip/xzs/domain/DepartmentExamine.java @@ -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; + + +} diff --git a/src/main/java/com/mindskip/xzs/domain/enums/DepartmentExamineEnum.java b/src/main/java/com/mindskip/xzs/domain/enums/DepartmentExamineEnum.java new file mode 100644 index 0000000..1a72054 --- /dev/null +++ b/src/main/java/com/mindskip/xzs/domain/enums/DepartmentExamineEnum.java @@ -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; + } + +} diff --git a/src/main/java/com/mindskip/xzs/domain/vo/DepartmentExamineVO.java b/src/main/java/com/mindskip/xzs/domain/vo/DepartmentExamineVO.java new file mode 100644 index 0000000..6746d9b --- /dev/null +++ b/src/main/java/com/mindskip/xzs/domain/vo/DepartmentExamineVO.java @@ -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; + + +} diff --git a/src/main/java/com/mindskip/xzs/repository/DepartmentExamineMapper.java b/src/main/java/com/mindskip/xzs/repository/DepartmentExamineMapper.java new file mode 100644 index 0000000..63c3a02 --- /dev/null +++ b/src/main/java/com/mindskip/xzs/repository/DepartmentExamineMapper.java @@ -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); +} diff --git a/src/main/java/com/mindskip/xzs/repository/UserDepartmentMapper.java b/src/main/java/com/mindskip/xzs/repository/UserDepartmentMapper.java index 2b5b30e..7dd92cc 100644 --- a/src/main/java/com/mindskip/xzs/repository/UserDepartmentMapper.java +++ b/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); } diff --git a/src/main/java/com/mindskip/xzs/service/IDepartmentExamineService.java b/src/main/java/com/mindskip/xzs/service/IDepartmentExamineService.java new file mode 100644 index 0000000..a07ddc2 --- /dev/null +++ b/src/main/java/com/mindskip/xzs/service/IDepartmentExamineService.java @@ -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); +} diff --git a/src/main/java/com/mindskip/xzs/service/UserDepartMentService.java b/src/main/java/com/mindskip/xzs/service/UserDepartMentService.java index bd2b247..1c5d8de 100644 --- a/src/main/java/com/mindskip/xzs/service/UserDepartMentService.java +++ b/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); } diff --git a/src/main/java/com/mindskip/xzs/service/impl/DepartmentExamineServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/DepartmentExamineServiceImpl.java new file mode 100644 index 0000000..c4dc2da --- /dev/null +++ b/src/main/java/com/mindskip/xzs/service/impl/DepartmentExamineServiceImpl.java @@ -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(); + } +} diff --git a/src/main/java/com/mindskip/xzs/service/impl/UserDepartMentServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/UserDepartMentServiceImpl.java index 17ff5f9..100bd54 100644 --- a/src/main/java/com/mindskip/xzs/service/impl/UserDepartMentServiceImpl.java +++ b/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); + } } diff --git a/src/main/java/com/mindskip/xzs/viewmodel/admin/user/UserResponseVM.java b/src/main/java/com/mindskip/xzs/viewmodel/admin/user/UserResponseVM.java index 0f889a7..ce8318e 100644 --- a/src/main/java/com/mindskip/xzs/viewmodel/admin/user/UserResponseVM.java +++ b/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; } diff --git a/src/main/resources/mapper/DepartmentExamineMapper.xml b/src/main/resources/mapper/DepartmentExamineMapper.xml new file mode 100644 index 0000000..c74b34e --- /dev/null +++ b/src/main/resources/mapper/DepartmentExamineMapper.xml @@ -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> diff --git a/src/main/resources/mapper/UserDepartmentMapper.xml b/src/main/resources/mapper/UserDepartmentMapper.xml index 8f97bd9..a2f68c8 100644 --- a/src/main/resources/mapper/UserDepartmentMapper.xml +++ b/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" /> diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml index 45aa42a..67c6b80 100644 --- a/src/main/resources/mapper/UserMapper.xml +++ b/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 -- Gitblit v1.8.0