审批过请假处理

This commit is contained in:
XaoLi717 2024-12-18 11:31:27 +08:00
parent 04ce1c9506
commit 29bb4817c3
3 changed files with 110 additions and 5 deletions

View File

@ -53,4 +53,18 @@ public interface QjglService {
PageResult<QjglDO> getQjglPage(QjglPageReqVO pageReqVO); PageResult<QjglDO> getQjglPage(QjglPageReqVO pageReqVO);
PageResult<QjglDO> getQjglPage(Long userid,QjglPageReqVO pageReqVO); PageResult<QjglDO> getQjglPage(Long userid,QjglPageReqVO pageReqVO);
/**
* 改变请假管理数据状态
* @param id
*/
Boolean dataStatus(Long id);
/**
* 请假管理监听器判断
* @param id
* @param processId
* @return
*/
Boolean QjglHistoryService(Long id, String processId);
} }

View File

@ -5,8 +5,12 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.bpm.dal.dataobject.processinstancetodo.ProcessInstanceTodoDO; import cn.iocoder.yudao.module.bpm.dal.dataobject.processinstancetodo.ProcessInstanceTodoDO;
import cn.iocoder.yudao.module.bpm.dal.mysql.processinstancetodo.ProcessInstanceTodoMapper; import cn.iocoder.yudao.module.bpm.dal.mysql.processinstancetodo.ProcessInstanceTodoMapper;
import cn.iocoder.yudao.module.bpm.service.processinstancetodo.ProcessInstanceTodoService; import cn.iocoder.yudao.module.bpm.service.processinstancetodo.ProcessInstanceTodoService;
import cn.iocoder.yudao.module.home.controller.admin.njgl.vo.NjglPageReqVO;
import cn.iocoder.yudao.module.home.controller.admin.njgl.vo.NjglRespVO;
import cn.iocoder.yudao.module.home.controller.admin.qjgl.vo.*; import cn.iocoder.yudao.module.home.controller.admin.qjgl.vo.*;
import cn.iocoder.yudao.module.home.dal.dataobject.njgl.NjglDO;
import cn.iocoder.yudao.module.home.dal.dataobject.qjgl.QjglDO; import cn.iocoder.yudao.module.home.dal.dataobject.qjgl.QjglDO;
import cn.iocoder.yudao.module.home.dal.mysql.njgl.NjglMapper;
import cn.iocoder.yudao.module.home.dal.mysql.qjgl.QjglMapper; import cn.iocoder.yudao.module.home.dal.mysql.qjgl.QjglMapper;
import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi; import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
@ -15,6 +19,7 @@ import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -41,6 +46,9 @@ public class QjglServiceImpl implements QjglService {
@Resource @Resource
private ProcessInstanceTodoService processInstanceTodoService; private ProcessInstanceTodoService processInstanceTodoService;
@Resource
private NjglMapper njglMapper;
@Override @Override
public Long createQjgl(Long userId,QjglSaveReqVO createReqVO) { public Long createQjgl(Long userId,QjglSaveReqVO createReqVO) {
PROCESS_KEY = createReqVO.getProcessDefinitionKey(); PROCESS_KEY = createReqVO.getProcessDefinitionKey();
@ -136,4 +144,64 @@ public class QjglServiceImpl implements QjglService {
return qjglMapper.selectPage(userId,pageReqVO); return qjglMapper.selectPage(userId,pageReqVO);
} }
@Override
public Boolean dataStatus(Long id) {
QjglDO qjgl = qjglMapper.selectById(id);
NjglPageReqVO njglPageReqVO = buildNjglReqVo(qjgl);
NjglDO njglDO = getNjglPage(njglPageReqVO);
if (njglDO == null) {
return false;
}
NjglRespVO njglRespVO = BeanUtils.toBean(njglDO, NjglRespVO.class);
upDataRespVo(njglRespVO,qjgl);
//这里在是不用判断是不是剩余天数不够 而是在前端实现
// if ((njglRespVO.getUsedDays().compareTo(BigDecimal.valueOf(10)) > 0)&&(njglRespVO.getRemainingDays().compareTo(BigDecimal.ZERO) < 0)) {
// return false;
// }
// 更新
NjglDO updateObj = BeanUtils.toBean(njglRespVO, NjglDO.class);
njglMapper.updateById(updateObj);
return true;
}
private NjglPageReqVO buildNjglReqVo(QjglDO qjgl) {
NjglPageReqVO njglPageReqVO = new NjglPageReqVO();
njglPageReqVO.setUserId(qjgl.getUserId());
njglPageReqVO.setUserName(qjgl.getUserName());
njglPageReqVO.setDeptId(qjgl.getDeptId());
njglPageReqVO.setDeptName(qjgl.getDeptName());
njglPageReqVO.setYear(String.valueOf(qjgl.getStartTime().getYear()));
return njglPageReqVO;
}
private NjglDO getNjglPage(NjglPageReqVO njglPageReqVO) {
PageResult<NjglDO> pageResult = njglMapper.selectPage(njglPageReqVO);
if (pageResult.getList().isEmpty()) {
return null;
}
return pageResult.getList().get(0);
}
private void upDataRespVo(NjglRespVO njglRespVO, QjglDO qjgl) {
njglRespVO.setStatus(1);
njglRespVO.setRemainingDays(njglRespVO.getRemainingDays().subtract(qjgl.getDay()));
njglRespVO.setUsedDays(njglRespVO.getUsedDays().add(qjgl.getDay()));
}
@Override
public Boolean QjglHistoryService(Long id, String processId) {
QjglDO qjglDO = qjglMapper.selectById(id);
if (qjglDO == null) {
return false;
}
if (!qjglDO.getProcessInstanceId().equals(processId)) {
return false;
}
return true;
}
} }

View File

@ -1,15 +1,38 @@
package cn.iocoder.yudao.module.home.service.qjgl.listener; package cn.iocoder.yudao.module.home.service.qjgl.listener;
import cn.iocoder.yudao.module.home.application.ApplicationContextHandler;
import cn.iocoder.yudao.module.home.service.qjgl.QjglService;
import org.flowable.engine.delegate.DelegateExecution; import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.ExecutionListener; import org.flowable.engine.delegate.ExecutionListener;
import org.springframework.stereotype.Component;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.home.enums.ErrorCodeConstants.NJGL_DATA_STATUS;
@Component
public class ProcessEndListener implements ExecutionListener { public class ProcessEndListener implements ExecutionListener {
@Override @Override
public void notify(DelegateExecution execution) { public void notify(DelegateExecution execution) {
System.out.println("task name:"+execution.getEventName() ); if (execution.getEventName().equals("end")) {
// if (execution.getEventName().equals("end")) {
// // 流程结束时触发 String key = execution.getProcessInstanceBusinessKey();
// System.out.println("Process instance " + execution.getProcessInstanceId() + " has ended."); Long QjId = Long.parseLong(key);
// } String processId = execution.getProcessInstanceId();
QjglService qjglService = ApplicationContextHandler.getBean(QjglService.class);
if (!qjglService.QjglHistoryService(QjId,processId)) {
return;
}
Boolean err = qjglService.dataStatus(QjId);
if (!err) {
throw exception(NJGL_DATA_STATUS);
} }
} }
}
// System.out.println("task name11:"+execution.getEventName());
// System.out.println("kdy11: " + QjId);
// System.out.println("processId: " + processId);
// System.out.println("delegateExecution2211: " + execution);
}