package com.zt.modules.workflowconfig.service;
|
|
import cn.hutool.core.convert.Convert;
|
import com.zt.common.db.query.QueryFilter;
|
import com.zt.common.exception.RenException;
|
import com.zt.common.service.BaseService;
|
import com.zt.modules.sys.model.SysRoleMenu;
|
import com.zt.modules.sys.service.SysRoleMenuService;
|
import com.zt.modules.sys.service.SysRoleUserService;
|
import com.zt.modules.workflowconfig.dao.WfDefStepDao;
|
import com.zt.modules.workflowconfig.dto.FlowMenuDto;
|
import com.zt.modules.workflowconfig.model.WfDef;
|
import com.zt.modules.workflowconfig.model.WfDefStep;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.List;
|
|
@Service
|
public class WorkflowConfigService extends BaseService<WfDefStepDao, WfDefStep> {
|
|
@Autowired
|
private WfDefStepDao wfDefStepDao;
|
|
@Autowired
|
private SysRoleMenuService sysRoleMenuService;
|
|
@Autowired
|
private SysRoleUserService sysRoleUserService;
|
/**
|
* 根据id查询流程配置列表
|
*
|
* @param queryFilter
|
* @return
|
*/
|
public List<WfDefStep> queryStepsList(QueryFilter queryFilter) {
|
List<WfDefStep> wfDefStepList = wfDefStepDao.queryStepsList(queryFilter.getQueryParams());
|
return wfDefStepList;
|
}
|
|
/**
|
* 查询工作流下拉框
|
*
|
* @return
|
*/
|
public List<WfDef> workflowSelect() {
|
return wfDefStepDao.workflowSelect();
|
}
|
|
|
|
/**
|
* 按 ID 获取工作流程步骤列表
|
*
|
* @param id
|
* @return
|
*/
|
public WfDefStep getWorkflowStepsListById(Long id) {
|
WfDefStep result = baseDao.selectById(id);
|
return result;
|
}
|
|
public WfDefStep getWorkflowStepByCode(String stepCode) {
|
WfDefStep result = baseDao.getWorkflowStepByCode(stepCode);
|
return result;
|
}
|
|
/**
|
* 根据步骤获取相关审核用户
|
*
|
* @param stepsId
|
* @return
|
*/
|
public List<WfDefStep> getUserByWorkflowSteps(Long stepsId) {
|
return baseDao.getUserByWorkflowSteps(stepsId);
|
}
|
|
/**
|
* 查询用户列表
|
*
|
* @param queryFilter
|
* @return
|
*/
|
public List<WfDefStep> getUserList(QueryFilter queryFilter) {
|
return queryFilter.getPageList(baseDao.getUserList(queryFilter.getQueryParams()));
|
}
|
|
/**
|
* 添加工作流步骤审核用户
|
*
|
* @param approver_ids
|
* @param id
|
*/
|
public void addWorkflowStepsUser(String approver_ids, Long id) {
|
WfDefStep wfDefStep = baseDao.selectById(id);
|
StringBuffer sb = new StringBuffer();
|
if (StringUtils.isNotBlank(wfDefStep.getApproverIds())) {
|
sb.append(wfDefStep.getApproverIds());
|
sb.append(",");
|
sb.append(approver_ids);
|
baseDao.addWorkflowStepsUser(sb.toString(), id);
|
} else {
|
baseDao.addWorkflowStepsUser(approver_ids, id);
|
}
|
}
|
|
/**
|
* 删除工作流步骤审核用户
|
*
|
* @param userId
|
* @param stepId
|
*/
|
public void deleteWorkflowStepsUser(String userId, String stepId) {
|
WfDefStep wfDefStep = baseDao.selectById(stepId);
|
if (StringUtils.isNotBlank(wfDefStep.getApproverIds())) {
|
String[] newAppRoverId = userId.split(",");
|
String[] oldAppRoverId = wfDefStep.getApproverIds().split(",");
|
String appRoverId = "";
|
for (int i = 0; i < oldAppRoverId.length; i++) {
|
int num = 0;
|
for (int j = 0; j < newAppRoverId.length; j++) {
|
if (oldAppRoverId[i].equals(newAppRoverId[j])) {
|
num = num + 1;
|
}
|
}
|
if (num == 0) {
|
appRoverId += oldAppRoverId[i] + ",";
|
}
|
num = 0;
|
}
|
baseDao.deleteWorkflowStepsUser(appRoverId, stepId);
|
} else {
|
throw new RenException("请添加数据后删除");
|
}
|
}
|
|
/**
|
* 添加工作流流程步骤
|
*
|
* @param wfDefStep
|
*/
|
@Override
|
public void insert(WfDefStep wfDefStep) {
|
//wfDefStep.setIsDelete(0);
|
super.insert(wfDefStep);
|
}
|
|
/**
|
* 删除工作流流程步骤
|
*
|
* @param ids
|
*/
|
public void delete(Long[] ids) {
|
for (Long id : ids) {
|
baseDao.delete(id);
|
}
|
}
|
|
|
/**
|
* 根据步骤获取相关审核用户
|
*
|
* @param stepsId
|
* @return
|
*/
|
public List<WfDefStep> getRoleByWorkflowSteps(Long stepsId) {
|
List<WfDefStep> list = baseDao.getRoleByWorkflowSteps(stepsId);
|
return list;
|
}
|
|
/**
|
* 查询用户列表
|
*
|
* @param queryFilter
|
* @return
|
*/
|
public List<WfDefStep> getRoleList(QueryFilter queryFilter) {
|
List<WfDefStep> list = queryFilter.getPageList(baseDao.getRoleList(queryFilter.getQueryParams()));
|
return list;
|
}
|
|
/**
|
* 添加工作流步骤审核用户
|
*
|
* @param approver_ids
|
* @param id
|
*/
|
public void addWorkflowStepsRole(String approver_ids, Long id) {
|
WfDefStep wfDefStep = baseDao.selectById(id);
|
StringBuffer sb = new StringBuffer();
|
if (StringUtils.isNotBlank(wfDefStep.getApproverRoleIds())) {
|
sb.append(wfDefStep.getApproverRoleIds());
|
sb.append(",");
|
sb.append(approver_ids);
|
baseDao.addWorkflowStepsRole(sb.toString(), id);
|
} else {
|
baseDao.addWorkflowStepsRole(approver_ids, id);
|
}
|
}
|
|
/**
|
* 删除工作流步骤审核用户
|
*
|
* @param roleId
|
* @param stepId
|
*/
|
public void deleteWorkflowStepsRole(String roleId, String stepId) {
|
WfDefStep wfDefStep = baseDao.selectById(stepId);
|
if (StringUtils.isNotBlank(wfDefStep.getApproverRoleIds())) {
|
String[] newAppRoverId = roleId.split(",");
|
String[] oldAppRoverId = wfDefStep.getApproverRoleIds().split(",");
|
String appRoverId = "";
|
for (int i = 0; i < oldAppRoverId.length; i++) {
|
int num = 0;
|
for (int j = 0; j < newAppRoverId.length; j++) {
|
if (oldAppRoverId[i].equals(newAppRoverId[j])) {
|
num = num + 1;
|
}
|
}
|
if (num == 0) {
|
appRoverId += oldAppRoverId[i] + ",";
|
}
|
num = 0;
|
}
|
baseDao.deleteWorkflowStepsRole(appRoverId, stepId);
|
} else {
|
throw new RenException("请添加数据后删除");
|
}
|
}
|
|
public void refreshFlowMenu() {
|
//baseDao.deleteFlowMenu();
|
|
//没有待办、已办菜单权限的菜单权限记录的角色的更改为有效(sys_role_menu 更改is_delete=0)
|
List<FlowMenuDto> list = baseDao.selectFlowMenu();
|
for (FlowMenuDto item : list
|
) {
|
String roleId = item.getRoleId();
|
String menuId = item.getMenuId();
|
String menuId2 = item.getMenuId2();
|
Long id2 = item.getId2();
|
if (!StringUtils.isEmpty(menuId2)) {
|
//选择了角色没有待办、已办菜单权限的菜单权限记录被删除了的更改为有效(sys_role_menu 更改is_delete=0)
|
SysRoleMenu sysRoleMenu = sysRoleMenuService.get(id2);
|
sysRoleMenu.setDelete(false);
|
sysRoleMenuService.update(sysRoleMenu);
|
} else {
|
//选择了角色没有待办、已办菜单权限的加上菜单权限记录
|
SysRoleMenu sysRoleMenu = new SysRoleMenu();
|
sysRoleMenu.setRoleId(Convert.toLong(roleId));
|
sysRoleMenu.setMenuId(Convert.toLong(menuId));
|
sysRoleMenu.setDelete(false);
|
sysRoleMenuService.insert(sysRoleMenu);
|
}
|
}
|
baseDao.deleteRoleFlowMenu();
|
}
|
public void refreshFlowMenuOld() {
|
//baseDao.deleteFlowMenu();
|
//选择了角色没有待办、已办菜单权限的加上菜单权限记录
|
//选择了角色没有待办、已办菜单权限的菜单权限记录被删除了的更改为有效(sys_role_menu 更改is_delete=0)
|
//没有待办、已办菜单权限的菜单权限记录的角色的更改为有效(sys_role_menu 更改is_delete=0)
|
List<FlowMenuDto> list = baseDao.selectFlowMenu();
|
for (FlowMenuDto item : list
|
) {
|
String roleId = item.getRoleId();
|
String menuId = item.getMenuId();
|
String menuId2 = item.getMenuId2();
|
Long id2 = item.getId2();
|
if (!StringUtils.isEmpty(menuId2)) {
|
SysRoleMenu sysRoleMenu = sysRoleMenuService.get(id2);
|
if (StringUtils.isEmpty(menuId)) {
|
if (!sysRoleMenu.isDelete()) {
|
sysRoleMenu.setDelete(true);
|
sysRoleMenuService.update(sysRoleMenu);
|
}
|
} else {
|
if (sysRoleMenu.isDelete()) {
|
sysRoleMenu.setDelete(false);
|
sysRoleMenuService.update(sysRoleMenu);
|
}
|
}
|
} else {
|
SysRoleMenu sysRoleMenu = new SysRoleMenu();
|
sysRoleMenu.setRoleId(Convert.toLong(roleId));
|
sysRoleMenu.setMenuId(Convert.toLong(menuId));
|
sysRoleMenu.setDelete(false);
|
sysRoleMenuService.insert(sysRoleMenu);
|
}
|
}
|
}
|
}
|