具体用户设置是否可以外勤打卡

This commit is contained in:
aikai 2024-08-09 14:46:07 +08:00
parent 56a4ef5629
commit fb56f2093a
8 changed files with 67 additions and 4 deletions

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.system.controller.admin.equipment.vo.userExt; package cn.iocoder.yudao.module.system.controller.admin.equipment.vo.userExt;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
@ -31,6 +32,10 @@ public class UsersExtRespVO {
@ExcelProperty("部门名称") @ExcelProperty("部门名称")
private String deptName; private String deptName;
@Schema(description = "是否允许外勤打卡 0否 1是", example = "0")
@ExcelProperty("是否允许外勤打卡")
private Integer fieldworkFlag;
@Schema(description = "人脸图片地址") @Schema(description = "人脸图片地址")
@ExcelProperty("人脸图片") @ExcelProperty("人脸图片")
private String faceImg; private String faceImg;
@ -47,4 +52,4 @@ public class UsersExtRespVO {
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime createTime; private LocalDateTime createTime;
} }

View File

@ -94,6 +94,14 @@ public class UserController {
return success(true); return success(true);
} }
@PutMapping("/update-fieldwork")
@Operation(summary = "修改用户外勤打卡状态")
public CommonResult<Boolean> updateFieldwork(@Valid @RequestBody UserUpdateFieldworkReqVO reqVO) {
userService.updateFieldwork(reqVO.getId(), reqVO.getFieldworkFlag());
return success(true);
}
@GetMapping("/page") @GetMapping("/page")
@Operation(summary = "获得用户分页列表") @Operation(summary = "获得用户分页列表")
@PreAuthorize("@ss.hasPermission('system:user:list')") @PreAuthorize("@ss.hasPermission('system:user:list')")

View File

@ -0,0 +1,20 @@
package cn.iocoder.yudao.module.system.controller.admin.user.vo.user;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.validation.InEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotNull;
@Schema(description = "管理后台 - 用户更新状态 Request VO")
@Data
public class UserUpdateFieldworkReqVO {
@Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
@NotNull(message = "角色编号不能为空")
private Long id;
@Schema(description = "是否允许外勤打卡 0否 1是", example = "0")
private Integer fieldworkFlag;
}

View File

@ -4,7 +4,10 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.mybatis.core.type.JsonLongSetTypeHandler; import cn.iocoder.yudao.framework.mybatis.core.type.JsonLongSetTypeHandler;
import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO; import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
import cn.iocoder.yudao.module.system.enums.common.SexEnum; import cn.iocoder.yudao.module.system.enums.common.SexEnum;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*; import lombok.*;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@ -92,6 +95,14 @@ public class AdminUserDO extends TenantBaseDO {
* 枚举 {@link CommonStatusEnum} * 枚举 {@link CommonStatusEnum}
*/ */
private Integer status; private Integer status;
/**
* 是否允许外勤打卡 0否 1是
* <p>
* 枚举 {@link CommonStatusEnum}
*/
private Integer fieldworkFlag;
/** /**
* 用户类型 * 用户类型
* 1公司用户 2工厂用户 * 1公司用户 2工厂用户

View File

@ -258,7 +258,7 @@ public class AttendanceServiceImpl implements AttendanceService {
LocalDateTime localDateTime = dto.getLocalDateTime(); LocalDateTime localDateTime = dto.getLocalDateTime();
LocalDateTime nextDayDateTime = LocalDateTimeUtil.offset(localDateTime, 1, ChronoUnit.DAYS); LocalDateTime nextDayDateTime = LocalDateTimeUtil.offset(localDateTime, 1, ChronoUnit.DAYS);
AttendanceGroupDO activationGroup = dto.getActivationGroup(); AttendanceGroupDO activationGroup = dto.getActivationGroup();
vo.setFieldworkFlag(activationGroup.getFieldworkFlag()); vo.setFieldworkFlag(dto.getUser().getFieldworkFlag() == null ? activationGroup.getFieldworkFlag() : dto.getUser().getFieldworkFlag());
// - 根据经纬度判断是否在对应班组的打卡点上 - 如果是考勤机的话默认就是在打卡点 // - 根据经纬度判断是否在对应班组的打卡点上 - 如果是考勤机的话默认就是在打卡点
vo.setPunchPoint(AttendanceGroupDO.PUNCH_TYPE_ATTENDANCE_MACHINE.equals(dto.getPunchType()) ? Constants.TRUE : vo.setPunchPoint(AttendanceGroupDO.PUNCH_TYPE_ATTENDANCE_MACHINE.equals(dto.getPunchType()) ? Constants.TRUE :
GeoUtil.distance(Double.parseDouble(dto.getLatitude()), Double.parseDouble(dto.getLongitude()) GeoUtil.distance(Double.parseDouble(dto.getLatitude()), Double.parseDouble(dto.getLongitude())

View File

@ -94,6 +94,14 @@ public interface AdminUserService {
*/ */
void updateUserStatus(Long id, Integer status); void updateUserStatus(Long id, Integer status);
/**
* 修改外勤打卡状态
*
* @param id 用户编号
* @param fieldworkFlag 状态
*/
void updateFieldwork(Long id, Integer fieldworkFlag);
/** /**
* 删除用户 * 删除用户
* *
@ -308,4 +316,5 @@ public interface AdminUserService {
* @return * @return
*/ */
IPage<UserSimpleRespVO> getAllUserListByGroupIds(UserPageDTO dto); IPage<UserSimpleRespVO> getAllUserListByGroupIds(UserPageDTO dto);
} }

View File

@ -230,6 +230,15 @@ public class AdminUserServiceImpl implements AdminUserService {
userMapper.updateById(updateObj); userMapper.updateById(updateObj);
} }
@Override
public void updateFieldwork(Long id, Integer fieldworkFlag) {
// 更新状态
AdminUserDO updateObj = new AdminUserDO();
updateObj.setId(id);
updateObj.setFieldworkFlag(fieldworkFlag);
userMapper.updateById(updateObj);
}
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void deleteUser(Long id) { public void deleteUser(Long id) {

View File

@ -14,6 +14,7 @@
b.id, b.id,
a.id AS userId, a.id AS userId,
a.nickname AS userName, a.nickname AS userName,
a.fieldwork_flag as fieldworkFlag,
a.dept_id AS dept_id, a.dept_id AS dept_id,
b.face_img AS faceImg, b.face_img AS faceImg,
b.attendance_machine_nos AS attendanceMachineNos, b.attendance_machine_nos AS attendanceMachineNos,
@ -56,4 +57,4 @@
</if> </if>
</where> </where>
</select> </select>
</mapper> </mapper>