package cn.com.goldenwater.dcproj.service.impl.system; import cn.com.goldenwater.core.service.AbstractCrudService; import cn.com.goldenwater.dcproj.dao.BisInspAllRlationPersDao; import cn.com.goldenwater.dcproj.dao.RoleDao; import cn.com.goldenwater.dcproj.dao.RolePrivDao; import cn.com.goldenwater.dcproj.dto.RoleDto; import cn.com.goldenwater.dcproj.enums.SystemFlagEnum; import cn.com.goldenwater.dcproj.model.BisInspAllRlationPers; import cn.com.goldenwater.dcproj.model.Role; import cn.com.goldenwater.dcproj.param.GetRoleByUserIdParam; import cn.com.goldenwater.dcproj.param.RoleParam; import cn.com.goldenwater.dcproj.param.RolePrivParam; import cn.com.goldenwater.dcproj.service.OlBisInspOrgService; import cn.com.goldenwater.dcproj.service.RoleService; import cn.com.goldenwater.dcproj.utils.AdLevelUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.apache.commons.lang3.StringUtils; 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; import java.util.Optional; import java.util.stream.Collectors; /** * @author lune * @date 2018-2-13 */ @Service @Transactional public class RoleServiceImpl extends AbstractCrudService implements RoleService { @Autowired private RoleDao roleDao; @Autowired private RolePrivDao rolePrivDao; @Autowired private BisInspAllRlationPersDao bisInspAllRlationPersDao; public RoleServiceImpl(RoleDao roleDao) { super(roleDao); this.roleDao = roleDao; } @Autowired private OlBisInspOrgService olBisInspOrgService; @Override public PageInfo getRoleByUserId(GetRoleByUserIdParam p) throws Exception { // 获取机构编码,非水利部机构需要输入对应级地区编码(必须) String province = AdLevelUtil.getAddvcd(olBisInspOrgService.getRlProvince(p.getOrgId())); // 获取用户信息 BisInspAllRlationPers per = bisInspAllRlationPersDao.get(p.getId()); Optional.ofNullable(per).orElseThrow(() -> new Exception("此用户不存在:" + p.getId())); Optional.of(per).map(BisInspAllRlationPers::getOwnerSystem) .orElseThrow(() -> new Exception("用户所属系统不正确:" + per.getOwnerSystem())); List systemList = new ArrayList<>(2); // 判断是否是督查系统全系统 if (!SystemFlagEnum.DC_ALL.getValue().equals(per.getOwnerSystem())) { systemList.add(SystemFlagEnum.DC_ALL.getValue()); systemList.add(per.getOwnerSystem()); } // PageHelper.startPage(p.getPageNum(), p.getPageSize()); List list = roleDao.getRoleByUserId(p.getId(), systemList, p.getRoleName(), p.getOrgId(), province); List pageList = list.stream() .filter(role -> { if (StringUtils.isNotBlank(p.getPersType()) && StringUtils.isNotBlank(role.getPersType())) { return "0".equals(role.getPersType()) || role.getPersType().equals(p.getPersType()); } return true; }) .skip(p.getPageSize() * (p.getPageNum() - 1)) .limit(p.getPageSize()).collect(Collectors.toList()); PageInfo pageInfo = new PageInfo<>(pageList); pageInfo.setTotal(list.size()); return pageInfo; } @Override public List findPageDto(RoleParam roleParam) { PageHelper.startPage(roleParam.getPageNum(), roleParam.getPageSize(), false); return roleDao.findPageDto(roleParam); } @Override public PageInfo findPageInfoDto(RoleParam roleParam) { PageHelper.startPage(roleParam.getPageNum(), roleParam.getPageSize(), true); List list = roleDao.findPageDto(roleParam); return new PageInfo<>(list); } @Override public void insertRole(Role role, List list, RolePrivParam param) { roleDao.insert(role); rolePrivDao.deleteBy(param); if (null != list && list.size() > 0) { rolePrivDao.addRolePriv(list); } } @Override public void updateRole(Role role, List list, RolePrivParam param) { roleDao.update(role); rolePrivDao.deleteBy(param); if (null != list && list.size() > 0) { rolePrivDao.addRolePriv(list); } } }