考勤修改审核流程配置
This commit is contained in:
parent
bc0dbfced0
commit
7b5948b531
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -261,6 +261,8 @@ public class AttDataDetailsBean {
|
|||
private int userAuditType;
|
||||
/**角色名称ID*/
|
||||
private int roleId;
|
||||
/**审核批次*/
|
||||
private int auditNum;
|
||||
/**上班附件/下班附件*/
|
||||
private List<FilesVo> filesVoList;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue