考勤修改 审核流程修改

This commit is contained in:
cwchen 2025-02-19 19:32:31 +08:00
parent de0c0e02b8
commit d9edbae9ff
6 changed files with 91 additions and 19 deletions

View File

@ -148,7 +148,8 @@ public class AttendanceDetailsController extends BaseController {
@Log(title = "考勤报表->考勤明细->考勤修改", businessType = BusinessType.UPDATE) @Log(title = "考勤报表->考勤明细->考勤修改", businessType = BusinessType.UPDATE)
public AjaxResult edit(@RequestBody List<AttDataDetailsBean> list) { public AjaxResult edit(@RequestBody List<AttDataDetailsBean> list) {
try{ try{
return toAjax(attendanceDetailsService.updateAttDetailsData(list)); // return toAjax(attendanceDetailsService.updateAttDetailsData(list));
return attendanceDetailsService.updateAttDetailsData(list);
}catch (Exception e){ }catch (Exception e){
log.error(e.toString(),e); log.error(e.toString(),e);
} }

View File

@ -116,4 +116,13 @@ public interface AttendanceDetailsDao {
* @date 2025/2/18 15:59 * @date 2025/2/18 15:59
*/ */
List<AttClockingRecordVo> getClockingRecordListByUserId(AttMonthReportBean bean); List<AttClockingRecordVo> getClockingRecordListByUserId(AttMonthReportBean bean);
/**
* 查询考勤修改的审核状态
* @param bean
* @return List<Map<String,Object>>
* @author cwchen
* @date 2025/2/19 18:16
*/
Integer getAuditStatus(AttDataDetailsBean bean);
} }

View File

@ -238,6 +238,22 @@ public class AttDataDetailsBean {
private String attendType; private String attendType;
private String attStatusToday; private String attStatusToday;
/**人资审核ID*/
private Long hrAuditId;
/**人资审核时间*/
private String hrAuditTime;
/**人资审核状态*/
private String hrAuditStatus;
/**部门负责人审核ID*/
private Long managerAuditId;
/**部门负责人审核时间*/
private String managerAuditTime;
/**部门负责人审核状态*/
private String managerAuditStatus;
/**当前审核状态*/
private Integer currentAuditStatus;
/**上班附件/下班附件*/ /**上班附件/下班附件*/
private List<FilesVo> filesVoList; private List<FilesVo> filesVoList;

View File

@ -48,7 +48,7 @@ public interface AttendanceDetailsService {
* @param list list bean * @param list list bean
* @return 1|0 * @return 1|0
*/ */
int updateAttDetailsData(List<AttDataDetailsBean> list); AjaxResult updateAttDetailsData(List<AttDataDetailsBean> list);
/** /**
* 审核考勤 * 审核考勤

View File

@ -79,9 +79,14 @@ public class AttendanceDetailsServiceImpl implements AttendanceDetailsService {
} }
@Override @Override
public int updateAttDetailsData(List<AttDataDetailsBean> list) { public AjaxResult updateAttDetailsData(List<AttDataDetailsBean> list) {
// 判断考勤修改的数据是否有处于人资审核中如果只是处于部门领导审核中则可以修改 // 判断考勤修改的数据是否有处于人资审核中如果只是处于部门领导审核中则可以修改
for (AttDataDetailsBean attDataDetailsBean : list) {
Integer auditStatus = attendanceDetailsDao.getAuditStatus(attDataDetailsBean);
if (Objects.equals(3, auditStatus)) {
return AjaxResult.error("姓名:"+attDataDetailsBean.getUserName() + "修改的考勤数据处于人资审核中,请等待审核完成后再修改");
}
}
int i = attendanceDetailsDao.updateAttDetailsData(list); int i = attendanceDetailsDao.updateAttDetailsData(list);
fileUploadService.saveAttUpdateFileSource(list); fileUploadService.saveAttUpdateFileSource(list);
if (i > 0) { if (i > 0) {
@ -108,7 +113,7 @@ public class AttendanceDetailsServiceImpl implements AttendanceDetailsService {
noticeService.insertNotice(bean); noticeService.insertNotice(bean);
} }
} }
return i; return AjaxResult.success();
} }
@Override @Override
@ -118,9 +123,27 @@ public class AttendanceDetailsServiceImpl implements AttendanceDetailsService {
list.forEach(c -> { list.forEach(c -> {
c.setReviewerUserId(userId); c.setReviewerUserId(userId);
c.setReviewerTime(time); c.setReviewerTime(time);
Integer auditStatus = attendanceDetailsDao.getAuditStatus(c);
c.setCurrentAuditStatus(auditStatus);
if(Objects.equals(auditStatus,0)){ // 部门负责人审核
c.setManagerAuditTime(time);
c.setManagerAuditId(userId);
c.setManagerAuditStatus(c.getReviewerStatus());
if(Objects.equals(c.getReviewerStatus(),"1")){ // 审批通过流转到人资专员审核
c.setHrAuditStatus("0");
c.setReviewerStatus("3");
}else if(Objects.equals(c.getReviewerStatus(),"2")){ // 审批驳回
c.setReviewerStatus(c.getReviewerStatus());
}
}else if(Objects.equals(auditStatus,3)){ // 人资审核
c.setHrAuditTime(time);
c.setHrAuditId(userId);
c.setHrAuditStatus(c.getReviewerStatus());
}
}); });
int i = attendanceDetailsDao.updateAttDetailsDataExamine(list); int i = attendanceDetailsDao.updateAttDetailsDataExamine(list);
if(i>0){ // todo 更新月报表和日报表
if (i > 0) {
Set<String> keys = new HashSet<>(); Set<String> keys = new HashSet<>();
for (AttDataDetailsBean attDataDetailsBean : list) { for (AttDataDetailsBean attDataDetailsBean : list) {
keys.add(attDataDetailsBean.getAttCurrentDay()); keys.add(attDataDetailsBean.getAttCurrentDay());
@ -228,8 +251,8 @@ public class AttendanceDetailsServiceImpl implements AttendanceDetailsService {
.collect(Collectors.toList()); .collect(Collectors.toList());
attTasks.hisAttPush(dateList); attTasks.hisAttPush(dateList);
return AjaxResult.success("数据同步成功"); return AjaxResult.success("数据同步成功");
}catch (Exception e){ } catch (Exception e) {
log.error(e.toString(),e); log.error(e.toString(), e);
return AjaxResult.error("数据同步失败"); return AjaxResult.error("数据同步失败");
} }
} }
@ -288,7 +311,7 @@ public class AttendanceDetailsServiceImpl implements AttendanceDetailsService {
try { try {
list = attendanceDetailsDao.getClockingRecordListByUserId(bean); list = attendanceDetailsDao.getClockingRecordListByUserId(bean);
} catch (Exception e) { } catch (Exception e) {
log.error(e.toString(),e); log.error(e.toString(), e);
} }
return list; return list;
} }

View File

@ -501,17 +501,23 @@
FROM att_source_data FROM att_source_data
WHERE name = #{userName} AND DATE_FORMAT(att_current_day,'%Y-%m') = #{month} AND is_active = '1' WHERE name = #{userName} AND DATE_FORMAT(att_current_day,'%Y-%m') = #{month} AND is_active = '1'
</select> </select>
<!--查询考勤修改的审核状态-->
<select id="getAuditStatus" resultType="java.lang.Integer">
SELECT reviewer_status
FROM att_data_update
WHERE user_id = #{userId} AND att_current_day = #{attCurrentDay} AND org_id = #{orgId} LIMIT 1
</select>
<update id="updateAttDetailsData"> <update id="updateAttDetailsData">
<foreach collection="list" item="params" separator=";"> <foreach collection="list" item="params" separator=";">
update att_data_update set update_att_current_time = #{params.toWorkAttCurrentTime}, update att_data_update set update_att_current_time = #{params.toWorkAttCurrentTime},
update_att_status = #{params.toWorkAttStatus}, reviewer_status = 0, is_update = 1, update_att_status = #{params.toWorkAttStatus}, reviewer_status = 0, is_update = 1,manager_audit_status = 0,
reason_content = #{params.toErrorRemake} reason_content = #{params.toErrorRemake}
where user_id = #{params.userId} and org_id = #{params.orgId} and att_type = 1 where user_id = #{params.userId} and org_id = #{params.orgId} and att_type = 1
and att_current_day = #{params.attCurrentDay}; and att_current_day = #{params.attCurrentDay};
update att_data_update set update_att_current_time = #{params.offWorkAttCurrentTime}, update att_data_update set update_att_current_time = #{params.offWorkAttCurrentTime},
update_att_status = #{params.offWorkAttStatus}, reviewer_status = 0, is_update = 1, update_att_status = #{params.offWorkAttStatus}, reviewer_status = 0, is_update = 1,manager_audit_status = 0,
reason_content = #{params.offErrorRemake} reason_content = #{params.offErrorRemake}
where user_id = #{params.userId} and org_id = #{params.orgId} and att_type = 2 where user_id = #{params.userId} and org_id = #{params.orgId} and att_type = 2
and att_current_day = #{params.attCurrentDay} and att_current_day = #{params.attCurrentDay}
@ -520,15 +526,32 @@
<update id="updateAttDetailsDataExamine"> <update id="updateAttDetailsDataExamine">
<foreach collection="list" item="params" separator=";"> <foreach collection="list" item="params" separator=";">
update att_data_update set reviewer_status = #{params.reviewerStatus}, <if test="currentAuditStatus == 0">
reviewer_user_id = #{params.reviewerUserId}, reviewer_time = #{params.reviewerTime} update att_data_update set reviewer_status = #{params.reviewerStatus},
where user_id = #{params.userId} and org_id = #{params.orgId} and att_type = 1 manager_audit_id = #{params.managerAuditId}, manager_audit_time = #{params.managerAuditTime},
and att_current_day = #{params.attCurrentDay}; manager_audit_status = #{params.managerAuditStatus}
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 reviewer_status = #{params.reviewerStatus}, update att_data_update set reviewer_status = #{params.reviewerStatus},
reviewer_user_id = #{params.reviewerUserId}, reviewer_time = #{params.reviewerTime} manager_audit_id = #{params.managerAuditId}, manager_audit_time = #{params.managerAuditTime},
where user_id = #{params.userId} and org_id = #{params.orgId} and att_type = 2 manager_audit_status = #{params.managerAuditStatus}
and att_current_day = #{params.attCurrentDay} where user_id = #{params.userId} and org_id = #{params.orgId} and att_type = 2
and att_current_day = #{params.attCurrentDay}
</if>
<if test="currentAuditStatus == 3">
update att_data_update set reviewer_status = #{params.reviewerStatus},
hr_audit_id = #{params.hrAuditId}, hr_audit_time = #{params.hrAuditTime},
hr_audit_status = #{params.hrAuditStatus}
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 reviewer_status = #{params.reviewerStatus},
hr_audit_id = #{params.hrAuditId}, hr_audit_time = #{params.hrAuditTime},
hr_audit_status = #{params.hrAuditStatus}
where user_id = #{params.userId} and org_id = #{params.orgId} and att_type = 2
and att_current_day = #{params.attCurrentDay}
</if>
</foreach> </foreach>
</update> </update>
</mapper> </mapper>