考勤修改审核流程配置
This commit is contained in:
parent
902a63dcf2
commit
bc0dbfced0
|
|
@ -57,6 +57,8 @@ public class SpringThreadPoolConfig {
|
||||||
executor.setThreadNamePrefix(threadNamePrefix);
|
executor.setThreadNamePrefix(threadNamePrefix);
|
||||||
// 线程池对拒绝任务的处理策略
|
// 线程池对拒绝任务的处理策略
|
||||||
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
|
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
|
||||||
|
// 允许核心线程在空闲时被回收
|
||||||
|
executor.setAllowCoreThreadTimeOut(true);
|
||||||
// 初始化
|
// 初始化
|
||||||
executor.initialize();
|
executor.initialize();
|
||||||
return executor;
|
return executor;
|
||||||
|
|
|
||||||
|
|
@ -163,12 +163,7 @@ public class AttendanceDetailsController extends BaseController {
|
||||||
@PutMapping("updateAttDetailsDataExamine")
|
@PutMapping("updateAttDetailsDataExamine")
|
||||||
@Log(title = "考勤报表->考勤明细->考勤修改", businessType = BusinessType.UPDATE)
|
@Log(title = "考勤报表->考勤明细->考勤修改", businessType = BusinessType.UPDATE)
|
||||||
public AjaxResult examine(@RequestBody List<AttDataDetailsBean> list) {
|
public AjaxResult examine(@RequestBody List<AttDataDetailsBean> list) {
|
||||||
try{
|
return attendanceDetailsService.updateAttDetailsDataExamine(list);
|
||||||
return attendanceDetailsService.updateAttDetailsDataExamine(list);
|
|
||||||
}catch (Exception e){
|
|
||||||
log.error(e.toString(),e);
|
|
||||||
}
|
|
||||||
return error("系统异常");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,10 @@ import com.bonus.system.basic.domain.SysNotice;
|
||||||
import com.bonus.system.basic.service.SysNoticeService;
|
import com.bonus.system.basic.service.SysNoticeService;
|
||||||
import com.bonus.system.file.service.FileUploadService;
|
import com.bonus.system.file.service.FileUploadService;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
@ -44,6 +47,9 @@ public class AttendanceDetailsServiceImpl implements AttendanceDetailsService {
|
||||||
@Resource(name = "FileUploadService")
|
@Resource(name = "FileUploadService")
|
||||||
private FileUploadService fileUploadService;
|
private FileUploadService fileUploadService;
|
||||||
|
|
||||||
|
@Resource(name = "testTaskExecutor")
|
||||||
|
private ThreadPoolTaskExecutor testTaskExecutor;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<AttDataDetailsBean> selectAttDetailsList(AttDataDetailsBean bean) {
|
public List<AttDataDetailsBean> selectAttDetailsList(AttDataDetailsBean bean) {
|
||||||
List<AttDataDetailsBean> list = attendanceDetailsDao.selectAttDetailsList(bean);
|
List<AttDataDetailsBean> list = attendanceDetailsDao.selectAttDetailsList(bean);
|
||||||
|
|
@ -109,43 +115,68 @@ public class AttendanceDetailsServiceImpl implements AttendanceDetailsService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public AjaxResult updateAttDetailsDataExamine(List<AttDataDetailsBean> list) {
|
public AjaxResult updateAttDetailsDataExamine(List<AttDataDetailsBean> list) {
|
||||||
long userId = SecurityUtils.getLoginUser().getSysUser().getUserId();
|
try {
|
||||||
// 当前登录人的审核权限类型
|
long userId = SecurityUtils.getLoginUser().getSysUser().getUserId();
|
||||||
int auditType = RoleUtil.getAuditType();
|
// 当前登录人的审核权限类型
|
||||||
if(auditType == 0){
|
int auditType = RoleUtil.getAuditType();
|
||||||
return AjaxResult.error("当前用户无审核权限");
|
if(auditType == 0){
|
||||||
}
|
return AjaxResult.error("当前用户无审核权限");
|
||||||
String time = DateUtils.getTime();
|
|
||||||
for (AttDataDetailsBean c : list) {
|
|
||||||
c.setReviewerUserId(userId);
|
|
||||||
c.setReviewerTime(time);
|
|
||||||
Integer auditStatus = attendanceDetailsDao.getAuditStatus(c);
|
|
||||||
c.setCurrentAuditStatus(auditStatus);
|
|
||||||
if(Objects.equals(auditStatus,0)){ // 部门负责人审核
|
|
||||||
if(auditType == 2){
|
|
||||||
return AjaxResult.error("当前用户无审核权限");
|
|
||||||
}
|
|
||||||
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)){ // 人资审核
|
|
||||||
if(auditType == 1){
|
|
||||||
return AjaxResult.error("当前用户无审核权限");
|
|
||||||
}
|
|
||||||
c.setHrAuditTime(time);
|
|
||||||
c.setHrAuditId(userId);
|
|
||||||
c.setHrAuditStatus(c.getReviewerStatus());
|
|
||||||
}
|
}
|
||||||
|
String time = DateUtils.getTime();
|
||||||
|
for (AttDataDetailsBean c : list) {
|
||||||
|
Integer auditStatus = attendanceDetailsDao.getAuditStatus(c);
|
||||||
|
c.setReviewerUserId(userId);
|
||||||
|
c.setReviewerTime(time);
|
||||||
|
c.setCurrentAuditStatus(auditStatus);
|
||||||
|
if(Objects.equals(auditStatus,1) || Objects.equals(auditStatus,2)){ // 数据审核通过|数据审核驳回
|
||||||
|
continue;
|
||||||
|
}else if(Objects.equals(auditStatus,0)){ // 部门负责人审核
|
||||||
|
if(auditType == 2){ // 数据处于部门负责人审核中,人资专员无权审核
|
||||||
|
return AjaxResult.error("当前用户无审核权限");
|
||||||
|
}
|
||||||
|
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)){ // 人资审核
|
||||||
|
if(auditType == 1){ // 数据处于人资审核中,部门负责人无权审核
|
||||||
|
return AjaxResult.error("当前用户无审核权限");
|
||||||
|
}
|
||||||
|
c.setHrAuditTime(time);
|
||||||
|
c.setHrAuditId(userId);
|
||||||
|
c.setHrAuditStatus(c.getReviewerStatus());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int i = attendanceDetailsDao.updateAttDetailsDataExamine(list);
|
||||||
|
// 提交数据同步任务到线程池
|
||||||
|
testTaskExecutor.submit(() -> syncData(list));
|
||||||
|
return AjaxResult.success();
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error(e.toString(),e);
|
||||||
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
|
return AjaxResult.error();
|
||||||
}
|
}
|
||||||
int i = attendanceDetailsDao.updateAttDetailsDataExamine(list);
|
}
|
||||||
if (i > 0) {
|
|
||||||
|
/**
|
||||||
|
* 考勤明细修改后执行定时任务
|
||||||
|
* @param list
|
||||||
|
* @return void
|
||||||
|
* @author cwchen
|
||||||
|
* @date 2025/2/21 16:49
|
||||||
|
*/
|
||||||
|
private void syncData(List<AttDataDetailsBean> list) {
|
||||||
|
// 数据同步逻辑
|
||||||
|
log.info("Data synchronization in progress...");
|
||||||
|
// 模拟耗时操作
|
||||||
|
try {
|
||||||
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());
|
||||||
|
|
@ -155,8 +186,10 @@ public class AttendanceDetailsServiceImpl implements AttendanceDetailsService {
|
||||||
newAttTask.insertDayReportData(item);
|
newAttTask.insertDayReportData(item);
|
||||||
newAttTask.updateMonthReportData(item);
|
newAttTask.updateMonthReportData(item);
|
||||||
}
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error(e.toString(),e);
|
||||||
}
|
}
|
||||||
return AjaxResult.success();
|
log.info("Data synchronization completed.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,12 @@ import java.util.List;
|
||||||
*/
|
*/
|
||||||
public class RoleUtil {
|
public class RoleUtil {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前登录人的角色-供前端使用
|
||||||
|
* @return int
|
||||||
|
* @author cwchen
|
||||||
|
* @date 2025/2/21 16:52
|
||||||
|
*/
|
||||||
public static int getCurrentUserRole(){
|
public static int getCurrentUserRole(){
|
||||||
SysUser sysUser = SecurityUtils.getLoginUser().getSysUser();
|
SysUser sysUser = SecurityUtils.getLoginUser().getSysUser();
|
||||||
List<String> rolesId = sysUser.getRoleList();
|
List<String> rolesId = sysUser.getRoleList();
|
||||||
|
|
@ -31,6 +37,12 @@ public class RoleUtil {
|
||||||
return roleId;
|
return roleId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前登录人的审核角色-后端审核使用
|
||||||
|
* @return int
|
||||||
|
* @author cwchen
|
||||||
|
* @date 2025/2/21 16:51
|
||||||
|
*/
|
||||||
public static int getAuditType(){
|
public static int getAuditType(){
|
||||||
int auditType;
|
int auditType;
|
||||||
List<String> roleId = SecurityUtils.getLoginUser().getSysUser().getRoleList();
|
List<String> roleId = SecurityUtils.getLoginUser().getSysUser().getRoleList();
|
||||||
|
|
@ -40,7 +52,7 @@ public class RoleUtil {
|
||||||
auditType = 2;
|
auditType = 2;
|
||||||
}else if(Collections.frequency(roleId, "1") == 1){ // 管理员
|
}else if(Collections.frequency(roleId, "1") == 1){ // 管理员
|
||||||
auditType = 3;
|
auditType = 3;
|
||||||
} else {
|
} else { // 其他角色无审核权限
|
||||||
auditType = 0;
|
auditType = 0;
|
||||||
}
|
}
|
||||||
return auditType;
|
return auditType;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue