package com.zteits.sys.biz; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.commons.lang3.StringUtils; import com.clouds.common.log.LogSelf; import com.clouds.common.utils.BeanValidatorsUtils; import com.clouds.common.utils.ListCopyUtil; import com.clouds.common.utils.LogSelfFactory; import com.github.pagehelper.PageInfo; import com.google.common.collect.Lists; import com.zteits.clouds.api.apibase.bean.BizResult; import com.zteits.clouds.api.apibase.bean.PageBean; import com.zteits.clouds.api.apibase.constants.DataStatusEnum; import com.zteits.clouds.api.apibase.constants.ErrorType; import com.zteits.clouds.api.apibase.exception.BizException; import com.zteits.clouds.api.dto.sys.SysJobfuncDTO; import com.zteits.clouds.api.dto.sys.SysJobfuncWithOpAndRoleDTO; import com.zteits.clouds.api.dto.sys.SysResJobFuncRelationDTO; import com.zteits.clouds.api.dto.sys.SysResJobfuncDTO; import com.zteits.clouds.api.dto.sys.SysRoleDTO; import com.zteits.clouds.api.dto.sys.param.QueryRolesByJobIdRequest; import com.zteits.clouds.api.dto.sys.param.RoleJobFunByJobFunIdSaveRequest; import com.zteits.clouds.api.dto.sys.param.RoleJobFunByRoleIdSaveRequest; import com.zteits.clouds.api.dto.sys.param.SysJobFunSaveOrUpdateRequest; import com.zteits.clouds.api.dto.sys.param.SysJobFuncByIdQueryRequest; import com.zteits.clouds.api.dto.sys.param.SysJobFuncByIdsDeleteRequest; import com.zteits.clouds.api.dto.sys.param.SysJobFuncPageQueryRequest; import com.zteits.clouds.api.dto.sys.param.SysJobFuncQueryByRoleIdRequest; import com.zteits.clouds.api.dto.sys.param.SysJobFuncSaveRequest; import com.zteits.clouds.api.dto.sys.param.SysJobFuncUpdateRequest; import com.zteits.clouds.api.dto.sys.param.SysResJobFuncByIdQueryRequest; import com.zteits.clouds.api.dto.sys.param.SysResJobFuncSaveRequest; import com.zteits.clouds.api.service.sys.SysJobFuncService; import com.zteits.sys.dao.SysJobFuncDao; import com.zteits.sys.dao.SysOpDao; import com.zteits.sys.dao.SysResJobFuncDao; import com.zteits.sys.dao.SysRoleJobFunDao; import com.zteits.sys.domain.SysJobfunc; import com.zteits.sys.domain.SysOp; import com.zteits.sys.domain.SysResJobfunc; import com.zteits.sys.domain.SysRole; import com.zteits.sys.pagepaper.PageBeanUtil; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.util.ObjectUtils; @Component public class SysJobFuncServiceImpl implements SysJobFuncService { private static final LogSelf log = LogSelfFactory.getLogSelf(SysJobFuncServiceImpl.class); @Autowired private SysJobFuncDao sysJobFuncDao; @Autowired private SysResJobFuncDao sysResJobFuncDao; @Autowired private SysRoleJobFunDao sysRoleJobFunDao; @Autowired private SysOpDao sysOpDao; // @Autowired // private SysRoleDao sysRoleDao; @Transactional @Override public BizResult saveAllSysResJobFunc(SysResJobFuncSaveRequest request) { if (request == null) { throw new BizException(ErrorType.PARAMM_NULL, "请求对象"); } if (CollectionUtils.isEmpty(request.getResJobFuncs())) { throw new BizException(ErrorType.PARAMM_NULL, "resJobFuncs"); } for (SysResJobFuncRelationDTO resJobFuncRelationDTO : request.getResJobFuncs()) { //1. 根据职能ID删除对应的菜单 sysResJobFuncDao.deleteAllSysResJobFuncByJobFuncId(resJobFuncRelationDTO.getJobfuncId(), request.getSysCode()); //2. 保存新的职能菜单关系 sysResJobFuncDao.saveSysResJobFunc(resJobFuncRelationDTO, request.getSysCode()); } return new BizResult(true); } @Transactional @Override public BizResult deleteSysJobFuncByIds(SysJobFuncByIdsDeleteRequest request) { if (request == null) { throw new BizException(ErrorType.PARAMM_NULL, "请求对象"); } return new BizResult(sysJobFuncDao.deleteSysJobFuncByIds(request.getIds())); } @Transactional @Override public BizResult saveSysJobFunc(SysJobFuncSaveRequest request) { if (request == null) { throw new BizException(ErrorType.PARAMM_NULL, "请求对象"); } SysJobfunc sysJobfunc = new SysJobfunc(); BeanUtils.copyProperties(request, sysJobfunc); sysJobfunc.setCreateDate(new Date()); sysJobfunc.setCreateEmpid(request.getEmpid()); sysJobfunc.setModfiyEmpid(request.getEmpid()); sysJobfunc.setModfiyDate(new Date()); sysJobfunc.setOrgId(request.getOrgId()); return new BizResult(sysJobFuncDao.saveSysJobFunc(sysJobfunc)); } @Transactional @Override public BizResult updateSysJobFunc(SysJobFuncUpdateRequest request) { if (request == null) { throw new BizException(ErrorType.PARAMM_NULL, "请求对象"); } SysJobfunc sysJobfunc = new SysJobfunc(); BeanUtils.copyProperties(request, sysJobfunc); sysJobfunc.setModfiyEmpid(request.getEmpid()); sysJobfunc.setModfiyDate(new Date()); return new BizResult(sysJobFuncDao.updateSysJobFuncById(sysJobfunc)); } @Override public BizResult> pageQuerySysJobfunc(SysJobFuncPageQueryRequest request) { if (request == null) { throw new BizException(ErrorType.PARAMM_NULL, "请求对象"); } PageBean pageBean = new PageBean(); PageInfo pageInfo = sysJobFuncDao.pageQuerySysJobfunc(request); PageBeanUtil.copyProperties(pageInfo, pageBean, SysJobfuncDTO.class); return new BizResult>(pageBean); } @Override public BizResult> pageQuerySysJobfuncWithOpAndRole( SysJobFuncPageQueryRequest request) { if (request == null) { throw new BizException(ErrorType.PARAMM_NULL, "请求对象"); } PageBean pageBean = new PageBean(); //1、根据条件 分页查询职能集合信息 PageInfo pageInfo = sysJobFuncDao.pageQuerySysJobfunc(request); PageBeanUtil.copyProperties(pageInfo, pageBean, SysJobfuncWithOpAndRoleDTO.class); if (CollectionUtils.isEmpty(pageInfo.getList())) { //1.1如果查询出的职能集合为空,直接返回 return new BizResult>(pageBean); } //2、根据职能集合 获取职能ID 集合 List jobFuncIds = new ArrayList<>(); //获取创建人 及 修改人id集合 Set opIds = new HashSet<>(); if(pageInfo != null && !CollectionUtils.isEmpty(pageInfo.getList())){ for (SysJobfunc sysJobfunc : pageInfo.getList()) { if(sysJobfunc != null){ jobFuncIds.add(sysJobfunc.getId()); opIds.add(sysJobfunc.getCreateEmpid() !=null ? Long.parseLong(sysJobfunc.getCreateEmpid()):null); opIds.add(sysJobfunc.getModfiyEmpid() != null ? Long.parseLong(sysJobfunc.getModfiyEmpid()):null); } } } //4、 填充操作人信息 try { fillOpInfo(pageBean.getDataList(), opIds, request.getSysCode()); } catch (Exception e) { e.printStackTrace(); } return new BizResult<>(pageBean); } //填充创建人 及 修改人信息 private void fillOpInfo(List dtos, Set opIds, String sysCode) throws Exception { if (CollectionUtils.isEmpty(dtos) || CollectionUtils.isEmpty(opIds)) { return; } List opIdList = new ArrayList<>(opIds); List ops = sysOpDao.querySysOpByIds(opIdList, DataStatusEnum.DATA_STATUS_VALID.value(), sysCode); Map opMap = new HashMap<>(); if(!CollectionUtils.isEmpty(ops)){ for (SysOp sysOp : ops) { if(sysOp != null){ opMap.put(sysOp.getId(), sysOp.getOpName()); } } } if(!CollectionUtils.isEmpty(dtos)){ for (SysJobfuncWithOpAndRoleDTO dto : dtos) { if(dto != null){ if (StringUtils.isNotEmpty(dto.getCreateEmpid())) { dto.setCreateOpName(opMap.get(Long.parseLong(dto.getCreateEmpid()))); } if (StringUtils.isNotEmpty(dto.getModfiyEmpid())) { dto.setModfiyOpName(opMap.get(Long.parseLong(dto.getModfiyEmpid()))); } } } } } @Override public BizResult getSysJobFuncById(SysJobFuncByIdQueryRequest request) { if (request == null) { throw new BizException(ErrorType.PARAMM_NULL, "请求对象"); } SysJobfunc sysJobfunc = sysJobFuncDao.getSysJobFuncById(request.getId()); SysJobfuncDTO jobfuncDTO = new SysJobfuncDTO(); if (sysJobfunc == null) { return new BizResult(jobfuncDTO); } BeanUtils.copyProperties(sysJobfunc, jobfuncDTO); return new BizResult(jobfuncDTO); } @Override public BizResult> getResJobfunByJobfunId(SysResJobFuncByIdQueryRequest request) { BizResult> dtoResult = new BizResult<>(); if (request == null) { throw new BizException(ErrorType.PARAMM_NULL, "请求对象"); } List dtos = new ArrayList<>(); List result = sysResJobFuncDao.querySysResJobfuncByJobFuncId(request.getJobFunId(), DataStatusEnum.DATA_STATUS_VALID.value(), request.getSysCode()); if (CollectionUtils.isEmpty(result)) { dtoResult.setData(dtos); dtoResult.setErrCode(ErrorType.BIZ_SUCCESS); return dtoResult; } SysResJobfuncDTO dto; for (SysResJobfunc sysResJobfunc : result) { dto = new SysResJobfuncDTO(); BeanUtils.copyProperties(sysResJobfunc, dto); dtos.add(dto); } dtoResult.setData(dtos); dtoResult.setErrCode(ErrorType.BIZ_SUCCESS); return dtoResult; } @Transactional @Override public BizResult saveOrUpdateJobFunWithResIds(SysJobFunSaveOrUpdateRequest request) { if (request == null) { throw new BizException(ErrorType.PARAMM_NULL, "请求对象"); } Long jobFuncId = request.getJobfuncId(); Boolean flag = false; //通过职能ID删除全部职能菜单关系 flag = sysResJobFuncDao.deleteAllSysResJobFuncByJobFuncId(jobFuncId, request.getSysCode()); if (!flag) { throw new BizException(ErrorType.BIZ_ERROR, "新增或更新职能与资源关系失败!"); } if(request != null && !CollectionUtils.isEmpty(request.getResIds())){ SysResJobFuncRelationDTO dto = new SysResJobFuncRelationDTO(); dto.setJobfuncId(jobFuncId); dto.setResIds(request.getResIds()); flag = sysResJobFuncDao.saveSysResJobFunc(dto, request.getSysCode()); if (!flag) { throw new BizException(ErrorType.BIZ_ERROR, "新增或更新职能与资源关系失败!"); } } return new BizResult<>(flag); } @Override public BizResult> pageQuerySysJobfuncsByRoleId(SysJobFuncQueryByRoleIdRequest request) { //验证参数 BeanValidatorsUtils.validateWithException(request); List jobfuncs = Lists.newArrayList(); //1.通过角色id获取所有职能id List roleIds = Lists.newArrayList(); roleIds.add(request.getRoleId()); List jobFuncIds = sysRoleJobFunDao.queryJobFunIdsByRoleId(roleIds, DataStatusEnum.DATA_STATUS_VALID.value(), request.getSysCode()); if (CollectionUtils.isEmpty(jobFuncIds)) { return new BizResult>(jobfuncs); } //2.通过ID获取职能 for (Long jobFuncId : jobFuncIds) { SysJobfuncDTO sysJobFuncDto = new SysJobfuncDTO(); SysJobfunc sysJobFunc = sysJobFuncDao.getSysJobFuncById(jobFuncId); if (ObjectUtils.isEmpty(sysJobFunc)) { continue; } BeanUtils.copyProperties(sysJobFunc, sysJobFuncDto); jobfuncs.add(sysJobFuncDto); } return new BizResult>(jobfuncs); } @Override public BizResult> queryRolesByJobId(QueryRolesByJobIdRequest queryRolesByJobIdRequest) throws Exception { List list = new ArrayList(); List sysRoleList = sysJobFuncDao.queryRolesByJobId(queryRolesByJobIdRequest); ListCopyUtil.listCopyProperties(sysRoleList, list, SysRoleDTO.class); return new BizResult>(list); } @Override public BizResult batchSaveRoleJobFunByJobFunId( RoleJobFunByJobFunIdSaveRequest roleJobFunByJobFunIdSaveRequest) { int insertCount = 0; if(roleJobFunByJobFunIdSaveRequest != null){ int deleteCount = sysRoleJobFunDao.deleteRoleJobFunByJobfunIdId(roleJobFunByJobFunIdSaveRequest.getJobFunId()); log.info("通过职能id删除角色职能关系表,成功删除={} 条。",deleteCount); if(deleteCount >= 0 && !CollectionUtils.isEmpty(roleJobFunByJobFunIdSaveRequest.getRoleIds()) ){ insertCount = sysRoleJobFunDao.saveBatchRoleJobFunByJobFunId(roleJobFunByJobFunIdSaveRequest.getJobFunId(), roleJobFunByJobFunIdSaveRequest.getRoleIds(), roleJobFunByJobFunIdSaveRequest.getDataState(), roleJobFunByJobFunIdSaveRequest.getCurrentOpId(), roleJobFunByJobFunIdSaveRequest.getSysCode()); log.info("批量插入角色职能关系表,成功插入={} 条。",insertCount); } }else{ throw new BizException(ErrorType.PARAMM_NULL, "请求对象"); } return new BizResult(insertCount >= 0 ? true : false); } @Override public BizResult updateJobFunOrgIdByRoleOrgIg(RoleJobFunByJobFunIdSaveRequest request) { if(request == null || StringUtils.isBlank(request.getOrgId()+"") || StringUtils.isBlank(request.getJobFunId()+"")){ throw new BizException(ErrorType.PARAMM_NULL, "请求参数为空"); } return new BizResult(sysJobFuncDao.updateJobFunOrgIdByRoleOrgIg(request)); } @Override public BizResult batchSaveRoleJobFunByRoleId( RoleJobFunByRoleIdSaveRequest roleJobFunByRoleIdSaveRequest) { int insertCount = 0; if(roleJobFunByRoleIdSaveRequest != null){ int deleteCount = sysRoleJobFunDao.deleteRoleJobFunByRoleId(roleJobFunByRoleIdSaveRequest.getRoleId()); log.info("通过角色id删除角色职能关系表,成功删除={} 条。",deleteCount); if(deleteCount >= 0 && !CollectionUtils.isEmpty(roleJobFunByRoleIdSaveRequest.getJobFunIds()) ){ insertCount = sysRoleJobFunDao.saveBatchRoleJobFunByRoleId(roleJobFunByRoleIdSaveRequest.getRoleId(), roleJobFunByRoleIdSaveRequest.getJobFunIds(), roleJobFunByRoleIdSaveRequest.getDataState(), roleJobFunByRoleIdSaveRequest.getCurrentOpId(), roleJobFunByRoleIdSaveRequest.getSysCode()); log.info("批量插入角色职能关系表,成功插入={} 条。",insertCount); } }else{ throw new BizException(ErrorType.PARAMM_NULL, "请求对象"); } return new BizResult(insertCount >= 0 ? true : false); } @Override public BizResult updateJobFunOrgIdByRoleOrgIgs( RoleJobFunByRoleIdSaveRequest request) { if(request == null || StringUtils.isBlank(request.getOrgId()+"") || StringUtils.isBlank(request.getJobFunIds()+"")){ throw new BizException(ErrorType.PARAMM_NULL, "请求参数为空"); } return new BizResult(sysJobFuncDao.updateJobFunOrgIdByRoleOrgIgs(request)); } }