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 { @Autowired private WfDefStepDao wfDefStepDao; @Autowired private SysRoleMenuService sysRoleMenuService; @Autowired private SysRoleUserService sysRoleUserService; /** * 根据id查询流程配置列表 * * @param queryFilter * @return */ public List queryStepsList(QueryFilter queryFilter) { List wfDefStepList = wfDefStepDao.queryStepsList(queryFilter.getQueryParams()); return wfDefStepList; } /** * 查询工作流下拉框 * * @return */ public List 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 getUserByWorkflowSteps(Long stepsId) { return baseDao.getUserByWorkflowSteps(stepsId); } /** * 查询用户列表 * * @param queryFilter * @return */ public List 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 getRoleByWorkflowSteps(Long stepsId) { List list = baseDao.getRoleByWorkflowSteps(stepsId); return list; } /** * 查询用户列表 * * @param queryFilter * @return */ public List getRoleList(QueryFilter queryFilter) { List 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 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 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); } } } }