提交 361e9d03 authored 作者: hzh's avatar hzh

功能优化

上级 f72fc5e4
......@@ -12,8 +12,9 @@ public enum ApplyStatus {
//待审核,已完成,已拒绝
WAIT_AUDIT("0", "待审核"),
FINISH("1", "已完成"),
REFUSE("2", "已拒绝");
AUDITING("1", "审批中"),
FINISH("2", "已完成"),
REFUSE("3", "已拒绝");
private final String code;
private final String desc;
......
......@@ -16,10 +16,12 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.web.core.BaseController;
import org.dromara.server.constant.ProcessKey;
import org.dromara.server.domain.bo.ApplyApproveBo;
import org.dromara.server.domain.bo.ApplyBo;
import org.dromara.server.domain.vo.ApplyVo;
import org.dromara.server.service.IApplyService;
import org.dromara.server.service.IProcessProgressService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
......@@ -39,11 +41,11 @@ import java.util.List;
public class ApplyController extends BaseController {
private final IApplyService applyService;
private final IProcessProgressService processProgressService;
/**
* 查询出差申请列表
*/
@SaCheckPermission("server:apply:list")
@GetMapping("/list")
public TableDataInfo<ApplyVo> list(ApplyBo bo, PageQuery pageQuery) {
return applyService.queryPageList(bo, pageQuery);
......@@ -109,6 +111,11 @@ public class ApplyController extends BaseController {
@RepeatSubmit()
@PostMapping("/approve")
public R<Void> approve(@Validated(AddGroup.class) @RequestBody ApplyApproveBo bo) {
List<Long> userIdList = processProgressService.getApproveUserList(ProcessKey.PROCESS_KEY_TRAVEL.getKey());
Long userId = LoginHelper.getUserId();
if (!userIdList.contains(userId)) {
throw new RuntimeException("您没有审批权限!");
}
return toAjax(applyService.approve(bo));
}
......@@ -124,4 +131,14 @@ public class ApplyController extends BaseController {
@PathVariable Long[] ids) {
return toAjax(applyService.deleteWithValidByIds(List.of(ids), true));
}
/**
* 判断是否有权限审批
*/
@GetMapping("/isPermission")
public R<Boolean> isPermission() {
List<Long> userIdList = processProgressService.getApproveUserList(ProcessKey.PROCESS_KEY_TRAVEL.getKey());
Long userId = LoginHelper.getUserId();
return R.ok(userIdList.contains(userId));
}
}
......@@ -5,6 +5,7 @@ import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
......@@ -19,6 +20,7 @@ import java.util.Date;
* @date 2024-12-11
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ProcessApprove.class, reverseConvertGenerate = false)
public class ProcessApproveBo extends BaseEntity {
......
......@@ -103,5 +103,10 @@ public class ApplyVo implements Serializable {
/**
* 审批记录
*/
private List<ApplyApproveVo> approveList;
private List<ProcessApproveVo> approveList;
/**
* 当前审批人
*/
private List<Long> currentUserList;
}
......@@ -5,6 +5,7 @@ import org.dromara.server.constant.ProcessApproveStatus;
import org.dromara.server.domain.ProcessProgress;
import org.dromara.server.domain.bo.ProcessApproveBo;
import org.dromara.server.domain.bo.ProcessProgressBo;
import org.dromara.server.domain.vo.ProcessApproveVo;
import org.dromara.server.domain.vo.ProcessProgressVo;
import java.util.List;
......@@ -60,4 +61,13 @@ public interface IProcessProgressService extends IBaseService<ProcessProgressVo,
*/
List<List<Long>> getCurrentApproveUserList(String processKey, List<Long> relatedIds);
/**
* 获取审批列表
*
* @param processKey 审批key
* @param relatedIds 关联id
* @return 审批列表
*/
List<ProcessApproveVo> getApproveList(String processKey, List<Long> relatedIds);
}
......@@ -2,6 +2,7 @@ package org.dromara.server.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.MapstructUtils;
......@@ -13,19 +14,22 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.service.AbstractBaseService;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.server.constant.ApplyStatus;
import org.dromara.server.constant.ProcessApproveStatus;
import org.dromara.server.constant.ProcessKey;
import org.dromara.server.domain.Apply;
import org.dromara.server.domain.ApplyApprove;
import org.dromara.server.domain.ApplyPerson;
import org.dromara.server.domain.bo.ApplyApproveBo;
import org.dromara.server.domain.bo.ApplyBo;
import org.dromara.server.domain.bo.ApplyPersonBo;
import org.dromara.server.domain.vo.ApplyApproveVo;
import org.dromara.server.domain.bo.ProcessApproveBo;
import org.dromara.server.domain.vo.ApplyPersonVo;
import org.dromara.server.domain.vo.ApplyVo;
import org.dromara.server.domain.vo.ProcessApproveVo;
import org.dromara.server.mapper.ApplyApproveMapper;
import org.dromara.server.mapper.ApplyMapper;
import org.dromara.server.mapper.ApplyPersonMapper;
import org.dromara.server.service.IApplyService;
import org.dromara.server.service.IProcessProgressService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -45,10 +49,9 @@ import java.util.Objects;
public class ApplyServiceImpl extends AbstractBaseService<ApplyVo, ApplyBo, Apply> implements IApplyService {
private final ApplyMapper baseMapper;
private final ApplyPersonMapper applyPersonMapper;
private final ApplyApproveMapper applyApproveMapper;
private final IProcessProgressService processProgressService;
@Override
public BaseMapperPlus<Apply, ApplyVo> mapper() {
......@@ -103,12 +106,24 @@ public class ApplyServiceImpl extends AbstractBaseService<ApplyVo, ApplyBo, Appl
if (!StringUtils.equals(apply.getStatus(), ApplyStatus.WAIT_AUDIT.getCode())) {
throw new RuntimeException("该申请不是待审批状态,不能进行审批!");
}
bo.setApproveUserId(LoginHelper.getUserId());
bo.setApproveName(LoginHelper.getLoginUser().getNickname());
bo.setApproveTime(new Date());
applyApproveMapper.insert(MapstructUtils.convert(bo, ApplyApprove.class));
apply.setStatus(bo.getPass() ? ApplyStatus.FINISH.getCode() : ApplyStatus.REFUSE.getCode());
//审批
processProgressService.approve(new ProcessApproveBo()
.setRelatedId(bo.getApplyId())
.setProcessConfigKey(ProcessKey.PROCESS_KEY_TRAVEL.getKey())
.setPass(bo.getPass())
.setApproveDesc(bo.getApproveDesc()));
//更新状态
ProcessApproveStatus approveStatus = processProgressService.getApproveStatus(ProcessKey.PROCESS_KEY_TRAVEL.getKey(), bo.getApplyId());
if (StringUtils.equals(approveStatus.name(), ProcessApproveStatus.END.name())) {
apply.setStatus(ApplyStatus.FINISH.getCode());
} else if (StringUtils.equals(approveStatus.name(), ProcessApproveStatus.REJECT.name())) {
apply.setStatus(ApplyStatus.REFUSE.getCode());
} else {
apply.setStatus(ApplyStatus.AUDITING.getCode());
}
baseMapper.updateById(apply);
return true;
}
......@@ -120,12 +135,18 @@ public class ApplyServiceImpl extends AbstractBaseService<ApplyVo, ApplyBo, Appl
List<Long> applyIds = StreamUtils.toList(list, ApplyVo::getId);
applyIds = CollectionUtil.isEmpty(applyIds) ? List.of(-1L) : applyIds;
//查询审批记录
List<ApplyApproveVo> approveList = applyApproveMapper.selectVoList(new LambdaQueryWrapper<ApplyApprove>().in(ApplyApprove::getApplyId, applyIds));
List<ProcessApproveVo> approveList = processProgressService.getApproveList(ProcessKey.PROCESS_KEY_TRAVEL.getKey(), applyIds);
//获取当前审批人信息
List<List<Long>> currentApproveUserList = processProgressService.getCurrentApproveUserList(ProcessKey.PROCESS_KEY_TRAVEL.getKey(), applyIds);
//查询出行人
List<ApplyPersonVo> personList = applyPersonMapper.selectVoList(new LambdaQueryWrapper<ApplyPerson>().in(ApplyPerson::getApplyId, applyIds));
List<Long> finalApplyIds = applyIds;
list.forEach(vo -> {
vo.setPersonList(StreamUtils.filter(personList, p -> Objects.equals(p.getApplyId(), vo.getId())));
vo.setApproveList(StreamUtils.filter(approveList, a -> Objects.equals(a.getApplyId(), vo.getId())));
vo.setApproveList(StreamUtils.filter(approveList, a -> Objects.equals(a.getRelatedId(), vo.getId())));
if (CollectionUtils.isNotEmpty(currentApproveUserList)) {
vo.setCurrentUserList(currentApproveUserList.get(finalApplyIds.indexOf(vo.getId())));
}
});
return page;
}
......
......@@ -21,6 +21,7 @@ import org.dromara.server.domain.ProcessProgress;
import org.dromara.server.domain.bo.ProcessApproveBo;
import org.dromara.server.domain.bo.ProcessProgressBo;
import org.dromara.server.domain.vo.Process;
import org.dromara.server.domain.vo.ProcessApproveVo;
import org.dromara.server.domain.vo.ProcessProgressVo;
import org.dromara.server.mapper.ProcessApproveMapper;
import org.dromara.server.mapper.ProcessConfigMapper;
......@@ -231,4 +232,18 @@ public class ProcessProgressServiceImpl extends AbstractBaseService<ProcessProgr
progressList.stream().filter(p -> Objects.equals(p.getRelatedId(), relatedId)).map(ProcessProgress::getApproveUserId).collect(Collectors.toList())
);
}
@Override
public List<ProcessApproveVo> getApproveList(String processKey, List<Long> relatedIds) {
if (StringUtils.isEmpty(processKey)) {
throw new RuntimeException("流程配置不存在!");
}
if (CollectionUtils.isEmpty(relatedIds)) {
return List.of();
}
return processApproveMapper.selectVoList(
new LambdaQueryWrapper<>(ProcessApprove.class)
.eq(ProcessApprove::getProcessConfigKey, processKey)
.in(ProcessApprove::getRelatedId, relatedIds));
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论