package com.zteits.sys.biz; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.apache.commons.lang3.StringUtils; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; 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.SysOpDTO; import com.zteits.clouds.api.dto.sys.SysOrgDTO; import com.zteits.clouds.api.dto.sys.param.OrgByOrgLevelRequest; import com.zteits.clouds.api.dto.sys.param.SysOrgByIdQueryRequest; import com.zteits.clouds.api.dto.sys.param.SysOrgByIdsDeleteRequest; import com.zteits.clouds.api.dto.sys.param.SysOrgPageQueryRequest; import com.zteits.clouds.api.dto.sys.param.SysOrgQueryByOpIdRequest; import com.zteits.clouds.api.dto.sys.param.SysOrgQueryBySysOpIDRequest; import com.zteits.clouds.api.dto.sys.param.SysOrgSaveRequest; import com.zteits.clouds.api.dto.sys.param.SysOrgUpdateRequest; import com.zteits.clouds.api.service.sys.SysOrgService; import com.zteits.sys.dao.SysOpOrgDao; import com.zteits.sys.dao.SysOrgDao; import com.zteits.sys.domain.SysOp; import com.zteits.sys.domain.SysOrg; import com.zteits.sys.pagepaper.PageBeanUtil; /** * * * Copyright: Copyright (c) 2017 zteits * * @ClassName: SysOrgServiceImpl.java * @Description: * @version: v1.0.0 * @author: langlw * @date: 2017年5月11日 上午9:56:03 * Modification History: * Date Author Version Description *---------------------------------------------------------* * 2017年5月11日 langlw v1.0.0 创建 */ @Service("com.zteits.sys.biz.SysOrgServiceImpl") public class SysOrgServiceImpl implements SysOrgService { private static final LogSelf logger = LogSelfFactory.getLogSelf(SysOrgServiceImpl.class); @Autowired private SysOrgDao sysOrgDao; @Autowired private SysOpOrgDao sysOpOrgDao; @Override public BizResult> queryAllSysOrgByParentId(SysOrgPageQueryRequest request) { List dtoList = new ArrayList<>(); List allSysOrgs = getChildSys(request.getParentOrgId()); for (SysOrg sysOrg :allSysOrgs){ SysOrgDTO dto = new SysOrgDTO(); BeanUtils.copyProperties(sysOrg,dto); dtoList.add(dto); } return new BizResult<>(dtoList); } private List getChildSys(Long parentId){ List result = Lists.newArrayList(); List dubboResult = sysOrgDao.querySysOrgByParentId(parentId); if(null == dubboResult){ dubboResult = new ArrayList<>(); } result.addAll(dubboResult); for(SysOrg sysOrg:dubboResult){ List childResult = getChildSys(sysOrg.getId()); if(CollectionUtils.isEmpty(childResult)){ continue; }else{ result.addAll(childResult); } } return result; } @Override public BizResult> pageQuerySysOrg(SysOrgPageQueryRequest request) { if(request ==null){ throw new BizException(ErrorType.PARAMM_NULL,"请求对象"); } PageInfo pageInfo = sysOrgDao.queryPageSysOrgForList(request); PageBean pageBean = new PageBean(); if(null !=pageInfo){ PageBeanUtil.copyProperties(pageInfo, pageBean, SysOrgDTO.class); } return new BizResult>(pageBean); } @Override public BizResult> querySysOrgByUserId(SysOrgQueryByOpIdRequest request) { if (CollectionUtils.isEmpty(request.getOpIds())) { throw new BizException(ErrorType.PARAMM_NULL, "操作员Id集合"); } List result = sysOpOrgDao.queryOrgIdsByOpIds(request.getOpIds(), request.getDataStatus(), request.getSysCode()); if (CollectionUtils.isEmpty(result)) { logger.info("根据操作员ID查询组织ID,未查找到对应状态的组织ID,直接返回空集合!"); return new BizResult<>(new ArrayList()); } List sysOrgs = sysOrgDao.queryBatchSysOrgById(result , request.getDataStatus(), request.getSysCode()); List dtos = new ArrayList<>(); SysOrgDTO dto; for (SysOrg org : sysOrgs) { dto = new SysOrgDTO(); BeanUtils.copyProperties(org, dto); dtos.add(dto); } return new BizResult<>(dtos); } @Override public BizResult getSysOrgById(SysOrgByIdQueryRequest request) throws Exception { if(request ==null){ throw new BizException(ErrorType.PARAMM_NULL,"请求对象"); } SysOrg sys0rg = sysOrgDao.getSysOrgById(request.getId()); SysOrgDTO orgDTO = new SysOrgDTO(); if(sys0rg != null){ BeanUtils.copyProperties(sys0rg, orgDTO); } return new BizResult(orgDTO); } @Transactional @Override public BizResult deleteOrgByIds(SysOrgByIdsDeleteRequest request) throws Exception { BeanValidatorsUtils.validateWithException(request); if(CollectionUtils.isEmpty(request.getIds())){ throw new BizException(ErrorType.PARAMM_NULL,"请求对象"); } Boolean b = sysOrgDao.deleteSysOrgByIds(request.getIds()); for (Long id : request.getIds()) { sysOrgDao.updateSysOrgSortNumOfDelete(id); } return new BizResult(b); } @Transactional @Override public BizResult saveSysOrg(SysOrgSaveRequest request) throws Exception{ BeanValidatorsUtils.validateWithException(request); request.setSysCode(request.getSysCode()); Long id = sysOrgDao.saveSysOrg(request); int oldSortNum = request.getOldSortNum().intValue(); int sortNum = request.getSortNum().intValue(); sysOrgDao.updateSysOrgSortNumOfSaveOrUpdate(id,request.getParentOrgId(),sortNum,oldSortNum); return new BizResult(id); } @Transactional @Override public BizResult updateSysOrg(SysOrgUpdateRequest request) throws Exception{ BeanValidatorsUtils.validateWithException(request); SysOrg sysOrg = new SysOrg(); BeanUtils.copyProperties(request, sysOrg); sysOrg.setModfiyEmpid(request.getEmpid()); sysOrg.setModfiyDate(new Date()); Boolean b=sysOrgDao.updateSysOrgById(sysOrg); int oldSortNum = request.getOldSortNum().intValue(); int sortNum = request.getSortNum().intValue(); sysOrgDao.updateSysOrgSortNumOfSaveOrUpdate(request.getId(),request.getParentOrgId(),sortNum,oldSortNum); return new BizResult(b); } @Override public BizResult isUsedForOrgByOrgId(SysOrgByIdQueryRequest request) { //验证参数 BeanValidatorsUtils.validateWithException(request); List orgIds = Lists.newArrayList(); orgIds.add(request.getId()); List ops =sysOrgDao.queryOpIdsByOrgId(orgIds,DataStatusEnum.DATA_STATUS_VALID.value(), request.getSysCode()); return new BizResult(!CollectionUtils.isEmpty(ops)); } @Override public BizResult> querySysOrgBySysOpId(SysOrgQueryBySysOpIDRequest sysOrgQueryBySysOpIDRequest) throws Exception { logger.info("---begin---通过操作员工ID查询对应组织,入参={}",JSONObject.toJSONString(sysOrgQueryBySysOpIDRequest)); List orgList = new ArrayList(); if(sysOrgQueryBySysOpIDRequest != null){ orgList = sysOpOrgDao.querySysOrgBySysOpId(sysOrgQueryBySysOpIDRequest.getSysOpId(), sysOrgQueryBySysOpIDRequest.getSysCode()); }else{ throw new BizException(ErrorType.PARAMM_NULL,"请求对象"); } logger.info("---end---通过操作员工ID查询对应组织,结果={}",JSONArray.toJSONString(orgList)); return new BizResult>(orgList); } @Override public BizResult> queryOpByorgIdForPage(SysOrgByIdQueryRequest request) { if(null == request.getId() || StringUtils.isEmpty(request.getSysCode())){ throw new BizException(ErrorType.PARAMM_NULL,"组织ID不能为空"); } PageInfo pageInfo = sysOrgDao.queryOpByorgIdForPage(request.getId(),request.getBaseRequest().getPageSize(),request.getBaseRequest().getPageNum(),request.getSysCode()); PageBean pageBean = new PageBean(); if(null !=pageInfo){ PageBeanUtil.copyProperties(pageInfo, pageBean, SysOpDTO.class); } return new BizResult>(pageBean); } @Override public BizResult> queryOrgByOrgLevel(OrgByOrgLevelRequest orgByOrgLevelRequest) { List list = Lists.newArrayList(); if(null == orgByOrgLevelRequest || StringUtils.isEmpty(orgByOrgLevelRequest.getOrgLevel()+"")){ throw new BizException(ErrorType.PARAMM_NULL,"组织ID不能为空"); } List sysorgList = sysOrgDao.queryOrgByOrgLevel(orgByOrgLevelRequest); ListCopyUtil.listCopyProperties(sysorgList, list, SysOrgDTO.class); return new BizResult>(list); } }