Commit 32725a99 authored by 赵啸非's avatar 赵啸非

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	attendance-performance-manager/src/main/java/com/mortals/xhx/module/attendance/web/AttendanceRecordHikController.java
parents d7b04a2b 9b6ae3ba
package com.mortals.xhx.module.attendance.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.attendance.model.AttendanceExportRecordEntity;
import java.util.List;
/**
* 导入导出记录Dao
* 导入导出记录 DAO接口
*
* @author zxfei
* @date 2023-04-17
*/
public interface AttendanceExportRecordDao extends ICRUDDao<AttendanceExportRecordEntity,Long>{
}
package com.mortals.xhx.module.attendance.dao.ibatis;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.attendance.dao.AttendanceExportRecordDao;
import com.mortals.xhx.module.attendance.model.AttendanceExportRecordEntity;
import java.util.Date;
import com.mortals.framework.dao.ibatis.BaseCRUDDaoMybatis;
import java.util.List;
/**
* 导入导出记录DaoImpl DAO接口
*
* @author zxfei
* @date 2023-04-17
*/
@Repository("attendanceExportRecordDao")
public class AttendanceExportRecordDaoImpl extends BaseCRUDDaoMybatis<AttendanceExportRecordEntity,Long> implements AttendanceExportRecordDao {
}
package com.mortals.xhx.module.attendance.model;
import java.util.List;
import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.attendance.model.vo.AttendanceExportRecordVo;
/**
* 导入导出记录实体对象
*
* @author zxfei
* @date 2023-04-17
*/
public class AttendanceExportRecordEntity extends AttendanceExportRecordVo {
private static final long serialVersionUID = 1L;
/**
* 选择部门名称
*/
private String deptName;
/**
* 选择考勤组名称
*/
private String groupName;
/**
* 选择班次名称
*/
private String className;
/**
* 选择开始时间和结束时间段
*/
private String attendanceDate;
/**
* 导出还是导入(1.导出,2.导入)
*/
private Integer exportOrImport;
/**
* 导出文件路径
*/
private String filePath;
/**
* 汇总还是每日打卡记录(1.汇总,2.每日打卡记录)
*/
private Integer type;
/**
* 备注
*/
private String remark;
/**
* 选择id列表
*/
private String recordIdList;
public AttendanceExportRecordEntity(){}
/**
* 获取 选择部门名称
* @return String
*/
public String getDeptName(){
return deptName;
}
/**
* 设置 选择部门名称
* @param deptName
*/
public void setDeptName(String deptName){
this.deptName = deptName;
}
/**
* 获取 选择考勤组名称
* @return String
*/
public String getGroupName(){
return groupName;
}
/**
* 设置 选择考勤组名称
* @param groupName
*/
public void setGroupName(String groupName){
this.groupName = groupName;
}
/**
* 获取 选择班次名称
* @return String
*/
public String getClassName(){
return className;
}
/**
* 设置 选择班次名称
* @param className
*/
public void setClassName(String className){
this.className = className;
}
/**
* 获取 选择开始时间和结束时间段
* @return String
*/
public String getAttendanceDate(){
return attendanceDate;
}
/**
* 设置 选择开始时间和结束时间段
* @param attendanceDate
*/
public void setAttendanceDate(String attendanceDate){
this.attendanceDate = attendanceDate;
}
/**
* 获取 导出还是导入(1.导出,2.导入)
* @return Integer
*/
public Integer getExportOrImport(){
return exportOrImport;
}
/**
* 设置 导出还是导入(1.导出,2.导入)
* @param exportOrImport
*/
public void setExportOrImport(Integer exportOrImport){
this.exportOrImport = exportOrImport;
}
/**
* 获取 导出文件路径
* @return String
*/
public String getFilePath(){
return filePath;
}
/**
* 设置 导出文件路径
* @param filePath
*/
public void setFilePath(String filePath){
this.filePath = filePath;
}
/**
* 获取 汇总还是每日打卡记录(1.汇总,2.每日打卡记录)
* @return Integer
*/
public Integer getType(){
return type;
}
/**
* 设置 汇总还是每日打卡记录(1.汇总,2.每日打卡记录)
* @param type
*/
public void setType(Integer type){
this.type = type;
}
/**
* 获取 备注
* @return String
*/
public String getRemark(){
return remark;
}
/**
* 设置 备注
* @param remark
*/
public void setRemark(String remark){
this.remark = remark;
}
/**
* 获取 选择id列表
* @return String
*/
public String getRecordIdList(){
return recordIdList;
}
/**
* 设置 选择id列表
* @param recordIdList
*/
public void setRecordIdList(String recordIdList){
this.recordIdList = recordIdList;
}
@Override
public int hashCode() {
return this.getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj instanceof AttendanceExportRecordEntity) {
AttendanceExportRecordEntity tmp = (AttendanceExportRecordEntity) obj;
if (this.getId() == tmp.getId()) {
return true;
}
}
return false;
}
public String toString(){
StringBuilder sb = new StringBuilder("");
sb.append(",deptName:").append(getDeptName());
sb.append(",groupName:").append(getGroupName());
sb.append(",className:").append(getClassName());
sb.append(",attendanceDate:").append(getAttendanceDate());
sb.append(",exportOrImport:").append(getExportOrImport());
sb.append(",filePath:").append(getFilePath());
sb.append(",type:").append(getType());
sb.append(",remark:").append(getRemark());
sb.append(",recordIdList:").append(getRecordIdList());
return sb.toString();
}
public void initAttrValue(){
this.deptName = "";
this.groupName = "";
this.className = "";
this.attendanceDate = "";
this.exportOrImport = 1;
this.filePath = "";
this.type = 1;
this.remark = "";
this.recordIdList = "";
}
}
package com.mortals.xhx.module.attendance.model;
import java.util.List;
import com.mortals.xhx.module.attendance.model.AttendanceExportRecordEntity;
/**
* 导入导出记录查询对象
*
* @author zxfei
* @date 2023-04-17
*/
public class AttendanceExportRecordQuery extends AttendanceExportRecordEntity {
/** 开始 */
private Long idStart;
/** 结束 */
private Long idEnd;
/** 增加 */
private Long idIncrement;
/** 列表 */
private List <Long> idList;
/** 排除列表 */
private List <Long> idNotList;
/** 选择部门名称 */
private List<String> deptNameList;
/** 选择部门名称排除列表 */
private List <String> deptNameNotList;
/** 选择考勤组名称 */
private List<String> groupNameList;
/** 选择考勤组名称排除列表 */
private List <String> groupNameNotList;
/** 选择班次名称 */
private List<String> classNameList;
/** 选择班次名称排除列表 */
private List <String> classNameNotList;
/** 选择开始时间和结束时间段 */
private List<String> attendanceDateList;
/** 选择开始时间和结束时间段排除列表 */
private List <String> attendanceDateNotList;
/** 开始 导出还是导入(1.导出,2.导入) */
private Integer exportOrImportStart;
/** 结束 导出还是导入(1.导出,2.导入) */
private Integer exportOrImportEnd;
/** 增加 导出还是导入(1.导出,2.导入) */
private Integer exportOrImportIncrement;
/** 导出还是导入(1.导出,2.导入)列表 */
private List <Integer> exportOrImportList;
/** 导出还是导入(1.导出,2.导入)排除列表 */
private List <Integer> exportOrImportNotList;
/** 导出文件路径 */
private List<String> filePathList;
/** 导出文件路径排除列表 */
private List <String> filePathNotList;
/** 开始 汇总还是每日打卡记录(1.汇总,2.每日打卡记录) */
private Integer typeStart;
/** 结束 汇总还是每日打卡记录(1.汇总,2.每日打卡记录) */
private Integer typeEnd;
/** 增加 汇总还是每日打卡记录(1.汇总,2.每日打卡记录) */
private Integer typeIncrement;
/** 汇总还是每日打卡记录(1.汇总,2.每日打卡记录)列表 */
private List <Integer> typeList;
/** 汇总还是每日打卡记录(1.汇总,2.每日打卡记录)排除列表 */
private List <Integer> typeNotList;
/** 备注 */
private List<String> remarkList;
/** 备注排除列表 */
private List <String> remarkNotList;
/** 开始 创建用户 */
private Long createUserIdStart;
/** 结束 创建用户 */
private Long createUserIdEnd;
/** 增加 创建用户 */
private Long createUserIdIncrement;
/** 创建用户列表 */
private List <Long> createUserIdList;
/** 创建用户排除列表 */
private List <Long> createUserIdNotList;
/** 开始 创建时间 */
private String createTimeStart;
/** 结束 创建时间 */
private String createTimeEnd;
/** 开始 更新用户 */
private Long updateUserIdStart;
/** 结束 更新用户 */
private Long updateUserIdEnd;
/** 增加 更新用户 */
private Long updateUserIdIncrement;
/** 更新用户列表 */
private List <Long> updateUserIdList;
/** 更新用户排除列表 */
private List <Long> updateUserIdNotList;
/** 开始 更新时间 */
private String updateTimeStart;
/** 结束 更新时间 */
private String updateTimeEnd;
/** 选择id列表 */
private List<String> recordIdListList;
/** 选择id列表排除列表 */
private List <String> recordIdListNotList;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<AttendanceExportRecordQuery> orConditionList;
/** AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
private List<AttendanceExportRecordQuery> andConditionList;
public AttendanceExportRecordQuery(){}
/**
* 获取 开始
* @return idStart
*/
public Long getIdStart(){
return this.idStart;
}
/**
* 设置 开始
* @param idStart
*/
public void setIdStart(Long idStart){
this.idStart = idStart;
}
/**
* 获取 结束
* @return $idEnd
*/
public Long getIdEnd(){
return this.idEnd;
}
/**
* 设置 结束
* @param idEnd
*/
public void setIdEnd(Long idEnd){
this.idEnd = idEnd;
}
/**
* 获取 增加
* @return idIncrement
*/
public Long getIdIncrement(){
return this.idIncrement;
}
/**
* 设置 增加
* @param idIncrement
*/
public void setIdIncrement(Long idIncrement){
this.idIncrement = idIncrement;
}
/**
* 获取
* @return idList
*/
public List<Long> getIdList(){
return this.idList;
}
/**
* 设置
* @param idList
*/
public void setIdList(List<Long> idList){
this.idList = idList;
}
/**
* 获取
* @return idNotList
*/
public List<Long> getIdNotList(){
return this.idNotList;
}
/**
* 设置
* @param idNotList
*/
public void setIdNotList(List<Long> idNotList){
this.idNotList = idNotList;
}
/**
* 获取 选择部门名称
* @return deptNameList
*/
public List<String> getDeptNameList(){
return this.deptNameList;
}
/**
* 设置 选择部门名称
* @param deptNameList
*/
public void setDeptNameList(List<String> deptNameList){
this.deptNameList = deptNameList;
}
/**
* 获取 选择部门名称
* @return deptNameNotList
*/
public List<String> getDeptNameNotList(){
return this.deptNameNotList;
}
/**
* 设置 选择部门名称
* @param deptNameNotList
*/
public void setDeptNameNotList(List<String> deptNameNotList){
this.deptNameNotList = deptNameNotList;
}
/**
* 获取 选择考勤组名称
* @return groupNameList
*/
public List<String> getGroupNameList(){
return this.groupNameList;
}
/**
* 设置 选择考勤组名称
* @param groupNameList
*/
public void setGroupNameList(List<String> groupNameList){
this.groupNameList = groupNameList;
}
/**
* 获取 选择考勤组名称
* @return groupNameNotList
*/
public List<String> getGroupNameNotList(){
return this.groupNameNotList;
}
/**
* 设置 选择考勤组名称
* @param groupNameNotList
*/
public void setGroupNameNotList(List<String> groupNameNotList){
this.groupNameNotList = groupNameNotList;
}
/**
* 获取 选择班次名称
* @return classNameList
*/
public List<String> getClassNameList(){
return this.classNameList;
}
/**
* 设置 选择班次名称
* @param classNameList
*/
public void setClassNameList(List<String> classNameList){
this.classNameList = classNameList;
}
/**
* 获取 选择班次名称
* @return classNameNotList
*/
public List<String> getClassNameNotList(){
return this.classNameNotList;
}
/**
* 设置 选择班次名称
* @param classNameNotList
*/
public void setClassNameNotList(List<String> classNameNotList){
this.classNameNotList = classNameNotList;
}
/**
* 获取 选择开始时间和结束时间段
* @return attendanceDateList
*/
public List<String> getAttendanceDateList(){
return this.attendanceDateList;
}
/**
* 设置 选择开始时间和结束时间段
* @param attendanceDateList
*/
public void setAttendanceDateList(List<String> attendanceDateList){
this.attendanceDateList = attendanceDateList;
}
/**
* 获取 选择开始时间和结束时间段
* @return attendanceDateNotList
*/
public List<String> getAttendanceDateNotList(){
return this.attendanceDateNotList;
}
/**
* 设置 选择开始时间和结束时间段
* @param attendanceDateNotList
*/
public void setAttendanceDateNotList(List<String> attendanceDateNotList){
this.attendanceDateNotList = attendanceDateNotList;
}
/**
* 获取 开始 导出还是导入(1.导出,2.导入)
* @return exportOrImportStart
*/
public Integer getExportOrImportStart(){
return this.exportOrImportStart;
}
/**
* 设置 开始 导出还是导入(1.导出,2.导入)
* @param exportOrImportStart
*/
public void setExportOrImportStart(Integer exportOrImportStart){
this.exportOrImportStart = exportOrImportStart;
}
/**
* 获取 结束 导出还是导入(1.导出,2.导入)
* @return $exportOrImportEnd
*/
public Integer getExportOrImportEnd(){
return this.exportOrImportEnd;
}
/**
* 设置 结束 导出还是导入(1.导出,2.导入)
* @param exportOrImportEnd
*/
public void setExportOrImportEnd(Integer exportOrImportEnd){
this.exportOrImportEnd = exportOrImportEnd;
}
/**
* 获取 增加 导出还是导入(1.导出,2.导入)
* @return exportOrImportIncrement
*/
public Integer getExportOrImportIncrement(){
return this.exportOrImportIncrement;
}
/**
* 设置 增加 导出还是导入(1.导出,2.导入)
* @param exportOrImportIncrement
*/
public void setExportOrImportIncrement(Integer exportOrImportIncrement){
this.exportOrImportIncrement = exportOrImportIncrement;
}
/**
* 获取 导出还是导入(1.导出,2.导入)
* @return exportOrImportList
*/
public List<Integer> getExportOrImportList(){
return this.exportOrImportList;
}
/**
* 设置 导出还是导入(1.导出,2.导入)
* @param exportOrImportList
*/
public void setExportOrImportList(List<Integer> exportOrImportList){
this.exportOrImportList = exportOrImportList;
}
/**
* 获取 导出还是导入(1.导出,2.导入)
* @return exportOrImportNotList
*/
public List<Integer> getExportOrImportNotList(){
return this.exportOrImportNotList;
}
/**
* 设置 导出还是导入(1.导出,2.导入)
* @param exportOrImportNotList
*/
public void setExportOrImportNotList(List<Integer> exportOrImportNotList){
this.exportOrImportNotList = exportOrImportNotList;
}
/**
* 获取 导出文件路径
* @return filePathList
*/
public List<String> getFilePathList(){
return this.filePathList;
}
/**
* 设置 导出文件路径
* @param filePathList
*/
public void setFilePathList(List<String> filePathList){
this.filePathList = filePathList;
}
/**
* 获取 导出文件路径
* @return filePathNotList
*/
public List<String> getFilePathNotList(){
return this.filePathNotList;
}
/**
* 设置 导出文件路径
* @param filePathNotList
*/
public void setFilePathNotList(List<String> filePathNotList){
this.filePathNotList = filePathNotList;
}
/**
* 获取 开始 汇总还是每日打卡记录(1.汇总,2.每日打卡记录)
* @return typeStart
*/
public Integer getTypeStart(){
return this.typeStart;
}
/**
* 设置 开始 汇总还是每日打卡记录(1.汇总,2.每日打卡记录)
* @param typeStart
*/
public void setTypeStart(Integer typeStart){
this.typeStart = typeStart;
}
/**
* 获取 结束 汇总还是每日打卡记录(1.汇总,2.每日打卡记录)
* @return $typeEnd
*/
public Integer getTypeEnd(){
return this.typeEnd;
}
/**
* 设置 结束 汇总还是每日打卡记录(1.汇总,2.每日打卡记录)
* @param typeEnd
*/
public void setTypeEnd(Integer typeEnd){
this.typeEnd = typeEnd;
}
/**
* 获取 增加 汇总还是每日打卡记录(1.汇总,2.每日打卡记录)
* @return typeIncrement
*/
public Integer getTypeIncrement(){
return this.typeIncrement;
}
/**
* 设置 增加 汇总还是每日打卡记录(1.汇总,2.每日打卡记录)
* @param typeIncrement
*/
public void setTypeIncrement(Integer typeIncrement){
this.typeIncrement = typeIncrement;
}
/**
* 获取 汇总还是每日打卡记录(1.汇总,2.每日打卡记录)
* @return typeList
*/
public List<Integer> getTypeList(){
return this.typeList;
}
/**
* 设置 汇总还是每日打卡记录(1.汇总,2.每日打卡记录)
* @param typeList
*/
public void setTypeList(List<Integer> typeList){
this.typeList = typeList;
}
/**
* 获取 汇总还是每日打卡记录(1.汇总,2.每日打卡记录)
* @return typeNotList
*/
public List<Integer> getTypeNotList(){
return this.typeNotList;
}
/**
* 设置 汇总还是每日打卡记录(1.汇总,2.每日打卡记录)
* @param typeNotList
*/
public void setTypeNotList(List<Integer> typeNotList){
this.typeNotList = typeNotList;
}
/**
* 获取 备注
* @return remarkList
*/
public List<String> getRemarkList(){
return this.remarkList;
}
/**
* 设置 备注
* @param remarkList
*/
public void setRemarkList(List<String> remarkList){
this.remarkList = remarkList;
}
/**
* 获取 备注
* @return remarkNotList
*/
public List<String> getRemarkNotList(){
return this.remarkNotList;
}
/**
* 设置 备注
* @param remarkNotList
*/
public void setRemarkNotList(List<String> remarkNotList){
this.remarkNotList = remarkNotList;
}
/**
* 获取 开始 创建用户
* @return createUserIdStart
*/
public Long getCreateUserIdStart(){
return this.createUserIdStart;
}
/**
* 设置 开始 创建用户
* @param createUserIdStart
*/
public void setCreateUserIdStart(Long createUserIdStart){
this.createUserIdStart = createUserIdStart;
}
/**
* 获取 结束 创建用户
* @return $createUserIdEnd
*/
public Long getCreateUserIdEnd(){
return this.createUserIdEnd;
}
/**
* 设置 结束 创建用户
* @param createUserIdEnd
*/
public void setCreateUserIdEnd(Long createUserIdEnd){
this.createUserIdEnd = createUserIdEnd;
}
/**
* 获取 增加 创建用户
* @return createUserIdIncrement
*/
public Long getCreateUserIdIncrement(){
return this.createUserIdIncrement;
}
/**
* 设置 增加 创建用户
* @param createUserIdIncrement
*/
public void setCreateUserIdIncrement(Long createUserIdIncrement){
this.createUserIdIncrement = createUserIdIncrement;
}
/**
* 获取 创建用户
* @return createUserIdList
*/
public List<Long> getCreateUserIdList(){
return this.createUserIdList;
}
/**
* 设置 创建用户
* @param createUserIdList
*/
public void setCreateUserIdList(List<Long> createUserIdList){
this.createUserIdList = createUserIdList;
}
/**
* 获取 创建用户
* @return createUserIdNotList
*/
public List<Long> getCreateUserIdNotList(){
return this.createUserIdNotList;
}
/**
* 设置 创建用户
* @param createUserIdNotList
*/
public void setCreateUserIdNotList(List<Long> createUserIdNotList){
this.createUserIdNotList = createUserIdNotList;
}
/**
* 获取 开始 创建时间
* @return createTimeStart
*/
public String getCreateTimeStart(){
return this.createTimeStart;
}
/**
* 设置 开始 创建时间
* @param createTimeStart
*/
public void setCreateTimeStart(String createTimeStart){
this.createTimeStart = createTimeStart;
}
/**
* 获取 结束 创建时间
* @return createTimeEnd
*/
public String getCreateTimeEnd(){
return this.createTimeEnd;
}
/**
* 设置 结束 创建时间
* @param createTimeEnd
*/
public void setCreateTimeEnd(String createTimeEnd){
this.createTimeEnd = createTimeEnd;
}
/**
* 获取 开始 更新用户
* @return updateUserIdStart
*/
public Long getUpdateUserIdStart(){
return this.updateUserIdStart;
}
/**
* 设置 开始 更新用户
* @param updateUserIdStart
*/
public void setUpdateUserIdStart(Long updateUserIdStart){
this.updateUserIdStart = updateUserIdStart;
}
/**
* 获取 结束 更新用户
* @return $updateUserIdEnd
*/
public Long getUpdateUserIdEnd(){
return this.updateUserIdEnd;
}
/**
* 设置 结束 更新用户
* @param updateUserIdEnd
*/
public void setUpdateUserIdEnd(Long updateUserIdEnd){
this.updateUserIdEnd = updateUserIdEnd;
}
/**
* 获取 增加 更新用户
* @return updateUserIdIncrement
*/
public Long getUpdateUserIdIncrement(){
return this.updateUserIdIncrement;
}
/**
* 设置 增加 更新用户
* @param updateUserIdIncrement
*/
public void setUpdateUserIdIncrement(Long updateUserIdIncrement){
this.updateUserIdIncrement = updateUserIdIncrement;
}
/**
* 获取 更新用户
* @return updateUserIdList
*/
public List<Long> getUpdateUserIdList(){
return this.updateUserIdList;
}
/**
* 设置 更新用户
* @param updateUserIdList
*/
public void setUpdateUserIdList(List<Long> updateUserIdList){
this.updateUserIdList = updateUserIdList;
}
/**
* 获取 更新用户
* @return updateUserIdNotList
*/
public List<Long> getUpdateUserIdNotList(){
return this.updateUserIdNotList;
}
/**
* 设置 更新用户
* @param updateUserIdNotList
*/
public void setUpdateUserIdNotList(List<Long> updateUserIdNotList){
this.updateUserIdNotList = updateUserIdNotList;
}
/**
* 获取 开始 更新时间
* @return updateTimeStart
*/
public String getUpdateTimeStart(){
return this.updateTimeStart;
}
/**
* 设置 开始 更新时间
* @param updateTimeStart
*/
public void setUpdateTimeStart(String updateTimeStart){
this.updateTimeStart = updateTimeStart;
}
/**
* 获取 结束 更新时间
* @return updateTimeEnd
*/
public String getUpdateTimeEnd(){
return this.updateTimeEnd;
}
/**
* 设置 结束 更新时间
* @param updateTimeEnd
*/
public void setUpdateTimeEnd(String updateTimeEnd){
this.updateTimeEnd = updateTimeEnd;
}
/**
* 获取 选择id列表
* @return recordIdListList
*/
public List<String> getRecordIdListList(){
return this.recordIdListList;
}
/**
* 设置 选择id列表
* @param recordIdListList
*/
public void setRecordIdListList(List<String> recordIdListList){
this.recordIdListList = recordIdListList;
}
/**
* 获取 选择id列表
* @return recordIdListNotList
*/
public List<String> getRecordIdListNotList(){
return this.recordIdListNotList;
}
/**
* 设置 选择id列表
* @param recordIdListNotList
*/
public void setRecordIdListNotList(List<String> recordIdListNotList){
this.recordIdListNotList = recordIdListNotList;
}
/**
* 设置
* @param id
*/
public AttendanceExportRecordQuery id(Long id){
setId(id);
return this;
}
/**
* 设置 开始
* @param idStart
*/
public AttendanceExportRecordQuery idStart(Long idStart){
this.idStart = idStart;
return this;
}
/**
* 设置 结束
* @param idEnd
*/
public AttendanceExportRecordQuery idEnd(Long idEnd){
this.idEnd = idEnd;
return this;
}
/**
* 设置 增加
* @param idIncrement
*/
public AttendanceExportRecordQuery idIncrement(Long idIncrement){
this.idIncrement = idIncrement;
return this;
}
/**
* 设置
* @param idList
*/
public AttendanceExportRecordQuery idList(List<Long> idList){
this.idList = idList;
return this;
}
/**
* 设置
* @param idNotList
*/
public AttendanceExportRecordQuery idNotList(List<Long> idNotList){
this.idNotList = idNotList;
return this;
}
/**
* 设置 选择部门名称
* @param deptName
*/
public AttendanceExportRecordQuery deptName(String deptName){
setDeptName(deptName);
return this;
}
/**
* 设置 选择部门名称
* @param deptNameList
*/
public AttendanceExportRecordQuery deptNameList(List<String> deptNameList){
this.deptNameList = deptNameList;
return this;
}
/**
* 设置 选择考勤组名称
* @param groupName
*/
public AttendanceExportRecordQuery groupName(String groupName){
setGroupName(groupName);
return this;
}
/**
* 设置 选择考勤组名称
* @param groupNameList
*/
public AttendanceExportRecordQuery groupNameList(List<String> groupNameList){
this.groupNameList = groupNameList;
return this;
}
/**
* 设置 选择班次名称
* @param className
*/
public AttendanceExportRecordQuery className(String className){
setClassName(className);
return this;
}
/**
* 设置 选择班次名称
* @param classNameList
*/
public AttendanceExportRecordQuery classNameList(List<String> classNameList){
this.classNameList = classNameList;
return this;
}
/**
* 设置 选择开始时间和结束时间段
* @param attendanceDate
*/
public AttendanceExportRecordQuery attendanceDate(String attendanceDate){
setAttendanceDate(attendanceDate);
return this;
}
/**
* 设置 选择开始时间和结束时间段
* @param attendanceDateList
*/
public AttendanceExportRecordQuery attendanceDateList(List<String> attendanceDateList){
this.attendanceDateList = attendanceDateList;
return this;
}
/**
* 设置 导出还是导入(1.导出,2.导入)
* @param exportOrImport
*/
public AttendanceExportRecordQuery exportOrImport(Integer exportOrImport){
setExportOrImport(exportOrImport);
return this;
}
/**
* 设置 开始 导出还是导入(1.导出,2.导入)
* @param exportOrImportStart
*/
public AttendanceExportRecordQuery exportOrImportStart(Integer exportOrImportStart){
this.exportOrImportStart = exportOrImportStart;
return this;
}
/**
* 设置 结束 导出还是导入(1.导出,2.导入)
* @param exportOrImportEnd
*/
public AttendanceExportRecordQuery exportOrImportEnd(Integer exportOrImportEnd){
this.exportOrImportEnd = exportOrImportEnd;
return this;
}
/**
* 设置 增加 导出还是导入(1.导出,2.导入)
* @param exportOrImportIncrement
*/
public AttendanceExportRecordQuery exportOrImportIncrement(Integer exportOrImportIncrement){
this.exportOrImportIncrement = exportOrImportIncrement;
return this;
}
/**
* 设置 导出还是导入(1.导出,2.导入)
* @param exportOrImportList
*/
public AttendanceExportRecordQuery exportOrImportList(List<Integer> exportOrImportList){
this.exportOrImportList = exportOrImportList;
return this;
}
/**
* 设置 导出还是导入(1.导出,2.导入)
* @param exportOrImportNotList
*/
public AttendanceExportRecordQuery exportOrImportNotList(List<Integer> exportOrImportNotList){
this.exportOrImportNotList = exportOrImportNotList;
return this;
}
/**
* 设置 导出文件路径
* @param filePath
*/
public AttendanceExportRecordQuery filePath(String filePath){
setFilePath(filePath);
return this;
}
/**
* 设置 导出文件路径
* @param filePathList
*/
public AttendanceExportRecordQuery filePathList(List<String> filePathList){
this.filePathList = filePathList;
return this;
}
/**
* 设置 汇总还是每日打卡记录(1.汇总,2.每日打卡记录)
* @param type
*/
public AttendanceExportRecordQuery type(Integer type){
setType(type);
return this;
}
/**
* 设置 开始 汇总还是每日打卡记录(1.汇总,2.每日打卡记录)
* @param typeStart
*/
public AttendanceExportRecordQuery typeStart(Integer typeStart){
this.typeStart = typeStart;
return this;
}
/**
* 设置 结束 汇总还是每日打卡记录(1.汇总,2.每日打卡记录)
* @param typeEnd
*/
public AttendanceExportRecordQuery typeEnd(Integer typeEnd){
this.typeEnd = typeEnd;
return this;
}
/**
* 设置 增加 汇总还是每日打卡记录(1.汇总,2.每日打卡记录)
* @param typeIncrement
*/
public AttendanceExportRecordQuery typeIncrement(Integer typeIncrement){
this.typeIncrement = typeIncrement;
return this;
}
/**
* 设置 汇总还是每日打卡记录(1.汇总,2.每日打卡记录)
* @param typeList
*/
public AttendanceExportRecordQuery typeList(List<Integer> typeList){
this.typeList = typeList;
return this;
}
/**
* 设置 汇总还是每日打卡记录(1.汇总,2.每日打卡记录)
* @param typeNotList
*/
public AttendanceExportRecordQuery typeNotList(List<Integer> typeNotList){
this.typeNotList = typeNotList;
return this;
}
/**
* 设置 备注
* @param remark
*/
public AttendanceExportRecordQuery remark(String remark){
setRemark(remark);
return this;
}
/**
* 设置 备注
* @param remarkList
*/
public AttendanceExportRecordQuery remarkList(List<String> remarkList){
this.remarkList = remarkList;
return this;
}
/**
* 设置 创建用户
* @param createUserId
*/
public AttendanceExportRecordQuery createUserId(Long createUserId){
setCreateUserId(createUserId);
return this;
}
/**
* 设置 开始 创建用户
* @param createUserIdStart
*/
public AttendanceExportRecordQuery createUserIdStart(Long createUserIdStart){
this.createUserIdStart = createUserIdStart;
return this;
}
/**
* 设置 结束 创建用户
* @param createUserIdEnd
*/
public AttendanceExportRecordQuery createUserIdEnd(Long createUserIdEnd){
this.createUserIdEnd = createUserIdEnd;
return this;
}
/**
* 设置 增加 创建用户
* @param createUserIdIncrement
*/
public AttendanceExportRecordQuery createUserIdIncrement(Long createUserIdIncrement){
this.createUserIdIncrement = createUserIdIncrement;
return this;
}
/**
* 设置 创建用户
* @param createUserIdList
*/
public AttendanceExportRecordQuery createUserIdList(List<Long> createUserIdList){
this.createUserIdList = createUserIdList;
return this;
}
/**
* 设置 创建用户
* @param createUserIdNotList
*/
public AttendanceExportRecordQuery createUserIdNotList(List<Long> createUserIdNotList){
this.createUserIdNotList = createUserIdNotList;
return this;
}
/**
* 设置 更新用户
* @param updateUserId
*/
public AttendanceExportRecordQuery updateUserId(Long updateUserId){
setUpdateUserId(updateUserId);
return this;
}
/**
* 设置 开始 更新用户
* @param updateUserIdStart
*/
public AttendanceExportRecordQuery updateUserIdStart(Long updateUserIdStart){
this.updateUserIdStart = updateUserIdStart;
return this;
}
/**
* 设置 结束 更新用户
* @param updateUserIdEnd
*/
public AttendanceExportRecordQuery updateUserIdEnd(Long updateUserIdEnd){
this.updateUserIdEnd = updateUserIdEnd;
return this;
}
/**
* 设置 增加 更新用户
* @param updateUserIdIncrement
*/
public AttendanceExportRecordQuery updateUserIdIncrement(Long updateUserIdIncrement){
this.updateUserIdIncrement = updateUserIdIncrement;
return this;
}
/**
* 设置 更新用户
* @param updateUserIdList
*/
public AttendanceExportRecordQuery updateUserIdList(List<Long> updateUserIdList){
this.updateUserIdList = updateUserIdList;
return this;
}
/**
* 设置 更新用户
* @param updateUserIdNotList
*/
public AttendanceExportRecordQuery updateUserIdNotList(List<Long> updateUserIdNotList){
this.updateUserIdNotList = updateUserIdNotList;
return this;
}
/**
* 设置 选择id列表
* @param recordIdList
*/
public AttendanceExportRecordQuery recordIdList(String recordIdList){
setRecordIdList(recordIdList);
return this;
}
/**
* 设置 选择id列表
* @param recordIdListList
*/
public AttendanceExportRecordQuery recordIdListList(List<String> recordIdListList){
this.recordIdListList = recordIdListList;
return this;
}
/**
* 获取 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @return orConditionList
*/
public List<AttendanceExportRecordQuery> getOrConditionList(){
return this.orConditionList;
}
/**
* 设置 OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
* @param orConditionList
*/
public void setOrConditionList(List<AttendanceExportRecordQuery> orConditionList){
this.orConditionList = orConditionList;
}
/**
* 获取 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @return andConditionList
*/
public List<AttendanceExportRecordQuery> getAndConditionList(){
return this.andConditionList;
}
/**
* 设置 AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
* @param andConditionList
*/
public void setAndConditionList(List<AttendanceExportRecordQuery> andConditionList){
this.andConditionList = andConditionList;
}
}
......@@ -40,6 +40,7 @@ public class AttendanceGroupFixedworkSpecialEntity extends AttendanceGroupFixedw
/**
* 特殊时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date specialTime;
/**
* 备注
......@@ -48,10 +49,12 @@ public class AttendanceGroupFixedworkSpecialEntity extends AttendanceGroupFixedw
/**
* 时间段时候开始时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date specialStartTime;
/**
* 时间段结束时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date specialEndTime;
......@@ -237,4 +240,4 @@ public class AttendanceGroupFixedworkSpecialEntity extends AttendanceGroupFixedw
this.specialEndTime = null;
}
}
\ No newline at end of file
}
package com.mortals.xhx.module.attendance.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.attendance.model.AttendanceExportRecordEntity;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
/**
* 导入导出记录视图对象
*
* @author zxfei
* @date 2023-04-17
*/
@Data
public class AttendanceExportRecordVo extends BaseEntityLong {
}
package com.mortals.xhx.module.attendance.model.vo;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.attendance.model.AttendanceGroupEntity;
import com.mortals.xhx.module.attendance.model.AttendanceGroupFixedworkEntity;
import com.mortals.xhx.module.attendance.model.AttendanceGroupFixedworkSpecialEntity;
import com.mortals.xhx.module.attendance.model.AttendanceGroupResponsibleEntity;
import com.mortals.xhx.module.attendance.model.*;
import lombok.Data;
import java.util.ArrayList;
......@@ -18,15 +15,37 @@ import java.util.List;
public class AttendanceGroupVo extends BaseEntityLong {
/**
* 考勤组班次实体类
* 固定班次考勤组班次实体类
*/
private AttendanceGroupFixedworkEntity attendanceGroupFixedworkEntity;
private AttendanceGroupFixedworkEntity groupFixedworkEntity;
/**
* 考勤组固定班次特殊日期配置
* 考勤组负责人对象
*/
private List<AttendanceGroupFixedworkSpecialEntity> fixedworkSpecial;
private AttendanceGroupResponsibleEntity groupResponsibleEntity;
/**
* 自由班制
*/
private AttendanceGroupFreeworkEntity attendanceGroupFreeworkEntity;
private AttendanceGroupResponsibleEntity groupResponsibleEntity;
/**
* 考勤组负责人id
*/
private Long responsibleId;
/**
* 考勤组负责人名字
*/
private String responsibleName;
/**
* 考勤时间
*/
private String attendanceTime;
/**
* 休息日期
*/
private String restTime;
}
......@@ -18,4 +18,18 @@ public class AttendanceRecordHikVo extends BaseEntityLong {
@Excel(name = "所属组织")
private String orgName;
/** 开始 考勤日期 */
private String attendanceDateStart;
/** 结束 考勤日期 */
private String attendanceDateEnd;
/** 员工ID列表 */
private List <Long> staffIdList;
/** 序号,主键,自增长列表 */
private List <Long> idList;
private List<AttendanceRecordHikEntity> list;
}
......@@ -18,5 +18,11 @@ public class AttendanceRecordVo extends BaseEntityLong {
private List<AttendanceGroupFixedworkSpecialVo> list;
private AttendanceRecordDetailEntity attendanceRecordDetailEntity;
/** 开始 打卡日期 */
private String attendanceDateStart;
/** 结束 打卡日期 */
private String attendanceDateEnd;
}
package com.mortals.xhx.module.attendance.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.attendance.model.AttendanceExportRecordEntity;
/**
* AttendanceExportRecordService
*
* 导入导出记录 service接口
*
* @author zxfei
* @date 2023-04-17
*/
public interface AttendanceExportRecordService extends ICRUDService<AttendanceExportRecordEntity,Long>{
}
package com.mortals.xhx.module.attendance.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.attendance.dao.AttendanceGroupFixedworkDao;
import com.mortals.xhx.module.attendance.model.AttendanceGroupFixedworkEntity;
/**
* AttendanceGroupFixedworkService
......@@ -11,4 +12,6 @@ import com.mortals.xhx.module.attendance.model.AttendanceGroupFixedworkEntity;
*/
public interface AttendanceGroupFixedworkService extends ICRUDService<AttendanceGroupFixedworkEntity,Long>{
}
\ No newline at end of file
AttendanceGroupFixedworkDao getDao();
}
package com.mortals.xhx.module.attendance.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.attendance.dao.AttendanceGroupFreeworkDao;
import com.mortals.xhx.module.attendance.model.AttendanceGroupFreeworkEntity;
/**
* AttendanceGroupFreeworkService
......@@ -11,4 +12,6 @@ import com.mortals.xhx.module.attendance.model.AttendanceGroupFreeworkEntity;
*/
public interface AttendanceGroupFreeworkService extends ICRUDService<AttendanceGroupFreeworkEntity,Long>{
}
\ No newline at end of file
AttendanceGroupFreeworkDao getDao();
}
package com.mortals.xhx.module.attendance.service;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.attendance.dao.AttendanceGroupResponsibleDao;
import com.mortals.xhx.module.attendance.model.AttendanceGroupResponsibleEntity;
/**
* AttendanceGroupResponsibleService
......@@ -11,4 +12,6 @@ import com.mortals.xhx.module.attendance.model.AttendanceGroupResponsibleEntity;
*/
public interface AttendanceGroupResponsibleService extends ICRUDService<AttendanceGroupResponsibleEntity,Long>{
}
\ No newline at end of file
AttendanceGroupResponsibleDao getDao();
}
package com.mortals.xhx.module.attendance.service.impl;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.attendance.dao.AttendanceExportRecordDao;
import com.mortals.xhx.module.attendance.model.AttendanceExportRecordEntity;
import com.mortals.xhx.module.attendance.service.AttendanceExportRecordService;
/**
* AttendanceExportRecordService
* 导入导出记录 service实现
*
* @author zxfei
* @date 2023-04-17
*/
@Service("attendanceExportRecordService")
public class AttendanceExportRecordServiceImpl extends AbstractCRUDServiceImpl<AttendanceExportRecordDao, AttendanceExportRecordEntity, Long> implements AttendanceExportRecordService {
}
package com.mortals.xhx.module.attendance.web;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.mortals.framework.model.Context;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.module.attendance.model.AttendanceExportRecordEntity;
import com.mortals.xhx.module.attendance.service.AttendanceExportRecordService;
import org.apache.commons.lang3.ArrayUtils;
import com.mortals.framework.util.StringUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import java.util.Arrays;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
/**
*
* 导入导出记录
*
* @author zxfei
* @date 2023-04-17
*/
@RestController
@RequestMapping("attendance/export/record")
public class AttendanceExportRecordController extends BaseCRUDJsonBodyMappingController<AttendanceExportRecordService,AttendanceExportRecordEntity,Long> {
@Autowired
private ParamService paramService;
public AttendanceExportRecordController(){
super.setModuleDesc( "导入导出记录");
}
@Override
protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "exportOrImport", paramService.getParamBySecondOrganize("AttendanceExportRecord","exportOrImport"));
this.addDict(model, "type", paramService.getParamBySecondOrganize("AttendanceExportRecord","type"));
super.init(model, context);
}
}
package com.mortals.xhx.module.attendance.web;
import cn.hutool.core.stream.CollectorUtil;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.utils.ServletUtils;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.feign.IFeign;
import com.mortals.xhx.module.attendance.model.*;
import com.mortals.xhx.module.attendance.service.*;
import com.mortals.xhx.module.dept.model.DeptEntity;
......@@ -15,9 +17,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.mortals.framework.model.Context;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -38,6 +43,8 @@ public class AttendanceGroupController extends BaseCRUDJsonBodyMappingController
@Autowired
private AttendanceClassService attendanceClassService;
@Autowired
private AttendanceClassDetailService attendanceClassDetailService;
@Autowired
private DeptService deptService;
@Autowired
private AttendanceGroupFixedworkService attendanceGroupFixedworkService;
......@@ -45,6 +52,10 @@ public class AttendanceGroupController extends BaseCRUDJsonBodyMappingController
private AttendanceGroupFixedworkSpecialService specialService;
@Autowired
private AttendanceGroupResponsibleService groupResponsibleService;
@Autowired
private AttendanceGroupFreeworkService freeworkService;
@Autowired
private AttendanceGroupService attendanceGroupService;
public AttendanceGroupController(){
super.setModuleDesc( "考勤组信息");
......@@ -65,20 +76,346 @@ public class AttendanceGroupController extends BaseCRUDJsonBodyMappingController
@Override
protected int saveAfter(AttendanceGroupEntity entity, Map<String, Object> model, Context context) throws AppException {
entity.getAttendanceGroupFixedworkEntity().setGroupId(entity.getId());
entity.getAttendanceGroupFixedworkEntity().setGroupName(entity.getGroupName());
AttendanceGroupFixedworkEntity save = attendanceGroupFixedworkService.save(entity.getAttendanceGroupFixedworkEntity());
List<AttendanceGroupFixedworkSpecialEntity> fixedworkSpecial = entity.getFixedworkSpecial();
if (fixedworkSpecial!=null && fixedworkSpecial.size()>0){
fixedworkSpecial.forEach(item->{
item.setFixedWorkId(save.getId());
});
AttendanceGroupFixedworkQuery condition = new AttendanceGroupFixedworkQuery();
condition.setGroupId(entity.getId());
attendanceGroupFixedworkService.getDao().delete(condition);
AttendanceGroupResponsibleQuery responsibleQuery = new AttendanceGroupResponsibleQuery();
responsibleQuery.setGroupId(entity.getId());
groupResponsibleService.getDao().delete(responsibleQuery);
AttendanceGroupFreeworkQuery freeworkQuery = new AttendanceGroupFreeworkQuery();
freeworkQuery.setGroupId(entity.getId());
freeworkService.getDao().delete(freeworkQuery);
if (entity.getGroupFixedworkEntity()!=null){
entity.getGroupFixedworkEntity().setGroupId(entity.getId());
entity.getGroupFixedworkEntity().setGroupName(entity.getGroupName());
entity.getGroupFixedworkEntity().setCreateUserId(this.getContextUserId(context));
entity.getGroupFixedworkEntity().setCreateTime(new Date());
attendanceGroupFixedworkService.save(entity.getGroupFixedworkEntity(),context);
}
specialService.save(fixedworkSpecial);
AttendanceGroupResponsibleEntity responsibleEntity = entity.getGroupResponsibleEntity();
responsibleEntity.setGroupId(entity.getId());
responsibleEntity.setGroupName(entity.getGroupName());
groupResponsibleService.save(responsibleEntity);
responsibleEntity.setCreateUserId(this.getContextUserId(context));
responsibleEntity.setCreateTime(new Date());
groupResponsibleService.save(responsibleEntity,context);
if (entity.getAttendanceGroupFreeworkEntity()!=null){
entity.getAttendanceGroupFreeworkEntity().setGroupId(entity.getId());
entity.getAttendanceGroupFreeworkEntity().setGroupName(entity.getGroupName());
entity.getAttendanceGroupFreeworkEntity().setCreateUserId(this.getContextUserId(context));
entity.getAttendanceGroupFreeworkEntity().setCreateTime(new Date());
freeworkService.save(entity.getAttendanceGroupFreeworkEntity(),context);
}
return super.saveAfter(entity, model, context);
}
@Override
protected int editAfter(Long id, Map<String, Object> model, AttendanceGroupEntity entity, Context context) throws AppException {
AttendanceGroupResponsibleEntity attendanceGroupResponsibleEntity = groupResponsibleService.selectOne(new AttendanceGroupResponsibleQuery().groupId(id));
AttendanceGroupFixedworkEntity attendanceGroupFixedworkEntity = attendanceGroupFixedworkService.selectOne(new AttendanceGroupFixedworkQuery().groupId(id));
AttendanceGroupFreeworkEntity attendanceGroupFreeworkEntity = freeworkService.selectOne(new AttendanceGroupFreeworkQuery().groupId(id));
entity.setGroupFixedworkEntity(attendanceGroupFixedworkEntity);
entity.setAttendanceGroupFreeworkEntity(attendanceGroupFreeworkEntity);
entity.setGroupResponsibleEntity(attendanceGroupResponsibleEntity);
return super.editAfter(id, model, entity, context);
}
@Override
protected int doListAfter(AttendanceGroupEntity query, Map<String, Object> model, Context context) throws AppException {
List<AttendanceGroupEntity> data = (List<AttendanceGroupEntity>)model.get(KEY_RESULT_DATA);
for (AttendanceGroupEntity entity : data) {
entity.setPersonNum(entity.getAttendanceGroupStaffList().size());
AttendanceGroupResponsibleEntity attendanceGroupResponsibleEntity = groupResponsibleService.selectOne(new AttendanceGroupResponsibleQuery().groupId(entity.getId()));
if (attendanceGroupResponsibleEntity!=null){
entity.setResponsibleId(attendanceGroupResponsibleEntity.getResponsibleId());
entity.setResponsibleName(attendanceGroupResponsibleEntity.getResponsibleName());
}
String monday = "";
String tuesday = "";
String wednesday = "";
String thursday = "";
String friday = "";
String saturday = "";
String sunday = "";
String rest = "";
String attendanceTime = "";
//拼接考勤时间
//固定班制
AttendanceGroupFixedworkEntity attendanceGroupFixedworkEntity = attendanceGroupFixedworkService.selectOne(new AttendanceGroupFixedworkQuery().groupId(entity.getId()));
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
if (Objects.nonNull(attendanceGroupFixedworkEntity)){
//周一
if (Objects.nonNull(attendanceGroupFixedworkEntity)&&attendanceGroupFixedworkEntity.getMonday()==1){
List<AttendanceClassDetailEntity> attendanceClassDetailEntity = attendanceClassDetailService.find(new AttendanceClassDetailQuery().classId(attendanceGroupFixedworkEntity.getMondayClassId()));
String className = attendanceGroupFixedworkEntity.getMondayClassName();
String time = "";
for (AttendanceClassDetailEntity classDetailEntity : attendanceClassDetailEntity) {
if (!time.equals("")){
time = time+"-"+sdf.format(classDetailEntity.getGoWorkDate())+"~"+sdf.format(classDetailEntity.getOffWorkDate());
}else {
time = sdf.format(classDetailEntity.getGoWorkDate())+"~"+sdf.format(classDetailEntity.getOffWorkDate());
}
}
monday ="周一"+"("+className+":"+time+")";
attendanceTime = attendanceTime+monday;
}else {
rest = rest+"周一";
}
//周二
if ((Objects.nonNull(attendanceGroupFixedworkEntity)&&attendanceGroupFixedworkEntity.getTuesday()==1)){
List<AttendanceClassDetailEntity> attendanceClassDetailEntity = attendanceClassDetailService.find(new AttendanceClassDetailQuery().classId(attendanceGroupFixedworkEntity.getTuesdayClassId()));
String className = attendanceGroupFixedworkEntity.getTuesdayClassName();
String time = "";
for (AttendanceClassDetailEntity classDetailEntity : attendanceClassDetailEntity) {
if (!time.equals("")){
time = time+"-"+sdf.format(classDetailEntity.getGoWorkDate())+"~"+sdf.format(classDetailEntity.getOffWorkDate());
}else {
time = sdf.format(classDetailEntity.getGoWorkDate())+"~"+sdf.format(classDetailEntity.getOffWorkDate());
}
}
tuesday = "周二"+"("+className+":"+time+")";
if (!attendanceTime.equals("")){
attendanceTime = attendanceTime + "、"+tuesday;
}else {
attendanceTime = attendanceTime +tuesday;
}
}else {
if (!rest.equals("")){
rest = rest+"、"+"周二";
}else {
rest = rest+"周二";
}
}
//周三
if ((Objects.nonNull(attendanceGroupFixedworkEntity)&&attendanceGroupFixedworkEntity.getWednesday()==1)){
List<AttendanceClassDetailEntity> attendanceClassDetailEntity = attendanceClassDetailService.find(new AttendanceClassDetailQuery().classId(attendanceGroupFixedworkEntity.getWednesdayClassId()));
String className = attendanceGroupFixedworkEntity.getWednesdayClassName();
String time = "";
for (AttendanceClassDetailEntity classDetailEntity : attendanceClassDetailEntity) {
if (!time.equals("")){
time = time+"-"+sdf.format(classDetailEntity.getGoWorkDate())+"~"+sdf.format(classDetailEntity.getOffWorkDate());
}else {
time = sdf.format(classDetailEntity.getGoWorkDate())+"~"+sdf.format(classDetailEntity.getOffWorkDate());
}
}
wednesday = "周三"+"("+className+":"+time+")";
if (!attendanceTime.equals("")){
attendanceTime = attendanceTime + "、"+wednesday;
}else {
attendanceTime = attendanceTime +wednesday;
}
}else {
if (!rest.equals("")){
rest = rest+"、"+"周三";
}else {
rest = rest+"周三";
}
}
//周四
if ((Objects.nonNull(attendanceGroupFixedworkEntity)&&attendanceGroupFixedworkEntity.getThursday()==1)){
List<AttendanceClassDetailEntity> attendanceClassDetailEntity = attendanceClassDetailService.find(new AttendanceClassDetailQuery().classId(attendanceGroupFixedworkEntity.getThursdayClassId()));
String className = attendanceGroupFixedworkEntity.getThursdayClassName();
String time = "";
for (AttendanceClassDetailEntity classDetailEntity : attendanceClassDetailEntity) {
if (!time.equals("")){
time = time+"-"+sdf.format(classDetailEntity.getGoWorkDate())+"~"+sdf.format(classDetailEntity.getOffWorkDate());
}else {
time = sdf.format(classDetailEntity.getGoWorkDate())+"~"+sdf.format(classDetailEntity.getOffWorkDate());
}
}
thursday = "周四"+"("+className+":"+time+")";
if (!attendanceTime.equals("")){
attendanceTime = attendanceTime + "、"+thursday;
}else {
attendanceTime = attendanceTime +thursday;
}
}else {
if (!rest.equals("")){
rest = rest+"、"+"周四";
}else {
rest = rest+"周四";
}
}
//周五
if ((Objects.nonNull(attendanceGroupFixedworkEntity)&&attendanceGroupFixedworkEntity.getFriday()==1)){
List<AttendanceClassDetailEntity> attendanceClassDetailEntity = attendanceClassDetailService.find(new AttendanceClassDetailQuery().classId(attendanceGroupFixedworkEntity.getFridayClassId()));
String className = attendanceGroupFixedworkEntity.getFridayClassName();
String time = "";
for (AttendanceClassDetailEntity classDetailEntity : attendanceClassDetailEntity) {
if (!time.equals("")){
time = time+"-"+sdf.format(classDetailEntity.getGoWorkDate())+"~"+sdf.format(classDetailEntity.getOffWorkDate());
}else {
time = sdf.format(classDetailEntity.getGoWorkDate())+"~"+sdf.format(classDetailEntity.getOffWorkDate());
}
}
friday = "周五"+"("+className+":"+time+")";
if (!attendanceTime.equals("")){
attendanceTime = attendanceTime + "、"+friday;
}else {
attendanceTime = attendanceTime +friday;
}
}else {
if (!rest.equals("")){
rest = rest+"、"+"周五";
}else {
rest = rest+"周五";
}
}
//周六
if ((Objects.nonNull(attendanceGroupFixedworkEntity)&&attendanceGroupFixedworkEntity.getSaturday()==1)){
List<AttendanceClassDetailEntity> attendanceClassDetailEntity = attendanceClassDetailService.find(new AttendanceClassDetailQuery().classId(attendanceGroupFixedworkEntity.getSaturdayClassId()));
String className = attendanceGroupFixedworkEntity.getSaturdayClassName();
String time = "";
for (AttendanceClassDetailEntity classDetailEntity : attendanceClassDetailEntity) {
if (!time.equals("")){
time = time+"-"+sdf.format(classDetailEntity.getGoWorkDate())+"~"+sdf.format(classDetailEntity.getOffWorkDate());
}else {
time = sdf.format(classDetailEntity.getGoWorkDate())+"~"+sdf.format(classDetailEntity.getOffWorkDate());
}
}
saturday = "周六"+"("+className+":"+time+")";
if (!attendanceTime.equals("")){
attendanceTime = attendanceTime + "、"+saturday;
}else {
attendanceTime = attendanceTime +saturday;
}
}else {
if (!rest.equals("")){
rest = rest+"、"+"周六";
}else {
rest = rest+"周六";
}
}
//周日
if ((Objects.nonNull(attendanceGroupFixedworkEntity)&&attendanceGroupFixedworkEntity.getSunday()==1)){
List<AttendanceClassDetailEntity> attendanceClassDetailEntity = attendanceClassDetailService.find(new AttendanceClassDetailQuery().classId(attendanceGroupFixedworkEntity.getSundayClassId()));
String className = attendanceGroupFixedworkEntity.getSundayClassName();
String time = "";
for (AttendanceClassDetailEntity classDetailEntity : attendanceClassDetailEntity) {
if (!time.equals("")){
time = time+"-"+sdf.format(classDetailEntity.getGoWorkDate())+"~"+sdf.format(classDetailEntity.getOffWorkDate());
}else {
time = sdf.format(classDetailEntity.getGoWorkDate())+"~"+sdf.format(classDetailEntity.getOffWorkDate());
}
}
sunday = "周日"+"("+className+":"+time+")";
if (!attendanceTime.equals("")){
attendanceTime = attendanceTime + "、"+sunday;
}else {
attendanceTime = attendanceTime +sunday;
}
}else {
if (!rest.equals("")){
rest = rest+"、"+"周日";
}else {
rest = rest+"周日";
}
}
}
//自由工时
AttendanceGroupFreeworkEntity attendanceGroupFreeworkEntity = freeworkService.selectOne(new AttendanceGroupFreeworkQuery().groupId(entity.getId()));
if (Objects.nonNull(attendanceGroupFreeworkEntity)){
if (attendanceGroupFreeworkEntity.getMonday()==1){
attendanceTime="周一";
}else {
rest = "周一";
}
if (attendanceGroupFreeworkEntity.getTuesday()==1){
if (!attendanceTime.equals("")){
attendanceTime = attendanceTime +"、"+"周二";
}else {
attendanceTime = "周二";
}
}else {
if (!rest.equals("")){
rest = rest+"、"+"周二";
}else {
rest = rest+"周二";
}
}
if (attendanceGroupFreeworkEntity.getWednesday()==1){
if (!attendanceTime.equals("")){
attendanceTime = attendanceTime +"、"+"周三";
}else {
attendanceTime = "周三";
}
}else {
if (!rest.equals("")){
rest = rest+"、"+"周三";
}else {
rest = rest+"周三";
}
}
if (attendanceGroupFreeworkEntity.getThursday()==1){
if (!attendanceTime.equals("")){
attendanceTime = attendanceTime +"、"+"周四";
}else {
attendanceTime = "周四";
}
}else {
if (!rest.equals("")){
rest = rest+"、"+"周四";
}else {
rest = rest+"周四";
}
}
if (attendanceGroupFreeworkEntity.getFriday()==1){
if (!attendanceTime.equals("")){
attendanceTime = attendanceTime +"、"+"周五";
}else {
attendanceTime = "周五";
}
}else {
if (!rest.equals("")){
rest = rest+"、"+"周五";
}else {
rest = rest+"周五";
}
}
if (attendanceGroupFreeworkEntity.getSaturday()==1){
if (!attendanceTime.equals("")){
attendanceTime = attendanceTime +"、"+"周六";
}else {
attendanceTime = "周六";
}
}else {
if (!rest.equals("")){
rest = rest+"、"+"周六";
}else {
rest = rest+"周六";
}
}
if (attendanceGroupFreeworkEntity.getSunday()==1){
if (!attendanceTime.equals("")){
attendanceTime = attendanceTime +"、"+"周日";
}else {
attendanceTime = "周日";
}
}else {
if (!rest.equals("")){
rest = rest+"、"+"周日";
}else {
rest = rest+"周日";
}
}
if (!attendanceTime.equals("")){
attendanceTime = attendanceTime +"(工作时长:"+attendanceGroupFreeworkEntity.getWorkTime()+")";
}
}
if (!rest.equals("")){
rest = rest + "休息";
}
entity.setRestTime(rest);
entity.setAttendanceTime(attendanceTime);
}
return super.doListAfter(query, model, context);
}
}
package com.mortals.xhx.module.attendance.web;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.module.attendance.model.*;
import com.mortals.xhx.module.attendance.service.AttendanceClassService;
import com.mortals.xhx.module.attendance.service.AttendanceGroupService;
import com.mortals.xhx.module.dept.model.DeptEntity;
import com.mortals.xhx.module.dept.model.DeptQuery;
import com.mortals.xhx.module.dept.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
......@@ -9,7 +15,6 @@ import com.mortals.framework.model.Context;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.module.attendance.model.AttendanceRecordEntity;
import com.mortals.xhx.module.attendance.service.AttendanceRecordService;
import org.apache.commons.lang3.ArrayUtils;
import com.mortals.framework.util.StringUtils;
......@@ -36,12 +41,24 @@ public class AttendanceRecordController extends BaseCRUDJsonBodyMappingControlle
@Autowired
private ParamService paramService;
@Autowired
private AttendanceGroupService attendanceGroupService;
@Autowired
private DeptService deptService;
@Autowired
private AttendanceClassService attendanceClassService;
public AttendanceRecordController(){
super.setModuleDesc( "考勤打卡记录信息");
}
@Override
protected void init(Map<String, Object> model, Context context) {
this.addDict(model,"deptId",deptService.find(new DeptQuery()).stream().collect(Collectors.toMap(x->x.getId().toString(),y->y.getDeptName())));
this.addDict(model,"groupId",attendanceGroupService.find(new AttendanceGroupQuery()).stream().collect(Collectors.toMap(x->x.getId().toString(),y->y.getGroupName())));
this.addDict(model,"classId",attendanceClassService.find(new AttendanceClassQuery()).stream().collect(Collectors.toMap(x->x.getId().toString(),y->y.getClassName())));
super.init(model, context);
}
......
package com.mortals.xhx.module.attendance.web;
import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result;
import com.mortals.framework.service.IUser;
import com.mortals.framework.util.DateUtils;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.module.attendance.model.*;
import com.mortals.xhx.module.attendance.service.*;
import com.mortals.xhx.module.dept.model.DeptQuery;
import com.mortals.xhx.module.dept.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
......@@ -9,16 +20,12 @@ import com.mortals.framework.model.Context;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.module.attendance.model.AttendanceRecordErrorEntity;
import com.mortals.xhx.module.attendance.service.AttendanceRecordErrorService;
import org.apache.commons.lang3.ArrayUtils;
import com.mortals.framework.util.StringUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import java.util.Arrays;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
......@@ -36,6 +43,24 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont
@Autowired
private ParamService paramService;
@Autowired
private AttendanceGroupService attendanceGroupService;
@Autowired
private DeptService deptService;
@Autowired
private AttendanceClassService attendanceClassService;
@Autowired
private AttendanceRecordService attendanceRecordService;
@Autowired
private AttendanceRecordDetailService attendanceRecordDetailService;
@Autowired
private AttendanceRecordErrorService errorService;
public AttendanceRecordErrorController(){
super.setModuleDesc( "考勤打卡记录异常信息");
}
......@@ -44,8 +69,46 @@ public class AttendanceRecordErrorController extends BaseCRUDJsonBodyMappingCont
protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "errorStatus", paramService.getParamBySecondOrganize("AttendanceRecordError","errorStatus"));
this.addDict(model, "processStatus", paramService.getParamBySecondOrganize("AttendanceRecordError","processStatus"));
this.addDict(model,"deptId",deptService.find(new DeptQuery()).stream().collect(Collectors.toMap(x->x.getId().toString(), y->y.getDeptName())));
this.addDict(model,"groupId",attendanceGroupService.find(new AttendanceGroupQuery()).stream().collect(Collectors.toMap(x->x.getId().toString(), y->y.getGroupName())));
this.addDict(model,"classId",attendanceClassService.find(new AttendanceClassQuery()).stream().collect(Collectors.toMap(x->x.getId().toString(), y->y.getClassName())));
super.init(model, context);
}
}
\ No newline at end of file
@PostMapping({"disposeError"})
public Rest<String> disposeError(@RequestBody AttendanceRecordErrorEntity query) {
Rest<String> ret = new Rest();
Context context = this.getContext();
query.setOpertor(context.getUser().getRealName());
query.setOperDateTime(new Date());
query.setProcessStatus(1);
errorService.update(query);
DateUtils.convertTime2Str(query.getErrorDateTime().getTime(),DateUtils.P_yyyy_MM_dd);
AttendanceRecordQuery attendanceRecordQuery = new AttendanceRecordQuery();
attendanceRecordQuery.setStaffId(query.getStaffId());
attendanceRecordQuery.setAttendanceDateStart(DateUtils.convertTime2Str(query.getErrorDateTime().getTime(),DateUtils.P_yyyy_MM_dd));
attendanceRecordQuery.setAttendanceDateEnd(DateUtils.convertTime2Str(query.getErrorDateTime().getTime(),DateUtils.P_yyyy_MM_dd));
AttendanceRecordEntity attendanceRecordEntity = attendanceRecordService.selectOne(attendanceRecordQuery);
AttendanceRecordDetailQuery detailQuery = new AttendanceRecordDetailQuery();
detailQuery.setRecordId(attendanceRecordEntity.getId());
detailQuery.setShiftsId(query.getShiftsId());
List<AttendanceRecordDetailEntity> attendanceRecordDetailEntity = attendanceRecordDetailService.find(detailQuery);
for (AttendanceRecordDetailEntity recordDetailEntity : attendanceRecordDetailEntity) {
Date goWorkDate = recordDetailEntity.getGoWorkDate();
Date offWorkDate = recordDetailEntity.getOffWorkDate();
if (goWorkDate.getTime()==query.getErrorDateTime().getTime()){
recordDetailEntity.setGoWorkResult(query.getErrorStatus());
}
if (offWorkDate.getTime()==query.getErrorDateTime().getTime()){
recordDetailEntity.setOffWorkResult(query.getErrorStatus());
}
attendanceRecordDetailService.update(recordDetailEntity);
}
return Rest.ok();
}
}
package com.mortals.xhx.module.attendance.web;
import com.mortals.framework.model.Context;
import cn.hutool.core.util.StrUtil;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.service.IUser;
import com.mortals.framework.utils.ServletUtils;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity;
import com.mortals.xhx.module.attendance.service.AttendanceRecordHikService;
import com.mortals.xhx.base.system.upload.service.UploadService;
import com.mortals.xhx.module.attendance.model.*;
import com.mortals.xhx.module.attendance.service.*;
import com.mortals.xhx.module.dept.model.DeptEntity;
import com.mortals.xhx.module.dept.model.DeptQuery;
import com.mortals.xhx.module.dept.service.DeptService;
import com.mortals.xhx.module.staff.model.StaffEntity;
import com.mortals.xhx.module.staff.model.StaffQuery;
import com.mortals.xhx.module.staff.service.StaffService;
import com.sun.xml.internal.bind.v2.TODO;
import javassist.Loader;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.mortals.framework.model.Context;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import org.apache.commons.lang3.ArrayUtils;
import com.mortals.framework.util.StringUtils;
import java.util.Map;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
/**
*
* 海康考勤打卡记录汇总信息
......@@ -23,6 +56,30 @@ public class AttendanceRecordHikController extends BaseCRUDJsonBodyMappingContro
@Autowired
private ParamService paramService;
@Autowired
private DeptService deptService;
@Autowired
private AttendanceRecordService attendanceRecordService;
@Autowired
private AttendanceRecordHikService attendanceRecordHikService;
@Autowired
private AttendanceGroupStaffService attendanceGroupStaffService;
@Autowired
private AttendanceGroupService attendanceGroupService;
@Autowired
private AttendanceGroupFixedworkService attendanceGroupFixedworkService;
@Autowired
private AttendanceClassService attendanceClassService;
@Autowired
private AttendanceClassDetailService attendanceClassDetailService;
@Autowired
private StaffService staffService;
@Autowired
private UploadService uploadService;
@Autowired
private AttendanceExportRecordService attendanceExportRecordService;
@Autowired
private AttendanceRecordErrorService errorService;
public AttendanceRecordHikController(){
super.setModuleDesc( "海康考勤打卡记录汇总信息");
......@@ -34,4 +91,487 @@ public class AttendanceRecordHikController extends BaseCRUDJsonBodyMappingContro
}
}
\ No newline at end of file
@Override
@Transactional(rollbackFor = Exception.class)
public void doImportDataBefore(List<AttendanceRecordHikEntity> list, boolean updateSupport, Context context) throws AppException {
list.forEach(item->{
String orgName = item.getOrgName();
//todo split orgName to deptId and deptName
String[] split = orgName.split("/");
String deptName = split[split.length-1];
DeptQuery deptQuery = new DeptQuery();
deptQuery.setDeptName(deptName);
//通过分解的deptName去获取部门信息
List<DeptEntity> deptEntities = deptService.find(deptQuery);
Long deptId = 0L;
//判断查出来的部门信息是否为一个,是的话直接获取id,不是的话获取部门的父级id,通过父级id和deptName去查部门id
if (StringUtils.isNotNull(deptEntities) && deptEntities.size()==1){
deptId = deptEntities.get(0).getId();
}else {
String parentDeptName = split[split.length - 2];
deptQuery.setDeptName(parentDeptName);
DeptEntity deptEntity = deptService.selectOne(deptQuery);
deptQuery.setDeptName(deptName);
deptQuery.setParentId(deptEntity.getParentId());
DeptEntity dept = deptService.selectOne(deptQuery);
deptId = dept.getId();
}
//通过工号去查询员工信息
String workNum = item.getWorkNum();
String replace = StrUtil.replace(workNum, "\t", "");
StaffEntity staffEntity = staffService.selectOne(new StaffQuery().workNum(replace));
item.setWorkNum(replace);
item.setStaffId(staffEntity.getId());
item.setDeptId(deptId);
item.setDeptName(deptName);
item.setPositionId(staffEntity.getPositionId());
item.setPositionName(staffEntity.getPositionName());
});
//存入海康打卡原始数据 mortals_xhx_attendance_record_hik
super.doImportDataBefore(list, updateSupport, context);
}
@Override
protected int batchSaveAfter(List<AttendanceRecordHikEntity> list, Map<String, Object> model, Context context) throws AppException {
return super.batchSaveAfter(list, model, context);
}
@PostMapping(value = "/addAttendanceRecord")
public void addAttendanceRecord(@RequestBody AttendanceRecordHikEntity hikEntity) throws ParseException {
List<AttendanceRecordHikEntity> list = hikEntity.getList();
//对考勤数据根据考勤时间进行排序
List<AttendanceRecordHikEntity> collect = list.stream().sorted(Comparator.comparing(AttendanceRecordHikEntity::getAttendanceDate)).collect(Collectors.toList());
//根据工号对考勤数据进行分组
Map<String, List<AttendanceRecordHikEntity>> listMap = collect.stream().collect(Collectors.groupingBy(AttendanceRecordHikEntity::getWorkNum));
//map遍历.先把所有键取出来
Set<String> workNumSet = listMap.keySet();
//根据键取出value
for (String workNum : workNumSet) {
List<AttendanceRecordHikEntity> attendanceRecordHikEntities1 = listMap.get(workNum);
//对按照工号分组了的数据attendanceRecordHikEntities进行时间分组
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
Map<String, List<AttendanceRecordHikEntity>> map = attendanceRecordHikEntities1.stream().collect(Collectors.groupingBy(entity -> entity.getAttendanceDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate().format(formatter)));
Set<String> dateSet = map.keySet();
for (String s : dateSet) {
List<AttendanceRecordHikEntity> attendanceRecordHikEntities = map.get(s);
//对相同工号的人员进行遍历判断考勤规则.
AttendanceRecordEntity attendanceRecordEntity = new AttendanceRecordEntity();
List<AttendanceRecordDetailEntity> detailEntity = new ArrayList<>();
for (AttendanceRecordHikEntity item:attendanceRecordHikEntities) {
//对主表的对象进行赋值
if (Objects.nonNull(attendanceRecordEntity)){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
attendanceRecordEntity.setStaffId(item.getStaffId());
attendanceRecordEntity.setStaffName(item.getStaffName());
attendanceRecordEntity.setDeptId(item.getDeptId());
attendanceRecordEntity.setDeptName(item.getDeptName());
attendanceRecordEntity.setPositionId(item.getPositionId());
attendanceRecordEntity.setPositionName(item.getPositionName());
attendanceRecordEntity.setWorkNum(item.getWorkNum());
IUser user = getContext().getUser();
attendanceRecordEntity.setCreateTime(new Date());
attendanceRecordEntity.setCreateUserId(user.getId());
attendanceRecordEntity.setAttendanceDate(sdf.parse(sdf.format(item.getAttendanceDate())));
}
//获取考勤打卡时间
Date attendanceDate = item.getAttendanceDate();
//通过工号查询员工信息
StaffQuery staffQuery = new StaffQuery();
StaffEntity staffEntity = staffService.selectOne(staffQuery.workNum(item.getWorkNum()));
//通过员工id查询考勤人员信息
AttendanceGroupStaffQuery attendanceGroupStaffQuery = new AttendanceGroupStaffQuery();
List<AttendanceGroupStaffEntity> attendanceGroupStaffEntities = attendanceGroupStaffService.find(attendanceGroupStaffQuery.staffId(staffEntity.getId()));
//查询该考勤人员,如果查出来的考勤人员信息list长度为1 则该考勤人员只有一个考勤组
if (StringUtils.isNotNull(attendanceGroupStaffEntities) && attendanceGroupStaffEntities.size()==1){
//查询考勤组
AttendanceGroupQuery attendanceGroupQuery = new AttendanceGroupQuery();
AttendanceGroupEntity attendanceGroupEntity = attendanceGroupService.selectOne(attendanceGroupQuery.id(attendanceGroupStaffEntities.get(0).getGroupId()));
//查询考勤组详细信息获取班次
AttendanceGroupFixedworkQuery attendanceGroupFixedworkQuery = new AttendanceGroupFixedworkQuery();
AttendanceGroupFixedworkEntity attendanceGroupFixedworkEntity = attendanceGroupFixedworkService.selectOne(attendanceGroupFixedworkQuery.groupId(attendanceGroupEntity.getId()));
//判断当前考勤日期为周几
Date attendanceDate1 = attendanceDate;
String week = this.getWeek(attendanceDate1);
//通过考勤日期的星期拿到班次id.
Long weekClassId = this.getWeekClassId(attendanceGroupFixedworkEntity, week);
//weekClassId为-1 则不在考勤
if (weekClassId==-1L){
//跳过本次循环
continue;
}
//获取班次信息
AttendanceClassQuery attendanceClassQuery = new AttendanceClassQuery();
AttendanceClassEntity attendanceClassEntity = attendanceClassService.selectOne(attendanceClassQuery.id(weekClassId));
//获取班次详细信息
AttendanceClassDetailQuery attendanceClassDetailQuery = new AttendanceClassDetailQuery();
List<AttendanceClassDetailEntity> attendanceClassDetailEntities = attendanceClassDetailService.find(attendanceClassDetailQuery.classId(attendanceClassEntity.getId()));
Integer orderNum = 0;
for (AttendanceClassDetailEntity classDetailEntity : attendanceClassDetailEntities) {
orderNum++;
AttendanceRecordDetailEntity recordDetailEntity = new AttendanceRecordDetailEntity();
recordDetailEntity.setShiftsId(classDetailEntity.getId());
recordDetailEntity.setShiftsName(classDetailEntity.getClassName());
recordDetailEntity.setGoWorkResult(3);
recordDetailEntity.setOffWorkResult(3);
recordDetailEntity.setOrderNum(orderNum);
detailEntity.add(recordDetailEntity);
}
for (AttendanceClassDetailEntity classDetail :attendanceClassDetailEntities) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
//上班打卡前时间
Date goWorkDateBefore = sdf.parse(sdf.format(DateUtils.addMinutes(classDetail.getGoWorkDate(), -classDetail.getGoWorkDateBefore())));
//上班打卡后时间
Date goWorkDateAfter = sdf.parse(sdf.format(DateUtils.addMinutes(classDetail.getGoWorkDate(), classDetail.getGoWorkDateAfter())));
//下班打卡前时间
Date offWorkDateBefore = sdf.parse(sdf.format(DateUtils.addMinutes(classDetail.getOffWorkDate(), -classDetail.getOffWorkDateBefore())));
//下班打卡后时间
Date offWorkDateAfter = sdf.parse(sdf.format(DateUtils.addMinutes(classDetail.getOffWorkDate(), classDetail.getOffWorkDateAfter())));
//判断考勤时间是否在上班打卡区间内 true 在 false 不在
boolean goInTime = isInTime(sdf.parse(sdf.format(attendanceDate)), goWorkDateBefore, goWorkDateAfter);
//判断考勤时间是否在下班打卡区间内
boolean offInTime = isInTime(sdf.parse(sdf.format(attendanceDate)), offWorkDateBefore, offWorkDateAfter);
if (goInTime==false && offInTime==false){
continue;
}
if (goInTime) {
//如果是上班打卡,判断是否迟到
boolean inTime = isInTime(sdf.parse(sdf.format(attendanceDate)), goWorkDateBefore,sdf.parse(sdf.format(classDetail.getGoWorkDate())));
if (!inTime) {
for (AttendanceRecordDetailEntity attendanceRecordDetailEntity : detailEntity) {
if (attendanceRecordDetailEntity.getShiftsId().equals(classDetail.getClassId())){
attendanceRecordDetailEntity.setGoWorkResult(4);
attendanceRecordDetailEntity.setGoWorkDate(attendanceDate);
}
}
}
if (inTime) {
for (AttendanceRecordDetailEntity attendanceRecordDetailEntity : detailEntity) {
if (attendanceRecordDetailEntity.getShiftsId().equals(classDetail.getClassId())){
attendanceRecordDetailEntity.setGoWorkResult(1);
attendanceRecordDetailEntity.setGoWorkDate(attendanceDate);
}
}
}
}
if(offInTime){
boolean inTime = isInTime(sdf.parse(sdf.format(attendanceDate)),sdf.parse(sdf.format( classDetail.getOffWorkDate())), offWorkDateAfter);
if (!inTime){
for (AttendanceRecordDetailEntity attendanceRecordDetailEntity : detailEntity) {
if (attendanceRecordDetailEntity.getShiftsId().equals(classDetail.getClassId())){
attendanceRecordDetailEntity.setOffWorkResult(5);
attendanceRecordDetailEntity.setOffWorkDate(attendanceDate);
}
}
}
if (inTime){
for (AttendanceRecordDetailEntity attendanceRecordDetailEntity : detailEntity) {
if (attendanceRecordDetailEntity.getShiftsId().equals(classDetail.getClassId())){
attendanceRecordDetailEntity.setOffWorkResult(1);
attendanceRecordDetailEntity.setOffWorkDate(attendanceDate);
}
}
}
}
}
}
//如果考勤人员信息list长度大于1 则该考勤人员有多个考勤组.
if (StringUtils.isNotNull(attendanceGroupStaffEntities) && attendanceGroupStaffEntities.size()>1){
for (AttendanceGroupStaffEntity groupStaffEntity:attendanceGroupStaffEntities){
{
//查询考勤组
AttendanceGroupQuery attendanceGroupQuery = new AttendanceGroupQuery();
AttendanceGroupEntity attendanceGroupEntity = attendanceGroupService.selectOne(attendanceGroupQuery.id(groupStaffEntity.getGroupId()));
//查询考勤组详细信息获取班次
AttendanceGroupFixedworkQuery attendanceGroupFixedworkQuery = new AttendanceGroupFixedworkQuery();
AttendanceGroupFixedworkEntity attendanceGroupFixedworkEntity = attendanceGroupFixedworkService.selectOne(attendanceGroupFixedworkQuery.groupId(attendanceGroupEntity.getId()));
//判断当前考勤日期为周几
Date attendanceDate1 = attendanceDate;
String week = this.getWeek(attendanceDate1);
//通过考勤日期的星期拿到班次id.
Long weekClassId = this.getWeekClassId(attendanceGroupFixedworkEntity, week);
//weekClassId为-1 则不在考勤
if (weekClassId==-1L){
//跳过本次循环
continue;
}
//获取班次信息
AttendanceClassQuery attendanceClassQuery = new AttendanceClassQuery();
AttendanceClassEntity attendanceClassEntity = attendanceClassService.selectOne(attendanceClassQuery.id(weekClassId));
//获取班次详细信息
AttendanceClassDetailQuery attendanceClassDetailQuery = new AttendanceClassDetailQuery();
List<AttendanceClassDetailEntity> attendanceClassDetailEntities = attendanceClassDetailService.find(attendanceClassDetailQuery.classId(attendanceClassEntity.getId()));
Integer orderNum = 0;
for (AttendanceClassDetailEntity classDetailEntity : attendanceClassDetailEntities) {
orderNum++;
AttendanceRecordDetailEntity recordDetailEntity = new AttendanceRecordDetailEntity();
recordDetailEntity.setShiftsId(classDetailEntity.getId());
recordDetailEntity.setShiftsName(classDetailEntity.getClassName());
recordDetailEntity.setGoWorkResult(3);
recordDetailEntity.setOffWorkResult(3);
recordDetailEntity.setOrderNum(orderNum);
detailEntity.add(recordDetailEntity);
}
for (AttendanceClassDetailEntity classDetail :attendanceClassDetailEntities) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
//上班打卡前时间
Date goWorkDateBefore = sdf.parse(sdf.format(DateUtils.addMinutes(classDetail.getGoWorkDate(), -classDetail.getGoWorkDateBefore())));
//上班打卡后时间
Date goWorkDateAfter = sdf.parse(sdf.format(DateUtils.addMinutes(classDetail.getGoWorkDate(), classDetail.getGoWorkDateAfter())));
//下班打卡前时间
Date offWorkDateBefore = sdf.parse(sdf.format(DateUtils.addMinutes(classDetail.getOffWorkDate(), -classDetail.getOffWorkDateBefore())));
//下班打卡后时间
Date offWorkDateAfter = sdf.parse(sdf.format(DateUtils.addMinutes(classDetail.getOffWorkDate(), classDetail.getOffWorkDateAfter())));
//判断考勤时间是否在上班打卡区间内 true 在 false 不在
boolean goInTime = isInTime(sdf.parse(sdf.format(attendanceDate)), goWorkDateBefore, goWorkDateAfter);
//判断考勤时间是否在下班打卡区间内
boolean offInTime = isInTime(sdf.parse(sdf.format(attendanceDate)), offWorkDateBefore, offWorkDateAfter);
if (goInTime==false&&offInTime==false){
continue;
}
if (goInTime) {
//如果是上班打卡,判断是否迟到
boolean inTime = isInTime(sdf.parse(sdf.format(attendanceDate)), goWorkDateBefore,sdf.parse(sdf.format(classDetail.getGoWorkDate())));
if (!inTime) {
for (AttendanceRecordDetailEntity attendanceRecordDetailEntity : detailEntity) {
if (attendanceRecordDetailEntity.getShiftsId().equals(classDetail.getClassId())){
attendanceRecordDetailEntity.setGoWorkResult(4);
attendanceRecordDetailEntity.setGoWorkDate(attendanceDate);
}
}
}
if (inTime) {
for (AttendanceRecordDetailEntity attendanceRecordDetailEntity : detailEntity) {
if (attendanceRecordDetailEntity.getShiftsId().equals(classDetail.getClassId())){
attendanceRecordDetailEntity.setGoWorkResult(1);
attendanceRecordDetailEntity.setGoWorkDate(attendanceDate);
}
}
}
}
if(offInTime){
boolean inTime = isInTime(sdf.parse(sdf.format(attendanceDate)),sdf.parse(sdf.format(classDetail.getOffWorkDate())), offWorkDateAfter);
if (!inTime){
for (AttendanceRecordDetailEntity attendanceRecordDetailEntity : detailEntity) {
if (attendanceRecordDetailEntity.getShiftsId().equals(classDetail.getClassId())){
attendanceRecordDetailEntity.setOffWorkResult(5);
attendanceRecordDetailEntity.setOffWorkDate(attendanceDate);
}
}
}
if (inTime){
for (AttendanceRecordDetailEntity attendanceRecordDetailEntity : detailEntity) {
if (attendanceRecordDetailEntity.getShiftsId().equals(classDetail.getClassId())){
attendanceRecordDetailEntity.setOffWorkResult(1);
attendanceRecordDetailEntity.setOffWorkDate(attendanceDate);
}
}
}
}
}
}
}
}
}
List<AttendanceRecordErrorEntity> errorEntityList = new ArrayList<>();
for (AttendanceRecordDetailEntity recordDetailEntity : detailEntity) {
Integer goWorkResult = recordDetailEntity.getGoWorkResult();
Integer offWorkResult = recordDetailEntity.getOffWorkResult();
if (goWorkResult!=1){
AttendanceRecordErrorEntity errorEntity = new AttendanceRecordErrorEntity();
errorEntity.setStaffId(attendanceRecordEntity.getStaffId());
errorEntity.setStaffName(attendanceRecordEntity.getStaffName());
errorEntity.setWorkNum(attendanceRecordEntity.getWorkNum());
errorEntity.setDeptId(attendanceRecordEntity.getDeptId());
errorEntity.setDeptName(attendanceRecordEntity.getDeptName());
errorEntity.setPositionId(attendanceRecordEntity.getPositionId());
errorEntity.setPositionName(attendanceRecordEntity.getPositionName());
errorEntity.setShiftsId(recordDetailEntity.getShiftsId());
errorEntity.setShiftsName(recordDetailEntity.getShiftsName());
errorEntity.setGoOffDateTime(attendanceClassDetailService.selectOne(new AttendanceClassDetailQuery().id(recordDetailEntity.getShiftsId())).getGoWorkDate());
errorEntity.setErrorDateTime(recordDetailEntity.getGoWorkDate());
errorEntity.setActualAttendanceDateTime(recordDetailEntity.getGoWorkDate());
errorEntity.setErrorStatus(recordDetailEntity.getGoWorkResult());
errorEntity.setProcessResult("0");
IUser user = getContext().getUser();
errorEntity.setCreateTime(new Date());
errorEntity.setCreateUserId(user.getId());
errorEntityList.add(errorEntity);
}
if (offWorkResult!=1){
AttendanceRecordErrorEntity errorEntity = new AttendanceRecordErrorEntity();
errorEntity.setStaffId(attendanceRecordEntity.getStaffId());
errorEntity.setStaffName(attendanceRecordEntity.getStaffName());
errorEntity.setWorkNum(attendanceRecordEntity.getWorkNum());
errorEntity.setDeptId(attendanceRecordEntity.getDeptId());
errorEntity.setDeptName(attendanceRecordEntity.getDeptName());
errorEntity.setPositionId(attendanceRecordEntity.getPositionId());
errorEntity.setPositionName(attendanceRecordEntity.getPositionName());
errorEntity.setShiftsId(recordDetailEntity.getShiftsId());
errorEntity.setShiftsName(recordDetailEntity.getShiftsName());
errorEntity.setGoOffDateTime(attendanceClassDetailService.selectOne(new AttendanceClassDetailQuery().id(recordDetailEntity.getShiftsId())).getOffWorkDate());
errorEntity.setErrorDateTime(recordDetailEntity.getOffWorkDate());
errorEntity.setActualAttendanceDateTime(recordDetailEntity.getOffWorkDate());
errorEntity.setErrorStatus(recordDetailEntity.getOffWorkResult());
errorEntity.setProcessResult("0");
IUser user = getContext().getUser();
errorEntity.setCreateTime(new Date());
errorEntity.setCreateUserId(user.getId());
errorEntityList.add(errorEntity);
}
}
if (errorEntityList!=null&&errorEntityList.size()>0){
errorService.save(errorEntityList);
}
attendanceRecordEntity.setAttendanceRecordDetailList(detailEntity);
attendanceRecordService.save(attendanceRecordEntity);
}
}
}
public String getWeek(Date date){
SimpleDateFormat sdf = new SimpleDateFormat("EEEE");
String week = sdf.format(date);
return week;
}
/**
* 获取通过星期获取班次id 如果返参为-1 则不在考勤
* @return
*/
public Long getWeekClassId(AttendanceGroupFixedworkEntity attendanceGroupFixedworkEntity,String week){
Long weekClassId = 0L;
switch (week){
case "星期一":
if (attendanceGroupFixedworkEntity.getMonday()==0){
weekClassId = -1L;
return weekClassId;
}
weekClassId = attendanceGroupFixedworkEntity.getMondayClassId();
break;
case "星期二":
if (attendanceGroupFixedworkEntity.getTuesday()==0){
weekClassId = -1L;
return weekClassId;
}
weekClassId = attendanceGroupFixedworkEntity.getTuesdayClassId();
break;
case "星期三":
if (attendanceGroupFixedworkEntity.getWednesday()==0){
weekClassId = -1L;
return weekClassId;
}
weekClassId = attendanceGroupFixedworkEntity.getWednesdayClassId();
break;
case "星期四":
if (attendanceGroupFixedworkEntity.getThursday()==0){
weekClassId = -1L;
return weekClassId;
}
weekClassId = attendanceGroupFixedworkEntity.getThursdayClassId();
break;
case "星期五":
if (attendanceGroupFixedworkEntity.getFriday()==0){
weekClassId = -1L;
return weekClassId;
}
weekClassId = attendanceGroupFixedworkEntity.getFridayClassId();
break;
case "星期六":
if (attendanceGroupFixedworkEntity.getSaturday()==0){
weekClassId = -1L;
return weekClassId;
}
weekClassId = attendanceGroupFixedworkEntity.getSaturdayClassId();
break;
case "星期天":
if (attendanceGroupFixedworkEntity.getSunday()==0){
weekClassId = -1L;
return weekClassId;
}
weekClassId = attendanceGroupFixedworkEntity.getSundayClassId();
break;
}
return weekClassId;
}
/**
*
* @param nowTime 当前时间
* @param startTime 开始时间
* @param endTime 结束时间
* @return
* 判断当前时间在时间区间内
*/
public static boolean isInTime(Date nowTime, Date startTime, Date endTime) {
if (nowTime.getTime() == startTime.getTime()
|| nowTime.getTime() == endTime.getTime()) {
return true;
}
Calendar date = Calendar.getInstance();
date.setTime(nowTime);
Calendar begin = Calendar.getInstance();
begin.setTime(startTime);
Calendar end = Calendar.getInstance();
end.setTime(endTime);
if (date.after(begin) && date.before(end)) {
return true;
} else {
return false;
}
}
@Override
protected void doListBefore(AttendanceRecordHikEntity query, Map<String, Object> model, Context context) throws AppException {
if (query.getStaffName()!=null && !query.getStaffName().equals("")){
String staffName = "%" + query.getStaffName() + "%";
query.setStaffName(staffName);
}
super.doListBefore(query, model, context);
}
@Override
public void doExportFileAfter(byte[] data, AttendanceRecordHikEntity query, Context context) throws AppException {
InputStream inputStream = new ByteArrayInputStream(data);
MultipartFile file = ServletUtils.getMultipartFile(inputStream, "kaoqin.xlsx");
String filePath = uploadService.saveFileUpload(file, "file/fileupload",null);
AttendanceExportRecordEntity attendanceExportRecordEntity = new AttendanceExportRecordEntity();
attendanceExportRecordEntity.initAttrValue();
attendanceExportRecordEntity.setFilePath(filePath);
if (query.getIdList()!=null){
List<Long> idList = query.getIdList();
String recordIdList = "";
for (Long aLong : idList) {
if (recordIdList.equals("")){
recordIdList = recordIdList + aLong;
}else {
recordIdList = recordIdList + "、" +aLong;
}
}
attendanceExportRecordEntity.setRecordIdList(recordIdList);
}
if (query.getAttendanceDateStart()!=null){
String attendanceDate = query.getAttendanceDateStart() + "~"+query.getAttendanceDateEnd();
attendanceExportRecordEntity.setAttendanceDate(attendanceDate);
}
attendanceExportRecordEntity.setCreateUserId(context.getUser().getId());
attendanceExportRecordEntity.setCreateTime(new Date());
attendanceExportRecordEntity.setType(1);
attendanceExportRecordEntity.setExportOrImport(1);
attendanceExportRecordService.save(attendanceExportRecordEntity);
super.doExportFileAfter(data, query, context);
}
}
......@@ -8,6 +8,7 @@ import com.mortals.xhx.module.dept.model.DeptEntity;
import com.mortals.xhx.module.dept.model.DeptQuery;
import com.mortals.xhx.module.dept.model.DeptTreeSelect;
import com.mortals.xhx.module.dept.service.DeptService;
import com.mortals.xhx.module.job.model.JobEntity;
import com.mortals.xhx.module.job.model.JobQuery;
import com.mortals.xhx.module.job.service.JobService;
import com.mortals.xhx.module.staff.model.StaffEntity;
......@@ -106,4 +107,5 @@ public class StaffController extends BaseCRUDJsonBodyMappingController<StaffServ
super.doExportBefore(context, query);
}
}
\ No newline at end of file
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"mybatis-3-mapper.dtd">
<mapper namespace="com.mortals.xhx.module.attendance.dao.ibatis.AttendanceExportRecordDaoImpl">
<!-- 字段和属性映射 -->
<resultMap type="AttendanceExportRecordEntity" id="AttendanceExportRecordEntity-Map">
<id property="id" column="id" />
<result property="deptName" column="deptName" />
<result property="groupName" column="groupName" />
<result property="className" column="className" />
<result property="attendanceDate" column="attendanceDate" />
<result property="exportOrImport" column="exportOrImport" />
<result property="filePath" column="filePath" />
<result property="type" column="type" />
<result property="remark" column="remark" />
<result property="createUserId" column="createUserId" />
<result property="createTime" column="createTime" />
<result property="updateUserId" column="updateUserId" />
<result property="updateTime" column="updateTime" />
<result property="recordIdList" column="recordIdList" />
</resultMap>
<!-- 表所有列 -->
<sql id="_columns">
<trim suffixOverrides="," suffix="">
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('id') or colPickMode == 1 and data.containsKey('id')))">
a.id,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('deptName') or colPickMode == 1 and data.containsKey('deptName')))">
a.deptName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('groupName') or colPickMode == 1 and data.containsKey('groupName')))">
a.groupName,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('className') or colPickMode == 1 and data.containsKey('className')))">
a.className,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('attendanceDate') or colPickMode == 1 and data.containsKey('attendanceDate')))">
a.attendanceDate,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('exportOrImport') or colPickMode == 1 and data.containsKey('exportOrImport')))">
a.exportOrImport,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('filePath') or colPickMode == 1 and data.containsKey('filePath')))">
a.filePath,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('type') or colPickMode == 1 and data.containsKey('type')))">
a.type,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('remark') or colPickMode == 1 and data.containsKey('remark')))">
a.remark,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createUserId') or colPickMode == 1 and data.containsKey('createUserId')))">
a.createUserId,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('createTime') or colPickMode == 1 and data.containsKey('createTime')))">
a.createTime,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('updateUserId') or colPickMode == 1 and data.containsKey('updateUserId')))">
a.updateUserId,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('updateTime') or colPickMode == 1 and data.containsKey('updateTime')))">
a.updateTime,
</if>
<if test="(data == null) or (data != null and ( colPickMode == 0 and !data.containsKey('recordIdList') or colPickMode == 1 and data.containsKey('recordIdList')))">
a.recordIdList,
</if>
</trim>
</sql>
<!-- 新增 区分主键自增加还是业务插入 -->
<insert id="insert" parameterType="AttendanceExportRecordEntity" useGeneratedKeys="true" keyProperty="id">
insert into mortals_xhx_attendance_export_record
(deptName,groupName,className,attendanceDate,exportOrImport,filePath,type,remark,createUserId,createTime,updateUserId,updateTime,recordIdList)
VALUES
(#{deptName},#{groupName},#{className},#{attendanceDate},#{exportOrImport},#{filePath},#{type},#{remark},#{createUserId},#{createTime},#{updateUserId},#{updateTime},#{recordIdList})
</insert>
<!-- 批量新增 -->
<insert id="insertBatch" parameterType="paramDto">
insert into mortals_xhx_attendance_export_record
(deptName,groupName,className,attendanceDate,exportOrImport,filePath,type,remark,createUserId,createTime,updateUserId,updateTime,recordIdList)
VALUES
<foreach collection="data.dataList" item="item" index="index" separator="," >
(#{item.deptName},#{item.groupName},#{item.className},#{item.attendanceDate},#{item.exportOrImport},#{item.filePath},#{item.type},#{item.remark},#{item.createUserId},#{item.createTime},#{item.updateUserId},#{item.updateTime},#{item.recordIdList})
</foreach>
</insert>
<!-- 根据ParamDto更新 -->
<update id="update" parameterType="paramDto">
update mortals_xhx_attendance_export_record as a
set
<trim suffixOverrides="," suffix="">
<if test="(colPickMode==0 and data.containsKey('deptName')) or (colPickMode==1 and !data.containsKey('deptName'))">
a.deptName=#{data.deptName},
</if>
<if test="(colPickMode==0 and data.containsKey('groupName')) or (colPickMode==1 and !data.containsKey('groupName'))">
a.groupName=#{data.groupName},
</if>
<if test="(colPickMode==0 and data.containsKey('className')) or (colPickMode==1 and !data.containsKey('className'))">
a.className=#{data.className},
</if>
<if test="(colPickMode==0 and data.containsKey('attendanceDate')) or (colPickMode==1 and !data.containsKey('attendanceDate'))">
a.attendanceDate=#{data.attendanceDate},
</if>
<if test="(colPickMode==0 and data.containsKey('exportOrImport')) or (colPickMode==1 and !data.containsKey('exportOrImport'))">
a.exportOrImport=#{data.exportOrImport},
</if>
<if test="(colPickMode==0 and data.containsKey('exportOrImportIncrement')) or (colPickMode==1 and !data.containsKey('exportOrImportIncrement'))">
a.exportOrImport=ifnull(a.exportOrImport,0) + #{data.exportOrImportIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('filePath')) or (colPickMode==1 and !data.containsKey('filePath'))">
a.filePath=#{data.filePath},
</if>
<if test="(colPickMode==0 and data.containsKey('type')) or (colPickMode==1 and !data.containsKey('type'))">
a.type=#{data.type},
</if>
<if test="(colPickMode==0 and data.containsKey('typeIncrement')) or (colPickMode==1 and !data.containsKey('typeIncrement'))">
a.type=ifnull(a.type,0) + #{data.typeIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('remark')) or (colPickMode==1 and !data.containsKey('remark'))">
a.remark=#{data.remark},
</if>
<if test="(colPickMode==0 and data.containsKey('createUserId')) or (colPickMode==1 and !data.containsKey('createUserId'))">
a.createUserId=#{data.createUserId},
</if>
<if test="(colPickMode==0 and data.containsKey('createUserIdIncrement')) or (colPickMode==1 and !data.containsKey('createUserIdIncrement'))">
a.createUserId=ifnull(a.createUserId,0) + #{data.createUserIdIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('createTime')) or (colPickMode==1 and !data.containsKey('createTime'))">
a.createTime=#{data.createTime},
</if>
<if test="(colPickMode==0 and data.containsKey('updateUserId')) or (colPickMode==1 and !data.containsKey('updateUserId'))">
a.updateUserId=#{data.updateUserId},
</if>
<if test="(colPickMode==0 and data.containsKey('updateUserIdIncrement')) or (colPickMode==1 and !data.containsKey('updateUserIdIncrement'))">
a.updateUserId=ifnull(a.updateUserId,0) + #{data.updateUserIdIncrement},
</if>
<if test="(colPickMode==0 and data.containsKey('updateTime')) or (colPickMode==1 and !data.containsKey('updateTime'))">
a.updateTime=#{data.updateTime},
</if>
<if test="(colPickMode==0 and data.containsKey('recordIdList')) or (colPickMode==1 and !data.containsKey('recordIdList'))">
a.recordIdList=#{data.recordIdList},
</if>
</trim>
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
</update>
<!-- 批量更新 -->
<update id="updateBatch" parameterType="paramDto">
update mortals_xhx_attendance_export_record as a
<trim prefix="set" suffixOverrides=",">
<trim prefix="deptName=(case" suffix="ELSE deptName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('deptName')) or (colPickMode==1 and !item.containsKey('deptName'))">
when a.id=#{item.id} then #{item.deptName}
</if>
</foreach>
</trim>
<trim prefix="groupName=(case" suffix="ELSE groupName end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('groupName')) or (colPickMode==1 and !item.containsKey('groupName'))">
when a.id=#{item.id} then #{item.groupName}
</if>
</foreach>
</trim>
<trim prefix="className=(case" suffix="ELSE className end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('className')) or (colPickMode==1 and !item.containsKey('className'))">
when a.id=#{item.id} then #{item.className}
</if>
</foreach>
</trim>
<trim prefix="attendanceDate=(case" suffix="ELSE attendanceDate end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('attendanceDate')) or (colPickMode==1 and !item.containsKey('attendanceDate'))">
when a.id=#{item.id} then #{item.attendanceDate}
</if>
</foreach>
</trim>
<trim prefix="exportOrImport=(case" suffix="ELSE exportOrImport end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('exportOrImport')) or (colPickMode==1 and !item.containsKey('exportOrImport'))">
when a.id=#{item.id} then #{item.exportOrImport}
</when>
<when test="(colPickMode==0 and item.containsKey('exportOrImportIncrement')) or (colPickMode==1 and !item.containsKey('exportOrImportIncrement'))">
when a.id=#{item.id} then ifnull(a.exportOrImport,0) + #{item.exportOrImportIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="filePath=(case" suffix="ELSE filePath end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('filePath')) or (colPickMode==1 and !item.containsKey('filePath'))">
when a.id=#{item.id} then #{item.filePath}
</if>
</foreach>
</trim>
<trim prefix="type=(case" suffix="ELSE type end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('type')) or (colPickMode==1 and !item.containsKey('type'))">
when a.id=#{item.id} then #{item.type}
</when>
<when test="(colPickMode==0 and item.containsKey('typeIncrement')) or (colPickMode==1 and !item.containsKey('typeIncrement'))">
when a.id=#{item.id} then ifnull(a.type,0) + #{item.typeIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="remark=(case" suffix="ELSE remark end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('remark')) or (colPickMode==1 and !item.containsKey('remark'))">
when a.id=#{item.id} then #{item.remark}
</if>
</foreach>
</trim>
<trim prefix="createUserId=(case" suffix="ELSE createUserId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('createUserId')) or (colPickMode==1 and !item.containsKey('createUserId'))">
when a.id=#{item.id} then #{item.createUserId}
</when>
<when test="(colPickMode==0 and item.containsKey('createUserIdIncrement')) or (colPickMode==1 and !item.containsKey('createUserIdIncrement'))">
when a.id=#{item.id} then ifnull(a.createUserId,0) + #{item.createUserIdIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="createTime=(case" suffix="ELSE createTime end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('createTime')) or (colPickMode==1 and !item.containsKey('createTime'))">
when a.id=#{item.id} then #{item.createTime}
</if>
</foreach>
</trim>
<trim prefix="updateUserId=(case" suffix="ELSE updateUserId end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<choose>
<when test="(colPickMode==0 and item.containsKey('updateUserId')) or (colPickMode==1 and !item.containsKey('updateUserId'))">
when a.id=#{item.id} then #{item.updateUserId}
</when>
<when test="(colPickMode==0 and item.containsKey('updateUserIdIncrement')) or (colPickMode==1 and !item.containsKey('updateUserIdIncrement'))">
when a.id=#{item.id} then ifnull(a.updateUserId,0) + #{item.updateUserIdIncrement}
</when>
</choose>
</foreach>
</trim>
<trim prefix="updateTime=(case" suffix="ELSE updateTime end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('updateTime')) or (colPickMode==1 and !item.containsKey('updateTime'))">
when a.id=#{item.id} then #{item.updateTime}
</if>
</foreach>
</trim>
<trim prefix="recordIdList=(case" suffix="ELSE recordIdList end),">
<foreach collection="data.dataList" item="item" index="index" separator="" >
<if test="(colPickMode==0 and item.containsKey('recordIdList')) or (colPickMode==1 and !item.containsKey('recordIdList'))">
when a.id=#{item.id} then #{item.recordIdList}
</if>
</foreach>
</trim>
</trim>
where id in
<foreach collection="data.dataList" item="item" index="index" open="(" separator="," close=")">
#{item.id}
</foreach>
</update>
<!-- 根据主健查询 -->
<select id="getByKey" parameterType="paramDto" resultMap="AttendanceExportRecordEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_attendance_export_record as a
where a.id=#{condition.id}
</select>
<!-- 根据主健删除 -->
<delete id="deleteByKey" parameterType="paramDto">
delete a.* from mortals_xhx_attendance_export_record as a where a.id=#{condition.id}
</delete>
<!-- 根据主健删除一批,针对单一主健有效 -->
<delete id="deleteByKeys">
delete from mortals_xhx_attendance_export_record where id in
<foreach collection="array" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<!-- 根据主健列表删除一批,针对单一主健有效 -->
<delete id="deleteByKeyList">
delete from mortals_xhx_attendance_export_record where id in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<!-- 根据对象列表删除一批,针对单一主健有效 -->
<delete id="deleteByEntityList">
delete from mortals_xhx_attendance_export_record where id in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")">
#{item.id}
</foreach>
</delete>
<!-- 根据paramDto删除一批 -->
<delete id="deleteByMap" parameterType="paramDto">
delete a.* from mortals_xhx_attendance_export_record as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
</delete>
<!-- 获取列表 -->
<select id="getList" parameterType="paramDto" resultMap="AttendanceExportRecordEntity-Map">
select <include refid="_columns"/>
from mortals_xhx_attendance_export_record as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
<include refid="_orderCols_"/>
</select>
<!-- 获取 -->
<select id="getListCount" parameterType="paramDto" resultType="int">
select count(1)
from mortals_xhx_attendance_export_record as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
</select>
<!-- 条件映射 -->
<sql id="_condition_">
<if test="condition != null and !condition.isEmpty()">
<!-- 条件映射-普通条件 -->
<include refid="_condition_param_">
<property name="_conditionParam_" value="condition"/>
<property name="_conditionType_" value="and"/>
</include>
<!-- 条件映射-集合之间使用AND,集合中元素使用OR-(list[0].1 or list[0].2) and (list[1].3 or list[1].4) -->
<if test="condition.containsKey('andConditionList') and !condition.andConditionList.isEmpty()">
and
<foreach collection="condition.andConditionList" open="(" close=")" index="index" item="andCondition" separator=" and ">
<trim prefixOverrides="or" prefix="(" suffix=")">
<include refid="_condition_param_">
<property name="_conditionParam_" value="andCondition"/>
<property name="_conditionType_" value="or"/>
</include>
</trim>
</foreach>
</if>
<!-- 条件映射-集合之间使用OR,集合中元素使用AND-(list[0].1 and list[0].2) or (list[1].3 and list[1].4) -->
<if test="condition.containsKey('orConditionList') and !condition.orConditionList.isEmpty()">
and
<foreach collection="condition.orConditionList" open="(" close=")" index="index" item="orCondition" separator=" or ">
<trim prefixOverrides="and" prefix="(" suffix=")">
<include refid="_condition_param_">
<property name="_conditionParam_" value="orCondition"/>
<property name="_conditionType_" value="and"/>
</include>
</trim>
</foreach>
</if>
</if>
</sql>
<!-- 条件映射-代参数 -->
<sql id="_condition_param_">
<bind name="conditionParamRef" value="${_conditionParam_}"/>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null">
${_conditionType_} a.id=#{${_conditionParam_}.id}
</if>
</if>
<if test="conditionParamRef.containsKey('id')">
<if test="conditionParamRef.id != null ">
${_conditionType_} a.id = #{${_conditionParam_}.id}
</if>
<if test="conditionParamRef.id == null">
${_conditionType_} a.id is null
</if>
</if>
<if test="conditionParamRef.containsKey('idList') and conditionParamRef.idList.size() > 0">
${_conditionType_} a.id in
<foreach collection="conditionParamRef.idList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('idNotList') and conditionParamRef.idNotList.size() > 0">
${_conditionType_} a.id not in
<foreach collection="conditionParamRef.idNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('idStart') and conditionParamRef.idStart != null">
${_conditionType_} a.id <![CDATA[ >= ]]> #{${_conditionParam_}.idStart}
</if>
<if test="conditionParamRef.containsKey('idEnd') and conditionParamRef.idEnd != null">
${_conditionType_} a.id <![CDATA[ <= ]]> #{${_conditionParam_}.idEnd}
</if>
<if test="conditionParamRef.containsKey('deptName')">
<if test="conditionParamRef.deptName != null and conditionParamRef.deptName != ''">
${_conditionType_} a.deptName like #{${_conditionParam_}.deptName}
</if>
<if test="conditionParamRef.deptName == null">
${_conditionType_} a.deptName is null
</if>
</if>
<if test="conditionParamRef.containsKey('deptNameList') and conditionParamRef.deptNameList.size() > 0">
${_conditionType_} a.deptName in
<foreach collection="conditionParamRef.deptNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('deptNameNotList') and conditionParamRef.deptNameNotList.size() > 0">
${_conditionType_} a.deptName not in
<foreach collection="conditionParamRef.deptNameNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('groupName')">
<if test="conditionParamRef.groupName != null and conditionParamRef.groupName != ''">
${_conditionType_} a.groupName like #{${_conditionParam_}.groupName}
</if>
<if test="conditionParamRef.groupName == null">
${_conditionType_} a.groupName is null
</if>
</if>
<if test="conditionParamRef.containsKey('groupNameList') and conditionParamRef.groupNameList.size() > 0">
${_conditionType_} a.groupName in
<foreach collection="conditionParamRef.groupNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('groupNameNotList') and conditionParamRef.groupNameNotList.size() > 0">
${_conditionType_} a.groupName not in
<foreach collection="conditionParamRef.groupNameNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('className')">
<if test="conditionParamRef.className != null and conditionParamRef.className != ''">
${_conditionType_} a.className like #{${_conditionParam_}.className}
</if>
<if test="conditionParamRef.className == null">
${_conditionType_} a.className is null
</if>
</if>
<if test="conditionParamRef.containsKey('classNameList') and conditionParamRef.classNameList.size() > 0">
${_conditionType_} a.className in
<foreach collection="conditionParamRef.classNameList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('classNameNotList') and conditionParamRef.classNameNotList.size() > 0">
${_conditionType_} a.className not in
<foreach collection="conditionParamRef.classNameNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('attendanceDate')">
<if test="conditionParamRef.attendanceDate != null and conditionParamRef.attendanceDate != ''">
${_conditionType_} a.attendanceDate like #{${_conditionParam_}.attendanceDate}
</if>
<if test="conditionParamRef.attendanceDate == null">
${_conditionType_} a.attendanceDate is null
</if>
</if>
<if test="conditionParamRef.containsKey('attendanceDateList') and conditionParamRef.attendanceDateList.size() > 0">
${_conditionType_} a.attendanceDate in
<foreach collection="conditionParamRef.attendanceDateList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('attendanceDateNotList') and conditionParamRef.attendanceDateNotList.size() > 0">
${_conditionType_} a.attendanceDate not in
<foreach collection="conditionParamRef.attendanceDateNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('exportOrImport')">
<if test="conditionParamRef.exportOrImport != null ">
${_conditionType_} a.exportOrImport = #{${_conditionParam_}.exportOrImport}
</if>
<if test="conditionParamRef.exportOrImport == null">
${_conditionType_} a.exportOrImport is null
</if>
</if>
<if test="conditionParamRef.containsKey('exportOrImportList') and conditionParamRef.exportOrImportList.size() > 0">
${_conditionType_} a.exportOrImport in
<foreach collection="conditionParamRef.exportOrImportList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('exportOrImportNotList') and conditionParamRef.exportOrImportNotList.size() > 0">
${_conditionType_} a.exportOrImport not in
<foreach collection="conditionParamRef.exportOrImportNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('exportOrImportStart') and conditionParamRef.exportOrImportStart != null">
${_conditionType_} a.exportOrImport <![CDATA[ >= ]]> #{${_conditionParam_}.exportOrImportStart}
</if>
<if test="conditionParamRef.containsKey('exportOrImportEnd') and conditionParamRef.exportOrImportEnd != null">
${_conditionType_} a.exportOrImport <![CDATA[ <= ]]> #{${_conditionParam_}.exportOrImportEnd}
</if>
<if test="conditionParamRef.containsKey('filePath')">
<if test="conditionParamRef.filePath != null and conditionParamRef.filePath != ''">
${_conditionType_} a.filePath like #{${_conditionParam_}.filePath}
</if>
<if test="conditionParamRef.filePath == null">
${_conditionType_} a.filePath is null
</if>
</if>
<if test="conditionParamRef.containsKey('filePathList') and conditionParamRef.filePathList.size() > 0">
${_conditionType_} a.filePath in
<foreach collection="conditionParamRef.filePathList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('filePathNotList') and conditionParamRef.filePathNotList.size() > 0">
${_conditionType_} a.filePath not in
<foreach collection="conditionParamRef.filePathNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('type')">
<if test="conditionParamRef.type != null ">
${_conditionType_} a.type = #{${_conditionParam_}.type}
</if>
<if test="conditionParamRef.type == null">
${_conditionType_} a.type is null
</if>
</if>
<if test="conditionParamRef.containsKey('typeList') and conditionParamRef.typeList.size() > 0">
${_conditionType_} a.type in
<foreach collection="conditionParamRef.typeList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('typeNotList') and conditionParamRef.typeNotList.size() > 0">
${_conditionType_} a.type not in
<foreach collection="conditionParamRef.typeNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('typeStart') and conditionParamRef.typeStart != null">
${_conditionType_} a.type <![CDATA[ >= ]]> #{${_conditionParam_}.typeStart}
</if>
<if test="conditionParamRef.containsKey('typeEnd') and conditionParamRef.typeEnd != null">
${_conditionType_} a.type <![CDATA[ <= ]]> #{${_conditionParam_}.typeEnd}
</if>
<if test="conditionParamRef.containsKey('remark')">
<if test="conditionParamRef.remark != null and conditionParamRef.remark != ''">
${_conditionType_} a.remark like #{${_conditionParam_}.remark}
</if>
<if test="conditionParamRef.remark == null">
${_conditionType_} a.remark is null
</if>
</if>
<if test="conditionParamRef.containsKey('remarkList') and conditionParamRef.remarkList.size() > 0">
${_conditionType_} a.remark in
<foreach collection="conditionParamRef.remarkList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('remarkNotList') and conditionParamRef.remarkNotList.size() > 0">
${_conditionType_} a.remark not in
<foreach collection="conditionParamRef.remarkNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('createUserId')">
<if test="conditionParamRef.createUserId != null ">
${_conditionType_} a.createUserId = #{${_conditionParam_}.createUserId}
</if>
<if test="conditionParamRef.createUserId == null">
${_conditionType_} a.createUserId is null
</if>
</if>
<if test="conditionParamRef.containsKey('createUserIdList') and conditionParamRef.createUserIdList.size() > 0">
${_conditionType_} a.createUserId in
<foreach collection="conditionParamRef.createUserIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('createUserIdNotList') and conditionParamRef.createUserIdNotList.size() > 0">
${_conditionType_} a.createUserId not in
<foreach collection="conditionParamRef.createUserIdNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('createUserIdStart') and conditionParamRef.createUserIdStart != null">
${_conditionType_} a.createUserId <![CDATA[ >= ]]> #{${_conditionParam_}.createUserIdStart}
</if>
<if test="conditionParamRef.containsKey('createUserIdEnd') and conditionParamRef.createUserIdEnd != null">
${_conditionType_} a.createUserId <![CDATA[ <= ]]> #{${_conditionParam_}.createUserIdEnd}
</if>
<if test="conditionParamRef.containsKey('createTime')">
<if test="conditionParamRef.createTime != null ">
${_conditionType_} a.createTime = #{${_conditionParam_}.createTime}
</if>
<if test="conditionParamRef.createTime == null">
${_conditionType_} a.createTime is null
</if>
</if>
<if test="conditionParamRef.containsKey('createTimeStart') and conditionParamRef.createTimeStart != null and conditionParamRef.createTimeStart!=''">
${_conditionType_} a.createTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.createTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('createTimeEnd') and conditionParamRef.createTimeEnd != null and conditionParamRef.createTimeEnd!=''">
${_conditionType_} a.createTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.createTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('updateUserId')">
<if test="conditionParamRef.updateUserId != null ">
${_conditionType_} a.updateUserId = #{${_conditionParam_}.updateUserId}
</if>
<if test="conditionParamRef.updateUserId == null">
${_conditionType_} a.updateUserId is null
</if>
</if>
<if test="conditionParamRef.containsKey('updateUserIdList') and conditionParamRef.updateUserIdList.size() > 0">
${_conditionType_} a.updateUserId in
<foreach collection="conditionParamRef.updateUserIdList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('updateUserIdNotList') and conditionParamRef.updateUserIdNotList.size() > 0">
${_conditionType_} a.updateUserId not in
<foreach collection="conditionParamRef.updateUserIdNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('updateUserIdStart') and conditionParamRef.updateUserIdStart != null">
${_conditionType_} a.updateUserId <![CDATA[ >= ]]> #{${_conditionParam_}.updateUserIdStart}
</if>
<if test="conditionParamRef.containsKey('updateUserIdEnd') and conditionParamRef.updateUserIdEnd != null">
${_conditionType_} a.updateUserId <![CDATA[ <= ]]> #{${_conditionParam_}.updateUserIdEnd}
</if>
<if test="conditionParamRef.containsKey('updateTime')">
<if test="conditionParamRef.updateTime != null ">
${_conditionType_} a.updateTime = #{${_conditionParam_}.updateTime}
</if>
<if test="conditionParamRef.updateTime == null">
${_conditionType_} a.updateTime is null
</if>
</if>
<if test="conditionParamRef.containsKey('updateTimeStart') and conditionParamRef.updateTimeStart != null and conditionParamRef.updateTimeStart!=''">
${_conditionType_} a.updateTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.updateTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('updateTimeEnd') and conditionParamRef.updateTimeEnd != null and conditionParamRef.updateTimeEnd!=''">
${_conditionType_} a.updateTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{${_conditionParam_}.updateTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s')
</if>
<if test="conditionParamRef.containsKey('recordIdList')">
<if test="conditionParamRef.recordIdList != null and conditionParamRef.recordIdList != ''">
${_conditionType_} a.recordIdList like #{${_conditionParam_}.recordIdList}
</if>
<if test="conditionParamRef.recordIdList == null">
${_conditionType_} a.recordIdList is null
</if>
</if>
<if test="conditionParamRef.containsKey('recordIdListList') and conditionParamRef.recordIdListList.size() > 0">
${_conditionType_} a.recordIdList in
<foreach collection="conditionParamRef.recordIdListList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
<if test="conditionParamRef.containsKey('recordIdListNotList') and conditionParamRef.recordIdListNotList.size() > 0">
${_conditionType_} a.recordIdList not in
<foreach collection="conditionParamRef.recordIdListNotList" open="(" close=")" index="index" item="item" separator=",">
#{item}
</foreach>
</if>
</sql>
<sql id="_orderCols_">
<if test="orderColList != null and !orderColList.isEmpty()">
order by
<trim suffixOverrides="," suffix="">
<foreach collection="orderColList" open="" close="" index="index" item="item" separator=",">
${item.colName} ${item.sortKind}
</foreach>
</trim>
</if>
<if test="(orderColList == null or orderColList.isEmpty()) and orderCol != null and !orderCol.isEmpty()">
order by
<trim suffixOverrides="," suffix="">
<if test="orderCol.containsKey('id')">
a.id
<if test='orderCol.id != null and "DESC".equalsIgnoreCase(orderCol.id)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('deptName')">
a.deptName
<if test='orderCol.deptName != null and "DESC".equalsIgnoreCase(orderCol.deptName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('groupName')">
a.groupName
<if test='orderCol.groupName != null and "DESC".equalsIgnoreCase(orderCol.groupName)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('className')">
a.className
<if test='orderCol.className != null and "DESC".equalsIgnoreCase(orderCol.className)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('attendanceDate')">
a.attendanceDate
<if test='orderCol.attendanceDate != null and "DESC".equalsIgnoreCase(orderCol.attendanceDate)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('exportOrImport')">
a.exportOrImport
<if test='orderCol.exportOrImport != null and "DESC".equalsIgnoreCase(orderCol.exportOrImport)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('filePath')">
a.filePath
<if test='orderCol.filePath != null and "DESC".equalsIgnoreCase(orderCol.filePath)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('type')">
a.type
<if test='orderCol.type != null and "DESC".equalsIgnoreCase(orderCol.type)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('remark')">
a.remark
<if test='orderCol.remark != null and "DESC".equalsIgnoreCase(orderCol.remark)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('createUserId')">
a.createUserId
<if test='orderCol.createUserId != null and "DESC".equalsIgnoreCase(orderCol.createUserId)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('createTime')">
a.createTime
<if test='orderCol.createTime != null and "DESC".equalsIgnoreCase(orderCol.createTime)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('updateUserId')">
a.updateUserId
<if test='orderCol.updateUserId != null and "DESC".equalsIgnoreCase(orderCol.updateUserId)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('updateTime')">
a.updateTime
<if test='orderCol.updateTime != null and "DESC".equalsIgnoreCase(orderCol.updateTime)'>DESC</if>
,
</if>
<if test="orderCol.containsKey('recordIdList')">
a.recordIdList
<if test='orderCol.recordIdList != null and "DESC".equalsIgnoreCase(orderCol.recordIdList)'>DESC</if>
,
</if>
</trim>
</if>
</sql>
<sql id="_group_by_">
<if test="groupList != null and !groupList.isEmpty()">
GROUP BY
<trim suffixOverrides="," suffix="">
<foreach collection="groupList" open="" close="" index="index" item="item" separator=",">
${item}
</foreach>
</trim>
</if>
</sql>
</mapper>
......@@ -1658,4 +1658,4 @@
</trim>
</if>
</sql>
</mapper>
\ No newline at end of file
</mapper>
###登录
POST {{baseUrl}}/login/login
Content-Type: application/json
{
"loginName":"admin",
"password":"admin",
"securityCode":"8888"
}
> {%
client.global.set("SmsSet_id", JSON.parse(response.body).data.id);
client.global.set("authToken", JSON.parse(response.body).data.token);
%}
###导入导出记录列表
POST {{baseUrl}}/attendance/export/record/list
Authorization: {{authToken}}
Content-Type: application/json
{
"page":1,
"size":10
}
###导入导出记录更新与保存
POST {{baseUrl}}/attendance/export/record/save
Authorization: {{authToken}}
Content-Type: application/json
{
"deptName":"cuvbax",
"groupName":"hgm3yp",
"className":"0n52rt",
"attendanceDate":"9evgzx",
"idList":"4ewzo5",
"exportOrImport":554,
"filePath":"vp6gcq",
"type":451,
"remark":"pihagt",
}
> {%
client.global.set("AttendanceExportRecord_id", JSON.parse(response.body).data.id);
%}
###导入导出记录查看
GET {{baseUrl}}/attendance/export/record/info?id={{AttendanceExportRecord_id}}
Authorization: {{authToken}}
Accept: application/json
###导入导出记录编辑
GET {{baseUrl}}/attendance/export/record/edit?id={{AttendanceExportRecord_id}}
Authorization: {{authToken}}
Accept: application/json
###导入导出记录删除
GET {{baseUrl}}/attendance/export/record/delete?id={{AttendanceExportRecord_id}}
Authorization: {{authToken}}
Accept: application/json
......@@ -32,7 +32,7 @@ Content-Type: application/json
{
"staffId":702,
"staffName":"grenxy",
"staffName":"xiaowen",
"workNum":"957jwe",
"deptId":609,
"deptName":"ct2iti",
......
......@@ -572,3 +572,22 @@ INSERT INTO `mortals_xhx_param` VALUES (null, '请假类型', 'AttendanceVacatio
INSERT INTO `mortals_xhx_param` VALUES (null, '请假类型', 'AttendanceVacationRecord', 'type', '21', '探亲假', 1, 4, 0, 'type', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '增减类型', 'AttendanceVacationRecord', 'subAddType', '1', '增加', 1, 4, 0, 'subAddType', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '增减类型', 'AttendanceVacationRecord', 'subAddType', '2', '扣除', 1, 4, 0, 'subAddType', NULL, NULL, NULL);
-- ----------------------------
-- 导入导出记录菜单 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_menu` VALUES (null, '导入导出记录表', '/attendance/export/record/list', 0,'', 1, 1, 0, 0,'',NULL, NULL, NULL, 0, 0, 1, NULL, NULL, NULL);
-- ----------------------------
-- 导入导出记录资源路径 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_resource` VALUES (null, '导入导出记录-菜单管理-查看', '/attendance/export/record/list,/attendance/export/record/view,/attendance/export/record/info,/attendance/export/record/export,/attendance/export/record/exportExcel,/attendance/export/record/downloadTemplate,/attendance/export/record/download', 3, 0, NULL, NULL, NULL, 0);
INSERT INTO `mortals_xhx_resource` VALUES (null, '导入导出记录-菜单管理-维护', '/attendance/export/record/add,/attendance/export/record/edit,/attendance/export/record/delete,/attendance/export/record/logicDelete,/attendance/export/record/save,/attendance/export/record/importData', 3, 0, NULL, NULL, NULL, 0);
-- ----------------------------
-- 导入导出记录参数 SQL
-- ----------------------------
INSERT INTO `mortals_xhx_param` VALUES (null, '导出还是导入', 'AttendanceExportRecord', 'exportOrImport', '1', '导出', 1, 4, 0, 'exportOrImport', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '导出还是导入', 'AttendanceExportRecord', 'exportOrImport', '2', '导入', 1, 4, 0, 'exportOrImport', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '汇总还是每日打卡记录', 'AttendanceExportRecord', 'type', '1', '汇总', 1, 4, 0, 'type', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '汇总还是每日打卡记录', 'AttendanceExportRecord', 'type', '2', '每日打卡记录', 1, 4, 0, 'type', NULL, NULL, NULL);
......@@ -785,24 +785,28 @@ PRIMARY KEY (`id`)
-- ----------------------------
-- 导入导出记录表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_attendance_export_record`;
CREATE TABLE `mortals_xhx_attendance_export_record` (
`id` bigint(20) AUTO_INCREMENT NOT NULL,
`deptName` varchar(255) DEFAULT NULL COMMENT '选择部门名称',
`groupName` varchar(255) DEFAULT NULL COMMENT '选择考勤组名称',
`className` varchar(255) DEFAULT NULL COMMENT '选择班次名称',
`attendanceDate` varchar(0) DEFAULT NULL COMMENT '选择开始时间和结束时间段',
`idList` varchar(255) DEFAULT NULL COMMENT '选择id列表',
`exportOrImport` tinyint(2) DEFAULT NULL COMMENT '导出还是导入(1.导出,2.导入)',
`filePath` varchar(255) DEFAULT NULL COMMENT '导出文件路径',
`type` tinyint(2) DEFAULT NULL COMMENT '汇总还是每日打卡记录(1.汇总,2.每日打卡记录)',
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
`createUserId` bigint(20) NOT NULL COMMENT '创建用户',
`createTime` datetime NOT NULL COMMENT '创建时间',
`updateUserId` bigint(20) DEFAULT NULL COMMENT '更新用户',
`updateTime` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='导入导出记录表';
CREATE TABLE mortals_xhx_attendance_export_record(
`id` bigint(20) AUTO_INCREMENT COMMENT '',
`deptName` varchar(255) COMMENT '选择部门名称',
`groupName` varchar(255) COMMENT '选择考勤组名称',
`className` varchar(255) COMMENT '选择班次名称',
`attendanceDate` varchar(0) COMMENT '选择开始时间和结束时间段',
`exportOrImport` tinyint(2) COMMENT '导出还是导入(1.导出,2.导入)',
`filePath` varchar(255) COMMENT '导出文件路径',
`type` tinyint(2) COMMENT '汇总还是每日打卡记录(1.汇总,2.每日打卡记录)',
`remark` varchar(255) COMMENT '备注',
`createUserId` bigint(20) NOT NULL COMMENT '创建用户',
`createTime` datetime NOT NULL COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
`recordIdList` varchar(255) COMMENT '选择id列表',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='导入导出记录';
......
......@@ -10580,7 +10580,249 @@ msg|String|消息|-
```
## 导入导出记录
### 查询导入导出记录列表
**请求URL:** attendance/export/record/list
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 查询导入导出记录
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
page|Integer|否|当前页
size|Integer|否|每页条数,值为-1,查询所有记录
**请求样例:**
```
{
"page":1,
"size":10
}
```
**响应参数:**
参数名称|参数类型|描述
:---|:---|:------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
&emsp;per_page|Integer|每页条数
&emsp;total|Integer|总条数
&emsp;last_page|Integer|总页数
&emsp;current_page|Integer|当前页
&emsp;data|array|结果集列表|数组
&emsp;&emsp;id|Long|
&emsp;&emsp;deptName|String|选择部门名称
&emsp;&emsp;groupName|String|选择考勤组名称
&emsp;&emsp;className|String|选择班次名称
&emsp;&emsp;attendanceDate|String|选择开始时间和结束时间段
&emsp;&emsp;idList|String|选择id列表
&emsp;&emsp;exportOrImport|Integer|导出还是导入(1.导出,2.导入)
&emsp;&emsp;filePath|String|导出文件路径
&emsp;&emsp;type|Integer|汇总还是每日打卡记录(1.汇总,2.每日打卡记录)
&emsp;&emsp;remark|String|备注
&emsp;&emsp;createUserId|Long|创建用户
&emsp;&emsp;createTime|Date|创建时间
&emsp;&emsp;updateUserId|Long|更新用户
&emsp;&emsp;updateTime|Date|更新时间
dict|object|字典对象
&emsp;exportOrImport|object|字典属性对象,详见附录
&emsp;type|object|字典属性对象,详见附录
**响应消息样例:**
```
{
"code":1,
"data":{
}
}
```
### 查看导入导出记录
**请求URL:** attendance/export/record/info
**请求方式:** GET
**内容类型:** application/json;charset=utf-8
**简要描述:** 查看导入导出记录,返回实例详细信息
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
id|Long|是|ID
**请求样例:**
```
http://localhost/attendance/export/record/info?id=549
```
**响应参数:**
参数名称 |参数类型|描述
:---|:---|:-------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
&emsp;id|Long|
&emsp;deptName|String|选择部门名称
&emsp;groupName|String|选择考勤组名称
&emsp;className|String|选择班次名称
&emsp;attendanceDate|String|选择开始时间和结束时间段
&emsp;idList|String|选择id列表
&emsp;exportOrImport|Integer|导出还是导入(1.导出,2.导入)
&emsp;filePath|String|导出文件路径
&emsp;type|Integer|汇总还是每日打卡记录(1.汇总,2.每日打卡记录)
&emsp;remark|String|备注
&emsp;createUserId|Long|创建用户
&emsp;createTime|Date|创建时间
&emsp;updateUserId|Long|更新用户
&emsp;updateTime|Date|更新时间
dict|object|字典对象
&emsp;exportOrImport|object|字典属性对象,详见附录
&emsp;type|object|字典属性对象,详见附录
**响应消息样例:**
```
{
"code": 1,
"data": {
"id":4989,
"deptName":"p67b9s",
"groupName":"gaxsu2",
"className":"8itxcq",
"attendanceDate":"ji5yfm",
"idList":"uxmkrz",
"exportOrImport":3824,
"filePath":"we0b2e",
"type":7052,
"remark":"evkf8r",
"createUserId":3510,
"createTime":"2023-04-17",
"updateUserId":2491,
"updateTime":"2023-04-17"
}
}
```
### 保存更新导入导出记录
**请求URL:** attendance/export/record/save
**请求方式:** POST
**内容类型:** application/json;charset=utf-8
**简要描述:** 保存或更新导入导出记录:id为空时为新增保存,否则为更新提交
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:-------
deptName|String|否|选择部门名称
groupName|String|否|选择考勤组名称
className|String|否|选择班次名称
attendanceDate|String|否|选择开始时间和结束时间段
idList|String|否|选择id列表
exportOrImport|Integer|否|导出还是导入(1.导出,2.导入)
filePath|String|否|导出文件路径
type|Integer|否|汇总还是每日打卡记录(1.汇总,2.每日打卡记录)
remark|String|否|备注
**请求样例:**
```
{
"deptName":"ujkn3k",
"groupName":"frq7vh",
"className":"lhemhd",
"attendanceDate":"nemhiv",
"idList":"5jotvw",
"exportOrImport":5790,
"filePath":"nbfcrc",
"type":2027,
"remark":"qm9qd0",
}
```
**响应参数:**
参数名称 |参数类型|描述
:---|:---|:------
code|Integer|结果码(-1.失败,1.成功)
msg|String|消息
data|object|数据对象
&emsp;id|Long|保存后主键id
&emsp;entity|object|保存更新实体
&emsp;&emsp;id|Long|
&emsp;&emsp;deptName|String|选择部门名称
&emsp;&emsp;groupName|String|选择考勤组名称
&emsp;&emsp;className|String|选择班次名称
&emsp;&emsp;attendanceDate|String|选择开始时间和结束时间段
&emsp;&emsp;idList|String|选择id列表
&emsp;&emsp;exportOrImport|Integer|导出还是导入(1.导出,2.导入)
&emsp;&emsp;filePath|String|导出文件路径
&emsp;&emsp;type|Integer|汇总还是每日打卡记录(1.汇总,2.每日打卡记录)
&emsp;&emsp;remark|String|备注
&emsp;&emsp;createUserId|Long|创建用户
&emsp;&emsp;createTime|Date|创建时间
&emsp;&emsp;updateUserId|Long|更新用户
&emsp;&emsp;updateTime|Date|更新时间
**响应消息样例:**
```
{
"msg":"新增模块成功",
"code":1,
"data":{}
}
}
```
### 删除导入导出记录
**请求URL:** attendance/export/record/delete
**请求方式:** GET
**内容类型:** application/json;charset=utf-8
**简要描述:** 删除导入导出记录
**请求参数:**
参数名称|类型|必填|描述
:---|:---|:---|:------
id|String|是|数组
**请求样例:**
```
http://localhost:8080/attendance/export/record/delete?id=1&id=2'
```
**响应参数:**
参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码(-1.失败,1.成功)|-
msg|String|消息|-
**响应消息样例:**
```
{
"code":1,
"msg":"成功"
}
```
## 字典附录
......@@ -10950,4 +11192,4 @@ data|object|数据对象
"code":1,
"data":{}
}
}
\ No newline at end of file
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment