考勤修改审核流程配置

This commit is contained in:
cwchen 2025-02-23 22:06:19 +08:00
parent bc0dbfced0
commit 7b5948b531
5 changed files with 122 additions and 12 deletions

View File

@ -1,10 +1,7 @@
package com.bonus.system.att.dao;
import com.bonus.system.api.domain.MapVo;
import com.bonus.system.att.entity.AttClockingRecordVo;
import com.bonus.system.att.entity.AttDataDetailsBean;
import com.bonus.system.att.entity.AttDayReportBean;
import com.bonus.system.att.entity.AttMonthReportBean;
import com.bonus.system.att.entity.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@ -125,4 +122,22 @@ public interface AttendanceDetailsDao {
* @date 2025/2/19 18:16
*/
Integer getAuditStatus(AttDataDetailsBean bean);
/**
* 获取审核状态等信息
* @param c
* @return AttDataDetailsBean
* @author cwchen
* @date 2025/2/23 20:46
*/
AttDataDetailsBean getAuditInfo(AttDataDetailsBean c);
/**
* 添加考勤修改审核记录
* @param list
* @return void
* @author cwchen
* @date 2025/2/23 21:01
*/
void addAttDataAuditRecord(List<AttDataUpdateAuditRecordVo> list);
}

View File

@ -261,6 +261,8 @@ public class AttDataDetailsBean {
private int userAuditType;
/**角色名称ID*/
private int roleId;
/**审核批次*/
private int auditNum;
/**上班附件/下班附件*/
private List<FilesVo> filesVoList;

View File

@ -0,0 +1,35 @@
package com.bonus.system.att.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
* @className:AttDataUpdateAuditRecordVo
* @author:cwchen
* @date:2025-02-23-20:18
* @version:1.0
* @description:考勤修改审核记录-vo
*/
@Data
public class AttDataUpdateAuditRecordVo {
/**id*/
private Long id;
/**用户编号*/
private Long userId;
/**考勤日期*/
private Date attCurrentDay;
/**审核人类型 0.部门负责人 3.人资专员*/
private String auditType;
/**0.待审核 1.审核通过 2.审核驳回*/
private String auditStatus;
/**审核人id*/
private Long auditUserId;
/**创建时间*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime = new Date();
/**审核批次*/
private int auditNum;
}

View File

@ -1,5 +1,6 @@
package com.bonus.system.att.service;
import com.bonus.common.core.utils.DateTimeHelper;
import com.bonus.common.core.utils.DateUtils;
import com.bonus.common.core.utils.poi.ExcelUtil;
import com.bonus.common.core.web.domain.AjaxResult;
@ -118,6 +119,7 @@ public class AttendanceDetailsServiceImpl implements AttendanceDetailsService {
@Transactional(rollbackFor = Exception.class)
public AjaxResult updateAttDetailsDataExamine(List<AttDataDetailsBean> list) {
try {
List<AttDataUpdateAuditRecordVo> auditRecordVos = new ArrayList<>();
long userId = SecurityUtils.getLoginUser().getSysUser().getUserId();
// 当前登录人的审核权限类型
int auditType = RoleUtil.getAuditType();
@ -126,15 +128,18 @@ public class AttendanceDetailsServiceImpl implements AttendanceDetailsService {
}
String time = DateUtils.getTime();
for (AttDataDetailsBean c : list) {
Integer auditStatus = attendanceDetailsDao.getAuditStatus(c);
AttDataDetailsBean bean = attendanceDetailsDao.getAuditInfo(c);
Integer auditStatus = bean.getCurrentAuditStatus();
c.setReviewerUserId(userId);
c.setReviewerTime(time);
c.setCurrentAuditStatus(auditStatus);
if(Objects.equals(auditStatus,1) || Objects.equals(auditStatus,2)){ // 数据审核通过|数据审核驳回
continue;
if(Objects.equals(auditStatus,1)){ // 数据审核通过
return AjaxResult.error(bean.getUserName() + "的考勤修改数据已审批通过,请刷新后重试");
}else if(Objects.equals(auditStatus,2)){ // 数据审核驳回
return AjaxResult.error(bean.getUserName() + "的考勤修改数据已被拒绝,请刷新后重试");
}else if(Objects.equals(auditStatus,0)){ // 部门负责人审核
if(auditType == 2){ // 数据处于部门负责人审核中人资专员无权审核
return AjaxResult.error("当前用户无审核权限");
return AjaxResult.error(bean.getUserName() + "的考勤修改数据,当前账号无审核权限");
}
c.setManagerAuditTime(time);
c.setManagerAuditId(userId);
@ -147,14 +152,17 @@ public class AttendanceDetailsServiceImpl implements AttendanceDetailsService {
}
}else if(Objects.equals(auditStatus,3)){ // 人资审核
if(auditType == 1){ // 数据处于人资审核中部门负责人无权审核
return AjaxResult.error("当前用户无审核权限");
return AjaxResult.error(bean.getUserName() + "的考勤修改数据已被审核,请刷新后重试");
}
c.setHrAuditTime(time);
c.setHrAuditId(userId);
c.setHrAuditStatus(c.getReviewerStatus());
}
auditRecordVos.add(setAuditRecord(c, auditType,bean.getAuditNum()));
}
int i = attendanceDetailsDao.updateAttDetailsDataExamine(list);
attendanceDetailsDao.updateAttDetailsDataExamine(list);
// 添加审核记录
attendanceDetailsDao.addAttDataAuditRecord(auditRecordVos);
// 提交数据同步任务到线程池
testTaskExecutor.submit(() -> syncData(list));
return AjaxResult.success();
@ -165,6 +173,27 @@ public class AttendanceDetailsServiceImpl implements AttendanceDetailsService {
}
}
/**
* 添加审核记录
* @param c
* @param auditType
* @return AttDataUpdateAuditRecordVo
* @author cwchen
* @date 2025/2/23 20:41
*/
public AttDataUpdateAuditRecordVo setAuditRecord(AttDataDetailsBean c, int auditType,int auditNum) {
AttDataUpdateAuditRecordVo vo = new AttDataUpdateAuditRecordVo();
long userId = SecurityUtils.getLoginUser().getSysUser().getUserId();
vo.setUserId(c.getUserId());
vo.setAttCurrentDay(DateTimeHelper.parse(c.getAttCurrentDay(),"yyyy-MM-dd"));
// 审核人类型 1.部门负责人 2.人资专员 3.管理员兼有部门负责人和人资专员的权限
vo.setAuditType(String.valueOf(auditType));
vo.setAuditStatus(c.getReviewerStatus());
vo.setAuditUserId(userId);
vo.setAuditNum(auditNum);
return vo;
}
/**
* 考勤明细修改后执行定时任务
* @param list

View File

@ -3,6 +3,26 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bonus.system.att.dao.AttendanceDetailsDao">
<!--添加考勤修改审核记录-->
<insert id="addAttDataAuditRecord">
<foreach collection="list" item="item" separator=";">
INSERT INTO att_data_update_audit_record
<trim prefix="(" suffix=")" suffixOverrides=",">
user_id,
att_current_day,
audit_type,
audit_status,
audit_user_id,
create_time,
audit_num
</trim>
VALUES
(
#{item.userId},#{item.attCurrentDay},#{item.auditType},#{item.auditStatus},
#{item.auditUserId},#{item.createTime},#{item.auditNum}
)
</foreach>
</insert>
<select id="selectAttDetailsList" resultType="com.bonus.system.att.entity.AttDataDetailsBean">
select su.user_name, so.org_name,IF(awa.outCount is null,0,awa.outCount) as outCount,
@ -521,18 +541,27 @@
FROM att_data_update
WHERE user_id = #{userId} AND att_current_day = #{attCurrentDay} AND org_id = #{orgId} LIMIT 1
</select>
<!--获取审核状态等信息-->
<select id="getAuditInfo" resultType="com.bonus.system.att.entity.AttDataDetailsBean">
SELECT adu.audit_num AS auditNum,
adu.reviewer_status AS currentAuditStatus,
su.user_name AS userName
FROM att_data_update adu
LEFT JOIN sys_user su ON su.user_id = adu.user_id
WHERE adu.user_id = #{userId} AND adu.att_current_day = #{attCurrentDay} AND adu.org_id = #{orgId} LIMIT 1
</select>
<update id="updateAttDetailsData">
<foreach collection="list" item="params" separator=";">
update att_data_update set update_att_current_time = #{params.toWorkAttCurrentTime},
update_att_status = #{params.toWorkAttStatus}, reviewer_status = 0, is_update = 1,manager_audit_status = 0,
reason_content = #{params.toErrorRemake}
reason_content = #{params.toErrorRemake},audit_num = (IFNULL(audit_num,0) + 1)
where user_id = #{params.userId} and org_id = #{params.orgId} and att_type = 1
and att_current_day = #{params.attCurrentDay};
update att_data_update set update_att_current_time = #{params.offWorkAttCurrentTime},
update_att_status = #{params.offWorkAttStatus}, reviewer_status = 0, is_update = 1,manager_audit_status = 0,
reason_content = #{params.offErrorRemake}
reason_content = #{params.offErrorRemake},audit_num = (IFNULL(audit_num,0) + 1)
where user_id = #{params.userId} and org_id = #{params.orgId} and att_type = 2
and att_current_day = #{params.attCurrentDay}
</foreach>