新增OA_GOOut_NOT_EXISTS错误码,支持外出申请不存在的场景

在`ErrorCodeConstants`枚举中添加新的错误码`OA_GOOut_NOT_EXISTS`,用于标识外出申请不存在的情况。该错误码的值为1_009_001_112,描述为“外出申请不存在”。权限修改功能及字段支持外勤打卡配置

新增`updateFieldwork`接口,支持修改用户外勤打卡权限。同时,在用户创建和编辑请求体中添加`fieldworkFlag`字段,用于标识用户是否可以进行外勤打卡。

调整用户创建逻辑,去除工厂数字化系统的用户同步

在用户创建逻辑中,去除将工厂用户添加到GPS定位系统的逻辑。这部分代码已被注释掉,不再执行。以上为本次提交的主要变更点,包括错误码的添加、外勤打卡权限的支持以及用户创建逻辑的调整。
This commit is contained in:
furongxin 2024-09-11 19:04:18 +08:00
parent a7621a5117
commit 62c482c1c7
6 changed files with 27 additions and 2 deletions

View File

@ -35,6 +35,7 @@ public interface ErrorCodeConstants {
ErrorCode OA_INCENTIVE_NOT_EXISTS = new ErrorCode(1_009_001_110, "奖惩申请不存在"); ErrorCode OA_INCENTIVE_NOT_EXISTS = new ErrorCode(1_009_001_110, "奖惩申请不存在");
ErrorCode OA_WORK_TASK_NOT_EXISTS = new ErrorCode(1_009_001_110, "工作任务不存在"); ErrorCode OA_WORK_TASK_NOT_EXISTS = new ErrorCode(1_009_001_110, "工作任务不存在");
ErrorCode OA_ENTRY_NOT_EXISTS = new ErrorCode(1_009_001_111, "入职申请不存在"); ErrorCode OA_ENTRY_NOT_EXISTS = new ErrorCode(1_009_001_111, "入职申请不存在");
ErrorCode OA_GOOut_NOT_EXISTS = new ErrorCode(1_009_001_112, "外出申请不存在");
// ========== 流程模型 1-009-002-000 ========== // ========== 流程模型 1-009-002-000 ==========
ErrorCode MODEL_KEY_EXISTS = new ErrorCode(1_009_002_000, "已经存在流程标识为【{}】的流程"); ErrorCode MODEL_KEY_EXISTS = new ErrorCode(1_009_002_000, "已经存在流程标识为【{}】的流程");

View File

@ -77,6 +77,13 @@ public interface AdminUserApi {
@Operation(summary = "创建用户") @Operation(summary = "创建用户")
CommonResult<Long> createUser(@RequestBody UserSaveRespDTO saveRespDTO); CommonResult<Long> createUser(@RequestBody UserSaveRespDTO saveRespDTO);
@PostMapping(PREFIX + "/updateFieldwork")
@Operation(summary = "修改用户外勤打卡权限")
@Parameter(name = "userId", description = "用户id", example = "1024", required = true)
@Parameter(name = "fieldworkFlag", description = "是否可外勤打卡 | 0否 1是", example = "1", required = true)
void updateFieldwork(@RequestParam("userId") Long userId,
@RequestParam("fieldworkFlag") Integer fieldworkFlag);
@GetMapping(PREFIX + "/getUserIdsByUserNature") @GetMapping(PREFIX + "/getUserIdsByUserNature")
@Operation(summary = "获取所有用户性质为外勤的用户") @Operation(summary = "获取所有用户性质为外勤的用户")
@Parameter(name = "userNature", description = "用户性质", example = "3", required = true) @Parameter(name = "userNature", description = "用户性质", example = "3", required = true)

View File

@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.system.api.user.dto;
import cn.iocoder.yudao.framework.common.validation.IdCard; import cn.iocoder.yudao.framework.common.validation.IdCard;
import cn.iocoder.yudao.framework.common.validation.Mobile; import cn.iocoder.yudao.framework.common.validation.Mobile;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.models.security.SecurityScheme;
import lombok.Data; import lombok.Data;
import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
@ -54,4 +55,7 @@ public class UserSaveRespDTO {
@Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456") @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456")
@Length(min = 4, max = 16, message = "密码长度为 4-16 位") @Length(min = 4, max = 16, message = "密码长度为 4-16 位")
private String password; private String password;
@Schema(description = "是否为外勤人员", example = "1")
private Integer fieldworkFlag;
} }

View File

@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import cn.iocoder.yudao.module.system.api.user.dto.UserSaveRespDTO; import cn.iocoder.yudao.module.system.api.user.dto.UserSaveRespDTO;
import cn.iocoder.yudao.module.system.api.user.vo.AdminUserRpcVO; import cn.iocoder.yudao.module.system.api.user.vo.AdminUserRpcVO;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO; import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserUpdateFieldworkReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.service.dept.DeptService; import cn.iocoder.yudao.module.system.service.dept.DeptService;
@ -90,6 +91,12 @@ public class AdminUserApiImpl implements AdminUserApi {
return success(userService.createUser(BeanUtils.toBean(saveRespDTO, UserSaveReqVO.class))); return success(userService.createUser(BeanUtils.toBean(saveRespDTO, UserSaveReqVO.class)));
} }
@Override
public void updateFieldwork(Long userId, Integer fieldworkFlag) {
userService.updateFieldwork(userId, fieldworkFlag);
}
@Override @Override
public CommonResult<List<Long>> getUserIdsByUserNature(Integer userNature) { public CommonResult<List<Long>> getUserIdsByUserNature(Integer userNature) {

View File

@ -131,6 +131,12 @@ public class AdminUserServiceImpl implements AdminUserService {
// 默认赋予用户 普通角色 // 默认赋予用户 普通角色
permissionService.assignUserRole(user.getId(), Collections.singleton(2L)); permissionService.assignUserRole(user.getId(), Collections.singleton(2L));
// 判断用户是工厂部门的用户 并且userType != 2时
if (deptService.getDept(user.getDeptId()).getFactoryId() != null) {
// 工厂用户添加到GPS定位系统中
gpsIncrementalSynchronizationOfUsers(user);
}
return user.getId(); return user.getId();
} }

View File

@ -102,8 +102,8 @@ public class FactoryUserServiceImpl implements FactoryUserService{
usersExtDO.setDeptId(deptDO.getId()); usersExtDO.setDeptId(deptDO.getId());
usersExtDO.setAttendanceMachineNos(convertList(attendanceMachineDOS, AttendanceMachineDO::getDeviceNo)); usersExtDO.setAttendanceMachineNos(convertList(attendanceMachineDOS, AttendanceMachineDO::getDeviceNo));
// usersExtService.createUsers(usersExtDO); // usersExtService.createUsers(usersExtDO);
// 工厂用户添加到GPS定位系统中 // // 工厂用户添加到GPS定位系统中
adminUserService.gpsIncrementalSynchronizationOfUsers(user); // adminUserService.gpsIncrementalSynchronizationOfUsers(user);
try { try {
for (AttendanceMachineDO machineDO : attendanceMachineDOS) { for (AttendanceMachineDO machineDO : attendanceMachineDOS) {