feat: 东区缴费分支初始化

This commit is contained in:
2025-05-15 15:34:03 +08:00
parent 39f3acc15f
commit 90c60a4910
1198 changed files with 3752 additions and 72555 deletions
@@ -1,19 +0,0 @@
<?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">
<parent>
<artifactId>attendance</artifactId>
<groupId>com.yida.data.attendance</groupId>
<version>2.2-RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>attendance-api</artifactId>
<packaging>jar</packaging>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
</project>
@@ -1,105 +0,0 @@
package com.yida.data.attendance.dto;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
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 com.yida.data.common.core.enums.MsgChannel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDateTime;
import java.time.LocalTime;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
/**
* @date 2023-08-09 11:37:25
*/
@Data
@TableName("attendance_record")
public class AddAttendanceRecordDTO {
@ApiModelProperty(value = "考勤规则ID")
private Long ruleId;
@ApiModelProperty(value = "考勤时段ID")
private Long ruleTimeId;
/**
*
*/
@ApiModelProperty(value = "0教师,1学生")
private Integer userType;
/**
*
*/
@ApiModelProperty(value = "")
private Long userId;
/**
* 学校id
*/
@ApiModelProperty(value = "学校id")
private Long schoolId;
/**
* 考勤设备id
*/
@ApiModelProperty(value = "考勤设备id")
private Long deviceId;
/**
* 考勤设备编号
*/
@ApiModelProperty(value = "考勤设备编号")
private String deviceSn;
/**
* 考勤wifiid
*/
@ApiModelProperty(value = "考勤wifiid")
private Long wifiId;
/**
* 考勤范围ID
*/
@ApiModelProperty(value = "考勤范围ID")
private Long addressId;
/**
* 闸机识别图片地址
*/
@ApiModelProperty(value = "闸机识别图片地址或者人脸识别比对图片地址")
private String picUrl;
@ApiModelProperty(value = "wifi名称")
private String wifiName;
@ApiModelProperty(value = "wifi BSSID")
private String wifiBssid;
@ApiModelProperty(value = "打卡时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
private MsgChannel msgChannel;
/**
* 名称
*/
private String name;
/**
* es记录id
*/
private String esRecordId;
/**
* 设备侧元数据ID
*/
private String originalRecordId;
}
@@ -1,161 +0,0 @@
package com.yida.data.attendance.dto;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDateTime;
import java.time.LocalTime;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
/**
* @date 2023-08-09 11:37:25
*/
@Data
public class AddAttendanceReportStrategyDTO {
/**
*
*/
@ApiModelProperty(value = "")
private Long id;
/**
*
*/
@ApiModelProperty(value = "")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createDate;
/**
*
*/
@ApiModelProperty(value = "")
private Long createId;
/**
*
*/
@ApiModelProperty(value = "")
private String createName;
/**
*
*/
@ApiModelProperty(value = "")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateDate;
/**
*
*/
@ApiModelProperty(value = "")
private Long updateId;
/**
*
*/
@ApiModelProperty(value = "")
private Integer delFlag;
/**
* 学校id
*/
@ApiModelProperty(value = "学校id")
private Long schoolId;
/**
* 0-教职工考勤推送,1学生考勤推送,2家长提醒
*/
@ApiModelProperty(value = "0-教职工考勤推送,1学生考勤推送,2家长提醒")
private Integer type;
/**
* 是否推送周报0-否,1是
*/
@ApiModelProperty(value = "是否推送周报0-否,1是,默认0")
private Integer weekReport = 0;
@ApiModelProperty(value = "周报推送推送日期:小于周三,推送上月周。大于周三推送本周")
private Integer weekReportDate;
/**
* 周报推送时间:每周一XX点
*/
@ApiModelProperty(value = "周报推送时间:每周一XX点")
@DateTimeFormat(pattern = "HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "HH:mm:ss")
private LocalTime weekReportTime;
/**
* 是否推送月报0-否,1是
*/
@ApiModelProperty(value = "是否推送月报0-否,1是,默认0")
private Integer monthReport = 0;
@ApiModelProperty(value = "月报推送推送日期:小于5号,推送上月。大于5号推送本月")
@TableField("month_report_date")
private Integer monthReportDate = 0;
/**
* 月报推送时间:每月1号XX点
*/
@ApiModelProperty(value = "月报推送时间:每月1号XX点")
@DateTimeFormat(pattern = "HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "HH:mm:ss")
private LocalTime monthReportTime;
/**
* 是否推送迟到报告 0-否,1是
*/
@ApiModelProperty(value = "是否推送迟到报告 0-否,1是,默认0")
private Integer lateReport = 0;
/**
* 迟到报告推送时间:超过考勤开始时间XXX分钟
*/
@ApiModelProperty(value = "迟到报告推送时间:超过考勤开始时间XXX分钟")
private Integer lateReportTime;
/**
* 是否推送缺勤报告 0-否,1是
*/
@ApiModelProperty(value = "是否推送缺勤报告 0-否,1是,默认0")
private Integer missReport = 0;
/**
* 缺勤报告推送时间:超过考勤结束时间XXX分钟
*/
@ApiModelProperty(value = "缺勤报告推送时间:超过考勤结束时间XXX分钟")
private Integer missReportTime;
/**
* 考勤管理员是否推送报告,1是,0否
*/
@ApiModelProperty(value = "考勤管理员是否推送报告,1是,0否,默认0")
private Integer objManager = 0;
/**
* 指定人员:职工ID集合,逗号分隔
*/
@ApiModelProperty(value = "指定人员:职工ID集合,逗号分隔")
private String objStaffIds;
/**
* 家长入校/离校提醒:0否,1是
*/
@ApiModelProperty(value = "家长入校/离校提醒:0否,1是,默认0")
private Integer parentEnrollReport = 0;
}
@@ -1,55 +0,0 @@
package com.yida.data.attendance.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 考勤规则关联地点 Entity
*
* @date 2023-08-09 11:37:25
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AddAttendanceRuleAddressDTO {
/**
*
*/
@ApiModelProperty(value = "")
private Long id;
/**
* 规则ID
*/
@ApiModelProperty(value = "规则ID")
private Long ruleId;
/**
* 地点名称
*/
@ApiModelProperty(value = "地点名称")
private Long addressName;
/**
* 地点纬度
*/
@ApiModelProperty(value = "地点纬度")
private String addressLat;
/**
* 地点经度
*/
@ApiModelProperty(value = "地点经度")
private String addressLon;
/**
* 范围,米
*/
@ApiModelProperty(value = "范围,米")
private Integer range;
}
@@ -1,56 +0,0 @@
package com.yida.data.attendance.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 考勤-规则管理员 Entity
*
* @date 2023-08-09 11:37:25
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AddAttendanceRuleAdminDTO {
/**
*
*/
@ApiModelProperty(value = "")
private Long id;
/**
*
*/
@ApiModelProperty(value = "")
private Long schoolId;
/**
*
*/
@ApiModelProperty(value = "")
private Long ruleId;
/**
*
*/
@ApiModelProperty(value = "")
private Long userType;
/**
*
*/
@ApiModelProperty(value = "")
private Long deptId;
/**
*
*/
@ApiModelProperty(value = "")
private Long staffId;
}
@@ -1,174 +0,0 @@
package com.yida.data.attendance.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yida.data.common.core.entity.attendance.attendance.AttendanceRuleRemind;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import java.util.List;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AddAttendanceRuleDTO {
@ApiModelProperty(value = "主键id")
private Long id;
/**
* 学校id
*/
@ApiModelProperty(value = "学校id")
private Long schoolId;
/**
* 考勤规则名称
*/
@NotBlank
@ApiModelProperty(value = "考勤规则名称")
private String name;
/**
* 0-教职工打卡,1学生上学考勤,2学生宿舍考勤
*/
@ApiModelProperty(value = "0-教职工打卡,1学生上学考勤,2学生宿舍考勤")
@NotNull
private Integer userType;
/**
* 0-固定上下班时间模式,1自由打卡模式
*/
@ApiModelProperty(value = "0-固定上下班时间模式,1自由打卡模式")
@NotNull
private Integer type;
/**
* 打卡日期,1-周一,2-周二....多个用','连接
*/
@ApiModelProperty(value = "打卡日期,1-周一,2-周二....多个用','连接")
@NotBlank
private String week;
/**
* 法定节假日是否打卡,0-是,1-否
*/
@ApiModelProperty(value = "法定节假日是否打卡,0-是,1-否")
@NotNull
private Integer holidayAttendance;
/**
* 管理员打卡规则内容权限,0-无,1-有
*/
@ApiModelProperty(value = "管理员打卡规则内容权限,0-无,1-有")
private Integer roleRule;
/**
* 管理员打卡人员与白名单权限,0-无,1-有
*/
@ApiModelProperty(value = "管理员打卡人员与白名单权限,0-无,1-有")
private Integer roleUser;
/**
* 管理员节假日与特殊日期权限,0-无,1-有
*/
@ApiModelProperty(value = "管理员节假日与特殊日期权限,0-无,1-有")
private Integer roleDate;
/**
* 管理员打卡提醒权限,0-无,1-有
*/
@ApiModelProperty(value = "管理员打卡提醒权限,0-无,1-有")
private Integer roleRemind;
/**
* 打卡是必须拍照 0-无,1-必须
*/
@ApiModelProperty(value = "打卡是必须拍照 0-无,1-必须")
private Integer photoTake;
/**
* 打卡时必须人脸识别0-无,1-必须
*/
@ApiModelProperty(value = "打卡时必须人脸识别0-无,1-必须")
private Integer faceTake;
/**
* 填写备注时必须拍照0-无,1-必须
*/
@ApiModelProperty(value = "填写备注时必须拍照0-无,1-必须")
private Integer photoRemark;
/**
* 异常打卡可以提交申请,审批后可修正打卡状态
*/
@ApiModelProperty(value = "异常打卡可以提交申请,审批后可修正打卡状态")
private Integer applyAmendment;
/**
* 每月补卡次数
*/
@ApiModelProperty(value = "每月补卡次数")
private Integer reissueNum;
/**
* 每月补卡截止日期
*/
@ApiModelProperty(value = "每月补卡截止日期")
private Integer reissueEndDate;
/**
* 启用状态:0-未启用,1-已启用
*/
@ApiModelProperty(value = "启用状态:0-未启用,1-已启用,默认0")
private Integer status = 0;
/**
* 有效开始时间
*/
@ApiModelProperty(value = "有效开始时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@NotNull
private LocalDate startDate;
/**
* 有效结束时间
*/
@ApiModelProperty(value = "有效结束时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@NotNull
private LocalDate endDate;
@ApiModelProperty(value = "打卡提醒")
private List<AddAttendanceRuleRemindDTO> remindDTOList;
@ApiModelProperty(value = "打卡对象")
@NotEmpty
private List<AddAttendanceRuleObjDTO> attendanceRuleObjList;
@ApiModelProperty(value = "特殊日期")
private List<AddAttendanceRuleSpecialDateDTO> specialDateDTOList;
@ApiModelProperty(value = "白名单")
private List<AddAttendanceRuleWhiteListDTO> whiteListDTOList;
@ApiModelProperty(value = "打卡设备")
private List<AddAttendanceRuleDeviceDTO> deviceDTOList;
@ApiModelProperty(value = "打卡wifi")
private List<AddAttendanceRuleWifiDTO> wifiDTOList;
@ApiModelProperty(value = "打卡地点")
private List<AddAttendanceRuleAddressDTO> addressDTOList;
@ApiModelProperty(value = "打卡时间段")
@NotEmpty
private List<AddAttendanceRuleTimeDTO> timeDTOList;
@ApiModelProperty(value = "管理员")
@NotEmpty
private List<AddAttendanceRuleAdminDTO> adminDTOList;
}
@@ -1,43 +0,0 @@
package com.yida.data.attendance.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 考勤规则关联设备表 Entity
*
* @date 2023-08-09 11:37:25
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AddAttendanceRuleDeviceDTO {
/**
*
*/
@ApiModelProperty(value = "")
private Long id;
/**
* 设备类型
*/
@ApiModelProperty(value = "设备类型")
private Integer deviceType;
/**
* 设备ID
*/
@ApiModelProperty(value = "设备ID")
private Long deviceId;
/**
* 设备编号
*/
@ApiModelProperty(value = "设备编号")
private String deviceSn;
}
@@ -1,40 +0,0 @@
package com.yida.data.attendance.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AddAttendanceRuleObjDTO {
/**
*
*/
@ApiModelProperty(value = "")
private Long id;
/**
*
*/
@ApiModelProperty(value = "")
private Long deptId;
/**
*
*/
@ApiModelProperty(value = "")
private String deptName;
/**
* 父级部门id,逗号连接
*/
@ApiModelProperty(value = "父级部门id,逗号连接")
private String parentDeptId;
}
@@ -1,49 +0,0 @@
package com.yida.data.attendance.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 考勤-打卡提醒 Entity
*
* @date 2023-08-09 11:37:25
*/
@Data
public class AddAttendanceRuleRemindDTO {
/**
* 类型=规则usertype
*/
@ApiModelProperty(value = "类型=规则usertype")
private Integer userType;
/**
* 0-上班提醒,1-下班提醒
*/
@ApiModelProperty(value = "0-上班提醒,1-下班提醒")
private Integer type;
/**
* 提醒的提前分钟数
*/
@ApiModelProperty(value = "提醒的提前分钟数")
private Integer minute;
/**
* 提醒文本
*/
@ApiModelProperty(value = "提醒文本")
private String message;
/**
* 1-添加接收人姓名,0-不添加接收人姓名
*/
@ApiModelProperty(value = "1-添加接收人姓名,0-不添加接收人姓名")
private Integer includeReceiver;
}
@@ -1,63 +0,0 @@
package com.yida.data.attendance.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 考勤-特殊日期 Entity
*
* @date 2023-08-09 11:37:25
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AddAttendanceRuleSpecialDateDTO {
/**
*
*/
@ApiModelProperty(value = "")
private Long id;
/**
* 规则id
*/
@ApiModelProperty(value = "规则id")
private Long ruleId;
/**
* 0-不用打卡,1-必须打卡
*/
@ApiModelProperty(value = "0-不用打卡,1-必须打卡")
private Long type;
/**
* 开始日期
*/
@ApiModelProperty(value = "开始日期")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private LocalDate startDate;
/**
* 结束日期
*/
@ApiModelProperty(value = "结束日期")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private LocalDate endDate;
/**
* 事由
*/
@ApiModelProperty(value = "事由")
private String reason;
}
@@ -1,102 +0,0 @@
package com.yida.data.attendance.dto;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
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 io.swagger.annotations.ApiModelProperty;
import java.time.LocalDateTime;
import java.time.LocalTime;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 考勤-打卡时段 Entity
*
* @date 2023-08-09 11:37:25
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AddAttendanceRuleTimeDTO {
/**
*
*/
@ApiModelProperty(value = "")
private Long id;
/**
* 考勤规则id
*/
@ApiModelProperty(value = "考勤规则id")
private Long ruleId;
/**
* 上班时间
*/
@ApiModelProperty(value = "上班时间")
@DateTimeFormat(pattern = "HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "HH:mm:ss")
private LocalTime startTime;
/**
* 下班时间
*/
@ApiModelProperty(value = "下班时间")
@DateTimeFormat(pattern = "HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "HH:mm:ss")
private LocalTime endTime;
/**
* 最晚时间-针对宿舍考勤晚归情况
*/
@ApiModelProperty(value = "最晚时间-针对宿舍考勤晚归情况")
@DateTimeFormat(pattern = "HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "HH:mm:ss")
private LocalTime lastTime;
/**
* 上班打卡时段开始时间
*/
@ApiModelProperty(value = "上班打卡时段开始时间")
@DateTimeFormat(pattern = "HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "HH:mm:ss")
private LocalTime startEffectiveStartTime;
/**
* 上班打卡时段结束时间
*/
@ApiModelProperty(value = "上班打卡时段结束时间")
@DateTimeFormat(pattern = "HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "HH:mm:ss")
private LocalTime startEffectiveEndTime;
/**
* 下班打卡时段开始时间
*/
@ApiModelProperty(value = "下班打卡时段开始时间")
@DateTimeFormat(pattern = "HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "HH:mm:ss")
private LocalTime endEffectiveStartTime;
/**
* 下班打卡时段结束时间
*/
@ApiModelProperty(value = "下班打卡时段结束时间")
@DateTimeFormat(pattern = "HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "HH:mm:ss")
private LocalTime endEffectiveEndTime;
/**
* 结束时间是否为次日,1=是,0=否
*/
@ApiModelProperty(value = "结束时间是否为次日,1=是,0=否")
private Integer endNextDay;
}
@@ -1,31 +0,0 @@
package com.yida.data.attendance.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AddAttendanceRuleWhiteListDTO {
/**
*
*/
@ApiModelProperty(value = "")
private Long id;
/**
*
*/
@ApiModelProperty(value = "")
private Integer userType;
/**
* 人员id
*/
@ApiModelProperty(value = "人员id")
private Long userId;
}
@@ -1,47 +0,0 @@
package com.yida.data.attendance.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 考勤规则关联wifi Entity
*
* @date 2023-08-09 11:37:25
*/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AddAttendanceRuleWifiDTO {
/**
*
*/
@ApiModelProperty(value = "")
private Long id;
/**
* 规则ID
*/
@ApiModelProperty(value = "规则ID")
private Long ruleId;
/**
* wifi名称
*/
@ApiModelProperty(value = "wifi名称")
private String wifiName;
/**
* BSSID
*/
@ApiModelProperty(value = "BSSID")
private String wifiBssid;
@ApiModelProperty(value = "ip")
private String ip;
}
@@ -1,51 +0,0 @@
package com.yida.data.attendance.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 添加请假类型短策略请求类
*
* @author ZYJ
* @date 2023/2/2
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AddLeaveRequestStrategyDTO implements Serializable {
private static final long serialVersionUID = -1438414521101194453L;
@ApiModelProperty("请假ID")
private Long requestId;
@ApiModelProperty("请假人ID")
private Long userId;
@ApiModelProperty("策略id")
private Long strategyId;
@ApiModelProperty("0教师请假,1学生请假")
private Integer requestType;
@ApiModelProperty("学校id")
private Long schoolId;
@ApiModelProperty("开始时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startTime;
@ApiModelProperty("结束时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime endTime;
}
@@ -1,51 +0,0 @@
package com.yida.data.attendance.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yida.data.common.core.common.BaseDTO;
import com.yida.data.common.core.entity.attendance.attendance.AttendanceResult;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.models.auth.In;
import java.time.LocalDate;
import java.util.List;
import javax.validation.constraints.NotNull;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
@Data
public class AttendanceCountPageDTO extends BaseDTO<AttendanceResult> {
@ApiModelProperty("开始日期")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private LocalDate startDate;
@ApiModelProperty("结束日期")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private LocalDate endDate;
@ApiModelProperty("状态")
private Integer status;
@ApiModelProperty("学校")
private Long schoolId;
@ApiModelProperty("考勤规则")
private Long ruleId;
@ApiModelProperty("所属部门,职能部门")
private Long deptId;
@ApiModelProperty("所属部门,学区")
private Long campusId;
@ApiModelProperty("所属部门,学段")
private Long sectionId;
@ApiModelProperty("所属部门,年级")
private Long gradeId;
@ApiModelProperty("所属部门,班级")
private Long classId;
@ApiModelProperty("学生姓名或者学号/职工姓名或者手机号:支持模糊匹配")
private String nameOrNumber;
@ApiModelProperty("统计类型:0=教职工考勤,1=学生考勤")
@NotNull
private Integer type;
@ApiModelProperty("用户ID集合")
private List<Long> userIdList;
}
@@ -1,37 +0,0 @@
package com.yida.data.attendance.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yida.data.common.core.common.BaseDTO;
import com.yida.data.common.core.entity.attendance.attendance.AttendanceResult;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import java.util.List;
import javax.validation.constraints.NotNull;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
@Data
public class AttendanceDayReportDTO extends BaseDTO<AttendanceResult> {
@ApiModelProperty("开始日期")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private LocalDate attendanceDate;
@ApiModelProperty("开始日期")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private LocalDate startAttendanceDate;
@ApiModelProperty("结束日期")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private LocalDate endAttendanceDate;
@ApiModelProperty("用户类型:0教师,1学生")
private Integer userType;
@ApiModelProperty("学校")
private Long schoolId;
private List<Long> userIdList;
}
@@ -1,39 +0,0 @@
package com.yida.data.attendance.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 考勤人脸对比请求类
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "RosterFaceMatchDTO", description = "考勤人脸对比请求类")
public class AttendanceFaceMatchDTO implements Serializable {
private static final long serialVersionUID = 1474013091202762132L;
@ApiModelProperty("学校ID")
private Long schoolId;
@ApiModelProperty("用户ID")
@NotNull
private Long userId;
@ApiModelProperty("人员类型 0教职工,1学生")
@NotNull
private Integer userType;
@ApiModelProperty("base64图片信息")
@NotBlank
private String base64;
}
@@ -1,34 +0,0 @@
package com.yida.data.attendance.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("获取某日用户考勤记录请求类")
public class AttendanceResultByDayDTO {
@ApiModelProperty("用户ID")
@NotNull
private Long userId;
@ApiModelProperty("用户类型:0教职工,1学生")
@NotNull
private Integer userType;
@ApiModelProperty("考勤日期")
@NotNull
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private LocalDate attendanceDate;
}
@@ -1,40 +0,0 @@
package com.yida.data.attendance.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("获取某时间段内用户考勤记录请求类")
public class AttendanceResultByStartAndEndTimeDTO {
@ApiModelProperty("用户ID")
@NotNull
private Long userId;
@ApiModelProperty("用户类型:0教职工,1学生")
@NotNull
private Integer userType;
@ApiModelProperty("考勤开始日期")
@NotNull
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private LocalDate attendanceStartDate;
@ApiModelProperty("考勤结束日期")
@NotNull
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private LocalDate attendanceEndDate;
}
@@ -1,17 +0,0 @@
package com.yida.data.attendance.dto;
import com.yida.data.common.core.common.BaseDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AttendanceRuleAdminUserAddDTO extends BaseDTO {
private Long Id;
private Long ruleId;
private Long deptId;
private Long staffId;
}
@@ -1,39 +0,0 @@
package com.yida.data.attendance.dto;
import com.yida.data.common.core.common.BaseDTO;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AttendanceRuleAdminUserPageDTO extends BaseDTO {
/**
* 考勤规则名称
*/
@ApiModelProperty(value = "管理员名称")
private String staffName;
/**
* 考勤人员名称
*/
@ApiModelProperty(value = "管理员Id")
private String staffId;
@ApiModelProperty(value = "规则Id")
@NotNull
private Long ruleId;
private Long campusId;
private Long sectionId;
private Long gradeId;
private Long classId;
private Long deptId;
private List<Long> deptIdList;
private List<Long> staffIdList;
}
@@ -1,25 +0,0 @@
package com.yida.data.attendance.dto;
import com.yida.data.common.core.common.BaseDTO;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AttendanceRuleUserAddDTO extends BaseDTO {
/**
* 0-教职工打卡,1学生上学考勤,2学生宿舍考勤
*/
@ApiModelProperty(value = "0-教职工,1学生")
private Integer userType;
private Long ruleId;
private Long deptId;
private Long userId;
}
@@ -1,34 +0,0 @@
package com.yida.data.attendance.dto;
import com.yida.data.common.core.common.BaseDTO;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AttendanceRuleUserPageDTO extends BaseDTO {
/**
* 0-教职工打卡,1学生上学考勤,2学生宿舍考勤
*/
@ApiModelProperty(value = "0-教职工打卡,1学生上学考勤")
private Integer userType;
/**
* 考勤规则名称
*/
@ApiModelProperty(value = "考勤人员名称")
private String userName;
private Long ruleId;
private Long schoolId;
private Long campusId;
private Long sectionId;
private Long gradeId;
private Long classId;
private Long deptId;
private List<Long> userIdList;
}
@@ -1,41 +0,0 @@
package com.yida.data.attendance.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import net.sf.cglib.core.Local;
import org.springframework.format.annotation.DateTimeFormat;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("查询当前月份考勤状态请求类")
public class AttendanceStatusByMonthDTO {
@ApiModelProperty("用户ID")
@NotNull
private Long userId;
@ApiModelProperty("用户类型:0教职工,1学生")
@NotNull
private Integer userType;
@ApiModelProperty("考勤开始日期")
@NotNull
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private LocalDate attendanceStartDate;
@ApiModelProperty("考勤结束日期")
@NotNull
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private LocalDate attendanceEndDate;
}
@@ -1,47 +0,0 @@
package com.yida.data.attendance.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDateTime;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "AttendanceUserCheckInDTO", description = "wifi打卡请求类")
public class AttendanceUserCheckInDTO {
@ApiModelProperty(value = "学校ID")
private Long schoolId;
@ApiModelProperty(value = "打卡用户ID")
private Long userId;
@ApiModelProperty(value = "打卡用户类型:0教职工,1学生")
private Integer userType;
@ApiModelProperty(value = "打卡规则ID")
private Long ruleId;
@ApiModelProperty(value = "打卡时段ID")
private Long ruleTimeId;
@ApiModelProperty(value = "wifi的BSSID")
private String wifiBssid;
@ApiModelProperty(value = "当前打卡时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@NotNull
private LocalDateTime currentDateTime;
@ApiModelProperty(value = "人脸认证图片地址")
private String avatar;
}
@@ -1,30 +0,0 @@
package com.yida.data.attendance.dto;
import com.alibaba.excel.annotation.ExcelProperty;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class BssidImportDTO implements Serializable {
private static final long serialVersionUID = 3552156436496408092L;
/**
* 名称
*/
@ExcelProperty(index = 0)
private String wifiName;
/**
* bssid
*/
@ExcelProperty(index = 1)
private String wifiBssid;
}
@@ -1,19 +0,0 @@
package com.yida.data.attendance.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DayReportDataDTO {
private String deptName;
private Integer totalNum;
private Integer normalNum;
private Integer abNum;
private Integer requestNum;
}
@@ -1,36 +0,0 @@
package com.yida.data.attendance.dto;
import lombok.Data;
@Data
public class DealRecordDTO {
/**
* 设备sn号
*/
private String sn;
/**
* 考勤时间
*/
private String date;
/**
* 考勤用户id
*/
private Long userId;
/**
* 用户类型,0-学生,1-教职工
*/
private Integer userType;
/**
* 设备方用户唯一标识
*/
private String userFlag;
/**
* 考勤图片
*/
private String picUrl;
}
@@ -1,16 +0,0 @@
package com.yida.data.attendance.dto;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.Data;
@Data
public class DevicePage<T> extends Page<T> {
public DevicePage(Integer pageNum, Integer pageSize) {
super(pageNum, pageSize);
}
private Integer onlineNumber;
private Integer offlineNumber;
}
@@ -1,58 +0,0 @@
package com.yida.data.attendance.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class H5AttendanceRuleWifiDTO {
@ApiModelProperty(value = "学校ID")
@NotNull
private Long schoolId;
@ApiModelProperty(value = "用户主键id")
@NotNull
private Long userId;
@ApiModelProperty(value = "0-教职工,1学生")
@NotNull
private Integer userType;
/**
* BSSID
*/
@ApiModelProperty(value = "BSSID")
@NotNull
private String wifiBssid;
/**
* ip
*/
@ApiModelProperty(value = "ip")
private String ip;
@ApiModelProperty(value = "当前打卡时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@NotNull
private LocalDateTime currentDateTime;
}
@@ -1,40 +0,0 @@
package com.yida.data.attendance.dto;
import com.yida.data.common.core.entity.user.EduFaceGroupStrategy;
import com.yida.data.common.core.entity.user.EduUserFace;
import com.yida.data.common.core.enums.IssuedTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.Data;
@Data
public class IssuedFaceDTO {
/**
* 人脸列表
*/
private List<EduUserFace> userFaceList;
/**
* 设备id列表
*/
private List<Long> deviceList;
@ApiModelProperty("下发类型,0-添加,1-修改")
private Integer type;
/**
* 人脸组id
*/
private Long groupId;
/**
* 策略信息
*/
private EduFaceGroupStrategy groupStrategy;
/**
* 下发类型
*/
private IssuedTypeEnum issuedTypeEnum;
}
@@ -1,42 +0,0 @@
package com.yida.data.attendance.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yida.data.common.core.common.BaseDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
/**
* 分页查询通行记录错误记录请求类
*
* @author ZYJ
* @date 2023/11/1 17:29
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class ListErrorRecordDTO extends BaseDTO implements Serializable {
private static final long serialVersionUID = -4152682288872419619L;
@ApiModelProperty(value = "姓名")
private String name;
@ApiModelProperty(value = "开始时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startDateTime;
@ApiModelProperty(value = "结束时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime endDateTime;
}
@@ -1,50 +0,0 @@
package com.yida.data.attendance.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yida.data.common.core.common.BaseDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import java.util.List;
import javax.validation.constraints.NotNull;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
@Data
@ApiModel("教师端管理员查询学生/教师考勤统计请求类")
public class ManageListUserDTO extends BaseDTO {
@ApiModelProperty(value = "当前用户ID--职工ID")
private Long userId;
@ApiModelProperty(value = "查询用户类型:0教师,1学生")
private Integer searchUserType;
@ApiModelProperty("考勤开始日期")
@NotNull
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private LocalDate attendanceStartDate;
@ApiModelProperty("考勤结束日期")
@NotNull
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private LocalDate attendanceEndDate;
@ApiModelProperty("考勤状态:-1全部,0正常,1,迟到,2早退,3缺卡,7晚归,8异常晚归")
private Integer attendanceStatus;
@ApiModelProperty("考勤规则ID")
private Long ruleId;
@ApiModelProperty("家校部门ID")
private Long deptId;
@ApiModelProperty("部门类型")
private Integer deptType;
private List<Long> userIdList;
}
@@ -1,52 +0,0 @@
package com.yida.data.attendance.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yida.data.common.core.common.BaseDTO;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PageAttendanceRecordDTO extends BaseDTO {
@ApiModelProperty(value = "打卡类型,0-面板机,1wifi")
private Integer type;
@ApiModelProperty(value = "用户ID")
private Long userId;
@ApiModelProperty(value = "姓名")
private String studentName;
@ApiModelProperty(value = "人员类型,0-教职工,1学生")
private Integer userType;
@ApiModelProperty(value = "开始时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime startDateTime;
@ApiModelProperty(value = "结束时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime endDateTime;
private Long schoolId;
private Long campusId;
private Long sectionId;
private Long gradeId;
private Long classId;
private List<Long> classIdList;
List<Long> userIdList;
}
@@ -1,46 +0,0 @@
package com.yida.data.attendance.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yida.data.common.core.common.BaseDTO;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import java.time.LocalDateTime;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PageAttendanceRuleDTO extends BaseDTO {
/**
*
*/
@ApiModelProperty(value = "规则名称")
private String ruleName;
/**
*
*/
@ApiModelProperty(value = "规则类型,0-固定上下班时间模式,1自由打卡模式")
private Integer type;
/**
*
*/
@ApiModelProperty(value = "规则类型,0-教职工打卡,1学生上学考勤,2学生宿舍考勤")
private Integer userType;
/**
*
*/
@ApiModelProperty(value = "启用状态:0-未启用,1-已启用")
private Integer status;
private Long schoolId;
}
@@ -1,11 +0,0 @@
package com.yida.data.attendance.dto;
import java.util.List;
import lombok.Data;
@Data
public class RemoveFaceDTO {
private List<String> deviceFactoryUserId;
private List<Long> deviceList;
}
@@ -1,32 +0,0 @@
package com.yida.data.attendance.dto;
import com.yida.data.common.core.common.BaseDTO;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UpdateAttendanceRuleStatusDTO {
/**
*
*/
@ApiModelProperty(value = "规则Id")
@NotNull
private Long id;
/**
*
*/
@ApiModelProperty(value = "启用状态:0-未启用,1-已启用")
@NotNull
private Integer status;
}
@@ -1,107 +0,0 @@
package com.yida.data.attendance.fallback;
import com.yida.data.attendance.dto.IssuedFaceDTO;
import com.yida.data.attendance.dto.RemoveFaceDTO;
import com.yida.data.attendance.feign.RemoteAttendanceDeviceService;
import com.yida.data.common.core.annotation.Fallback;
import com.yida.data.common.core.common.ResultBean;
import com.yida.data.common.core.entity.attendance.EduAttendanceDevice;
import com.yida.data.common.core.entity.attendance.EduAttendanceDeviceGroup;
import feign.hystrix.FallbackFactory;
import java.util.List;
import lombok.extern.slf4j.Slf4j;
/**
* RemoteAttendanceDeviceService fallback处理类
*
* @author ZYJ
* @date 2022/8/26
*/
@Slf4j
@Fallback
public class RemoteAttendanceDeviceServiceFallback implements FallbackFactory<RemoteAttendanceDeviceService> {
@Override
public RemoteAttendanceDeviceService create(Throwable throwable) {
log.error("RemoteAttendanceDeviceService fallback reason:{}", throwable.getMessage());
return new RemoteAttendanceDeviceService() {
@Override
public ResultBean<List<EduAttendanceDevice>> listDeviceBySchool(Long schoolId) {
return null;
}
@Override
public ResultBean<List<EduAttendanceDevice>> listDeviceByType(String type) {
return null;
}
/**
* 下发人脸到设备
*
* @param dto
*/
@Override
public ResultBean issuedFace(IssuedFaceDTO dto) {
return null;
}
/**
* 删除设备中的人脸
*
* @param dto
*/
@Override
public ResultBean removeFace(RemoveFaceDTO dto) {
return null;
}
/**
* 查询设备组中的设备
*
* @param groupIds
*/
@Override
public ResultBean<List<EduAttendanceDevice>> listDeviceByGroup(Long[] groupIds) {
return null;
}
/**
* 根据id查询设备
*
* @param ids
*/
@Override
public ResultBean<List<EduAttendanceDevice>> listDeviceById(Long[] ids) {
return null;
}
/**
* 根据id查询设备组
*
* @param ids
* @return
*/
@Override
public ResultBean<List<EduAttendanceDeviceGroup>> listDeviceGroupById(Long[] ids) {
return null;
}
/**
* 更新设备在线状态
*/
@Override
public ResultBean updateDeviceStatus() {
return null;
}
/**
* 校时所有设备
*/
@Override
public ResultBean timingAllDevice() {
return null;
}
};
}
}
@@ -1,33 +0,0 @@
package com.yida.data.attendance.fallback;
import com.yida.data.attendance.feign.RemoteAttendanceResultService;
import com.yida.data.common.core.annotation.Fallback;
import com.yida.data.common.core.common.ResultBean;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
/**
* RemoteAttendanceResultService fallback处理类
*/
@Slf4j
@Fallback
public class RemoteAttendanceResultServiceFallback implements FallbackFactory<RemoteAttendanceResultService> {
@Override
public RemoteAttendanceResultService create(Throwable throwable) {
log.error("RemoteAttendanceResultService fallback reason:{}", throwable.getMessage());
return new RemoteAttendanceResultService() {
@Override
public ResultBean initAttendanceResult() {
return null;
}
@Override
public ResultBean attendanceNotice() {
return null;
}
};
}
}
@@ -1,106 +0,0 @@
package com.yida.data.attendance.fallback;
import com.yida.data.attendance.dto.AddLeaveRequestStrategyDTO;
import com.yida.data.attendance.feign.RemoteAttendanceStrategyService;
import com.yida.data.common.core.annotation.Fallback;
import com.yida.data.common.core.common.ResultBean;
import com.yida.data.common.core.entity.user.EduFaceGroupStrategy;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
/**
* RemoteAttendanceStrategyService fallback处理类
*
* @author ZYJ
* @date 2022/8/26
*/
@Slf4j
@Fallback
public class RemoteAttendanceStrategyServiceFallback implements FallbackFactory<RemoteAttendanceStrategyService> {
@Override
public RemoteAttendanceStrategyService create(Throwable throwable) {
log.error("RemoteAttendanceStrategyService fallback reason:{}", throwable.getMessage());
return new RemoteAttendanceStrategyService() {
/**
* 保存策略并绑定人员信息
*
* @param eduFaceGroupStrategy 人脸组-策略信息
* @return com.yida.data.common.core.common.ResultBean<java.lang.String>
* @author ZYJ
* @date 2022/12/13 10:51
*/
@Override
public ResultBean<String> saveStrategyAndUser(EduFaceGroupStrategy eduFaceGroupStrategy) {
return null;
}
/**
* 删除策略
*
* @param eduFaceGroupStrategy 人脸策略信息
* @return com.yida.data.common.core.common.ResultBean<java.lang.String>
* @author ZYJ
* @date 2022/12/21 15:44
*/
@Override
public ResultBean<String> deleteStrategy(EduFaceGroupStrategy eduFaceGroupStrategy) {
return null;
}
/**
* 绑定对应的人员-策略信息
*
* @param eduFaceGroupStrategy 人脸策略信息
* @return com.yida.data.common.core.common.ResultBean<java.lang.String>
* @author ZYJ
* @date 2022/12/22 16:25
*/
@Override
public ResultBean<String> bindUserStrategy(EduFaceGroupStrategy eduFaceGroupStrategy) {
return null;
}
/**
* 解绑对应的人员-策略信息
*
* @param eduFaceGroupStrategy 人脸策略信息
* @return com.yida.data.common.core.common.ResultBean<java.lang.String>
* @author ZYJ
* @date 2022/12/26 10:16
*/
@Override
public ResultBean<String> unBindUserStrategy(EduFaceGroupStrategy eduFaceGroupStrategy) {
return null;
}
/**
* 删除并保存策略
*
* @param eduFaceGroupStrategy 人脸策略信息
* @return com.yida.data.common.core.common.ResultBean<java.lang.String>
* @author ZYJ
* @date 2023/1/9 15:12
*/
@Override
public ResultBean<String> deleteAndSaveStrategy(EduFaceGroupStrategy eduFaceGroupStrategy) {
return null;
}
/**
* 添加请假类型短策略
*
* @param dto 添加请假类型短策略请求类
* @return com.yida.data.common.core.common.ResultBean<java.lang.String>
* @author ZYJ
* @date 2023/2/2 16:00
*/
@Override
public ResultBean<String> addLeaveRequestStrategy(AddLeaveRequestStrategyDTO dto) {
return null;
}
};
}
}
@@ -1,28 +0,0 @@
package com.yida.data.attendance.fallback;
import com.yida.data.attendance.feign.RemoteUserStrategyService;
import com.yida.data.common.core.annotation.Fallback;
import com.yida.data.common.core.common.ResultBean;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
/**
* RemoteUserStrategyService fallback处理类
*/
@Slf4j
@Fallback
public class RemoteUserStrategyServiceFallback implements FallbackFactory<RemoteUserStrategyService> {
@Override
public RemoteUserStrategyService create(Throwable throwable) {
log.error("RemoteUserStrategyService fallback reason:{}", throwable.getMessage());
return new RemoteUserStrategyService() {
@Override
public ResultBean<String> checkOverTimeUserStrategy() {
return null;
}
};
}
}
@@ -1,71 +0,0 @@
package com.yida.data.attendance.feign;
import com.yida.data.attendance.dto.IssuedFaceDTO;
import com.yida.data.attendance.dto.RemoveFaceDTO;
import com.yida.data.attendance.fallback.RemoteAttendanceDeviceServiceFallback;
import com.yida.data.common.core.common.ResultBean;
import com.yida.data.common.core.entity.attendance.EduAttendanceDevice;
import com.yida.data.common.core.entity.attendance.EduAttendanceDeviceGroup;
import com.yida.data.common.core.entity.constant.FebsServerConstant;
import java.util.List;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(value = FebsServerConstant.EDU_ATTENDANCE, contextId = "attendanceDeviceServiceClient",
fallbackFactory = RemoteAttendanceDeviceServiceFallback.class)
public interface RemoteAttendanceDeviceService {
@GetMapping("/device/listDeviceBySchool")
ResultBean<List<EduAttendanceDevice>> listDeviceBySchool(@RequestParam("schoolId") Long schoolId);
@GetMapping("/in/device/listDeviceByType")
ResultBean<List<EduAttendanceDevice>> listDeviceByType(@RequestParam("type") String type);
/**
* 下发人脸到设备
*/
@PostMapping("/device/issuedFace")
ResultBean issuedFace(@RequestBody IssuedFaceDTO dto);
/**
* 删除设备中的人脸
*/
@PostMapping("/device/removeFace")
ResultBean removeFace(@RequestBody RemoveFaceDTO dto);
/**
* 查询设备组中的设备
*/
@GetMapping("/deviceGroup/listDeviceByGroup")
ResultBean<List<EduAttendanceDevice>> listDeviceByGroup(@RequestParam("groupIds") Long[] groupIds);
/**
* 根据id查询设备
*/
@GetMapping("/device/listDeviceById")
ResultBean<List<EduAttendanceDevice>> listDeviceById(@RequestParam("ids") Long[] ids);
/**
* 根据id查询设备组
*
* @return
*/
@GetMapping("/deviceGroup/listDeviceGroupById")
ResultBean<List<EduAttendanceDeviceGroup>> listDeviceGroupById(@RequestParam("ids") Long[] ids);
/**
* 更新设备在线状态
*/
@GetMapping("/in/device/updateDeviceStatus")
ResultBean updateDeviceStatus();
/**aaaaaa
* 校时所有设备
*/
@GetMapping("/in/device/timingAllDevice")
ResultBean timingAllDevice();
}
@@ -1,19 +0,0 @@
package com.yida.data.attendance.feign;
import com.yida.data.attendance.fallback.RemoteAttendanceResultServiceFallback;
import com.yida.data.common.core.common.ResultBean;
import com.yida.data.common.core.entity.constant.FebsServerConstant;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
@FeignClient(value = FebsServerConstant.EDU_ATTENDANCE, contextId = "attendanceResultClient",
fallbackFactory = RemoteAttendanceResultServiceFallback.class)
public interface RemoteAttendanceResultService {
@GetMapping("/in/attendanceResult/initAttendanceResult")
ResultBean initAttendanceResult();
@GetMapping("/in/attendanceResult/attendanceNotice")
ResultBean attendanceNotice();
}
@@ -1,81 +0,0 @@
package com.yida.data.attendance.feign;
import com.yida.data.attendance.dto.AddLeaveRequestStrategyDTO;
import com.yida.data.attendance.fallback.RemoteAttendanceDeviceServiceFallback;
import com.yida.data.common.core.common.ResultBean;
import com.yida.data.common.core.entity.constant.FebsServerConstant;
import com.yida.data.common.core.entity.user.EduFaceGroupStrategy;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@FeignClient(value = FebsServerConstant.EDU_ATTENDANCE, contextId = "attendanceStrategyServiceClient",
fallbackFactory = RemoteAttendanceDeviceServiceFallback.class)
public interface RemoteAttendanceStrategyService {
/**
* 保存策略并绑定人员信息
*
* @param eduFaceGroupStrategy 人脸组-策略信息
* @return com.yida.data.common.core.common.ResultBean<java.lang.String>
* @author ZYJ
* @date 2022/12/13 10:51
*/
@PostMapping("/in/deviceStrategy/saveStrategyAndUser")
ResultBean<String> saveStrategyAndUser(@RequestBody EduFaceGroupStrategy eduFaceGroupStrategy);
/**
* 删除策略
*
* @param eduFaceGroupStrategy 人脸策略信息
* @return com.yida.data.common.core.common.ResultBean<java.lang.String>
* @author ZYJ
* @date 2022/12/21 15:44
*/
@PostMapping("/in/deviceStrategy/deleteStrategy")
ResultBean<String> deleteStrategy(@RequestBody EduFaceGroupStrategy eduFaceGroupStrategy);
/**
* 绑定对应的人员-策略信息
*
* @param eduFaceGroupStrategy 人脸策略信息
* @return com.yida.data.common.core.common.ResultBean<java.lang.String>
* @author ZYJ
* @date 2022/12/22 16:25
*/
@PostMapping("/in/deviceStrategy/bindUserStrategy")
ResultBean<String> bindUserStrategy(@RequestBody EduFaceGroupStrategy eduFaceGroupStrategy);
/**
* 解绑对应的人员-策略信息
*
* @param eduFaceGroupStrategy 人脸策略信息
* @return com.yida.data.common.core.common.ResultBean<java.lang.String>
* @author ZYJ
* @date 2022/12/26 10:16
*/
@PostMapping("/in/deviceStrategy/unBindUserStrategy")
ResultBean<String> unBindUserStrategy(@RequestBody EduFaceGroupStrategy eduFaceGroupStrategy);
/**
* 删除并保存策略(包含人员信息)
*
* @param eduFaceGroupStrategy 人脸策略信息
* @return com.yida.data.common.core.common.ResultBean<java.lang.String>
* @author ZYJ
* @date 2023/1/9 15:12
*/
@PostMapping("/in/deviceStrategy/deleteAndSaveStrategy")
ResultBean<String> deleteAndSaveStrategy(@RequestBody EduFaceGroupStrategy eduFaceGroupStrategy);
/**
* 添加请假类型短策略
*
* @param dto 添加请假类型短策略请求类
* @return com.yida.data.common.core.common.ResultBean<java.lang.String>
* @author ZYJ
* @date 2023/2/2 16:00
*/
@PostMapping("/in/deviceStrategy/addLeaveRequestStrategy")
ResultBean<String> addLeaveRequestStrategy(@RequestBody AddLeaveRequestStrategyDTO dto);
}
@@ -1,15 +0,0 @@
package com.yida.data.attendance.feign;
import com.yida.data.attendance.fallback.RemoteUserStrategyServiceFallback;
import com.yida.data.common.core.common.ResultBean;
import com.yida.data.common.core.entity.constant.FebsServerConstant;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
@FeignClient(value = FebsServerConstant.EDU_ATTENDANCE, contextId = "remoteUserStrategyServiceClient",
fallbackFactory = RemoteUserStrategyServiceFallback.class)
public interface RemoteUserStrategyService {
@GetMapping("/in/eduUserStrategy/checkOverTimeUserStrategy")
ResultBean<String> checkOverTimeUserStrategy();
}
@@ -1,59 +0,0 @@
package com.yida.data.attendance.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.List;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
@Data
public class AttdanceResultDetailVO {
@ApiModelProperty("主键ID")
private Long id;
@ApiModelProperty("用户主键ID")
private Long userId;
@ApiModelProperty("姓名")
private String name;
@ApiModelProperty("学号/手机号")
private String number;
@ApiModelProperty("部门名称")
private String deptName;
@ApiModelProperty("打卡规则")
private String ruleName;
@ApiModelProperty("打卡规则ID")
private Long ruleId;
@ApiModelProperty("打卡规则时段ID")
private Long ruleTimeId;
@ApiModelProperty("打卡规则时段名称")
private String ruleTimeName;
// @ApiModelProperty("打卡明细")
// List<DetailVO> detailVOList;
@ApiModelProperty("日期")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private LocalDate attendanceDate;
@ApiModelProperty("星期")
private Integer week;
@ApiModelProperty("上班打卡状态;0正常,1异常")
private Integer startStatus;
@ApiModelProperty("上班打卡时间")
private LocalTime startRealTime;
@ApiModelProperty("下班打卡状态:0正常,1异常")
private Integer endStatus;
@ApiModelProperty("下班打卡时间")
private LocalTime endRealTime;
@ApiModelProperty("是否需要打卡考勤,0是,1否")
private Integer needAttendance;
@ApiModelProperty("打卡类型:0=需要上下班打卡,1=只需要打卡一次(取上班打卡时间与状态)")
private Integer modelType;
}
@@ -1,30 +0,0 @@
package com.yida.data.attendance.vo;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AttdanceResultTotalVO {
@ApiModelProperty("请假人数")
private Integer leaveNumber;
@ApiModelProperty("正常人数")
private Integer normalNumber;
@ApiModelProperty("晚归人数")
private Integer lateNumber;
@ApiModelProperty("异常晚归人数")
private Integer abLateNumber;
@ApiModelProperty("缺卡人数")
private Integer missNumber;
}
@@ -1,58 +0,0 @@
package com.yida.data.attendance.vo;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import lombok.Data;
@Data
public class AttdanceResultVO {
@ApiModelProperty("主键ID")
private Long id;
@ApiModelProperty("用户主键ID")
private Long userId;
@ApiModelProperty("开始日期")
private LocalDate startDate;
@ApiModelProperty("结束日期")
private LocalDate endDate;
@ApiModelProperty("开始星期")
private String startWeek;
@ApiModelProperty("结束星期")
private String endWeek;
@ApiModelProperty("姓名")
private String name;
@ApiModelProperty("学号/手机号")
private String number;
@ApiModelProperty("部门名称")
private String deptName;
@ApiModelProperty("打卡规则")
private String ruleName;
@ApiModelProperty("打卡规则ID")
private Long ruleId;
@ApiModelProperty("打卡规则时段")
private String ruleTimeName;
@ApiModelProperty("打卡规则时段ID")
private Long ruleTimeId;
@ApiModelProperty("应打卡天数")
private Integer needDays;
@ApiModelProperty("实际打卡天数")
private Integer realDays;
@ApiModelProperty("正常天数")
private Integer normalDays;
@ApiModelProperty("异常天数")
private Integer abnormalDays;
@ApiModelProperty("异常次数")
private Integer abnormalNumber;
@ApiModelProperty("迟到次数")
private Integer lateNumber;
@ApiModelProperty("迟到时长:单位分")
private Integer lateTime;
@ApiModelProperty("早退次数")
private Integer leaveNumber;
@ApiModelProperty("早退时长:单位分")
private Integer leaveTime;
@ApiModelProperty("旷工次数")
private Integer outNumber;
@ApiModelProperty("缺卡次数")
private Integer missNumber;
}
@@ -1,31 +0,0 @@
package com.yida.data.attendance.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 考勤人脸对比返回类
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "RosterFaceMatchVO", description = "考勤人脸对比返回类")
public class AttendanceFaceMatchVO implements Serializable {
private static final long serialVersionUID = 1474013091202762132L;
@ApiModelProperty("0-对比成功,1-对比不成功")
private Integer valid;
@ApiModelProperty("对比分数")
private String score;
@ApiModelProperty("对比成功的图片")
private String url;
}
@@ -1,50 +0,0 @@
package com.yida.data.attendance.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@ApiModel("通行记录导出实体对象")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class AttendanceRecordExcelVO {
@ApiModelProperty("姓名")
@ExcelProperty(order = 0, value = "姓名")
private String studentName;
@ApiModelProperty("学号/手机号")
@ExcelProperty(order = 1, value = "学号/手机号")
private String studentNumber;
@ApiModelProperty("校区")
@ExcelProperty(order = 2, value = "校区")
private String campusName;
@ApiModelProperty("学段")
@ExcelProperty(order = 3, value = "学段")
private String sectionName;
@ApiModelProperty("年级")
@ExcelProperty(order = 4, value = "年级")
private String gradeName;
@ApiModelProperty("班级")
@ExcelProperty(order = 5, value = "班级")
private String className;
@ApiModelProperty("通行时间")
@ExcelProperty(order = 6, value = "通行时间")
private String attendanceTime;
@ApiModelProperty("通行位置")
@ExcelProperty(order = 7, value = "通行位置")
private String attendanceDevice;
}
@@ -1,49 +0,0 @@
package com.yida.data.attendance.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AttendanceRuleAdminUserVO {
@ApiModelProperty(value = "主键id")
private Long id;
/**
* 0-教职工,1学生
*/
@ApiModelProperty(value = "0-教职工,1学生")
private Integer userType;
/**
* 管理部门ID
*/
@ApiModelProperty(value = "管理部门ID")
private Long deptId;
/**
* 学校id
*/
@ApiModelProperty(value = "学校id")
private String deptName;
/**
* 考勤规则名称
*/
@ApiModelProperty(value = "考勤人员Id")
private Long staffId;
/**
* 考勤规则名称
*/
@ApiModelProperty(value = "考勤人员名称")
private String staffName;
}
@@ -1,56 +0,0 @@
package com.yida.data.attendance.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yida.data.attendance.dto.AddAttendanceRuleAddressDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleAdminDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleDeviceDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleObjDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleRemindDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleSpecialDateDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleTimeDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleWhiteListDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleWifiDTO;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AttendanceRuleUserVO {
@ApiModelProperty(value = "主键id")
private Long id;
/**
* 0-教职工打卡,1学生上学考勤,2学生宿舍考勤
*/
@ApiModelProperty(value = "0-教职工打卡,1学生上学考勤")
private Integer userType;
/**
* 学校id
*/
@ApiModelProperty(value = "学校id")
private String deptName;
/**
* 考勤规则名称
*/
@ApiModelProperty(value = "考勤人员Id")
private Long userId;
/**
* 考勤规则名称
*/
@ApiModelProperty(value = "考勤人员名称")
private String userName;
}
@@ -1,203 +0,0 @@
package com.yida.data.attendance.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yida.data.attendance.dto.AddAttendanceRuleAddressDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleAdminDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleDeviceDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleObjDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleRemindDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleSpecialDateDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleTimeDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleWhiteListDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleWifiDTO;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AttendanceRuleVO {
@ApiModelProperty(value = "主键id")
private Long id;
/**
*
*/
@ApiModelProperty(value = "")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createDate;
/**
*
*/
@ApiModelProperty(value = "")
private Long createId;
/**
*
*/
@ApiModelProperty(value = "")
private String createName;
/**
*
*/
@ApiModelProperty(value = "")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateDate;
/**
*
*/
@ApiModelProperty(value = "")
private Long updateId;
/**
*
*/
@ApiModelProperty(value = "")
private Integer delFlag;
/**
* 学校id
*/
@ApiModelProperty(value = "学校id")
private Long schoolId;
/**
* 考勤规则名称
*/
@ApiModelProperty(value = "考勤规则名称")
private String name;
/**
* 0-教职工打卡,1学生上学考勤,2学生宿舍考勤
*/
@ApiModelProperty(value = "0-教职工打卡,1学生上学考勤,2学生宿舍考勤")
private Integer userType;
/**
* 0-固定上下班时间模式,1自由打卡模式
*/
@ApiModelProperty(value = "0-固定上下班时间模式,1自由打卡模式")
private Integer type;
/**
* 打卡日期,1-周一,2-周二....多个用','连接
*/
@ApiModelProperty(value = "打卡日期,1-周一,2-周二....多个用','连接")
private String week;
/**
* 法定节假日是否打卡,0-是,1-否
*/
@ApiModelProperty(value = "法定节假日是否打卡,0-是,1-否")
private Integer holidayAttendance;
/**
* 管理员打卡规则内容权限,0-无,1-有
*/
@ApiModelProperty(value = "管理员打卡规则内容权限,0-无,1-有")
private Integer roleRule;
/**
* 管理员打卡人员与白名单权限,0-无,1-有
*/
@ApiModelProperty(value = "管理员打卡人员与白名单权限,0-无,1-有")
private Integer roleUser;
/**
* 管理员节假日与特殊日期权限,0-无,1-有
*/
@ApiModelProperty(value = "管理员节假日与特殊日期权限,0-无,1-有")
private Integer roleDate;
/**
* 管理员打卡提醒权限,0-无,1-有
*/
@ApiModelProperty(value = "管理员打卡提醒权限,0-无,1-有")
private Integer roleRemind;
/**
* 打卡是必须拍照 0-无,1-必须
*/
@ApiModelProperty(value = "打卡是必须拍照 0-无,1-必须")
private Integer photoTake;
/**
* 打卡时必须人脸识别0-无,1-必须
*/
@ApiModelProperty(value = "打卡时必须人脸识别0-无,1-必须")
private Integer faceTake;
/**
* 填写备注时必须拍照0-无,1-必须
*/
@ApiModelProperty(value = "填写备注时必须拍照0-无,1-必须")
private Integer photoRemark;
/**
* 异常打卡可以提交申请,审批后可修正打卡状态
*/
@ApiModelProperty(value = "异常打卡可以提交申请,审批后可修正打卡状态")
private Integer applyAmendment;
/**
* 每月补卡次数
*/
@ApiModelProperty(value = "每月补卡次数")
private Integer reissueNum;
/**
* 启用状态:0-未启用,1-已启用
*/
@ApiModelProperty(value = "启用状态:0-未启用,1-已启用")
private Integer status;
/**
* 每月补卡截止日期
*/
@ApiModelProperty(value = "每月补卡截止日期")
private Integer reissueEndDate;
@ApiModelProperty(value = "有效开始时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private LocalDate startDate;
@ApiModelProperty(value = "有效结束时间")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private LocalDate endDate;
@ApiModelProperty(value = "打卡提醒")
private List<AddAttendanceRuleRemindDTO> remindDTOList;
@ApiModelProperty(value = "打卡对象")
private List<AddAttendanceRuleObjDTO> attendanceRuleObjList;
@ApiModelProperty(value = "特殊日期")
private List<AddAttendanceRuleSpecialDateDTO> specialDateDTOList;
@ApiModelProperty(value = "白名单")
private List<AddAttendanceRuleWhiteListDTO> whiteListDTOList;
@ApiModelProperty(value = "打卡设备")
private List<AddAttendanceRuleDeviceDTO> deviceDTOList;
@ApiModelProperty(value = "打卡wifi")
private List<AddAttendanceRuleWifiDTO> wifiDTOList;
@ApiModelProperty(value = "打卡地点")
private List<AddAttendanceRuleAddressDTO> addressDTOList;
@ApiModelProperty(value = "打卡时间段")
private List<AddAttendanceRuleTimeDTO> timeDTOList;
@ApiModelProperty(value = "管理员")
private List<AddAttendanceRuleAdminDTO> adminDTOList;
}
@@ -1,39 +0,0 @@
package com.yida.data.attendance.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("查询当前月份考勤状态返回结果类")
public class AttendanceStatusByMonthVO {
@ApiModelProperty("打卡规则ID")
private Long ruleId;
@ApiModelProperty("打卡时间段ID")
private Long ruleTimeId;
@ApiModelProperty("日期")
private LocalDate date;
@ApiModelProperty("上班考勤状态:0正常,1异常")
private Integer startStatus;
@ApiModelProperty("下班考勤状态:0正常,1异常")
private Integer endStatus;
@ApiModelProperty("总考勤状态:0正常,1异常,2请假,3休假,4无")
private Integer Status;
@ApiModelProperty("考勤类型:0-固定上下班时间模式,1自由打卡模式")
private Integer attType;
}
@@ -1,32 +0,0 @@
package com.yida.data.attendance.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDateTime;
import java.time.LocalTime;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "AttendanceUserCheckInVO", description = "wifi打卡返回类")
public class AttendanceUserCheckInVO {
@ApiModelProperty(value = "打卡状态:0正常,2迟到,3早退,7晚归,8异常晚归")
private Integer status;
@ApiModelProperty(value = "当前打卡时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime checkInDateTime;
@ApiModelProperty(value = "人脸认证图片地址")
private String avatar;
}
@@ -1,132 +0,0 @@
package com.yida.data.attendance.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yida.data.attendance.dto.AddAttendanceRuleAddressDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleAdminDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleDeviceDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleObjDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleRemindDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleSpecialDateDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleTimeDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleWhiteListDTO;
import com.yida.data.attendance.dto.AddAttendanceRuleWifiDTO;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AttendanceWifiVO {
@ApiModelProperty(value = "打卡规则ID")
private Long ruleId;
@ApiModelProperty(value = "打卡规则类型,0-固定上下班时间模式,1自由打卡模式")
private Integer ruleType;
@ApiModelProperty(value = "打卡时段ID")
private Long ruleTimeId;
@ApiModelProperty(value = "打卡规则名称")
private String ruleName;
@ApiModelProperty(value = "打卡是必须拍照人脸识别 0-无,1-必须")
private Integer ruleFaceTake;
/**
* 是否WiFi打卡范围 0否,1是
*/
@ApiModelProperty(value = "是否WiFi打卡范围 0否,1是")
private Integer wifiRange;
/**
* wifi名称
*/
@ApiModelProperty(value = "wifi名称")
private String wifiName;
/**
* BSSID
*/
@ApiModelProperty(value = "BSSID")
private String wifiBssid;
/**
* 上班时间
*/
@ApiModelProperty(value = "上班时间")
@DateTimeFormat(pattern = "HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "HH:mm:ss")
private LocalTime startTime;
/**
* 实际上班时间
*/
@ApiModelProperty(value = "实际上班时间")
@DateTimeFormat(pattern = "HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "HH:mm:ss")
private LocalTime startRealTime;
/**
* 上班考勤状态:0-正常,1-异常
*/
@ApiModelProperty(value = "上班考勤状态:0-正常,1-异常")
private Integer startStatus;
/**
* 上班打卡照片
*/
@ApiModelProperty(value = "上班打卡照片")
private String startImg;
/**
* 下班时间
*/
@ApiModelProperty(value = "下班时间")
@DateTimeFormat(pattern = "HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "HH:mm:ss")
private LocalTime endTime;
/**
* 实际下班时间
*/
@ApiModelProperty(value = "实际下班时间")
@DateTimeFormat(pattern = "HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "HH:mm:ss")
private LocalTime endRealTime;
/**
* 下班考勤状态:0-正常,1-异常
*/
@ApiModelProperty(value = "下班考勤状态:0-正常,1-异常")
private Integer endStatus;
/**
* 下班打卡照片
*/
@ApiModelProperty(value = "下班打卡照片")
private String endImg;
/**
* 本次打卡所属:1签到,2签退
*/
@ApiModelProperty(value = "本次打卡所属:1签到,2签退,3休息不用打卡,4,不在打卡时间段内,5无打卡规则,6不在范围内,7无权限,非智慧校园用户")
private Integer status;
}
@@ -1,19 +0,0 @@
package com.yida.data.attendance.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("冲突规则")
public class ConflictRuleVO {
@ApiModelProperty("规则Id")
private Long ruleId;
@ApiModelProperty("规则名称")
private String ruleName;
@ApiModelProperty("部门id")
private Long deptId;
@ApiModelProperty("部门名称")
private String deptName;
}
@@ -1,18 +0,0 @@
package com.yida.data.attendance.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import lombok.Data;
@Data
@ApiModel("查询管理员管理用户统计状态-用于日历展示")
public class DateStatusVO {
@ApiModelProperty("日期")
private LocalDate date;
@ApiModelProperty("总考勤状态:0正常,1异常,2请假,3休假,4无")
private Integer Status;
}
@@ -1,25 +0,0 @@
package com.yida.data.attendance.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.time.LocalDate;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DayReportDataVO {
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private LocalDate date;
private String deptName;
private Integer totalNum;
private Integer abNum;
private String score;
private Integer requestNum;
}
@@ -1,35 +0,0 @@
package com.yida.data.attendance.vo;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import java.time.LocalTime;
import lombok.Data;
@Data
public class DetailVO {
@ApiModelProperty("日期")
private LocalDate date;
@ApiModelProperty("星期")
private Integer week;
@ApiModelProperty("上班打卡状态;0正常,1异常")
private Integer startStatus;
@ApiModelProperty("上班打卡时间")
private LocalTime startRealTime;
@ApiModelProperty("下班打卡状态:0正常,1异常")
private Integer endStatus;
@ApiModelProperty("下班打卡时间")
private LocalTime endRealTime;
@ApiModelProperty("是否需要打卡考勤,0是,1否")
private Integer needAttendance;
@ApiModelProperty("打卡类型:0=需要上下班打卡,1=只需要打卡一次(取上班打卡时间与状态)")
private Integer modelType;
}
@@ -1,34 +0,0 @@
package com.yida.data.attendance.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 设备数量统计返回类
*
* @author ZYJ
* @date 2021/10/8
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "DeviceNumberVO", description = "设备数量统计返回类")
public class DeviceNumberVO implements Serializable {
private static final long serialVersionUID = -7261215589760191372L;
@ApiModelProperty(value = "设备总数量")
private Long totalNumber;
@ApiModelProperty(value = "在线设备数量")
private Long onlineNumber;
@ApiModelProperty(value = "离线设备数量")
private Long offlineNumber;
}
@@ -1,14 +0,0 @@
package com.yida.data.attendance.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class DeviceOrDeviceGroupVO {
private Long id;
@ApiModelProperty("0-设备,1-设备组")
private Integer type;
private String name;
}
@@ -1,52 +0,0 @@
package com.yida.data.attendance.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDateTime;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
@ApiModel("设备信息")
@Data
public class DeviceVO {
private Long id;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createDate;
@ApiModelProperty("设备名称")
private String name;
@ApiModelProperty("设备编号")
private String sn;
@ApiModelProperty("设备mac地址")
private String macAddress;
@ApiModelProperty("设备厂商")
private String deviceType;
@ApiModelProperty("ip")
private String ip;
@ApiModelProperty("学校id")
private Long schoolId;
@ApiModelProperty("学校名称")
private String schoolName;
@ApiModelProperty("区域类型,0-进门,1-出门")
private Integer zoneScope;
@ApiModelProperty("0-校门,1-宿舍")
private Integer type;
@ApiModelProperty("设备在线状态,0-在线,1-未在线")
private Integer state;
@ApiModelProperty("分组名称")
private String groupName;
}
@@ -1,35 +0,0 @@
package com.yida.data.attendance.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class DownLoadAttendanceResultVO {
@ApiModelProperty("操作标识")
private String key;
@ApiModelProperty("文件名称")
private String fileName;
@ApiModelProperty("进度 0-100")
private Integer percent;
@ApiModelProperty("是否下载完成,0-否,1-是")
private Integer finish;
@ApiModelProperty("下载总数")
private Integer totalNum;
@ApiModelProperty("当前下载到第几个")
private Integer currentNum;
@ApiModelProperty("文件路径")
private String filePath;
}
@@ -1,30 +0,0 @@
package com.yida.data.attendance.vo;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ImportBssidDataVO implements Serializable {
private static final long serialVersionUID = 6853343450276063448L;
@ApiModelProperty("本次操作标识")
private String wifiName;
@ApiModelProperty("进度 0-100")
private Integer percent;
@ApiModelProperty("是否下载完成,0-否,1-是")
private Integer finish;
@ApiModelProperty("错误文件路径")
private String filePath;
}
@@ -1,18 +0,0 @@
package com.yida.data.attendance.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.models.auth.In;
import lombok.Data;
@Data
@ApiModel("打卡明细-统计-返回类")
public class ManageListUserAttendanceDetailTotalVO {
@ApiModelProperty("总数")
private Integer totalNum;
@ApiModelProperty("异常人数")
private Integer abNormalNum;
}
@@ -1,69 +0,0 @@
package com.yida.data.attendance.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("打卡明细-返回类")
public class ManageListUserAttendanceDetailVO {
@ApiModelProperty("用户Id")
private Long userId;
@ApiModelProperty("用户姓名")
private String userName;
@ApiModelProperty("用户姓名")
private String deptName;
@ApiModelProperty("宿舍")
private String dormName;
@ApiModelProperty("用户头像")
private String avatar;
@ApiModelProperty("学生类型,0-走读,1-住宿")
private Integer studentType;
@ApiModelProperty("用户类型:0职工,1学生")
private Integer userType;
@ApiModelProperty("打卡规则Id")
private Long ruleId;
@ApiModelProperty("打卡规则")
private String ruleName;
@ApiModelProperty("迟到次数")
private Integer lateNum;
@ApiModelProperty("晚归次数")
private Integer lateDormNum;
@ApiModelProperty("晚归分钟数")
private Integer lateDormMinute;
@ApiModelProperty("异常晚归次数")
private Integer aBLateDormNum;
@ApiModelProperty("异常晚归分钟数")
private Integer aBLateDormMinute;
@ApiModelProperty("早退次数")
private Integer leaveNum;
@ApiModelProperty("缺卡次数")
private Integer missNum;
@ApiModelProperty("请假次数")
private Integer requestNum;
@ApiModelProperty("迟到分钟数")
private Integer lateMinute;
@ApiModelProperty("早退分钟数")
private Integer leaveMinute;
}
@@ -1,41 +0,0 @@
package com.yida.data.attendance.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.Data;
@Data
@ApiModel("管理员管理用户考勤统计-返回类")
public class ManageListUserVO {
@ApiModelProperty("管理部门名称")
private Long deptId;
@ApiModelProperty("管理部门名称")
private Integer deptType;
@ApiModelProperty("管理部门名称")
private String deptName;
@ApiModelProperty("正常打卡人数")
private Integer normalNum;
@ApiModelProperty("异常打卡人数")
private Integer abNormalNum;
@ApiModelProperty("总打卡人数")
private Integer totalNum;
@ApiModelProperty("迟到人数")
private Integer lateUserNum;
@ApiModelProperty("早退次数")
private Integer leaveUserNum;
@ApiModelProperty("缺卡人数")
private Integer missUserNum;
@ApiModelProperty("请假人数")
private Integer requestUserNum;
}
@@ -1,11 +0,0 @@
package com.yida.data.attendance.vo;
import lombok.Data;
@Data
public class OnlineCountVO {
private Integer onlineNum;
private Integer offlineNum;
}
@@ -1,23 +0,0 @@
package com.yida.data.attendance.vo;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@ApiModel("各类型考勤状态数量")
@Data
public class StaRecordCountVO {
private Integer studentNormal;
private Integer studentLate;
private Integer studentNotArrive;
private Integer studentRequest;
private Integer staffNormal;
private Integer staffLate;
private Integer staffNotArrive;
}
@@ -1,13 +0,0 @@
package com.yida.data.attendance.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class StaffIdentityVO {
@ApiModelProperty("学生管理员")
private boolean manageStudent;
@ApiModelProperty("职工管理员")
private boolean manageStaff;
}
@@ -1,98 +0,0 @@
package com.yida.data.attendance.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@ApiModel("学生宿舍考勤日报/周报/月报导出实体对象")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class StudentDormAttendanceDayReportExcelVO {
@ApiModelProperty("考勤日期")
@ExcelProperty(order = 1, value = "考勤日期")
private String attendanceTime;
@ApiModelProperty("校区")
@ExcelProperty(order = 2, value = "校区")
private String campusName;
@ApiModelProperty("学段")
@ExcelProperty(order = 3, value = "学段")
private String sectionName;
@ApiModelProperty("年级")
@ExcelProperty(order = 4, value = "年级")
private String gradeName;
@ApiModelProperty("班级")
@ExcelProperty(order = 5, value = "班级")
private String className;
@ApiModelProperty("应打卡人数")
@ExcelProperty(order = 6, value = "应打卡人数")
private String needNum;
@ApiModelProperty("实际打卡人数")
@ExcelProperty(order = 7, value = "实际打卡人数")
private String realNum;
@ApiModelProperty("请假人数")
@ExcelProperty(order = 8, value = "请假人数")
private String requestNum;
@ApiModelProperty("正常打卡人数")
@ExcelProperty(order = 9, value = "正常打卡人数")
private String normalNum;
@ApiModelProperty("旷宿人数")
@ExcelProperty(order = 10, value = "旷宿人数")
private String missNum;
@ApiModelProperty("晚归打卡人数")
@ExcelProperty(order = 11, value = "晚归打卡人数")
private String lateNum;
@ApiModelProperty("异常晚归打卡人数")
@ExcelProperty(order = 12, value = "异常晚归打卡人数")
private String abLateNum;
@ApiModelProperty("出勤率")
@ExcelProperty(order = 13, value = "出勤率")
private String attendanceRate;
// @ApiModelProperty("应打卡次数")
// @ExcelProperty(order = 13, value = "应打卡次数")
// private String needDay;
//
// @ApiModelProperty("实际打卡次数")
// @ExcelProperty(order = 14, value = "实际打卡次数")
// private String realDay;
//
// @ApiModelProperty("正常打卡次数")
// @ExcelProperty(order = 15, value = "正常打卡次数")
// private String normalDay;
//
// @ApiModelProperty("旷宿次数")
// @ExcelProperty(order = 16, value = "旷宿次数")
// private String missDay;
//
// @ApiModelProperty("晚归打卡次数")
// @ExcelProperty(order = 17, value = "晚归打卡次数")
// private String lateDay;
//
// @ApiModelProperty("异常晚归打卡次数")
// @ExcelProperty(order = 18, value = "异常晚归打卡次数")
// private String abLateDay;
//
// @ApiModelProperty("打卡率")
// @ExcelProperty(order = 19, value = "打卡率")
// private String checkRate;
}
@@ -1,68 +0,0 @@
package com.yida.data.attendance.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.yida.data.common.core.converter.LocalDateConverter;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@ApiModel("学生宿舍考勤结果导出实体对象")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class StudentDormAttendanceResultExcelVO {
@ApiModelProperty("姓名")
@ExcelProperty(order = 0, value = "姓名")
private String studentName;
@ApiModelProperty("学号")
@ExcelProperty(order = 1, value = "学号")
private String studentNumber;
@ApiModelProperty("校区")
@ExcelProperty(order = 2, value = "校区")
private String campusName;
@ApiModelProperty("学段")
@ExcelProperty(order = 3, value = "学段")
private String sectionName;
@ApiModelProperty("年级")
@ExcelProperty(order = 4, value = "年级")
private String gradeName;
@ApiModelProperty("班级")
@ExcelProperty(order = 5, value = "班级")
private String className;
@ApiModelProperty("考勤规则")
@ExcelProperty(order = 6, value = "考勤规则")
private String ruleName;
@ApiModelProperty("考勤日期")
@ExcelProperty(order = 7, value = "考勤日期")
private String attendanceDate;
@ApiModelProperty("星期")
@ExcelProperty(order = 8, value = "星期")
private String attendanceWeek;
@ApiModelProperty("考勤时段")
@ExcelProperty(order = 9, value = "考勤时段")
private String attendanceTime;
@ApiModelProperty("考勤结果")
@ExcelProperty(order = 10, value = "考勤结果")
private String status;
@ApiModelProperty("打卡时间")
@ExcelProperty(order = 11, value = "打卡时间")
private String attendanceRealTime;
}
@@ -1,66 +0,0 @@
package com.yida.data.attendance.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@ApiModel("学生宿舍考勤结果导出实体对象")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class StudentDormAttendanceResultTotalExcelVO {
@ApiModelProperty("姓名")
@ExcelProperty(order = 0, value = "姓名")
private String studentName;
@ApiModelProperty("学号")
@ExcelProperty(order = 1, value = "学号")
private String studentNumber;
@ApiModelProperty("校区")
@ExcelProperty(order = 2, value = "校区")
private String campusName;
@ApiModelProperty("学段")
@ExcelProperty(order = 3, value = "学段")
private String sectionName;
@ApiModelProperty("年级")
@ExcelProperty(order = 4, value = "年级")
private String gradeName;
@ApiModelProperty("班级")
@ExcelProperty(order = 5, value = "班级")
private String className;
@ApiModelProperty("应打卡次数")
@ExcelProperty(order = 6, value = "应打卡次数")
private String needDay;
@ApiModelProperty("实际打卡次数")
@ExcelProperty(order = 7, value = "实际打卡次数")
private String realDay;
@ApiModelProperty("正常打卡次数")
@ExcelProperty(order = 8, value = "正常打卡次数")
private String normalDay;
@ApiModelProperty("旷宿次数")
@ExcelProperty(order = 9, value = "旷宿次数")
private String missDay;
@ApiModelProperty("晚归打卡次数")
@ExcelProperty(order = 10, value = "晚归打卡次数")
private String lateDay;
@ApiModelProperty("异常晚归打卡次数")
@ExcelProperty(order = 11, value = "异常晚归打卡次数")
private String abLateDay;
}
@@ -1,24 +0,0 @@
package com.yida.data.attendance.vo;
import com.carrotsearch.hppc.LongDeque;
import com.yida.data.common.core.entity.attendance.attendance.AttendanceResult;
import com.yida.data.common.core.entity.attendance.attendance.AttendanceRule;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.Data;
@Data
@ApiModel("获取某日用户考勤记录返回类")
public class UserAttendanceResultByDayVO {
@ApiModelProperty("打卡规则")
private AttendanceRuleVO rule;
@ApiModelProperty("累计打卡时长,单位分钟")
private Long attendanceTime;
@ApiModelProperty("打卡结果")
private List<AttendanceResult> result;
}
@@ -1,55 +0,0 @@
package com.yida.data.attendance.vo;
import com.yida.data.common.core.entity.attendance.attendance.AttendanceResult;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@ApiModel("获取某时间段内用户考勤结果返回类")
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserAttendanceResultByTimeSlotVO {
@ApiModelProperty("正常打卡天数")
private Integer normalDays;
@ApiModelProperty("异常打卡天数")
private Integer abNormalDays;
@ApiModelProperty("总打卡天数")
private Integer totalDays;
@ApiModelProperty("迟到次数")
private Integer lateTimes;
@ApiModelProperty("早退次数")
private Integer leaveTimes;
@ApiModelProperty("缺卡次数")
private Integer missTimes;
// @ApiModelProperty("旷课次数")
// private Integer outTimes;
@ApiModelProperty("请假次数")
private Integer requestTimes;
@ApiModelProperty("打卡结果-迟到")
private List<UserAttendanceResultDayAndNumVO> lateList;
@ApiModelProperty("打卡结果-早退")
private List<UserAttendanceResultDayAndNumVO> leaveList;
@ApiModelProperty("打卡结果-缺卡")
private List<UserAttendanceResultDayAndNumVO> missList;
// @ApiModelProperty("打卡结果-旷课")
// private List<UserAttendanceResultDayAndNumVO> outList;
}
@@ -1,27 +0,0 @@
package com.yida.data.attendance.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
@Data
@ApiModel("获取某时间段内用户考勤结果-日期对应次数返回类")
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class UserAttendanceResultDayAndNumVO {
@ApiModelProperty("日期")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
private LocalDate attendanceDate;
@ApiModelProperty("次数")
private Integer num;
}
@@ -1,6 +0,0 @@
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.yida.data.attendance.fallback.RemoteAttendanceDeviceServiceFallback,\
com.yida.data.attendance.fallback.RemoteAttendanceStrategyServiceFallback,\
com.yida.data.attendance.fallback.RemoteAttendanceResultServiceFallback,\
com.yida.data.attendance.fallback.RemoteUserStrategyServiceFallback
@@ -1,86 +0,0 @@
<?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">
<parent>
<artifactId>attendance</artifactId>
<groupId>com.yida.data.attendance</groupId>
<version>2.2-RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>attendance-biz</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<!--mqtt-->
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>${paho.mqttv3.version}</version>
</dependency>
<dependency>
<groupId>com.yida.data.system</groupId>
<artifactId>febs-server-system-api</artifactId>
<version>${febs-cloud.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.yida.data.user</groupId>
<artifactId>edu-user-api</artifactId>
<version>${febs-cloud.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.yida.data.school</groupId>
<artifactId>edu-school-api</artifactId>
<version>${febs-cloud.version}</version>
<scope>compile</scope>
</dependency>
<!--通用工具-->
<dependency>
<groupId>com.yida.data.common</groupId>
<artifactId>edu-common</artifactId>
<version>${febs-cloud.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.yida.data.job</groupId>
<artifactId>febs-server-job-api</artifactId>
<version>${febs-cloud.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.yida.data.attendance</groupId>
<artifactId>attendance-api</artifactId>
<version>${febs-cloud.version}</version>
<scope>compile</scope>
</dependency>
<!--activemq-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependency>
<groupId>com.yida.data.server</groupId>
<artifactId>edu-card-server-api</artifactId>
<version>2.2-RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<outputDirectory>../../../febs-jar</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
</project>
@@ -1,29 +0,0 @@
package com.yida.data.attendance;
import cc.mrbird.febs.common.security.starter.annotation.EnableFebsCloudResourceServer;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.WebApplicationType;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
@EnableAsync
@EnableScheduling
@EnableFebsCloudResourceServer
@EnableFeignClients(basePackages = "com.yida.data")
@MapperScan("com.yida.data.attendance.mapper")
@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)
@EnableJms
public class AttendanceApplication {
public static void main(String[] args) {
new SpringApplicationBuilder(AttendanceApplication.class)
.web(WebApplicationType.SERVLET)
.run(args);
}
}
@@ -1,147 +0,0 @@
package com.yida.data.attendance.configure;
import cc.mrbird.febs.common.redis.service.RedisService;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.yida.data.attendance.dto.AddAttendanceRecordDTO;
import com.yida.data.attendance.service.AttendanceRecordService;
import com.yida.data.attendance.service.EduAttendanceDeviceService;
import com.yida.data.attendance.service.ErrorRecordMsgService;
import com.yida.data.common.core.entity.ErrorRecordMsg;
import com.yida.data.common.core.entity.ReceiveMsg;
import com.yida.data.common.core.entity.attendance.EduAttendanceDevice;
import com.yida.data.common.core.entity.constant.CachePrefixConstant;
import com.yida.data.common.core.entity.user.EduStaff;
import com.yida.data.common.core.entity.user.EduStudent;
import com.yida.data.common.core.enums.MsgChannel;
import com.yida.data.common.core.enums.RecordTypeEnum;
import com.yida.data.user.feign.RemoteStaffService;
import com.yida.data.user.feign.RemoteStudentService;
import java.time.LocalDateTime;
import java.util.Objects;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.annotation.JmsListener;
@RequiredArgsConstructor
@Slf4j
@Configuration
public class ActiveMqConfigure {
private final AttendanceRecordService attendanceRecordService;
private final RemoteStaffService remoteStaffService;
private final RemoteStudentService remoteStudentService;
private final RedisService redisService;
private final ErrorRecordMsgService errorRecordMsgService;
private final EduAttendanceDeviceService eduAttendanceDeviceService;
public static final String TOPIC = "mq.bfms.client.msg.topic";
private static final Snowflake SNOWFLAKE;
static {
SNOWFLAKE = new Snowflake(1L, 1L);
}
@JmsListener(destination = "mq.bfms.client.msg.topic")
public void consumeAttendance(String text) {
AddAttendanceRecordDTO dto = new AddAttendanceRecordDTO();
Long schoolId = null;
try {
// 保存接收消息到es
ReceiveMsg receiveMsg = new ReceiveMsg();
receiveMsg.setTopic(TOPIC);
receiveMsg.setMsg(text);
receiveMsg.setId(SNOWFLAKE.nextId());
receiveMsg.setChannel(MsgChannel.ACTIVE.getValue());
receiveMsg.setCreateDate(LocalDateTime.now());
redisService.lSet(CachePrefixConstant.RECEIVE_MSG, receiveMsg);
// 处理业务
JSONObject json = JSONUtil.parseObj(text);
String method = json.getStr("method");
if ("bfms.notifyFaceInfo".equals(method)) {
JSONObject data = json.getJSONObject("info");
// 设备号
String sn = data.getStr("channelId");
// 查询设备信息
EduAttendanceDevice attendanceDevice = eduAttendanceDeviceService.getOne(Wrappers.lambdaQuery(new EduAttendanceDevice())
.eq(EduAttendanceDevice::getSn, sn));
if (Objects.isNull(attendanceDevice)) {
log.error("设备信息不存在: {}", sn);
return;
}
schoolId = attendanceDevice.getSchoolId();
dto.setSchoolId(attendanceDevice.getSchoolId());
JSONArray jsonArray = data.getJSONArray("similarFaces");
if (Objects.isNull(jsonArray)) {
return;
}
JSONObject personData = (JSONObject) jsonArray.get(0);
String personId = personData.getStr("personId");
Integer personType = personData.getInt("personTypeId");
// DealRecordDTO dto = new DealRecordDTO();
String pictureUrl = data.getStr("pictureUrl");
String[] pictureUrls = pictureUrl.split("\\|");
if (pictureUrls.length < 2) {
// 图片未上传 不处理该数据
return;
}
dto.setPicUrl(pictureUrls[1]);
dto.setCreateTime(LocalDateTimeUtil.of(data.getLong("beginTime") * 1000));
dto.setDeviceSn(sn);
Object userId = redisService.hget(CachePrefixConstant.USER_DAHUA_USER, personId);
// 查询用户
if (personType == 2) {
if (userId == null) {
EduStaff staff = remoteStaffService.getStaffByDahuaNoPermission(personId).getData();
if (staff != null) {
dto.setUserId(staff.getId());
redisService.hset(CachePrefixConstant.USER_DAHUA_USER, personId, dto.getUserId());
}
} else {
dto.setUserId(Long.valueOf(userId.toString()));
}
dto.setUserType(0);
} else if (personType == 1) {
if (userId == null) {
EduStudent student = remoteStudentService.getStudentByDahuaNoPermission(personId).getData();
if (student != null) {
dto.setUserId(student.getId());
redisService.hset(CachePrefixConstant.USER_DAHUA_USER, personId, dto.getUserId());
}
} else {
dto.setUserId(Long.valueOf(userId.toString()));
}
dto.setUserType(1);
}
dto.setMsgChannel(MsgChannel.ACTIVE);
if (dto.getUserId() != null) {
log.info("大华人脸识别信息:[{}]", dto);
attendanceRecordService.addRecord(dto);
}
}
} catch (Exception e) {
log.error("处理大华人脸推送错误,接收消息:[{}]", text, e);
errorRecordMsgService.saveMsg(ErrorRecordMsg.builder()
// .id(SNOWFLAKE.nextId())
.createDate(LocalDateTime.now())
.schoolId(schoolId)
.msg(JSONUtil.toJsonStr(dto))
.topic(TOPIC)
.channel(MsgChannel.ACTIVE.getValue())
.recordType(RecordTypeEnum.PANEL_MACHINE.getType())
.build()
);
}
}
}
@@ -1,26 +0,0 @@
package com.yida.data.attendance.configure;
import java.util.concurrent.ThreadPoolExecutor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@Configuration
public class ThreadPollConfigure {
public static final String POLL_NAME = "attendance_thread_pool";
@Bean(POLL_NAME)
public ThreadPoolTaskExecutor asyncThreadPoolTaskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5);
executor.setMaxPoolSize(20);
executor.setKeepAliveSeconds(30);
executor.setThreadNamePrefix("attendance-thread");
executor.setWaitForTasksToCompleteOnShutdown(true);
executor.setAwaitTerminationSeconds(60);
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
executor.initialize();
return executor;
}
}
@@ -1,16 +0,0 @@
package com.yida.data.attendance.constant;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import lombok.Data;
@Data
@Component
@ConfigurationProperties(prefix = "febs.mqtt")
public class MqttConstant {
private String url;
private String username;
private String password;
}
@@ -1,175 +0,0 @@
package com.yida.data.attendance.controller;
import cn.hutool.core.util.ArrayUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.yida.data.attendance.dto.DevicePage;
import com.yida.data.attendance.dto.IssuedFaceDTO;
import com.yida.data.attendance.dto.RemoveFaceDTO;
import com.yida.data.attendance.service.EduAttendanceDeviceService;
import com.yida.data.attendance.vo.DeviceNumberVO;
import com.yida.data.attendance.vo.DeviceVO;
import com.yida.data.attendance.vo.OnlineCountVO;
import com.yida.data.common.core.annotation.ControllerLog;
import com.yida.data.common.core.common.ModuleName;
import com.yida.data.common.core.common.ResultBean;
import com.yida.data.common.core.entity.attendance.EduAttendanceDevice;
import com.yida.data.common.core.entity.system.Dept;
import com.yida.data.common.core.entity.system.enums.OperationLogTypeEnum;
import com.yida.data.common.core.utils.FebsUtil;
import com.yida.data.log.annotation.OperationLog;
import com.yida.data.system.feign.RemoteDeptService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@Api(tags = "考勤-设备", value = "考勤")
@RestController
@RequestMapping("/device")
@RequiredArgsConstructor
public class AttendanceDeviceController {
private final EduAttendanceDeviceService eduAttendanceDeviceService;
private final RemoteDeptService remoteDeptService;
@ApiOperation("考勤设备列表分页查询")
@GetMapping("/listDevicePage")
@PreAuthorize("hasAuthority('attendance:device:view')")
public ResultBean<DevicePage<DeviceVO>> listDevicePage(@ApiParam("学校名称") String schoolName,
@ApiParam("设备编号或名称") String number,
@ApiParam("进出类型,0-进门,1-出门") Integer scope,
@ApiParam("区域类型,0-校门,1-宿舍") Integer type,
@ApiParam("设备状态,0-在线,1-离线") Integer state,
@ApiParam("当前页码") @RequestParam(defaultValue = "1") Integer pageNum,
@ApiParam("页面大小") @RequestParam(defaultValue = "10") Integer pageSize
) {
return ResultBean.buildSuccess(eduAttendanceDeviceService.listDevicePage(new DevicePage(pageNum,
pageSize), schoolName, number, scope, type, state, FebsUtil.getCurrentUser()));
}
/**
* 考勤设备数量统计
*
* @return com.yida.data.common.core.common.ResultBean<com.yida.data.attendance.vo.DeviceNumberVO>
* @author ZYJ
* @date 2021/10/8 16:57
*/
@ApiOperation("考勤设备数量统计")
@GetMapping("/findDeviceNumber")
public ResultBean<DeviceNumberVO> findDeviceNumber() throws NoSuchMethodException {
return eduAttendanceDeviceService.findDeviceNumber();
}
@ApiOperation("新增、修改设备")
@PostMapping("/saveDevice")
@OperationLog(module = ModuleName.ATTENDANCE, methods = "新增、修改考勤设备", type = OperationLogTypeEnum.SAVE)
@PreAuthorize("hasAuthority('attendance:device:edit')")
public ResultBean saveDevice(@RequestBody EduAttendanceDevice device) {
return ResultBean.buildSuccess(eduAttendanceDeviceService.saveDevice(device));
}
@ApiOperation("删除考勤设备")
@PostMapping("/delDevice")
@OperationLog(module = ModuleName.ATTENDANCE, methods = "删除考勤设备", type = OperationLogTypeEnum.DELETE)
@PreAuthorize("hasAuthority('attendance:device:delete')")
public ResultBean delDevice(@RequestBody List<Long> ids) {
eduAttendanceDeviceService.delDevice(ids);
// 更新缓存
return ResultBean.buildSuccess();
}
@ApiOperation("根据学校和区域查询设备列表")
@GetMapping("/listDeviceBySchool")
public ResultBean<List<EduAttendanceDevice>> listDeviceBySchool(
@ApiParam("学校id") Long schoolId,
@ApiParam("区域类型,0-进门,1-出门") @RequestParam(required = false) Integer scope,
@ApiParam("类型,0-校门,1-宿舍") @RequestParam(required = false) Integer type) {
LambdaQueryWrapper<EduAttendanceDevice> condition = Wrappers.lambdaQuery(new EduAttendanceDevice())
.eq(EduAttendanceDevice::getSchoolId, schoolId);
if (scope != null) {
condition.eq(EduAttendanceDevice::getZoneScope, scope);
}
if (type != null) {
condition.eq(EduAttendanceDevice::getType, type);
}
return ResultBean.buildSuccess(eduAttendanceDeviceService.list(condition));
}
@ApiOperation("根据id查询设备列表")
@GetMapping("/listDeviceById")
ResultBean<List<EduAttendanceDevice>> listDeviceById(@RequestParam("ids") Long[] ids) {
return ResultBean.buildSuccess(
ArrayUtil.isNotEmpty(ids) ? eduAttendanceDeviceService.listByIds(Arrays.asList(ids))
: Collections.EMPTY_LIST);
}
@ApiOperation("根据id开门")
@GetMapping("/openDoor")
public ResultBean openDoor(@ApiParam("设备id") @RequestParam String eduAttendanceDevice) {
eduAttendanceDeviceService.openDoor(eduAttendanceDevice);
return ResultBean.buildSuccess();
}
@ApiOperation("根据id设置时间")
@GetMapping("/setSysTime")
@OperationLog(module = ModuleName.ATTENDANCE, methods = "根据id设置设备时间", type = OperationLogTypeEnum.UPDATE)
public ResultBean setSysTime(@ApiParam("设备id") @RequestParam String id) {
eduAttendanceDeviceService.setSysTime(id);
return ResultBean.buildSuccess();
}
@ApiOperation("批量设置时间")
@PostMapping("/setAllTime")
@OperationLog(module = ModuleName.ATTENDANCE, methods = "批量设置设备时间", type = OperationLogTypeEnum.UPDATE)
public ResultBean setAllTime(@RequestBody List<String> list) {
eduAttendanceDeviceService.setAllTime(list);
return ResultBean.buildSuccess();
}
@ApiOperation("批量开门")
@PostMapping("/openAllDoor")
@OperationLog(module = ModuleName.ATTENDANCE, methods = "批量开门设备", type = OperationLogTypeEnum.UPDATE)
public ResultBean openAllDoor(@RequestBody List<String> list) {
eduAttendanceDeviceService.openAllDoor(list);
return ResultBean.buildSuccess();
}
@ApiOperation("下发人脸(下发设备需为同一厂商设备)")
@PostMapping("/issuedFace")
@OperationLog(module = ModuleName.ATTENDANCE, methods = "下发人脸", type = OperationLogTypeEnum.SELECT)
public ResultBean issuedFace(@RequestBody IssuedFaceDTO dto) {
eduAttendanceDeviceService.issuedFace(dto);
return ResultBean.buildSuccess();
}
@ApiOperation("删除设备中的人脸")
@PostMapping("/removeFace")
@OperationLog(module = ModuleName.ATTENDANCE, methods = "删除设备中的人脸", type = OperationLogTypeEnum.DELETE)
public ResultBean removeFace(@RequestBody RemoveFaceDTO dto) {
eduAttendanceDeviceService.removeFace(dto);
return ResultBean.buildSuccess();
}
@ApiOperation("获取面板机状态分布")
@GetMapping("/getOnlineDistrib")
public ResultBean<OnlineCountVO> getOnlineDistrib() {
List<Long> schoolIds = remoteDeptService.getSchoolByArea(null, null).getData().stream().map(Dept::getDeptId)
.collect(Collectors.toList());
return ResultBean.buildSuccess(eduAttendanceDeviceService.getOnlineDistrib(schoolIds));
}
}
@@ -1,122 +0,0 @@
package com.yida.data.attendance.controller;
import cn.hutool.core.util.ArrayUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yida.data.attendance.service.EduAttendanceDeviceGroupService;
import com.yida.data.attendance.service.EduDeviceGroupService;
import com.yida.data.attendance.vo.DeviceOrDeviceGroupVO;
import com.yida.data.common.core.common.ModuleName;
import com.yida.data.common.core.common.ResultBean;
import com.yida.data.common.core.entity.CurrentUser;
import com.yida.data.common.core.entity.attendance.EduAttendanceDevice;
import com.yida.data.common.core.entity.attendance.EduAttendanceDeviceGroup;
import com.yida.data.common.core.entity.attendance.EduDeviceGroup;
import com.yida.data.common.core.entity.system.enums.OperationLogTypeEnum;
import com.yida.data.common.core.utils.FebsUtil;
import com.yida.data.log.annotation.OperationLog;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* 设备分组表 Controller
*
* @author zhanghaijun
* @date 2021-06-16 15:27:11
*/
@Api(tags = "考勤-设备分组")
@Slf4j
@Validated
@RestController
@RequestMapping("/deviceGroup")
@RequiredArgsConstructor
public class AttendanceDeviceGroupController {
private final EduAttendanceDeviceGroupService eduAttendanceDeviceGroupService;
private final EduDeviceGroupService eduDeviceGroupService;
@ApiOperation("根据name分页查询分组")
@GetMapping("/listDevicePage")
public ResultBean<IPage<EduAttendanceDeviceGroup>> listDeviceGroupPage(@ApiParam("分组名称") @RequestParam String name,
@ApiParam("当前页码") @RequestParam(defaultValue = "1") Long current,
@ApiParam("页面大小") @RequestParam(defaultValue = "10") Long size,
@ApiParam("学校id") @RequestParam(required = false) Long schoolId) throws NoSuchMethodException {
return ResultBean.buildSuccess(eduAttendanceDeviceGroupService.selectGroup(name, current, size, schoolId));
}
@ApiOperation("全部查询")
@GetMapping("/listDevice")
public ResultBean<List<EduAttendanceDeviceGroup>> listDeviceGroup() {
return ResultBean.buildSuccess(eduAttendanceDeviceGroupService.selectGroupAll());
}
@ApiOperation("新增或修改分组")
@PostMapping("/insertGroup")
@OperationLog(module = ModuleName.DEVICE, methods = "新增分组", type = OperationLogTypeEnum.SAVE)
public ResultBean insertGroup(@ApiParam("分组详细") @RequestBody EduAttendanceDeviceGroup eduAttendanceDeviceGroup) {
eduAttendanceDeviceGroupService.saveOrUpdate(eduAttendanceDeviceGroup);
return ResultBean.buildSuccess();
}
@ApiOperation("删除分组")
@GetMapping("/delGroup")
@OperationLog(module = ModuleName.DEVICE, methods = "删除分组", type = OperationLogTypeEnum.DELETE)
public ResultBean delGroup(@RequestParam Long id) {
eduAttendanceDeviceGroupService.delGroup(id);
return ResultBean.buildSuccess();
}
@ApiOperation("查询设备与设备组列表")
@GetMapping("/listDeviceAndDeviceGroup")
public ResultBean<List<DeviceOrDeviceGroupVO>> listDeviceAndDevice(String keyword) {
CurrentUser currentUser = FebsUtil.getCurrentUser();
Long schoolId = null;
if (currentUser.getDeptType() == 0) {
schoolId = currentUser.getDeptId();
}
return ResultBean.buildSuccess(eduAttendanceDeviceGroupService.listDeviceAndDevice(keyword, schoolId));
}
@ApiOperation("根据设备组查询设备")
@GetMapping("/listDeviceByGroup")
public ResultBean<List<EduAttendanceDevice>> listDeviceByGroup(Long[] groupIds) {
return ResultBean.buildSuccess(eduAttendanceDeviceGroupService.listDeviceByGroup(Arrays.asList(groupIds)));
}
@ApiOperation("查询设备组列表")
@GetMapping("/listDeviceGroupById")
public ResultBean<List<EduAttendanceDeviceGroup>> listDeviceGroupById(Long[] ids) {
return ResultBean.buildSuccess(ArrayUtil.isNotEmpty(ids) ? eduAttendanceDeviceGroupService.listByIds(Arrays.asList(ids)) :
Collections.EMPTY_LIST);
}
@ApiOperation("批量分组")
@PostMapping("/batchGroup")
@OperationLog(module = ModuleName.DEVICE, methods = "批量分组", type = OperationLogTypeEnum.UPDATE)
public ResultBean batchGroup(@ApiParam("批量分组") @RequestBody List<EduDeviceGroup> list) {
eduDeviceGroupService.insertGroup(list);
return ResultBean.buildSuccess();
}
}
@@ -1,96 +0,0 @@
package com.yida.data.attendance.controller;
import cc.mrbird.febs.common.redis.service.RedisService;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yida.data.attendance.dto.AddAttendanceRecordDTO;
import com.yida.data.attendance.dto.AttendanceCountPageDTO;
import com.yida.data.attendance.dto.ListErrorRecordDTO;
import com.yida.data.attendance.dto.PageAttendanceRecordDTO;
import com.yida.data.attendance.service.AttendanceRecordService;
import com.yida.data.attendance.service.ErrorRecordMsgService;
import com.yida.data.attendance.vo.DownLoadAttendanceResultVO;
import com.yida.data.common.core.common.ModuleName;
import com.yida.data.common.core.common.ResultBean;
import com.yida.data.common.core.entity.ErrorRecordMsg;
import com.yida.data.common.core.entity.attendance.attendance.AttendanceRecord;
import com.yida.data.common.core.entity.constant.CachePrefixConstant;
import com.yida.data.common.core.entity.system.enums.OperationLogTypeEnum;
import com.yida.data.log.annotation.OperationLog;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 进出记录 Controller
*
* @date 2023-08-09 11:37:25
*/
@Slf4j
@Validated
@RestController
@RequestMapping("/attendanceRecord")
@RequiredArgsConstructor
@Api(tags = "考勤-记录", value = "考勤记录")
public class AttendanceRecordController {
private final ErrorRecordMsgService errorRecordMsgService;
private final AttendanceRecordService attendanceRecordService;
private final RedisService redisService;
@ApiOperation("增加考勤记录")
@PostMapping("/saveRecord")
@OperationLog(module = ModuleName.ATTENDANCE, methods = "增加考勤记录", type = OperationLogTypeEnum.INSERT)
public ResultBean addRecord(@RequestBody AddAttendanceRecordDTO dto) {
attendanceRecordService.addRecord(dto);
return ResultBean.buildSuccess();
}
@ApiOperation("分页查询通讯记录")
@PostMapping("/pageListRecord")
public ResultBean<IPage<AttendanceRecord>> pageListRecord(@RequestBody PageAttendanceRecordDTO dto) {
return ResultBean.buildSuccess(attendanceRecordService.listRecordPage(dto));
}
@ApiOperation("分页查询通行记录错误记录")
@PostMapping("/listErrorRecord")
public ResultBean<Page<ErrorRecordMsg>> listErrorRecord(@RequestBody ListErrorRecordDTO dto) {
return ResultBean.buildSuccess(errorRecordMsgService.listErrorRecord(dto));
}
@ApiOperation("批量删除通行记录错误记录")
@PostMapping("/batchDeleteErrorRecord")
@OperationLog(module = ModuleName.ATTENDANCE, methods = "批量删除通行记录错误记录", type = OperationLogTypeEnum.DELETE)
public ResultBean<String> batchDeleteErrorRecord(@RequestBody String[] recordIds) {
errorRecordMsgService.batchDeleteErrorRecord(recordIds);
return ResultBean.buildSuccess();
}
@ApiOperation("通行记录导出")
@PostMapping("/downloadAttendanceRecord")
public ResultBean<DownLoadAttendanceResultVO> downloadAttendanceRecord(@RequestBody PageAttendanceRecordDTO dto) {
String uuid = UUID.fastUUID().toString();
attendanceRecordService.downloadAttendanceRecord(dto, uuid);
return ResultBean.buildSuccess(DownLoadAttendanceResultVO.builder()
.key(uuid)
.finish(0)
.totalNum(100)
.currentNum(1).build());
}
@ApiOperation("获取通行记录导出进度")
@GetMapping("/getDownloadAttendanceRecordProcess")
public ResultBean<DownLoadAttendanceResultVO> getDownloadAttendanceRecordProcess(String key) {
return ResultBean.buildSuccess(
(DownLoadAttendanceResultVO) redisService.hget(CachePrefixConstant.ATTENDANCE_RECORD_DOWNLOAD, key));
}
}
@@ -1,51 +0,0 @@
package com.yida.data.attendance.controller;
import com.yida.data.attendance.dto.AddAttendanceReportStrategyDTO;
import com.yida.data.attendance.service.AttendanceReportStrategyService;
import com.yida.data.common.core.common.ModuleName;
import com.yida.data.common.core.common.ResultBean;
import com.yida.data.common.core.entity.attendance.attendance.AttendanceReportStrategy;
import com.yida.data.common.core.entity.system.enums.OperationLogTypeEnum;
import com.yida.data.log.annotation.OperationLog;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 进出记录 Controller
*
* @date 2023-08-09 11:37:25
*/
@Slf4j
@Validated
@RestController
@RequestMapping("/attendanceReportStrategy")
@RequiredArgsConstructor
@Api(tags = "考勤-推送策略", value = "推送策略")
public class AttendanceReportStrategyController {
private final AttendanceReportStrategyService attendanceReportStrategyService;
@ApiOperation("获取推送策略详情")
@GetMapping("/get")
public ResultBean<List<AttendanceReportStrategy>> getStrategy() {
return ResultBean.buildSuccess(attendanceReportStrategyService.getList());
}
@ApiOperation("新增/编辑推送策略")
@PostMapping("/save")
@OperationLog(module = ModuleName.ATTENDANCE, methods = "新增/编辑推送策略", type = OperationLogTypeEnum.SAVE)
public ResultBean saveStrategy(@RequestBody List<AddAttendanceReportStrategyDTO> strategyList) {
attendanceReportStrategyService.saveStrategy(strategyList);
return ResultBean.buildSuccess();
}
}
@@ -1,119 +0,0 @@
package com.yida.data.attendance.controller;
import cc.mrbird.febs.common.redis.service.RedisService;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yida.data.attendance.dto.AttendanceCountPageDTO;
import com.yida.data.attendance.dto.AttendanceDayReportDTO;
import com.yida.data.attendance.service.AttendanceResultService;
import com.yida.data.attendance.vo.AttdanceResultDetailVO;
import com.yida.data.attendance.vo.AttdanceResultTotalVO;
import com.yida.data.attendance.vo.AttdanceResultVO;
import com.yida.data.attendance.vo.DownLoadAttendanceResultVO;
import com.yida.data.attendance.vo.StaRecordCountVO;
import com.yida.data.common.core.common.ResultBean;
import com.yida.data.common.core.entity.constant.CachePrefixConstant;
import com.yida.data.common.core.entity.system.Dept;
import com.yida.data.system.feign.RemoteDeptService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import java.time.LocalDate;
import java.util.List;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 考勤-考勤结果 Controller
*
* @date 2023-08-09 11:37:25
*/
@Slf4j
@RestController
@RequestMapping("/attendanceResult")
@RequiredArgsConstructor
@Api(tags = "考勤-结果", value = "考勤结果")
public class AttendanceResultController {
private final AttendanceResultService attendanceResultService;
private final RemoteDeptService remoteDeptService;
private final RedisService redisService;
@ApiOperation("考勤-概况统计")
@PostMapping("/overview/sta")
public ResultBean<IPage<AttdanceResultVO>> listResultPage(@RequestBody @Validated AttendanceCountPageDTO dto) {
return ResultBean.buildSuccess(attendanceResultService.listResultPage(dto));
}
@ApiOperation("考勤-概况统计")
@PostMapping("/overview/total")
public ResultBean<AttdanceResultTotalVO> total(@RequestBody @Validated AttendanceCountPageDTO dto) {
return ResultBean.buildSuccess(attendanceResultService.total(dto));
}
@ApiOperation("考勤-明细")
@PostMapping("/detail")
public ResultBean<IPage<AttdanceResultDetailVO>> listResultDetail(@RequestBody AttendanceCountPageDTO dto) {
return ResultBean.buildSuccess(attendanceResultService.listResultDetailPage(dto));
}
@ApiOperation("dashboard-考勤概况")
@GetMapping("/staRecordCount")
public ResultBean<StaRecordCountVO> staRecordCount(@ApiParam("yyyy-MM-dd") String startDate,
@ApiParam("yyyy-MM-dd") String endDate) {
List<Long> schoolIds = remoteDeptService.getSchoolByArea(null, null).getData().stream().map(Dept::getDeptId)
.collect(Collectors.toList());
return ResultBean.buildSuccess(
attendanceResultService.staRecordCount(LocalDate.parse(startDate), LocalDate.parse(endDate), schoolIds));
}
@ApiOperation("考勤结果导出")
@PostMapping("/downloadAttendanceResult")
public ResultBean<DownLoadAttendanceResultVO> downLocalAttendanceResult(@RequestBody AttendanceCountPageDTO dto) {
String uuid = UUID.fastUUID().toString();
attendanceResultService.downLocalAttendanceResult(dto, uuid);
return ResultBean.buildSuccess(DownLoadAttendanceResultVO.builder()
.key(uuid)
.finish(0)
.totalNum(100)
.currentNum(0).build());
}
@ApiOperation("获取考勤结果导出进度")
@GetMapping("/getDownloadAttendanceResultProcess")
public ResultBean<DownLoadAttendanceResultVO> getDownLocalAttendanceResultProcess(String key) {
return ResultBean.buildSuccess(
(DownLoadAttendanceResultVO) redisService.hget(CachePrefixConstant.STUDENT_DORM_ATTENDANCE_RESULT_DOWNLOAD, key));
}
@ApiOperation("考勤日报导出")
@PostMapping("/downloadAttendanceDayReport")
public ResultBean<DownLoadAttendanceResultVO> downloadAttendanceDayReport(@RequestBody AttendanceDayReportDTO dto) {
String uuid = UUID.fastUUID().toString();
attendanceResultService.downLocalAttendanceDayReport(dto, uuid);
return ResultBean.buildSuccess(DownLoadAttendanceResultVO.builder()
.key(uuid)
.finish(0)
.totalNum(100)
.currentNum(0).build());
}
@ApiOperation("获取考勤日报导出进度")
@GetMapping("/getDownloadAttendanceDayReportProcess")
public ResultBean<DownLoadAttendanceResultVO> getDownloadAttendanceDayReportProcess(String key) {
return ResultBean.buildSuccess(
(DownLoadAttendanceResultVO) redisService.hget(CachePrefixConstant.ATTENDANCE_DAY_REPORT_DOWNLOAD, key));
}
}
@@ -1,163 +0,0 @@
package com.yida.data.attendance.controller;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yida.data.attendance.dto.AddAttendanceRuleDTO;
import com.yida.data.attendance.dto.AttendanceRuleAdminUserAddDTO;
import com.yida.data.attendance.dto.AttendanceRuleAdminUserPageDTO;
import com.yida.data.attendance.dto.AttendanceRuleUserAddDTO;
import com.yida.data.attendance.dto.AttendanceRuleUserPageDTO;
import com.yida.data.attendance.dto.PageAttendanceRuleDTO;
import com.yida.data.attendance.dto.UpdateAttendanceRuleStatusDTO;
import com.yida.data.attendance.service.AttendanceRuleService;
import com.yida.data.attendance.service.AttendanceRuleWifiService;
import com.yida.data.attendance.vo.AttendanceRuleAdminUserVO;
import com.yida.data.attendance.vo.AttendanceRuleUserVO;
import com.yida.data.attendance.vo.AttendanceRuleVO;
import com.yida.data.common.core.common.ModuleName;
import com.yida.data.common.core.common.ResultBean;
import com.yida.data.common.core.common.ResultMsgType;
import com.yida.data.common.core.entity.CurrentUser;
import com.yida.data.common.core.entity.constant.FebsConstant;
import com.yida.data.common.core.entity.system.enums.OperationLogTypeEnum;
import com.yida.data.common.core.utils.FebsUtil;
import com.yida.data.common.core.utils.FileUtil;
import com.yida.data.log.annotation.OperationLog;
import com.yida.data.school.vo.smart.ImportRosterDataVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import java.util.List;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
/**
* 教职工考勤规则 Controller
*
* @date 2023-08-09 11:37:25
*/
@Slf4j
@RestController
@RequestMapping("attendanceRule")
@RequiredArgsConstructor
@Api(tags = "考勤-规则", value = "考勤规则")
public class AttendanceRuleController {
private final AttendanceRuleService attendanceRuleService;
private final AttendanceRuleWifiService attendanceRuleWifiService;
@ApiOperation("查询规则列表")
@PostMapping("/listRule")
public ResultBean<IPage<AttendanceRuleVO>> listRule(@RequestBody PageAttendanceRuleDTO dto) {
dto.setSchoolId(FebsUtil.getTopDeptId());
return ResultBean
.buildSuccess(attendanceRuleService.listRulePage(dto));
}
@ApiOperation("新增、修改规则")
@PostMapping("/saveRule")
@OperationLog(module = ModuleName.ATTENDANCE, methods = "新增、修改考勤规则", type = OperationLogTypeEnum.SAVE)
public ResultBean saveRule(@RequestBody @Validated AddAttendanceRuleDTO dto) {
attendanceRuleService.addAttendanceRule(dto);
return ResultBean.buildSuccess();
}
@ApiOperation("获取规则")
@GetMapping("/getRule")
public ResultBean<AttendanceRuleVO> getRule(Long ruleId) {
return ResultBean
.buildSuccess(attendanceRuleService.getRule(ruleId));
}
@ApiOperation("删除规则")
@PostMapping("/delRule")
@OperationLog(module = ModuleName.ATTENDANCE, methods = "删除考勤规则", type = OperationLogTypeEnum.DELETE)
public ResultBean delRule(@RequestBody List<Long> ruleIds) {
attendanceRuleService.deleteRule(ruleIds);
return ResultBean.buildSuccess();
}
@ApiOperation("更改规则状态")
@PostMapping("/updateRuleStatus")
@OperationLog(module = ModuleName.ATTENDANCE, methods = "更改规则状态", type = OperationLogTypeEnum.UPDATE)
public ResultBean updateRuleStatus(@RequestBody UpdateAttendanceRuleStatusDTO dto) {
attendanceRuleService.updateRuleStatus(dto);
return ResultBean.buildSuccess();
}
@ApiOperation("导入BSSID")
@PostMapping(value = "/importBssid", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResultBean<ImportRosterDataVO> importBssid(
@ApiParam(value = "导入的excel文件", required = true) @RequestParam("file") MultipartFile file,
@ApiParam(value = "规则ID", required = true) @RequestParam("ruleId") Long ruleId) {
// 验证文件类型
if (!FileUtil.checkMultipartFile(file, FebsConstant.EXCEL_FILE_TYPE)) {
return ResultBean.buildError(ResultMsgType.FILE_TYPE_ERROR.getValue());
}
String uuid = StrUtil.uuid();
// 当前登录用户信息
CurrentUser currentUser = FebsUtil.getCurrentUser();
String fileUrl = FileUtil.uploadMultipartFile(file);
// 导入花名册数据
attendanceRuleWifiService.ImportBssid(fileUrl, ruleId);
return ResultBean
.buildSuccess(ImportRosterDataVO.builder().percent(0).finish(0).key(uuid).build());
}
@ApiOperation("查询打卡人员列表")
@PostMapping("/listRuleAttendanceUser")
public ResultBean<IPage<AttendanceRuleUserVO>> listRuleAttendanceUser(@RequestBody AttendanceRuleUserPageDTO dto) {
dto.setSchoolId(FebsUtil.getTopDeptId());
return ResultBean
.buildSuccess(attendanceRuleService.listRuleAttendanceUser(dto));
}
@ApiOperation("批量删除打卡人员")
@PostMapping("/deleteRuleAttendanceUser")
@OperationLog(module = ModuleName.ATTENDANCE, methods = "批量删除打卡人员", type = OperationLogTypeEnum.DELETE)
public ResultBean deleteRuleAttendanceUser(@RequestBody List<Long> ids) {
attendanceRuleService.deleteRuleAttendanceUser(ids);
return ResultBean.buildSuccess();
}
@ApiOperation("增加打卡人员")
@PostMapping("/addRuleAttendanceUser")
@OperationLog(module = ModuleName.ATTENDANCE, methods = "增加打卡人员", type = OperationLogTypeEnum.INSERT)
public ResultBean addRuleAttendanceUser(@RequestBody AttendanceRuleUserAddDTO dto) {
attendanceRuleService.addRuleAttendanceUser(dto);
return ResultBean.buildSuccess();
}
@ApiOperation("查询规则管理员列表")
@PostMapping("/listRuleAttendanceAdminUser")
public ResultBean<IPage<AttendanceRuleAdminUserVO>> listRuleAttendanceUser(@RequestBody AttendanceRuleAdminUserPageDTO dto) {
return ResultBean.buildSuccess(attendanceRuleService.listRuleAttendanceAdminUser(dto));
}
@ApiOperation("批量删除管理员人员")
@PostMapping("/deleteRuleAttendanceAdminUser")
@OperationLog(module = ModuleName.ATTENDANCE, methods = "批量删除管理员人员", type = OperationLogTypeEnum.DELETE)
public ResultBean deleteRuleAttendanceAdminUser(@RequestBody List<Long> ids) {
attendanceRuleService.deleteRuleAttendanceAdminUser(ids);
return ResultBean.buildSuccess();
}
@ApiOperation("增加管理员人员")
@PostMapping("/addRuleAttendanceAdminUser")
public ResultBean addRuleAttendanceAdminUser(@RequestBody AttendanceRuleAdminUserAddDTO dto) {
attendanceRuleService.addAttendanceAdminUser(dto);
return ResultBean.buildSuccess();
}
}
@@ -1,71 +0,0 @@
package com.yida.data.attendance.controller;
import com.yida.data.attendance.dto.AddLeaveRequestStrategyDTO;
import com.yida.data.attendance.service.EduAttendanceStrategyService;
import com.yida.data.common.core.common.ResultBean;
import com.yida.data.common.core.entity.user.EduFaceGroupStrategy;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 设备策略Controller
* 未鉴权
*
* @author ZYJ
* @date 2022-12-13 11:04:39
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/in/deviceStrategy")
@Api(tags = "考勤-设备-策略", value = "考勤")
public class EduAttendanceStrategyController {
private final EduAttendanceStrategyService eduAttendanceStrategyService;
@PostMapping("saveStrategyAndUser")
@ApiOperation("保存策略并绑定人员信息")
public ResultBean<String> saveStrategyAndUser(@RequestBody EduFaceGroupStrategy eduFaceGroupStrategy) {
eduAttendanceStrategyService.saveStrategyAndUser(eduFaceGroupStrategy);
return ResultBean.buildSuccess();
}
@PostMapping("deleteStrategy")
@ApiOperation("删除策略")
public ResultBean<String> deleteStrategy(@RequestBody EduFaceGroupStrategy eduFaceGroupStrategy) {
eduAttendanceStrategyService.deleteStrategy(eduFaceGroupStrategy);
return ResultBean.buildSuccess();
}
@PostMapping("bindUserStrategy")
@ApiOperation("绑定对应的人员-策略信息")
public ResultBean<String> bindUserStrategy(@RequestBody EduFaceGroupStrategy eduFaceGroupStrategy) {
eduAttendanceStrategyService.bindUserStrategy(eduFaceGroupStrategy);
return ResultBean.buildSuccess();
}
@PostMapping("unBindUserStrategy")
@ApiOperation("解绑对应的人员-策略信息")
public ResultBean<String> unBindUserStrategy(@RequestBody EduFaceGroupStrategy eduFaceGroupStrategy) {
eduAttendanceStrategyService.unBindUserStrategy(eduFaceGroupStrategy);
return ResultBean.buildSuccess();
}
@PostMapping("deleteAndSaveStrategy")
@ApiOperation("删除并保存策略(包含人员信息)")
public ResultBean<String> deleteAndSaveStrategy(@RequestBody EduFaceGroupStrategy eduFaceGroupStrategy) {
eduAttendanceStrategyService.deleteAndSaveStrategy(eduFaceGroupStrategy);
return ResultBean.buildSuccess();
}
@PostMapping("addLeaveRequestStrategy")
@ApiOperation("添加请假类型短策略")
public ResultBean<String> addLeaveRequestStrategy(@RequestBody AddLeaveRequestStrategyDTO dto) {
eduAttendanceStrategyService.addLeaveRequestStrategy(dto);
return ResultBean.buildSuccess();
}
}
@@ -1,38 +0,0 @@
package com.yida.data.attendance.controller.H5;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yida.data.attendance.dto.PageAttendanceRecordDTO;
import com.yida.data.attendance.service.AttendanceRecordService;
import com.yida.data.common.core.annotation.ControllerLog;
import com.yida.data.common.core.common.ResultBean;
import com.yida.data.common.core.entity.attendance.attendance.AttendanceRecord;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 教职工考勤规则 Controller
*
* @date 2023-08-09 11:37:25
*/
@Slf4j
@RestController
@RequestMapping("H5/attendanceRecord")
@RequiredArgsConstructor
@Api(tags = "移动端-打卡记录", value = "移动端-打卡记录")
public class H5AttendanceRecordController {
private final AttendanceRecordService attendanceRecordService;
@ApiOperation("分页查看打卡记录")
@PostMapping("/listRecord")
public ResultBean<IPage<AttendanceRecord>> listRule(@RequestBody PageAttendanceRecordDTO dto) {
return ResultBean
.buildSuccess(attendanceRecordService.listRecordPage(dto));
}
}
@@ -1,154 +0,0 @@
package com.yida.data.attendance.controller.H5;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yida.data.attendance.dto.AttendanceFaceMatchDTO;
import com.yida.data.attendance.dto.AttendanceResultByDayDTO;
import com.yida.data.attendance.dto.AttendanceResultByStartAndEndTimeDTO;
import com.yida.data.attendance.dto.AttendanceStatusByMonthDTO;
import com.yida.data.attendance.dto.AttendanceUserCheckInDTO;
import com.yida.data.attendance.dto.H5AttendanceRuleWifiDTO;
import com.yida.data.attendance.dto.ManageListUserDTO;
import com.yida.data.attendance.service.AttendanceCheckInService;
import com.yida.data.attendance.service.AttendanceResultService;
import com.yida.data.attendance.service.AttendanceRuleService;
import com.yida.data.attendance.vo.AttendanceFaceMatchVO;
import com.yida.data.attendance.vo.AttendanceRuleVO;
import com.yida.data.attendance.vo.AttendanceStatusByMonthVO;
import com.yida.data.attendance.vo.AttendanceUserCheckInVO;
import com.yida.data.attendance.vo.AttendanceWifiVO;
import com.yida.data.attendance.vo.DateStatusVO;
import com.yida.data.attendance.vo.DayReportDataVO;
import com.yida.data.attendance.vo.ManageListUserAttendanceDetailVO;
import com.yida.data.attendance.vo.ManageListUserVO;
import com.yida.data.attendance.vo.StaffIdentityVO;
import com.yida.data.attendance.vo.UserAttendanceResultByDayVO;
import com.yida.data.attendance.vo.UserAttendanceResultByTimeSlotVO;
import com.yida.data.common.core.annotation.ControllerLog;
import com.yida.data.common.core.common.ModuleName;
import com.yida.data.common.core.common.ResultBean;
import com.yida.data.common.core.entity.constant.CachePrefixConstant;
import com.yida.data.common.core.entity.system.enums.OperationLogTypeEnum;
import com.yida.data.log.annotation.OperationLog;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* 教职工考勤规则 Controller
*
* @date 2023-08-09 11:37:25
*/
@Slf4j
@RestController
@RequestMapping("H5/attendanceRule")
@RequiredArgsConstructor
@Api(tags = "移动端-考勤-打卡", value = "移动端-考勤-打卡")
public class H5AttendanceRuleController {
private final AttendanceRuleService attendanceRuleService;
private final AttendanceResultService attendanceResultService;
private final AttendanceCheckInService attendanceCheckInService;
@ApiOperation("查询用户当前时间的打卡规则")
@PostMapping("/findRuleByUserAndDate")
public ResultBean<AttendanceWifiVO> findRuleByUserAndDate(@RequestBody H5AttendanceRuleWifiDTO dto) {
return ResultBean.buildSuccess(attendanceCheckInService.findByUserIdAndDateTime(dto));
}
@ApiOperation("签到打卡")
@PostMapping("/userCheckIn")
@OperationLog(module = ModuleName.ATTENDANCE, methods = "签到打卡", type = OperationLogTypeEnum.INSERT)
public ResultBean<AttendanceUserCheckInVO> userCheckIn(@RequestBody AttendanceUserCheckInDTO dto) {
return ResultBean.buildSuccess(attendanceCheckInService.userCheckIn(dto));
}
@ApiOperation("签到人脸比对")
@PostMapping("/rosterFaceMatch")
@OperationLog(module = ModuleName.ATTENDANCE, methods = "签到人脸比对", type = OperationLogTypeEnum.SELECT)
public ResultBean<AttendanceFaceMatchVO> rosterFaceMatch(@RequestBody AttendanceFaceMatchDTO dto) {
return ResultBean.buildSuccess(attendanceRuleService.AttendanceFaceMatch(dto));
}
@ApiOperation("家长端/教师我的考勤-获取当前月份用户考勤状态汇总")
@PostMapping("/getUserAttendanceStatusByMonth")
public ResultBean<List<DateStatusVO>> getUserAttendanceStatusByMonth(
@Validated @RequestBody AttendanceStatusByMonthDTO dto) {
return ResultBean.buildSuccess(attendanceResultService.getUserAttendanceStatusByMonth(dto));
}
@ApiOperation("家长端/教师我的考勤-获取某日用户考勤结果")
@PostMapping("/getUserAttendanceResultByDay")
public ResultBean<List<UserAttendanceResultByDayVO>> getUserAttendanceRecordByDay(
@Validated @RequestBody AttendanceResultByDayDTO dto) {
return ResultBean.buildSuccess(attendanceResultService.getUserAttendanceResultByDay(dto));
}
@ApiOperation("家长端/教师我的考勤(周和月)-获取某时间段内用户考勤结果统计")
@PostMapping("/getUserAttendanceResultByTimeSlot")
public ResultBean<UserAttendanceResultByTimeSlotVO> getUserAttendanceResultByTimeSlot(
@Validated @RequestBody AttendanceResultByStartAndEndTimeDTO dto) {
return ResultBean.buildSuccess(attendanceResultService.getUserAttendanceResultByTimeSlot(dto));
}
@ApiOperation("教师端-管理人员考勤状态-日历显示")
@PostMapping("/findTotalUserStatus")
public ResultBean<List<DateStatusVO>> findTotalUserStatus(
@Validated @RequestBody ManageListUserDTO dto) {
return ResultBean.buildSuccess(attendanceResultService.findTotalUserStatus(dto));
}
@ApiOperation("教师端-管理人员考勤统计")
@PostMapping("/findManageListUserVO")
public ResultBean<List<ManageListUserVO>> findManageListUserVO(
@Validated @RequestBody ManageListUserDTO dto) {
return ResultBean.buildSuccess(attendanceResultService.findManageListUserVO(dto));
}
@ApiOperation("教师端-查看明细")
@PostMapping("/findManageListUserDetailVO")
public ResultBean<JSONObject> findManageListUserDetailVO(
@Validated @RequestBody ManageListUserDTO dto) {
return ResultBean.buildSuccess(attendanceResultService.findManageListUserDetailVO(dto));
}
@ApiOperation("教师端-用户管理的家校部门树")
@GetMapping("/findManageUserDeptTree")
@Cacheable(value = CachePrefixConstant.ATTENDANCE_USER_MANAGE_TREE, key = "#userId+''+#searchUserType")
public ResultBean<List> findManageUserDeptTree(@RequestParam Long userId, @RequestParam Integer searchUserType) {
return ResultBean.buildSuccess(attendanceResultService.findManageUserDeptTree(userId, searchUserType));
}
@ApiOperation("教师端-职工身份")
@GetMapping("/findStaffIdentity")
@Cacheable(value = CachePrefixConstant.ATTENDANCE_STAFF_IDENTITY, key = "#userId")
public ResultBean<StaffIdentityVO> findStaffIdentity(@RequestParam Long userId) {
return ResultBean.buildSuccess(attendanceResultService.findStaffIdentity(userId));
}
@ApiOperation("教师端-查询用户管理规则")
@GetMapping("/findUserManageRuleList")
@Cacheable(value = CachePrefixConstant.ATTENDANCE_STAFF_MANAGE_RULE, key = "#userId + '' + #userType")
public ResultBean<List<AttendanceRuleVO>> findUserManageRuleList(@RequestParam Long userId, @RequestParam Integer userType) {
return ResultBean.buildSuccess(attendanceRuleService.findUserManageRuleList(userId, userType));
}
@ApiOperation("教师端-获取日报详情")
@GetMapping("/getDayReport")
public ResultBean<List<DayReportDataVO>> getDayReport(@RequestParam Long staffId, @RequestParam Integer searchUserType,
@RequestParam Long ruleId, @RequestParam String attendanceDateStr) {
return ResultBean.buildSuccess(attendanceRuleService.getDayReport(staffId, searchUserType, ruleId, attendanceDateStr));
}
}
@@ -1,89 +0,0 @@
package com.yida.data.attendance.controller.in;
import com.yida.data.attendance.dto.DayReportDataDTO;
import com.yida.data.attendance.service.AttendanceRecordService;
import com.yida.data.attendance.service.AttendanceReportStrategyService;
import com.yida.data.attendance.service.AttendanceResultService;
import com.yida.data.attendance.service.AttendanceRuleService;
import com.yida.data.attendance.service.NoticeService;
import com.yida.data.common.core.entity.attendance.attendance.AttendanceRule;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.w3c.dom.stylesheets.LinkStyle;
@Slf4j
@RestController
@RequestMapping("in/attendanceResult")
@RequiredArgsConstructor
public class InAttendanceResultController {
private final AttendanceResultService attendanceResultService;
private final AttendanceRecordService attendanceRecordService;
private final AttendanceReportStrategyService attendanceReportStrategyService;
private final NoticeService noticeService;
private final AttendanceRuleService attendanceRuleService;
/**
* 每日凌晨先初始化考勤结果
*/
@GetMapping("/initAttendanceResult")
public void initAttendanceResult() {
attendanceResultService.initUserAttendance();
}
/**
* 策略推送消息
*/
@GetMapping("/attendanceNotice")
public void notice() {
attendanceReportStrategyService.sendNotice();
}
/**
* 同步老数据
*
* @param schoolId
* @param startDateTime
*/
@GetMapping("/resetOldData")
public void resetOldData(Long schoolId, String startDateTime, Integer userType) {
attendanceRecordService
.resetOldData(schoolId,
LocalDateTime.parse(startDateTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), userType);
}
/**
* 同步老数据
*/
@GetMapping("/testPushDayReport")
public void testPushDayReport(Long staffId, Long ruleId) {
List<DayReportDataDTO> dtoList = new ArrayList<>();
dtoList.add(DayReportDataDTO.builder().deptName("经济管理系").totalNum(1234).abNum(456).requestNum(15).build());
dtoList.add(DayReportDataDTO.builder().deptName("基础部").totalNum(2563).abNum(652).requestNum(95).build());
dtoList.add(DayReportDataDTO.builder().deptName("机电工程系").totalNum(859).abNum(15).requestNum(3).build());
dtoList.add(DayReportDataDTO.builder().deptName("建筑工程系").totalNum(1596).abNum(325).requestNum(35).build());
dtoList.add(DayReportDataDTO.builder().deptName("计算机信息工程系").totalNum(1846).abNum(15).requestNum(105).build());
noticeService.sendAttendanceDayReportToStaff(staffId, dtoList, attendanceRuleService.getById(ruleId), 1, true);
}
/**
* 每日/每周/每月考勤数据
*/
@GetMapping("/initAttendanceReport")
public void initAttendanceReport() {
attendanceReportStrategyService.sendNotice();
}
}
@@ -1,42 +0,0 @@
package com.yida.data.attendance.controller.in;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.yida.data.attendance.service.EduAttendanceDeviceService;
import com.yida.data.common.core.common.ResultBean;
import com.yida.data.common.core.entity.attendance.EduAttendanceDevice;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api(tags = "考勤-设备(不鉴权)")
@RestController
@RequestMapping("/in/device")
public class InEduAttendanceDeviceController {
@Resource
private EduAttendanceDeviceService eduAttendanceDeviceService;
@GetMapping("/listDeviceByType")
public ResultBean<List<EduAttendanceDevice>> listDeviceByType(String type) {
return ResultBean.buildSuccess(eduAttendanceDeviceService.list(
Wrappers.lambdaQuery(new EduAttendanceDevice()).eq(EduAttendanceDevice::getDeviceType, type)));
}
@ApiOperation("更新设备在线状态")
@GetMapping("/updateDeviceStatus")
public ResultBean updateDeviceStatus() {
eduAttendanceDeviceService.updateDeviceStatus();
return ResultBean.buildSuccess();
}
@ApiOperation("校时所有设备")
@GetMapping("/timingAllDevice")
public ResultBean timingAllDevice() {
eduAttendanceDeviceService.timingAllDevice();
return ResultBean.buildSuccess();
}
}
@@ -1,32 +0,0 @@
package com.yida.data.attendance.controller.in;
import com.yida.data.attendance.service.AttendanceResultService;
import com.yida.data.attendance.service.EduUserStrategyService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 人员策略信息 controller (不鉴权)
*
* @author ZYJ
* @date 2023/11/7 19:38
*/
@Slf4j
@RestController
@RequiredArgsConstructor
@RequestMapping("in/eduUserStrategy")
public class InEduUserStrategyController {
private final EduUserStrategyService eduUserStrategyService;
/**
* 处理超时用户策略
*/
@GetMapping("/checkOverTimeUserStrategy")
public void checkOverTimeUserStrategy() {
eduUserStrategyService.checkOverTimeUserStrategy();
}
}
@@ -1,61 +0,0 @@
package com.yida.data.attendance.controller.in;
import com.yida.data.attendance.dto.AttendanceFaceMatchDTO;
import com.yida.data.attendance.dto.AttendanceUserCheckInDTO;
import com.yida.data.attendance.dto.H5AttendanceRuleWifiDTO;
import com.yida.data.attendance.service.AttendanceCheckInService;
import com.yida.data.attendance.service.AttendanceRuleService;
import com.yida.data.attendance.vo.AttendanceFaceMatchVO;
import com.yida.data.attendance.vo.AttendanceUserCheckInVO;
import com.yida.data.attendance.vo.AttendanceWifiVO;
import com.yida.data.common.core.annotation.ControllerLog;
import com.yida.data.common.core.common.ModuleName;
import com.yida.data.common.core.common.ResultBean;
import com.yida.data.common.core.entity.system.enums.OperationLogTypeEnum;
import com.yida.data.log.annotation.OperationLog;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 教职工考勤规则 Controller
*
* @date 2023-08-09 11:37:25
*/
@Slf4j
@RestController
@RequestMapping("in/H5/attendanceRule")
@RequiredArgsConstructor
@Api(tags = "移动端-考勤-打卡-非鉴权", value = "移动端-考勤-打卡-非鉴权")
public class InH5AttendanceRuleController {
private final AttendanceRuleService attendanceRuleService;
private final AttendanceCheckInService attendanceCheckInService;
@ApiOperation("查询用户当前时间的打卡规则")
@PostMapping("/findRuleByUserAndDate")
public ResultBean<AttendanceWifiVO> findRuleByUserAndDate(@Validated @RequestBody H5AttendanceRuleWifiDTO dto) {
return ResultBean.buildSuccess(attendanceCheckInService.findByUserIdAndDateTime(dto));
}
@ApiOperation("签到打卡")
@PostMapping("/userCheckIn")
@OperationLog(module = ModuleName.ATTENDANCE, methods = "签到打卡", type = OperationLogTypeEnum.INSERT)
public ResultBean<AttendanceUserCheckInVO> userCheckIn(@RequestBody AttendanceUserCheckInDTO dto) {
return ResultBean.buildSuccess(attendanceCheckInService.userCheckIn(dto));
}
@ApiOperation("签到人脸比对")
@PostMapping("/rosterFaceMatch")
@OperationLog(module = ModuleName.ATTENDANCE, methods = "签到人脸比对", type = OperationLogTypeEnum.SELECT)
public ResultBean<AttendanceFaceMatchVO> rosterFaceMatch(@RequestBody AttendanceFaceMatchDTO dto) {
return ResultBean.buildSuccess(attendanceRuleService.AttendanceFaceMatch(dto));
}
}
@@ -1,93 +0,0 @@
package com.yida.data.attendance.excel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.fastjson.JSON;
import com.yida.data.attendance.dto.BssidImportDTO;
import com.yida.data.attendance.service.AttendanceRuleWifiService;
import com.yida.data.common.core.entity.CurrentUser;
import com.yida.data.common.core.entity.attendance.attendance.AttendanceRule;
import com.yida.data.school.dto.smart.GuideRosterErrorExportDTO;
import com.yida.data.school.dto.smart.GuideRosterImportDTO;
import java.util.List;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.ehcache.impl.internal.concurrent.ConcurrentHashMap;
@Slf4j
@RequiredArgsConstructor
public class BssidExcelListener extends AnalysisEventListener<BssidImportDTO> {
private final AttendanceRuleWifiService attendanceRuleWifiService;
/**
* 当前导入数据唯一标识
*/
private final Long ruleId;
/**
* 每次存储条数 每隔5条存储数据库, 实际使用中可以3000条, 然后清理list, 方便内存回收
*/
private static final int BATCH_COUNT = 3000;
/**
* 需要保存的数据集合
*/
ConcurrentHashMap<Integer, BssidImportDTO> concurrentHashMap = new ConcurrentHashMap<>();
/**
* excel总数量
*/
private static Integer totalCount = 0;
/**
* 处理次数
*/
private static Integer handleNumber = 0;
/**
* 解析成功一条数据调用一次
*/
@Override
public void invoke(BssidImportDTO dto, AnalysisContext analysisContext) {
totalCount = analysisContext.readSheetHolder().getApproximateTotalRowNumber() - 1;
// 获取读取的第几条数据
Integer i = analysisContext.readRowHolder().getRowIndex();
log.info("解析到第: {}条数据: {}", i, JSON.toJSONString(dto));
concurrentHashMap.put(i, dto);
// 达到BATCH_COUNT了, 需要去存储一次数据库, 防止数据几万条数据在内存, 容易OOM
if (concurrentHashMap.size() >= BATCH_COUNT) {
handleNumber += 1;
saveData();
// 存储完成清理集合
concurrentHashMap.clear();
}
}
/**
* 所有数据解析完成调用
*
* @param analysisContext analysisContext类
* @author ZYJ
* @date 2021/8/23 16:18
*/
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
// 这里也要保存数据, 确保最后遗留的数据也存储到数据库
saveData();
}
/**
* 保存导入数据
*
* @author ZYJ
* @date 2021/8/23 16:20
*/
private void saveData() {
log.info("{}条数据,开始存储数据库!", concurrentHashMap.size());
attendanceRuleWifiService.addBssidList(concurrentHashMap, ruleId);
log.info("存储数据库成功!");
}
}
@@ -1,32 +0,0 @@
package com.yida.data.attendance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yida.data.attendance.dto.PageAttendanceRecordDTO;
import com.yida.data.attendance.vo.AttendanceRuleVO;
import com.yida.data.common.core.entity.attendance.EduAttendanceRecord;
import com.yida.data.common.core.entity.attendance.EduAttendanceStaffRecord;
import com.yida.data.common.core.entity.attendance.attendance.AttendanceRecord;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import org.apache.ibatis.annotations.Param;
/**
* 进出记录 Mapper
*
* @date 2023-08-09 11:37:25
*/
public interface AttendanceRecordMapper extends BaseMapper<AttendanceRecord> {
IPage<EduAttendanceRecord> listOldDataPage(@Param("page") Page page, @Param("schoolId") Long schoolId, @Param("startDateTime")
LocalDateTime startDateTime);
IPage<EduAttendanceStaffRecord> listStaffOldDataPage(@Param("page") Page page, @Param("schoolId") Long schoolId,
@Param("startDateTime") LocalDateTime startDateTime);
IPage<AttendanceRecord> listRecordPage(Page page, @Param("dto") PageAttendanceRecordDTO dto);
}
@@ -1,10 +0,0 @@
package com.yida.data.attendance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yida.data.common.core.entity.attendance.attendance.AttendanceReportPushRecord;
import com.yida.data.common.core.entity.attendance.attendance.AttendanceReportStrategy;
public interface AttendanceReportPushRecordMapper extends BaseMapper<AttendanceReportPushRecord> {
}
@@ -1,15 +0,0 @@
package com.yida.data.attendance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yida.data.common.core.entity.attendance.attendance.AttendanceReportStrategy;
import com.yida.data.common.core.entity.attendance.attendance.AttendanceRuleWifi;
/**
* 考勤推送策略关联wifi Mapper
*
* @date 2023-08-09 11:37:25
*/
public interface AttendanceReportStrategyMapper extends BaseMapper<AttendanceReportStrategy> {
}

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