package org.jeecg.modules.base.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.jeecg.common.system.vo.SelectTreeModel; import org.jeecg.modules.base.entity.WorkCenterUser; import org.jeecg.modules.base.mapper.WorkCenterUserMapper; import org.jeecg.modules.base.service.IWorkCenterUserService; import org.jeecg.modules.system.entity.SysDepart; import org.jeecg.modules.system.mapper.SysDepartMapper; import org.jeecg.modules.system.mapper.SysUserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import java.util.*; import java.util.stream.Collectors; /** * @Description: mom_base_work_center_user * @Author: jeecg-boot * @Date: 2022-12-06 * @Version: V1.0 */ @Service public class WorkCenterUserServiceImpl extends ServiceImpl implements IWorkCenterUserService { @Autowired private WorkCenterUserMapper workCenterUserMapper; @Autowired private SysDepartMapper sysDepartMapper; @Override public Page> listByWorkCenterId(Page> page, String workCenterId) { return page.setRecords(workCenterUserMapper.listByWorkCenterId(page,workCenterId)); } @Override public Page> getAddUserList(Page> page, String departId, List userIdList) { return page.setRecords(workCenterUserMapper.getAddUserList(page,departId,userIdList)); } @Override public Page> getUserList(Page> page, List userIdList, String departId) { return page.setRecords(workCenterUserMapper.getUserList(page,userIdList,departId)); } @Override public List getDepartTreeByEnterpriseId(String enterpriseId, String departId,Integer version) { return loadDepartTreeByParentId(enterpriseId,departId,version); } @Override public Page> listByEnterpriseId(Page> page, String enterpriseId, List userIdList,String departId) { Set departIds = getDepartIds(departId); departIds.add(departId); return page.setRecords(workCenterUserMapper.listByEnterpriseId(page,enterpriseId,userIdList,departIds.stream().collect(Collectors.toList()))); } public List loadDepartTreeByParentId(String parentId,String departId,Integer version){ List list = workCenterUserMapper.getAddDepartTree(parentId,departId,version); if(list.size()!=0){ for(SelectTreeModel selectTreeModel:list){ selectTreeModel.setChildren(loadDepartTreeByParentId(selectTreeModel.getKey(),departId,version)); } } return list; } public Set getDepartIds(String parentId){ Set departIds = new HashSet<>(); List child = sysDepartMapper.selectList( new QueryWrapper() .eq("parent_id",parentId) .eq("del_flag",0) ).stream().map(SysDepart::getId).collect(Collectors.toList()); if(CollectionUtils.isNotEmpty(child)){ child.forEach(id->{ departIds.add(id); departIds.addAll(getDepartIds(id)); }); } return departIds; } }