审批过销假处理

This commit is contained in:
XaoLi717 2024-12-18 11:31:38 +08:00
parent 29bb4817c3
commit 7c64608a60
3 changed files with 120 additions and 2 deletions

View File

@ -56,4 +56,17 @@ public interface XjglService {
*/
PageResult<XjglDO> getXjglPage(XjglPageReqVO pageReqVO);
/**
* 销假
* @param id
*/
Boolean backDay(Long id);
/**
* 销假管理判断
* @param id
* @param processId
* @return
*/
Boolean XjglHistoryService(Long id, String processId);
}

View File

@ -1,10 +1,15 @@
package cn.iocoder.yudao.module.home.service.xjgl;
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.dal.dataobject.njgl.NjglDO;
import cn.iocoder.yudao.module.home.dal.mysql.njgl.NjglMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.*;
import cn.iocoder.yudao.module.home.controller.admin.xjgl.vo.*;
import cn.iocoder.yudao.module.home.dal.dataobject.xjgl.XjglDO;
@ -42,6 +47,9 @@ public class XjglServiceImpl implements XjglService {
@Resource
private XjglMapper xjglMapper;
@Resource
NjglMapper njglMapper;
@Override
public Long createXjgl(Long userId,XjglSaveReqVO createReqVO) {
PROCESS_KEY = createReqVO.getProcessDefinitionKey();
@ -108,4 +116,62 @@ public class XjglServiceImpl implements XjglService {
return xjglMapper.selectPage(pageReqVO);
}
@Override
public Boolean backDay(Long id) {
XjglDO xjglDO = xjglMapper.selectById(id);
NjglPageReqVO njglPageReqVO = buildXjglReqVo(xjglDO);
NjglDO njglDO = getNjglPage(njglPageReqVO);
if (njglDO == null) {
return false;
}
NjglRespVO njglRespVO = BeanUtils.toBean(njglDO, NjglRespVO.class);
//这里后面判断一下是不是年假 是年假在更改数据
upDataRespVo2(njglRespVO,xjglDO);
// if ((njglRespVO.getUsedDays().compareTo(BigDecimal.ZERO) < 0)&&(njglRespVO.getRemainingDays().compareTo(BigDecimal.valueOf(10)) > 0)) {
// return false;
// }
// 更新
NjglDO updateObj = BeanUtils.toBean(njglRespVO, NjglDO.class);
njglMapper.updateById(updateObj);
return true;
}
private NjglPageReqVO buildXjglReqVo(XjglDO xjglDO) {
NjglPageReqVO njglPageReqVO = new NjglPageReqVO();
njglPageReqVO.setUserId(xjglDO.getUserId());
njglPageReqVO.setUserName(xjglDO.getUserName());
njglPageReqVO.setDeptId(xjglDO.getDeptId());
njglPageReqVO.setDeptName(xjglDO.getDeptName());
njglPageReqVO.setYear(String.valueOf(xjglDO.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 upDataRespVo2(NjglRespVO njglRespVO, XjglDO xjglDO) {
njglRespVO.setRemainingDays(njglRespVO.getRemainingDays().add(xjglDO.getDay()));
njglRespVO.setUsedDays(njglRespVO.getUsedDays().subtract(xjglDO.getDay()));
}
@Override
public Boolean XjglHistoryService(Long id, String processId) {
XjglDO xjglDO = xjglMapper.selectById(id);
if (xjglDO == null) {
return false;
}
if (!xjglDO.getProcessInstanceId().equals(processId)) {
return false;
}
return true;
}
}

View File

@ -0,0 +1,39 @@
package cn.iocoder.yudao.module.home.service.xjgl.listenter;
import cn.iocoder.yudao.module.home.application.ApplicationContextHandler;
import cn.iocoder.yudao.module.home.service.xjgl.XjglService;
import org.flowable.engine.delegate.DelegateExecution;
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_BACK_DAY;
@Component
public class XjglEndListener implements ExecutionListener {
@Override
public void notify(DelegateExecution delegateExecution) {
if (delegateExecution.getEventName().equals("end")) {
String key = delegateExecution.getProcessInstanceBusinessKey();
Long XjId = Long.parseLong(key);
String processId = delegateExecution.getProcessInstanceId();
XjglService xjglService = ApplicationContextHandler.getBean(XjglService.class);
if (!xjglService.XjglHistoryService(XjId,processId)) {
return;
}
Boolean err = xjglService.backDay(XjId);
if (!err) {
throw exception(NJGL_BACK_DAY);
}
}
}
// System.out.println("task name22:"+delegateExecution.getEventName());
// System.out.println("kdy22: " + XjId);
// System.out.println("processId: " + processId);
// System.out.println("delegateExecution22: " + delegateExecution);
}