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,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.jnpf</groupId>
<artifactId>jnpf-ftb</artifactId>
<version>3.4.7-RELEASE</version>
</parent>
<artifactId>jnpf-ftb-entity</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<easyexcel.version>3.1.1</easyexcel.version>
</properties>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
</dependency>
<dependency>
<!-- easyExcel-->
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>${easyexcel.version}</version>
</dependency>
<dependency>
<groupId>com.jnpf</groupId>
<artifactId>jnpf-common-core</artifactId>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
</dependency>
<dependency>
<groupId>com.jnpf</groupId>
<artifactId>jnpf-permission-entity</artifactId>
<version>3.4.7-RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.6tail</groupId>
<artifactId>lunar</artifactId>
<version>1.3.7</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>10</source>
<target>10</target>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@@ -0,0 +1,36 @@
package jnpf.annotation;
import jnpf.enums.SensitiveTypeEnum;
import java.lang.annotation.*;
/**
* 脱敏注解
*
* @author wcx
* @date 2024/2/3
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Sensitive {
/**
* 脱敏数据类型
*/
SensitiveTypeEnum type() default SensitiveTypeEnum.CUSTOMER;
/**
* 前置不需要打码的长度
*/
int prefixNoMaskLen() default 0;
/**
* 后置不需要打码的长度
*/
int suffixNoMaskLen() default 0;
/**
* 用什么打码
*/
String symbol() default "*";
}

View File

@@ -0,0 +1,17 @@
package jnpf.annotation.check;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface CheckLength {
String message() default "non err";
int max();
int min() default 0;
}

View File

@@ -0,0 +1,13 @@
package jnpf.annotation.check;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface CheckListSize {
String message();
}

View File

@@ -0,0 +1,13 @@
package jnpf.annotation.check;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface CheckNull {
String message() default "non err";
}

View File

@@ -0,0 +1,318 @@
package jnpf.constants;
import jnpf.util.DateUtil;
import java.util.Date;
public class AttendanceConstant {
public final static String APPLY_FAIL_RESULT1 = "申请时间与原%s时间冲突请重新选择";
public final static String SCHEDULING_FAIL_RESULT2 = "用户%s %s已存在%s不能进行%s";
public final static String LEAVE = "请假";
public final static String REST = "排休";
public final static String ORDINARY = "上班";
public final static String WORKOVERTIME = "加班";
public final static String STEP_OUT = "外出、出差";
public final static String HOLIDAYS_COLOR = "31,192,138";
public static final String FTB_ATTENDANCE_NOTICE_CONFIRM_KEY = "ftb:attendance:notice:confirm:%s:%s";
//考勤模块头像
public final static String ATTENDANCE_APP_LOGO = "https://jnpf-resource-1304460613.cos.ap-chengdu.myqcloud.com/jnpf-resources/WebAnnexFile/66b96888e4b0ac7b700b2ef3.png";
//考勤通知-确认接口
public final static String ATTENDANCE_NOTICE_CONFIRM_URL = "/api/ftb/attendance/notice/confirm/%s";
//考勤小程序id
public final static String MP_ID = "__UNI__748697E";
//确认列表页面地址
public final static String ATTENDANCE_NOTICE_CONFIRM_LIST_VIEW_URL = "/pages/clockingInV2/InfoPush/ConfirmList?id=%s";
//确认列表页面地址
public final static String ATTENDANCE_NOTICE_CONFIRM_LIST_BUTTON_NAME = "确认人员名单";
public final static String ATTENDANCE_NOTICE_CONFIRM = "确认收到";
public final static String ATTENDANCE_NOTICE_CONFIRMED = "已收到";
public final static String ATTENDANCE_NOTICE_DETAIL_BUTTON_NAME = "查看详情";
//出勤规则页面
public final static String ATTENDANCE_NOTICE_RULE_URL = "/pages/clockingInV2/AttendanceRules";
public final static String ATTENDANCE_NOTICE_GROUP_CHANGES_URL = "/pages/clockingInV2/InfoPush/AttendanceGroupChanges?id=%s";
//详情页面
public final static String ATTENDANCE_NOTICE_SHIFT_CHANGE_DETAIL_URL = "/pages/clockingInV2/InfoPush/ShiftChanges?id=%s";
public final static String BTN_SCHEDULE_URL = "/pages/clockingInV2/schedulingPage/index?AttendanceGroup=%s";
public final static String BTN_LINE_SCHEDULE_URL = "/pages/clockingInV2/lineScheduling/index?AttendanceGroup=%s";
public final static String BTN_SCHEDULE_GO = "去排班";
/** 跳转按钮-查看详情 */
public static final String BTN_NAME_TO_DETAIL = "查看详情";
/** URL-极速打卡详情 */
public static final String BTN_FAST_DETAIL_URL = "/pages/clockingInV2/MyAttendance/index";
/** URL- 连续旷工查看详情 */
public static final String BTN_CONSECUTIVE_ABSENCE_URL = "/pages/clockingInV2/InfoPush/ContinuousAbsenceNotice?id=%s";
/** 跳转按钮-极速更新打卡 */
public static final String BTN_NAME_FAST_UPDATE = "更新打卡";
/** URL-极速更新打卡 */
public static final String BTN_FAST_UPDATE_URL = "/pages/clockingInV2/index";
/** 跳转按钮-申请补卡 */
public static final String BTN_NAME_REPAIR = "申请补卡";
/** URL-申请补卡 */
public static final String BTN_REPAIR_URL = "/pages/oaApproval/manage/template?flowId=%s&templateId=%s&internalLink=%s";
/** 跳转按钮-去打卡 */
public static final String BTN_NAME_GO = "去打卡";
/** URL-考勤规则 */
public static final String BTN_RULE_URL = "/pages/clockingInV2/AttendanceRules";
/** 标题-极速打卡成功 */
public static final String TITLE_FAST = "%s极速打卡成功";
/** 标题-连续旷工通知 */
public static final String TITLE_CONSECUTIVE_ABSENCE = "成员连续旷工通知";
public static final String TITLE_ABSENCE = "班次旷工提醒";
public static final String TITLE_ON_WORK = "上班缺卡提醒";
public static final String TITLE_OFF_WORK = "下班缺卡提醒";
public static final String TITLE_BEFORE_ON_WORK = "上班打卡提醒";
public static final String TITLE_BEFORE_OFF_WORK = "下班打卡提醒";
public static final String TITLE_CLOCK_IN_CHANGE = "您的出勤结果已被管理员变更";
/** 上班 */
public static final String ON_WORK = "上班";
/** 下班 */
public static final String OFF_WORK = "下班";
public final static String ATTENDANCE_NOTICE_TO_CLICK = "去打卡";
public final static String ATTENDANCE_NOTICE_SHIFT_CHANGE_TITLE = "您的班次已被修改";
public final static String ATTENDANCE_NOTICE_CONSEC_UNSCHEDULED_TITLE = "多天未排班提醒";
public final static String ATTENDANCE_NOTICE_LINE_SHIFT_CHANGE_TITLE = "划线排班提醒通知";
public final static String ATTENDANCE_NOTICE_LINE_SCHEDULED_TITLE = "划线排班定时提醒";
public final static String ATTENDANCE_NOTICE_JOIN_GROUP_CHANGE_TITLE = "加入考勤组提示";
public final static String ATTENDANCE_NOTICE_GROUP_CHANGE_TITLE = "考勤组变动提示";
public final static String ATTENDANCE_NOTICE_REMOVE_USER_TITLE = "考勤组离组提示";
public final static String ATTENDANCE_NOTICE_RULE_CHANGE_TITLE = "当前考勤组规则变动";
public final static String ATTENDANCE_NOTICE_ADMIN_RULE_CHANGE_TITLE = "管理考勤组规则变动";
//打卡页面
public final static String ATTENDANCE_NOTICE_CLICK_URL = "/pages/clockingInV2/index";
//打卡前提醒
public final static String BEFORE_CLOCK_IN = "BEFORE_CLOCK_IN";
//缺卡/旷工提醒
public final static String WORK_MISSING = "WORK_MISSING";
//极速打卡
public final static String FAST_CLOCK_IN = "FAST_CLOCK_IN";
//连续旷工
public final static String CONSECUTIVE_ABSENCE = "CONSECUTIVE_ABSENCE";
//考勤组锁定
public final static String GROUP_LOCK = "GROUP_LOCK";
public final static String TITLE_GROUP_LOCK = "当前考勤组被锁定提示";
public final static String GROUP_LOCK_URL1 = "/pages/message/userDetail/index?userId=%s";
public final static String GROUP_LOCK_BUTTON_NAME1 = "联系管理员";
public final static String GROUP_LOCK_BUTTON_NAME2 = "查看详情";
public final static String GROUP_LOCK_URL2 = "/pages/clockingInV2/InfoPush/attendanceLockedUnlocked?type=1&id=%s";
//考勤组解锁
public final static String GROUP_UNLOCK = "GROUP_UNLOCK";
public final static String TITLE_GROUP_UNLOCK = "当前考勤组解锁提示";
public final static String GROUP_UNLOCK_URL = "/pages/clockingInV2/InfoPush/attendanceLockedUnlocked?type=2&id=%s";
//出勤换算比变动
public final static String RULE_CHANGE_RATIO = "RULE_CHANGE_RATIO";
//外勤打卡规则变动
public final static String RULE_CHANGE_FIELD = "RULE_CHANGE_FIELD";
//补卡规则变动
public final static String RULE_CHANGE_CARD_MAKEUP = "RULE_CHANGE_CARD_MAKEUP";
//GPS打卡开关变动
public final static String RULE_CHANGE_GPS_SWIFT = "RULE_CHANGE_GPS_SWIFT";
//班制变动
public final static String RULE_CHANGE_SHIFT_SYSTEM = "RULE_CHANGE_SHIFT_SYSTEM";
//管理员变动
public final static String ADMINISTRATOR_CHANGE = "ADMINISTRATOR_CHANGE";
public final static String ADMINISTRATOR_CHANGE_BUTTON_NAME1 = "查看详情";
public final static String ADMINISTRATOR_CHANGE_URL1 = "/pages/clockingInV2/InfoPush/AttendanceGroupAdministratorChange?id=%s";
public final static String ADMINISTRATOR_CHANGE_BUTTON_NAME2 = "进入团队考勤";
public final static String ADMINISTRATOR_CHANGE_URL2 = "/pages/clockingInV2/TeamAttendance/index?groupId=%s";
public final static String ADMINISTRATOR_CHANGE_TITLE1 = "您已成为【%s】的管理员";
public final static String ADMINISTRATOR_CHANGE_TITLE2 = "您已不是【%s】的管理员";
public final static String ADMINISTRATOR_CHANGE_URL3 = "/pages/message/userDetail/index?userId=%s";
public final static String ADMINISTRATOR_CHANGE_NAME3 = "联系管理员";
//出勤结果变动
public final static String CHECK_RESULT_CHANGE = "CHECK_RESULT_CHANGE";
//个人考勤日报
public final static String INDIVIDUAL_DAILY_STATISTICS = "INDIVIDUAL_DAILY_STATISTICS";
public final static String INDIVIDUAL_DAILY_STATISTICS_BUTTON_NAME1 = "查看报表";
public final static String INDIVIDUAL_DAILY_STATISTICS_URL1 = "/pages/clockingInV2/InfoPush/AttendanceReport?type=1&id=%s";
public final static String INDIVIDUAL_DAILY_STATISTICS_BUTTON_NAME2 = "我的考勤";
public final static String INDIVIDUAL_DAILY_STATISTICS_URL2 = "/pages/clockingInV2/MyAttendance/index";
//个人统计月报
public final static String INDIVIDUAL_MONTHLY_STATISTICS = "INDIVIDUAL_MONTHLY_STATISTICS";
public final static String INDIVIDUAL_MONTHLY_STATISTICS_BUTTON_NAME1 = "查看报表";
public final static String INDIVIDUAL_MONTHLY_STATISTICS_URL1 = "/pages/clockingInV2/InfoPush/AttendanceReport?type=2&id=%s";
public final static String INDIVIDUAL_MONTHLY_STATISTICS_BUTTON_NAME2 = "查看详情";
public final static String INDIVIDUAL_MONTHLY_STATISTICS_URL2 = "/pages/clockingInV2/MyAttendance/AttendanceDataStatistics";
//团队统计月报
public final static String TEAM_MONTHLY_STATISTICS = "TEAM_MONTHLY_STATISTICS";
public final static String TEAM_MONTHLY_STATISTICS_BUTTON_NAME1 = "查看报表";
public final static String TEAM_MONTHLY_STATISTICS_URL1 = "/pages/clockingInV2/InfoPush/AttendanceReport?type=3&id=%s";
public final static String TEAM_MONTHLY_STATISTICS_BUTTON_NAME2 = "进入团队考勤";
public final static String TEAM_MONTHLY_STATISTICS_URL2 = "/pages/clockingInV2/TeamAttendance/index";
//加入考勤组
public final static String JOIN_GROUP = "JOIN_GROUP";
//考勤组解散加入新组
public final static String GROUP_CHANGE_REMOVE_JOIN_GROUP = "GROUP_CHANGE_REMOVE_JOIN_GROUP";
//借调-考勤组变动
public final static String GROUP_CHANGE_SECONDMENT = "GROUP_CHANGE_SECONDMENT";
//调岗/晋升考勤组变动
public final static String GROUP_CHANGE_TRANSFER_OR_PROMOTION = "GROUP_CHANGE_TRANSFER_OR_PROMOTION";
//班次变动
public final static String SHIFT_CHANG = "SHIFT_CHANG";
public final static String LINE_SHIFT_CHANG = "LINE_SHIFT_CHANG";
public final static String LINE_SHIFT_NOT_SCHEDUING = "LINE_SHIFT_NOT_SCHEDUING";
//连续未排班
public final static String CONSEC_UNSCHEDULED = "CONSEC_UNSCHEDULED";
public final static String APPROVE = "APPROVE";
// 被借调人员查看到的审批页面
public final static String APPROVE_SECONDED_URL = "/pages/clockingInV2/InfoPush/AttendanceApproval?id=%s";
public final static String APPROVE_URL = "/pages/workFlow/flowBefore/index?config=";
//黑色
public final static String COLOR_BLACK = "#1A1A1A";
//蓝色
public final static String COLOR_BLUE = "#3C6DF8";
public static String getApplyResult(String realName, String oldTypeStr) {
return String.format(APPLY_FAIL_RESULT1, oldTypeStr);
}
public static String getSchedulingResult(String realName, Date date, String oldTypeStr, String currTypeStr) {
return String.format(SCHEDULING_FAIL_RESULT2, realName, DateUtil.daFormat(date), oldTypeStr,currTypeStr);
}
// ==================== 考勤本导入相关常量 ====================
/**
* 导入错误:考勤本配置不存在
*/
public static final String ERR_IMPORT_CONFIG_NOT_FOUND = "考勤本配置不存在";
/**
* 导入错误:考勤本配置已禁用
*
*/
public static final String ERR_IMPORT_CONFIG_DISABLED = "当前考勤本已被禁用";
/**
* 导入错误:导入数据为空
*/
public static final String ERR_IMPORT_DATA_EMPTY = "导入数据为空请检查Excel文件内容";
/**
* 导入错误:表头日期与月份不匹配
*/
public static final String ERR_IMPORT_HEADER_DATE_MISMATCH = "表头日期与所选月份不匹配";
/**
* 导入错误:数据行超过上限(不含表头)
*/
public static final String ERR_IMPORT_EXCEED_MAX_ROWS = "导入数据已超过500行上限不含表头最多支持500行请分批导入";
/**
* 导入错误:考勤本名称(首列)为空
*/
public static final String ERR_IMPORT_BOOK_NAME_EMPTY = "考勤本名称不能为空,请填写与所选考勤本一致的名称";
/**
* 导入错误:数据行考勤本名称与根据所选考勤本 ID 解析出的名称不一致
*/
public static final String ERR_IMPORT_BOOK_NAME_ROW_MISMATCH = "考勤本名称与所选考勤本「%s」不一致";
/**
* 导入错误:手机号不能为空
*/
public static final String ERR_IMPORT_PHONE_EMPTY = "手机号不能为空";
/**
* 导入错误:手机号重复
*/
public static final String ERR_IMPORT_PHONE_DUPLICATE = "手机号[%s]重复";
/**
* 导入错误:手机号未找到对应员工
*/
public static final String ERR_IMPORT_PHONE_NOT_FOUND = "手机号[%s]未在考勤本中找到对应员工";
/**
* 导入错误:考勤状态不合法
*/
public static final String ERR_IMPORT_STATUS_INVALID = "考勤状态不合法[%s],允许值:正常、公休、迟到、早退、缺卡、请假、出差、外出、外勤、旷工,或系统中配置的请假类型名称";
/**
* 导入错误:日期不在月份范围内
*/
public static final String ERR_IMPORT_DATE_OUT_OF_RANGE = "日期不在%s月范围内";
/**
* 导入错误:日期解析失败
*/
public static final String ERR_IMPORT_DATE_PARSE_FAILED = "日期解析失败";
/**
* 导入错误:数据解析失败
*/
public static final String ERR_IMPORT_DATA_PARSE_FAILED = "数据解析失败";
/**
* 导入失败前缀
*/
public static final String ERR_IMPORT_FAILED_PREFIX = "导入失败:";
// ==================== 考勤本导出相关常量 ====================
/**
* 导出模板表头:班次列名
*/
public static final String HEADER_SHIFT = "班次";
/**
* 上半天显示文本
*/
public static final String PERIOD_MORNING = "";
/**
* 下半天显示文本
*/
public static final String PERIOD_AFTERNOON = "";
// ==================== 考勤本操作日志相关常量 ====================
/**
* HTML红色标记开始标签
*/
public static final String RED_MARK_START = "<span style=\"color:red\">";
/**
* HTML红色标记结束标签
*/
public static final String RED_MARK_END = "</span>";
/**
* 操作日志:更新考勤记录
*/
public static final String LOG_OPERATION_CLEAN = "清空考勤本记录";
/**
* 操作日志:更新考勤记录
*/
public static final String LOG_OPERATION_UPDATE = "更新考勤本记录";
/**
* 操作日志:新增考勤记录
*/
public static final String LOG_OPERATION_ADD = "新增考勤本记录";
// ==================== 考勤本配置相关常量 ====================
/**
* 考勤本名称已存在错误提示
*/
public static final String ERR_BOOK_NAME_EXISTS = "考勤本名称已存在,请使用其他名称";
/**
* 未查询到考勤本配置错误提示
*/
public static final String ERR_CONFIG_NOT_FOUND = "未查询到考勤本配置";
/**
* 未找到考勤本配置错误提示
*/
public static final String ERR_CONFIG_NOT_EXIST = "未找到考勤本配置";
/**
* 考勤本已存在记录时不允许变更使用范围(组织/成员)
*/
public static final String ERR_BOOK_SCOPE_CHANGE_HAS_RECORDS = "该考勤本已存在考勤记录,不允许变更使用范围(组织)";
}

View File

@@ -0,0 +1,43 @@
package jnpf.constants;
/**
* 权限字典常量
*/
public class AttendancePermissionConstant {
public static final String ATTENDANCE_RESULT = "调整出勤结果";
public static final String SCHEDULING = "排班";
public static final String ADD_CHILD_GROUP = "添加子组";
public static final String BINDING_ORG = "绑定组织";
public static final String RENAME = "重命名";
public static final String DELETE = "删除";
/** 查看*/
public static final String VIEW = "查看";
/** 管理*/
public static final String MANAGER = "管理";
/** 考勤组排班页面*/
public static final String BALANCE_MANAGER = "余额管理";
public static final String USER_MANAGER = "成员管理";
public static final String ATTENDANCE_CONFIGURATION = "考勤配置";
public static final String PERMISSION_CONFIGURATION = "权限设置";
public static final String PERMISSION_LOCKED = "锁定";
/** 自定义考勤配置*/
public static final String BASE = "出勤基础设置";
public static final String ATTENDANCE_POINTS = "考勤点";
public static final String ATTENDANCE_CLASS = "考勤班制";
public static final String LEAVE_TYPE = "请假类型设置";
public static final String FESTIVAL = "节日设置";
public static final String HOLIDAY = "假日设置";
/** 审批权限*/
public static final String SECONDED_APPROVAL = "借调审批";
/** 借调成员*/
public static final String SECONDED_USER = "借调成员";
/** 子考勤组权限*/
/** 下级考勤组调整出勤审批*/
public static final String CHILD_ADJUST_ATTENDANCE_RESULTS = "下级考勤组调整出勤审批";
}

View File

@@ -0,0 +1,69 @@
package jnpf.constants;
/**
* 消息队列topic
*
* @author wangchunxiang
* @date 2024/12/05
*/
public interface MessageTopicConstants {
// 字符建议字母a~z或A~Z、数字0~9以及下划线、短划线-)和百分号(%。长度建议1~64个字符。
/**
* 任务消费主题
*/
String PERSONNEL_SECONDMENT_TOPIC = "secondment-consumer-output";
String PERSONNEL_SECONDMENT_FAIL_TOPIC = "personnel-onboarding-fail-topic";
String PERMISSION_TOPIC = "permission-topic";
//创建借调
String PERSONNEL_ONBOARDING_TOPIC = "personnel-onboarding-topic";
//取消借调
String SECONDMENT_WITHDRAWAL_OUTPUT = "secondment-withdrawal-topic";
//借调延迟
String SECONDMENT_WITHDRAWAL_DELAY_OUTPUT = "secondment-withdrawal-delay-topic";
//借调提前结束
String SECONDMENT_WITHDRAWAL_EARLY_END_OUTPUT = "secondment-withdrawal-early-end-topic";
//考勤统计清除(为了等待调用事务的全量提交,发送的延迟消息(等级是25秒后发送)
String ATTENDANCE_STATISTICS_BATCH_CLEAR_TOPIC = "attendance-statistics-batch-clear-topic";
String ATTENDANCE_STATISTICS_BATCH_CLEAR_CONSUMER_GROUP = "attendance-statistics-batch-clear-consumer-group";
//考勤统计单个生成(为了等待调用事务的全量提交,发送的延迟消息(等级是25秒后发送)
String ATTENDANCE_STATISTICS_SINGLE_TOPIC = "attendance-statistics-single-topic";
String ATTENDANCE_STATISTICS_SINGLE_CONSUMER_GROUP = "attendance-statistics-single--consumer-group";
String ATTENDANCE_NOTIFICATION_CLOCK_TOPIC = "attendance-notification-clock-topic";
String ATTENDANCE_NOTIFICATION_CLOCK_CONSUMER_GROUP = "attendance-notification-clock-consumer-group";
//考勤统计单个生成(为了等待调用事务的全量提交,发送的延迟消息(等级是25秒后发送)
String ATTENDANCE_STATISTICS_SINGLE_HISTORY_TOPIC = "attendance-statistics-single-history-topic";
String ATTENDANCE_STATISTICS_SINGLE_HISTORY_CONSUMER_GROUP = "attendance-statistics-single-history-consumer-group";
// 加班发券
String ATTENDANCE_OVERTIME_TOPIC = "attendance-overtime-topic";
String ATTENDANCE_OVERTIME_CONSUMER_GROUP = "attendance-overtime-consumer-group";
// 绩效
String AUDIT_RANKING_TOPIC = "audit-ranking-topic";
String AUDIT_RANKING_TOPIC_CONSUMER_GROUP = "audit-ranking-consumer-group";
/**
* 任务消费组
*/
String SECONDMENT_GROUP = "jnpf-ftb-secondment-group_1";
String SECONDMENT_WITHDRAWAL_GROUP = "jnpf-ftb-secondment-withdrawal-group_1";
String JNPF_GROUP = "jnpf-ftb-permission-group_1";
String JNPF_USER_GROUP = "jnpf-ftb-permission-user-group_1";
String ONBOARDING_GROUP = "jnpf-ftb-onboarding-group_1";
String ONBOARDING_FAIL_GROUP = "jnpf-ftb-onboarding-fail-group_1";
String TAG_ORGANIZE = "TAG_ORGANIZE";
String ORGANIZE_RELATION_USER = "TAG_ORGANIZE_RELATION_USER";
//培训topic
String CULTIVATE_TOPIC = "jnpf-ftb-cultivate-topic";
//培训消费者组
String CULTIVATE_CONSUMER_GROUP_SELF = "jnpf-ftb-cultivate-consumer-group-self";
String CULTIVATE_CONSUMER_GROUP = "jnpf-ftb-cultivate-consumer-group";
}

View File

@@ -0,0 +1,13 @@
package jnpf.constants;
/**
* 任职资格标准静态字段
*
* @author Flynn Chan
* @create 2024-03-14
*/
public class QualificationsConstant {
public final static String NONE_FIELD = "未知标准字段";
public final static String NONE_FIELD_CATEGORY = "未知标准字段分类";
public final static String NONE_ITEM = "未知注释项";
}

View File

@@ -0,0 +1,38 @@
package jnpf.constants;
/**
* redis常量类
*/
public class RedisConstant {
public static final String CACHE_GROUP = "cache_group:";
public static final String GROUP_JOIN_USERS_KEY = "cache_group:join:Users:%s";
public static final String GROUP_ONBOARDING_KEY = "cache_group:onboarding:%s";
public static final String ATTENDANCE_SET_SCHEDULES= "fbt:attendance:set_schedules:%s:%s";
public static final String ATTENDANCE_BASE_SETTING_CACHE_KEY = "fbt:attendance:base_setting:cache:%s";
//fbt:attendance:user:set_schedules:租户:考勤组id:用户id
public static final String ATTENDANCE_USER_SET_SCHEDULES= "fbt:attendance:user:set_schedules:%s:%s:%s";
public static final String ATTENDANCE_CHANGE_SHIFT_STATUS= "fbt:attendance:change_shift_status:%s:%s";
public static final String ATTENDANCE_CHANGE_GROUP_STATUS= "fbt:attendance:change_group_status:%s:%s";
public static final String ATTENDANCE_UPDATE_FIXED_CLASS= "fbt:attendance:update_fixed_class:%s:%s";
public static final String ATTENDANCE_UPDATE_SHIFT_CONFIG= "fbt:attendance:update_shift_config:%s:%s";
public static final String ATTENDANCE_LATE_IN_LATE_OUT = "fbt:attendance:late_in_late_out:%s:%s";
public static final String ATTENDANCE_LINE_SCHEDULING_NOTICE = "ftb:attendance:line_scheduling_notice:%s";
// 考勤自动封账配置信息缓存
public static final String ATTENDANCE_SEAL_SETTING = "fbt:attendance:seal_setting:%s";
public static final String ATTENDANCE_NOTIFICATION_CLOCK_USER = "fbt:attendance:user:notification:clock:%s:%s";
/**
* 智能排班预排班主表暂存租户、考勤组、排班区间yyyy-MM-dd_yyyy-MM-dd
*/
public static final String ATTENDANCE_SMART_PRE_SCHEDULE = "fbt:attendance:smart_pre_schedule:%s:%s:%s";
/**
* 智能排班预排班按员工视图 Redis key 固定前缀;后缀为 {@code 租户:考勤组:yyyy-MM-dd_yyyy-MM-dd}。
*/
public static final String ATTENDANCE_SMART_PRE_SCHEDULE_BY_EMPLOYEE_PREFIX =
"fbt:attendance:smart_pre_schedule_by_employee:%s:%s";
}

View File

@@ -0,0 +1,9 @@
package jnpf.constants;
public class ShareMsgConstant {
public static String LIKE_REPLY = "%s点赞了你的分享";
public static String COMMENT_REPLY = "%s评论了你的分享";
public static String COMMENT_COMMENT_REPLY = "%s评论了你的评论";
public static String SHARE_TITLE = "广场通知";
}

View File

@@ -0,0 +1,31 @@
package jnpf.easyexcel;
import com.alibaba.excel.write.handler.SheetWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder;
import lombok.Data;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import java.util.List;
@Data
public class DynamicHeaderHandler implements SheetWriteHandler {
private List<String> columnNames;
public DynamicHeaderHandler(List<String> columnNames) {
this.columnNames = columnNames;
}
@Override
public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
Sheet sheet = writeSheetHolder.getSheet();
Row headerRow = sheet.createRow(0);
// 假设根据某些条件动态添加列
// 根据需要添加更多列
for (int i = 0; i < columnNames.size(); i++) {
Cell cell = headerRow.createCell(i);
cell.setCellValue(columnNames.get(i));
}
}
}

View File

@@ -0,0 +1,9 @@
package jnpf.easyexcel;
public interface EasyEnumNames {
/**
* 获取枚举名称
*/
String getName();
}

View File

@@ -0,0 +1,28 @@
package jnpf.easyexcel;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
public class EasyEnumNamesConverter implements Converter<EasyEnumNames> {
@Override
public Class<?> supportJavaTypeKey() {
return EasyEnumNames.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public WriteCellData<?> convertToExcelData(EasyEnumNames value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
if (contentProperty == null) {
return null;
} else {
return new WriteCellData<>(value.getName());
}
}
}

View File

@@ -0,0 +1,28 @@
package jnpf.easyexcel;
import com.alibaba.fastjson.serializer.JSONSerializer;
import com.alibaba.fastjson.serializer.ObjectSerializer;
import jnpf.util.ReflectionUtil;
import java.io.IOException;
import java.lang.reflect.Type;
public class FastJsonEnumConverter implements ObjectSerializer {
@Override
public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
if (object == null) {
serializer.write(null);
return;
}
if (object instanceof Enum) {
try {
Object resultName = ReflectionUtil.invokeGetterMethod(object, "code");
serializer.write(resultName);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

View File

@@ -0,0 +1,88 @@
package jnpf.easyexcel;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import com.alibaba.excel.util.DateUtils;
import com.alibaba.excel.util.StringUtils;
import org.apache.poi.ss.usermodel.DateUtil;
import java.math.BigDecimal;
import java.text.ParseException;
import java.util.Date;
public class StaffDateStringConverter implements Converter<Date> {
@Override
public Class<?> supportJavaTypeKey() {
return Date.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public Date convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) throws ParseException {
String format = switchDateFormat(cellData.getStringValue());
if(StringUtils.isEmpty(format)){
BigDecimal numberValue = cellData.getNumberValue();
if (numberValue == null){
return null;
}
double v = numberValue.doubleValue();
return DateUtil.getJavaDate(v,
globalConfiguration.getUse1904windowing(), null);
}
if (contentProperty == null || format.isEmpty()) {
return null;
} else {
return DateUtils.parseDate(cellData.getStringValue(), format);
}
}
@Override
public WriteCellData<?> convertToExcelData(Date value, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) {
if (contentProperty == null || contentProperty.getDateTimeFormatProperty() == null) {
return new WriteCellData<>(DateUtils.format(value, null));
} else {
return new WriteCellData<>(DateUtils.format(value, contentProperty.getDateTimeFormatProperty().getFormat()));
}
}
private static final String param2 = "yyyy-MM-dd";
private static final String param5 = "yyyy/MM/dd";
private static final String param6 = "yyyyMMdd";
private static final String param7 = "yyyy.MM.dd";
private static final String MINUS = "-";
private static final String MINUSD = ".";
private String switchDateFormat(String dateString) {
if (dateString == null) {
return "";
}
int length = dateString.length();
switch (length) {
case 10:
if (dateString.contains(MINUS)) {
return param2;
}else if (dateString.contains(MINUSD)){
return param7;
}else {
return param5;
}
case 8:
return param6;
default:
return "";
}
}
}

View File

@@ -0,0 +1,62 @@
package jnpf.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 接口调用日志表
* @author yanwenfu
* @create 2026-01-28
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName ( value ="ftb_api_call_log" )
public class ApiCallLog extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 5134795939132551720L;
/** 接口名称 */
@TableField(value = "F_ApiName")
private String apiName;
/** 接口路径 */
@TableField(value = "F_ApiPath")
private String apiPath;
/** HTTP方法 */
@TableField(value = "F_HttpMethod")
private String httpMethod;
/** 请求参数(JSON) */
@TableField(value = "F_RequestBody")
private String requestBody;
/** 返回结果(JSON) */
@TableField(value = "F_ResponseBody")
private String responseBody;
/** 是否成功(1: 是, 0: 否) */
@TableField(value = "F_Success")
private Integer success;
/** 异常信息 */
@TableField(value = "F_ErrorMsg")
private String errorMsg;
/** 耗时(ms) */
@TableField(value = "F_CostTime")
private Integer costTime;
/** 调用ip */
@TableField(value = "F_Ip")
private String ip;
}

View File

@@ -0,0 +1,41 @@
package jnpf.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
/**
* banner
*
* @author yanwenfu
* @create 2023-10-10
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName(value ="ftb_app_banner")
public class AppBanner extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
/** 图标标题 */
@TableField(value = "F_Icon_Title")
private String iconTitle;
/** 图标描述 */
@TableField(value = "F_Icon_Description")
private String iconDescription;
/** 图片地址 */
@TableField(value = "F_Icon_Url")
private String iconUrl;
/** 跳转地址 */
@TableField(value = "F_Jump_To")
private String jumpTo;
/** 排序 */
@TableField(value = "F_Sort")
private Integer sort;
}

View File

@@ -0,0 +1,61 @@
package jnpf.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.util.Date;
import lombok.Data;
/**
* <p>
* 考勤审批设置表
* </p>
*
* @author Auto-generator
* @since 2023-11-21
*/
@Data
@TableName("ftb_attendance_approval_setting")
public class AttendanceApprovalSetting {
/**
* 自然主键
*/
@TableId("F_Id")
private String id;
/**
* 考勤组id
*/
@TableField("F_GroupId")
private String groupId;
/**
* 审批类型 1.常规补卡审批 2.调整出勤结果审批 3.外勤审批 4.请假审批 5.加班审批
*/
@TableField("F_type")
private Integer type;
/**
* 审批权限设置 1.考勤超级管理员 2.上级考勤管理员 3.当前组管理员 0.无需审批
*/
@TableField("F_Permission")
private Integer permission;
@TableField("F_TenantId")
private String tenantId;
public AttendanceApprovalSetting(String groupId, Integer type, Integer permission) {
this.groupId = groupId;
this.type = type;
this.permission = permission;
}
public AttendanceApprovalSetting() {
}
public AttendanceApprovalSetting(String id, String groupId, Integer type, Integer permission, String tenantId) {
this.id = id;
this.groupId = groupId;
this.type = type;
this.permission = permission;
this.tenantId = tenantId;
}
}

View File

@@ -0,0 +1,79 @@
package jnpf.entity;
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.sql.Timestamp;
/**
* <p>
* 考勤-自定义报表设置
* </p>
*
* @author ahua
* @since 2024-09-03
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("ftb_attendance_customize_table")
public class AttendanceCustomizeTable implements Serializable {
private static final long serialVersionUID = 1L;
@TableId("F_Id")
private String id;
/**
* 字段名称
*/
@TableField("F_FieldName")
private String fieldName;
/**
* 字段
*/
@TableField("F_Field")
private String field;
/**
* 表头字段名
*/
@TableField("F_HeadName")
private String headName;
/**
* 表头宽带
*/
@TableField("F_Width")
private Integer width;
/**
* 是否勾选(0-未勾选 1-勾选)
*/
@TableField("F_Status")
private Integer status;
/**
* 类型(1-日度统计 2-月度统计 3-日度计薪统计 4-月度计薪统计)
*/
@TableField("F_Type")
private Integer type;
/**
* 排序
*/
@TableField("F_Sort")
private Integer sort;
/**
* 排序
*/
@TableField("F_CustomLeaveJson")
private String customLeaveJson;
/**
* 变更时间
*/
@TableField("F_UpdatorTime")
private Timestamp updatorTime;
/**
* 变更人
*/
@TableField("F_UpdatorUserId")
private String updatorUserId;
}

View File

@@ -0,0 +1,151 @@
package jnpf.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* <p>
* 考勤组表
* </p>
* @author yier
* @since 2023-11-21
*/
@Data
@TableName("ftb_attendance_group")
public class AttendanceGroup {
/**
* 自然主键
*/
@TableId("F_Id")
private String id;
/**
* 考勤组名称
*/
@TableField("F_GroupName")
private String groupName;
/**
* 父节点id
*/
@TableField("F_ParentId")
private String parentId;
/**
* 组织id
*/
@TableField("F_OrgId")
private String orgId;
/**
* 层级编码
*/
@TableField("F_LevelCode")
private String levelCode;
/**
* 考勤组详细名称树
*/
@TableField("F_DetailName")
private String detailName;
/**
* 考勤组负责人
*/
@TableField("F_ManagerId")
private String managerId;
/**
* 出勤基础设置 1.开启 0.关闭
*/
@TableField("F_BaseSetting")
private Integer baseSetting;
/**
* 考勤班制设置 1.开启 0.关闭
*/
@TableField("F_AttendanceClassSetting")
private Integer attendanceClassSetting;
/**
* 考勤点设置 1.开启 0.关闭
*/
@TableField("F_AttendancePointsSetting")
private Integer attendancePointsSetting;
/**
* 请假设置 1.开启 0.关闭
*/
@TableField("F_LeaveSetting")
private Integer leaveSetting;
/**
* 节假日设置 1.开启 0.关闭
*/
@TableField("F_FestivalSetting")
private Integer festivalSetting;
/**
* 假期设置 1.开启 0.关闭
*/
@TableField("F_HolidaySetting")
private Integer holidaySetting;
/**
* 假期设置 1.开启 0.关闭
*/
@TableField("F_LineSchedulingSetting")
private Integer lineSchedulingSetting;
/**
* 考勤点是否启用GPS
*/
@TableField("F_GpsEnable")
private Integer gpsEnable;
/**
*考勤点是否启用WiFi
*/
@TableField("F_WifiEnable")
private Integer wifiEnable;
/**
*考勤点是否启用考勤机
*/
@TableField("F_MachineEnable")
private Integer machineEnable;
/**
*考勤组锁定
*/
@TableField("F_LockedDate")
private Date lockedDate;
/**
* 是否开启月报通知 1.开启 0.关闭
*/
@TableField("F_MonthlyReportNotice")
private Integer monthlyReportNotice;
/**
* 创建用户id
*/
@TableField("F_CreatorUserId")
private String creatorUserId;
/**
* 创建时间
*/
@TableField("F_CreatorTime")
private Date creatorTime;
/**
* 租户id
*/
@TableField("F_TenantId")
private String tenantId;
/**
* 删除标志 1.是
*/
@TableField("F_DeleteMark")
private Integer deleteMark;
/**
* 删除用户id
*/
@TableField("F_DeleteUserId")
private String deleteUserId;
/**
* 最后修改时间
*/
@TableField("F_LastModifyTime")
private Date lastModifyTime;
/**
* 最后修改用户id
*/
@TableField("F_LastModifyUserId")
private String lastModifyUserId;
}

View File

@@ -0,0 +1,93 @@
package jnpf.entity;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.util.Date;
import lombok.Data;
/**
* <p>
* 考勤组成员管理表
* </p>
*
* @author yier
* @since 2023-11-21
*/
@Data
@TableName("ftb_attendance_group_user")
public class AttendanceGroupUser {
private static final long serialVersionUID = 1L;
/**
* 自然主键
*/
@TableId("F_Id")
private String id;
/**
* 用户id
*/
@TableField("F_UserId")
private String userId;
/**
* 考勤组id
*/
@TableField("F_GroupId")
private String groupId;
/**
* 1.当前考勤组 2.借调考勤组
*/
@TableField("F_Type")
private Integer type;
/**
* 排序
*/
@TableField(value = "F_Sort",updateStrategy = FieldStrategy.IGNORED)
private Integer sort;
/**
* 1.当前考勤组 2.借调考勤组
*/
@TableField("F_UserGroupType")
private Integer userGroupType;
/**
* 借调开始时间
*/
// @TableField("F_StartTime")
// private Date startTime;
/**
* 借调结束时间
*/
// @TableField("F_EndTime")
// private Date endTime;
@TableField("F_TimeJson")
private String timeJson;
/**
* 创建用户id
*/
@TableField("F_CreatorUserId")
private String creatorUserId;
/**
* 创建时间
*/
@TableField("F_CreatorTime")
private Date creatorTime;
/**
* 租户id
*/
@TableField("F_TenantId")
private String tenantId;
/**
* 移除考勤组时间
*/
@TableField(value = "F_RemoveTime", updateStrategy = FieldStrategy.IGNORED)
private Date removeTime;
@TableField("F_DeleteMark")
private Integer deleteMark;
}

View File

@@ -0,0 +1,82 @@
package jnpf.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.util.Date;
import lombok.Data;
/**
* <p>
* 考勤管理员权限设置
* </p>
*
* @author Auto-generator
* @since 2023-11-21
*/
@Data
@TableName("ftb_attendance_manager_permission")
public class AttendanceManagerPermission {
/**
* 主键
*/
@TableId("F_Id")
private String id;
/**
* 权限类型 1.当前考勤组 2.子考勤组 0.考勤超级管理员
*/
@TableField("F_Type")
private Integer type;
/**
* 考勤组id
*/
@TableField("F_GroupId")
private String groupId;
/**
* 用户id
*/
@TableField("F_UserId")
private String userId;
/**
* 权限菜单id
*/
@TableField("F_PermissionId")
private String permissionId;
/**
* 创建用户id
*/
@TableField("F_CreatorUserId")
private String creatorUserId;
/**
* 创建时间
*/
@TableField("F_CreatorTime")
private Date creatorTime;
/**
* 租户id
*/
@TableField("F_TenantId")
private String tenantId;
/**
* 删除标志 1.是
*/
@TableField("F_DeleteMark")
private Integer deleteMark;
/**
* 删除用户id
*/
@TableField("F_DeleteUserId")
private String deleteUserId;
/**
* 最后修改时间
*/
@TableField("F_LastModifyTime")
private Date lastModifyTime;
/**
* 最后修改用户id
*/
@TableField("F_LastModifyUserId")
private String lastModifyUserId;
}

View File

@@ -0,0 +1,41 @@
package jnpf.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* @author Created by wyr on 2023/7/20.
**/
@Data
@Accessors(chain = true)
public class BaseEntity extends BaseInsertEntity{
@Schema(description = "有效标识")
@TableField("F_EnabledMark")
private Integer enabledMark;
@Schema(description = "修改用户")
@TableField(value = "F_LastModifyUserId")
private String lastModifyUserId;
@Schema(description = "修改时间")
@TableField(value = "F_LastModifyTime", fill = FieldFill.UPDATE)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private Date lastModifyTime;
@Schema(description = "删除用户")
@TableField("F_DeleteUserId")
private String deleteUserId;
@Schema(description = "删除时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(value = "F_DeleteTime", fill = FieldFill.UPDATE)
private Date deleteTime;
}

View File

@@ -0,0 +1,38 @@
package jnpf.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import jnpf.base.entity.SuperBaseEntity;
import lombok.Data;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.Date;
/**
* @author Created by wyr on 2023/7/20.
**/
@Data
@Accessors(chain = true)
public class BaseInsertEntity {
@Schema(description = "主键")
@TableId("F_Id")
private String id;
@Schema(description = "创建用户")
@TableField("F_CreatorUserId")
private String creatorUserId;
@Schema(description = "创建时间")
@TableField(value = "F_CreatorTime", fill = FieldFill.INSERT)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date creatorTime;
@Schema(description = "租户id")
@TableField("F_TenantId")
private String tenantId;
}

View File

@@ -0,0 +1,40 @@
package jnpf.entity;
import lombok.Getter;
import lombok.Setter;
/**
* 公共配置
*
* @author yanwenfu
* @create 2023-07-20
*/
@Getter
@Setter
public class CommonConfig {
/**
* 主键id
*/
private String id;
/**
* 名称备注
*/
private String name;
/**
* 编码(informationRecycleBin)
*/
private String code;
/**
* 配置JSON
*/
private Object dataJson;
/**
* 租户id
*/
private String tenantId;
}

View File

@@ -0,0 +1,33 @@
package jnpf.entity;
import jnpf.base.entity.SuperBaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
*
* Contract
* 版本: V3.0.0
* 版权: 引迈信息技术有限公司(https://www.jnpfsoft.com)
* 作者: JNPF开发平台组
* 日期: 2020-12-31
*/
@Data
@TableName("test_contract")
public class ContractEntity extends SuperBaseEntity.SuperTBaseEntity<String> implements Serializable {
@TableField("F_CONTRACTNAME")
private String contractName;
@TableField("F_MYTELEPHONE")
private String mytelePhone;
@TableField("F_FILEJSON")
private String fileJson;
}

View File

@@ -0,0 +1,66 @@
package jnpf.entity;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
@Getter
@Setter
public class Information {
/** 主键id */
private String id;
/** 文件名称 */
private String fileName;
/** 文件大小 */
private Double filesize;
/** 文件链接 */
private String fileUrl;
/** 文件拥有者id */
private String owner;
/** 文件后缀 */
private String fileSuffix;
/** 文件类型 1.空间 2.文件夹 3.文档 4.文件 */
private Integer classification;
/** 文件种类型 文档 表格..用于web种类搜索 */
private String fileType;
/** 文件路径 */
private String filePath;
/** 文件父级id */
private String filePid;
/** 创建时间 */
private Date creatorTime;
/** 创建用户 */
private String creatorUserId;
/** 修改时间 */
private Date lastModifyTime;
/** 修改用户 */
private String lastModifyUserId;
/** 删除时间 */
private Date deleteTime;
/** 删除用户 */
private String deleteUserId;
/** 删除标志(1.删除 0未删除) */
private Integer enabledMark;
/** 租户id */
private String tenantId;
}

View File

@@ -0,0 +1,66 @@
package jnpf.entity;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
@Getter
@Setter
public class InformationAuthority {
/**
* 主键id
*/
private String id;
/**
* 空间/文件夹/资料的id
*/
private String informationId;
/**
* 用户id
*/
private String userId;
/**
* 权限管理(1..管理员 2.可编辑 3.可上传下载 4.可下载 5.仅预览)
*/
private Integer limitsOfAuthority;
/**
* 创建时间
*/
private Date creatorTime;
/**
* 创建用户
*/
private String creatorUserId;
/**
* 修改时间
*/
private Date lastModifyTime;
/**
* 修改用户
*/
private String lastModifyUserId;
/**
* 删除时间
*/
private Date deleteTime;
/**
* 删除用户
*/
private String deleteUserId;
/**
* 租户id
*/
private String tenantId;
}

View File

@@ -0,0 +1,47 @@
package jnpf.entity;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
@Getter
@Setter
public class InformationLog {
/**
* 主键id
*/
private String id;
/**
* 用户id
*/
private String userId;
/**
* 资料id
*/
private String informationId;
/**
* 动作(创建 , 上传 , 邀请 ....)
*/
private String action;
/**
* 内容
*/
private String content;
/**
* 创建时间
*/
private Date creatorTime;
/**
* 租户id
*/
private String tenantId;
}

View File

@@ -0,0 +1,26 @@
package jnpf.entity;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
@Getter
@Setter
public class InformationRubbish {
/** 主键id */
private String id;
/** 文件id */
private String informationId;
/** 创建时间 */
private Date creatorTime;
/** 创建用户 */
private String creatorUserId;
/** 租户id */
private String tenantId;
}

View File

@@ -0,0 +1,42 @@
package jnpf.entity;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
@Getter
@Setter
public class InfornationRecentlyViewed {
/**
* 主键id
*/
private String id;
/**
* 空间/文件夹/资料的id
*/
private String informationId;
/**
* 用户id
*/
private String userId;
/**
* 创建时间
*/
private Date creatorTime;
/**
* 修改时间
*/
private Date lastModifyTime;
/**
* 租户id
*/
private String tenantId;
}

View File

@@ -0,0 +1,50 @@
package jnpf.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* 巡店任务
*/
@Data
@TableName("ftb_patrol_task")
public class PatrolTaskEntity {
@TableId("F_ID")
private String id;
@TableField("F_ConfigId")
private String configId;
@TableField("F_TaskConfigId")
private String taskConfigId;
@TableField("F_State")
private Integer state;
@TableField("F_OverseeUserId")
private String overseeUserId;
@TableField("F_OverseeUserName")
private String overseeUserName;
@TableField("F_OrgId")
private String orgId;
@TableField("F_StoreId")
private String storeId;
@TableField("F_StartTime")
private Date startTime;
@TableField("F_EndTime")
private Date endTime;
@TableField("F_EnabledMark")
private Integer enabledMark;
}

View File

@@ -0,0 +1,94 @@
package jnpf.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.util.Date;
import lombok.Data;
/**
* <p>
* 权限字典表
* </p>
*
* @author Auto-generator
* @since 2023-11-21
*/
@Data
@TableName("ftb_permission_dict")
public class PermissionDict {
/**
* 主键
*/
@TableId("F_Id")
private String id;
/**
* 权限名称
*/
@TableField("F_Name")
private String name;
/**
* 权限请求路径
*/
@TableField("F_Path")
private String path;
/**
* 权限类型 1.目录 2.功能 3.菜单
*/
@TableField("F_Type")
private Integer type;
/**
* 权限模块 1.考勤
*/
@TableField("F_ModuleType")
private Integer moduleType;
/**
* 关联父级id
*/
@TableField("F_Parent")
private String parent;
/**
* 权限编码
*/
@TableField("F_PermissionCode")
private String permissionCode;
/**
* 创建用户id
*/
@TableField("F_CreatorUserId")
private String creatorUserId;
/**
* 创建时间
*/
@TableField("F_CreatorTime")
private Date creatorTime;
/**
* 租户id
*/
@TableField("F_TenantId")
private String tenantId;
/**
* 删除标志 1.是
*/
@TableField("F_DeleteMark")
private Integer deleteMark;
/**
* 删除用户id
*/
@TableField("F_DeleteUserId")
private String deleteUserId;
/**
* 最后修改时间
*/
@TableField("F_LastModifyTime")
private Date lastModifyTime;
/**
* 最后修改用户id
*/
@TableField("F_LastModifyUserId")
private String lastModifyUserId;
@TableField("F_DeleteTime")
private Date deleteTime;
}

View File

@@ -0,0 +1,46 @@
package jnpf.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
/**
* 轮播图
*
* @author yanwenfu
* @create 2023-10-10
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName(value ="ftb_roll_image")
public class RollImage extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
/** 图片地址 */
@TableField(value = "F_Image_Url")
private String imageUrl;
/** 跳转地址 */
@TableField(value = "F_Jump_To")
private String jumpTo;
/** 图片类型 */
@TableField(value = "F_Image_Type")
private Integer imageType;
/** 是否发布(1: 是, 0: 否) */
@TableField(value = "F_Published")
private Integer published;
/** 排序 */
@TableField(value = "F_Sort")
private Integer sort;
/**
* banner类型0app1pc
*/
@TableField(value = "F_BannerType")
private Integer bannerType;
}

View File

@@ -0,0 +1,9 @@
package jnpf.entity;
import lombok.Data;
@Data
public class SharingSquareVO {
private String id;
}

View File

@@ -0,0 +1,110 @@
package jnpf.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
*
* 门店管理
* @版本: V3.1.0
* @版权: 引迈信息技术有限公司https://www.jnpfsoft.com
* @作者: JNPF开发平台组
* @日期: 2023-07-11
*/
@Data
@TableName("ftb_store")
public class StoreEntity {
@TableId("F_ID")
private String id;
@TableField("F_ORGANIZEID")
private String organizeid;
@TableField("F_STOREHEADUSERID")
private String storeheaduserid;
@TableField("F_STORENAME")
private String storename;
@TableField("F_STOREPIC")
private String storepic;
@TableField("F_LONGITUDE")
private String longitude;
@TableField("F_LATITUDE")
private String latitude;
@TableField("F_ADDRESS")
private String address;
@TableField("F_DISABLED")
private Integer disabled;
@TableField("F_SortCode")
private BigDecimal sortCode;
/**
* 面积(㎡)
*/
@TableField("F_AreaNum")
private BigDecimal areaNum;
/**
* 是否设置区域(1: 是, 0: 否)
*/
@TableField("F_SetRegion")
private Integer setRegion;
/** 第三方平台id; */
@TableField(value = "F_ThirdPartyPlatformId")
private String thirdPartyPlatformId;
@TableField(value = "F_StoreTag")
private String storeTag;
@TableField(value = "F_FranchiseeId")
private String franchiseeId;
/**
* 收银门店id;
*/
@TableField(value = "F_CashierStoreId")
private String cashierStoreId;
/** 收银门店编码; */
@TableField(value = "F_CashierStoreEnCode")
private String cashierStoreEnCode;
@TableField("F_CREATORUSERID")
private String creatoruserid;
@TableField("F_CREATORTIME")
private Date creatortime;
@TableField("F_LASTMODIFYUSERID")
private String lastmodifyuserid;
@TableField("F_LASTMODIFYTIME")
private Date lastmodifytime;
@TableField("F_DELETEMARK")
private boolean deletemark;
@TableField("F_DELETETIME")
private Date deletetime;
@TableField("F_DELETEUSERID")
private String deleteuserid;
@TableField("F_TENANTID")
private String tenantid;
@TableField(exist = false)
private List<StoreUserEntity> users;
}

View File

@@ -0,0 +1,86 @@
package jnpf.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* 门店区域管理表
*/
@Data
@TableName("ftb_store_region")
public class StoreRegion {
/**
* 自增id
*/
@TableId("F_ID")
private String id;
/**
* 门店id
*/
@TableField("F_StoreId")
private String storeId;
/**
* 是否默认数据0-否 1-是)
*/
@TableField("F_IsDefault")
private Integer isDefault;
/**
* 区域名称
*/
@TableField("F_Name")
private String name;
/**
* 桌台数
*/
@TableField("F_DeskCount")
private Integer deskCount;
/**
* 座位数
*/
@TableField("F_SeatCount")
private Integer seatCount;
/**
* 创建用户id
*/
@TableField("F_CreatorUserId")
private String creatorUserId;
/**
* 创建时间
*/
@TableField("F_CreatorTime")
private Date creatorTime;
/**
* 最后修改时间
*/
@TableField("F_LastModifyTime")
private Date lastModifyTime;
/**
* 最后修改用户id
*/
@TableField("F_LastModifyUserId")
private String lastModifyUserId;
/**
* 删除标志 1.是
*/
@TableField("F_DeleteMark")
private Integer deleteMark;
/**
* 删除时间
*/
@TableField("F_DeleteTime")
private Date deleteTime;
/**
* 删除用户id
*/
@TableField("F_DeleteUserId")
private String deleteUserId;
/**
* 租户id
*/
@TableField("F_TenantId")
private String tenantId;
}

View File

@@ -0,0 +1,70 @@
package jnpf.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* 门店管理, 值班人员表
*
* @版本: V3.1.0
* @版权: 引迈信息技术有限公司https://www.jnpfsoft.com
* @作者: JNPF开发平台组
* @日期: 2023-07-11
*/
@Data
@TableName("ftb_store_user")
public class StoreUserEntity {
@TableId("F_Id")
private String id;
@TableField("F_StoreId")
private String storeId;
@TableField("F_UserId")
private String userId;
@TableField("F_OrganizeId")
private String organizeId;
@TableField("F_PositionId")
private String positionId;
@TableField("F_GradeId")
private String gradeId;
@TableField("F_TargetType")
private String targetType;
// 过时, 实际业务流程未用
@TableField("F_SHIFTSMARKS")
private Boolean shiftsmarks;
@TableField("F_CREATORUSERID")
private String creatorUserId;
@TableField("F_CREATORTIME")
private Date creatorTime;
@TableField("F_LASTMODIFYUSERID")
private String lastModifyUserId;
@TableField("F_LASTMODIFYTIME")
private Date lastModifyTime;
@TableField("F_DELETEMARK")
private Integer deleteMark;
@TableField("F_DELETETIME")
private Date deleteTime;
@TableField("F_DELETEUSERID")
private String deleteUserId;
@TableField("F_TENANTID")
private String tenantTd;
}

View File

@@ -0,0 +1,42 @@
package jnpf.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
* 用户门店关联表
*/
@Data
@TableName("ftb_store_user_relation")
public class StoreUserRelation {
@TableId("F_ID")
private String id;
@TableField("F_StoreId")
private String storeId;
@TableField("F_UserId")
private String userId;
@TableField("F_OrganizeId")
private String organizeId;
@TableField("F_PositionId")
private String positionId;
@TableField("F_RankId")
private String rankId;
@TableField("F_DeleteMark")
private Integer deleteMark;
@TableField("F_TenantId")
private String tenantId;
}

View File

@@ -0,0 +1,122 @@
package jnpf.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* <p>
* 考勤工作站配置表
* </p>
* @author AI Generated
* @since 2026-05-11
*/
@Data
@TableName("ftb_attendance_workstation")
public class Workstation {
/**
* 主键ID
*/
@TableId("F_Id")
private String id;
/**
* 工作站名称
*/
@TableField("F_Name")
private String name;
/**
* 门店ID
*/
@TableField("F_StoreId")
private String storeId;
/**
* 门店名称
*/
@TableField("F_StoreName")
private String storeName;
/**
* 岗位ID
*/
@TableField("F_PositionId")
private String positionId;
/**
* 岗位名称
*/
@TableField("F_PositionName")
private String positionName;
/**
* 排序码
*/
@TableField("F_SortCode")
private Integer sortCode;
/**
* 备注说明
*/
@TableField("F_Description")
private String description;
/**
* 创建人ID
*/
@TableField("F_CreatorUserId")
private String creatorUserId;
/**
* 创建时间
*/
@TableField("F_CreatorTime")
private Date creatorTime;
/**
* 修改人ID
*/
@TableField("F_LastModifyUserId")
private String lastModifyUserId;
/**
* 修改时间
*/
@TableField("F_LastModifyTime")
private Date lastModifyTime;
/**
* 删除标记(0正常/1删除)
*/
@TableField("F_DeleteMark")
private Integer deleteMark;
/**
* 删除人ID
*/
@TableField("F_DeleteUserId")
private String deleteUserId;
/**
* 删除时间
*/
@TableField("F_DeleteTime")
private Date deleteTime;
/**
* 租户ID
*/
@TableField("F_TenantId")
private String tenantId;
/**
* 有效标记(0禁用/1启用)
*/
@TableField("F_EnabledMark")
private Integer enabledMark;
}

View File

@@ -0,0 +1,74 @@
package jnpf.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* <p>
* 考勤工作站人员关联表
* </p>
* @author AI Generated
* @since 2026-05-11
*/
@Data
@TableName("ftb_attendance_workstation_user")
public class WorkstationUser {
/**
* 主键ID
*/
@TableId("F_Id")
private String id;
/**
* 工作站ID
*/
@TableField("F_WorkstationId")
private String workstationId;
/**
* 用户ID
*/
@TableField("F_UserId")
private String userId;
/**
* 创建人ID
*/
@TableField("F_CreatorUserId")
private String creatorUserId;
/**
* 创建时间
*/
@TableField("F_CreatorTime")
private Date creatorTime;
/**
* 删除标记(0正常/1删除)
*/
@TableField("F_DeleteMark")
private Integer deleteMark;
/**
* 删除人ID
*/
@TableField("F_DeleteUserId")
private String deleteUserId;
/**
* 删除时间
*/
@TableField("F_DeleteTime")
private Date deleteTime;
/**
* 租户ID
*/
@TableField("F_TenantId")
private String tenantId;
}

View File

@@ -0,0 +1,82 @@
package jnpf.entity.attendance;
import jnpf.enums.attendance.AttendanceTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date;
/**
* 申请参数类,用于封装申请相关的信息
*/
@Builder
@NoArgsConstructor
@Data
@AllArgsConstructor
public class ApplyParam {
// 考勤组ID
private String groupId;
// 用户ID
private String userId;
// 申请ID
private String applyId;
// 申请开始时间
private Date start;
// 申请结束时间
private Date end;
// 有效时长,以小时为单位
private BigDecimal validDuration;
// 出勤类型,如请假、加班等
private AttendanceTypeEnum attendanceType;
//开始时间类型 1 上半天 2 下半天
private Integer startTimeType;
//结束时间类型 1 上半天 2 下半天
private Integer endTimeType;
//请假类型单位 1 小时 2 天 3 半天
private Integer leaveUnit;
// 有效时长,以小时为单位
private BigDecimal validDay;
public ApplyParam(String userId, Date start, Date end, AttendanceTypeEnum attendanceType){
this.userId = userId;
this.start = start;
this.end = end;
this.attendanceType = attendanceType;
}
public ApplyParam(String userId, String applyId, Date start, Date end, BigDecimal validDuration, AttendanceTypeEnum attendanceType){
this.userId = userId;
this.applyId = applyId;
this.start = start;
this.end = end;
this.validDuration = validDuration;
this.attendanceType = attendanceType;
}
public ApplyParam(String userId, Date start, Date end, AttendanceTypeEnum attendanceType, Integer startTimeType, Integer endTimeType, Integer leaveUnit) {
this.userId = userId;
this.start = start;
this.end = end;
this.attendanceType = attendanceType;
this.startTimeType = startTimeType;
this.endTimeType = endTimeType;
this.leaveUnit = leaveUnit;
}
public ApplyParam(String userId, String applyId, Date startTime, Date endTime, BigDecimal validDuration, AttendanceTypeEnum attendanceTypeEnum, Integer startTimeType, Integer endTimeType, Integer leaveUnit, BigDecimal validDay) {
this.userId = userId;
this.applyId = applyId;
this.start = startTime;
this.end = endTime;
this.validDuration = validDuration;
this.attendanceType = attendanceTypeEnum;
this.startTimeType = startTimeType;
this.endTimeType = endTimeType;
this.leaveUnit = leaveUnit;
this.validDay = validDay;
}
}

View File

@@ -0,0 +1,18 @@
package jnpf.entity.attendance;
import lombok.Data;
/**
* @Author huanglinpan
* @Date 2024/11/19 14:21
* @Version 1.0 (版本号)
*/
@Data
public class AppointPermission {
/** 考勤组Id */
private String groupId;
/** 考勤组权限code */
private String permissionCode = "adjustResult";
}

View File

@@ -0,0 +1,78 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* 考勤App设置表
* @author yanwenfu
* @create 2024-08-08
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName ( value ="ftb_attendance_app_setting" )
public class AttendanceAppSetting extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 5470565812422104769L;
/** 设置名称 */
@TableField(value = "F_SettingName")
private String settingName;
/** 编码 */
@TableField(value = "F_Code")
private String code;
/** 父级Id */
@TableField(value = "F_PId")
private String pId;
/** 路径 */
@TableField(value = "F_Path")
private String path;
/** 排序 */
@TableField(value = "F_Sort")
private Long sort;
/** 创建用户id */
@TableField(value = "F_CreatorUserId")
private String creatorUserId;
/** 创建时间 */
@TableField(value = "F_CreatorTime")
private Date creatorTime;
/** 租户id */
@TableField(value = "F_TenantId")
private String tenantId;
/** 删除标志 1.是 */
@TableField(value = "F_DeleteMark")
private Integer deleteMark;
/** 删除用户id */
@TableField(value = "F_DeleteUserId")
private String deleteUserId;
/** 最后修改时间 */
@TableField(value = "F_LastModifyTime")
private Date lastModifyTime;
/** 最后修改用户id */
@TableField(value = "F_LastModifyUserId")
private String lastModifyUserId;
}

View File

@@ -0,0 +1,44 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
/**
* 用户及考勤组设置详情
* @author yanwenfu
* @create 2024-08-08
*/
@Getter
@Setter
@NoArgsConstructor
@TableName(value = "ftb_attendance_app_user_setting")
public class AttendanceAppUserSetting implements Serializable {
private static final long serialVersionUID = 341450761466292067L;
/** 设置主表Id */
@TableField(value = "F_SettingId")
private String settingId;
/** 类型 1个人设置2考勤组设置 */
@TableField(value = "F_Type")
private Integer type;
/** 关联Id与类型一起使用个人时表示用户Id考勤组时表示考勤组Id */
@TableField(value = "F_AssociationId")
private String associationId;
/** 状态 1启用 0关闭 */
@TableField(value = "F_Status")
private Integer status;
/** 值: 涉及定时时间时使用 */
@TableField(value = "F_Value")
private Integer value;
}

View File

@@ -0,0 +1,16 @@
package jnpf.entity.attendance;
import jnpf.model.attendance.vo.AttendanceUserVo;
import lombok.Data;
import java.util.List;
@Data
public class AttendanceApprovalAdminVo {
/** 是否需要审批*/
private Boolean isApproval;
/** 管理员*/
private List<AttendanceUserVo> userList;
}

View File

@@ -0,0 +1,116 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author panpan
*/
@Getter
@Setter
@ToString
@TableName("ftb_attendance_balance_record")
public class AttendanceBalanceRecordEntity extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 节假日名称(2.0字段失效动态查)
*/
@TableField("F_Name")
private String name;
/**
* 类型 : 1.节日 2.假日 3.加班(存休)
*/
@TableField("F_Type")
private Integer type ;
/**
* 关联id和Type联合使用
*/
@TableField("F_Object_Id")
private String objectId;
/**
* 用户id
*/
@TableField("F_User_Id")
private String userId;
/**
* 余额
*/
@TableField("F_Balance")
private BigDecimal balance;
/**
* 加班类型: 1=工作日, 2=公休日, 3=节假日
*/
@TableField("F_OverTime")
private Integer overTime;
/**
* 加班日期
*/
@TableField("F_OverTimeDay")
private Date overTimeDay;
/**
* 总额
*/
@TableField("F_Total")
private BigDecimal total;
/**
* 单位 : 1 :小时 2: 天 (暂定只有天的劵)
*/
@TableField("F_Unit")
private Integer unit;
/**
* 过期时间
*/
@TableField("F_Expire_Time")
private Date expireTime;
/**
* 发放方式 0.自动发放 1.手动发放 2.审批发放(2.0字段失效)
*/
@TableField("F_Grant_Way")
private Integer grantWay;
/**
* 状态 0 正常 1 过期 2已停用
*/
@TableField("F_State")
private Integer state;
/**
* 是否使用完 0未使用完 1使用完
*/
@TableField("F_Over")
private Integer isOver;
/**
* 发券类型1兑换券 2抵扣券
*/
@TableField("F_Paid")
private Integer paid;
/**
* 节日名称 多个使用@分割
*/
@TableField("F_FestivalStr")
private String festivalStr;
}

View File

@@ -0,0 +1,73 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.*;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author panpan
*/
@Getter
@Setter
@ToString
@TableName("ftb_attendance_balance_use_record")
@AllArgsConstructor
@Builder
public class AttendanceBalanceUseRecord extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 考勤余额记录id
*/
@TableField("F_Balance_Id")
private String balanceId;
/**
* 使用额度
*/
@TableField("F_Quota")
private BigDecimal quota;
/**
* 单位 : 1 :小时 2: 天
*/
@TableField("F_Unit")
private Integer unit;
/**
* 使用方式 0: 审批 ,1:排班
*/
@TableField("F_Use_Type")
private Integer useType;
/**
* 关联id和useType联合使用
*/
@TableField("F_Object_Id")
private String objectId;
/**
* 使用开始时间
*/
@TableField("F_Start_Time")
private Date startTime;
/**
* 使用结束时间
*/
@TableField("F_End_Time")
private Date endTime;
/**
* 锁定: 1锁定 2已消费
*/
@TableField("F_Lock")
private Integer lock;
}

View File

@@ -0,0 +1,153 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.*;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 考勤基础设置表
* @author yanwenfu
* @create 2023-11-23
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName ( value ="ftb_attendance_base_setting" )
@Builder
@AllArgsConstructor
public class AttendanceBaseSetting extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 2176483918810305559L;
/**
* 出勤换算比(n小时换算为一天)
*/
@TableField(value = "F_AttendanceRatio")
private BigDecimal attendanceRatio;
/**
* 加班是否发放余额(1不发 2天发 3小时发)
*/
@TableField(value = "F_OvertimeGrantType")
private Integer overtimeGrantType;
/**
* 加班换算比(n小时换算为一天)
*/
@TableField(value = "F_OvertimeRatio")
private BigDecimal overtimeRatio;
/**
* 内勤是否需要拍照 1:是, 0: 否)
*/
@TableField(value = "F_AttendancePhoto")
private Integer attendancePhoto;
/**
* 是否需要人脸识别 1 0
*/
@TableField(value = "F_Face")
private Integer face;
/**
* 是否允许晚走晚到(0-否 1-是)
*/
@TableField(value = "F_LateEarly")
private Integer lateEarly;
/**
* 晚走分钟数
*/
@TableField(value = "F_LateMinis")
private Integer lateMinis;
/**
* 晚到分钟数
*/
@TableField(value = "F_EarlyMinis")
private Integer earlyMinis;
/**
* 是否允许外勤打卡(1是 0否)
*/
@TableField(value = "F_FieldClockStatus")
private Integer fieldClockStatus;
/**
* 外勤是否需要审批(1: 是, 0: 否)
*/
@TableField(value = "F_ApproveEnable")
private Integer approveEnable;
/**
* 外勤是否需要拍照 1:是(默认), 0: 否)
*/
@TableField(value = "F_ShouldTakePhoto")
private Integer shouldTakePhoto;
/**
* 是否允许补卡(1是 0否)
*/
@TableField(value = "F_PatchClockStatus")
private Integer patchClockStatus;
/**
* 每月可以提交补卡次数
*/
@TableField(value = "F_PatchClockNumber")
private Integer patchClockNumber;
/**
* 补卡次数刷新日
*/
@TableField(value = "F_PatchRefreshDay")
private Integer patchRefreshDay;
/**
* 考勤组id
*/
@TableField(value = "F_GroupId")
private String groupId;
/**
* 是否启用0不启用 1启用
*/
@TableField(value = "F_Enable")
private Integer enable;
/**
* 补卡周期天数
*/
@TableField(value = "F_PatchCycleDay")
private Integer patchCycleDay;
/**
* 补卡类型(1: 迟到, 2: 早退, 3: 缺卡, 4: 旷工) 例1,2,3
*/
@TableField(value = "F_PatchType")
private String patchType;
/**
* 未排班是否可选择班次(0不可选 1可选)
*/
@TableField(value = "F_SelectRuleEnable")
private Integer selectRuleEnable;
/**
* 调整出勤是否需要审批(0不需要审批 1需要审批 2无法打卡)
*/
@TableField(value = "F_ModifyClockApplyEnable")
private Integer modifyClockApplyEnable;
/**
* 外勤人员选择类型1.全部 2.指定人员ftb_attendance_field_personnel表
*/
@TableField(value = "F_FilePersonnelType")
private Integer filePersonnelType;
}

View File

@@ -0,0 +1,123 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* 考勤本配置表
*
* 设计说明:
* 1. 考勤本配置独立管理,包含名称、使用范围、负责人等信息
* 2. 考勤记录表通过F_BookId关联到本配置表
* 3. 负责人和可排假期都支持多选,用逗号拼接存储
*
* @author Generated
* @create 2026-04-15
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("ftb_attendance_book_config")
public class AttendanceBookConfigEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId("F_Id")
private String id;
/**
* 考勤本名称
*/
@TableField("F_BookName")
private String bookName;
/**
* 使用范围类型0:全部 1:指定组织/成员)
*/
@TableField("F_ScopeType")
private Integer scopeType;
/**
* 考勤本负责人ID列表多个用逗号拼接
*/
@TableField("F_ManagerIds")
private String managerIds;
/**
* 可排假期范围类型1:全部假期 2:指定假期)
*/
@TableField("F_HolidayScopeType")
private Integer holidayScopeType;
/**
* 可排假期ID列表多个用逗号拼接
*/
@TableField("F_HolidayIds")
private String holidayIds;
/**
* 启用状态1:启用 0:禁用)
*/
@TableField("F_EnabledMark")
private Integer enabledMark;
/**
* 创建人ID
*/
@TableField("F_CreatorUserId")
private String creatorUserId;
/**
* 创建时间
*/
@TableField("F_CreatorTime")
private Date creatorTime;
/**
* 最后修改人ID
*/
@TableField("F_LastModifyUserId")
private String lastModifyUserId;
/**
* 最后修改时间
*/
@TableField("F_LastModifyTime")
private Date lastModifyTime;
/**
* 删除标识0:未删除 1:已删除)
*/
@TableField("F_DeleteMark")
private Integer deleteMark;
/**
* 删除时间
*/
@TableField("F_DeleteTime")
private Date deleteTime;
/**
* 删除人ID
*/
@TableField("F_DeleteUserId")
private String deleteUserId;
/**
* 租户ID
*/
@TableField("F_TenantId")
private String tenantId;
}

View File

@@ -0,0 +1,86 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* 考勤本操作日志表
*
* @author Generated
* @create 2026-04-15
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("ftb_attendance_book_operation_log")
public class AttendanceBookOperationLogEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId("F_Id")
private String id;
/**
* 考勤本ID
*/
@TableField("F_BookId")
private String bookId;
/**
* 月份格式yyyy-MM
*/
@TableField("F_Month")
private String month;
/**
* 考勤记录ID(关联ftb_attendance_book_record表)
*/
@TableField("F_RecordId")
private String recordId;
/**
* 员工ID
*/
@TableField("F_EmployeeId")
private String employeeId;
/**
* 操作内容描述
*/
@TableField("F_OperationContent")
private String operationContent;
/**
* 操作人ID
*/
@TableField("F_OperatorId")
private String operatorId;
/**
* 操作人姓名
*/
@TableField("F_OperatorName")
private String operatorName;
/**
* 操作时间
*/
@TableField("F_OperationTime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date operationTime;
}

View File

@@ -0,0 +1,132 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* 考勤本记录表(轻量级手动标记)
*
* 设计原则:
* 1. 考勤本信息通过F_BookId关联去除删除标记逻辑删除由业务控制
* 2. 一天两条记录(上班卡、下班卡),独立标记状态
* 3. 纯状态标记,不记录具体打卡时间
* 4. 无审批关联,无未标记状态
* 5. 新增F_Month月份字段便于按月查询和统计
* 6. 新增F_LeaveType请假类型字段记录请假具体类型
* 7. 新增F_Remark备注字段记录额外说明信息
*
* @author Generated
* @create 2026-04-15
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("ftb_attendance_book_record")
public class AttendanceBookRecordEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId("F_Id")
private String id;
/**
* 考勤本ID
*/
@TableField("F_BookId")
private String bookId;
/**
* 考勤月份格式yyyy-MM
*/
@TableField("F_Month")
private String month;
/**
* 员工ID
*/
@TableField("F_UserId")
private String userId;
/**
* 考勤日期
*/
@TableField("F_Day")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date day;
/**
* 时段类型1:上班卡 2:下班卡)
*/
@TableField("F_PeriodType")
private Integer periodType;
/**
* 考勤状态1:正常 2:迟到 3:早退 4:缺卡 5:请假 6:出差 7:外出 8:加班)
* <p>insert/update 均使用 {@link FieldStrategy#IGNORED}:允许显式写入 NULL清空状态
* 避免被全局默认的 NOT_NULL 策略过滤掉。</p>
*/
@TableField(value = "F_AttendanceStatus", updateStrategy = FieldStrategy.IGNORED)
private Integer attendanceStatus;
/**
* 请假类型(如:事假、病假、年假、婚假、产假等)
* <p>insert/update 均使用 {@link FieldStrategy#IGNORED}:允许显式写入 NULL清空请假类型
* 避免被全局默认的 NOT_NULL 策略过滤掉。</p>
*/
@TableField(value = "F_LeaveType", updateStrategy = FieldStrategy.IGNORED)
private String leaveType;
/**
* 备注
*/
@TableField("F_Remark")
private String remark;
/**
* 创建用户
*/
@TableField("F_CreatorUserId")
private String creatorUserId;
/**
* 创建时间
*/
@TableField("F_CreatorTime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date creatorTime;
/**
* 修改用户
*/
@TableField("F_LastModifyUserId")
private String lastModifyUserId;
/**
* 修改时间
*/
@TableField("F_LastModifyTime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date lastModifyTime;
/**
* 租户ID
*/
@TableField("F_TenantId")
private String tenantId;
}

View File

@@ -0,0 +1,41 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.*;
import java.io.Serializable;
/**
* 考勤组-打卡记录-外勤照片表
* @author yanwenfu
* @create 2023-11-22
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName ( value ="ftb_attendance_clockin_pic" )
public class AttendanceClockInPic extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 8654200286159016717L;
/**
* 打卡id
*/
@TableField(value = "F_ClockInId")
private String clockInId;
/**
* 图片地址
*/
@TableField(value = "F_PicUrl")
private String picUrl;
/**
* 审批ID
*/
@TableField(value = "F_ApprovalCode")
private String approvalCode;
}

View File

@@ -0,0 +1,82 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.*;
import java.io.Serializable;
import java.util.Date;
/**
* 打卡结果实体类
*
* @author yanwenfu
* @create 2023-09-18
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName(value ="ftb_attendance_clock_in_result")
@ToString
public class AttendanceClockInResult extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
/** 出勤规则id */
@TableField(value = "F_RuleId")
private String ruleId;
/** 用户id */
@TableField(value = "F_UserId")
private String userId;
/** 打卡id */
@TableField(value = "F_ClockInId")
private String clockInId;
/** 有效时间(工时计算时间) */
@TableField(value = "F_EffectiveTime")
private Date effectiveTime;
/** 打卡类型(1: 上班, 2: 下班) */
@TableField(value = "F_ClockInType")
private Integer clockInType;
/** 打卡状态(-2: 无需打卡, -1: 缺卡, 1: 正常, 2: 迟到, 3: 早退) */
@TableField(value = "F_ClockInStatus")
private Integer clockInStatus;
/** 打卡种类(1: 普通打卡, 2: 外勤打卡) */
@TableField(value = "F_ClockInKind")
private Integer clockInKind;
/** 是否补卡(1: 是, 0: 否) */
@TableField(value = "F_Repaired")
private Integer repaired;
/** 审批类型(1: 补卡, 2: 出勤变更, 3: 外勤) */
@TableField(value = "F_ApplyType")
private Integer applyType;
/** 审批id */
@TableField(value = "F_ApplyId")
private String applyId;
/** 是否缺勤(1: 是, 0: 否) */
@TableField(value = "F_Absence")
private Integer absence;
/** 打卡记录变更人 */
@TableField(value = "F_AbsenceLeader")
private String absenceLeader;
/** 上次打卡记录变更人 */
@TableField(value = "F_LastAbsenceLeader")
private String lastAbsenceLeader;
/** 休息时间(分钟) */
@TableField(value = "F_RestMinute")
private Integer restMinute;
/** 异常时长(秒) */
@TableField(value = "F_AbnormalMinute")
private Integer abnormalMinute;
/** 审批状态(0: 通过, 1: 审批中, 2: 拒绝) */
@TableField(exist = false)
private Integer approvalStatus;
@TableField(exist = false)
private String groupId;
@TableField(exist = false)
/** 旧结果id 用于重新匹配打卡记录时重新关联审批记录 */
private String oldResultId;
@TableField(exist = false)
private Date day;
@TableField(exist = false)
private Integer attendanceType;
}

View File

@@ -0,0 +1,42 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
/**
* @Description: 考勤云相册表
* @Author: shiTou(他是小石头)
* @Date: 2024-10-30 10:26
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName(value = "ftb_attendance_cloud_album")
public class AttendanceCloudAlbum extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 8654200286159016717L;
/**
* 用户ID
*/
@TableField(value = "F_UserId")
private String userId;
/**
* 相册类型(1-外勤打卡图片)
*/
@TableField(value = "T_Type")
private Integer type;
/**
* 图片地址
*/
@TableField(value = "F_PicUrl")
private String picUrl;
}

View File

@@ -0,0 +1,46 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 考勤通用配置表
* @author yanwenfu
* @create 2025-09-17
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName ( value ="ftb_attendance_common_setting" )
public class AttendanceCommonSetting extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 3820781190273568554L;
/** 配置组 */
@TableField(value = "F_SettingGroup")
private String settingGroup;
/** 配置key */
@TableField(value = "F_SettingKey")
private String settingKey;
/** 配置值 */
@TableField(value = "F_SettingValue")
private String settingValue;
public AttendanceCommonSetting(String id, String settingGroup, String settingKey, String settingValue, String userId) {
super.setId(id);
this.settingGroup = settingGroup;
this.settingKey = settingKey;
this.settingValue = settingValue;
super.setCreatorUserId(userId);
}
}

View File

@@ -0,0 +1,90 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* 考勤确认
*
* @author shitou
* @email shitou@niujiekeji.com
* @date 2024-11-07 09:33:43
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("ftb_attendance_confirm")
public class AttendanceConfirm implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId("F_Id")
private String id;
/**
* 确认年份
*/
@TableField("F_Year")
private Integer year;
/**
* 确认月份(1~12)
*/
@TableField("F_Month")
private Integer month;
/**
* 用户ID
*/
@TableField("F_UserId")
private String userId;
/**
* 确认状态(0-未查看 1-已查看未确认 2-已确认)
*/
@TableField("F_Status")
private Integer status;
/**
* 逾期结果(0-未逾期 1-自动确认 2-不可确认)
*/
@TableField("F_SlippageResult")
private Integer slippageResult;
/**
* 温馨提示是否关闭(0-否 1-是)
*/
@TableField("F_TipsStatus")
private Integer tipsStatus;
/**
* 开始确认时间
*/
@TableField("F_StartTime")
private Date startTime;
/**
* 结束确认时间
*/
@TableField("F_EndTime")
private Date endTime;
/**
* 确认详情数据
*/
@TableField("F_DetailData")
private String detailDataJson;
/**
* 创建时间
*/
@TableField("F_CreateTime")
private Date createTime;
/**
* 更新时间
*/
@TableField("F_UpdateTime")
private Date updateTime;
}

View File

@@ -0,0 +1,280 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 考勤确认详情
*
* @author shitou
* @email shitou@niujiekeji.com
* @date 2024-11-07 09:33:43
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("ftb_attendance_confirm_details")
public class AttendanceConfirmDetails implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId("F_Id")
private String id;
/**
* 用户id
*/
@TableField(exist = false)
private String userId;
/**
* 确认单ID
*/
@TableField("F_ConfirmId")
private String confirmId;
/**
* 存休天数
*/
@TableField("F_SaveRest")
private BigDecimal saveRest;
/**
* 使用假时长(小时)
*/
@TableField("F_LeaveDurationHours")
private BigDecimal leaveDurationHours;
/**
* 使用假时长(天)
*/
@TableField("F_LeaveDurationDays")
private BigDecimal leaveDurationDays;
/**
* 应出勤天数(天)
*/
@TableField("F_ShouldAttendDays")
private BigDecimal shouldAttendDays;
/**
* 应出勤工时(小时)
*/
@TableField("F_ShouldAttendHours")
private BigDecimal shouldAttendHours;
/**
* 实际出勤天数(天)
*/
@TableField("F_ActualAttendDays")
private BigDecimal actualAttendDays;
/**
* 实际出勤工时(小时)
*/
@TableField("F_ActualAttendHours")
private BigDecimal actualAttendHours;
/**
* 有效出勤工时(小时)
*/
@TableField("F_EffectiveAttendDays")
private BigDecimal effectiveAttendDays;
/**
* 有效出勤工时(小时)
*/
@TableField("F_EffectiveAttendHours")
private BigDecimal effectiveAttendHours;
/**
* 迟到次数(次数)
*/
@TableField("F_LateTimes")
private Integer lateTimes;
/**
* 迟到分钟数(分钟)
*/
@TableField("F_LateMinutes")
private BigDecimal lateMinutes;
/**
* 早退次数(次数)
*/
@TableField("F_EarlyLeaveTimes")
private Integer earlyLeaveTimes;
/**
* 早退分钟数(分钟)
*/
@TableField("F_EarlyLeaveMinutes")
private BigDecimal earlyLeaveMinutes;
/**
* 缺卡次数(次数)
*/
@TableField("F_AbsenceCardTimes")
private Integer absenceCardTimes;
/**
* 缺卡小时数(小时)
*/
@TableField("F_AbsenceCardHours")
private BigDecimal absenceCardHours;
/**
* 缺勤次数(次数)
*/
@TableField("F_AbsenceTimes")
private Integer absenceTimes;
/**
* 缺勤小时数(小时)
*/
@TableField("F_AbsenceHours")
private BigDecimal absenceHours;
/**
* 加班时长(小时)
*/
@TableField("F_OvertimeHours")
private BigDecimal overtimeHours;
/**
* 出差时长(天)
*/
@TableField("F_BusDays")
private BigDecimal busDays;
/**
* 外出时长(小时)
*/
@TableField("F_OutHours")
private BigDecimal outHours;
/**
* 外出时长(天)
*/
@TableField("F_OutDays")
private BigDecimal outDays;
/**
* 请假时长(小时)
*/
@TableField("F_LeaveHours")
private BigDecimal leaveHours;
/**
* 请假时长(天)
*/
@TableField("F_LeaveDays")
private BigDecimal leaveDays;
/**
* 未抵扣请假时长(小时)
*/
@TableField("F_UnDeductedLeaveHours")
private BigDecimal unDeductedLeaveHours;
/**
* 未抵扣请假时长(天)
*/
@TableField("F_UnDeductedLeaveDays")
private BigDecimal unDeductedLeaveDays;
/**
* 事假时长(小时)
*/
@TableField("F_ThingLeaveHours")
private BigDecimal thingLeaveHours;
/**
* 事假时长(天)
*/
@TableField("F_ThingLeaveDays")
private BigDecimal thingLeaveDays;
/**
* 病假时长(小时)
*/
@TableField("F_IllnessLeaveHours")
private BigDecimal illnessLeaveHours;
/**
* 病假时长(天)
*/
@TableField("F_IllnessLeaveDays")
private BigDecimal illnessLeaveDays;
/**
* 工伤假时长(小时)
*/
@TableField("F_InjuryLeaveHours")
private BigDecimal injuryLeaveHours;
/**
* 工伤假时长(天)
*/
@TableField("F_InjuryLeaveDays")
private BigDecimal injuryLeaveDays;
/**
* 年假时长(小时)
*/
@TableField("F_AnnualLeaveHours")
private BigDecimal annualLeaveHours;
/**
* 年假时长(天)
*/
@TableField("F_AnnualLeaveDays")
private BigDecimal annualLeaveDays;
/**
* 婚假时长(小时)
*/
@TableField("F_MarriageLeaveHours")
private BigDecimal marriageLeaveHours;
/**
* 婚假时长(天)
*/
@TableField("F_MarriageLeaveDays")
private BigDecimal marriageLeaveDays;
/**
* 产假时长(小时)
*/
@TableField("F_MaternityLeaveHours")
private BigDecimal maternityLeaveHours;
/**
* 产假时长(天)
*/
@TableField("F_MaternityLeaveDays")
private BigDecimal maternityLeaveDays;
/**
* 陪产假时长(小时)
*/
@TableField("F_PaternityLeaveHours")
private BigDecimal paternityLeaveHours;
/**
* 陪产假时长(天)
*/
@TableField("F_PaternityLeaveDays")
private BigDecimal paternityLeaveDays;
/**
* 丧假时长(小时)
*/
@TableField("F_FuneralLeaveHours")
private BigDecimal funeralLeaveHours;
/**
* 丧假时长(天)
*/
@TableField("F_FuneralLeaveDays")
private BigDecimal funeralLeaveDays;
/**
* 探亲假时长(小时)
*/
@TableField("F_HomeLeaveHours")
private BigDecimal homeLeaveHours;
/**
* 探亲假时长(天)
*/
@TableField("F_HomeLeaveDays")
private BigDecimal homeLeaveDays;
/**
* 小儿照护假时长(小时)
*/
@TableField("F_ChildcareLeaveHours")
private BigDecimal childcareLeaveHours;
/**
* 小儿照护假时长(天)
*/
@TableField("F_ChildcareLeaveDays")
private BigDecimal childcareLeaveDays;
/**
* 其他假时长(小时)
*/
@TableField("F_OtherLeaveHours")
private BigDecimal otherLeaveHours;
/**
* 其他假时长(天)
*/
@TableField("F_OtherLeaveDays")
private BigDecimal otherLeaveDays;
}

View File

@@ -0,0 +1,81 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* 考勤确认设置
*
* @author shitou
* @email shitou@niujiekeji.com
* @date 2024-11-07 09:33:43
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("ftb_attendance_confirm_setting")
public class AttendanceConfirmSetting implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId("F_Id")
private String id;
/**
* 确认月份(1-当前月份 2-上个月)
*/
@TableField("F_ConfirmMonth")
private Integer confirmMonth;
/**
* 每月几号允许确认
*/
@TableField("F_AllowConfirm")
private Integer allowConfirm;
/**
* 开始确认后几天内可确认
*/
@TableField("F_ConfirmDuration")
private Integer confirmDuration;
/**
* 逾期结果(1-自动确认 2-不可确认)
*/
@TableField("F_SlippageResult")
private Integer slippageResult;
/**
* 是否下次应用数据(0-否 1-是)
*/
@TableField("F_NextData")
private Integer nextData;
/**
* 创建时间
*/
@TableField("F_CreatorTime")
private Date creatorTime;
/**
* 创建用户
*/
@TableField("F_CreatorUserId")
private String creatorUserId;
/**
* 修改时间
*/
@TableField("F_LastModifyTime")
private Date lastModifyTime;
/**
* 修改用户
*/
@TableField("F_LastModifyUserId")
private String lastModifyUserId;
}

View File

@@ -0,0 +1,387 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 考勤日度统计表
*
* @author shitou
* @email shitou@niujiekeji.com
* @date 2024-06-24 09:33:43
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("ftb_attendance_day_statistics")
public class AttendanceDayStatistics implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId("F_Id")
private String id;
/**
* 用户ID
*/
@TableField("F_UserId")
private String userId;
/**
* 考勤组id
*/
@TableField("F_GroupId")
private String groupId;
/**
* 日期
*/
@TableField("F_Date")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date date;
/**
* 出勤换算比(n小时换算为一天)
*/
@TableField("F_AttendanceRatio")
private BigDecimal attendanceRatio;
/**
* 应出勤天数
*/
@TableField("F_ShouldAttendDays")
private BigDecimal shouldAttendDays;
/**
* 应出勤小时数
*/
@TableField("F_ShouldAttendHours")
private BigDecimal shouldAttendHours;
/**
* 应计薪小时数
*/
@TableField("F_ShouldAttendPayrollHours")
private BigDecimal shouldAttendPayrollHours;
/**
* 有效出勤天数
*/
@TableField("F_EffectiveAttendDays")
private BigDecimal effectiveAttendDays;
/**
* 有效出勤小时数
*/
@TableField("F_EffectiveAttendHours")
private BigDecimal effectiveAttendHours;
/**
* 有效出勤计薪小时数
*/
@TableField("F_EffectiveAttendPayrollHours")
private BigDecimal effectiveAttendPayrollHours;
/**
* 实际出勤天数
*/
@TableField("F_ActualAttendDays")
private BigDecimal actualAttendDays;
/**
* 实际出勤小时数
*/
@TableField("F_ActualAttendHours")
private BigDecimal actualAttendHours;
/**
* 实际出勤计薪小时数
*/
@TableField("F_ActualAttendPayrollHours")
private BigDecimal actualAttendPayrollHours;
/**
* 迟到次数
*/
@TableField("F_LateTimes")
private Integer lateTimes;
/**
* 迟到分钟数
*/
@TableField("F_LateMinutes")
private BigDecimal lateMinutes;
/**
* 早退次数
*/
@TableField("F_EarlyLeaveTimes")
private Integer earlyLeaveTimes;
/**
* 早退分钟数
*/
@TableField("F_EarlyLeaveMinutes")
private BigDecimal earlyLeaveMinutes;
/**
* 缺卡次数
*/
@TableField("F_AbsenceCardTimes")
private Integer absenceCardTimes;
/**
* 缺卡天数
*/
@TableField("F_AbsenceCardDays")
private BigDecimal absenceCardDays;
/**
* 缺卡小时数
*/
@TableField("F_AbsenceCardHours")
private BigDecimal absenceCardHours;
/**
* 缺卡计薪小时数
*/
@TableField("F_AbsenceCardPayrollHours")
private BigDecimal absenceCardPayrollHours;
/**
* 旷工次数
*/
@TableField("F_AbsenceTimes")
private Integer absenceTimes;
/**
* 旷工天数
*/
@TableField("F_AbsenceDays")
private BigDecimal absenceDays;
/**
* 旷工小时数
*/
@TableField("F_AbsenceHours")
private BigDecimal absenceHours;
/**
* 旷工计薪小时数
*/
@TableField("F_AbsencePayrollHours")
private BigDecimal absencePayrollHours;
/**
* 补卡次数
*/
@TableField("F_MakeUpCardTimes")
private Integer makeUpCardTimes;
/**
* 外勤次数
*/
@TableField("F_OutworkTimes")
private Integer outworkTimes;
/**
* 外勤天数
*/
@TableField("F_OutworkDays")
private BigDecimal outworkDays;
/**
* 外勤小时数
*/
@TableField("F_OutworkHours")
private BigDecimal outworkHours;
/**
* 外勤计薪小时数
*/
@TableField("F_OutworkPayrollHours")
private BigDecimal outworkPayrollHours;
/**
* 加班次数
*/
@TableField("F_OvertimeTimes")
private Integer overtimeTimes;
/**
* 加班小时数
*/
@TableField("F_OvertimeHours")
private BigDecimal overtimeHours;
/**
* 加班天数
*/
@TableField("F_OvertimeDays")
private BigDecimal overtimeDays;
/**
* 工作日加班次数
*/
@TableField("F_WeekdayOvertimeTimes")
private Integer weekdayOvertimeTimes;
/**
* 工作日加班天数
*/
@TableField("F_WeekdayOvertimeDays")
private BigDecimal weekdayOvertimeDays;
/**
* 工作日加班小时数
*/
@TableField("F_WeekdayOvertimeHours")
private BigDecimal weekdayOvertimeHours;
/**
* 节假日加班次数
*/
@TableField("F_HolidaysOvertimeTimes")
private Integer holidaysOvertimeTimes;
/**
* 节假日加班天数
*/
@TableField("F_HolidaysOvertimeDays")
private BigDecimal holidaysOvertimeDays;
/**
* 节假日加班小时数
*/
@TableField("F_HolidaysOvertimeHours")
private BigDecimal holidaysOvertimeHours;
/**
* 公休日加班次数
*/
@TableField("F_PublicHolidaysOvertimeTimes")
private Integer publicHolidaysOvertimeTimes;
/**
* 公休日加班天数
*/
@TableField("F_PublicHolidaysOvertimeDays")
private BigDecimal publicHolidaysOvertimeDays;
/**
* 公休日加班小时数
*/
@TableField("F_PublicHolidaysOvertimeHours")
private BigDecimal publicHolidaysOvertimeHours;
/**
* 公休天数
*/
@TableField("F_PublicHolidaysDays")
private BigDecimal publicHolidaysDays;
/**
* 公休小时数
*/
@TableField("F_PublicHolidaysHours")
private BigDecimal publicHolidaysHours;
/**
* 公休计薪小时数
*/
@TableField("F_PublicHolidaysPayrollHours")
private BigDecimal publicHolidaysPayrollHours;
/**
* 调休次数
*/
@TableField("F_CompensationTimes")
private Integer compensationTimes;
/**
* 调休天数
*/
@TableField("F_CompensationDays")
private BigDecimal compensationDays;
/**
* 调休小时数
*/
@TableField("F_CompensationHours")
private BigDecimal compensationHours;
/**
* 调休计薪小时数
*/
@TableField("F_CompensationPayrollHours")
private BigDecimal compensationPayrollHours;
/**
* 出差批次号
*/
@TableField("F_BusBatchNumber")
private String busBatchNumber;
/**
* 出差小时数
*/
@TableField("F_BusHours")
private BigDecimal busHours;
/**
* 出差天数
*/
@TableField("F_BusDays")
private BigDecimal busDays;
/**
* 外出批次号
*/
@TableField("F_OutBatchNumber")
private String outBatchNumber;
/**
* 外出小时数
*/
@TableField("F_OutHours")
private BigDecimal outHours;
/**
* 外出天数
*/
@TableField("F_OutDays")
private BigDecimal outDays;
/**
* 请假批次号
*/
@TableField("F_LeaveBatchNumber")
private String leaveBatchNumber;
/**
* 请假天数
*/
@TableField("F_LeaveDays")
private BigDecimal leaveDays;
/**
* 请假小时数
*/
@TableField("F_LeaveHours")
private BigDecimal leaveHours;
/**
* 请假计薪小时数
*/
@TableField("F_LeavePayrollHours")
private BigDecimal leavePayrollHours;
/**
* 班次json
*/
@TableField("F_ShiftsJson")
private String shiftsJson;
/**
* 是否借调(0-否 1-是)
*/
@TableField("F_SelfGroup")
private Integer selfGroup;
/**
* 是否排班(0-否 1-是)
*/
@TableField("F_IsScheduling")
private Integer isScheduling;
/**
* 是否需要打卡(0-否 1-是)
*/
@TableField("F_IsClocked")
private Integer isClocked;
/**
* 是否封账(0-未封账 1-已封账)
*/
@TableField("F_Seal")
private Integer seal;
/**
* 人员加入考勤组时间
*/
@TableField("F_JoinTime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date joinTime;
/**
* 创建时间
*/
@TableField("F_CreatorTime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date creatorTime;
/**
* 修改时间
*/
@TableField("F_LastModifyTime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date lastModifyTime;
/**
* 提醒时间
*/
@TableField("F_RemindTime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date remindTime;
/**
* 自定义假期Json
*/
@TableField("F_CustomLeaveJson")
private String customLeaveJson;
}

View File

@@ -0,0 +1,63 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.*;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 加班余额记录[不存休,仅记录]
* @author yanwenfu
* @create 2025-10-03
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName ( value ="ftb_attendance_enable_balance" )
public class AttendanceEnableBalance extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 1115377435113592131L;
/** 考勤组 */
@TableField(value = "F_RuleId")
private String ruleId;
/** 加班类型: 1=工作日, 2=公休日, 3=节假日 */
@TableField(value = "F_OvertimeType")
private Integer overtimeType;
/** 用户 */
@TableField(value = "F_UserId")
private String userId;
/** 日期 */
@TableField(value = "F_Day")
private Date day;
/** 余额(小时) */
@TableField(value = "F_Balance")
private BigDecimal balance;
/**
* 节日名称 多个使用@分割
*/
@TableField("F_FestivalStr")
private String festivalStr;
@Builder
public AttendanceEnableBalance(String id, String ruleId, Integer overtimeType, String userId, Date day, BigDecimal balance, String festivalStr) {
super.setId(id);
this.ruleId = ruleId;
this.overtimeType = overtimeType;
this.userId = userId;
this.day = day;
this.balance = balance;
this.festivalStr = festivalStr;
}
}

View File

@@ -0,0 +1,93 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* @author panpan
* @description 考勤节日表
* @version V2.0
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("ftb_attendance_festival_rules")
public class AttendanceFestivalRules extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 8654200286159016797L;
/**
* 名称
*/
@TableField("F_Name")
private String name;
/**
* 开始日期
*/
@TableField("F_StartDate")
private Date startDate;
/**
* 结束日期
*/
@TableField("F_EndDate")
private Date endDate;
/**
* 节日日期
*/
@TableField("F_FestivalDate")
private String festivalDate;
/**
* 调休上班日期
*/
@TableField("F_CompensateInDate")
private String compensateInDate;
/**
* 每年同日自动更新开启时元旦更新1是 0
*/
@TableField("F_UpdateState")
private Integer updateState;
/**
* 适配范围0.全部1.指定组织/成员
*/
@TableField("F_ScopeOfAdaptation")
private Integer scopeOfAdaptation;
/**
* 是否自动排班 0.否 1.是
*/
@TableField("F_AutoScheduling")
private Integer autoScheduling;
/**
* 状态 0 未启用 1 启用
*/
@TableField("F_State")
private Integer state;
/**
* 年份
*/
@TableField("F_Year")
private String year;
}

View File

@@ -0,0 +1,189 @@
package jnpf.entity.attendance;
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-29
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("ftb_attendance_festival_setting")
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AttendanceFestivalSettingEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId("F_Id")
private String id;
/**
* 名称
*/
@TableField("F_Name")
private String name;
/**
* 开始日期
*/
@TableField("F_StartDate")
private Date startDate;
/**
* 结束日期
*/
@TableField("F_EndDate")
private Date endDate;
/**
* 节日日期
*/
@TableField("F_FestivalDate")
private String festivalDate;
/**
* 调休上班日期
*/
@TableField("F_CompensateInDate")
private String compensateInDate;
/**
* 时长
*/
@TableField("F_Day")
private Integer day;
/**
* 发放方式(0自动排班 1自动充值 2手动充值)
*/
@TableField("F_DistributeType")
private Integer distributeType;
/**
* 是否带薪1带薪 2非带薪
*/
@TableField("F_PaidSalaryEnable")
private Integer paidSalaryEnable;
/**
* 发放日期方式1每月 2每年指定日期
*/
@TableField("F_GiveType")
private Integer giveType;
/**
* 发放日期-月
*/
@TableField("F_GiveMonth")
private Integer giveMonth;
/**
* 发放日期-日
*/
@TableField("F_GiveDay")
private Integer giveDay;
/**
* 过期方式1过期天数 2每年指定日期 3永久
*/
@TableField("F_ExpiresType")
private Integer expiresType;
/**
* 过期设置-过期天数
*/
@TableField("F_ExpiresDayNumber")
private Integer expiresDayNumber;
/**
* 过期设置-月
*/
@TableField("F_ExpiresMonth")
private Integer expiresMonth;
/**
* 过期设置-日
*/
@TableField("F_ExpiresDay")
private Integer expiresDay;
/**
* 状态1启用 2停用
*/
@TableField("F_Enable")
private Integer enable;
/**
* 考勤组id
*/
@TableField("F_GroupId")
private String groupId;
/**
* 是否法定1法定 2非法定
*/
@TableField("F_StatutoryEnable")
private Integer statutoryEnable;
/**
* 创建时间
*/
@TableField("F_CreatorTime")
private Date creatorTime;
/**
* 创建用户
*/
@TableField("F_CreatorUserId")
private String creatorUserId;
/**
* 修改时间
*/
@TableField("F_LastModifyTime")
private Date lastModifyTime;
/**
* 修改用户
*/
@TableField("F_LastModifyUserId")
private String lastModifyUserId;
/**
* 删除时间
*/
@TableField("F_DeleteTime")
private Date deleteTime;
/**
* 删除用户
*/
@TableField("F_DeleteUserId")
private String deleteUserId;
/**
* 删除标志
*/
@TableField("F_DeleteMark")
private Integer deleteMark;
/**
* 租户id
*/
@TableField("F_TenantId")
private String tenantId;
}

View File

@@ -0,0 +1,40 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* 考勤组允许外勤人员名单
* @author yanwenfu
* @create 2025-02-17
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName ( value ="ftb_attendance_field_personnel" )
public class AttendanceFieldPersonnel extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 1190925471047105327L;
/** 主键Id */
@TableField(value = "F_Id")
private String id;
/** 考勤组id */
@TableField(value = "F_GroupId")
private String groupId;
/** 可以外勤的用户Id */
@TableField(value = "F_UserId")
private String userId;
}

View File

@@ -0,0 +1,77 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import lombok.*;
/**
* <p>
* 固定班关联表
* </p>
*
* @author ahua
* @since 2024-05-10
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@EqualsAndHashCode(callSuper = false)
@TableName("ftb_attendance_fixed_class")
public class AttendanceFixedClassEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId("F_Id")
private String id;
/**
* 考勤配置id
*/
@TableField("F_SettingId")
private String settingId;
/**
* 考勤配置id
*/
@TableField("F_GroupId")
private String groupId;
/**
* 周几1-7
*/
@TableField("F_Num")
private Integer num;
/**
* 班次表Id
*/
@TableField(value = "F_ShiftNameId",updateStrategy = FieldStrategy.IGNORED)
private String shiftNameId;
/**
* 类型1组合班 0单独班
*/
@TableField("F_ShiftType")
private Integer shiftType;
/**
* 排序(上下顺序)
*/
@TableField("F_Sort")
private Integer sort;
/**
* 类型1 休 2 正常排班
*/
@TableField("F_Type")
private Integer type;
}

View File

@@ -0,0 +1,176 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableName;
import java.sql.Timestamp;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 考勤配置-假日设置
* </p>
*
* @author ahua
* @since 2023-11-29
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("ftb_attendance_holiday_setting")
public class AttendanceHolidaySettingEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId("F_Id")
private String id;
/**
* 假期名称
*/
@TableField("F_Name")
private String name;
/**
* 计算时长方式1指定天数 2成员工龄司龄
*/
@TableField("F_DayType")
private Integer dayType;
/**
* 时长(当计算方式为成员工龄时则为基础天数)
*/
@TableField("F_DayNumber")
private Integer dayNumber;
/**
* 工龄倍数
*/
@TableField("F_YoeMultiple")
private Integer yoeMultiple;
/**
* 司龄倍数
*/
@TableField("F_YosMultiple")
private Integer yosMultiple;
/**
* 发放方式(1自动充值 2手动充值)
*/
@TableField("F_GiveType")
private Integer giveType;
/**
* 是否带薪1带薪 2非带薪
*/
@TableField("F_PaidSalaryEnable")
private Integer paidSalaryEnable;
/**
* 发放日期方式1每月 2每年指定日期,3成员生日 4成员入职日期
*/
@TableField("F_GiveDateType")
private Integer giveDateType;
/**
* 发放日期-月
*/
@TableField("F_GiveDateMonth")
private Integer giveDateMonth;
/**
* 发放日期-日
*/
@TableField("F_GiveDateDay")
private Integer giveDateDay;
/**
* 过期方式1过期天数 2每年指定日期 3永久
*/
@TableField("F_ExpiresType")
private Integer expiresType;
/**
* 过期设置-过期天数
*/
@TableField("F_ExpiresDayNumber")
private Integer expiresDayNumber;
/**
* 过期设置-月
*/
@TableField("F_ExpiresMonth")
private Integer expiresMonth;
/**
* 过期设置-日
*/
@TableField("F_ExpiresDay")
private Integer expiresDay;
/**
* 状态1启用 2停用
*/
@TableField("F_Enable")
private Integer enable;
/**
* 考勤组id
*/
@TableField("F_GroupId")
private String groupId;
/**
* 创建时间
*/
@TableField("F_CreatorTime")
private Date creatorTime;
/**
* 创建用户
*/
@TableField("F_CreatorUserId")
private String creatorUserId;
/**
* 修改时间
*/
@TableField("F_LastModifyTime")
private Date lastModifyTime;
/**
* 修改用户
*/
@TableField("F_LastModifyUserId")
private String lastModifyUserId;
/**
* 删除时间
*/
@TableField("F_DeleteTime")
private Date deleteTime;
/**
* 删除用户
*/
@TableField("F_DeleteUserId")
private String deleteUserId;
/**
* 删除标志
*/
@TableField("F_DeleteMark")
private Integer deleteMark;
/**
* 租户id
*/
@TableField("F_TenantId")
private String tenantId;
}

View File

@@ -0,0 +1,38 @@
package jnpf.entity.attendance;
import lombok.*;
import java.io.Serializable;
import java.util.Date;
/**
* 晚走晚到记录实体类
* 用于记录员工晚走晚到的考勤情况
*
* @author lingma
* @create 2025-09-22
*/
@Getter
@Setter
@NoArgsConstructor
@Builder
@AllArgsConstructor
public class AttendanceLateInLateOut implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 开始时间(下班时间)
*/
private Date startTime;
/**
* 结束时间(下次上班时间)
*/
private Date endTime;
/**
* 晚到分钟数
*/
private Integer lateMinis;
}

View File

@@ -0,0 +1,96 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author panpan
* @description 考勤假期发放设置表
* @version V2.0
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("ftb_attendance_leave_grant_setting")
public class AttendanceLeaveGrantSetting extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 8654200286159016797L;
/**
* 假期规则表主键Id
*/
@TableField("F_LeaveRulesId")
private String leaveRulesId;
/**
* 2.0假期类型Id
*/
@TableField("F_LeaveTypeId")
private String leaveTypeId;
/**
* 发放方式0.自动发放 1.手动发放
*/
@TableField("F_GrantType")
private Integer grantType;
/**
* 发放方式1.每月发放2.每年指定日期发放3.每年成员生日发放4.每年成员入职日期发放
*/
@TableField("F_GrantTimeType")
private Integer grantTimeType;
/**
* F_GrantTimeType=1使用每月发放的日期
*/
@TableField("F_MonthDay")
private Integer monthDay;
/**
* F_GrantTimeType=2使用每年指定日期发放 示列1-1
*/
@TableField("F_SpecifyDay")
private String specifyDay;
/**
* 发放时长类型1.指定天数 、2.成员司龄
*/
@TableField("F_GrantDurationType")
private Integer grantDurationType;
/**
* F_GrantDurationType=1,指定天数
*/
@TableField("F_SpecifyDayNum")
private Integer specifyDayNum;
/**
* F_GrantDurationType=2/3对应的公式json
*/
@TableField("F_FormulaJson")
private String formulaJson;
/**
* 过期类型0.永久1.自发放1月2.自发放1年
*/
@TableField("F_ExpiredType")
private Integer expiredType;
/**
* F_ExpiredType=1指定日期1月传30 F_ExpiredType=2一年传365
*/
@TableField("F_ExpiredDayNum")
private Integer expiredDayNum;
}

View File

@@ -0,0 +1,92 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author panpan
* @description 考勤假期规则表
* @version V2.0
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("ftb_attendance_leave_rules")
public class AttendanceLeaveRules extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 8654200286159016798L;
/**
* 假期名称
*/
@TableField("F_Name")
private String name;
/**
* 2.0假期类型Id
*/
@TableField("F_LeaveTypeId")
private String leaveTypeId;
/**
* 单位 : 1 :小时 2: 天 3:半天
*/
@TableField("F_Unit")
private Integer unit;
/**
* 类型编码 0 :其他 1事假 2病假 3工伤假 4年假 5婚假 6产假 7陪产假 8丧假 9探亲假 10小儿照护假
*/
@TableField("F_Type")
private Integer type;
/**
* 单次最大时长(天)
*/
@TableField("F_Duration")
private Integer duration;
/**
* 是否发放余额 0不发放 1发放余额
*/
@TableField("F_DistributeBalance")
private Integer distributeBalance;
/**
* 存休抵扣0.不能使用1.可以使用
*/
@TableField("F_RetirementLeave")
private Integer retirementLeave;
/**
* 适配范围0.全部1.指定组织/成员 -1 表示被其他规则挤后被其他规则占用
*/
@TableField("F_ScopeOfAdaptation")
private Integer scopeOfAdaptation;
/**
* 状态 0 未启用 1 启用
*/
@TableField("F_State")
private Integer state;
/**
* 内置 0:非内置 1:内置
*/
@TableField("F_BuiltIn")
private Integer builtIn;
}

View File

@@ -0,0 +1,36 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author panpan
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("ftb_attendance_leave_type")
public class AttendanceLeaveType extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 8654200286159016999L;
/**
* 假期类型名称
*/
@TableField("F_Name")
private String name;
/**
* 内置 0:非内置 1:内置
*/
@TableField("F_BuiltIn")
private Integer builtIn;
}

View File

@@ -0,0 +1,102 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import jnpf.util.ConstantUtil;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 考勤组-考勤点配置表
*
* @author yanwenfu
* @create 2023-11-23
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName(value = "ftb_attendance_location_setting")
public class AttendanceLocationSetting extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 544929660727500368L;
/**
* 考勤组id
*/
@TableField(value = "F_GroupId")
private String groupId;
/**
* 打卡方式1GPS打卡 2WIFI打卡 3考勤机打卡
*/
@TableField(value = "F_Type")
private Integer type;
/**
* 考勤点名称
*/
@TableField(value = "F_Name")
private String name;
/**
* 考勤地址/MAC地址/考勤机ID
*/
@TableField(value = "F_Address")
private String address;
/**
* 厂商code(考勤机使用)
*/
@TableField(value = "F_FactoryCode")
private String factoryCode;
/**
* 范围(米)
*/
@TableField(value = "F_Range")
private Integer clockRange;
/**
* 是否启用
*/
@TableField(value = "F_Enable")
private Integer enable;
/**
* 经度
*/
@TableField(value = "F_Lng")
private String lng;
/**
* 维度
*/
@TableField(value = "F_Lat")
private String lat;
/**
* 门店id
*/
@TableField(value = "F_StoreId")
private String storeId;
@TableField(value = "F_DeleteMark")
private Integer deleteMark;
public AttendanceLocationSetting(String id, String groupId, String name, String address, String factoryCode) {
// id为考勤机管理的id
super.setId(id);
this.groupId = groupId;
this.type = ConstantUtil.DEVICE_MACHINE;
this.name = name;
this.address = address;
this.factoryCode = factoryCode;
this.enable = 1;
}
}

View File

@@ -0,0 +1,65 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.util.Date;
/**
* 考勤机日志
*
* @author yanwenfu
* @create 2024-07-30
*/
@Getter
@Setter
@NoArgsConstructor
@TableName(value ="ftb_attendance_machine_log")
public class AttendanceMachineLog {
@TableId("F_Id")
private String id;
@TableField(value = "F_FactoryCode")
private String factoryCode;
@TableField(value = "F_UserId")
private String userId;
@TableField(value = "F_UserName")
private String userName;
@TableField(value = "F_GroupId")
private String groupId;
@TableField(value = "F_GroupName")
private String groupName;
@TableField(value = "F_Action")
private String action;
@TableField(value = "F_ParamJson")
private String paramJson;
@TableField(value = "F_MethodResult")
private String methodResult;
@TableField(value = "F_CreatorTime")
private Date creatorTime;
public AttendanceMachineLog(String id, String factoryCode, String userId, String userName, String groupId, String groupName, String action, String paramJson, Date creatorTime) {
this.id = id;
this.factoryCode = factoryCode;
this.userId = userId;
this.userName = userName;
this.groupId = groupId;
this.groupName = groupName;
this.action = action;
this.paramJson = paramJson;
this.creatorTime = creatorTime;
}
}

View File

@@ -0,0 +1,51 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 考勤机管理
* @author yanwenfu
* @create 2024-09-10
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName ( value ="ftb_attendance_machine_manage" )
public class AttendanceMachineManage extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 1201653095205863967L;
/** 考勤机名称 */
@TableField(value = "F_Name")
private String name;
/** mac地址 */
@TableField(value = "F_Mac")
private String mac;
/** 考勤机类型(enCode) */
@TableField(value = "F_Type")
private String type;
/** 类型名称 */
@TableField(value = "F_TypeName")
private String typeName;
/** 绑定考勤组(英文逗号分隔) */
@TableField(value = "F_GroupIds")
private String groupIds;
@TableField(exist = false)
private Integer orgCount;
@TableField(exist = false)
private Integer userCount;
}

View File

@@ -0,0 +1,58 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* 考勤机人脸库同步
* @author yanwenfu
* @create 2024-10-24
*/
@Getter
@Setter
@NoArgsConstructor
@TableName ( value ="ftb_attendance_machine_sync" )
public class AttendanceMachineSync implements Serializable {
private static final long serialVersionUID = 4022100422009659108L;
/** 主键 */
@TableId(value = "F_Id")
private String id;
/** mac地址 */
@TableField(value = "F_Mac")
private String mac;
/** 用户id */
@TableField(value = "F_UserId")
private String userId;
/** 用户编号 */
@TableField(value = "F_UserNo")
private String userNo;
/** 用户名称 */
@TableField(value = "F_UserName")
private String userName;
/** 创建时间 */
@TableField(value = "F_CreatorTime")
private Date creatorTime;
/** 修改时间 */
@TableField(value = "F_LastModifyTime")
private Date lastModifyTime;
/** 租户id */
@TableField(value = "F_TenantId")
private String tenantId;
}

View File

@@ -0,0 +1,77 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* 考勤消息通知
*
* @author shitou
* @email shitou@niujiekeji.com
* @date 2024-08-08 10:49:41
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("ftb_attendance_notice")
public class AttendanceNoticeEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId("F_ID")
private String id;
/**
* 通知类型
*/
@TableField(value = "F_Type")
private Integer type;
/**
* 标题
*/
@TableField(value = "F_Title")
private String title;
/**
* 数据json
*/
@TableField(value = "F_DataJson")
private String dataJson;
/**
* 是否需要确认(0-否 1-是)
*/
@TableField(value = "F_IsConfirm")
private Integer isConfirm;
/**
* 确认列表({"用户ID":确认状态(0未确认 1已确认)})
*/
@TableField(value = "F_ConfirmList")
private String confirmList;
/**
* 创建时间
*/
@TableField(value = "F_CreatorTime")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date creatorTime;
/**
* 创建用户
*/
@TableField(value = "F_CreatorUserId")
private String creatorUserId;
/**
* 租户id
*/
@TableField(value = "F_TenantId")
private String tenantId;
}

View File

@@ -0,0 +1,38 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 加班规则表
* @author yanwenfu
* @create 2025-09-17
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName ( value ="ftb_attendance_overtime_rule" )
public class AttendanceOvertimeRule extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 5520399653852253646L;
/** 规则名称 */
@TableField(value = "F_RuleName")
private String ruleName;
/** 适配范围(0: 全部, 1: 指定组织/成员) */
@TableField(value = "F_RuleScope")
private Integer ruleScope;
/** 是否启用: 0=停用, 1=启用 */
@TableField(value = "F_Enabled")
private Integer enabled;
}

View File

@@ -0,0 +1,60 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 加班规则明细表
* @author yanwenfu
* @create 2025-09-17
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName ( value ="ftb_attendance_overtime_rule_detail" )
public class AttendanceOvertimeRuleDetail extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 4158553649730184629L;
/** 规则ID */
@TableField(value = "F_RuleId")
private String ruleId;
/** 加班类型: 1=工作日, 2=公休日, 3=节假日 */
@TableField(value = "F_OvertimeType")
private Integer overtimeType;
/** 该类型是否启用: 0=停用, 1=启用 */
@TableField(value = "F_Enabled")
private Integer enabled;
/** 时长单位: 1=小时, 2=半天, 3=天 */
@TableField(value = "F_TimeUnit")
private Integer timeUnit;
/** 计算方式: 1=按审批申请时长, 2=按审批时段打卡时长, 3=无需审批按打卡时长 */
@TableField(value = "F_CalcMethod")
private Integer calcMethod;
/** 加班存休: 1=根据加班时长, 2=不结算存休(仅记录/结算薪酬) */
@TableField(value = "F_CompensateType")
private Integer compensateType;
/** 时长换算存休倍数 */
@TableField(value = "F_CompensateRatio")
private BigDecimal compensateRatio;
/** 最小加班时间 */
@TableField(value = "F_MinOvertimeMinute", updateStrategy = FieldStrategy.IGNORED)
private Integer minOvertimeMinute;
}

View File

@@ -0,0 +1,93 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* @author panpan
* @description 考勤公休规则表
* @version V2.0
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("ftb_attendance_public_holiday_rules")
public class AttendancePublicHolidayRules extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 8654200286159016799L;
/**
* 公休规则名称
*/
@TableField("F_Name")
private String name;
/**
* 公休天数类型0:固定时长1按出勤时长
*/
@TableField("F_Type")
private Integer type;
/**
* type为0时固定时长天数、1时可公休天数
*/
@TableField("F_DayNum")
private Integer dayNum;
/**
* type=1时使用出勤天数
*/
@TableField("F_AttendanceDay")
private Integer attendanceDay;
/**
* 月末未用完转化类型0 转化为存休1 仅记录/发放薪资
*/
@TableField("F_TransformationType")
private Integer transformationType;
/**
* 有效期0.永久有效 1.固定天数过期2.指定日期过期
*/
@TableField("F_LifespanType")
private Integer lifespanType;
/**
* 固定过期天数
*/
@TableField("F_FixedDay")
private Integer fixedDay;
/**
* 指定过期时间 有效期为2时必填 格式MM-dd
*/
@TableField("F_SpecifyDay")
private String specifyDay;
/**
* 适配范围0.全部1.指定组织/成员
*/
@TableField("F_ScopeOfAdaptation")
private Integer scopeOfAdaptation;
/**
* 状态0.禁用1.启用
*/
@TableField("F_State")
private Integer state;
}

View File

@@ -0,0 +1,93 @@
package jnpf.entity.attendance;
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 lombok.Builder;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 考勤配置-快速模板
* </p>
*
* @author ahua
* @since 2023-11-28
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("ftb_attendance_quick_template")
@Builder
public class AttendanceQuickTemplateEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId("F_Id")
private String id;
/**
* 模板名称
*/
@TableField("F_Name")
private String name;
/**
* 考勤组id
*/
@TableField("F_GroupId")
private String groupId;
/**
* 创建时间
*/
@TableField("F_CreatorTime")
private Date creatorTime;
/**
* 创建用户
*/
@TableField("F_CreatorUserId")
private String creatorUserId;
/**
* 修改时间
*/
@TableField("F_LastModifyTime")
private Date lastModifyTime;
/**
* 修改用户
*/
@TableField("F_LastModifyUserId")
private String LastModifyUserId;
/**
* 删除时间
*/
@TableField("F_DeleteTime")
private Date deleteTime;
/**
* 删除用户
*/
@TableField("F_DeleteUserId")
private String deleteUserId;
/**
* 删除标志
*/
@TableField("F_DeleteMark")
private Integer deleteMark;
/**
* 租户id
*/
@TableField("F_TenantId")
private String tenantId;
}

View File

@@ -0,0 +1,50 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 快速模板-单天模板
* </p>
*
* @author ahua
* @since 2023-11-28
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("ftb_attendance_quick_template_item")
@Builder
public class AttendanceQuickTemplateItemEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId("F_Id")
private String id;
/**
* 时段集合[{"type":"类型","name":"时段名称","periodId":"时段id"}]
*/
@TableField("F_Periods")
private String periods;
/**
* 排序
*/
@TableField("F_Sort")
private Integer sort;
/**
* 快速模板id
*/
@TableField("F_TemplateId")
private String templateId;
}

View File

@@ -0,0 +1,77 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import jnpf.util.FtbUtil;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
import java.util.Date;
/**
* null
* @author yanwenfu
* @create 2024-07-02
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName ( value ="ftb_attendance_repair" )
public class AttendanceRepair extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 7621635660780352707L;
/** 考勤组id */
@TableField(value = "F_GroupId")
private String groupId;
/** 用户id */
@TableField(value = "F_UserId")
private String userId;
/** 生成年 */
@TableField(value = "F_GenerateYear")
private Integer generateYear;
/** 生成月 */
@TableField(value = "F_GenerateMonth")
private Integer generateMonth;
/** 生成日(刷新日) */
@TableField(value = "F_GenerateDay")
private Integer generateDay;
/** 补卡总次数 */
@TableField(value = "F_TotalNum")
private Integer totalNum;
/** 补卡次数 */
@TableField(value = "F_RepairNum")
private Integer repairNum;
/** 补卡记录(结果id英文逗号分隔) */
@TableField(value = "F_RepairRecord")
private String repairRecord;
/** 过期日期 */
@TableField(value = "F_ExpireDate")
private Date expireDate;
public AttendanceRepair(String groupId, String userId, Integer generateYear, Integer generateMonth, Integer generateDay, Integer totalNum, Date expireDate) {
super.setId(FtbUtil.getId());
this.groupId = groupId;
this.userId = userId;
this.generateYear = generateYear;
this.generateMonth = generateMonth;
this.generateDay = generateDay;
this.totalNum = totalNum;
this.repairNum = totalNum;
this.expireDate = expireDate;
}
}

View File

@@ -0,0 +1,88 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
import java.util.Date;
/**
* 考勤组-打卡结果回滚表
* @author yanwenfu
* @create 2024-11-11
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName(value ="ftb_attendance_result_rollback")
public class AttendanceResultRollback extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 4096425765263025521L;
/** 出勤规则id */
@TableField(value = "F_RuleId")
private String ruleId;
/** 用户id */
@TableField(value = "F_UserId")
private String userId;
/** 打卡id */
@TableField(value = "F_ClockInId")
private String clockInId;
/** 有效时间(工时计算时间) */
@TableField(value = "F_EffectiveTime")
private Date effectiveTime;
/** 打卡类型(1: 上班, 2: 下班) */
@TableField(value = "F_ClockInType")
private Integer clockInType;
/** 打卡状态(-2: 无需打卡, -1: 缺卡, 1: 正常, 2: 迟到, 3: 早退) */
@TableField(value = "F_ClockInStatus")
private Integer clockInStatus;
/** 打卡种类(1: 普通打卡, 2: 外勤打卡) */
@TableField(value = "F_ClockInKind")
private Integer clockInKind;
/** 是否补卡(1: 是, 0: 否) */
@TableField(value = "F_Repaired")
private Integer repaired;
/** 审批类型(1: 补卡, 2: 出勤变更, 3: 外勤) */
@TableField(value = "F_ApplyType")
private Integer applyType;
/** 审批id */
@TableField(value = "F_ApplyId")
private String applyId;
/** 是否缺勤(1: 是, 0: 否) */
@TableField(value = "F_Absence")
private Integer absence;
/** 手动变更结果的用户id */
@TableField(value = "F_AbsenceLeader")
private String absenceLeader;
/** 上次手动变更结果的用户id */
@TableField(value = "F_LastAbsenceLeader")
private String lastAbsenceLeader;
/** 休息时间(分钟) */
@TableField(value = "F_RestMinute")
private Long restMinute;
/** 异常时长(秒) */
@TableField(value = "F_AbnormalMinute")
private Long abnormalMinute;
}

View File

@@ -0,0 +1,55 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* 规则适用范围
* @author yanwenfu
* @create 2025-09-18
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName(value = "ftb_attendance_rule_scope")
public class AttendanceRuleScope extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 6372861354152546594L;
/** 用户id */
@TableField(exist = false)
private String userId;
/** 业务类型(ScopeBizType) */
@TableField(value = "F_BizType")
private String bizType;
/** 业务对应的规则/配置ID */
@TableField(value = "F_RuleId")
private String ruleId;
/** 1=个人, 2=组织, 3=全部 */
@TableField(value = "F_ScopeType")
private Integer scopeType;
/** 组织id/用户id */
@TableField(value = "F_ScopeValue")
private String scopeValue;
/** 优先级(数值越小越优先) */
@TableField(value = "F_Priority")
private Integer priority;
/** 扩展字段 */
@TableField(value = "F_Expand")
private String expand;
}

View File

@@ -0,0 +1,47 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.*;
import java.io.Serializable;
/**
* 考勤月度封账设置
*
* @author shitou
* @email shitou@niujiekeji.com
* @date 2024-06-24 09:33:43
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("ftb_attendance_seal_setting")
public class AttendanceSealSetting extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 8654200286159016797L;
/**
* id
*/
@TableId("F_Id")
private String id;
/**
* 月度自动封账设置开关(0-关 1-开)
*/
@TableField("F_AutoSeal")
private Integer autoSeal;
/**
* 每月封账日期
*/
@TableField("F_SealDay")
private Integer sealDay;
/**
* 封账时间点(HH:mm)
*/
@TableField("F_SealTime")
private String sealTime;
}

View File

@@ -0,0 +1,124 @@
package jnpf.entity.attendance;
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 2024-05-10
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("ftb_attendance_shift_name")
public class AttendanceShiftNameEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键Id
*/
@TableId("F_Id")
private String id;
/**
* 班次名称
*/
@TableField("F_Name")
private String name;
/**
* 简称
*/
@TableField("F_ShortName")
private String shortName;
/**
* 颜色
*/
@TableField("F_Colour")
private String colour;
/**
* 班制1全天制 2半天制
*/
@TableField("F_Type")
private Integer shiftType;
/**
* 考勤组id
*/
@TableField("F_GroupId")
private String groupId;
/**
* 考勤配置id
*/
@TableField("F_SettingId")
private String settingId;
/**
* 状态1启用 2停用
*/
@TableField("F_Enable")
private Integer enable;
/**
* 创建时间
*/
@TableField("F_CreatorTime")
private Date creatorTime;
/**
* 创建用户
*/
@TableField("F_CreatorUserId")
private String creatorUserId;
/**
* 修改时间
*/
@TableField("F_LastModifyTime")
private Date LastModifyTime;
/**
* 修改用户
*/
@TableField("F_LastModifyUserId")
private String LastModifyUserId;
/**
* 删除时间
*/
@TableField("F_DeleteTime")
private Date DeleteTime;
/**
* 删除用户
*/
@TableField("F_DeleteUserId")
private String DeleteUserId;
/**
* 删除标志
*/
@TableField("F_DeleteMark")
private Integer DeleteMark;
/**
* 租户id
*/
@TableField("F_TenantId")
private String TenantId;
}

View File

@@ -0,0 +1,119 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import java.util.Date;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
/**
* <p>
* 考勤组配置-考勤配置
* </p>
*
* @author ahua
* @since 2023-11-22
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("ftb_attendance_shift_setting")
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AttendanceShiftSettingEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId("F_Id")
private String id;
/**
* 班制类型1固定班 2排班
*/
@TableField("F_SystemType")
private Integer systemType;
/**
* 周期(1周一,2周二,3周三,4周四,5周五,6周六,7周日)
*/
@TableField("F_Cycle")
private String cycle;
/**
* 生效日期
*/
@TableField("F_EnableTime")
private Date enableTime;
/**
* 考勤组id
*/
@TableField("F_GroupId")
private String groupId;
/**
* 状态1启用 2停用
*/
@TableField("F_Enable")
private Integer enable;
/**
* 创建时间
*/
@TableField("F_CreatorTime")
private Date creatorTime;
/**
* 创建用户
*/
@TableField("F_CreatorUserId")
private String creatorUserId;
/**
* 修改时间
*/
@TableField("F_LastModifyTime")
private Date lastModifyTime;
/**
* 修改用户
*/
@TableField("F_LastModifyUserId")
private String lastModifyUserId;
/**
* 删除时间
*/
@TableField("F_DeleteTime")
private Date deleteTime;
/**
* 删除用户
*/
@TableField("F_DeleteUserId")
private String deleteUserId;
/**
* 删除标志
*/
@TableField("F_DeleteMark")
private Integer deleteMark;
/**
* 租户id
*/
@TableField("F_TenantId")
private String tenantId;
}

View File

@@ -0,0 +1,253 @@
package jnpf.entity.attendance;
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 javax.validation.constraints.Max;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* <p>
* 考勤组-考勤配置-时段
* </p>
*
* @author ahua
* @since 2023-11-22
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("ftb_attendance_shift_setting_period")
public class AttendanceShiftSettingPeriodEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId("F_Id")
private String id;
/**
* 时段工时(天 保留一位小数)
*/
@TableField("F_TimeSlotDay")
private BigDecimal timeSlotDay;
/**
* 计薪工时(小时 保留4位小数)
*/
@TableField("F_PayrollHours")
private BigDecimal payrollHours;
/**
* 班制类型1固定班 2排班
*/
@TableField("F_SystemType")
private Integer systemType;
/**
* 允许迟到(0否 1是)
*/
@TableField("F_LateEnable")
private Integer lateEnable;
/**
* 允许早退(0否 1是)
*/
@TableField("F_EarlyEnable")
private Integer earlyEnable;
/**
* 允许休息時間(0否 1是)
*/
@TableField("F_BreakEnable")
private Integer breakEnable;
/**
* 允许次日下班(0否 1是)
*/
@TableField("F_NextDayEnable")
private Integer nextDayEnable;
/**
* 打卡开始时间点
*/
@TableField("F_ClockStartPoint")
private String clockStartPoint;
/**
* 打卡开始时间点 当日还是次日1当日 2次日
*/
@TableField("F_ClockStartPointType")
private Integer clockStartPointType;
/**
* 上班时间点
*/
@TableField("F_InPoint")
private String inPoint;
/**
* 迟到时间点
*/
@TableField("F_LatePoint")
private String latePoint;
/**
* 迟到当日还是次日1当日 2次日
*/
@TableField("F_LateType")
private Integer lateType;
/**
* 上班缺卡时间点
*/
@TableField("F_InLackPoint")
private String inLackPoint;
/**
* 上班缺卡 当日还是次日1当日 2次日
*/
@TableField("F_InLackPointType")
private Integer inLackPointType;
/**
* 休息开始时间点
*/
@TableField("F_BreakStartPoint")
private String breakStartPoint;
/**
* 休息结束时间点
*/
@TableField("F_BreakEndPoint")
private String breakEndPoint;
/**
* 早退时间点
*/
@TableField("F_EarlyPoint")
private String earlyPoint;
/**
* 下班时间点
*/
@TableField("F_OutPoint")
private String outPoint;
/**
* 下班缺卡时间点
*/
@TableField("F_OutLackPoint")
private String outLackPoint;
/**
* 考勤配置id
*/
@TableField("F_SettingId")
private String settingId;
/**
* 考勤组id
*/
@TableField("F_GroupId")
private String groupId;
/**
* 创建时间
*/
@TableField("F_CreatorTime")
private Date creatorTime;
/**
* 创建用户
*/
@TableField("F_CreatorUserId")
private String creatorUserId;
/**
* 修改时间
*/
@TableField("F_LastModifyTime")
private Date lastModifyTime;
/**
* 修改用户
*/
@TableField("F_LastModifyUserId")
private String lastModifyUserId;
/**
* 删除时间
*/
@TableField("F_DeleteTime")
private Date deleteTime;
/**
* 删除用户
*/
@TableField("F_DeleteUserId")
private String deleteUserId;
/**
* 删除标志
*/
@TableField("F_DeleteMark")
private Integer deleteMark;
/**
* 租户id
*/
@TableField("F_TenantId")
private String tenantId;
/**
* 休息开始时间当日还是次日1当日 2次日
*/
@TableField("F_BreakStartType")
private Integer breakStartType;
/**
* 休息结束时间当日还是次日1当日 2次日
*/
@TableField("F_BreakEndType")
private Integer breakEndType;
/**
* 早退时间当日还是次日1当日 2次日
*/
@TableField("F_EarlyType")
private Integer earlyType;
/**
* 上班当日还是次日1当日 2次日
*/
@TableField("F_InType")
private Integer inType;
/**
* 下班当日还是次日1当日 2次日
*/
@TableField("F_OutType")
private Integer outType;
/**
* 下班缺卡当日还是次日1当日 2次日
*/
@TableField("F_OutLackType")
private Integer outLackType;
/**
* 排序
*/
@TableField("F_Sort")
private Integer sort;
/**
* 类型1 上半天 2 下半天 (半天制班次使用)
*/
@TableField("F_Type")
private Integer type;
@TableField("F_ShiftId")
private String shiftId;
}

View File

@@ -0,0 +1,41 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 考勤每月存休表
* @author yanwenfu
* @create 2024-07-01
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName ( value ="ftb_attendance_storage_rest" )
public class AttendanceStorageRest extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 7493170924458007750L;
/** 用户id */
@TableField(value = "F_UserId")
private String userId;
/** 存休数字 */
@TableField(value = "F_Num")
private BigDecimal num;
/** 年月 */
@TableField(value = "F_YearMonth")
private String yearMonth;
}

View File

@@ -0,0 +1,46 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author panpan
* @description 考勤存休详情表
* @version V2.0
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("ftb_attendance_user_balance_detail")
public class AttendanceUserBalanceDetail extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 8654200286159016795L;
/**
* 假日类型Idftb_attendance_leave_rules存休时为空
*/
@TableField("F_ObjectId")
private String objectId;
/**
* 余额记录文本
*/
@TableField("F_Content")
private String content;
/**
* 使用额度(分正负:负数时为使用,正数时为加余额)
*/
@TableField("F_Quota")
private BigDecimal quota;
}

View File

@@ -0,0 +1,47 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.*;
import java.io.Serializable;
import java.util.Date;
import java.util.Date;
/**
* 考勤机人脸数据
* @author yanwenfu
* @create 2023-11-30
*/
@Getter
@Setter
@NoArgsConstructor
@ToString
@EqualsAndHashCode(callSuper = true)
@TableName ( value ="ftb_attendance_user_face" )
public class AttendanceUserFace extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 1200303221087971700L;
/** 用户id */
@TableField(value = "F_UserId")
private String userId;
/** 人脸数据 */
@TableField(value = "F_FaceData")
private String faceData;
/** 人脸数据 - 缩略 */
@TableField(value = "F_FaceDataThumbnail")
private String faceDataThumbnail;
/** 人脸特征 */
@TableField(value = "F_FaceFeature")
private String faceFeature;
/** 同步状态(1: 成功, 0: 失败) */
@TableField(value = "F_SyncStatus")
private Integer syncStatus;
}

View File

@@ -0,0 +1,42 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 考勤机指纹数据
* @author yanwenfu
* @create 2024-03-04
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName ( value ="ftb_attendance_user_fingerprint" )
public class AttendanceUserFingerprint extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 1689834591082631467L;
/** 用户id */
@TableField(value = "F_UserId")
private String userId;
/** 指纹id */
@TableField(value = "F_DataId")
private String dataId;
/** 指纹数据 */
@TableField(value = "F_Data")
private String data;
/** 指纹名称 */
@TableField(value = "F_DataName")
private String dataName;
}

View File

@@ -0,0 +1,38 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 用户常用设备
* @author yanwenfu
* @create 2025-09-17
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName ( value ="ftb_attendance_user_phone" )
public class AttendanceUserPhone extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 424794400235021133L;
/** 用户id */
@TableField(value = "F_UserId")
private String userId;
/** 设备名称 */
@TableField(value = "F_PhoneName")
private String phoneName;
/** 设备编号 */
@TableField(value = "F_PhoneCode")
private String phoneCode;
}

View File

@@ -0,0 +1,47 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import jnpf.util.FtbUtil;
import lombok.*;
import java.io.Serializable;
import java.util.Date;
/**
* 出勤规则变更
* @author yanwenfu
* @create 2026-05-20
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName ( value ="ftb_attendance_daily_rule_change" )
@Builder
@AllArgsConstructor
public class DailyRuleChange extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 5750485520731810904L;
/** 考勤组id */
@TableField(value = "F_GroupId")
private String groupId;
/** 用户id */
@TableField(value = "F_UserId")
private String userId;
/** 日期 */
@TableField(value = "F_Day")
private Date day;
public DailyRuleChange(String groupId, String userId, Date day, String tenantId) {
super.setId(FtbUtil.getId());
this.groupId = groupId;
this.userId = userId;
this.day = day;
super.setTenantId(tenantId);
}
}

View File

@@ -0,0 +1,117 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import jnpf.enums.attendance.ApplyTypeEnum;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
import java.util.Date;
/**
* 考勤组-打卡记录表
* @author yanwenfu
* @create 2023-11-22
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName ( value ="ftb_attendance_clock_in" )
public class FtbAttendanceClockIn extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 8654200286159016717L;
/**
* 日期
*/
@TableField(value = "F_Day")
private Date day;
/**
* 用户id
*/
@TableField(value = "F_UserId")
private String userId;
/**
* 打卡时间
*/
@TableField(value = "F_ClockInTime")
private Date clockInTime;
/**
* 审批编码
*/
@TableField(value = "F_ApprovalCode")
private String approvalCode;
/**
* 审批类型
*/
@TableField(exist = false)
private ApplyTypeEnum applyType;
/**
* 审批状态(0: 通过, 1: 审批中, 2: 拒绝)
*/
@TableField(value = "F_ApprovalStatus")
private Integer approvalStatus;
/**
* 关联id(审批通过后删除关联记录)
*/
@TableField(value = "F_RelationId")
private String relationId;
/**
* 地址
*/
@TableField(value = "F_Address")
private String address;
/**
* 经度
*/
@TableField(value = "F_Lng")
private String lng;
/**
* 维度
*/
@TableField(value = "F_Lat")
private String lat;
/**
* 打卡种类(1: 普通打卡, 2: 外勤打卡)
*/
@TableField(value = "F_ClockInKind")
private Integer clockInKind;
/**
* 设备类型(1: 地点打卡, 2: 考勤机, 3: wifi)
*/
@TableField(value = "F_DeviceType")
private Integer deviceType;
/**
* 设备id(考勤机id/WiFi id)
*/
@TableField(value = "F_DeviceId")
private String deviceId;
/**
* 设备名称
*/
@TableField(value = "F_DeviceName")
private String deviceName;
/** 备注 */
@TableField(value = "F_Remark")
private String remark;
}

View File

@@ -0,0 +1,441 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import jnpf.enums.attendance.AttendanceTypeEnum;
import jnpf.model.attendance.vo.attendance.OvertimeRuleDetailVo;
import jnpf.util.DateDetail;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
import java.util.Objects;
/**
* 考勤组-每日出勤规则
*
* @author yanwenfu
* @create 2023-11-22
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName(value = "ftb_attendance_daily_rule")
public class FtbAttendanceDailyRule extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 7692755431988353300L;
/**
* 考勤组id
*/
@TableField(value = "F_GroupId")
private String groupId;
/**
* 班次类型 0全天班次 1上午班次 2下午班次
*/
@TableField(value = "F_SchedulesType")
private Integer schedulesType;
/**
* 是否自己的考勤组(0未产生借调 1被借调 2借调)
*/
@TableField(value = "F_SelfGroup")
private Integer selfGroup;
/**
* 班次时段id
*/
@TableField(value = "F_PeriodId")
private String periodId;
/**
* 班次时段信息
*/
@TableField(value = "F_PeriodInfo")
private String periodInfo;
/**
* 班次id
*/
@TableField(value = "F_ShiftId")
private String shiftId;
/**
* 日期
*/
@TableField(value = "F_Day")
private Date day;
/**
* 用户id
*/
@TableField(value = "F_UserId")
private String userId;
/**
* 允许迟到(0否 1是)
*/
@TableField(value = "F_LateEnable")
private Integer lateEnable;
/**
* 允许早退(0否 1是)
*/
@TableField(value = "F_EarlyEnable")
private Integer earlyEnable;
/**
* 允许休息时间(0否 1是)
*/
@TableField(value = "F_BreakEnable")
private Integer breakEnable;
/**
* 允许次日下班(0否 1是)
*/
@TableField(value = "F_NextDayEnable")
private Integer nextDayEnable;
/**
* 打卡开始时间点
*/
@TableField(value = "F_ClockStartPoint")
private Date clockStartPoint;
/**
* 上班时间点
*/
@TableField(value = "F_InPoint")
private Date inPoint;
/**
* 是否上班边界覆盖(0未覆盖 1加班覆盖 2借调覆盖 3请假覆盖)
*/
@TableField(value = "F_InUnbounded")
private Integer inUnbounded;
/**
* 上班是否被外出覆盖(0未覆盖 1覆盖)
*/
@TableField(value = "F_InStepOutType")
private Integer inStepOutType;
/**
* 上班被外出覆盖申请id
*/
@TableField(value = "F_InStepOutApplyId")
private String inStepOutApplyId;
/**
* 原上班时间点
*/
@TableField(value = "F_OriginInPoint")
private Date originInPoint;
/**
* 迟到时间点
*/
@TableField(value = "F_LatePoint")
private Date latePoint;
/**
* 是否晚走晚到
*/
@TableField(value = "F_IsLateOutLateIn")
private Integer isLateOutLateIn;
/**
* 原始迟到时间点
*/
@TableField(value = "F_OriginalLatePoint")
private Date originalLatePoint;
/**
* 上班缺卡时间点
*/
@TableField(value = "F_InLackPoint")
private Date inLackPoint;
public Date getOriginBreakStartPoint() {
return Objects.nonNull(originBreakStartPoint) ? originBreakStartPoint : breakStartPoint;
}
public Date getOriginBreakEndPoint() {
return Objects.nonNull(originBreakEndPoint)? originBreakEndPoint : breakEndPoint;
}
public Date getOriginOutPoint() {
return Objects.nonNull(originOutPoint)? originOutPoint : outPoint;
}
public Date getOriginInPoint() {
return Objects.nonNull(originInPoint)? originInPoint : inPoint;
}
/**
* 休息开始时间点
*/
@TableField(value = "F_BreakStartPoint", updateStrategy = FieldStrategy.IGNORED)
private Date breakStartPoint;
/**
* 休息开始时间点
*/
@TableField(value = "F_OriginBreakStartPoint", updateStrategy = FieldStrategy.IGNORED)
private Date originBreakStartPoint;
/**
* 休息结束时间点
*/
@TableField(value = "F_BreakEndPoint", updateStrategy = FieldStrategy.IGNORED)
private Date breakEndPoint;
/**
* 休息结束时间点
*/
@TableField(value = "F_OriginBreakEndPoint", updateStrategy = FieldStrategy.IGNORED)
private Date originBreakEndPoint;
/**
* 早退时间点
*/
@TableField(value = "F_EarlyPoint")
private Date earlyPoint;
/**
* 下班时间点
*/
@TableField(value = "F_OutPoint")
private Date outPoint;
/**
* 是否下班边界覆盖(0未覆盖 1加班覆盖 2借调覆盖 3请假覆盖)
*/
@TableField(value = "F_OutUnbounded")
private Integer outUnbounded;
/**
* 下班是否被外出覆盖(0未覆盖 1覆盖)
*/
@TableField(value = "F_OutStepOutType")
private Integer outStepOutType;
/**
* 下班被外出覆盖申请id
*/
@TableField(value = "F_OutStepOutApplyId")
private String outStepOutApplyId;
/**
* 原下班时间点
*/
@TableField(value = "F_OriginOutPoint")
private Date originOutPoint;
/**
* 下班缺卡时间点
*/
@TableField(value = "F_OutLackPoint")
private Date outLackPoint;
/**
* 出勤类型(1: 普班, 2: 休, 3: 假, 4: 假(带薪), 5: 加班)
*/
@TableField(value = "F_AttendanceType")
private Integer attendanceType;
/**
* 申请id
*/
@TableField(value = "F_ApplyId")
private String applyId;
/**
* 审核数据展示标识1 起效0 失效2 打卡不展示3 考勤组剔除人员待删除9 标识出差10 标识外出)
*/
@TableField(value = "F_ApplyViewEnable")
private Integer applyViewEnable;
/**
* 申请事件开始时间
*/
@TableField(value = "F_ApplyStart")
private Date applyStart;
/**
* 请假天数
*/
@TableField(value = "F_LeaveDay")
private BigDecimal leaveDay;
/**
* 申请单位1小时 2日 3半日
*/
@TableField(value = "F_ApplyUnit")
private Integer applyUnit;
/**
* 请假申请参数
*/
@TableField(value = "F_LeaveParam")
private String leaveParam;
public void setInPoint(Date inPoint) {
this.inPoint = inPoint;
calValidDuration();
}
public void calInLackPoint(Date inLackPoint) {
if (Objects.isNull(inLackPoint)) {
return;
}
this.inLackPoint = inLackPoint.after(this.outPoint) ? this.outPoint : inLackPoint;
}
public void calLatePoint(Date latePoint) {
if (Objects.isNull(latePoint)) {
return;
}
this.latePoint = latePoint.after(this.outPoint) ? this.outPoint : latePoint;
}
public void setBreakStartPoint(Date breakStartPoint) {
this.breakStartPoint = breakStartPoint;
calValidDuration();
}
public void setBreakEndPoint(Date breakEndPoint) {
this.breakEndPoint = breakEndPoint;
calValidDuration();
}
public void setOutPoint(Date outPoint) {
this.outPoint = outPoint;
calValidDuration();
}
/**
* 申请事件结束时间
*/
@TableField(value = "F_ApplyEnd")
private Date applyEnd;
/**
* 有效时长
*/
@TableField(value = "F_ValidDuration")
private Integer validDuration;
/**
* 时段工时
*/
@TableField(value = "F_PeriodWorkDay")
private BigDecimal periodWorkDay;
/**
* 计薪工时
*/
@TableField(value = "F_PayrollHours")
private BigDecimal payrollHours;
/**
* 原始有效时长
*/
@TableField(value = "F_OriginValidDuration")
private Integer originValidDuration;
public BigDecimal getPayrollHours() {
if(Objects.nonNull(payrollHours)) {
return payrollHours;
}
if (Objects.isNull(validDuration)) {
return BigDecimal.ZERO;
}
return BigDecimal.valueOf(validDuration).divide(BigDecimal.valueOf(60), 4, RoundingMode.HALF_UP);
}
/**
* 排序
*/
@TableField(value = "F_Sort")
private Integer sort;
/**
* 是否固定班 3自动排休调休上班 2为划线排班
*/
@TableField(value = "F_FixedMark")
private Integer fixedMark;
/** 隐藏(0:不隐藏, 1:上班隐藏) */
@TableField(exist = false)
private String inHideStatus = "0";
/** 隐藏(0:不隐藏, 1:下班隐藏) */
@TableField(exist = false)
private String outHideStatus = "0";
/** 上班无需打卡(true:是, false:否) */
@TableField(exist = false)
private boolean onWorkIgnore = false;
/** 下班无需打卡(true:是, false:否) */
@TableField(exist = false)
private boolean offWorkIgnore = false;
/** 行号 */
@TableField(exist = false)
private Integer rn;
/** 消息(离岗、回岗) */
@TableField(exist = false)
private String msg;
/** 加班规则 */
@TableField(exist = false)
private OvertimeRuleDetailVo overtimeRuleDetail;
/** 无审批加班 */
@TableField(exist = false)
private Integer overtime = 0;
/** 目标日期 */
@TableField(exist = false)
private String targetDate;
/** 实际日期(目标日期/目标日期-1) */
@TableField(exist = false)
private String queryDate;
@TableField(exist = false)
private Boolean isInsert = Boolean.FALSE;
@TableField(exist = false)
private Boolean isDelete = Boolean.FALSE;
public void delete(){
this.isDelete = true;
}
public void calValidDuration() {
if (Objects.equals(this.getAttendanceType(), AttendanceTypeEnum.LEAVE.getCode()) || Objects.equals(this.getAttendanceType(), AttendanceTypeEnum.ORDINARY.getCode())|| Objects.equals(this.getAttendanceType(), AttendanceTypeEnum.REST.getCode()) || Objects.equals(this.getAttendanceType(), AttendanceTypeEnum.WORKOVERTIME.getCode())) {
if (Objects.isNull(this.getInPoint())) {
return;
}
if (Objects.isNull(this.getOutPoint())) {
return;
}
this.setValidDuration(DateDetail.calculateMinuteDiff(this.getInPoint(), this.getOutPoint()));
if (Objects.isNull(this.getBreakEnable()) || this.getBreakEnable() == 0) {
return;
}
if (Objects.isNull(this.getBreakStartPoint())) {
return;
}
if (Objects.isNull(this.getBreakEndPoint())) {
return;
}
this.setValidDuration(this.getValidDuration() - DateDetail.calculateMinuteDiff(this.getBreakStartPoint(), this.getBreakEndPoint()));
}
}
public void calOriginValidDuration() {
if (Objects.equals(this.getAttendanceType(), AttendanceTypeEnum.LEAVE.getCode()) || Objects.equals(this.getAttendanceType(), AttendanceTypeEnum.ORDINARY.getCode())|| Objects.equals(this.getAttendanceType(), AttendanceTypeEnum.REST.getCode()) || Objects.equals(this.getAttendanceType(), AttendanceTypeEnum.WORKOVERTIME.getCode())) {
if (Objects.isNull(this.getOriginInPoint())) {
return;
}
if (Objects.isNull(this.getOriginOutPoint())) {
return;
}
this.setOriginValidDuration(DateDetail.calculateMinuteDiff(this.getOriginInPoint(), this.getOriginOutPoint()));
if (Objects.isNull(this.getBreakEnable()) || this.getBreakEnable() == 0) {
return;
}
if (Objects.isNull(this.getOriginBreakStartPoint())) {
return;
}
if (Objects.isNull(this.getOriginBreakEndPoint())) {
return;
}
this.setOriginValidDuration(this.getOriginValidDuration() - DateDetail.calculateMinuteDiff(this.getOriginBreakStartPoint(), this.getOriginBreakEndPoint()));
}
}
public void insertTrue() {
this.isInsert = Boolean.TRUE;
}
}

View File

@@ -0,0 +1,49 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import jnpf.base.entity.SuperBaseEntity;
import lombok.*;
import java.io.Serializable;
/**
* 人脸变动记录
* @author yanwenfu
* @create 2025-04-14
*/
@Getter
@Setter
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName ( value ="ftb_attendance_face_change_log" )
public class FtbAttendanceFaceChangeLog extends SuperBaseEntity.SuperCUDBaseEntity<String> implements Serializable {
private static final long serialVersionUID = 7895549838561202615L;
/** 被变动人id */
@TableField(value = "F_UserId")
private String userId;
/** 人脸id */
@TableField(value = "F_FaceId")
private String faceId;
/** 操作内容 */
@TableField(value = "F_Content")
private String content;
public FtbAttendanceFaceChangeLog(String userId, String content, String createBy) {
this.userId = userId;
this.content = content;
super.setCreatorUserId(createBy);
}
public FtbAttendanceFaceChangeLog(String userId, String faceId, String content, String createBy) {
this.userId = userId;
this.faceId = faceId;
this.content = content;
super.setCreatorUserId(createBy);
}
}

View File

@@ -0,0 +1,147 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.*;
import jnpf.model.attendance.vo.AttendanceGroupUserVo;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* 划线排班配置
*
* @author ahua
* @version 2.1
* @copyright 引迈信息技术有限公司https://www.jnpfsoft.com
* @date 2025-12-30
*/
@Getter
@Setter
@NoArgsConstructor
@TableName(value = "ftb_attendance_line_scheduling_config")
public class FtbAttendanceLineSchedulingConfig implements Serializable {
private static final long serialVersionUID = 1L;
@TableId("F_Id")
public String id;
/**
* 考勤组id
*/
@TableField(value = "F_GroupId")
private String groupId;
/**
* 划线排班员工类型
*/
@TableField(value = "F_EmployeeType")
private String employeeType;
/**
* 划线排班员工工作性质
*/
@TableField(value = "F_WorkNature")
private String workNature;
/**
* 划线排班员工岗位
*/
@TableField(value = "F_Position")
private String position;
/**
* 划线排班成员标识 0全部 1指定
*/
@TableField(value = "F_MembersType")
private Integer membersType = 1;
/**
* 划线排班成员
*/
@TableField(value = "F_Members")
private String members;
/**
* 划线排班成员列表
*/
@TableField(exist = false)
private List<AttendanceGroupUserVo> memberList;
/**
* 上班打卡限制时间(小时)
*/
@TableField(value = "F_StartCheckInLimit")
private BigDecimal startCheckInLimit;
/**
* 下班打卡限制时间(小时)
*/
@TableField(value = "F_EndCheckInLimit")
private BigDecimal endCheckInLimit;
/**
* 1当日 2次日
*/
@TableField(value = "F_StartType")
private Integer startType;
/**
* 开始时间
*/
@TableField(value = "F_StartTime")
private String startTime;
/**
* 1当日 2次日
*/
@TableField(value = "F_EndType")
private Integer endType;
/**
* 结束时间
*/
@TableField(value = "F_EndTime")
private String endTime;
/**
* 员工消息通知(是/否)
*/
@TableField(value = "F_EmployeeNotify")
private Integer employeeNotify;
/**
* 划线排班提前通知岗位
*/
@TableField(value = "F_NotifyPosition")
private String notifyPosition;
/**
* 划线排班提前通知人员
*/
@TableField(value = "F_NotifyPerson")
private String notifyPerson;
/**
* 划线排班提前通知人员列表
*/
@TableField(exist = false)
private List<AttendanceGroupUserVo> notifyPersonList;
/**
* 划线排班提前通知时间类型1每天/2每周/3每月
*/
@TableField(value = "F_NotifyTimeType")
private Integer notifyTimeType;
/**
* 划线排班提前通知时间
*/
@TableField(value = "F_NotifyTime", insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED)
private String notifyTime;
@TableField(
value = "F_LastModifyTime",
fill = FieldFill.UPDATE
)
private Date lastModifyTime;
@TableField(
value = "F_LastModifyUserId",
fill = FieldFill.UPDATE
)
private String lastModifyUserId;
}

View File

@@ -0,0 +1,95 @@
package jnpf.entity.attendance;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Builder;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 划线排班计薪工时表
*
* @author jnpf
* @since 2026-02-27
*/
@Data
@TableName("ftb_attendance_line_scheduling_payroll_hours")
@Builder
public class FtbAttendanceLineSchedulingPayrollHours implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId("F_Id")
private String id;
/**
* 用户ID
*/
@TableField("F_UserId")
private String userId;
/**
* 考勤组ID
*/
@TableField("F_GroupId")
private String groupId;
/**
* 日期
*/
@TableField("F_Day")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date day;
/**
* 计薪工时(小时)
*/
@TableField("F_PayrollHours")
private BigDecimal payrollHours;
/**
* 创建用户ID
*/
@TableField("F_CreatorUserId")
private String creatorUserId;
/**
* 创建时间
*/
@TableField("F_CreatorTime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date creatorTime;
/**
* 租户ID
*/
@TableField("F_TenantId")
private String tenantId;
/**
* 删除标志0-未删除1-已删除)
*/
@TableField("F_DeleteMark")
private Integer deleteMark;
/**
* 最后修改时间
*/
@TableField("F_LastModifyTime")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date lastModifyTime;
/**
* 最后修改用户ID
*/
@TableField("F_LastModifyUserId")
private String lastModifyUserId;
}

View File

@@ -0,0 +1,67 @@
package jnpf.entity.attendance;
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.math.BigDecimal;
import java.util.Date;
/**
* 考勤组划线排班参数。
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName(value = "ftb_attendance_group_drawing_param")
public class FtbScheduleGroupDrawingParamEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "F_Id")
private String id;
@TableField(value = "F_GroupId")
private String groupId;
@TableField(value = "F_MaxDailySegmentsEnabled")
private Boolean maxDailySegmentsEnabled;
@TableField(value = "F_MaxDailySegmentsValue")
private Integer maxDailySegmentsValue;
@TableField(value = "F_MaxDailySegmentsPriority")
private Byte maxDailySegmentsPriority;
@TableField(value = "F_MaxSingleSegmentHoursEnabled")
private Boolean maxSingleSegmentHoursEnabled;
@TableField(value = "F_MaxSingleSegmentHoursValue")
private Integer maxSingleSegmentHoursValue;
@TableField(value = "F_MaxSingleSegmentHoursPriority")
private Byte maxSingleSegmentHoursPriority;
@TableField(value = "F_MinSingleSegmentHoursEnabled")
private Boolean minSingleSegmentHoursEnabled;
@TableField(value = "F_MinSingleSegmentHoursValue")
private BigDecimal minSingleSegmentHoursValue;
@TableField(value = "F_MinSingleSegmentHoursPriority")
private Byte minSingleSegmentHoursPriority;
@TableField(value = "F_CreateTime")
private Date createTime;
@TableField(value = "F_UpdateTime")
private Date updateTime;
@TableField(value = "F_Creator")
private String creator;
@TableField(value = "F_Updater")
private String updater;
}

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