提交修改

This commit is contained in:
quyixiao 2020-09-23 10:58:48 +08:00
parent 95ecea6fcc
commit b4dc5b8210
5 changed files with 184 additions and 0 deletions

View File

@ -1,11 +1,13 @@
package com.lz.modules.app.controller;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import com.lz.common.utils.PageUtils;
import com.lz.common.utils.R;
import com.lz.modules.flow.entity.FlowManager;
import com.lz.modules.flow.model.FlowDto;
import com.lz.modules.flow.service.FlowManagerService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
@ -40,6 +42,11 @@ public class FlowManagerController {
return R.ok().put("page", page);
}
@RequestMapping("/menu/list")
public List<FlowDto> menuList(){
List<FlowDto> flowDtoList = flowManagerService.getFowList();
return flowDtoList;
}
/**
* 信息

View File

@ -0,0 +1,30 @@
package com.lz.modules.flow.model;
import lombok.Data;
import java.util.List;
@Data
public class FlowDto {
private static final long serialVersionUID = 1L;
/**
* 飞书部门id
*/
private String departmentId;
/**
* 飞书上级部门id
*/
private String departmentParentId;
/**
* 飞书显示部门人数
*/
private String realName;
/**
* 组织架构名称/部门名称
*/
private String departmentName;
private List list;
}

View File

@ -0,0 +1,14 @@
package com.lz.modules.flow.model;
import com.lz.modules.app.entity.DepartmentsStaffRelateEntity;
import lombok.Data;
import java.util.List;
@Data
public class FlowInfo {
private DepartmentsStaffRelateEntity parentDepartmentRelate;
private List<DepartmentsStaffRelateEntity> list;
}

View File

@ -3,6 +3,7 @@ package com.lz.modules.flow.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lz.common.utils.PageUtils;
import com.lz.modules.flow.entity.FlowManager;
import com.lz.modules.flow.model.FlowDto;
import java.util.List;
import java.util.Map;
@ -37,4 +38,6 @@ public interface FlowManagerService extends IService<FlowManager> {
PageUtils queryPage(Map<String, Object> params);
void deleteBatchIds(List<Long> asList);
List<FlowDto> getFowList();
}

View File

@ -3,14 +3,27 @@ package com.lz.modules.flow.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lz.common.utils.NumberUtil;
import com.lz.common.utils.PageUtils;
import com.lz.modules.app.dao.DepartmentsDao;
import com.lz.modules.app.dao.StaffDao;
import com.lz.modules.app.entity.DepartmentsEntity;
import com.lz.modules.app.entity.DepartmentsStaffRelateEntity;
import com.lz.modules.app.entity.StaffEntity;
import com.lz.modules.app.service.DepartmentsStaffRelateService;
import com.lz.modules.flow.dao.FlowManagerMapper;
import com.lz.modules.flow.entity.FlowManager;
import com.lz.modules.flow.model.FlowDto;
import com.lz.modules.flow.model.FlowInfo;
import com.lz.modules.flow.service.FlowManagerService;
import com.lz.modules.flow.service.RecordRoleService;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* <p>
@ -28,6 +41,18 @@ public class FlowManagerServiceImpl extends ServiceImpl<FlowManagerMapper, FlowM
@Autowired
private FlowManagerMapper flowManagerMapper;
@Autowired
private DepartmentsDao departmentsDao;
@Autowired
private DepartmentsStaffRelateService departmentsStaffRelateService;
@Autowired
private StaffDao staffDao;
@Autowired
private RecordRoleService recordRoleService;
@Override
@ -80,5 +105,110 @@ public class FlowManagerServiceImpl extends ServiceImpl<FlowManagerMapper, FlowM
}
@Override
public List<FlowDto> getFowList() {
List<DepartmentsEntity> tDepartments = departmentsDao.selectAll();
List<DepartmentsEntity> parentDepartments = tDepartments.stream()
//根据两个属性进行过滤
.filter(s -> s.getDepartmentParentId().equals("1"))
.collect(Collectors.toList());
List<DepartmentsStaffRelateEntity> departmentsStaffRelateEntities = departmentsStaffRelateService.selectAll();
Map<String, FlowInfo> departmentsStaffRelateEntityMap = new HashMap<>();
Map<String, DepartmentsStaffRelateEntity> singleRelateMap = new HashMap<>();
for(DepartmentsStaffRelateEntity d : departmentsStaffRelateEntities){
singleRelateMap.put(d.getDepartmentId(),d);
if(new Integer(1).equals(d.getIsLeader())){
FlowInfo flowInfo = new FlowInfo();
flowInfo.setParentDepartmentRelate(d);
List<DepartmentsStaffRelateEntity> list = new ArrayList<>();
for(DepartmentsStaffRelateEntity d2 : departmentsStaffRelateEntities){
if(d2.getDepartmentId().equals(d.getDepartmentId()) && new Integer(0).equals(d2.getIsLeader())){
list.add(d2);
}
}
flowInfo.setList(list);
departmentsStaffRelateEntityMap.put(d.getDepartmentId(),flowInfo);
}
}
List<StaffEntity> staffEntities = staffDao.selectAll();
Map<Long ,StaffEntity> staffMap = new HashMap<>();
for(StaffEntity staffEntity : staffEntities){
staffMap.put(staffEntity.getId(),staffEntity);
}
List<FlowDto> list = new ArrayList<>();
for (DepartmentsEntity d : parentDepartments) {
String realName = getRealName(departmentsStaffRelateEntityMap,staffMap,d.getDepartmentId(),singleRelateMap);
FlowDto entity = buildMenuEntity(d.getDepartmentId(),d.getDepartmentName() , "1", realName);
List<FlowDto> childList = getMenuList(tDepartments, entity,departmentsStaffRelateEntityMap,staffMap,singleRelateMap);
entity.setList(childList);
list.add(entity);
}
return list;
}
public FlowDto buildMenuEntity(String departmentId, String departmentName, String parentId, String realName) {
FlowDto flowDto = new FlowDto();
flowDto.setDepartmentId(departmentId);
flowDto.setDepartmentName(departmentName);
flowDto.setDepartmentParentId(parentId);
flowDto.setRealName(realName);
return flowDto;
}
public String getRealName(Map<String, FlowInfo> departmentsStaffRelateEntityMap, Map<Long, StaffEntity> staffMap, String departmentId
, Map<String, DepartmentsStaffRelateEntity> singleRelateMap) {
FlowInfo flowInfo = departmentsStaffRelateEntityMap.get(departmentId);
if (flowInfo != null) {
return doGetRealName(flowInfo.getParentDepartmentRelate(), staffMap);
} else {
return doGetRealName(singleRelateMap.get(departmentId), staffMap);
}
}
public String doGetRealName(DepartmentsStaffRelateEntity departmentsStaffRelateEntity, Map<Long, StaffEntity> staffMap) {
if (departmentsStaffRelateEntity != null) {
StaffEntity staffEntity = staffMap.get(departmentsStaffRelateEntity.getStaffId());
if (staffEntity != null) {
return staffEntity.getName();
}
}
return "";
}
public List<FlowDto> getMenuList(List<DepartmentsEntity> tDepartments,FlowDto flowDto,
Map<String,FlowInfo> departmentsStaffRelateEntityMap, Map<Long ,StaffEntity> staffMap
,Map<String, DepartmentsStaffRelateEntity> singleRelateMap) {
List<FlowDto> flowDtos = new ArrayList<>();
for(DepartmentsEntity child : tDepartments) {
if (child.getDepartmentParentId().equals(flowDto.getDepartmentId())) {
FlowDto entity = buildMenuEntity(child.getDepartmentId(),
child.getDepartmentName(), flowDto.getDepartmentId(),
getRealName(departmentsStaffRelateEntityMap, staffMap, child.getDepartmentId(),singleRelateMap));
List<FlowDto> list = getMenuList(tDepartments, entity, departmentsStaffRelateEntityMap, staffMap,singleRelateMap);
if (CollectionUtils.isEmpty(list) || list.size() == 0) {
FlowInfo flowInfo = departmentsStaffRelateEntityMap.get(child.getDepartmentId());
if (flowInfo != null && CollectionUtils.isNotEmpty(flowInfo.getList()) && flowInfo.getList().size() > 0) {
list = new ArrayList<>();
for (DepartmentsStaffRelateEntity dr : flowInfo.getList()) {
StaffEntity staffEntity = staffMap.get(dr.getStaffId());
FlowDto childEntiry = buildMenuEntity(dr.getDepartmentId() + "_" + dr.getStaffId(),
staffEntity != null ? staffEntity.getName() : "",
entity.getDepartmentId(),
"");
list.add(childEntiry);
}
}
}
entity.setList(list);
flowDtos.add(entity);
}
}
return flowDtos;
}
}