update
This commit is contained in:
parent
4a1abd4c24
commit
7fa7ef5fe1
|
@ -45,4 +45,7 @@ public class WorkFlowDto extends WorkFlow {
|
||||||
@ApiModelProperty(value = "是否能重新发起")
|
@ApiModelProperty(value = "是否能重新发起")
|
||||||
private Boolean isReStart;
|
private Boolean isReStart;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "是否能发起维修流程")
|
||||||
|
private Boolean isRepair;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,4 +43,7 @@ public class WorkFlow extends BaseEntity{
|
||||||
@ApiModelProperty(value = "状态")
|
@ApiModelProperty(value = "状态")
|
||||||
private String status;
|
private String status;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "关联流程id")
|
||||||
|
private String workFlowId;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,4 +17,7 @@ public class WorkFlowVo {
|
||||||
@ApiModelProperty(value = "表单数据")
|
@ApiModelProperty(value = "表单数据")
|
||||||
@NotBlank(message = "表单数据不能为空")
|
@NotBlank(message = "表单数据不能为空")
|
||||||
private String data;
|
private String data;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "关联的预算流程id 用于维修决算 前提必须有预算申请并且通过")
|
||||||
|
private String workFlowId;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.ydool.oa.workFlow.data.wrapper;
|
||||||
|
|
||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
import cn.hutool.core.util.ObjUtil;
|
import cn.hutool.core.util.ObjUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.extra.spring.SpringUtil;
|
import cn.hutool.extra.spring.SpringUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.ydool.common.base.BaseWrapper;
|
import com.ydool.common.base.BaseWrapper;
|
||||||
|
@ -25,7 +26,6 @@ import org.mapstruct.Mapper;
|
||||||
import org.mapstruct.MappingTarget;
|
import org.mapstruct.MappingTarget;
|
||||||
import org.mapstruct.factory.Mappers;
|
import org.mapstruct.factory.Mappers;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Mapper
|
@Mapper
|
||||||
|
@ -88,6 +88,7 @@ public interface WorkFlowWrapper extends BaseWrapper<WorkFlow, WorkFlowDto> {
|
||||||
|
|
||||||
dto.setIsApprove(false);
|
dto.setIsApprove(false);
|
||||||
dto.setIsWrite(false);
|
dto.setIsWrite(false);
|
||||||
|
dto.setIsRepair(false);
|
||||||
|
|
||||||
if (count > 0 && WorkFlowStepTypeEnum.APPROVAL.getType().equals(obj.getStepType())) {
|
if (count > 0 && WorkFlowStepTypeEnum.APPROVAL.getType().equals(obj.getStepType())) {
|
||||||
dto.setIsApprove(true);
|
dto.setIsApprove(true);
|
||||||
|
@ -97,5 +98,9 @@ public interface WorkFlowWrapper extends BaseWrapper<WorkFlow, WorkFlowDto> {
|
||||||
dto.setIsWrite(true);
|
dto.setIsWrite(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (obj.getType().equals(WorkFlowTypeEnum.BUDGET.getType()) && obj.getStatus().equals(WorkFlowStatusEnum.PASS.getStatus()) && StrUtil.isBlank(obj.getWorkFlowId())) {
|
||||||
|
dto.setIsRepair(true);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
package com.ydool.oa.workFlow.engine.service.impl;
|
package com.ydool.oa.workFlow.engine.service.impl;
|
||||||
|
|
||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.util.ObjUtil;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.ydool.common.data.dto.AjaxResult;
|
import com.ydool.common.data.dto.AjaxResult;
|
||||||
|
import com.ydool.common.exception.ResultException;
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlow;
|
import com.ydool.oa.workFlow.data.entity.WorkFlow;
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlowNotice;
|
import com.ydool.oa.workFlow.data.entity.WorkFlowNotice;
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlowStep;
|
import com.ydool.oa.workFlow.data.entity.WorkFlowStep;
|
||||||
|
@ -18,14 +22,19 @@ import com.ydool.oa.workFlow.service.WorkFlowService;
|
||||||
import com.ydool.oa.workFlow.service.WorkFlowStepLogService;
|
import com.ydool.oa.workFlow.service.WorkFlowStepLogService;
|
||||||
import com.ydool.oa.workFlow.service.WorkFlowStepService;
|
import com.ydool.oa.workFlow.service.WorkFlowStepService;
|
||||||
import com.ydool.system.entity.Config;
|
import com.ydool.system.entity.Config;
|
||||||
|
import com.ydool.system.entity.Dept;
|
||||||
|
import com.ydool.system.entity.Role;
|
||||||
import com.ydool.system.entity.User;
|
import com.ydool.system.entity.User;
|
||||||
import com.ydool.system.service.impl.ConfigServiceImpl;
|
import com.ydool.system.service.impl.*;
|
||||||
import com.ydool.system.service.impl.JobServiceImpl;
|
|
||||||
import com.ydool.system.service.impl.UserServiceImpl;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class BudgetWorkFlowService implements IWorkFlowType {
|
public class BudgetWorkFlowService implements IWorkFlowType {
|
||||||
@Autowired
|
@Autowired
|
||||||
|
@ -49,39 +58,100 @@ public class BudgetWorkFlowService implements IWorkFlowType {
|
||||||
@Autowired
|
@Autowired
|
||||||
private ConfigServiceImpl configService;
|
private ConfigServiceImpl configService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RoleServiceImpl roleService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DeptServiceImpl deptService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public AjaxResult first(WorkFlow workFlow) {
|
public AjaxResult first(WorkFlow workFlow) {
|
||||||
|
//是否维修上报角色
|
||||||
|
User user = userService.getById(workFlow.getUserId());
|
||||||
|
List<Role> roles = roleService.listByIds(Arrays.asList(user.getRoles().split(",")));
|
||||||
|
List<String> roleNames = roles.stream().map(Role::getName).collect(Collectors.toList());
|
||||||
|
if (!roleNames.contains("维修上报")) throw new ResultException("您不是维修上报人员");
|
||||||
|
|
||||||
|
Dept dept = deptService.getById(user.getDept());
|
||||||
|
if (ObjUtil.isNull(dept)) throw new ResultException("您没有部门");
|
||||||
// 1.流程step+1
|
// 1.流程step+1
|
||||||
workFlow.setStep(workFlow.getStep() + 1);
|
workFlow.setStep(workFlow.getStep() + 1);
|
||||||
workFlow.setStepType(WorkFlowStepTypeEnum.APPROVAL.getType());
|
workFlow.setStepType(WorkFlowStepTypeEnum.APPROVAL.getType());
|
||||||
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
||||||
boolean flag = workFlowService.updateById(workFlow);
|
boolean flag = workFlowService.updateById(workFlow);
|
||||||
|
|
||||||
// 2.找到领导账号
|
// 2.通知部门或库点负责人账号
|
||||||
Config leadership = configService.getOne(new QueryWrapper<Config>().lambda()
|
Role role = roleService.getOne(new QueryWrapper<Role>().lambda()
|
||||||
.eq(Config::getParamKey, "leadership")
|
.eq(Role::getCode, "部门负责人")
|
||||||
|
.last("limit 1"));
|
||||||
|
String type = JSONUtil.parseObj(workFlow.getData()).getStr("type");
|
||||||
|
List<User> nextUserList = userService.list(new QueryWrapper<User>().lambda()
|
||||||
|
.eq(User::getDept, user.getDept())
|
||||||
|
.like(User::getRoles, role.getId())
|
||||||
|
);
|
||||||
|
if (CollUtil.isNotEmpty(nextUserList) && "1".equals(type)) {
|
||||||
|
//找到沈总账号
|
||||||
|
Config admin = configService.getOne(new QueryWrapper<Config>().lambda()
|
||||||
|
.eq(Config::getParamKey, "sys.admin")
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
User user = userService.getById(StpUtil.getLoginIdAsString());
|
if (ObjUtil.isNull(admin)) throw new ResultException("系统未配置沈总账号");
|
||||||
User leadershipUser = userService.getOne(new QueryWrapper<User>().lambda()
|
|
||||||
.eq(User::getLoginName, leadership.getParamValue())
|
User adminUser = userService.getOne(new QueryWrapper<User>().lambda()
|
||||||
|
.eq(User::getLoginName, admin.getParamValue())
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
|
if (ObjUtil.isNull(adminUser)) throw new ResultException("系统未配置沈总账号");
|
||||||
|
nextUserList = new ArrayList<User>();
|
||||||
|
nextUserList.add(adminUser);
|
||||||
|
}
|
||||||
|
if (CollUtil.isEmpty(nextUserList)) {
|
||||||
|
role = roleService.getOne(new QueryWrapper<Role>().lambda()
|
||||||
|
.eq(Role::getCode, "库点负责人")
|
||||||
|
.last("limit 1"));
|
||||||
|
nextUserList = userService.list(new QueryWrapper<User>().lambda()
|
||||||
|
.eq(User::getDept, user.getDept())
|
||||||
|
.like(User::getRoles, role.getId())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (CollUtil.isEmpty(nextUserList)) {
|
||||||
|
role = roleService.getOne(new QueryWrapper<Role>().lambda()
|
||||||
|
.eq(Role::getCode, "总经理")
|
||||||
|
.last("limit 1"));
|
||||||
|
nextUserList = userService.list(new QueryWrapper<User>().lambda()
|
||||||
|
.like(User::getRoles, role.getId())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (CollUtil.isEmpty(nextUserList)) {
|
||||||
|
throw new ResultException("未找到下一步审批人");
|
||||||
|
}
|
||||||
|
|
||||||
// 3.添加下一步流程环节
|
// 3.添加下一步流程环节
|
||||||
|
List<WorkFlowStep> nextWorkFlowStepList = new ArrayList<WorkFlowStep>();
|
||||||
|
for (User nextUser : nextUserList) {
|
||||||
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
||||||
leadershipUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
nextUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
||||||
flag = workFlowStepService.save(nextWorkFlowStep);
|
nextWorkFlowStepList.add(nextWorkFlowStep);
|
||||||
|
}
|
||||||
|
flag = workFlowStepService.saveBatch(nextWorkFlowStepList);
|
||||||
|
|
||||||
// 4.通知领导账号
|
// 4.通知部门或库点负责人账号
|
||||||
|
List<WorkFlowNotice> nextWorkFlowNoticeList = new ArrayList<WorkFlowNotice>();
|
||||||
|
for (WorkFlowStep nextWorkFlowStep : nextWorkFlowStepList) {
|
||||||
String title =
|
String title =
|
||||||
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
||||||
"待您审批";
|
"待您审批";
|
||||||
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, leadershipUser.getId());
|
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, nextWorkFlowStep.getUserId());
|
||||||
flag = workFlowNoticeService.save(workFlowNotice);
|
nextWorkFlowNoticeList.add(workFlowNotice);
|
||||||
|
}
|
||||||
|
flag = workFlowNoticeService.saveBatch(nextWorkFlowNoticeList);
|
||||||
|
|
||||||
return flag ? AjaxResult.ok().msg("发起成功") : AjaxResult.fail("发起失败");
|
if (flag) {
|
||||||
|
return AjaxResult.ok().msg("发起成功");
|
||||||
|
} else {
|
||||||
|
throw new ResultException("发起失败");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -95,19 +165,28 @@ public class BudgetWorkFlowService implements IWorkFlowType {
|
||||||
.eq(WorkFlowStep::getUserId, StpUtil.getLoginIdAsString())
|
.eq(WorkFlowStep::getUserId, StpUtil.getLoginIdAsString())
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
|
if (ObjUtil.isNull(workFlowStep)) throw new ResultException("您不是当前流程环节执行人");
|
||||||
|
|
||||||
// 2.判断执行哪个方法
|
// 2.判断执行哪个方法
|
||||||
switch (workFlow.getStep()) {
|
switch (workFlow.getStep()) {
|
||||||
case 2:
|
case 2:
|
||||||
// 2.1 预算申请第二步 领导账号审批
|
// 2.1 预算申请第二步 领导账号审批
|
||||||
return second(vo, workFlow, workFlowStep);
|
return second(vo, workFlow, workFlowStep);
|
||||||
|
case 3:
|
||||||
|
// 2.2 预算申请第三步 购销仓储部负责人审批
|
||||||
|
return third(vo, workFlow, workFlowStep);
|
||||||
|
case 4:
|
||||||
|
// 2.3 预算申请第四步 沈总审批
|
||||||
|
return fourth(vo, workFlow, workFlowStep);
|
||||||
default:
|
default:
|
||||||
return AjaxResult.fail("流程环节错误");
|
throw new ResultException("流程环节错误");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public AjaxResult second(WorkFlowStepVo vo, WorkFlow workFlow, WorkFlowStep workFlowStep){
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public AjaxResult second(WorkFlowStepVo vo, WorkFlow workFlow, WorkFlowStep workFlowStep) {
|
||||||
|
String type = JSONUtil.parseObj(workFlow.getData()).getStr("type");
|
||||||
|
if ("1".equals(type)) {
|
||||||
// 1.流程环节进行变更
|
// 1.流程环节进行变更
|
||||||
workFlowStep.setStatus(WorkFlowStepStatusEnum.PASS.getStatus());
|
workFlowStep.setStatus(WorkFlowStepStatusEnum.PASS.getStatus());
|
||||||
workFlowStep.setRemarks(vo.getRemarks());
|
workFlowStep.setRemarks(vo.getRemarks());
|
||||||
|
@ -140,8 +219,169 @@ public class BudgetWorkFlowService implements IWorkFlowType {
|
||||||
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, workFlow.getUserId());
|
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, workFlow.getUserId());
|
||||||
flag = workFlowNoticeService.save(workFlowNotice);
|
flag = workFlowNoticeService.save(workFlowNotice);
|
||||||
|
|
||||||
return flag ? AjaxResult.ok().msg("审批成功") : AjaxResult.fail("审批失败");
|
if (flag) {
|
||||||
|
return AjaxResult.ok().msg("审批成功");
|
||||||
|
} else {
|
||||||
|
throw new ResultException("审批失败");
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
User user = userService.getById(workFlow.getUserId());
|
||||||
|
// 1.流程环节进行变更
|
||||||
|
workFlowStep.setStatus(WorkFlowStepStatusEnum.PASS.getStatus());
|
||||||
|
workFlowStep.setRemarks(vo.getRemarks());
|
||||||
|
boolean flag = workFlowStepService.updateById(workFlowStep);
|
||||||
|
|
||||||
|
// 2.记录流程环节日志
|
||||||
|
WorkFlowStepLog workFlowStepLog = new WorkFlowStepLog(workFlowStep, workFlow.getData());
|
||||||
|
flag = workFlowStepLogService.save(workFlowStepLog);
|
||||||
|
|
||||||
|
// 3.流程step+1 进入下一步
|
||||||
|
workFlow.setStep(workFlow.getStep() + 1);
|
||||||
|
workFlow.setStepType(WorkFlowStepTypeEnum.APPROVAL.getType());
|
||||||
|
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
||||||
|
flag = workFlowService.updateById(workFlow);
|
||||||
|
|
||||||
|
// 4.找到购销仓储部负责人审批
|
||||||
|
Dept dept = deptService.getOne(new QueryWrapper<Dept>().lambda()
|
||||||
|
.eq(Dept::getName, "购销仓储部")
|
||||||
|
.last("limit 1")
|
||||||
|
);
|
||||||
|
if (ObjUtil.isNull(dept)) {
|
||||||
|
throw new ResultException("购销仓储部不存在");
|
||||||
|
}
|
||||||
|
Role role = roleService.getOne(new QueryWrapper<Role>().lambda()
|
||||||
|
.eq(Role::getName, "部门负责人")
|
||||||
|
.last("limit 1")
|
||||||
|
);
|
||||||
|
if (ObjUtil.isNull(role)) {
|
||||||
|
throw new ResultException("部门负责人角色不存在");
|
||||||
|
}
|
||||||
|
List<User> nextUserList = userService.list(new QueryWrapper<User>().lambda()
|
||||||
|
.eq(User::getDept, dept.getId())
|
||||||
|
.like(User::getRoles, role.getId())
|
||||||
|
);
|
||||||
|
if (CollUtil.isEmpty(nextUserList)) {
|
||||||
|
throw new ResultException("购销仓储部负责人不存在");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 5.添加下一步流程环节
|
||||||
|
List<WorkFlowStep> nextWorkFlowStepList = new ArrayList<WorkFlowStep>();
|
||||||
|
for (User nextUser : nextUserList) {
|
||||||
|
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
||||||
|
nextUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
||||||
|
nextWorkFlowStepList.add(nextWorkFlowStep);
|
||||||
|
}
|
||||||
|
flag = workFlowStepService.saveBatch(nextWorkFlowStepList);
|
||||||
|
|
||||||
|
// 6.通知购销仓储部负责人
|
||||||
|
List<WorkFlowNotice> workFlowNoticeList = new ArrayList<WorkFlowNotice>();
|
||||||
|
for (WorkFlowStep nextWorkFlowStep : nextWorkFlowStepList) {
|
||||||
|
String title =
|
||||||
|
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
||||||
|
"待您审批";
|
||||||
|
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, nextWorkFlowStep.getUserId());
|
||||||
|
workFlowNoticeList.add(workFlowNotice);
|
||||||
|
}
|
||||||
|
flag = workFlowNoticeService.saveBatch(workFlowNoticeList);
|
||||||
|
|
||||||
|
if (flag) {
|
||||||
|
return AjaxResult.ok().msg("发起成功");
|
||||||
|
} else {
|
||||||
|
throw new ResultException("发起失败");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public AjaxResult third(WorkFlowStepVo vo, WorkFlow workFlow, WorkFlowStep workFlowStep) {
|
||||||
|
User user = userService.getById(workFlow.getUserId());
|
||||||
|
// 1.流程环节进行变更
|
||||||
|
workFlowStep.setStatus(WorkFlowStepStatusEnum.PASS.getStatus());
|
||||||
|
workFlowStep.setRemarks(vo.getRemarks());
|
||||||
|
boolean flag = workFlowStepService.updateById(workFlowStep);
|
||||||
|
|
||||||
|
// 2.记录流程环节日志
|
||||||
|
WorkFlowStepLog workFlowStepLog = new WorkFlowStepLog(workFlowStep, workFlow.getData());
|
||||||
|
flag = workFlowStepLogService.save(workFlowStepLog);
|
||||||
|
|
||||||
|
// 3.流程step+1 进入下一步
|
||||||
|
workFlow.setStep(workFlow.getStep() + 1);
|
||||||
|
workFlow.setStepType(WorkFlowStepTypeEnum.APPROVAL.getType());
|
||||||
|
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
||||||
|
flag = workFlowService.updateById(workFlow);
|
||||||
|
|
||||||
|
// 4.找到沈总审批
|
||||||
|
Config admin = configService.getOne(new QueryWrapper<Config>().lambda()
|
||||||
|
.eq(Config::getParamKey, "sys.admin")
|
||||||
|
.last("limit 1")
|
||||||
|
);
|
||||||
|
if (ObjUtil.isNull(admin)) throw new ResultException("系统未配置沈总账号");
|
||||||
|
|
||||||
|
User adminUser = userService.getOne(new QueryWrapper<User>().lambda()
|
||||||
|
.eq(User::getLoginName, admin.getParamValue())
|
||||||
|
.last("limit 1")
|
||||||
|
);
|
||||||
|
if (ObjUtil.isNull(adminUser)) throw new ResultException("系统未配置沈总账号");
|
||||||
|
|
||||||
|
// 5.添加下一步流程环节
|
||||||
|
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
||||||
|
adminUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
||||||
|
flag = workFlowStepService.save(nextWorkFlowStep);
|
||||||
|
|
||||||
|
// 6.通知沈总账号
|
||||||
|
String title =
|
||||||
|
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
||||||
|
"待您审批";
|
||||||
|
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, adminUser.getId());
|
||||||
|
flag = workFlowNoticeService.save(workFlowNotice);
|
||||||
|
if (flag) {
|
||||||
|
return AjaxResult.ok().msg("审批成功");
|
||||||
|
} else {
|
||||||
|
throw new ResultException("审批失败");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public AjaxResult fourth(WorkFlowStepVo vo, WorkFlow workFlow, WorkFlowStep workFlowStep) {
|
||||||
|
// 1.流程环节进行变更
|
||||||
|
workFlowStep.setStatus(WorkFlowStepStatusEnum.PASS.getStatus());
|
||||||
|
workFlowStep.setRemarks(vo.getRemarks());
|
||||||
|
boolean flag = workFlowStepService.updateById(workFlowStep);
|
||||||
|
|
||||||
|
// 2.记录流程环节日志
|
||||||
|
WorkFlowStepLog workFlowStepLog = new WorkFlowStepLog(workFlowStep, workFlow.getData());
|
||||||
|
flag = workFlowStepLogService.save(workFlowStepLog);
|
||||||
|
|
||||||
|
// 3.流程完结
|
||||||
|
workFlow.setStep(workFlow.getStep() + 1);
|
||||||
|
workFlow.setStepType(WorkFlowStepTypeEnum.END.getType());
|
||||||
|
workFlow.setStatus(WorkFlowStatusEnum.PASS.getStatus());
|
||||||
|
flag = workFlowService.updateById(workFlow);
|
||||||
|
|
||||||
|
// 4.添加完结流程环节
|
||||||
|
WorkFlowStep doneWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.END.getType(),
|
||||||
|
StpUtil.getLoginIdAsString(), WorkFlowStepStatusEnum.DONE.getStatus(), "");
|
||||||
|
flag = workFlowStepService.save(doneWorkFlowStep);
|
||||||
|
|
||||||
|
// 5.记录完结流程环节日志
|
||||||
|
WorkFlowStepLog doneWorkFlowStepLog = new WorkFlowStepLog(doneWorkFlowStep, workFlow.getData());
|
||||||
|
flag = workFlowStepLogService.save(doneWorkFlowStepLog);
|
||||||
|
|
||||||
|
|
||||||
|
// 6.通知发起人账号
|
||||||
|
String title =
|
||||||
|
"您的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
||||||
|
"已通过审批";
|
||||||
|
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, workFlow.getUserId());
|
||||||
|
flag = workFlowNoticeService.save(workFlowNotice);
|
||||||
|
|
||||||
|
if (flag) {
|
||||||
|
return AjaxResult.ok().msg("审批成功");
|
||||||
|
} else {
|
||||||
|
throw new ResultException("审批失败");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
package com.ydool.oa.workFlow.engine.service.impl;
|
package com.ydool.oa.workFlow.engine.service.impl;
|
||||||
|
|
||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.util.ObjUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.ydool.common.data.dto.AjaxResult;
|
import com.ydool.common.data.dto.AjaxResult;
|
||||||
|
import com.ydool.common.exception.ResultException;
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlow;
|
import com.ydool.oa.workFlow.data.entity.WorkFlow;
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlowNotice;
|
import com.ydool.oa.workFlow.data.entity.WorkFlowNotice;
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlowStep;
|
import com.ydool.oa.workFlow.data.entity.WorkFlowStep;
|
||||||
|
@ -17,15 +20,19 @@ import com.ydool.oa.workFlow.service.WorkFlowNoticeService;
|
||||||
import com.ydool.oa.workFlow.service.WorkFlowService;
|
import com.ydool.oa.workFlow.service.WorkFlowService;
|
||||||
import com.ydool.oa.workFlow.service.WorkFlowStepLogService;
|
import com.ydool.oa.workFlow.service.WorkFlowStepLogService;
|
||||||
import com.ydool.oa.workFlow.service.WorkFlowStepService;
|
import com.ydool.oa.workFlow.service.WorkFlowStepService;
|
||||||
import com.ydool.system.entity.Config;
|
import com.ydool.system.entity.Dept;
|
||||||
|
import com.ydool.system.entity.Role;
|
||||||
import com.ydool.system.entity.User;
|
import com.ydool.system.entity.User;
|
||||||
import com.ydool.system.service.impl.ConfigServiceImpl;
|
import com.ydool.system.service.impl.*;
|
||||||
import com.ydool.system.service.impl.JobServiceImpl;
|
|
||||||
import com.ydool.system.service.impl.UserServiceImpl;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class DrugWorkFlowService implements IWorkFlowType {
|
public class DrugWorkFlowService implements IWorkFlowType {
|
||||||
@Autowired
|
@Autowired
|
||||||
|
@ -49,39 +56,77 @@ public class DrugWorkFlowService implements IWorkFlowType {
|
||||||
@Autowired
|
@Autowired
|
||||||
private ConfigServiceImpl configService;
|
private ConfigServiceImpl configService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RoleServiceImpl roleService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DeptServiceImpl deptService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public AjaxResult first(WorkFlow workFlow) {
|
public AjaxResult first(WorkFlow workFlow) {
|
||||||
|
// 是否库点分管人(角色)
|
||||||
|
User user = userService.getById(workFlow.getUserId());
|
||||||
|
List<Role> roles = roleService.listByIds(Arrays.asList(user.getRoles().split(",")));
|
||||||
|
List<String> roleNames = roles.stream().map(Role::getName).collect(Collectors.toList());
|
||||||
|
if (!roleNames.contains("库点分管人")) {
|
||||||
|
throw new ResultException("您不是库点分管人,无法发起流程");
|
||||||
|
}
|
||||||
|
|
||||||
// 1.流程step+1
|
// 1.流程step+1
|
||||||
workFlow.setStep(workFlow.getStep() + 1);
|
workFlow.setStep(workFlow.getStep() + 1);
|
||||||
workFlow.setStepType(WorkFlowStepTypeEnum.APPROVAL.getType());
|
workFlow.setStepType(WorkFlowStepTypeEnum.APPROVAL.getType());
|
||||||
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
||||||
boolean flag = workFlowService.updateById(workFlow);
|
boolean flag = workFlowService.updateById(workFlow);
|
||||||
|
|
||||||
// 2.找到保管人账号
|
// 2.找到购销仓储部负责人审批
|
||||||
Config keeper = configService.getOne(new QueryWrapper<Config>().lambda()
|
Dept dept = deptService.getOne(new QueryWrapper<Dept>().lambda()
|
||||||
.eq(Config::getParamKey, "keeper")
|
.eq(Dept::getName, "购销仓储部")
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
User user = userService.getById(StpUtil.getLoginIdAsString());
|
if (ObjUtil.isNull(dept)) {
|
||||||
User keeperUser = userService.getOne(new QueryWrapper<User>().lambda()
|
throw new ResultException("购销仓储部不存在");
|
||||||
.eq(User::getLoginName, keeper.getParamValue())
|
}
|
||||||
|
Role role = roleService.getOne(new QueryWrapper<Role>().lambda()
|
||||||
|
.eq(Role::getName, "部门负责人")
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
|
if (ObjUtil.isNull(role)) {
|
||||||
|
throw new ResultException("部门负责人角色不存在");
|
||||||
|
}
|
||||||
|
List<User> nextUserList = userService.list(new QueryWrapper<User>().lambda()
|
||||||
|
.eq(User::getDept, dept.getId())
|
||||||
|
.like(User::getRoles, role.getId())
|
||||||
|
);
|
||||||
|
if (CollUtil.isEmpty(nextUserList)) {
|
||||||
|
throw new ResultException("购销仓储部负责人不存在");
|
||||||
|
}
|
||||||
|
|
||||||
// 3.添加下一步流程环节
|
// 3.添加下一步流程环节
|
||||||
|
List<WorkFlowStep> nextWorkFlowStepList = new ArrayList<WorkFlowStep>();
|
||||||
|
for (User nextUser : nextUserList) {
|
||||||
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
||||||
keeperUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
nextUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
||||||
flag = workFlowStepService.save(nextWorkFlowStep);
|
nextWorkFlowStepList.add(nextWorkFlowStep);
|
||||||
|
}
|
||||||
|
flag = workFlowStepService.saveBatch(nextWorkFlowStepList);
|
||||||
|
|
||||||
// 4.通知保管人账号
|
// 4.通知购销仓储部负责人
|
||||||
|
List<WorkFlowNotice> workFlowNoticeList = new ArrayList<WorkFlowNotice>();
|
||||||
|
for (WorkFlowStep nextWorkFlowStep : nextWorkFlowStepList) {
|
||||||
String title =
|
String title =
|
||||||
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
||||||
"待您审批";
|
"待您审批";
|
||||||
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, keeperUser.getId());
|
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, nextWorkFlowStep.getUserId());
|
||||||
flag = workFlowNoticeService.save(workFlowNotice);
|
workFlowNoticeList.add(workFlowNotice);
|
||||||
|
}
|
||||||
|
flag = workFlowNoticeService.saveBatch(workFlowNoticeList);
|
||||||
|
|
||||||
return flag ? AjaxResult.ok().msg("发起成功") : AjaxResult.fail("发起失败");
|
if (flag) {
|
||||||
|
return AjaxResult.ok().msg("发起成功");
|
||||||
|
} else {
|
||||||
|
throw new ResultException("发起失败");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -95,17 +140,19 @@ public class DrugWorkFlowService implements IWorkFlowType {
|
||||||
.eq(WorkFlowStep::getUserId, StpUtil.getLoginIdAsString())
|
.eq(WorkFlowStep::getUserId, StpUtil.getLoginIdAsString())
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
|
if (ObjUtil.isNull(workFlowStep)) throw new ResultException("您不是当前流程环节执行人");
|
||||||
|
|
||||||
// 2.判断执行哪个方法
|
// 2.判断执行哪个方法
|
||||||
switch (workFlow.getStep()) {
|
switch (workFlow.getStep()) {
|
||||||
case 2:
|
case 2:
|
||||||
// 2.1 药剂领用第二步 保管人账号审批
|
// 2.1 药剂领用第二步 购销仓储部负责人审批
|
||||||
return second(vo, workFlow, workFlowStep);
|
return second(vo, workFlow, workFlowStep);
|
||||||
default:
|
default:
|
||||||
return AjaxResult.fail("流程环节错误");
|
throw new ResultException("流程环节错误");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public AjaxResult second(WorkFlowStepVo vo, WorkFlow workFlow, WorkFlowStep workFlowStep){
|
public AjaxResult second(WorkFlowStepVo vo, WorkFlow workFlow, WorkFlowStep workFlowStep){
|
||||||
|
|
||||||
// 1.流程环节进行变更
|
// 1.流程环节进行变更
|
||||||
|
@ -140,7 +187,36 @@ public class DrugWorkFlowService implements IWorkFlowType {
|
||||||
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, workFlow.getUserId());
|
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, workFlow.getUserId());
|
||||||
flag = workFlowNoticeService.save(workFlowNotice);
|
flag = workFlowNoticeService.save(workFlowNotice);
|
||||||
|
|
||||||
return flag ? AjaxResult.ok().msg("审批成功") : AjaxResult.fail("审批失败");
|
// 7.通知药剂保管人
|
||||||
|
Role role = roleService.getOne(new QueryWrapper<Role>().lambda()
|
||||||
|
.eq(Role::getName, "药剂保管人")
|
||||||
|
.last("limit 1")
|
||||||
|
);
|
||||||
|
if (ObjUtil.isNull(role)) {
|
||||||
|
throw new ResultException("药剂保管人角色不存在");
|
||||||
|
}
|
||||||
|
List<User> nextUserList = userService.list(new QueryWrapper<User>().lambda()
|
||||||
|
.like(User::getRoles, role.getId())
|
||||||
|
);
|
||||||
|
if (CollUtil.isEmpty(nextUserList)) {
|
||||||
|
throw new ResultException("药剂保管人不存在");
|
||||||
|
}
|
||||||
|
List<WorkFlowNotice> nextWorkFlowNoticeList = new ArrayList<WorkFlowNotice>();
|
||||||
|
User user = userService.getById(workFlow.getUserId());
|
||||||
|
for (User nextUser : nextUserList) {
|
||||||
|
title =
|
||||||
|
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
||||||
|
"审批通过,请您进行药剂发放";
|
||||||
|
WorkFlowNotice nextWorkFlowNotice = new WorkFlowNotice(title, workFlow, nextUser.getId());
|
||||||
|
nextWorkFlowNoticeList.add(nextWorkFlowNotice);
|
||||||
|
}
|
||||||
|
flag = workFlowNoticeService.saveBatch(nextWorkFlowNoticeList);
|
||||||
|
|
||||||
|
if (flag) {
|
||||||
|
return AjaxResult.ok().msg("审批成功");
|
||||||
|
} else {
|
||||||
|
throw new ResultException("审批失败");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
package com.ydool.oa.workFlow.engine.service.impl;
|
package com.ydool.oa.workFlow.engine.service.impl;
|
||||||
|
|
||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.util.ObjUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.ydool.common.data.dto.AjaxResult;
|
import com.ydool.common.data.dto.AjaxResult;
|
||||||
|
import com.ydool.common.exception.ResultException;
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlow;
|
import com.ydool.oa.workFlow.data.entity.WorkFlow;
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlowNotice;
|
import com.ydool.oa.workFlow.data.entity.WorkFlowNotice;
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlowStep;
|
import com.ydool.oa.workFlow.data.entity.WorkFlowStep;
|
||||||
|
@ -19,18 +22,17 @@ import com.ydool.oa.workFlow.service.WorkFlowStepLogService;
|
||||||
import com.ydool.oa.workFlow.service.WorkFlowStepService;
|
import com.ydool.oa.workFlow.service.WorkFlowStepService;
|
||||||
import com.ydool.system.entity.Config;
|
import com.ydool.system.entity.Config;
|
||||||
import com.ydool.system.entity.Dept;
|
import com.ydool.system.entity.Dept;
|
||||||
import com.ydool.system.entity.Job;
|
import com.ydool.system.entity.Role;
|
||||||
import com.ydool.system.entity.User;
|
import com.ydool.system.entity.User;
|
||||||
import com.ydool.system.service.impl.ConfigServiceImpl;
|
import com.ydool.system.service.impl.*;
|
||||||
import com.ydool.system.service.impl.DeptServiceImpl;
|
|
||||||
import com.ydool.system.service.impl.JobServiceImpl;
|
|
||||||
import com.ydool.system.service.impl.UserServiceImpl;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class FumigationWorkFlowService implements IWorkFlowType {
|
public class FumigationWorkFlowService implements IWorkFlowType {
|
||||||
|
@ -58,40 +60,67 @@ public class FumigationWorkFlowService implements IWorkFlowType {
|
||||||
@Autowired
|
@Autowired
|
||||||
private DeptServiceImpl deptService;
|
private DeptServiceImpl deptService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RoleServiceImpl roleService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public AjaxResult first(WorkFlow workFlow) {
|
public AjaxResult first(WorkFlow workFlow) {
|
||||||
|
//是否库管员
|
||||||
|
User user = userService.getById(workFlow.getUserId());
|
||||||
|
List<Role> roles = roleService.listByIds(Arrays.asList(user.getRoles().split(",")));
|
||||||
|
List<String> roleNames = roles.stream().map(Role::getName).collect(Collectors.toList());
|
||||||
|
if (!roleNames.contains("库管员")) {
|
||||||
|
throw new ResultException("您不是库管员,无法发起流程");
|
||||||
|
}
|
||||||
|
|
||||||
// 1.流程step+1
|
// 1.流程step+1
|
||||||
workFlow.setStep(workFlow.getStep() + 1);
|
workFlow.setStep(workFlow.getStep() + 1);
|
||||||
workFlow.setStepType(WorkFlowStepTypeEnum.APPROVAL.getType());
|
workFlow.setStepType(WorkFlowStepTypeEnum.APPROVAL.getType());
|
||||||
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
||||||
boolean flag = workFlowService.updateById(workFlow);
|
boolean flag = workFlowService.updateById(workFlow);
|
||||||
|
|
||||||
// 2.找到库点负责人账号
|
// 2.找到库点分管人账号
|
||||||
Job libraryPointManager = jobService.getOne(new QueryWrapper<Job>().lambda()
|
Role role = roleService.getOne(new QueryWrapper<Role>().lambda()
|
||||||
.eq(Job::getCode, "library_point_manager")
|
.eq(Role::getName, "库点分管人")
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
User user = userService.getById(StpUtil.getLoginIdAsString());
|
if (ObjUtil.isEmpty(role)) {
|
||||||
User libraryPointManagerUser = userService.getOne(new QueryWrapper<User>().lambda()
|
throw new ResultException("未找到库点分管人角色");
|
||||||
|
}
|
||||||
|
List<User> nextUserList = userService.list(new QueryWrapper<User>().lambda()
|
||||||
.eq(User::getDept, user.getDept())
|
.eq(User::getDept, user.getDept())
|
||||||
.eq(User::getJob, libraryPointManager.getId())
|
.like(User::getRoles, role.getId())
|
||||||
.last("limit 1")
|
|
||||||
);
|
);
|
||||||
|
if (CollUtil.isEmpty(nextUserList)) {
|
||||||
|
throw new ResultException("未找到库点分管人");
|
||||||
|
}
|
||||||
|
|
||||||
// 3.添加下一步流程环节
|
// 3.添加下一步流程环节
|
||||||
|
List<WorkFlowStep> nextWorkFlowStepList = new ArrayList<WorkFlowStep>();
|
||||||
|
for (User nextUser : nextUserList) {
|
||||||
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
||||||
libraryPointManagerUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
nextUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
||||||
flag = workFlowStepService.save(nextWorkFlowStep);
|
nextWorkFlowStepList.add(nextWorkFlowStep);
|
||||||
|
}
|
||||||
|
flag = workFlowStepService.saveBatch(nextWorkFlowStepList);
|
||||||
|
|
||||||
// 4.通知库点负责人账号
|
// 4.通知库点分管人账号
|
||||||
|
List<WorkFlowNotice> nextWorkFlowNoticeList = new ArrayList<WorkFlowNotice>();
|
||||||
|
for (WorkFlowStep nextWorkFlowStep : nextWorkFlowStepList) {
|
||||||
String title =
|
String title =
|
||||||
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
||||||
"待您审批";
|
"待您审批";
|
||||||
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, libraryPointManagerUser.getId());
|
WorkFlowNotice nextWorkFlowNotice = new WorkFlowNotice(title, workFlow, nextWorkFlowStep.getUserId());
|
||||||
flag = workFlowNoticeService.save(workFlowNotice);
|
nextWorkFlowNoticeList.add(nextWorkFlowNotice);
|
||||||
|
}
|
||||||
|
flag = workFlowNoticeService.saveBatch(nextWorkFlowNoticeList);
|
||||||
|
|
||||||
return flag ? AjaxResult.ok().msg("发起成功") : AjaxResult.fail("发起失败");
|
if (flag) {
|
||||||
|
return AjaxResult.ok().msg("发起成功");
|
||||||
|
} else {
|
||||||
|
throw new ResultException("发起失败");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -104,23 +133,24 @@ public class FumigationWorkFlowService implements IWorkFlowType {
|
||||||
.eq(WorkFlowStep::getUserId, StpUtil.getLoginIdAsString())
|
.eq(WorkFlowStep::getUserId, StpUtil.getLoginIdAsString())
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
|
if (ObjUtil.isNull(workFlowStep)) throw new ResultException("您不是当前流程环节执行人");
|
||||||
|
|
||||||
// 2.判断执行哪个方法
|
// 2.判断执行哪个方法
|
||||||
switch (workFlow.getStep()) {
|
switch (workFlow.getStep()) {
|
||||||
case 2:
|
case 2:
|
||||||
// 2.1 熏蒸申报第二步 库点负责人账号审批
|
// 2.1 熏蒸申报第二步 库点分管人(角色)审批
|
||||||
return second(vo, workFlow, workFlowStep);
|
return second(vo, workFlow, workFlowStep);
|
||||||
case 3:
|
case 3:
|
||||||
// 2.2 熏蒸申报第三步 业务科部门的人员账号审批
|
// 2.2 熏蒸申报第三步 购销仓储部负责人审批
|
||||||
return third(vo, workFlow, workFlowStep);
|
return third(vo, workFlow, workFlowStep);
|
||||||
case 4:
|
case 4:
|
||||||
// 2.3 熏蒸申报第四步 分管负责人账号审批
|
// 2.3 熏蒸申报第四步 沈总审批
|
||||||
return fourth(vo, workFlow, workFlowStep);
|
return fourth(vo, workFlow, workFlowStep);
|
||||||
case 5:
|
case 5:
|
||||||
// 2.3 熏蒸申报第五步 粮食科部门的人员账号审批
|
// 2.3 熏蒸申报第五步 粮食与物资管理科(角色)审批
|
||||||
return fifth(vo, workFlow, workFlowStep);
|
return fifth(vo, workFlow, workFlowStep);
|
||||||
default:
|
default:
|
||||||
return AjaxResult.fail("流程环节错误");
|
throw new ResultException("流程环节错误");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,43 +171,56 @@ public class FumigationWorkFlowService implements IWorkFlowType {
|
||||||
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
||||||
flag = workFlowService.updateById(workFlow);
|
flag = workFlowService.updateById(workFlow);
|
||||||
|
|
||||||
// 4.找到业务科部门的人员账号
|
// 4.找到购销仓储部负责人
|
||||||
Dept businessDept = deptService.getOne(new QueryWrapper<Dept>().lambda()
|
Dept dept = deptService.getOne(new QueryWrapper<Dept>().lambda()
|
||||||
.eq(Dept::getName, "综合管理部")
|
.eq(Dept::getName, "购销仓储部")
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
Job businessJob = jobService.getOne(new QueryWrapper<Job>().lambda()
|
if (ObjUtil.isNull(dept)) {
|
||||||
.eq(Job::getCode, "business_dept")
|
throw new ResultException("购销仓储部不存在");
|
||||||
|
}
|
||||||
|
Role role = roleService.getOne(new QueryWrapper<Role>().lambda()
|
||||||
|
.eq(Role::getName, "部门负责人")
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
List<User> businessDeptUserList = userService.list(new QueryWrapper<User>().lambda()
|
if (ObjUtil.isNull(role)) {
|
||||||
.eq(User::getDept, businessDept.getId())
|
throw new ResultException("部门负责人角色不存在");
|
||||||
.eq(User::getJob, businessJob.getId())
|
}
|
||||||
|
List<User> nextUserList = userService.list(new QueryWrapper<User>().lambda()
|
||||||
|
.eq(User::getDept, dept.getId())
|
||||||
|
.like(User::getRoles, role.getId())
|
||||||
);
|
);
|
||||||
|
if (CollUtil.isEmpty(nextUserList)) {
|
||||||
|
throw new ResultException("购销仓储部负责人不存在");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 5.添加下一步流程环节
|
// 5.添加下一步流程环节
|
||||||
List<WorkFlowStep> nextWorkFlowStepList = new ArrayList<WorkFlowStep>();
|
List<WorkFlowStep> nextWorkFlowStepList = new ArrayList<WorkFlowStep>();
|
||||||
businessDeptUserList.forEach(businessDeptUser -> {
|
nextUserList.forEach(businessDeptUser -> {
|
||||||
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
||||||
businessDeptUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
businessDeptUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
||||||
nextWorkFlowStepList.add(nextWorkFlowStep);
|
nextWorkFlowStepList.add(nextWorkFlowStep);
|
||||||
});
|
});
|
||||||
flag = workFlowStepService.saveBatch(nextWorkFlowStepList);
|
flag = workFlowStepService.saveBatch(nextWorkFlowStepList);
|
||||||
|
|
||||||
// 6.通知业务科部门的人员账号
|
// 6.通知购销仓储部负责人
|
||||||
User user = userService.getById(workFlow.getUserId());
|
User user = userService.getById(workFlow.getUserId());
|
||||||
String title =
|
String title =
|
||||||
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
||||||
"待您审批";
|
"待您审批";
|
||||||
List<WorkFlowNotice> workFlowNoticeList = new ArrayList<WorkFlowNotice>();
|
List<WorkFlowNotice> workFlowNoticeList = new ArrayList<WorkFlowNotice>();
|
||||||
businessDeptUserList.forEach(businessDeptUser -> {
|
nextUserList.forEach(businessDeptUser -> {
|
||||||
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, businessDeptUser.getId());
|
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, businessDeptUser.getId());
|
||||||
workFlowNoticeList.add(workFlowNotice);
|
workFlowNoticeList.add(workFlowNotice);
|
||||||
});
|
});
|
||||||
flag = workFlowNoticeService.saveBatch(workFlowNoticeList);
|
flag = workFlowNoticeService.saveBatch(workFlowNoticeList);
|
||||||
|
|
||||||
return flag ? AjaxResult.ok().msg("审批成功") : AjaxResult.fail("审批失败");
|
if (flag) {
|
||||||
|
return AjaxResult.ok().msg("审批成功");
|
||||||
|
} else {
|
||||||
|
throw new ResultException("审批失败");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
@ -197,30 +240,37 @@ public class FumigationWorkFlowService implements IWorkFlowType {
|
||||||
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
||||||
flag = workFlowService.updateById(workFlow);
|
flag = workFlowService.updateById(workFlow);
|
||||||
|
|
||||||
// 4.找到分管负责人账号
|
// 4.找到沈总账号
|
||||||
Config responsiblePerson = configService.getOne(new QueryWrapper<Config>().lambda()
|
Config admin = configService.getOne(new QueryWrapper<Config>().lambda()
|
||||||
.eq(Config::getParamKey, "responsible.person")
|
.eq(Config::getParamKey, "sys.admin")
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
User responsiblePersonUser = userService.getOne(new QueryWrapper<User>().lambda()
|
if (ObjUtil.isNull(admin)) throw new ResultException("系统未配置沈总账号");
|
||||||
.eq(User::getLoginName, responsiblePerson.getParamValue())
|
|
||||||
|
User adminUser = userService.getOne(new QueryWrapper<User>().lambda()
|
||||||
|
.eq(User::getLoginName, admin.getParamValue())
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
|
if (ObjUtil.isNull(adminUser)) throw new ResultException("系统未配置沈总账号");
|
||||||
|
|
||||||
// 5.添加下一步流程环节
|
// 5.添加下一步流程环节
|
||||||
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
||||||
responsiblePersonUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
adminUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
||||||
flag = workFlowStepService.save(nextWorkFlowStep);
|
flag = workFlowStepService.save(nextWorkFlowStep);
|
||||||
|
|
||||||
// 6.通知分管负责人账号
|
// 6.通知沈总账号
|
||||||
User user = userService.getById(workFlow.getUserId());
|
User user = userService.getById(workFlow.getUserId());
|
||||||
String title =
|
String title =
|
||||||
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
||||||
"待您审批";
|
"待您审批";
|
||||||
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, responsiblePersonUser.getId());
|
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, adminUser.getId());
|
||||||
flag = workFlowNoticeService.save(workFlowNotice);
|
flag = workFlowNoticeService.save(workFlowNotice);
|
||||||
|
|
||||||
return flag ? AjaxResult.ok().msg("审批成功") : AjaxResult.fail("审批失败");
|
if (flag) {
|
||||||
|
return AjaxResult.ok().msg("审批成功");
|
||||||
|
} else {
|
||||||
|
throw new ResultException("审批失败");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
@ -240,43 +290,45 @@ public class FumigationWorkFlowService implements IWorkFlowType {
|
||||||
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
||||||
flag = workFlowService.updateById(workFlow);
|
flag = workFlowService.updateById(workFlow);
|
||||||
|
|
||||||
// 4.找到粮食科部门的人员账号
|
// 4.找到粮食与物资管理科(角色)
|
||||||
Dept grainDept = deptService.getOne(new QueryWrapper<Dept>().lambda()
|
Role nextRole = roleService.getOne(new QueryWrapper<Role>().lambda()
|
||||||
.eq(Dept::getName, "综合管理部")
|
.eq(Role::getName, "粮食与物资管理科")
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
Job grainJob = jobService.getOne(new QueryWrapper<Job>().lambda()
|
if (ObjUtil.isNull(nextRole)) throw new ResultException("系统未配置粮食与物资管理科角色");
|
||||||
.eq(Job::getCode, "grain_dept")
|
|
||||||
.last("limit 1")
|
List<User> nextUserList = userService.list(new QueryWrapper<User>().lambda()
|
||||||
);
|
.like(User::getRoles, nextRole.getId())
|
||||||
List<User> grainDeptUserList = userService.list(new QueryWrapper<User>().lambda()
|
|
||||||
.eq(User::getDept, grainDept.getId())
|
|
||||||
.eq(User::getJob, grainJob.getId())
|
|
||||||
);
|
);
|
||||||
|
if (CollUtil.isEmpty(nextUserList)) throw new ResultException("系统未配置粮食与物资管理科账号");
|
||||||
|
|
||||||
|
|
||||||
// 5.添加下一步流程环节
|
// 5.添加下一步流程环节
|
||||||
List<WorkFlowStep> nextWorkFlowStepList = new ArrayList<WorkFlowStep>();
|
List<WorkFlowStep> nextWorkFlowStepList = new ArrayList<WorkFlowStep>();
|
||||||
grainDeptUserList.forEach(grainDeptUser -> {
|
nextUserList.forEach(grainDeptUser -> {
|
||||||
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
||||||
grainDeptUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
grainDeptUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
||||||
nextWorkFlowStepList.add(nextWorkFlowStep);
|
nextWorkFlowStepList.add(nextWorkFlowStep);
|
||||||
});
|
});
|
||||||
flag = workFlowStepService.saveBatch(nextWorkFlowStepList);
|
flag = workFlowStepService.saveBatch(nextWorkFlowStepList);
|
||||||
|
|
||||||
// 6.通知粮食科部门的人员账号
|
// 6.通知粮食与物资管理科(角色)
|
||||||
User user = userService.getById(workFlow.getUserId());
|
User user = userService.getById(workFlow.getUserId());
|
||||||
String title =
|
String title =
|
||||||
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
||||||
"待您审批";
|
"待您审批";
|
||||||
List<WorkFlowNotice> workFlowNoticeList = new ArrayList<WorkFlowNotice>();
|
List<WorkFlowNotice> workFlowNoticeList = new ArrayList<WorkFlowNotice>();
|
||||||
grainDeptUserList.forEach(grainDeptUser -> {
|
nextUserList.forEach(grainDeptUser -> {
|
||||||
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, grainDeptUser.getId());
|
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, grainDeptUser.getId());
|
||||||
workFlowNoticeList.add(workFlowNotice);
|
workFlowNoticeList.add(workFlowNotice);
|
||||||
});
|
});
|
||||||
flag = workFlowNoticeService.saveBatch(workFlowNoticeList);
|
flag = workFlowNoticeService.saveBatch(workFlowNoticeList);
|
||||||
|
|
||||||
return flag ? AjaxResult.ok().msg("审批成功") : AjaxResult.fail("审批失败");
|
if (flag) {
|
||||||
|
return AjaxResult.ok().msg("审批成功");
|
||||||
|
} else {
|
||||||
|
throw new ResultException("审批失败");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -314,7 +366,11 @@ public class FumigationWorkFlowService implements IWorkFlowType {
|
||||||
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, workFlow.getUserId());
|
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, workFlow.getUserId());
|
||||||
flag = workFlowNoticeService.save(workFlowNotice);
|
flag = workFlowNoticeService.save(workFlowNotice);
|
||||||
|
|
||||||
return flag ? AjaxResult.ok().msg("审批成功") : AjaxResult.fail("审批失败");
|
if (flag) {
|
||||||
|
return AjaxResult.ok().msg("审批成功");
|
||||||
|
} else {
|
||||||
|
throw new ResultException("审批失败");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
package com.ydool.oa.workFlow.engine.service.impl;
|
package com.ydool.oa.workFlow.engine.service.impl;
|
||||||
|
|
||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.util.ObjUtil;
|
||||||
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.ydool.common.data.dto.AjaxResult;
|
import com.ydool.common.data.dto.AjaxResult;
|
||||||
|
import com.ydool.common.exception.ResultException;
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlow;
|
import com.ydool.oa.workFlow.data.entity.WorkFlow;
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlowNotice;
|
import com.ydool.oa.workFlow.data.entity.WorkFlowNotice;
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlowStep;
|
import com.ydool.oa.workFlow.data.entity.WorkFlowStep;
|
||||||
|
@ -18,15 +22,16 @@ import com.ydool.oa.workFlow.service.WorkFlowService;
|
||||||
import com.ydool.oa.workFlow.service.WorkFlowStepLogService;
|
import com.ydool.oa.workFlow.service.WorkFlowStepLogService;
|
||||||
import com.ydool.oa.workFlow.service.WorkFlowStepService;
|
import com.ydool.oa.workFlow.service.WorkFlowStepService;
|
||||||
import com.ydool.system.entity.Config;
|
import com.ydool.system.entity.Config;
|
||||||
import com.ydool.system.entity.Job;
|
import com.ydool.system.entity.Role;
|
||||||
import com.ydool.system.entity.User;
|
import com.ydool.system.entity.User;
|
||||||
import com.ydool.system.service.impl.ConfigServiceImpl;
|
import com.ydool.system.service.impl.*;
|
||||||
import com.ydool.system.service.impl.JobServiceImpl;
|
|
||||||
import com.ydool.system.service.impl.UserServiceImpl;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class LeaveWorkFlowService implements IWorkFlowType {
|
public class LeaveWorkFlowService implements IWorkFlowType {
|
||||||
|
|
||||||
|
@ -51,41 +56,78 @@ public class LeaveWorkFlowService implements IWorkFlowType {
|
||||||
@Autowired
|
@Autowired
|
||||||
private ConfigServiceImpl configService;
|
private ConfigServiceImpl configService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DeptServiceImpl deptService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RoleServiceImpl roleService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public AjaxResult first(WorkFlow workFlow) {
|
public AjaxResult first(WorkFlow workFlow) {
|
||||||
|
User user = userService.getById(StpUtil.getLoginIdAsString());
|
||||||
// 1.流程step+1
|
// 1.流程step+1
|
||||||
workFlow.setStep(workFlow.getStep() + 1);
|
workFlow.setStep(workFlow.getStep() + 1);
|
||||||
workFlow.setStepType(WorkFlowStepTypeEnum.APPROVAL.getType());
|
workFlow.setStepType(WorkFlowStepTypeEnum.APPROVAL.getType());
|
||||||
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
||||||
boolean flag = workFlowService.updateById(workFlow);
|
boolean flag = workFlowService.updateById(workFlow);
|
||||||
|
|
||||||
// 2.找到上级领导账号
|
// 2.找到部门或库点负责人审批
|
||||||
Job superior = jobService.getOne(new QueryWrapper<Job>().lambda()
|
|
||||||
.eq(Job::getCode, "superior")
|
Role role = roleService.getOne(new QueryWrapper<Role>().lambda()
|
||||||
.last("limit 1")
|
.eq(Role::getCode, "部门负责人")
|
||||||
);
|
.last("limit 1"));
|
||||||
User user = userService.getById(StpUtil.getLoginIdAsString());
|
List<User> nextUserList = userService.list(new QueryWrapper<User>().lambda()
|
||||||
User superiorUser = userService.getOne(new QueryWrapper<User>().lambda()
|
|
||||||
.eq(User::getDept, user.getDept())
|
.eq(User::getDept, user.getDept())
|
||||||
.eq(User::getJob, superior.getId())
|
.like(User::getRoles, role.getId())
|
||||||
.last("limit 1")
|
|
||||||
);
|
);
|
||||||
|
if (CollUtil.isEmpty(nextUserList)) {
|
||||||
|
role = roleService.getOne(new QueryWrapper<Role>().lambda()
|
||||||
|
.eq(Role::getCode, "库点负责人")
|
||||||
|
.last("limit 1"));
|
||||||
|
nextUserList = userService.list(new QueryWrapper<User>().lambda()
|
||||||
|
.eq(User::getDept, user.getDept())
|
||||||
|
.like(User::getRoles, role.getId())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (CollUtil.isEmpty(nextUserList)) {
|
||||||
|
role = roleService.getOne(new QueryWrapper<Role>().lambda()
|
||||||
|
.eq(Role::getCode, "总经理")
|
||||||
|
.last("limit 1"));
|
||||||
|
nextUserList = userService.list(new QueryWrapper<User>().lambda()
|
||||||
|
.like(User::getRoles, role.getId())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (CollUtil.isEmpty(nextUserList)) {
|
||||||
|
throw new ResultException("未找到下一步审批人");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 3.添加下一步流程环节
|
// 3.添加下一步流程环节
|
||||||
|
List<WorkFlowStep> nextWorkFlowStepList = new ArrayList<WorkFlowStep>();
|
||||||
|
for (User nextUser : nextUserList) {
|
||||||
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
||||||
superiorUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
nextUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
||||||
flag = workFlowStepService.save(nextWorkFlowStep);
|
nextWorkFlowStepList.add(nextWorkFlowStep);
|
||||||
|
}
|
||||||
|
flag = workFlowStepService.saveBatch(nextWorkFlowStepList);
|
||||||
|
|
||||||
// 4.通知上级领导账号
|
// 4.通知部门或库点负责人账号
|
||||||
|
List<WorkFlowNotice> nextWorkFlowNoticeList = new ArrayList<WorkFlowNotice>();
|
||||||
|
for (WorkFlowStep nextWorkFlowStep : nextWorkFlowStepList) {
|
||||||
String title =
|
String title =
|
||||||
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
||||||
"待您审批";
|
"待您审批";
|
||||||
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, superiorUser.getId());
|
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, nextWorkFlowStep.getUserId());
|
||||||
flag = workFlowNoticeService.save(workFlowNotice);
|
nextWorkFlowNoticeList.add(workFlowNotice);
|
||||||
|
}
|
||||||
|
flag = workFlowNoticeService.saveBatch(nextWorkFlowNoticeList);
|
||||||
|
|
||||||
return flag ? AjaxResult.ok().msg("发起成功") : AjaxResult.fail("发起失败");
|
if (flag) {
|
||||||
|
return AjaxResult.ok().msg("发起成功");
|
||||||
|
} else {
|
||||||
|
throw new ResultException("发起失败");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -100,23 +142,67 @@ public class LeaveWorkFlowService implements IWorkFlowType {
|
||||||
.eq(WorkFlowStep::getUserId, StpUtil.getLoginIdAsString())
|
.eq(WorkFlowStep::getUserId, StpUtil.getLoginIdAsString())
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
|
if (ObjUtil.isNull(workFlowStep)) throw new ResultException("您不是当前流程环节执行人");
|
||||||
|
|
||||||
// 2.判断执行哪个方法
|
// 2.判断执行哪个方法
|
||||||
switch (workFlow.getStep()) {
|
switch (workFlow.getStep()) {
|
||||||
case 2:
|
case 2:
|
||||||
// 2.1 请假流程第二步 上级领导账号审批
|
// 2.1 请假流程第二步 上级领导账号审批或直接结束
|
||||||
return second(vo, workFlow, workFlowStep);
|
return second(vo, workFlow, workFlowStep);
|
||||||
case 3:
|
case 3:
|
||||||
// 2.2 请假流程第三步 总经理账号审批
|
// 2.2 请假流程第三步 沈总账号审批
|
||||||
return third(vo, workFlow, workFlowStep);
|
return third(vo, workFlow, workFlowStep);
|
||||||
default:
|
default:
|
||||||
return AjaxResult.fail("流程环节错误");
|
throw new ResultException("流程环节错误");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public AjaxResult second(WorkFlowStepVo vo, WorkFlow workFlow, WorkFlowStep workFlowStep) {
|
public AjaxResult second(WorkFlowStepVo vo, WorkFlow workFlow, WorkFlowStep workFlowStep) {
|
||||||
|
|
||||||
|
String data = workFlow.getData();
|
||||||
|
String type = JSONUtil.parseObj(data).getStr("type");
|
||||||
|
if ("1".equals(type)) {
|
||||||
|
|
||||||
|
// 1.流程环节进行变更
|
||||||
|
workFlowStep.setStatus(WorkFlowStepStatusEnum.PASS.getStatus());
|
||||||
|
workFlowStep.setRemarks(vo.getRemarks());
|
||||||
|
boolean flag = workFlowStepService.updateById(workFlowStep);
|
||||||
|
|
||||||
|
// 2.记录流程环节日志
|
||||||
|
WorkFlowStepLog workFlowStepLog = new WorkFlowStepLog(workFlowStep, workFlow.getData());
|
||||||
|
flag = workFlowStepLogService.save(workFlowStepLog);
|
||||||
|
|
||||||
|
// 3.流程完结
|
||||||
|
workFlow.setStep(workFlow.getStep() + 1);
|
||||||
|
workFlow.setStepType(WorkFlowStepTypeEnum.END.getType());
|
||||||
|
workFlow.setStatus(WorkFlowStatusEnum.PASS.getStatus());
|
||||||
|
flag = workFlowService.updateById(workFlow);
|
||||||
|
|
||||||
|
// 4.添加完结流程环节
|
||||||
|
WorkFlowStep doneWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.END.getType(),
|
||||||
|
StpUtil.getLoginIdAsString(), WorkFlowStepStatusEnum.DONE.getStatus(), "");
|
||||||
|
flag = workFlowStepService.save(doneWorkFlowStep);
|
||||||
|
|
||||||
|
// 5.记录完结流程环节日志
|
||||||
|
WorkFlowStepLog doneWorkFlowStepLog = new WorkFlowStepLog(doneWorkFlowStep, workFlow.getData());
|
||||||
|
flag = workFlowStepLogService.save(doneWorkFlowStepLog);
|
||||||
|
|
||||||
|
|
||||||
|
// 6.通知发起人账号
|
||||||
|
String title =
|
||||||
|
"您的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
||||||
|
"已通过审批";
|
||||||
|
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, workFlow.getUserId());
|
||||||
|
flag = workFlowNoticeService.save(workFlowNotice);
|
||||||
|
|
||||||
|
if (flag) {
|
||||||
|
return AjaxResult.ok().msg("审批成功");
|
||||||
|
} else {
|
||||||
|
throw new ResultException("审批失败");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
// 1.流程环节进行变更
|
// 1.流程环节进行变更
|
||||||
workFlowStep.setStatus(WorkFlowStepStatusEnum.PASS.getStatus());
|
workFlowStep.setStatus(WorkFlowStepStatusEnum.PASS.getStatus());
|
||||||
workFlowStep.setRemarks(vo.getRemarks());
|
workFlowStep.setRemarks(vo.getRemarks());
|
||||||
|
@ -132,32 +218,37 @@ public class LeaveWorkFlowService implements IWorkFlowType {
|
||||||
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
||||||
flag = workFlowService.updateById(workFlow);
|
flag = workFlowService.updateById(workFlow);
|
||||||
|
|
||||||
// 4.找到总经理账号
|
// 4.找到沈总账号
|
||||||
Config generalManager = configService.getOne(new QueryWrapper<Config>().lambda()
|
Config admin = configService.getOne(new QueryWrapper<Config>().lambda()
|
||||||
.eq(Config::getParamKey, "general.manager")
|
.eq(Config::getParamKey, "sys.admin")
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
User generalManagerUser = userService.getOne(new QueryWrapper<User>().lambda()
|
if (ObjUtil.isNull(admin)) throw new ResultException("系统未配置沈总账号");
|
||||||
.eq(User::getLoginName, generalManager.getParamValue())
|
|
||||||
|
User adminUser = userService.getOne(new QueryWrapper<User>().lambda()
|
||||||
|
.eq(User::getLoginName, admin.getParamValue())
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
|
if (ObjUtil.isNull(adminUser)) throw new ResultException("系统未配置沈总账号");
|
||||||
|
|
||||||
// 5.添加下一步流程环节
|
// 5.添加下一步流程环节
|
||||||
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
||||||
generalManagerUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
adminUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
||||||
flag = workFlowStepService.save(nextWorkFlowStep);
|
flag = workFlowStepService.save(nextWorkFlowStep);
|
||||||
|
|
||||||
// 6.通知总经理账号
|
// 6.通知沈总账号
|
||||||
User user = userService.getById(workFlow.getUserId());
|
User user = userService.getById(workFlow.getUserId());
|
||||||
String title =
|
String title =
|
||||||
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
||||||
"待您审批";
|
"待您审批";
|
||||||
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, generalManagerUser.getId());
|
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, adminUser.getId());
|
||||||
flag = workFlowNoticeService.save(workFlowNotice);
|
flag = workFlowNoticeService.save(workFlowNotice);
|
||||||
|
|
||||||
return flag ? AjaxResult.ok().msg("审批成功") : AjaxResult.fail("审批失败");
|
return flag ? AjaxResult.ok().msg("审批成功") : AjaxResult.fail("审批失败");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public AjaxResult third(WorkFlowStepVo vo, WorkFlow workFlow, WorkFlowStep workFlowStep){
|
public AjaxResult third(WorkFlowStepVo vo, WorkFlow workFlow, WorkFlowStep workFlowStep){
|
||||||
|
|
||||||
// 1.流程环节进行变更
|
// 1.流程环节进行变更
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
package com.ydool.oa.workFlow.engine.service.impl;
|
package com.ydool.oa.workFlow.engine.service.impl;
|
||||||
|
|
||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.util.ObjUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.ydool.common.data.dto.AjaxResult;
|
import com.ydool.common.data.dto.AjaxResult;
|
||||||
|
import com.ydool.common.exception.ResultException;
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlow;
|
import com.ydool.oa.workFlow.data.entity.WorkFlow;
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlowNotice;
|
import com.ydool.oa.workFlow.data.entity.WorkFlowNotice;
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlowStep;
|
import com.ydool.oa.workFlow.data.entity.WorkFlowStep;
|
||||||
|
@ -19,18 +22,17 @@ import com.ydool.oa.workFlow.service.WorkFlowStepLogService;
|
||||||
import com.ydool.oa.workFlow.service.WorkFlowStepService;
|
import com.ydool.oa.workFlow.service.WorkFlowStepService;
|
||||||
import com.ydool.system.entity.Config;
|
import com.ydool.system.entity.Config;
|
||||||
import com.ydool.system.entity.Dept;
|
import com.ydool.system.entity.Dept;
|
||||||
import com.ydool.system.entity.Job;
|
import com.ydool.system.entity.Role;
|
||||||
import com.ydool.system.entity.User;
|
import com.ydool.system.entity.User;
|
||||||
import com.ydool.system.service.impl.ConfigServiceImpl;
|
import com.ydool.system.service.impl.*;
|
||||||
import com.ydool.system.service.impl.DeptServiceImpl;
|
|
||||||
import com.ydool.system.service.impl.JobServiceImpl;
|
|
||||||
import com.ydool.system.service.impl.UserServiceImpl;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class RepairWorkFlowService implements IWorkFlowType {
|
public class RepairWorkFlowService implements IWorkFlowType {
|
||||||
|
@ -55,43 +57,90 @@ public class RepairWorkFlowService implements IWorkFlowType {
|
||||||
@Autowired
|
@Autowired
|
||||||
private ConfigServiceImpl configService;
|
private ConfigServiceImpl configService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RoleServiceImpl roleService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private DeptServiceImpl deptService;
|
private DeptServiceImpl deptService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public AjaxResult first(WorkFlow workFlow) {
|
public AjaxResult first(WorkFlow workFlow) {
|
||||||
|
//是否维修上报角色
|
||||||
|
User user = userService.getById(workFlow.getUserId());
|
||||||
|
List<Role> roles = roleService.listByIds(Arrays.asList(user.getRoles().split(",")));
|
||||||
|
List<String> roleNames = roles.stream().map(Role::getName).collect(Collectors.toList());
|
||||||
|
if (!roleNames.contains("维修上报")) throw new ResultException("您不是维修上报人员");
|
||||||
|
|
||||||
|
Dept dept = deptService.getById(user.getDept());
|
||||||
|
if (ObjUtil.isNull(dept)) throw new ResultException("您没有部门");
|
||||||
|
|
||||||
// 1.流程step+1
|
// 1.流程step+1
|
||||||
workFlow.setStep(workFlow.getStep() + 1);
|
workFlow.setStep(workFlow.getStep() + 1);
|
||||||
workFlow.setStepType(WorkFlowStepTypeEnum.APPROVAL.getType());
|
workFlow.setStepType(WorkFlowStepTypeEnum.APPROVAL.getType());
|
||||||
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
||||||
boolean flag = workFlowService.updateById(workFlow);
|
boolean flag = workFlowService.updateById(workFlow);
|
||||||
|
|
||||||
// 2.找到库点负责人账号
|
// 2.找到部门或库点负责人审批
|
||||||
Job libraryPointManager = jobService.getOne(new QueryWrapper<Job>().lambda()
|
|
||||||
.eq(Job::getCode, "library_point_manager")
|
Role role = roleService.getOne(new QueryWrapper<Role>().lambda()
|
||||||
.last("limit 1")
|
.eq(Role::getCode, "部门负责人")
|
||||||
);
|
.last("limit 1"));
|
||||||
User user = userService.getById(StpUtil.getLoginIdAsString());
|
List<User> nextUserList = userService.list(new QueryWrapper<User>().lambda()
|
||||||
User libraryPointManagerUser = userService.getOne(new QueryWrapper<User>().lambda()
|
|
||||||
.eq(User::getDept, user.getDept())
|
.eq(User::getDept, user.getDept())
|
||||||
.eq(User::getJob, libraryPointManager.getId())
|
.like(User::getRoles, role.getId())
|
||||||
.last("limit 1")
|
|
||||||
);
|
);
|
||||||
|
if (CollUtil.isEmpty(nextUserList)) {
|
||||||
|
role = roleService.getOne(new QueryWrapper<Role>().lambda()
|
||||||
|
.eq(Role::getCode, "库点负责人")
|
||||||
|
.last("limit 1"));
|
||||||
|
nextUserList = userService.list(new QueryWrapper<User>().lambda()
|
||||||
|
.eq(User::getDept, user.getDept())
|
||||||
|
.like(User::getRoles, role.getId())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (CollUtil.isEmpty(nextUserList)) {
|
||||||
|
role = roleService.getOne(new QueryWrapper<Role>().lambda()
|
||||||
|
.eq(Role::getCode, "总经理")
|
||||||
|
.last("limit 1"));
|
||||||
|
nextUserList = userService.list(new QueryWrapper<User>().lambda()
|
||||||
|
.like(User::getRoles, role.getId())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (CollUtil.isEmpty(nextUserList)) {
|
||||||
|
throw new ResultException("未找到下一步审批人");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 3.添加下一步流程环节
|
// 3.添加下一步流程环节
|
||||||
|
List<WorkFlowStep> nextWorkFlowStepList = new ArrayList<WorkFlowStep>();
|
||||||
|
for (User nextUser : nextUserList) {
|
||||||
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
||||||
libraryPointManagerUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
nextUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
||||||
flag = workFlowStepService.save(nextWorkFlowStep);
|
nextWorkFlowStepList.add(nextWorkFlowStep);
|
||||||
|
}
|
||||||
|
flag = workFlowStepService.saveBatch(nextWorkFlowStepList);
|
||||||
|
|
||||||
// 4.通知库点负责人账号
|
// 4.通知部门或库点负责人账号
|
||||||
|
List<WorkFlowNotice> nextWorkFlowNoticeList = new ArrayList<WorkFlowNotice>();
|
||||||
|
for (WorkFlowStep nextWorkFlowStep : nextWorkFlowStepList) {
|
||||||
String title =
|
String title =
|
||||||
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
||||||
"待您审批";
|
"待您审批";
|
||||||
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, libraryPointManagerUser.getId());
|
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, nextWorkFlowStep.getUserId());
|
||||||
flag = workFlowNoticeService.save(workFlowNotice);
|
nextWorkFlowNoticeList.add(workFlowNotice);
|
||||||
|
}
|
||||||
return flag ? AjaxResult.ok().msg("发起成功") : AjaxResult.fail("发起失败");
|
flag = workFlowNoticeService.saveBatch(nextWorkFlowNoticeList);
|
||||||
|
// 更新关联的维修流程
|
||||||
|
WorkFlow workFlow1 = workFlowService.getById(workFlow.getWorkFlowId());
|
||||||
|
if (ObjUtil.isNull(workFlow1)) throw new ResultException("未找到流程");
|
||||||
|
workFlow1.setWorkFlowId(workFlow.getId());
|
||||||
|
flag = workFlowService.updateById(workFlow1);
|
||||||
|
if (flag) {
|
||||||
|
return AjaxResult.ok().msg("发起成功");
|
||||||
|
} else {
|
||||||
|
throw new ResultException("发起失败");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -104,25 +153,24 @@ public class RepairWorkFlowService implements IWorkFlowType {
|
||||||
.eq(WorkFlowStep::getUserId, StpUtil.getLoginIdAsString())
|
.eq(WorkFlowStep::getUserId, StpUtil.getLoginIdAsString())
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
|
if (ObjUtil.isNull(workFlowStep)) throw new ResultException("您不是当前流程环节执行人");
|
||||||
|
|
||||||
// 2.判断执行哪个方法
|
// 2.判断执行哪个方法
|
||||||
switch (workFlow.getStep()) {
|
switch (workFlow.getStep()) {
|
||||||
case 2:
|
case 2:
|
||||||
// 2.1维修决算申报第二步 库点负责人账号审批
|
// 2.1维修决算申报第二步 部门或库点负责人审批审批
|
||||||
return second(vo, workFlow, workFlowStep);
|
return second(vo, workFlow, workFlowStep);
|
||||||
case 3:
|
case 3:
|
||||||
// 2.2 维修决算申报第三步 业务科部门的人员账号审批
|
// 2.2 维修决算申报第三步 沈总审批审批
|
||||||
return third(vo, workFlow, workFlowStep);
|
return third(vo, workFlow, workFlowStep);
|
||||||
case 4:
|
|
||||||
// 2.3 维修决算申报第四步 分管负责人账号审批
|
|
||||||
return fourth(vo, workFlow, workFlowStep);
|
|
||||||
default:
|
default:
|
||||||
return AjaxResult.fail("流程环节错误");
|
throw new ResultException("流程环节错误");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public AjaxResult second(WorkFlowStepVo vo, WorkFlow workFlow, WorkFlowStep workFlowStep) {
|
public AjaxResult second(WorkFlowStepVo vo, WorkFlow workFlow, WorkFlowStep workFlowStep) {
|
||||||
|
User user = userService.getById(workFlow.getUserId());
|
||||||
// 1.流程环节进行变更
|
// 1.流程环节进行变更
|
||||||
workFlowStep.setStatus(WorkFlowStepStatusEnum.PASS.getStatus());
|
workFlowStep.setStatus(WorkFlowStepStatusEnum.PASS.getStatus());
|
||||||
workFlowStep.setRemarks(vo.getRemarks());
|
workFlowStep.setRemarks(vo.getRemarks());
|
||||||
|
@ -138,44 +186,79 @@ public class RepairWorkFlowService implements IWorkFlowType {
|
||||||
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
||||||
flag = workFlowService.updateById(workFlow);
|
flag = workFlowService.updateById(workFlow);
|
||||||
|
|
||||||
// 4.找到业务科部门的人员账号
|
// 4.找到沈总账号
|
||||||
Dept businessDept = deptService.getOne(new QueryWrapper<Dept>().lambda()
|
Config admin = configService.getOne(new QueryWrapper<Config>().lambda()
|
||||||
.eq(Dept::getName, "综合管理部")
|
.eq(Config::getParamKey, "sys.admin")
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
Job businessJob = jobService.getOne(new QueryWrapper<Job>().lambda()
|
if (ObjUtil.isNull(admin)) throw new ResultException("系统未配置沈总账号");
|
||||||
.eq(Job::getCode, "business_dept")
|
|
||||||
.last("limit 1")
|
|
||||||
);
|
|
||||||
List<User> businessDeptUserList = userService.list(new QueryWrapper<User>().lambda()
|
|
||||||
.eq(User::getDept, businessDept.getId())
|
|
||||||
.eq(User::getJob, businessJob.getId())
|
|
||||||
);
|
|
||||||
|
|
||||||
|
User adminUser = userService.getOne(new QueryWrapper<User>().lambda()
|
||||||
|
.eq(User::getLoginName, admin.getParamValue())
|
||||||
|
.last("limit 1")
|
||||||
|
);
|
||||||
|
if (ObjUtil.isNull(adminUser)) throw new ResultException("系统未配置沈总账号");
|
||||||
|
|
||||||
// 5.添加下一步流程环节
|
// 5.添加下一步流程环节
|
||||||
List<WorkFlowStep> nextWorkFlowStepList = new ArrayList<WorkFlowStep>();
|
|
||||||
businessDeptUserList.forEach(businessDeptUser -> {
|
|
||||||
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
||||||
businessDeptUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
adminUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
||||||
nextWorkFlowStepList.add(nextWorkFlowStep);
|
flag = workFlowStepService.save(nextWorkFlowStep);
|
||||||
});
|
|
||||||
flag = workFlowStepService.saveBatch(nextWorkFlowStepList);
|
|
||||||
|
|
||||||
// 6.通知业务科部门的人员账号
|
// 6.通知沈总账号
|
||||||
User user = userService.getById(workFlow.getUserId());
|
|
||||||
String title =
|
String title =
|
||||||
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
||||||
"待您审批";
|
"待您审批";
|
||||||
List<WorkFlowNotice> workFlowNoticeList = new ArrayList<WorkFlowNotice>();
|
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, adminUser.getId());
|
||||||
businessDeptUserList.forEach(businessDeptUser -> {
|
flag = workFlowNoticeService.save(workFlowNotice);
|
||||||
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, businessDeptUser.getId());
|
if (flag) {
|
||||||
workFlowNoticeList.add(workFlowNotice);
|
return AjaxResult.ok().msg("审批成功");
|
||||||
});
|
} else {
|
||||||
flag = workFlowNoticeService.saveBatch(workFlowNoticeList);
|
throw new ResultException("审批失败");
|
||||||
|
|
||||||
return flag ? AjaxResult.ok().msg("审批成功") : AjaxResult.fail("审批失败");
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Transactional(rollbackFor = Exception.class)
|
||||||
|
// public AjaxResult third(WorkFlowStepVo vo, WorkFlow workFlow, WorkFlowStep workFlowStep) {
|
||||||
|
// // 1.流程环节进行变更
|
||||||
|
// workFlowStep.setStatus(WorkFlowStepStatusEnum.PASS.getStatus());
|
||||||
|
// workFlowStep.setRemarks(vo.getRemarks());
|
||||||
|
// boolean flag = workFlowStepService.updateById(workFlowStep);
|
||||||
|
//
|
||||||
|
// // 2.记录流程环节日志
|
||||||
|
// WorkFlowStepLog workFlowStepLog = new WorkFlowStepLog(workFlowStep, workFlow.getData());
|
||||||
|
// flag = workFlowStepLogService.save(workFlowStepLog);
|
||||||
|
//
|
||||||
|
// // 3.流程step+1 进入下一步
|
||||||
|
// workFlow.setStep(workFlow.getStep() + 1);
|
||||||
|
// workFlow.setStepType(WorkFlowStepTypeEnum.APPROVAL.getType());
|
||||||
|
// workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
||||||
|
// flag = workFlowService.updateById(workFlow);
|
||||||
|
//
|
||||||
|
// // 4.找到分管负责人账号
|
||||||
|
// Config responsiblePerson = configService.getOne(new QueryWrapper<Config>().lambda()
|
||||||
|
// .eq(Config::getParamKey, "responsible.person")
|
||||||
|
// .last("limit 1")
|
||||||
|
// );
|
||||||
|
// User responsiblePersonUser = userService.getOne(new QueryWrapper<User>().lambda()
|
||||||
|
// .eq(User::getLoginName, responsiblePerson.getParamValue())
|
||||||
|
// .last("limit 1")
|
||||||
|
// );
|
||||||
|
//
|
||||||
|
// // 5.添加下一步流程环节
|
||||||
|
// WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
||||||
|
// responsiblePersonUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
||||||
|
// flag = workFlowStepService.save(nextWorkFlowStep);
|
||||||
|
//
|
||||||
|
// // 6.通知分管负责人账号
|
||||||
|
// User user = userService.getById(workFlow.getUserId());
|
||||||
|
// String title =
|
||||||
|
// user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
||||||
|
// "待您审批";
|
||||||
|
// WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, responsiblePersonUser.getId());
|
||||||
|
// flag = workFlowNoticeService.save(workFlowNotice);
|
||||||
|
//
|
||||||
|
// return flag ? AjaxResult.ok().msg("审批成功") : AjaxResult.fail("审批失败");
|
||||||
|
// }
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public AjaxResult third(WorkFlowStepVo vo, WorkFlow workFlow, WorkFlowStep workFlowStep) {
|
public AjaxResult third(WorkFlowStepVo vo, WorkFlow workFlow, WorkFlowStep workFlowStep) {
|
||||||
|
@ -188,49 +271,6 @@ public class RepairWorkFlowService implements IWorkFlowType {
|
||||||
WorkFlowStepLog workFlowStepLog = new WorkFlowStepLog(workFlowStep, workFlow.getData());
|
WorkFlowStepLog workFlowStepLog = new WorkFlowStepLog(workFlowStep, workFlow.getData());
|
||||||
flag = workFlowStepLogService.save(workFlowStepLog);
|
flag = workFlowStepLogService.save(workFlowStepLog);
|
||||||
|
|
||||||
// 3.流程step+1 进入下一步
|
|
||||||
workFlow.setStep(workFlow.getStep() + 1);
|
|
||||||
workFlow.setStepType(WorkFlowStepTypeEnum.APPROVAL.getType());
|
|
||||||
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
|
||||||
flag = workFlowService.updateById(workFlow);
|
|
||||||
|
|
||||||
// 4.找到分管负责人账号
|
|
||||||
Config responsiblePerson = configService.getOne(new QueryWrapper<Config>().lambda()
|
|
||||||
.eq(Config::getParamKey, "responsible.person")
|
|
||||||
.last("limit 1")
|
|
||||||
);
|
|
||||||
User responsiblePersonUser = userService.getOne(new QueryWrapper<User>().lambda()
|
|
||||||
.eq(User::getLoginName, responsiblePerson.getParamValue())
|
|
||||||
.last("limit 1")
|
|
||||||
);
|
|
||||||
|
|
||||||
// 5.添加下一步流程环节
|
|
||||||
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
|
||||||
responsiblePersonUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
|
||||||
flag = workFlowStepService.save(nextWorkFlowStep);
|
|
||||||
|
|
||||||
// 6.通知分管负责人账号
|
|
||||||
User user = userService.getById(workFlow.getUserId());
|
|
||||||
String title =
|
|
||||||
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
|
||||||
"待您审批";
|
|
||||||
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, responsiblePersonUser.getId());
|
|
||||||
flag = workFlowNoticeService.save(workFlowNotice);
|
|
||||||
|
|
||||||
return flag ? AjaxResult.ok().msg("审批成功") : AjaxResult.fail("审批失败");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
|
||||||
public AjaxResult fourth(WorkFlowStepVo vo, WorkFlow workFlow, WorkFlowStep workFlowStep) {
|
|
||||||
// 1.流程环节进行变更
|
|
||||||
workFlowStep.setStatus(WorkFlowStepStatusEnum.PASS.getStatus());
|
|
||||||
workFlowStep.setRemarks(vo.getRemarks());
|
|
||||||
boolean flag = workFlowStepService.updateById(workFlowStep);
|
|
||||||
|
|
||||||
// 2.记录流程环节日志
|
|
||||||
WorkFlowStepLog workFlowStepLog = new WorkFlowStepLog(workFlowStep, workFlow.getData());
|
|
||||||
flag = workFlowStepLogService.save(workFlowStepLog);
|
|
||||||
|
|
||||||
// 3.流程完结
|
// 3.流程完结
|
||||||
workFlow.setStep(workFlow.getStep() + 1);
|
workFlow.setStep(workFlow.getStep() + 1);
|
||||||
workFlow.setStepType(WorkFlowStepTypeEnum.END.getType());
|
workFlow.setStepType(WorkFlowStepTypeEnum.END.getType());
|
||||||
|
@ -254,7 +294,11 @@ public class RepairWorkFlowService implements IWorkFlowType {
|
||||||
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, workFlow.getUserId());
|
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, workFlow.getUserId());
|
||||||
flag = workFlowNoticeService.save(workFlowNotice);
|
flag = workFlowNoticeService.save(workFlowNotice);
|
||||||
|
|
||||||
return flag ? AjaxResult.ok().msg("审批成功") : AjaxResult.fail("审批失败");
|
if (flag) {
|
||||||
|
return AjaxResult.ok().msg("审批成功");
|
||||||
|
} else {
|
||||||
|
throw new ResultException("审批失败");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
package com.ydool.oa.workFlow.engine.service.impl;
|
package com.ydool.oa.workFlow.engine.service.impl;
|
||||||
|
|
||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.util.ObjUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.ydool.common.data.dto.AjaxResult;
|
import com.ydool.common.data.dto.AjaxResult;
|
||||||
|
import com.ydool.common.exception.ResultException;
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlow;
|
import com.ydool.oa.workFlow.data.entity.WorkFlow;
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlowNotice;
|
import com.ydool.oa.workFlow.data.entity.WorkFlowNotice;
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlowStep;
|
import com.ydool.oa.workFlow.data.entity.WorkFlowStep;
|
||||||
|
@ -18,14 +21,19 @@ import com.ydool.oa.workFlow.service.WorkFlowService;
|
||||||
import com.ydool.oa.workFlow.service.WorkFlowStepLogService;
|
import com.ydool.oa.workFlow.service.WorkFlowStepLogService;
|
||||||
import com.ydool.oa.workFlow.service.WorkFlowStepService;
|
import com.ydool.oa.workFlow.service.WorkFlowStepService;
|
||||||
import com.ydool.system.entity.Config;
|
import com.ydool.system.entity.Config;
|
||||||
|
import com.ydool.system.entity.Dept;
|
||||||
|
import com.ydool.system.entity.Role;
|
||||||
import com.ydool.system.entity.User;
|
import com.ydool.system.entity.User;
|
||||||
import com.ydool.system.service.impl.ConfigServiceImpl;
|
import com.ydool.system.service.impl.*;
|
||||||
import com.ydool.system.service.impl.JobServiceImpl;
|
|
||||||
import com.ydool.system.service.impl.UserServiceImpl;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class RotationWorkFlowService implements IWorkFlowType {
|
public class RotationWorkFlowService implements IWorkFlowType {
|
||||||
@Autowired
|
@Autowired
|
||||||
|
@ -49,9 +57,23 @@ public class RotationWorkFlowService implements IWorkFlowType {
|
||||||
@Autowired
|
@Autowired
|
||||||
private ConfigServiceImpl configService;
|
private ConfigServiceImpl configService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RoleServiceImpl roleService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DeptServiceImpl deptService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public AjaxResult first(WorkFlow workFlow) {
|
public AjaxResult first(WorkFlow workFlow) {
|
||||||
|
User user = userService.getById(workFlow.getUserId());
|
||||||
|
//是否购销仓储部负责人
|
||||||
|
Dept dept = deptService.getById(user.getDept());
|
||||||
|
List<Role> roles = roleService.listByIds(Arrays.asList(user.getRoles().split(",")));
|
||||||
|
List<String> roleNames = roles.stream().map(Role::getName).collect(Collectors.toList());
|
||||||
|
if (!("购销仓储部".equals(dept.getName()) && roleNames.contains("部门负责人")))
|
||||||
|
throw new ResultException("您不是购销仓储部负责人,无法发起流程");
|
||||||
|
|
||||||
|
|
||||||
// 1.流程step+1
|
// 1.流程step+1
|
||||||
workFlow.setStep(workFlow.getStep() + 1);
|
workFlow.setStep(workFlow.getStep() + 1);
|
||||||
|
@ -59,30 +81,35 @@ public class RotationWorkFlowService implements IWorkFlowType {
|
||||||
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
||||||
boolean flag = workFlowService.updateById(workFlow);
|
boolean flag = workFlowService.updateById(workFlow);
|
||||||
|
|
||||||
// 2.找到公司账号
|
// 2.找到沈总账号
|
||||||
Config company = configService.getOne(new QueryWrapper<Config>().lambda()
|
Config admin = configService.getOne(new QueryWrapper<Config>().lambda()
|
||||||
.eq(Config::getParamKey, "company")
|
.eq(Config::getParamKey, "sys.admin")
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
User user = userService.getById(StpUtil.getLoginIdAsString());
|
if (ObjUtil.isNull(admin)) throw new ResultException("系统未配置沈总账号");
|
||||||
User companyUser = userService.getOne(new QueryWrapper<User>().lambda()
|
|
||||||
.eq(User::getLoginName, company.getParamValue())
|
User adminUser = userService.getOne(new QueryWrapper<User>().lambda()
|
||||||
|
.eq(User::getLoginName, admin.getParamValue())
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
|
if (ObjUtil.isNull(adminUser)) throw new ResultException("系统未配置沈总账号");
|
||||||
|
|
||||||
// 3.添加下一步流程环节
|
// 3.添加下一步流程环节
|
||||||
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
||||||
companyUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
adminUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
||||||
flag = workFlowStepService.save(nextWorkFlowStep);
|
flag = workFlowStepService.save(nextWorkFlowStep);
|
||||||
|
|
||||||
// 4.通知公司账号
|
// 4.通知沈总账号
|
||||||
String title =
|
String title =
|
||||||
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
||||||
"待您审批";
|
"待您审批";
|
||||||
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, companyUser.getId());
|
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, adminUser.getId());
|
||||||
flag = workFlowNoticeService.save(workFlowNotice);
|
flag = workFlowNoticeService.save(workFlowNotice);
|
||||||
|
if (flag){
|
||||||
return flag ? AjaxResult.ok().msg("发起成功") : AjaxResult.fail("发起失败");
|
return AjaxResult.ok().msg("发起成功");
|
||||||
|
}else {
|
||||||
|
throw new ResultException("发起失败");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -95,24 +122,25 @@ public class RotationWorkFlowService implements IWorkFlowType {
|
||||||
.eq(WorkFlowStep::getUserId, StpUtil.getLoginIdAsString())
|
.eq(WorkFlowStep::getUserId, StpUtil.getLoginIdAsString())
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
|
if (ObjUtil.isNull(workFlowStep)) throw new ResultException("您不是当前流程环节执行人");
|
||||||
|
|
||||||
// 2.判断执行哪个方法
|
// 2.判断执行哪个方法
|
||||||
switch (workFlow.getStep()) {
|
switch (workFlow.getStep()) {
|
||||||
case 2:
|
case 2:
|
||||||
// 2.1 轮换申报第二步 公司账号审批
|
// 2.1 轮换申报第二步 沈总审批
|
||||||
return second(vo, workFlow, workFlowStep);
|
return second(vo, workFlow, workFlowStep);
|
||||||
case 3:
|
case 3:
|
||||||
// 2.2 轮换申报第三步 发改局账号审批
|
// 2.2 轮换申报第三步 粮食与物资管理科(角色)审批
|
||||||
return third(vo, workFlow, workFlowStep);
|
return third(vo, workFlow, workFlowStep);
|
||||||
default:
|
default:
|
||||||
return AjaxResult.fail("流程环节错误");
|
throw new ResultException("流程环节错误");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public AjaxResult second(WorkFlowStepVo vo, WorkFlow workFlow, WorkFlowStep workFlowStep) {
|
public AjaxResult second(WorkFlowStepVo vo, WorkFlow workFlow, WorkFlowStep workFlowStep) {
|
||||||
|
User user = userService.getById(workFlow.getUserId());
|
||||||
// 1.流程环节进行变更
|
// 1.流程环节进行变更
|
||||||
workFlowStep.setStatus(WorkFlowStepStatusEnum.PASS.getStatus());
|
workFlowStep.setStatus(WorkFlowStepStatusEnum.PASS.getStatus());
|
||||||
workFlowStep.setRemarks(vo.getRemarks());
|
workFlowStep.setRemarks(vo.getRemarks());
|
||||||
|
@ -128,32 +156,46 @@ public class RotationWorkFlowService implements IWorkFlowType {
|
||||||
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
workFlow.setStatus(WorkFlowStatusEnum.ACTIVE.getStatus());
|
||||||
flag = workFlowService.updateById(workFlow);
|
flag = workFlowService.updateById(workFlow);
|
||||||
|
|
||||||
// 4.找到发改局账号
|
// 4.找到粮食与物资管理科(角色)
|
||||||
Config developmentAndReformBureau = configService.getOne(new QueryWrapper<Config>().lambda()
|
Role nextRole = roleService.getOne(new QueryWrapper<Role>().lambda()
|
||||||
.eq(Config::getParamKey, "development.and.reform.bureau")
|
.eq(Role::getName, "粮食与物资管理科")
|
||||||
.last("limit 1")
|
.last("limit 1")
|
||||||
);
|
);
|
||||||
User developmentAndReformBureauUser = userService.getOne(new QueryWrapper<User>().lambda()
|
if (ObjUtil.isNull(nextRole)) throw new ResultException("系统未配置粮食与物资管理科角色");
|
||||||
.eq(User::getLoginName, developmentAndReformBureau.getParamValue())
|
|
||||||
.last("limit 1")
|
List<User> nextUserList = userService.list(new QueryWrapper<User>().lambda()
|
||||||
|
.like(User::getRoles, nextRole.getId())
|
||||||
);
|
);
|
||||||
|
|
||||||
// 5.添加下一步流程环节
|
// 5.添加下一步流程环节
|
||||||
|
if (CollUtil.isEmpty(nextUserList)) throw new ResultException("系统未配置粮食与物资管理科账号");
|
||||||
|
List<WorkFlowStep> nextWorkFlowStepList = new ArrayList<WorkFlowStep>();
|
||||||
|
for (User nextUser : nextUserList) {
|
||||||
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
WorkFlowStep nextWorkFlowStep = new WorkFlowStep(workFlow, WorkFlowStepTypeEnum.APPROVAL.getType(),
|
||||||
developmentAndReformBureauUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
nextUser.getId(), WorkFlowStepStatusEnum.NOT_START.getStatus(), "");
|
||||||
flag = workFlowStepService.save(nextWorkFlowStep);
|
nextWorkFlowStepList.add(nextWorkFlowStep);
|
||||||
|
}
|
||||||
|
flag = workFlowStepService.saveBatch(nextWorkFlowStepList);
|
||||||
|
|
||||||
// 6.通知发改局账号
|
List<WorkFlowNotice> nextWorkFlowNoticeList = new ArrayList<WorkFlowNotice>();
|
||||||
User user = userService.getById(workFlow.getUserId());
|
// 6.通知粮食与物资管理科(角色)
|
||||||
|
for (User nextUser : nextUserList) {
|
||||||
String title =
|
String title =
|
||||||
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
user.getUserName() + "的" + WorkFlowTypeEnum.valueOf(workFlow.getType().toUpperCase()).getName() +
|
||||||
"待您审批";
|
"待您审批";
|
||||||
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, developmentAndReformBureauUser.getId());
|
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, nextUser.getId());
|
||||||
flag = workFlowNoticeService.save(workFlowNotice);
|
nextWorkFlowNoticeList.add(workFlowNotice);
|
||||||
|
}
|
||||||
|
flag = workFlowNoticeService.saveBatch(nextWorkFlowNoticeList);
|
||||||
|
|
||||||
return flag ? AjaxResult.ok().msg("审批成功") : AjaxResult.fail("审批失败");
|
if (flag){
|
||||||
|
return AjaxResult.ok().msg("审批成功");
|
||||||
|
}else {
|
||||||
|
throw new ResultException("审批失败");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public AjaxResult third(WorkFlowStepVo vo, WorkFlow workFlow, WorkFlowStep workFlowStep) {
|
public AjaxResult third(WorkFlowStepVo vo, WorkFlow workFlow, WorkFlowStep workFlowStep) {
|
||||||
|
|
||||||
// 1.流程环节进行变更
|
// 1.流程环节进行变更
|
||||||
|
@ -188,7 +230,11 @@ public class RotationWorkFlowService implements IWorkFlowType {
|
||||||
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, workFlow.getUserId());
|
WorkFlowNotice workFlowNotice = new WorkFlowNotice(title, workFlow, workFlow.getUserId());
|
||||||
flag = workFlowNoticeService.save(workFlowNotice);
|
flag = workFlowNoticeService.save(workFlowNotice);
|
||||||
|
|
||||||
return flag ? AjaxResult.ok().msg("审批成功") : AjaxResult.fail("审批失败");
|
if (flag){
|
||||||
|
return AjaxResult.ok().msg("审批成功");
|
||||||
|
}else {
|
||||||
|
throw new ResultException("审批失败");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.ydool.common.base.BaseService;
|
import com.ydool.common.base.BaseService;
|
||||||
import com.ydool.common.data.dto.AjaxResult;
|
import com.ydool.common.data.dto.AjaxResult;
|
||||||
|
import com.ydool.common.exception.ResultException;
|
||||||
import com.ydool.oa.workFlow.data.dto.WorkFlowCountDto;
|
import com.ydool.oa.workFlow.data.dto.WorkFlowCountDto;
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlow;
|
import com.ydool.oa.workFlow.data.entity.WorkFlow;
|
||||||
import com.ydool.oa.workFlow.data.entity.WorkFlowNotice;
|
import com.ydool.oa.workFlow.data.entity.WorkFlowNotice;
|
||||||
|
@ -69,6 +70,30 @@ public class WorkFlowService extends BaseService<WorkFlowMapper, WorkFlow> {
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public AjaxResult start(WorkFlowVo vo) {
|
public AjaxResult start(WorkFlowVo vo) {
|
||||||
|
|
||||||
|
if (vo.getType().equals(WorkFlowTypeEnum.REPAIR.getType())) {
|
||||||
|
if (StrUtil.isBlank(vo.getWorkFlowId())) throw new ResultException("需要提交预算流程id");
|
||||||
|
WorkFlow workFlow = getById(vo.getWorkFlowId());
|
||||||
|
if (ObjectUtil.isNull(workFlow)) throw new ResultException("预算流程不存在");
|
||||||
|
if (!workFlow.getStatus().equals(WorkFlowStatusEnum.PASS.getStatus()))
|
||||||
|
throw new ResultException("预算流程通过后才能发起维修流程");
|
||||||
|
if (!StpUtil.getLoginIdAsString().equals(workFlow.getUserId()))
|
||||||
|
throw new ResultException("只能发起自己的预算流程的维修流程");
|
||||||
|
if (StrUtil.isNotBlank(workFlow.getWorkFlowId())) {
|
||||||
|
int count = count(new QueryWrapper<WorkFlow>().lambda()
|
||||||
|
.eq(WorkFlow::getWorkFlowId, workFlow.getId())
|
||||||
|
.eq(WorkFlow::getType, WorkFlowTypeEnum.REPAIR.getType())
|
||||||
|
.eq(WorkFlow::getStatus, WorkFlowStatusEnum.PASS.getStatus())
|
||||||
|
);
|
||||||
|
if (count > 0) throw new ResultException("该预算流程已发起维修流程并且通过");
|
||||||
|
count = count(new QueryWrapper<WorkFlow>().lambda()
|
||||||
|
.eq(WorkFlow::getWorkFlowId, workFlow.getId())
|
||||||
|
.eq(WorkFlow::getType, WorkFlowTypeEnum.REPAIR.getType())
|
||||||
|
.eq(WorkFlow::getStatus, WorkFlowStatusEnum.ACTIVE.getStatus())
|
||||||
|
);
|
||||||
|
if (count > 0) throw new ResultException("该预算流程已发起维修流程并且未结束");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 1.保存流程
|
// 1.保存流程
|
||||||
WorkFlow workFlow = BeanUtil.copyProperties(vo, WorkFlow.class);
|
WorkFlow workFlow = BeanUtil.copyProperties(vo, WorkFlow.class);
|
||||||
workFlow.setUserId(StpUtil.getLoginIdAsString());
|
workFlow.setUserId(StpUtil.getLoginIdAsString());
|
||||||
|
|
Loading…
Reference in New Issue