commit
Some checks failed
API接口参数变更检测 / api-param-check (push) Has been cancelled

This commit is contained in:
2026-06-05 16:18:40 +08:00
parent 1ca34c6bb2
commit 3cba3bb74e
4393 changed files with 450030 additions and 103 deletions

View File

@@ -0,0 +1,28 @@
package jnpf.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ChapterEndGainedVO extends GroupGainedVO{
/**
* 头像
*/
private String headIcon;
/**
* 用户名
*/
private String realName;
/**
* 发送时间
*/
private Date time;
}

View File

@@ -0,0 +1,17 @@
package jnpf.model;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class ClockResultVO {
/**
* 打卡返回类型1打卡成功 2已打卡
*/
private Integer type;
/**
* 格言
*/
private String aphorism;
}

View File

@@ -0,0 +1,25 @@
package jnpf.model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
*
*
* 版本: V3.0.0
* 版权: 引迈信息技术有限公司(https://www.jnpfsoft.com)
* 作者: JNPF开发平台组
* 日期: 2020-12-31
*/
@Data
public class ContractForm {
@Schema(description ="姓名")
private String contractName;
@Schema(description ="手机号")
private String mytelePhone;
@Schema(description ="文件")
private String fileJson;
}

View File

@@ -0,0 +1,26 @@
package jnpf.model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
*
*
* 版本: V3.0.0
* 版权: 引迈信息技术有限公司(https://www.jnpfsoft.com)
* 作者: JNPF开发平台组
* 日期: 2020-12-31
*/
@Data
public class ContractInfoVO {
@Schema(description ="主键")
private String id;
@Schema(description ="姓名")
private String contractName;
@Schema(description ="手机号")
private String mytelePhone;
@Schema(description ="文件")
private String fileJson;
}

View File

@@ -0,0 +1,15 @@
package jnpf.model;
import lombok.Data;
/**
*
*
* 版本: V3.0.0
* 版权: 引迈信息技术有限公司(https://www.jnpfsoft.com)
* 作者: JNPF开发平台组
* 日期: 2020-12-31
*/
@Data
public class ContractListVO extends ContractInfoVO {
}

View File

@@ -0,0 +1,52 @@
package jnpf.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 组队-基础设置
* </p>
*
* @author ahua
* @since 2023-11-07
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class GroupBaseSettingBody implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 打卡每天n分
*/
private Integer clock;
/**
* 阅读时长
*/
private Long readingDuration;
/**
* 阅读积分
*/
private Integer readingScore;
/**
* 评论积分
*/
private Integer commentScore;
/**
* 达到n时长发送动态
*/
private Long dynamicDuration;
}

View File

@@ -0,0 +1,15 @@
package jnpf.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class GroupClockForm {
private String groupId;
}

View File

@@ -0,0 +1,41 @@
package jnpf.model;
import lombok.Builder;
import lombok.Data;
/**
* 组队评论展示
*/
@Data
@Builder
public class GroupCommentVO {
/**
* 心得id
*/
private String eventId;
/**
* 内容
*/
private String Content;
/**
* 评论目标心得内容
*/
private String toId;
/** 组织名称 */
private String toOrganizeName;
/** 岗位名称 */
private String toPositionName;
/**
* 评论目标心得内容
*/
private String toContent;
/**
* 评论目标心得头像
*/
private String toHeadIcon;
/**
* 评论目标心得用户名
*/
private String toRealName;
}

View File

@@ -0,0 +1,41 @@
package jnpf.model;
import lombok.Builder;
import lombok.Data;
/**
* 组队动态展示
*/
@Data
@Builder
public class GroupDynamicVO {
/**
* 心得id
*/
private String eventId;
/**
* 内容
*/
private String Content;
/**
* 章节名
*/
private String chapter;
/**
* 章节id
*/
private String chapterId;
/**
* 课程封面
*/
private String courseIcon;
/**
* 课程名称
*/
private String courseName;
/**
* 课程id
*/
private String courseId;
}

View File

@@ -0,0 +1,16 @@
package jnpf.model;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class GroupEventAddDTO {
private Integer eventType;
private String eventId;
private String userId;
private String tenantId;
private String courseId;
private String toEventId;
private String toUserId;
}

View File

@@ -0,0 +1,56 @@
package jnpf.model;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 组队心得展示
*/
@Data
@NoArgsConstructor
public class GroupGainedVO {
/**
* 心得id
*/
private String eventId;
/**
* 内容
*/
private String Content;
/**
* 章节id
*/
private String chapterId;
/**
* 章节名
*/
private String chapter;
/**
* 课程id
*/
private String courseId;
/**
* 课程封面
*/
private String courseIcon;
/**
* 课程名称
*/
private String courseName;
/**
* 转发数
*/
private long forwardNum;
/**
* 点赞数
*/
private long likeNum;
/**
* 是否点赞
*/
private Boolean isLike;
/**
* 评论数
*/
private long replyNum;
}

View File

@@ -0,0 +1,46 @@
package jnpf.model;
import lombok.Getter;
import lombok.Setter;
/**
* 部分用户信息vo
*
* @author yanwenfu
* @create 2023-07-20
*/
@Getter
@Setter
public class PartUserInfoVo {
/** 用户id */
private String userId;
/** 账户 */
private String account;
/** 姓名 */
private String realName;
/** 快速查询 */
private String quickQuery;
/** 头像 */
private String headIcon;
/** 手机 */
private String mobilePhone;
/** 组织id */
private String organizeId;
/** 组织名称 */
private String organizeName;
/** 岗位id */
private String positionId;
/** 岗位名称 */
private String positionName;
}

View File

@@ -0,0 +1,37 @@
package jnpf.model.app;
import io.swagger.v3.oas.annotations.media.Schema;
import jnpf.entity.training.TrainingIdentifyUserDetailEntity;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
*
* 鉴定详情
*
* @author yanglei
* @since 2023-07-19
*/
@Data
public class IdentifyInfoForm implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "鉴定ID")
private String id;
@Schema(description = "状态0待鉴定1通过2未通过")
private Integer status;
@Schema(description = "用时(秒)")
private Integer duration;
@Schema(description = "备注")
private String description;
@Schema(description = "内容项结果")
private List<TrainingIdentifyUserDetailEntity> userDetailList;
}

View File

@@ -0,0 +1,66 @@
package jnpf.model.app;
import io.swagger.v3.oas.annotations.media.Schema;
import jnpf.entity.training.TrainingIdentifyTemplateEntity;
import jnpf.entity.training.TrainingIdentifyTemplateOptionEntity;
import jnpf.entity.training.TrainingIdentifyUserEntity;
import jnpf.enums.training.CourseEnums;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.List;
/**
*
* 鉴定详情
*
* @author yanglei
* @since 2023-07-19
*/
@Data
public class IdentifyInfoVO implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "鉴定ID")
private String id;
@Schema(description = "用户信息")
private TrainingIdentifyUserEntity user;
@Schema(description = "鉴定模板信息")
private TrainingIdentifyTemplateEntity template;
@Schema(description = "内容列表")
private List<IdentifyOptionInfoVO> optionList;
@Schema(description = "状态0待鉴定1通过2未通过")
private Integer status;
@Data
public static class IdentifyOptionInfoVO extends TrainingIdentifyTemplateOptionEntity{
@Schema(description = "选项列表")
private List<IdentifySelectInfoVO> selectList;
}
@Accessors(chain = true)
@Data
public static class IdentifySelectInfoVO {
@Schema(description = "")
private Integer value;
@Schema(description = "名称")
private String label;
@Schema(description = "是否选中0否1是")
private Integer selected;
public IdentifySelectInfoVO(CourseEnums.IdentifyOption option){
this.value = option.getCode();
this.label = option.getDesc();
this.selected = 0;
}
}
}

View File

@@ -0,0 +1,48 @@
package jnpf.model.app;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
*
* 岗位学习内容
*
* @author yanglei
* @since 2023-07-19
*/
@Data
public class PositionLearningAppListVO implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "学习内容ID")
private String id;
@Schema(description = "学习内容标题")
private String title;
@Schema(description = "学习内容列表")
private List<Source> sourceList;
@Data
public static class Source {
@Schema(description = "类型1课程2考试3鉴定")
private Integer type;
@Schema(description = "课程/考试/鉴定ID")
private String sourceId;
@Schema(description = "课程/考试/鉴定名称")
private String sourceName;
@Schema(description = "已完成数量")
private Integer finishNumber;
@Schema(description = "总数量")
private Integer totalNumber;
}
}

View File

@@ -0,0 +1,58 @@
package jnpf.model.app;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
/**
*
* 岗位学习内容详情
*
* @author yanglei
* @since 2023-07-19
*/
@Data
public class PositionLearningCourseVO implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "课程ID")
private String id;
@Schema(description = "课程名称")
private String name;
@Schema(description = "章节列表")
private List<Chapter> chapterList;
@Data
public static class Chapter {
@Schema(description = "章节ID")
private String id;
@Schema(description = "章节名称")
private String name;
@Schema(description = "状态0学习部分1已学完0和2表示未开始 3未通过 0用于标识上次学到地方")
private Integer status;
@Schema(description = "完成学习时间")
@JSONField(format = "yyyy-MM-dd HH:mm")
private LocalDateTime finishTime;
@Schema(description = "用时(秒)")
private Integer duration;
@Schema(description = "课程类型1视频2音频3图文")
private Integer type;
@Schema(description = "最后学习标识 1")
private Integer lastStudy;
}
}

View File

@@ -0,0 +1,28 @@
package jnpf.model.app;
import io.swagger.v3.oas.annotations.media.Schema;
import jnpf.entity.training.TrainingExamUserEntity;
import lombok.Data;
import java.io.Serializable;
/**
*
* 岗位学习内容详情
*
* @author yanglei
* @since 2023-07-19
*/
@Data
public class PositionLearningExamVO extends TrainingExamUserEntity implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "满分")
private Integer fullScore;
@Schema(description = "剩余时间(天)")
private Long remainDays;
}

View File

@@ -0,0 +1,58 @@
package jnpf.model.app;
import io.swagger.v3.oas.annotations.media.Schema;
import jnpf.entity.training.TrainingIdentifyTemplateEntity;
import jnpf.entity.training.TrainingIdentifyUserEntity;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
*
* 岗位学习内容详情
*
* @author yanglei
* @since 2023-07-19
*/
@Data
public class PositionLearningIdentifyDetailVO implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "鉴定ID")
private String id;
@Schema(description = "鉴定模板信息")
private TrainingIdentifyTemplateEntity template;
@Schema(description = "鉴定项数量")
private Long optionNumber;
@Schema(description = "未鉴定时已鉴定人数")
private Long peopleNumber;
@Schema(description = "鉴定结果")
private IdentifyResult identifyResult;
@Data
@Accessors(chain = true)
public static class IdentifyResult extends TrainingIdentifyUserEntity {
@Schema(description = "通过数量")
private Long passNumber;
@Schema(description = "通过率")
private Long passRatio;
@Schema(description = "未通过数量")
private Long failNumber;
@Schema(description = "未通过率")
private Long failRatio;
@Schema(description ="用户头像")
private String headIcon;
}
}

View File

@@ -0,0 +1,20 @@
package jnpf.model.app;
import jnpf.entity.training.TrainingIdentifyUserEntity;
import lombok.Data;
import java.io.Serializable;
/**
*
* 岗位学习内容详情
*
* @author yanglei
* @since 2023-07-19
*/
@Data
public class PositionLearningIdentifyVO extends TrainingIdentifyUserEntity implements Serializable {
private static final long serialVersionUID = 1L;
}

View File

@@ -0,0 +1,47 @@
package jnpf.model.app;
import io.swagger.v3.oas.annotations.media.Schema;
import jnpf.entity.training.TrainingCourseChapterEntity;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
*
* 课程章节
*
* @author yanglei
* @since 2023-07-22
*/
@Data
@Accessors(chain = true)
public class TrainingCourseChapterVO extends TrainingCourseChapterEntity implements Serializable{
private static final long serialVersionUID = 1L;
@Schema(description = "下一章节ID")
private String nextId;
@Schema(description = "上一章节ID")
private String preId;
@Schema(description = "视频/音频已学时长,图文已学页数")
private Integer learned;
@Schema(description = "课程类型1视频2音频3图文")
private Integer type;
@Schema(description = "状态0学习部分1已学完0和2表示未开始 3未通过 0用于标识上次学到地方")
private Integer status;
@Schema(description = "总章节数")
private Integer totalNum;
@Schema(description = "当前章节页数")
private Long curNum;
@Schema(description = "课程名称")
private String courseName;
}

View File

@@ -0,0 +1,20 @@
package jnpf.model.attendance.dto;
import lombok.Data;
import java.util.List;
/**
* @Author huanglinpan
* @Date 2025/2/17 11:40
* @Version 1.0 (版本号)
*/
@Data
public class AddFieldPersonnelDto {
/** 考勤组Id */
private String id;
/** 用户Id集合 */
private List<String> userIds;
}

View File

@@ -0,0 +1,31 @@
package jnpf.model.attendance.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
/**
* 我的考勤统计请求类
*
* @author shitou
* @date 2023/11/21
*/
@Data
public class AppStatisticsListDto {
/**
* 统计月份(YYYY-MM)
*/
@DateTimeFormat(pattern = "yyyy-MM")
@JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
@NotBlank(message = "统计月份不能为空")
private String month;
/**
* 用户ID
*/
@NotBlank(message = "用户ID不能为空")
private String userId;
}

View File

@@ -0,0 +1,31 @@
package jnpf.model.attendance.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
/**
* 我的考勤-统计更多-默认请求类
*
* @author shitou
* @date 2023/11/21
*/
@Data
public class AppStatisticsMoreDto {
/**
* 统计月份(YYYY-MM)
*/
@DateTimeFormat(pattern = "yyyy-MM")
@JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
@NotBlank(message = "统计月份不能为空")
private String month;
/**
* 用户ID
*/
@NotBlank(message = "用户ID不能为空")
private String userId;
}

View File

@@ -0,0 +1,31 @@
package jnpf.model.attendance.dto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 我的考勤-统计更多-展开请求类
*
* @author shitou
* @date 2023/11/21
*/
@Data
public class AppStatisticsMoreInfoDto {
/**
* 统计月份(YYYY-MM)
*/
@NotBlank(message = "统计月份不能为空")
private String month;
/**
* 用户ID
*/
@NotBlank(message = "用户ID不能为空")
private String userId;
/**
* 记录类型(1-请假 2-迟到 3-早退 4-缺卡 5-旷工 6-补卡 7-外勤 8-加班 9-借调 10-出差 11-外出)
*/
@NotNull(message = "记录类型不能为空")
private Integer type;
}

View File

@@ -0,0 +1,31 @@
package jnpf.model.attendance.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
/**
* 我的考勤-出勤情况请求类
*
* @author shitou
* @date 2023/11/21
*/
@Data
public class AppStatisticsRecordDto {
/**
* 日期(yyyy-MM-dd)
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@NotBlank(message = "日期不能为空")
private String date;
/**
* 用户ID
*/
@NotBlank(message = "用户ID不能为空")
private String userId;
}

View File

@@ -0,0 +1,33 @@
package jnpf.model.attendance.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* 团队考勤统计请求类
*
* @author shitou
* @date 2023/11/21
*/
@Data
public class AppStatisticsTeamListDto {
/**
* 统计月份(YYYY-MM)
*/
@DateTimeFormat(pattern = "yyyy-MM")
@JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
@NotBlank(message = "统计月份不能为空")
private String month;
/**
* 考勤组/班组信息
*/
@NotEmpty(message = "请选择考勤组/班组信息")
private List<GroupFilterDto> filterList;
}

View File

@@ -0,0 +1,33 @@
package jnpf.model.attendance.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* 团队考勤统计-团队统计请求类
*
* @author shitou
* @date 2023/11/21
*/
@Data
public class AppTeamStatisticsDto {
/**
* 统计月份(YYYY-MM)
*/
@DateTimeFormat(pattern = "yyyy-MM")
@JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
@NotBlank(message = "统计月份不能为空")
private String month;
/**
* 考勤组/班组信息
*/
@NotEmpty(message = "请选择考勤组/班组信息")
private List<GroupFilterDto> filterList;
}

View File

@@ -0,0 +1,40 @@
package jnpf.model.attendance.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* 团队考勤统计-团队统计-详情列表请求类
*
* @author shitou
* @date 2023/11/21
*/
@Data
public class AppTeamStatisticsListDto {
/**
* 统计月份(YYYY-MM)
*/
@DateTimeFormat(pattern = "yyyy-MM")
@JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
@NotBlank(message = "统计月份不能为空")
private String month;
/**
* 考勤组/班组信息
*/
@NotEmpty(message = "请选择考勤组/班组信息")
private List<GroupFilterDto> filterList;
/**
* 数据类型(1-全部 2-休息 3-迟到 4-早退 5-请假 6-缺卡 7-旷工 8-借调 9-补卡 10-外勤 11-加班 12-出差 13-外出)
*/
@NotNull(message = "打卡状态不能为空")
private Integer dataType;
}

View File

@@ -0,0 +1,33 @@
package jnpf.model.attendance.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* 团队考勤统计-打卡列表请求类
*
* @author shitou
* @date 2023/11/21
*/
@Data
public class AppTeamStatisticsTabDto {
/**
* 日期(YYYY-MM-DD)
*/
@DateTimeFormat(pattern = "yyyy-MM-DD")
@JsonFormat(pattern = "yyyy-MM-DD", timezone = "GMT+8")
@NotBlank(message = "日期不能为空")
private String date;
/**
* 考勤组/班组信息
*/
@NotEmpty(message = "请选择考勤组/班组信息")
private List<GroupFilterDto> filterList;
}

View File

@@ -0,0 +1,31 @@
package jnpf.model.attendance.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
/**
* 团队考勤统计-单日统计请求类
*
* @author shitou
* @date 2023/11/21
*/
@Data
public class AppTeamTabStatisticsDto {
/**
* 日期(YYYY-MM-DD)
*/
@DateTimeFormat(pattern = "yyyy-MM-DD")
@JsonFormat(pattern = "yyyy-MM-DD", timezone = "GMT+8")
@NotBlank(message = "日期不能为空")
private String date;
/**
* 考勤组id
*/
@NotBlank(message = "考勤组id不能为空")
private String groupId;
}

View File

@@ -0,0 +1,29 @@
package jnpf.model.attendance.dto;
import lombok.Data;
/**
* @Author huanglinpan
* @Date 2024/8/8 11:05
* @Version 1.0 (版本号)
*/
@Data
public class AppUserSettingQueryDto {
/** 考勤组Id */
private String groupId;
/** 类型 1个人设置2考勤组设置 3web全局设置 */
private Integer type = 1;
/** type 为考勤组时使用 考勤组名称模糊搜索 */
private String groupName;
/** 父级Id type等于个人设置时使用 首页默认值 0000 */
private String PId;
/** 关联Id与类型一起使用个人时表示用户Id考勤组时表示考勤组Id */
private String associationId;
}

View File

@@ -0,0 +1,34 @@
package jnpf.model.attendance.dto;
import lombok.Data;
/**
* @Author huanglinpan
* @Date 2024/8/8 10:37
* @Version 1.0 (版本号)
*/
@Data
public class AttendanceAppUserSettingDto {
/** 设置主表Id 个人设置时的settingId*/
private String settingId;
/** 类型 1个人设置2考勤组设置 3web全局设置 */
private Integer type;
/** 关联Id 团队考勤组设置时使用与类型一起使用个人时表示用户Id考勤组时表示考勤组Id */
private String associationId;
/** 状态 1启用 0关闭 */
private Integer status;
/** 值: 涉及定时时间时使用 */
private Integer value;
/** 主键Id */
private String id;
private String code;
}

View File

@@ -0,0 +1,15 @@
package jnpf.model.attendance.dto;
import lombok.Data;
@Data
public class AttendanceApprovalSettingDto {
private String id;
private String groupId;
private Integer type;
private Integer permission;
}

View File

@@ -0,0 +1,128 @@
package jnpf.model.attendance.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* <p>
* 考勤基础设置表
* </p>
*
* @author ahua
* @since 2023-11-29
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AttendanceBaseSettingDto implements Serializable {
private static final long serialVersionUID = 1L;
private String id;
/**
* 考勤组id
*/
private String groupId;
/**
* 出勤换算比(n小时换算为一天)
*/
private BigDecimal attendanceRatio;
/**
* 内勤是否需要拍照 1:是, 0: 否)
*/
private Integer attendancePhoto;
/**
* 是否需要人脸识别 1 0
*/
private Integer face;
/**
* 是否允许晚走晚到(0-否 1-是)
*/
private Integer lateEarly;
/**
* 晚走分钟数
*/
private Integer lateMinis;
/**
* 晚到分钟数
*/
private Integer earlyMinis;
/**
* 加班是否发放余额(1不发 2天发 3小时发)
*/
private Integer overtimeGrantType;
/**
* 加班换算比(n小时换算为一天)
*/
private BigDecimal overtimeRatio;
/**
* 是否允许外勤打卡(1是 0否)
*/
private Integer fieldClockStatus;
/**
* 外勤是否需要审批(1: 是, 0: 否)
*/
private Integer approveEnable;
/**
* 外勤是否需要拍照 1:是(默认), 0: 否)
*/
private Integer shouldTakePhoto;
/**
* 外勤人员选择类型1.全部 2.指定人员ftb_attendance_field_personnel表
*/
private Integer filePersonnelType;
/**
* 外勤用户Id集合
*/
private List<String> fieldPersonnelIds;
/**
* 是否允许补卡(1是 0否)
*/
private Integer patchClockStatus;
/**
* 每月可以提交补卡次数
*/
private Integer patchClockNumber;
/**
* 补卡次数刷新日
*/
private Integer patchRefreshDay;
/**
* 补卡周期天数
*/
private Integer patchCycleDay;
/**
* 补卡类型(1: 迟到, 2: 早退, 3: 缺卡, 4: 旷工) 例1,2,3
*/
private String patchType;
/**
* 未排班是否可选择班次(0不可选 1可选 2无法打卡)
*/
private Integer selectRuleEnable;
/**
* 调整出勤是否需要审批(0不需要审批 1需要审批)
*/
private Integer modifyClockApplyEnable;
}

View File

@@ -0,0 +1,29 @@
package jnpf.model.attendance.dto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* 考勤本配置增量添加人员DTO
*
* @author Generated
* @create 2026-04-16
*/
@Data
public class AttendanceBookConfigAddUserDto {
/**
* 考勤本ID
*/
@NotBlank(message = "考勤本ID不能为空")
private String bookConfigId;
/**
* 要添加的用户ID列表
*/
@NotEmpty(message = "用户列表不能为空")
private List<String> userIdList;
}

View File

@@ -0,0 +1,66 @@
package jnpf.model.attendance.dto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
/**
* 考勤本配置DTO
*
* @author Generated
* @create 2026-04-15
*/
@Data
public class AttendanceBookConfigDto {
/**
* 考勤本ID编辑时必填新增时为空
*/
private String id;
/**
* 考勤本名称
*/
@NotBlank(message = "考勤本名称不能为空")
private String bookName;
/**
* 使用范围类型0:全部 1:指定组织/成员)
*/
@NotNull(message = "使用范围类型不能为空")
private Integer scopeType;
/**
* 使用范围-组织ID列表scopeType=1时必填
*/
private List<String> organizeList = new ArrayList<>();
/**
* 使用范围-用户ID列表scopeType=1时必填
*/
private List<String> userIdList = new ArrayList<>();
/**
* 考勤本负责人ID列表多个用逗号拼接
*/
@NotBlank(message = "考勤本负责人不能为空")
private String managerIds;
/**
* 可排假期范围类型1:全部假期 2:指定假期)
*/
private Integer holidayScopeType;
/**
* 可排假期ID列表多个用逗号拼接
*/
private String holidayIds;
/**
* 启用状态1:启用 0:禁用)
*/
private Integer enabledMark;
}

View File

@@ -0,0 +1,71 @@
package jnpf.model.attendance.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import java.util.Date;
import java.util.List;
/**
* 考勤本配置查询DTO
*
* @author Generated
* @create 2026-04-16
*/
@Data
@Schema(description = "考勤本配置查询DTO")
public class AttendanceBookConfigQueryDto {
/**
* 考勤本名称(模糊查询)
*/
@Schema(description = "考勤本名称(模糊查询)")
private String bookName;
/**
* 启用状态1:启用 0:禁用)
*/
@Schema(description = "启用状态1:启用 0:禁用)")
private Integer enabledMark;
/**
* 创建人用户ID集合
*/
@Schema(description = "创建人用户ID集合")
private List<String> creatorUserIdList;
/**
* 创建开始时间
*/
@Schema(description = "创建开始时间")
private Date creatorStartTime;
/**
* 创建结束时间
*/
@Schema(description = "创建结束时间")
private Date creatorEndTime;
/**
* 需求9是否按负责人过滤true:只显示当前用户为负责人的考勤本)
*/
@Schema(description = "是否按负责人过滤true:只显示当前用户为负责人的考勤本)")
private Boolean isManagerFilter;
/**
* 当前页码
*/
@Min(value = 1, message = "页码最小为1")
@Schema(description = "当前页码", defaultValue = "1")
private Integer currentPage = 1;
/**
* 每页条数
*/
@Min(value = 1, message = "每页条数最小为1")
@Max(value = 100, message = "每页条数最大为100")
@Schema(description = "每页条数", defaultValue = "20")
private Integer pageSize = 20;
}

View File

@@ -0,0 +1,81 @@
package jnpf.model.attendance.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* 考勤本记录DTO
*
* @author Generated
* @create 2026-04-21
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Schema(description = "考勤本记录DTO")
public class AttendanceBookRecordDto {
/**
* 主键ID更新时必填新增时为空
*/
@Schema(description = "主键ID更新时必填新增时为空")
private String id;
/**
* 考勤本ID
*/
@NotBlank(message = "考勤本ID不能为空")
@Schema(description = "考勤本ID", required = true)
private String bookId;
/**
* 员工ID
*/
@NotBlank(message = "员工ID不能为空")
@Schema(description = "员工ID", required = true)
private String userId;
/**
* 考勤日期
*/
@NotNull(message = "考勤日期不能为空")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Schema(description = "考勤日期", required = true, example = "2026-04-21")
private Date day;
/**
* 时段类型1:上班卡 2:下班卡)
*/
@NotNull(message = "时段类型不能为空")
@Schema(description = "时段类型1:上班卡 2:下班卡)", required = true, allowableValues = {"1", "2"})
private Integer periodType;
/**
* 考勤状态1001:正常 1002:迟到 1003:早退 1004:缺卡 3005:请假 2006:出差 2007:外出 2008:外勤 1009:旷工 1010:公休)
*/
@Schema(description = "考勤状态", required = true)
private Integer attendanceStatus;
/**
* 请假类型(如:事假、病假、年假、婚假、产假等)
*/
@Schema(description = "请假类型(如:事假、病假、年假、婚假、产假等)")
private String leaveType;
/**
* 备注
*/
@Schema(description = "备注")
private String remark;
}

View File

@@ -0,0 +1,84 @@
package jnpf.model.attendance.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AttendanceFestivalRulesDto {
/**
* 主键id
*/
private String id;
/**
* 名称
*/
private String name;
/**
* 开始日期
*/
private Date startDate;
/**
* 结束日期
*/
private Date endDate;
/**
* 节日日期
*/
private String festivalDate;
/**
* 调休上班日期
*/
private String compensateInDate;
/**
* 每年同日自动更新开启时元旦更新1是 0
*/
private Integer updateState;
/**
* 适配范围0.全部1.指定组织/成员
*/
private Integer scopeOfAdaptation;
/**
* 调休自动排班 1是 0
*/
private Integer autoScheduling;
/**
* 状态 0 未启用 1 启用
*/
private Integer state;
/**
* scopeOfAdaptation=1 使用 组织列表
*/
private List<String> organizeList;
/**
* scopeOfAdaptation=1 使用 成员列表
*/
private List<String> userIdList;
/**
* 年份
*/
private String year;
}

View File

@@ -0,0 +1,117 @@
package jnpf.model.attendance.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 考勤配置-节日配置
* </p>
*
* @author ahua
* @since 2023-11-29
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class AttendanceFestivalSettingDto implements Serializable {
private static final long serialVersionUID = 1L;
private String id;
/**
* 名称
*/
private String name;
/**
* 开始日期
*/
private Date startDate;
/**
* 结束日期
*/
private Date endDate;
/**
* 节日日期
*/
private String festivalDate;
/**
* 调休上班日期
*/
private String compensateInDate;
/**
* 时长
*/
private Integer day;
/**
* 发放方式(1自动排班 2自动充值 3手动充值)
*/
private Integer distributeType;
/**
* 是否带薪1带薪 2非带薪
*/
private Integer paidSalaryEnable;
/**
* 发放日期方式1每月 2每年指定日期
*/
private Integer giveType;
/**
* 发放日期-月
*/
private Integer giveMonth;
/**
* 发放日期-日
*/
private Integer giveDay;
/**
* 过期方式1过期天数 2每年指定日期 3永久
*/
private Integer expiresType;
/**
* 过期设置-过期天数
*/
private Integer expiresDayNumber;
/**
* 过期设置-月
*/
private Integer expiresMonth;
/**
* 过期设置-日
*/
private String expiresDay;
/**
* 状态1启用 2停用
*/
private Integer enable;
/**
* 考勤组id
*/
private String groupId;
/**
* 是否法定1法定 2非法定
*/
private Integer statutoryEnable;
}

View File

@@ -0,0 +1,25 @@
package jnpf.model.attendance.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AttendanceGroupChargeDto {
/**
* 考勤组id
*/
@NotBlank(message = "考勤组id不能为空")
private String groupId ;
/**
* 考勤组负责人id
*/
@NotBlank(message = "考勤组负责人id不能为空")
private String managerId;
}

View File

@@ -0,0 +1,20 @@
package jnpf.model.attendance.dto;
import jnpf.annotation.check.CheckNull;
import lombok.Data;
/**
* @Author huanglinpan
* @Date 2024/4/22 15:41
* @Version 1.0 (版本号)
*/
@Data
public class AttendanceGroupOrgDto {
@CheckNull(message = "请选择考勤组")
private String groupId;
/** 组织Id */
private String orgId;
}

View File

@@ -0,0 +1,70 @@
package jnpf.model.attendance.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import java.util.Date;
/**
* <p>
* 考勤组表
* </p>
* @author yier
* @since 2023-11-21
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class AttendanceGroupStatusDto {
/**
* 考勤组id
*/
private String groupId;
/**
* 基础配置开关
*/
private Integer baseSetting;
/**
* 班制配置开关
*/
private Integer attendanceClassSetting;
/**
* 考勤点配置开关
*/
private Integer attendancePointsSetting;
/**
* 划线排班配置开启 1是 0否
*/
private Integer lineSchedulingSetting;
/**
* 请假配置开关
*/
private Integer leaveSetting;
/**
* 节日配置开关
*/
private Integer festivalSetting;
/**
* 假日配置开关
*/
private Integer holidaySetting;
/**
* 考勤点是否启用GPS
*/
private Integer gpsEnable;
/**
*考勤点是否启用WiFi
*/
private Integer wifiEnable;
/**
*考勤点是否启用考勤机
*/
private Integer machineEnable;
private Boolean isRootGroup = false;
/** 锁定时间 */
private Date lockedDate;
}

View File

@@ -0,0 +1,103 @@
package jnpf.model.attendance.dto;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* <p>
* 考勤配置-假日设置
* </p>
*
* @author ahua
* @since 2023-11-29
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class AttendanceHolidaySettingDto implements Serializable {
private static final long serialVersionUID = 1L;
private String id;
/**
* 假期名称
*/
private String name;
/**
* 计算时长方式1指定天数 2成员工龄司龄
*/
private Integer dayType;
/**
* 时长(当计算方式为成员工龄时则为基础天数)
*/
private Integer dayNumber;
/**
* 工龄倍数
*/
private Integer yoeMultiple;
/**
* 司龄倍数
*/
private Integer yosMultiple;
/**
* 发放方式(1自动充值 2手动充值)
*/
private Integer giveType;
/**
* 是否带薪1带薪 2非带薪
*/
private Integer paidSalaryEnable;
/**
* 发放日期方式1每月 2每年指定日期,3成员生日 4成员入职日期
*/
private Integer giveDateType;
/**
* 发放日期-月
*/
private Integer giveDateMonth;
/**
* 发放日期-日
*/
private Integer giveDateDay;
/**
* 过期方式1过期天数 2每年指定日期 3永久
*/
private Integer expiresType;
/**
* 过期设置-过期天数
*/
private Integer expiresDayNumber;
/**
* 过期设置-月
*/
private Integer expiresMonth;
/**
* 过期设置-日
*/
private Integer expiresDay;
/**
* 状态1启用 2停用
*/
private Integer enable;
/**
* 考勤组id
*/
private String groupId;
}

View File

@@ -0,0 +1,76 @@
package jnpf.model.attendance.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AttendanceLeaveGrantSettingDto {
/**
* 主键id不传
*/
private String id;
/**
* 假期规则表主键Id不传
*/
private String leaveRulesId;
/**
* 2.0假期类型Id
*/
private String leaveTypeId;
/**
* 发放方式0.自动发放 1.手动发放
*/
private Integer grantType;
/**
* 发放方式1.每月发放2.每年指定日期发放3.每年成员生日发放4.每年成员入职日期发放
*/
private Integer grantTimeType;
/**
* F_GrantTimeType=1使用每月发放的日期
*/
private Integer monthDay;
/**
* F_GrantTimeType=2使用每年指定日期发放 示列1-1
*/
private String specifyDay;
/**
* 发放时长类型1.指定天数 、2.成员司龄3.成员工龄
*/
private Integer grantDurationType;
/**
* F_GrantDurationType=1,指定天数
*/
private Integer specifyDayNum;
/**
* F_GrantDurationType=2/3对应的公式json
*/
private String formulaJson;
/**
* 过期类型0.永久1.自发放1月2.自发放1年
*/
private Integer expiredType;
/**
* F_ExpiredType=1指定日期1月传30 F_ExpiredType=2一年传365
*/
private Integer expiredDayNum;
}

View File

@@ -0,0 +1,79 @@
package jnpf.model.attendance.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AttendanceLeaveRulesDto {
/**
* 主键id
*/
private String id;
/**
* 假期名称
*/
private String name;
/**
* 2.0假期类型Id
*/
private String leaveTypeId;
/**
* 单位 : 1 :小时 2: 天 3:半天
*/
private Integer unit;
/**
* 单次最大时长(天)
*/
private Integer duration;
/**
* 是否发放余额 0不发放 1发放余额
*/
private Integer distributeBalance;
/**
* 存休抵扣0.不能使用1.可以使用
*/
private Integer retirementLeave;
/**
* 1启用、0停用
*/
private int state;
/**
* 适配范围0.全部1.指定组织/成员
*/
private Integer scopeOfAdaptation;
/**
* scopeOfAdaptation=1 使用 组织列表
*/
private List<String> organizeList;
/**
* scopeOfAdaptation=1 使用 成员列表
*/
private List<String> userIdList;
/**
* 假期发放设置(发放余额时使用)
*/
private AttendanceLeaveGrantSettingDto leaveGrantSetting;
}

View File

@@ -0,0 +1,19 @@
package jnpf.model.attendance.dto;
import jnpf.model.common.PageDto;
import lombok.Data;
@Data
public class AttendanceLeaveRulesQueryDto extends PageDto {
/**
* 假期类型Id 必传
*/
private String leaveTypeId;
/**
* 假期规则搜索条件 非必传
*/
private String iText;
}

View File

@@ -0,0 +1,26 @@
package jnpf.model.attendance.dto;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
/**
* describe
*
* @author HuangLinPan
* @date 2023/11/22
*/
@Getter
@Setter
@ToString
public class AttendanceLeaveSettingsQueryDto {
/**
* 状态 0 未启用 1 启用
*/
private Integer state;
/** 考勤组id */
private String groupId;
}

View File

@@ -0,0 +1,73 @@
package jnpf.model.attendance.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* <p>
* 考勤组-考勤点配置表
* </p>
*
* @author ahua
* @since 2023-11-29
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class AttendanceLocationSettingDto implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 考勤组id
*/
private String groupId;
/**
* 打卡方式1GPS打卡 2考勤机打卡 3WIFI打卡
*/
private Integer type;
/**
* 考勤点名称
*/
private String name;
/**
* 考勤地址/MAC地址/考勤机ID
*/
private String address;
/**
* 厂商code(考勤机使用)
*/
private String factoryCode;
/**
* 范围(米)
*/
private Integer clockRange;
/**
* 经度
*/
private String lng;
/**
* 维度
*/
private String lat;
/**
* 状态1启用 0停用
*/
private Integer enable;
}

View File

@@ -0,0 +1,84 @@
package jnpf.model.attendance.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AttendancePublicHolidayRulesDto {
/**
* id
*/
private String id;
/**
* 公休规则名称
*/
private String name;
/**
* 公休天数类型0:固定时长1按出勤时长(2.0不做)
*/
private Integer type;
/**
* type为0时固定时长天数、1时可公休天数
*/
private Integer dayNum;
/**
* type=1时使用出勤天数
*/
private Integer attendanceDay;
/**
* 月末未用完转化类型0 转化为公休1 仅记录/发放薪资
*/
private Integer transformationType;
/**
* 有效期0.永久有效 1.固定天数过期2.指定天数过期
*/
private Integer lifespanType;
/**
* 固定过期天数
*/
private Integer fixedDay;
/**
* 指定过期时间 格式MM-dd
*/
private String specifyDay;
/**
* 适配范围0.全部1.指定组织/成员
*/
private Integer scopeOfAdaptation;
/**
* 1启用、0停用
*/
private int state;
/**
* scopeOfAdaptation=1 使用 组织列表
*/
private List<String> organizeList;
/**
* scopeOfAdaptation=1 使用 成员列表
*/
private List<String> userIdList;
}

View File

@@ -0,0 +1,21 @@
package jnpf.model.attendance.dto;
import lombok.Getter;
import lombok.Setter;
/**
* 考勤打卡查询dto
*
* @author yanwenfu
* @create 2026-05-07
*/
@Getter
@Setter
public class AttendanceReqDto {
/** 查询日期(yyyy-MM-dd) */
private String queryDate;
/** 用户id */
private String userId;
}

View File

@@ -0,0 +1,60 @@
package jnpf.model.attendance.dto;
import cn.hutool.core.date.DateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import jnpf.annotation.check.CheckNull;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class AttendanceSecondedDto {
/**
* 自然主键
*/
private String id;
/**
* 借调考勤组
*/
@CheckNull(message = "请选择考勤组")
private String groupId;
/**
* 被借调考勤组id
*/
@CheckNull(message = "请选择被借调考勤组")
private String selfGroupId;
/**
* 借调开始时间
*/
@CheckNull(message = "请选择借调开始时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date startTime;
/**
* 借调结束时间
*/
@CheckNull(message = "请选择借调结束时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date endTime;
/**
* 离岗时间
*/
@CheckNull(message = "请选择离岗时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date departureTime;
/** 回岗时间 */
@CheckNull(message = "请选择回岗时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date backTime;
@CheckNull(message = "请选择借调用户")
/** 被借调用户*/
private List<String> userIds;
}

View File

@@ -0,0 +1,41 @@
package jnpf.model.attendance.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
@AllArgsConstructor
public class AttendanceShiftDto {
/**
* 周期用,拼接(1周一,2周二,3周三,4周四,5周五,6周六,7周日)
*/
private String cycle;
/**
* 生效日期
*/
private Date enableTime;
/**
* 1今日生效 2明日生效
*/
private Integer enableType;
/**
* 考勤组id
*/
private String groupId;
/**
* 主键(不传则新增)
*/
private String id;
/**
* 班制类型1固定班 2排班
*/
private Integer systemType;
/**
* 考勤时段配置
*/
private List<AttendanceShiftPeriodDto> periods;
}

View File

@@ -0,0 +1,115 @@
package jnpf.model.attendance.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import java.math.BigDecimal;
@Data
@AllArgsConstructor
public class AttendanceShiftPeriodDto {
/**
* 时段工时(天 保留一位小数)
*/
@Max(value = 1, message = "时段工时不能大于1")
private BigDecimal timeSlotDay;
/**
* 计薪工时(小时 保留2位小数)
*/
@Max(value = 24, message = "计薪工时不能大于24")
private BigDecimal payrollHours;
/**
* 允许休息时间(0否 1是)
*/
private Integer breakEnable;
/**
* 休息结束时间点
*/
private String breakEndPoint;
/**
* 休息结束当日还是次日1当日 2次日
*/
private Integer breakEndType;
/**
* 休息开始时间点
*/
private String breakStartPoint;
/**
* 休息开始当日还是次日1当日 2次日
*/
private Integer breakStartType;
/**
* 打卡开始时间点
*/
private String clockStartPoint;
/**
* 打卡开始时间点 当日还是次日1当日 2次日
*/
private Integer clockStartPointType;
/**
* 允许早退(0否 1是)
*/
private Integer earlyEnable;
/**
* 早退时间点
*/
private String earlyPoint;
/**
* 早退当日还是次日1当日 2次日
*/
private Integer earlyType;
/**
* 考勤班制-时段主键(不传则新增)
*/
private String id;
/**
* 上班缺卡时间点
*/
private String inLackPoint;
/**
* 上班缺卡 当日还是次日1当日 2次日
*/
private Integer inLackPointType;
/**
* 上班时间点
*/
private String inPoint;
/**
* 上班当日还是次日1当日 2次日
*/
private Integer inType;
/**
* 允许迟到(0否 1是)
*/
private Integer lateEnable;
/**
* 迟到时间点
*/
private String latePoint;
/**
* 迟到当日还是次日1当日 2次日
*/
private Integer lateType;
/**
* 允许次日下班(0否 1是)
*/
private Integer nextDayEnable;
/**
* 下班缺卡时间点
*/
private String outLackPoint;
/**
* 下班缺卡当日还是次日1当日 2次日
*/
private Integer outLackType;
/**
* 下班时间点
*/
private String outPoint;
/**
* 下班当日还是次日1当日 2次日
*/
private Integer outType;
}

View File

@@ -0,0 +1,30 @@
package jnpf.model.attendance.dto;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class AttendanceUserBalanceDetailDto {
/**
* 主键id
*/
private String id;
/**
* 假日类型Idftb_attendance_leave_rules存休时为空
*/
private String objectId;
/**
* 余额记录文本
*/
private String content;
/**
* 使用额度(分正负:负数时为使用,正数时为加余额)
*/
private BigDecimal quota;
}

View File

@@ -0,0 +1,41 @@
package jnpf.model.attendance.dto;
import jnpf.model.common.PageDto;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
public class AttendanceUserBalanceDto extends PageDto {
/**
* 主键id
*/
private String id;
/**
* 类型 : 1.存休 2.假日
*/
private Integer type;
/**
* 假日类型Idftb_attendance_leave_rules
*/
private String objectId;
/**
* 用户id
*/
private String userId;
/**
* 余额
*/
private BigDecimal balance;
/**
* 用户id 编辑、批量编辑时使用
*/
private List<String> userIds;
}

View File

@@ -0,0 +1,30 @@
package jnpf.model.attendance.dto;
import jnpf.model.common.PageDto;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data
public class AttendanceUserBalanceListQueryDto extends PageDto {
/**
* 班组ID
*/
private List<OrgTeamDto> orgTeamDtoList;
/**
* 工作状态
*/
private String workStatus;
/**
* 成员名称模糊搜索
*/
private String iText;
/**
* 成员ID列表
*/
private List<String> userIds;
}

View File

@@ -0,0 +1,114 @@
package jnpf.model.attendance.dto;
import jnpf.model.common.PageDto;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import javax.validation.constraints.NotEmpty;
import java.util.Date;
import java.util.List;
/**
* describe
*
* @author HuangLinPan
* @date 2023/11/23
*/
@Getter
@Setter
@ToString
public class BalanceQueryDto extends PageDto {
/** 考勤组id */
@NotEmpty(message = "考勤组id不能为空")
private String groupId;
/** 用户名称 */
private String userName;
/** 最小余额 */
private Integer minBalance;
/** 最大余额 */
private Integer maxBalance;
/** 最小临期余额 */
private Integer minAdventBalance;
/** 最大临期余额 */
private Integer maxAdventBalance;
/** 余额排序 0 不排序 1 倒序 2 正序 */
private Integer balanceSort = 1;
/** 带薪余额排序 0 不排序 1 倒序 2 正序 */
private Integer paidBalanceSort = 1;
/** 非带薪余额 0 不排序 1 倒序 2 正序 */
private Integer unpaidBalanceSort = 1;
/** 临期余额 0 不排序 1 倒序 2 正序 */
private Integer adventBalance = 1;
/** 节假日/用户名称 */
private String iText;
/** 最早发放时间 */
private String minGrantTime;
/** 最晚发放时间 */
private String maxGrantTime;
/** 最早过期时间 */
private String minExpireTime;
/** 最晚过期时间 */
private String maxExpireTime;
/**
* 状态 0 正常 1 过期 2已停用
*/
private Integer state;
private List<String> userIds;
private String userId;
/** 开始日期 时间戳 */
private String startDay;
private String month;
private String[] time;
private String startTime;
private String endTime;
private String taskId;
public String getStartTime() {
if (null != time && time.length > 1) {
return time[0];
}
return startTime;
}
public String getEndTime() {
if (null != time && time.length > 1) {
return time[1];
}
return endTime;
}
public BalanceQueryDto() {
}
public BalanceQueryDto(String userId, String startTime, String endTime) {
this.userId = userId;
this.startTime = startTime;
this.endTime = endTime;
}
}

View File

@@ -0,0 +1,27 @@
package jnpf.model.attendance.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* 需求10批量考勤记录DTO
*
* @author Generated
* @create 2026-04-22
*/
@Data
@Schema(description = "批量考勤记录DTO")
public class BatchAttendanceBookRecordDto {
/**
* 考勤记录列表
*/
@Valid
@NotEmpty(message = "考勤记录列表不能为空")
@Schema(description = "考勤记录列表")
private List<AttendanceBookRecordDto> records;
}

View File

@@ -0,0 +1,20 @@
package jnpf.model.attendance.dto;
import jnpf.annotation.check.CheckListSize;
import lombok.Data;
import java.util.List;
@Data
public class BatchSaveGroupAdmin {
/** 考勤组id*/
private String groupId;
/** 批量保存考勤组管理员*/
// private List<SaveGroupAdmin> groupAdminList;
private List<String> userIds;
@CheckListSize(message = "请选择权限")
private List<String> permissionIds;
}

View File

@@ -0,0 +1,31 @@
package jnpf.model.attendance.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 日考勤本列表查询DTO
*
* @author Generated
* @create 2026-04-16
*/
@Data
@Schema(description = "日考勤本列表查询DTO")
public class BookRecordDayListDto {
/**
* 考勤本ID必填
*/
@NotBlank(message = "考勤本ID不能为空")
@Schema(description = "考勤本ID", required = true)
private String bookId;
/**
* 日期必填格式yyyy-MM-dd
*/
@NotBlank(message = "日期不能为空")
@Schema(description = "日期格式yyyy-MM-dd", required = true, example = "2026-04-16")
private String day;
}

View File

@@ -0,0 +1,31 @@
package jnpf.model.attendance.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 月考勤本列表查询DTO
*
* @author Generated
* @create 2026-04-16
*/
@Data
@Schema(description = "月考勤本列表查询DTO")
public class BookRecordMonthListDto {
/**
* 考勤本ID必填
*/
@NotBlank(message = "考勤本ID不能为空")
@Schema(description = "考勤本ID", required = true)
private String bookId;
/**
* 月份必填格式yyyy-MM
*/
@NotBlank(message = "月份不能为空")
@Schema(description = "月份格式yyyy-MM", required = true, example = "2026-04")
private String month;
}

View File

@@ -0,0 +1,75 @@
package jnpf.model.attendance.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.List;
/**
* 考勤本月统计请求DTO
*
* @author Generated
* @create 2026-04-15
*/
@Data
@Schema(description = "考勤本月统计请求DTO")
public class BookRecordMonthStatisticsDto {
/**
* 考勤本ID必填
*/
@NotBlank(message = "考勤本ID不能为空")
@Schema(description = "考勤本ID", required = true)
private String bookId;
/**
* 月份必填格式yyyy-MM
*/
@NotBlank(message = "月份不能为空")
@Schema(description = "月份格式yyyy-MM", required = true, example = "2026-04")
private String month;
/**
* 用户ID集合可选用于筛选特定员工
*/
@Schema(description = "用户ID集合可选用于筛选特定员工")
private List<String> userIds;
/**
* 当前页码可选默认1
*/
@Schema(description = "当前页码", defaultValue = "1")
private Integer currentPage = 1;
/**
* 每页条数可选默认20传-1表示查询全部
*/
@Schema(description = "每页条数", defaultValue = "20")
private Integer pageSize = 20;
}

View File

@@ -0,0 +1,23 @@
package jnpf.model.attendance.dto;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;
/**
* 取消手机绑定dto
*
* @author yanwenfu
* @create 2025-09-17
*/
@Getter
@Setter
public class CancelPhoneDto {
@NotNull(message = "取消绑定的手机不能为空")
@Size(min = 1, message = "最少取消一个绑定")
private List<String> cancelIdList;
}

View File

@@ -0,0 +1,83 @@
package jnpf.model.attendance.dto;
import jnpf.enums.attendance.ApplyTypeEnum;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;
/**
* 打卡dto
*
* @author yanwenfu
* @create 2023-09-18
*/
@Getter
@Setter
@NoArgsConstructor
public class ClockInDto {
/** 是否极速打卡(1: 是, 0: 否) */
private Integer fast;
/** 打卡种类(1: 普通打卡, 2: 外勤打卡) */
@NotNull(message = "请选择打卡类型")
private Integer clockInKind;
/** 原打卡记录id(打卡类型为补卡时必传) */
private String clockInId;
/** 图片集合 */
@Size(max =9, message = "最多上传9张图片")
private List<String> picUrlList;
/** 审批编码 */
private String approvalCode;
/** 审批类型[用于审批中的打卡] */
private ApplyTypeEnum applyType;
/** 打卡地址 */
private String address;
/** 经度 */
private String lng;
/** 维度 */
private String lat;
/** 设备类型 : 1地点打卡 2.考勤机 3.wifi */
@NotNull(message = "设备类型不能为空")
private Integer deviceType;
/** 设备id */
private String deviceId;
/** 设备名称 */
private String deviceName;
/** 用户id(考勤机使用) */
private String userId;
/** 租户id(考勤机使用) */
private String tenantId;
/** 备注 */
private String remark;
public ClockInDto(Integer clockInKind, String address, Integer deviceType, String deviceId, String deviceName, String userId, String tenantId) {
this.clockInKind = clockInKind;
this.address = address;
this.deviceType = deviceType;
this.deviceId = deviceId;
this.deviceName = deviceName;
this.userId = userId;
this.tenantId = tenantId;
}
public ClockInDto(Integer deviceType, Integer clockInKind, String approvalCode, ApplyTypeEnum applyType, String address, String lng, String lat, String remark) {
this.deviceType = deviceType;
this.clockInKind = clockInKind;
this.approvalCode = approvalCode;
this.applyType = applyType;
this.address = address;
this.lng = lng;
this.lat = lat;
this.remark = remark;
}
public ClockInDto(Integer clockInKind, String clockInId) {
this.clockInKind = clockInKind;
this.clockInId = clockInId;
}
}

View File

@@ -0,0 +1,21 @@
package jnpf.model.attendance.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CloudAlbumBatchSaveDto {
/**
* 图片集合
*/
@NotEmpty(message = "图片集合集合不能为空")
private List<String> picUrlList;
}

View File

@@ -0,0 +1,43 @@
package jnpf.model.attendance.dto;
import jnpf.base.Pagination;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ConfirmPageListDto extends Pagination {
/**
* 考勤组/班组信息
*/
@NotEmpty(message = "请选择考勤组/班组信息")
private List<GroupFilterDto> filterList;
/**
* 月份(yyyy-mm)
*/
@NotBlank(message = "月份不能为空")
private String month;
/**
* 关键字
*/
private String keyword;
/**
* 工作状态(0-全部(默认),302-试用, 303-正式, 304-待离职, 305-离职)
*/
@NotBlank(message = "工作状态不能为空")
private String workStatus;
/**
* 类型(0-全部(默认) 1-已确认 2-未确认 3-未查看 4-已查看未确认)
*/
@NotNull(message = "工作状态不能为空")
private Integer type;
}

View File

@@ -0,0 +1,44 @@
package jnpf.model.attendance.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ConfirmSettingSubmitDto {
/**
* id(为空表示第一次新增)
*/
private String id;
/**
* 确认月份(1-当前月份 2-上个月)
*/
@NotNull(message = "确认月份不能为空")
private Integer confirmMonth;
/**
* 每月几号允许确认
*/
@NotNull(message = "每月几号允许确认不能为空")
private Integer allowConfirm;
/**
* 开始确认后几天内可确认
*/
@NotNull(message = "开始确认后几天内可确认不能为空")
private Integer confirmDuration;
/**
* 逾期结果(1-自动确认 2-不可确认)
*/
@NotNull(message = "确认月份不能为空")
private Integer slippageResult = 1;
/**
* 提交方式(1-下一次应用 2-立即应用)
*/
@NotNull(message = "提交方式不能为空")
private Integer optMethod;
}

View File

@@ -0,0 +1,36 @@
package jnpf.model.attendance.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ConfirmStatisticsDto {
/**
* 考勤组/班组信息
*/
@NotEmpty(message = "请选择考勤组/班组信息")
private List<GroupFilterDto> filterList;
/**
* 月份(yyyy-mm)
*/
@NotBlank(message = "月份不能为空")
private String month;
/**
* 关键字
*/
private String keyword;
/**
* 工作状态(0-全部(默认),302-试用, 303-正式, 304-待离职, 305-离职, 306-试岗)
*/
@NotBlank(message = "工作状态不能为空")
private String workStatus;
}

View File

@@ -0,0 +1,41 @@
package jnpf.model.attendance.dto;
import jnpf.base.Pagination;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DayPayrollStatisticsPageListDto extends Pagination {
/**
* 考勤组/班组信息
*/
@NotEmpty(message = "请选择考勤组/班组信息")
private List<GroupFilterDto> filterList;
/**
* 开始日期(yyyy-mm-dd)
*/
@NotBlank(message = "开始日期不能为空")
private String startDate;
/**
* 结束日期(yyyy-mm-dd)
*/
@NotBlank(message = "结束日期不能为空")
private String endDate;
/**
* 用户ID
*/
private List<String> userIds;
/**
* 工作状态(0-全部(默认),302-试用, 303-正式, 304-待离职, 305-离职)
*/
private String workStatus;
}

View File

@@ -0,0 +1,40 @@
package jnpf.model.attendance.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DayStatisticsDataDto{
/**
* 考勤组/班组信息
*/
@NotEmpty(message = "请选择考勤组/班组信息")
private List<GroupFilterDto> filterList;
/**
* 开始日期(yyyy-mm-dd)
*/
@NotBlank(message = "开始日期不能为空")
private String startDate;
/**
* 结束日期(yyyy-mm-dd)
*/
@NotBlank(message = "结束日期不能为空")
private String endDate;
/**
* 用户ID
*/
private List<String> userIds;
/**
* 工作状态(0-全部(默认),302-试用, 303-正式, 304-待离职, 305-离职)
*/
private String workStatus;
}

View File

@@ -0,0 +1,32 @@
package jnpf.model.attendance.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DayStatisticsDataInitDto {
/**
* 用户ID
*/
@NotBlank(message = "用户ID不能为空")
private String userId;
/**
* 考勤组ID
*/
@NotBlank(message = "考勤组ID不能为空")
private String groupId;
/**
* 日期
*/
@NotBlank(message = "日期不能为空")
private String day;
}

View File

@@ -0,0 +1,46 @@
package jnpf.model.attendance.dto;
import jnpf.base.Pagination;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DayStatisticsDataPageListQueryDto extends Pagination {
/**
* 考勤组ID集合
*/
@NotEmpty(message = "考勤组ID集合不能为空")
private List<String> groupIds;
/**
* 开始日期(yyyy-mm-dd)
*/
@NotBlank(message = "开始日期不能为空")
private String startDate;
/**
* 结束日期(yyyy-mm-dd)
*/
@NotBlank(message = "结束日期不能为空")
private String endDate;
/**
* 用户ID
*/
private List<String> userIds;
/**
* 查询类型1-全部 2-正常 3-其他)
*/
@NotBlank(message = "查询类型不能为空")
private Integer queryType;
/**
* 字段名
*/
private String fieldName;
}

View File

@@ -0,0 +1,35 @@
package jnpf.model.attendance.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.time.LocalDate;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DayStatisticsDto {
/**
* 门店ID集合
*/
@NotEmpty(message = "门店ID集合不能为空")
private List<String> storeIds;
/**
* 日期(yyyy-mm-dd)
*/
@NotNull(message = "日期不能为空")
private LocalDate day;
/**
* 租户Id
*/
@NotNull(message = "日期不能为空")
private String tenantId;
}

View File

@@ -0,0 +1,44 @@
package jnpf.model.attendance.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DayStatisticsExportDto {
/**
* 考勤组/班组信息
*/
@NotEmpty(message = "请选择考勤组/班组信息")
private List<GroupFilterDto> filterList;
/**
* 开始日期(yyyy-mm-dd)
*/
@NotBlank(message = "开始日期不能为空")
private String startDate;
/**
* 结束日期(yyyy-mm-dd)
*/
@NotBlank(message = "结束日期不能为空")
private String endDate;
/**
* 用户ID
*/
private List<String> userIds;
/**
* 工作状态(0-全部(默认),302-试用, 303-正式, 304-待离职, 305-离职)
*/
private String workStatus;
/**
* 统计类型
*/
private Integer typeId;
}

View File

@@ -0,0 +1,69 @@
package jnpf.model.attendance.dto;
import jnpf.base.Pagination;
import jnpf.entity.AttendanceGroup;
import jnpf.enums.attendance.StatisticsEnumUtil;
import jnpf.permission.vo.v2.user.UserBoundVO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
import java.util.Map;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DayStatisticsPageListDto extends Pagination {
/**
* 考勤组/班组信息
*/
@NotEmpty(message = "请选择考勤组/班组信息")
private List<GroupFilterDto> filterList;
/**
* 开始日期(yyyy-mm-dd)
*/
@NotBlank(message = "开始日期不能为空")
private String startDate;
/**
* 结束日期(yyyy-mm-dd)
*/
@NotBlank(message = "结束日期不能为空")
private String endDate;
/**
* 用户ID
*/
private List<String> userIds;
/**
* 工作状态(0-全部(默认),302-试用, 303-正式, 304-待离职, 305-离职)
*/
private String workStatus;
/**
* 统计类型
*/
private Integer typeId;
/**
* 租户ID
*/
private String tenantId;
/**
* 考勤组信息查询防重复查询
*/
Map<String, AttendanceGroup> groupMap;
/**
* 工作状态
*/
private StatisticsEnumUtil.WorkStatusEnum workStatusEnum;
/**
* 用户信息查询防重复查询
*/
private Map<String, UserBoundVO> userBoundMap;
private String key;
}

View File

@@ -0,0 +1,18 @@
package jnpf.model.attendance.dto;
import lombok.Data;
/**
* @Author huanglinpan
* @Date 2024/11/4 16:18
* @Version 1.0 (版本号)
*/
@Data
public class DurationForOaDto {
/** 开始结束时间的数组 0开始 1结束*/
private String[] time;
/** 单位 1.小时 2.天 */
private Integer unit;
}

View File

@@ -0,0 +1,12 @@
package jnpf.model.attendance.dto;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
public class EnableUpdateDto {
private String id;
private Integer enable;
}

View File

@@ -0,0 +1,24 @@
package jnpf.model.attendance.dto;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;
@HeadRowHeight(25)
@ContentRowHeight(100)
@Data
public class ExportUserTemplateDto {
// @ExcelProperty({"文件说明:姓名和用户账号均为必填字段,否则系统将无法识别"})
// private String headTitle;
@ExcelProperty({"文件说明:姓名和用户账号均为必填字段,否则系统将无法识别", "考勤组批量导入考勤人员", "姓名"})
@ColumnWidth(50)
private String name;
@ExcelProperty({"文件说明:姓名和用户账号均为必填字段,否则系统将无法识别", "考勤组批量导入考勤人员", "账号"})
@ColumnWidth(50)
private String account;
}

View File

@@ -0,0 +1,28 @@
package jnpf.model.attendance.dto;
import jnpf.model.common.PageDto;
import lombok.Getter;
import lombok.Setter;
/**
* 人脸变动查询dto
*
* @author yanwenfu
* @create 2025-09-28
*/
@Getter
@Setter
public class FaceChangeQueryDto extends PageDto {
/** 开始时间(yyyy-MM-dd) */
private String startDate;
/** 开始时间(yyyy-MM-dd) */
private String endDate;
/** 更新人 */
private String userName;
/** 组织id */
private String orgId;
}

View File

@@ -0,0 +1,32 @@
package jnpf.model.attendance.dto;
import jnpf.model.common.PageDto;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
/**
* 人脸查询dto
*
* @author yanwenfu
* @create 2025-04-14
*/
@Getter
@Setter
public class FaceQueryDto extends PageDto {
/** 用户名称 */
private String userName;
/** 是否录入(0: 全部, 1: 是, 2: 否) */
private Integer setCheck;
/** 考勤组id(英文逗号分隔) 查无考勤组的: -1 */
private String groupId;
/** 班组id(英文逗号分隔) */
private String teamId;
/** 同步状态(1: 成功, 0: 失败) */
private Integer syncStatus;
}

View File

@@ -0,0 +1,28 @@
package jnpf.model.attendance.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author panpan
* @date 2025/10/28
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class FestivalDto {
/**
* 主键id
*/
private boolean festival;
/**
* 节日名称 多个使用@分割
*/
private String festivalStr;
public FestivalDto(boolean festival) {
this.festival = festival;
}
}

View File

@@ -0,0 +1,21 @@
package jnpf.model.attendance.dto;
import jnpf.model.common.PageDto;
import lombok.Data;
@Data
public class FestivalRulesQueryDto extends PageDto {
/**
* 模糊搜索
*/
private String iText;
/**
* 年份
*/
private String year;
}

View File

@@ -0,0 +1,21 @@
package jnpf.model.attendance.dto;
import lombok.Data;
/**
* @Author huanglinpan
* @Date 2024/5/10 16:29
* @Version 1.0 (版本号)
*/
@Data
public class FixedBaseDto {
/** 类型1 休 2 正常排班 */
private Integer type;
/** 班次Id */
private String shiftNameId;
/** 上下排序 */
private Integer sort;
}

View File

@@ -0,0 +1,20 @@
package jnpf.model.attendance.dto;
import lombok.Data;
/**
* @Author huanglinpan
* @Date 2024/5/11 15:21
* @Version 1.0 (版本号)
*/
@Data
public class FixedClassChangeStatusDto {
/** 班次名称Id */
private String shiftNameId;
/** 状态1启用 2停用 */
private Integer enable;
/** 是否修改之前班次1 保持之前班次 2修改之前的班次 */
private Integer updateShift;
}

View File

@@ -0,0 +1,26 @@
package jnpf.model.attendance.dto;
import lombok.Data;
import java.util.List;
/**
* 固定排班和快速模板dto
* @Author huanglinpan
* @Date 2024/5/10 13:58
* @Version 1.0 (版本号)
*/
@Data
public class FixedClassDto {
private String id;
/** 第几天/周几 */
private String num;
/** 类型1组合班 0单独班 */
private Integer shiftType;
/** 班次信息 */
private List<FixedBaseDto> fixedBases;
}

View File

@@ -0,0 +1,27 @@
package jnpf.model.attendance.dto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.List;
/**
* @Author huanglinpan
* @Date 2024/5/10 19:01
* @Version 1.0 (版本号)
*/
@Data
public class FixedClassGroupDto {
/** 考勤组id */
@NotBlank(message = "考勤组id不能为空")
private String groupId;
/** 班制类型1固定班 2排班 */
private Integer systemType;
/** 排班信息 */
private List<FixedClassDto> fixedClassDtos;
}

View File

@@ -0,0 +1,37 @@
package jnpf.model.attendance.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
/**
* @Author huanglinpan
* @Date 2024/5/10 19:16
* @Version 1.0 (版本号)
*/
@Data
@AllArgsConstructor
public class FixedClassSaveDto {
private String id;
/** 第几天/周几 */
private String num;
/** 类型1组合班 0单独班 */
private Integer shiftType;
/** 考勤组Id */
private String groupId;
/** 类型1 休 2 正常排班 */
private Integer type;
/** 班次Id */
private String shiftNameId;
/** 上下排序 */
private Integer sort;
}

View File

@@ -0,0 +1,21 @@
package jnpf.model.attendance.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class GetConfirmMonthDto {
/**
* 统计类型
*/
private Integer typeId;
/**
* 租户ID
*/
private String tenantId;
}

View File

@@ -0,0 +1,45 @@
package jnpf.model.attendance.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.AssertTrue;
import java.util.List;
/**
* 获取有效用户列表DTO
*
* @author Generated
* @create 2026-04-16
*/
@Data
@Schema(description = "获取有效用户列表DTO")
public class GetValidUsersDto {
/**
* 组织ID列表
*/
@Schema(description = "组织ID列表")
private List<String> organizeList;
/**
* 用户ID列表
*/
@Schema(description = "用户ID列表")
private List<String> userIdList;
/**
* 月份
*/
@Schema(description = "月份")
private String month;
/**
* 自定义校验组织ID列表和用户ID列表至少需要一个不为空
*/
@AssertTrue(message = "组织ID列表和用户ID列表至少需要一个不为空")
@Schema(hidden = true)
public boolean isValidParams() {
return (organizeList != null && !organizeList.isEmpty())
|| (userIdList != null && !userIdList.isEmpty());
}
}

View File

@@ -0,0 +1,46 @@
package jnpf.model.attendance.dto;
import jnpf.model.workflow.dto.AttendanceBaseForOa;
import lombok.Data;
import lombok.ToString;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Author huanglinpan
* @Date 2024/11/4 15:24
* @Version 1.0 (版本号)
*/
@Data
@ToString(callSuper = true)
public class GoOutApproveForOaDto extends AttendanceBaseForOa {
private String id;
/** 请假人 */
private String userId;
/** 时长(天) */
private BigDecimal dayNum;
/** 单位 1.小时 2.天 */
private Integer unit;
/** 外出理由 */
private String reason;
/** 照片 */
private String fileJson;
/** 考勤组名称 */
private String groupId;
// @Override
// public String toString() {
// return "UserCopy{" +
// "User='" + super.toString() + "', " +
// "userId='" + userId + '\'' + "dayNum='" + dayNum + '\'' + "unit='" + unit + '\'' + "reason='" + reason + '\'' + "fileJson='" + fileJson + '\'' + "groupId='" + groupId + '\'' +
// '}';
// }
}

View File

@@ -0,0 +1,30 @@
package jnpf.model.attendance.dto;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.util.List;
/**
* describe
* 发放余额dto
* @author HuangLinPan
* @date 2023/11/23
*/
@Getter
@Setter
@ToString
public class GrantBalanceDto {
/** 假期id */
private String balanceId;
/** 假期类型 1 节日 2 假日 */
private Integer Type;
/** 用户id集合 */
private List<String> userIds;
}

View File

@@ -0,0 +1,32 @@
package jnpf.model.attendance.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class GroupFilterDto {
/**
* 考勤组ID
*/
@NotBlank(message = "考勤组ID不能为空")
private String groupId;
/**
* 是否班组(0-否 1-是)
*/
@NotNull(message = "是否班组不能为空")
private Integer team;
/**
* 班组ID
*/
private String teamId;
}

View File

@@ -0,0 +1,73 @@
package jnpf.model.attendance.dto;
import lombok.Data;
import lombok.ToString;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @Author huanglinpan
* @Date 2024/11/5 9:50
* @Version 1.0 (版本号)
*/
@Data
@ToString
public class GroupOaDto {
/** OA传入时间戳数组 time=[1730390400000, 1730476800000] */
private String[] time;
/**
* 开始时间
*/
private Date startTime;
/** 是否来自OA条件 */
private boolean isFromOaCondition = false;
/**
* 结束时间
*/
private Date endTime;
/** 用户Id */
private String[] userId;
/** 用户Id */
private String userIdStr;
/** 单位 : 1 :小时 2: 天 3.半天 */
private Integer unit;
public Date getStartTime() {
if (time != null && time.length > 1) {
if (null != unit && 3 == unit){
//半天时 time ['2024-1-1 上午','2024-1-1 下午']
try {
return new SimpleDateFormat("yyyy-MM-dd").parse(time[0].split(" ")[0]);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
//其他 time [1730390400000, 1730476800000]
return new Date(Long.parseLong(time[0]));
}
return startTime;
}
public Date getEndTime() {
if (time != null && time.length > 1) {
if (null != unit && 3 == unit){
//半天时 time ['2024-1-1 上午','2024-1-1 下午']
try {
return new SimpleDateFormat("yyyy-MM-dd").parse(time[1].split(" ")[0]);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
//其他 time [1730390400000, 1730476800000]
return new Date(Long.parseLong(time[1]));
}
return endTime;
}
}

View File

@@ -0,0 +1,28 @@
package jnpf.model.attendance.dto;
import lombok.Data;
import java.util.List;
/**
* @Author huanglinpan
* @Date 2024/9/3 17:27
* @Version 1.0 (版本号)
*/
@Data
public class GroupQueryDto {
/**
* 考勤组名称模糊搜索
*/
private String name;
/**
* 查询类型 0 :查询未删除的 1查询全部
*/
private Integer type = 0;
/**
* 组织id集合
*/
private List<String> orgIds;
}

View File

@@ -0,0 +1,59 @@
package jnpf.model.attendance.dto;
import jnpf.enums.attendance.StatisticsEnumUtil;
import jnpf.permission.vo.v2.user.UserBoundVO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import java.util.List;
import java.util.Map;
/**
* @Author huanglinpan
* @Date 2024/6/24 10:49
* @Version 1.0 (版本号)
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class GroupUserQueryDto {
/**
* 考勤组/班组信息
*/
@NotEmpty(message = "请选择考勤组/班组信息")
private List<GroupFilterDto> filterList;
/**
* 开始时间
*/
@NotEmpty(message = "开始时间不能为空")
private String startTime;
/**
* 结束时间
*/
@NotEmpty(message = "结束时间不能为空")
private String endTime;
/**
* 租户ID
*/
private String tenantId;
/**
* 用户ID
*/
private List<String> userIds;
/**
* 工作状态
*/
private StatisticsEnumUtil.WorkStatusEnum workStatusEnum;
private Map<String, UserBoundVO> staffRosterMap;
}

View File

@@ -0,0 +1,23 @@
package jnpf.model.attendance.dto;
import jnpf.annotation.check.CheckNull;
import jnpf.entity.AttendanceGroupUser;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class JoinUserDto {
@CheckNull(message = "请选择考勤组")
private String groupId;
private String tenantId;
// @CheckListSize(message = "请选择用户")
private List<String> userIds;
private Date joinTime;
/** 历史用户考勤组信息 */
private List<AttendanceGroupUser> oldUserList;
}

View File

@@ -0,0 +1,34 @@
package jnpf.model.attendance.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class LatticeStatisticsVoDto {
/**
* 考勤组ID
*/
@NotBlank(message = "考勤组ID不能为空")
private String groupId;
/**
* 用户ID
*/
@NotBlank(message = "用户ID不能为空")
private String userId;
/**
* 日期yyyy-mm-dd
*/
@NotNull(message = "日期不能为空")
private Date day;
}

View File

@@ -0,0 +1,165 @@
package jnpf.model.attendance.dto;
import jnpf.model.workflow.dto.AttendanceBaseForOa;
import lombok.Data;
import lombok.ToString;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @Author huanglinpan
* @Date 2024/11/4 17:35
* @Version 1.0 (版本号)
*/
@Data
@ToString(callSuper = true)
public class LeaveApproveForOaDto extends AttendanceBaseForOa {
/**
* 主键id
*/
private String id;
/** 岗位id */
private String postId;
/** 请假类型id */
private String typeId;
/**
* 配置的请假类型(事假/调休...)
*/
private String type;
/**当请假类型为天时开始时间选择的班次信息 同ftb_attendance_shift_setting_period表F_Type类型1 上半天 2 下半天 (半天制班次使用)当请假类型单位为半天时生效 */
private Integer startTimeType;
/** 请假开始时间 命中的时间 */
private Date startTimeHit;
/**当请假类型为天时结束时间选择的班次信息 同ftb_attendance_shift_setting_period表F_Type类型1 上半天 2 下半天 (半天制班次使用)当请假类型单位为半天时生效 */
private Integer endTimeType;
/** 请假结束时间 命中的时间 */
private Date endTimeHit;
/**
* 申请时长
*/
private BigDecimal applicationduration;
/**
* 请假原因
*/
private String reasonforleave;
/**
* 未抵扣时间
*/
private Integer undeductedTime;
/**oa收拢使用 【是否使用余额抵扣,是否选中带薪抵扣,是否选中非带薪抵扣】 【1,1,0】 */
private Integer[] selected;
/**
* 是否使用余额抵扣 0 否 1是
*/
private Integer balanceStatus;
/**
* 是否选中带薪抵扣 0 未选中 1选中
*/
private Integer paid;
/**
* 是否选中非带薪抵扣 0 未选中 1选中
*/
private Integer noPaid;
/** 是否审核通过 0.待审核 1.通过 2.未通过 */
private Integer status = 0;
/**
* 照片 暂弃
*/
private String picture;
/**
* 照片
*/
private String fileJson;
/** 流程标题 */
private String flowTitle;
/** 申请人员 */
private String applyUser;
/** 申请日期 */
private Date applyDate;
/** 提交/保存 0-1 */
private String submitStatus;
/** 涉及班次JSON */
private String shiftInvolved;
/** 余额JSON */
private String balanceJson;
/** 2.0余额相关JSON */
private String balanceJsonNew;
/** 考勤组名称 */
private String groupId;
public Integer getStartTimeType() {
if (getTime() != null && getTime().length > 1 && null != getUnit() && 3 == getUnit()) {
//半天时 time ['2024-1-1 上午','2024-1-1 下午']
try {
return getTime()[0].split(" ")[1].contains("上午") ? 1 : 2;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return startTimeType;
}
public Integer getEndTimeType() {
if (getTime() != null && getTime().length > 1 && null != getUnit() && 3 == getUnit()) {
//半天时 time ['2024-1-1 上午','2024-1-1 下午']
try {
return getTime()[1].split(" ")[1].contains("上午") ? 1 : 2;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return endTimeType;
}
public Integer getBalanceStatus() {
if (null != selected && selected.length > 0) {
return selected[0];
}
return balanceStatus;
}
public Integer getPaid() {
if (null != selected && selected.length > 1) {
return selected[1];
}
return paid;
}
public Integer getNoPaid() {
if (null != selected && selected.length > 2) {
return selected[2];
}
return noPaid;
}
}

View File

@@ -0,0 +1,90 @@
package jnpf.model.attendance.dto;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import javax.validation.constraints.NotBlank;
import java.util.Date;
/**
* describe
*
* @author HuangLinPan
* @date 2023/11/29
*/
@Getter
@Setter
@ToString
public class LeaveQueryDto {
/** 请假开始时间 单位为小时时 2023-11-11 08:30 单位为天 2023-11-11 */
/** 请假开始时间 字符串类型的时间戳 */
@NotBlank(message = "开始时间不能为空")
private String startTime;
/** 请假结束时间 单位为小时时 2023-11-12 09:30 单位为天 2023-11-12*/
/** 请假结束时间 字符串类型的时间戳 */
@NotBlank(message = "结束时间不能为空")
private String endTime;
/**当请假类型为天时开始时间选择的班次信息 同ftb_attendance_shift_setting_period表F_Type类型1 上半天 2 下半天 (半天制班次使用)当请假类型单位为半天时生效 */
private Integer startTimeType;
/** 请假开始时间 命中的时间 */
private Date startTimeHit;
/**当请假类型为天时结束时间选择的班次信息 同ftb_attendance_shift_setting_period表F_Type类型1 上半天 2 下半天 (半天制班次使用)当请假类型单位为半天时生效 */
private Integer endTimeType;
/** 请假结束时间 命中的时间 */
private Date endTimeHit;
/** 请假类型id */
private String leaveTypeId;
/**
* 是否使用余额抵扣 0 否 1是
*/
private Integer balanceStatus;
/**
* 是否选中带薪抵扣(兑换券) 0 未选中 1选中
*/
private Integer paid;
/**
* 是否选中非带薪抵扣(抵扣劵) 0 未选中 1选中
*/
private Integer noPaid;
/** 审批id */
private String applyId;
/** 请假类型id */
private String typeId;
/** 单位 : 1 :小时 2: 天 3.半天 */
private Integer unit;
/** 用户Id */
private String userId;
/** oa审批Id */
private String taskId;
public LeaveQueryDto() {
}
public LeaveQueryDto(Integer unit, String startTime, String endTime, Integer startTimeType, Integer endTimeType, String applyId, String typeId) {
this.unit = unit;
this.startTime = startTime;
this.endTime = endTime;
this.startTimeType = startTimeType;
this.endTimeType = endTimeType;
this.applyId = applyId;
this.typeId = typeId;
}
}

Some files were not shown because too many files have changed in this diff Show More