From d6d271edda3a71e18ec246ac87b5a6bcae54291e Mon Sep 17 00:00:00 2001 From: xiao-fajia <1665375861@qq.com> Date: Tue, 13 Aug 2024 10:40:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=81=E4=B8=9A=E7=AE=A1=E7=90=86-=E5=91=98?= =?UTF-8?q?=E5=B7=A5=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iocoder/yudao/common/BaseConstants.java | 2 + .../common/CommonErrorCodeConstants.java | 3 +- .../yudao/common/DictBaseConstants.java | 3 +- .../admin/CompanyStaffChangeController.java | 33 ++-- .../admin/CompanyStaffController.java | 84 ++++++--- .../module/staff/entity/CompanyStaff.java | 14 +- .../staff/entity/CompanyStaffChange.java | 4 +- .../mapper/CompanyStaffChangeMapper.java | 8 + .../service/CompanyStaffChangeService.java | 20 ++- .../staff/service/CompanyStaffService.java | 16 ++ .../staff/service/UniqueCodeService.java | 9 +- .../impl/CompanyStaffChangeServiceImpl.java | 102 +++++++---- .../service/impl/CompanyStaffServiceImpl.java | 165 ++++++++++++------ .../service/impl/UniqueCodeServiceImpl.java | 25 ++- .../staff/vo/CompanyStaffChangeReqVO.java | 29 +++ .../mapper/staff/CompanyStaffChangeMapper.xml | 111 ++++++++++++ .../mapper/staff/CompanyStaffMapper.xml | 39 +++-- .../module/system/api/user/AdminUserApi.java | 9 + .../module/system/api/user/dto/UserDTO.java | 5 + .../system/api/user/AdminUserApiImpl.java | 12 ++ 20 files changed, 529 insertions(+), 164 deletions(-) diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/common/BaseConstants.java b/dl-module-base/src/main/java/cn/iocoder/yudao/common/BaseConstants.java index 8f98162a..d4778c9b 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/common/BaseConstants.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/common/BaseConstants.java @@ -33,4 +33,6 @@ public class BaseConstants { public static final String LABEL_TYPE = "default"; /** 唯一推广码生成长度 */ public static final Integer UNIQUE_CODE_LEN = 6; + /**企业功能标识*/ + public static final String FUNC_COMPANY = "company"; } diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/common/CommonErrorCodeConstants.java b/dl-module-base/src/main/java/cn/iocoder/yudao/common/CommonErrorCodeConstants.java index b02002c7..3be789cf 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/common/CommonErrorCodeConstants.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/common/CommonErrorCodeConstants.java @@ -7,5 +7,6 @@ public interface CommonErrorCodeConstants extends ErrorCodeConstants { /** 企业管理-员工管理 */ ErrorCode UNIQUE_CODE_CREATE_REPEAT = new ErrorCode(2_002_000_000, "唯一推广码生成失败"); - ErrorCode STAFF_CHANGE_CREATE_REPEAT = new ErrorCode(2_002_000_001, "交出或接收员工已有交接记录"); + ErrorCode STAFF_CHANGE_CREATE_REPEAT = new ErrorCode(2_002_000_001, "该员工工作已交接"); + ErrorCode STAFF_NOT_CHANGE = new ErrorCode(2_002_000_003, "该员工还有工作未交接,不可删除"); } diff --git a/dl-module-base/src/main/java/cn/iocoder/yudao/common/DictBaseConstants.java b/dl-module-base/src/main/java/cn/iocoder/yudao/common/DictBaseConstants.java index 35db1e49..27655086 100644 --- a/dl-module-base/src/main/java/cn/iocoder/yudao/common/DictBaseConstants.java +++ b/dl-module-base/src/main/java/cn/iocoder/yudao/common/DictBaseConstants.java @@ -17,5 +17,6 @@ public class DictBaseConstants { public static final String DICT_SIGN_TYPE = "cus_sign_type"; /**性别*/ public static final String DICT_SYS_USER_SEX = "system_user_sex"; - + /**学历*/ + public static final String COMPANY_STAFF_EDU = "company_staff_edu"; } diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/controller/admin/CompanyStaffChangeController.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/controller/admin/CompanyStaffChangeController.java index 8f427a82..0b032784 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/controller/admin/CompanyStaffChangeController.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/controller/admin/CompanyStaffChangeController.java @@ -1,10 +1,12 @@ package cn.iocoder.yudao.module.staff.controller.admin; import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.module.staff.entity.CompanyStaff; +import cn.iocoder.yudao.module.staff.entity.CompanyStaffChange; import cn.iocoder.yudao.module.staff.service.CompanyStaffChangeService; +import cn.iocoder.yudao.module.staff.vo.CompanyStaffChangeReqVO; import cn.iocoder.yudao.module.staff.vo.CompanyStaffChangeRespVO; -import cn.iocoder.yudao.module.staff.vo.CompanyStaffRespVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.security.access.prepost.PreAuthorize; @@ -12,7 +14,6 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -30,6 +31,12 @@ public class CompanyStaffChangeController { @Resource private CompanyStaffChangeService staffChangeService; + /** + * 创建交接信息 + * @author 小李 + * @date 14:30 2024/8/12 + * @param staffChangeRespVO 交接双方 + **/ @PostMapping("/create") @Operation(summary = "创建企业管理-员工交接表信息") @PreAuthorize("@ss.hasPermission('company:staff:change')") @@ -39,15 +46,19 @@ public class CompanyStaffChangeController { } /** - * 查询交接双方信息 * @author 小李 - * @date 18:26 2024/8/8 - * @param id 接收方员工ID - **/ - @GetMapping("/changeItem") + * @date 18:56 2024/8/12 + * @param staffChangeReqVO 查询条件对象 + * @param pageNo 页码 + * @param pageSize 条数 + **/ + @GetMapping("/page") @Operation(summary = "查询企业管理-员工交接表信息及交接双方") - @PreAuthorize("@ss.hasPermission('company:staff:query')") - public CommonResult getChangeStaff(@RequestParam("id") String id){ - return success(staffChangeService.getChangeStaff(id)); + @PreAuthorize("@ss.hasPermission('company:staffChange:query')") + public CommonResult> getStaffChangePage(CompanyStaffChangeReqVO staffChangeReqVO, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize){ + Page page = new Page<>(pageNo, pageSize); + return success(staffChangeService.getStaffChangePage(staffChangeReqVO, page)); } } diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/controller/admin/CompanyStaffController.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/controller/admin/CompanyStaffController.java index fe3ced6a..4e8421e6 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/controller/admin/CompanyStaffController.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/controller/admin/CompanyStaffController.java @@ -2,19 +2,18 @@ package cn.iocoder.yudao.module.staff.controller.admin; import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.module.label.entity.Label; import cn.iocoder.yudao.module.staff.entity.CompanyStaff; import cn.iocoder.yudao.module.staff.service.CompanyStaffService; import cn.iocoder.yudao.module.staff.vo.CompanyStaffReqVO; import cn.iocoder.yudao.module.staff.vo.CompanyStaffRespVO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; +import org.apache.ibatis.annotations.Param; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -31,9 +30,10 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; /** * 企业管理-员工信息表 控制层 + * * @author 小李 * @date 17:14 2024/8/6 -**/ + **/ @RestController @RequestMapping("/company/staff") @Tag(name = "管理后台 - 企业管理 - 员工管理") @@ -45,28 +45,30 @@ public class CompanyStaffController { /** * 分页查询 + * + * @param pageReqVO 查询条件对象 + * @param pageNo 页码 + * @param pageSize 条数 * @author 小李 * @date 17:19 2024/8/6 - * @param pageReqVO 查询条件对象 - * @param pageNo 页码 - * @param pageSize 条数 - **/ + **/ @GetMapping("/page") @Operation(summary = "获得企业管理-员工信息表信息分页") @PreAuthorize("@ss.hasPermission('company:staff:query')") public CommonResult> getCompanyStaffPage(CompanyStaffReqVO pageReqVO, - @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, - @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { Page page = new Page<>(pageNo, pageSize); return success(staffService.queryListPage(pageReqVO, page)); } /** * 新增员工 + * + * @param staffRespVO 员工对象 * @author 小李 * @date 17:20 2024/8/6 - * @param staffRespVO 员工对象 - **/ + **/ @PostMapping("/create") @Operation(summary = "创建企业管理-员工信息表信息") @PreAuthorize("@ss.hasPermission('company:staff:create')") @@ -77,10 +79,11 @@ public class CompanyStaffController { /** * 修改员工 + * + * @param staffRespVO 员工对象 * @author 小李 * @date 17:24 2024/8/6 - * @param staffRespVO 员工对象 - **/ + **/ @PutMapping("/update") @Operation(summary = "更新企业管理-员工信息表信息") @PreAuthorize("@ss.hasPermission('company:staff:update')") @@ -91,10 +94,11 @@ public class CompanyStaffController { /** * 删除员工 + * + * @param id 员工id * @author 小李 * @date 17:28 2024/8/6 - * @param id 员工id - **/ + **/ @DeleteMapping("/delete") @Operation(summary = "删除企业管理-员工信息表信息") @Parameter(name = "id", description = "编号", required = true) @@ -106,10 +110,11 @@ public class CompanyStaffController { /** * 查询员工 + * + * @param id * @author 小李 * @date 17:59 2024/8/6 - * @param id - **/ + **/ @GetMapping("/get") @Operation(summary = "获得企业管理-员工信息表信息") @Parameter(name = "id", description = "编号", required = true, example = "1024") @@ -121,44 +126,71 @@ public class CompanyStaffController { /** * 导出员工信息表 + * + * @param pageReqVO 查询条件--暂时导出所有 + * @param response 响应体 * @author 小李 * @date 18:01 2024/8/6 - * @param pageReqVO 查询条件--暂时导出所有 - * @param response 响应体 - **/ + **/ @GetMapping("/export-excel") @Operation(summary = "导出企业管理-员工信息表 Excel") @PreAuthorize("@ss.hasPermission('company:staff:export')") @ApiAccessLog(operateType = EXPORT) public void exportCompanyStaffExcel(CompanyStaffReqVO pageReqVO, - HttpServletResponse response) throws IOException { + HttpServletResponse response) throws IOException { List list = staffService.list(); // 导出 Excel Map columnWidthMap = new HashMap<>(); // 第一列的索引是0,宽度设置为20个字符宽 columnWidthMap.put(9, 20); columnWidthMap.put(10, 20); - ExcelUtils.write(response, "企业信息表.xls", "数据", CompanyStaff.class, list,columnWidthMap); + ExcelUtils.write(response, "企业信息表.xls", "数据", CompanyStaff.class, list, columnWidthMap); } /** * 获取当前功能的标签 + * * @author 小李 * @date 14:59 2024/8/7 - **/ + **/ @GetMapping("/labels") - public CommonResult> getLabels(){ + public CommonResult> getLabels() { return success(staffService.getLabels()); } /** * 获取当前登录用户部门下所有员工信息 + * * @author 小李 * @date 15:54 2024/8/8 - **/ + **/ @GetMapping("/list") - public CommonResult> getStaffList(){ + public CommonResult> getStaffList() { return success(staffService.getStaffList()); } + /** + * 验证工号是否重复 + * + * @param workNo 输入的工号 + * @author 小李 + * @date 14:03 2024/8/9 + **/ + @GetMapping("/checkWorkNo") + public CommonResult checkWorkNo(@RequestParam("workNo") String workNo) { + return success(staffService.checkWorkNo(workNo)); + } + + /** + * 重置员工登录密码 + * + * @param staffRespVO 员工对象 + * @author 小李 + * @date 16:21 2024/8/9 + **/ + @PostMapping("/resetPassword") + public CommonResult resetPassword(@RequestBody CompanyStaffRespVO staffRespVO) { + staffService.resetPassword(staffRespVO); + return CommonResult.ok(); + } } diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/entity/CompanyStaff.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/entity/CompanyStaff.java index dd33650a..add42b79 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/entity/CompanyStaff.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/entity/CompanyStaff.java @@ -1,6 +1,8 @@ package cn.iocoder.yudao.module.staff.entity; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; @@ -15,6 +17,8 @@ import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; import java.util.Date; +import static cn.iocoder.yudao.common.DictBaseConstants.*; + /** * 企业管理-员工信息实体 * @author 小李 @@ -51,7 +55,8 @@ public class CompanyStaff extends TenantBaseDO { private String tel; /** 性别 */ - @ExcelProperty("性别") + @ExcelProperty(value = "性别", converter = DictConvert.class) + @DictFormat(DICT_SYS_USER_SEX) private String sex; /** 家庭住址 */ @@ -65,7 +70,7 @@ public class CompanyStaff extends TenantBaseDO { private Date workDate; /** 工龄 */ - @ExcelProperty("工龄") + @ExcelProperty("工龄(年)") private BigDecimal workYear; /** 入职日期 */ @@ -75,11 +80,12 @@ public class CompanyStaff extends TenantBaseDO { private Date joinedDate; /** 司龄 */ - @ExcelProperty("司龄") + @ExcelProperty("司龄(年)") private BigDecimal joinedYear; /** 学历 */ - @ExcelProperty("学历") + @ExcelProperty(value = "学历", converter = DictConvert.class) + @DictFormat(COMPANY_STAFF_EDU) private String education; /** 个人简介 */ diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/entity/CompanyStaffChange.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/entity/CompanyStaffChange.java index 3b46ed3a..230dd4ce 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/entity/CompanyStaffChange.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/entity/CompanyStaffChange.java @@ -32,8 +32,8 @@ public class CompanyStaffChange extends TenantBaseDO { private Long newUserId; /** 交接时间 */ - @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8") - @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8") + @DateTimeFormat(pattern="yyyy-MM-dd") private Date changeTime; /** 附件urls(infra_file表中的url,多个英文逗号拼接) */ diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/mapper/CompanyStaffChangeMapper.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/mapper/CompanyStaffChangeMapper.java index ae617b06..89293260 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/mapper/CompanyStaffChangeMapper.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/mapper/CompanyStaffChangeMapper.java @@ -1,8 +1,13 @@ package cn.iocoder.yudao.module.staff.mapper; import cn.iocoder.yudao.module.staff.entity.CompanyStaffChange; +import cn.iocoder.yudao.module.staff.vo.CompanyStaffChangeReqVO; +import cn.iocoder.yudao.module.staff.vo.CompanyStaffChangeRespVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 企业管理-员工交接记录 @@ -11,4 +16,7 @@ import org.apache.ibatis.annotations.Mapper; **/ @Mapper public interface CompanyStaffChangeMapper extends BaseMapper { + + IPage getStaffChangePage(@Param("map") CompanyStaffChangeReqVO staffChangeReqVO, Page page); + } diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/CompanyStaffChangeService.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/CompanyStaffChangeService.java index 1e7cd9e6..2494a352 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/CompanyStaffChangeService.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/CompanyStaffChangeService.java @@ -1,11 +1,12 @@ package cn.iocoder.yudao.module.staff.service; import cn.iocoder.yudao.module.staff.entity.CompanyStaffChange; +import cn.iocoder.yudao.module.staff.vo.CompanyStaffChangeReqVO; import cn.iocoder.yudao.module.staff.vo.CompanyStaffChangeRespVO; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -import java.util.List; - /** * 企业管理-员工交接记录 接口 * @author 小李 @@ -22,10 +23,17 @@ public interface CompanyStaffChangeService extends IService void createChangeStaff(CompanyStaffChangeRespVO staffChangeRespVO); /** - * 查询交接双方信息 * @author 小李 - * @date 18:26 2024/8/8 - * @param id 接收方员工ID + * @date 19:00 2024/8/12 + * @param staffChangeReqVO 分页对象 + **/ + IPage getStaffChangePage(CompanyStaffChangeReqVO staffChangeReqVO, Page page); + + /** + * 判断交出方工作是否已交接 + * @author 小李 + * @date 18:02 2024/8/12 + * @param userId 交出方ID **/ - CompanyStaffChangeRespVO getChangeStaff(String id); + Boolean checkChangeStatus(Long userId); } diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/CompanyStaffService.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/CompanyStaffService.java index 1af50637..ca48208d 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/CompanyStaffService.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/CompanyStaffService.java @@ -71,4 +71,20 @@ public interface CompanyStaffService extends IService { * @date 15:54 2024/8/8 **/ List getStaffList(); + + /** + * 重置员工登录密码 + * @author 小李 + * @date 16:21 2024/8/9 + * @param staffRespVO 员工对象 + **/ + void resetPassword(CompanyStaffRespVO staffRespVO); + + /** + * 验证工号是否重复 + * @author 小李 + * @date 14:03 2024/8/9 + * @param workNo 输入的工号 + **/ + Boolean checkWorkNo(String workNo); } diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/UniqueCodeService.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/UniqueCodeService.java index 041a45e5..f488c7c3 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/UniqueCodeService.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/UniqueCodeService.java @@ -11,11 +11,10 @@ import com.baomidou.mybatisplus.extension.service.IService; public interface UniqueCodeService extends IService { /** - * 新增唯一推广码 + * 生成唯一推广码 * @author 小李 * @date 9:59 2024/8/8 - * @param uniqueCode - * - * @return*/ - int insertUniqueCode(String uniqueCode); + * @return 可使用推广码 + **/ + String createUniqueCode(); } diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/impl/CompanyStaffChangeServiceImpl.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/impl/CompanyStaffChangeServiceImpl.java index f9b82bfc..98bb580d 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/impl/CompanyStaffChangeServiceImpl.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/impl/CompanyStaffChangeServiceImpl.java @@ -1,6 +1,5 @@ package cn.iocoder.yudao.module.staff.service.impl; -import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.common.CommonErrorCodeConstants; import cn.iocoder.yudao.module.staff.entity.CompanyStaff; @@ -8,13 +7,20 @@ import cn.iocoder.yudao.module.staff.entity.CompanyStaffChange; import cn.iocoder.yudao.module.staff.mapper.CompanyStaffChangeMapper; import cn.iocoder.yudao.module.staff.service.CompanyStaffChangeService; import cn.iocoder.yudao.module.staff.service.CompanyStaffService; +import cn.iocoder.yudao.module.staff.vo.CompanyStaffChangeReqVO; import cn.iocoder.yudao.module.staff.vo.CompanyStaffChangeRespVO; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.dynamic.datasource.annotation.DSTransactional; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; /** @@ -36,14 +42,12 @@ public class CompanyStaffChangeServiceImpl extends ServiceImpl().and(itme -> { - itme.eq("old_user_id", staffChangeRespVO.getOldUserId()) - .eq("new_user_id", staffChangeRespVO.getNewUserId()); - }).or().eq("old_user_id", staffChangeRespVO.getOldUserId()) - .or().eq("new_user_id", staffChangeRespVO.getNewUserId())); - if (ObjectUtil.isNotEmpty(staffChange)) { + // 确定交出方目前有没有工作可以交接 + Boolean flag = checkChangeStatus(staffChangeRespVO.getOldUserId()); + if (flag) { throw exception(CommonErrorCodeConstants.STAFF_CHANGE_CREATE_REPEAT); } baseMapper.insert(staffChangeRespVO); @@ -51,33 +55,65 @@ public class CompanyStaffChangeServiceImpl extends ServiceImpl().eq("id", id)); - // 2 根据获取的员工信息中的userId获取交接记录 - CompanyStaffChange staffChange = baseMapper.selectOne(new QueryWrapper() - .eq("new_user_id", staff.getUserId()) - .or() - .eq("old_user_id", staff.getUserId()) - ); - if (ObjectUtil.isNotEmpty(staffChange)) { - result = new CompanyStaffChangeRespVO(); - BeanUtil.copyProperties(staffChange, result); - // 3 根据交接记录中新老员工的userId查新老员工信息 - CompanyStaff oldStaff = staffService.getOne(new QueryWrapper().eq("user_id", staffChange.getOldUserId())); - CompanyStaff newStaff = staffService.getOne(new QueryWrapper().eq("user_id", staffChange.getNewUserId())); - result.setNewStaff(newStaff); - result.setOldStaff(oldStaff); + public IPage getStaffChangePage(CompanyStaffChangeReqVO staffChangeReqVO, Page page) { + // 如果用户选择了按交接类型搜索(交出、接收),那一定要保证员工姓名、工号、电话有一个不为空才行,不然没有参照 + if (ObjectUtil.isNotEmpty(staffChangeReqVO.getChangeType()) && + (ObjectUtil.isNotEmpty(staffChangeReqVO.getName()) || + ObjectUtil.isNotEmpty(staffChangeReqVO.getWorkNo()) || + ObjectUtil.isNotEmpty(staffChangeReqVO.getTel()) + ) + ) { + // 根据不为空的那个条件去查员工的userId + List list = null; + if (ObjectUtil.isNotEmpty(staffChangeReqVO.getName())){ + list = staffService.list(new LambdaQueryWrapper() + .like(CompanyStaff::getName, staffChangeReqVO.getName()) + ); + }else if (ObjectUtil.isNotEmpty(staffChangeReqVO.getWorkNo())){ + list = staffService.list(new LambdaQueryWrapper() + .like(CompanyStaff::getWorkNo, staffChangeReqVO.getWorkNo()) + ); + }else if (ObjectUtil.isNotEmpty(staffChangeReqVO.getTel())){ + list = staffService.list(new LambdaQueryWrapper() + .like(CompanyStaff::getTel, staffChangeReqVO.getTel()) + ); + } + // 如果查到了结果才处理,没查到不管 + if (ObjectUtil.isNotEmpty(list)){ + List userIds = list.stream().map(item -> item.getUserId()).collect(Collectors.toList()); + if (staffChangeReqVO.getChangeType().equals("0")){ + staffChangeReqVO.setOldUserIds(userIds); + }else{ + staffChangeReqVO.setNewUserIds(userIds); + } + } } - return result; + return baseMapper.getStaffChangePage(staffChangeReqVO, page); + } + + /** + * 判断交出方工作是否已交接 + * + * @param userId 交出方ID + * @author 小李 + * @date 18:02 2024/8/12 + **/ + @Override + public Boolean checkChangeStatus(Long userId) { + // 获取该员工的最新一条记录 + CompanyStaffChange staffChange = baseMapper.selectOne(new LambdaQueryWrapper() + .eq(CompanyStaffChange::getOldUserId, userId) + .or() + .eq(CompanyStaffChange::getNewUserId, userId) + .orderByDesc(CompanyStaffChange::getCreateTime) + .last("limit 1") + ); + // 如果为空或者最后一次相关记录他是交出方,那就返回true,代表他交接了工作没有工作可以交 + return ObjectUtil.isNotEmpty(staffChange) && staffChange.getOldUserId().equals(userId); } } diff --git a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/impl/CompanyStaffServiceImpl.java b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/impl/CompanyStaffServiceImpl.java index 96bb7aca..724c54c8 100644 --- a/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/impl/CompanyStaffServiceImpl.java +++ b/dl-module-company/src/main/java/cn/iocoder/yudao/module/staff/service/impl/CompanyStaffServiceImpl.java @@ -2,26 +2,25 @@ package cn.iocoder.yudao.module.staff.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.RandomUtil; import cn.iocoder.yudao.common.BaseConstants; import cn.iocoder.yudao.common.CommonErrorCodeConstants; -import cn.iocoder.yudao.framework.common.util.io.FileUtils; -import cn.iocoder.yudao.framework.security.core.LoginUser; import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; import cn.iocoder.yudao.module.company.entity.Company; import cn.iocoder.yudao.module.company.service.CompanyService; -import cn.iocoder.yudao.module.infra.api.file.FileApi; -import cn.iocoder.yudao.module.staff.entity.UniqueCode; -import cn.iocoder.yudao.module.staff.service.UniqueCodeService; import cn.iocoder.yudao.module.label.entity.BusiLabel; import cn.iocoder.yudao.module.label.entity.Label; import cn.iocoder.yudao.module.label.service.BusiLabelService; import cn.iocoder.yudao.module.label.service.LabelService; import cn.iocoder.yudao.module.staff.entity.CompanyStaff; +import cn.iocoder.yudao.module.staff.entity.CompanyStaffChange; import cn.iocoder.yudao.module.staff.mapper.CompanyStaffMapper; +import cn.iocoder.yudao.module.staff.service.CompanyStaffChangeService; import cn.iocoder.yudao.module.staff.service.CompanyStaffService; +import cn.iocoder.yudao.module.staff.service.UniqueCodeService; import cn.iocoder.yudao.module.staff.vo.CompanyStaffReqVO; import cn.iocoder.yudao.module.staff.vo.CompanyStaffRespVO; +import cn.iocoder.yudao.module.system.api.dept.DeptApi; +import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import cn.iocoder.yudao.module.system.api.user.dto.UserDTO; @@ -36,7 +35,6 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; import java.util.stream.Collectors; -import java.util.stream.Stream; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -67,6 +65,12 @@ public class CompanyStaffServiceImpl extends ServiceImpl labels = getLabelsByLabelName(staffRespVO.getLabelsArray()); @@ -123,31 +127,21 @@ public class CompanyStaffServiceImpl extends ServiceImpl().eq("mobile_phone", user.getMobile())); + DeptRespDTO loginDept = getLoginDept(loginUser.getDeptId()); + Company company = getLoginCompany(loginDept.getName()); staffRespVO.setCorpId(company.getId()); // 2 生成唯一推广码 - int count = 0; - // 3 生成时判断是否重复,重复就重新生成,最多生成6次 - while (true) { - // 重复生成和长度一样的次数还是重复,就抛异常 - if (count == BaseConstants.UNIQUE_CODE_LEN) { - throw exception(CommonErrorCodeConstants.UNIQUE_CODE_CREATE_REPEAT); - } - String code = RandomUtil.randomStringUpper(BaseConstants.UNIQUE_CODE_LEN); - // 直接新增唯一推码 新增成功就是可以用,反之就是重复 - int flag = uniqueCodeService.insertUniqueCode(code); - if (flag != 0) { - staffRespVO.setUniqueCode(code); - break; - } - count++; + String uniqueCode = uniqueCodeService.createUniqueCode(); + if (!ObjectUtil.isNotEmpty(uniqueCode)){ + throw exception(CommonErrorCodeConstants.UNIQUE_CODE_CREATE_REPEAT); } + staffRespVO.setUniqueCode(uniqueCode); // 3 保存员工信息到数据库 this.save(staffRespVO); - /** 插入标签到业务标签表 */ + /* 插入标签到业务标签表 */ if (ObjectUtil.isNotEmpty(staffRespVO.getLabelsArray())) { // 1 获取所有标签信息 List