package com.ruoyi.approve.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ruoyi.approve.mapper.ApproveProcessMapper;
|
import com.ruoyi.approve.pojo.ApproveNode;
|
import com.ruoyi.approve.pojo.ApproveProcess;
|
import com.ruoyi.approve.service.IApproveNodeService;
|
import com.ruoyi.approve.service.IApproveProcessService;
|
import com.ruoyi.approve.utils.DailyRedisCounter;
|
import com.ruoyi.approve.vo.ApproveGetAndUpdateVo;
|
import com.ruoyi.approve.vo.ApproveProcessVO;
|
import com.ruoyi.common.utils.SecurityUtils;
|
import com.ruoyi.project.system.domain.SysDept;
|
import com.ruoyi.project.system.mapper.SysDeptMapper;
|
import lombok.AllArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.context.annotation.Lazy;
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
import org.springframework.stereotype.Service;
|
|
import java.time.LocalDate;
|
import java.time.format.DateTimeFormatter;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
@Service
|
@RequiredArgsConstructor
|
public class ApproveProcessServiceImpl extends ServiceImpl<ApproveProcessMapper, ApproveProcess> implements IApproveProcessService {
|
private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyyyMMdd");
|
|
private final StringRedisTemplate redisTemplate;
|
|
private final DailyRedisCounter dailyRedisCounter;
|
|
private final SysDeptMapper sysDeptMapper;
|
private final IApproveNodeService approveNodeService;
|
|
@Override
|
public void addApprove(ApproveProcessVO approveProcessVO) {
|
Long userId = SecurityUtils.getUserId();
|
//租户id
|
Long tenantId = SecurityUtils.getLoginUser().getTenantId();
|
|
String today = LocalDate.now().format(DATE_FORMAT);
|
Long approveId = dailyRedisCounter.incrementAndGet("approveId");
|
String formattedCount = String.format("%03d", approveId);
|
//流程 ID
|
String approveID = today + formattedCount;
|
|
ApproveProcess approveProcess = new ApproveProcess();
|
approveProcess.setApproveId(approveID);
|
approveProcess.setApproveUser(userId);
|
approveProcess.setApproveDeptName(approveProcessVO.getDeptName());
|
approveProcess.setApproveUserNames(approveProcessVO.getApproverNames());
|
approveProcess.setApproveTime(new Date());
|
approveProcess.setApproveReason(approveProcessVO.getApproveReason());
|
approveProcess.setApproveOverTime(null);
|
approveProcess.setApproveStatus(0);
|
approveProcess.setApproveDelete(0);
|
approveProcess.setTenantId(tenantId);
|
|
save(approveProcess);
|
//初始化审批节点
|
approveNodeService.initApproveNodes(approveID);
|
}
|
|
@Override
|
public List<SysDept> selectDeptListByDeptIds(Long[] deptIds) {
|
List<SysDept> sysDeptList =new ArrayList<SysDept>();
|
for (Long deptId : deptIds) {
|
SysDept sysDept = sysDeptMapper.selectDeptById(deptId);
|
sysDeptList.add(sysDept);
|
}
|
return sysDeptList;
|
}
|
|
@Override
|
public List<ApproveProcess> listAll() {
|
LambdaQueryWrapper<ApproveProcess> queryWrapper = new LambdaQueryWrapper<>();
|
queryWrapper.eq(ApproveProcess::getApproveDelete, 0);
|
return list(queryWrapper);
|
}
|
|
@Override
|
public void delApprove(Long[] ids) {
|
for (Long id : ids) {
|
LambdaQueryWrapper<ApproveProcess> queryWrapper = new LambdaQueryWrapper<>();
|
queryWrapper.eq(ApproveProcess::getApproveId, id);
|
update(queryWrapper);
|
}
|
}
|
|
@Override
|
public ApproveProcess getApproveById(String id) {
|
LambdaQueryWrapper<ApproveProcess> queryWrapper = new LambdaQueryWrapper<>();
|
queryWrapper.eq(ApproveProcess::getApproveId, id);
|
queryWrapper.eq(ApproveProcess::getApproveDelete, 0);
|
return getOne(queryWrapper);
|
}
|
|
@Override
|
public void updateApproveProcessStatus(ApproveNode approveNode) {
|
ApproveProcess approveProcess = getById(approveNode.getApproveProcessId());
|
if(approveNode.getIsFirst()){
|
if(approveNode.getApproveNodeStatus() == 1){
|
approveProcess.setApproveStatus(1);
|
}
|
}
|
if(approveNode.getIsLast()){
|
if(approveNode.getApproveNodeStatus() == 1){
|
approveProcess.setApproveStatus(2);
|
}
|
}
|
|
}
|
|
@Override
|
public void updateByApproveId(ApproveGetAndUpdateVo approveGetAndUpdateVo) {
|
ApproveProcess approve = getApproveById(approveGetAndUpdateVo.getId());
|
approve.setApproveReason(approveGetAndUpdateVo.getApproveReason());
|
updateById(approve);
|
}
|
|
|
}
|