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