|
|
@ -30,10 +30,7 @@ import com.epmet.constant.CustomerAgencyConstant; |
|
|
|
import com.epmet.constant.CustomerGridConstant; |
|
|
|
import com.epmet.dao.*; |
|
|
|
import com.epmet.dto.*; |
|
|
|
import com.epmet.dto.form.AgencyDeptGridFormDTO; |
|
|
|
import com.epmet.dto.form.CanTickStaffListFormDTO; |
|
|
|
import com.epmet.dto.form.CustomerFormDTO; |
|
|
|
import com.epmet.dto.form.StaffOrgFormDTO; |
|
|
|
import com.epmet.dto.form.*; |
|
|
|
import com.epmet.dto.result.*; |
|
|
|
import com.epmet.entity.CustomerAgencyEntity; |
|
|
|
import com.epmet.entity.CustomerGridEntity; |
|
|
@ -49,6 +46,7 @@ import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
import java.util.*; |
|
|
|
import java.util.concurrent.atomic.AtomicBoolean; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
/** |
|
|
@ -183,17 +181,14 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl<CustomerAgencyDao |
|
|
|
* @return |
|
|
|
* @Author sun |
|
|
|
* @Description 查询组织下人员,组织下部门人员,组织下网格人员列表信息 |
|
|
|
* 查询该组织下所有人员,在部门或网格下存在的人员不在组织下展示 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
public DepartmentStaffListResultDTO departmentStaffList(CanTickStaffListFormDTO canTick) { |
|
|
|
//根据组织Id查询该组织的工作人员列表;该组织的部门列表、部门下人员(带部门领导角色)列表;该组织的网格列表、网格下人员(带网格长角色)列表。人员都不做去重处理。
|
|
|
|
//根据组织Id查询该组织的工作人员(带单位领导角色)列表;该组织的部门列表、部门下人员(带部门领导角色)列表;该组织的网格列表、网格下人员(带网格长角色)列表。人员都不做去重处理。
|
|
|
|
DepartmentStaffListResultDTO resultDTO = new DepartmentStaffListResultDTO(); |
|
|
|
//1:根据组织Id查询该组织下工作人员列表(如果当前操作人是组织下的则不查询)
|
|
|
|
String staffId = ""; |
|
|
|
if ("project".equals(canTick.getType()) && "".equals(canTick.getDeptOrGridId())) { |
|
|
|
staffId = canTick.getStaffId(); |
|
|
|
} |
|
|
|
List<StaffListResultDTO> agencyStaffList = customerStaffAgencyDao.selectAgencyStaffList(canTick.getAgencyId(),staffId); |
|
|
|
//1:根据组织Id查询该组织下工作人员列表
|
|
|
|
List<StaffListResultDTO> agencyStaffList = customerStaffAgencyDao.selectAgencyStaffList(canTick.getAgencyId()); |
|
|
|
//2:根据组织Id查询该组织下部门、人员列表
|
|
|
|
//2.1:查询组织下部门列表
|
|
|
|
List<DepartmentListResultDTO> listDept = customerDepartmentDao.selectDepartmentList(canTick.getAgencyId()); |
|
|
@ -208,12 +203,10 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl<CustomerAgencyDao |
|
|
|
List<StaffListResultDTO> departmentStaffList = new ArrayList<>(); |
|
|
|
finalDeptStaffs.forEach(ds->{ |
|
|
|
if (dept.getDepartmentId().equals(ds.getDepartmentId())) { |
|
|
|
if (!"project".equals(canTick.getType()) || "".equals(canTick.getDeptOrGridId()) || !dept.getDepartmentId().equals(canTick.getDeptOrGridId())) { |
|
|
|
StaffListResultDTO sf = new StaffListResultDTO(); |
|
|
|
sf.setStaffId(ds.getUserId()); |
|
|
|
departmentStaffList.add(sf); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
dept.setDepartmentStaffList(departmentStaffList); |
|
|
|
}); |
|
|
@ -231,12 +224,10 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl<CustomerAgencyDao |
|
|
|
List<StaffListResultDTO> gridStaffList = new ArrayList<>(); |
|
|
|
finalGridStaffs.forEach(gs->{ |
|
|
|
if(grid.getGridId().equals(gs.getGridId())){ |
|
|
|
if (!"project".equals(canTick.getType()) || "".equals(canTick.getDeptOrGridId()) || !grid.getGridId().equals(canTick.getDeptOrGridId())) { |
|
|
|
StaffListResultDTO sf = new StaffListResultDTO(); |
|
|
|
sf.setStaffId(gs.getUserId()); |
|
|
|
gridStaffList.add(sf); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
grid.setGridStaffList(gridStaffList); |
|
|
|
}); |
|
|
@ -284,71 +275,256 @@ public class CustomerAgencyServiceImpl extends BaseServiceImpl<CustomerAgencyDao |
|
|
|
} |
|
|
|
} |
|
|
|
//5.1装载组织下人员数据
|
|
|
|
for(StaffListResultDTO sf : agencyStaffList){ |
|
|
|
agencyStaffList.forEach(sf->{ |
|
|
|
//人员信息
|
|
|
|
for(StaffListResultDTO stf : staffList){ |
|
|
|
staffList.forEach(stf->{ |
|
|
|
if(sf.getStaffId().equals(stf.getStaffId())){ |
|
|
|
//sf = ConvertUtils.sourceToTarget(stf, StaffListResultDTO.class);
|
|
|
|
sf.setStaffName(stf.getStaffName()); |
|
|
|
sf.setStaffHeadPhoto(stf.getStaffHeadPhoto()); |
|
|
|
sf.setGender(stf.getGender()); |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
//人员角色信息
|
|
|
|
for(CustomerStaffRoleResultDTO role : roleList){ |
|
|
|
roleList.forEach(role->{ |
|
|
|
if(sf.getStaffId().equals(role.getStaffId())&&CustomerAgencyConstant.AGENCY_LEADER.equals(role.getRoleKey())){ |
|
|
|
sf.setRoleName(role.getRoleName()); |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
//5.2装载组织下部门下人员数据
|
|
|
|
for(DeptListResultDTO dept : departmentList){ |
|
|
|
departmentList.forEach(dept->{ |
|
|
|
List<StaffListResultDTO> departmentStaffList = dept.getDepartmentStaffList(); |
|
|
|
for(StaffListResultDTO ds : departmentStaffList){ |
|
|
|
departmentStaffList.forEach(ds->{ |
|
|
|
//人员信息
|
|
|
|
for(StaffListResultDTO stf : staffList){ |
|
|
|
staffList.forEach(stf->{ |
|
|
|
if(ds.getStaffId().equals(stf.getStaffId())){ |
|
|
|
//ds = ConvertUtils.sourceToTarget(stf, StaffListResultDTO.class);
|
|
|
|
ds.setStaffName(stf.getStaffName()); |
|
|
|
ds.setStaffHeadPhoto(stf.getStaffHeadPhoto()); |
|
|
|
ds.setGender(stf.getGender()); |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
//人员角色信息
|
|
|
|
for(CustomerStaffRoleResultDTO role : roleList){ |
|
|
|
roleList.forEach(role->{ |
|
|
|
if(ds.getStaffId().equals(role.getStaffId())&&CustomerAgencyConstant.DEPT_LEADER.equals(role.getRoleKey())){ |
|
|
|
ds.setRoleName(role.getRoleName()); |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
}); |
|
|
|
//5.3装载组织下网格下人员数据
|
|
|
|
for(GridListResultDTO grid : gridList){ |
|
|
|
gridList.forEach(grid->{ |
|
|
|
List<StaffListResultDTO> gridStaffList = grid.getGridStaffList(); |
|
|
|
for(StaffListResultDTO gs : gridStaffList){ |
|
|
|
gridStaffList.forEach(gs->{ |
|
|
|
//人员信息
|
|
|
|
for(StaffListResultDTO stf : staffList){ |
|
|
|
staffList.forEach(stf->{ |
|
|
|
if(gs.getStaffId().equals(stf.getStaffId())){ |
|
|
|
//gs = ConvertUtils.sourceToTarget(stf, StaffListResultDTO.class);
|
|
|
|
gs.setStaffName(stf.getStaffName()); |
|
|
|
gs.setStaffHeadPhoto(stf.getStaffHeadPhoto()); |
|
|
|
gs.setGender(stf.getGender()); |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
//人员角色信息
|
|
|
|
for(CustomerStaffRoleResultDTO role : roleList){ |
|
|
|
roleList.forEach(role->{ |
|
|
|
if(gs.getStaffId().equals(role.getStaffId())&&CustomerAgencyConstant.GRID_MANAGER.equals(role.getRoleKey())){ |
|
|
|
gs.setRoleName(role.getRoleName()); |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
}); |
|
|
|
resultDTO.setAgencyStaffList(agencyStaffList); |
|
|
|
resultDTO.setDepartmentList(departmentList); |
|
|
|
resultDTO.setGridList(gridList); |
|
|
|
return resultDTO; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param canTick |
|
|
|
* @return |
|
|
|
* @Author sun |
|
|
|
* @Description 项目流转-查询组织下,组织下部门,组织下网格对应的可选人员列表 |
|
|
|
* 查询该组织下所有人员,已经在项目节点中且工作是未处理的人员不查询,在部门或网格下的人员不在组织下展示 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
public DepartmentStaffListResultDTO transferOptionalStaffList(TransferOptionalStaffListFormDTO canTick) { |
|
|
|
//根据组织Id查询该组织的工作人员(带单位领导角色)列表;该组织的部门列表、部门下人员(带部门领导角色)列表;该组织的网格列表、网格下人员(带网格长角色)列表。去除已经在节点上的工作人员。
|
|
|
|
DepartmentStaffListResultDTO resultDTO = new DepartmentStaffListResultDTO(); |
|
|
|
List<ProjectStaffDTO> projectStaffList = canTick.getProjectStaffList(); |
|
|
|
//1:根据组织Id查询该组织下工作人员列表(去除组织下已经在项目节点上的人员)
|
|
|
|
List<StaffListResultDTO> agencyAllStaffList = customerStaffAgencyDao.selectAgencyStaffList(canTick.getAgencyId()); |
|
|
|
List<StaffListResultDTO> agencyStaffList = new ArrayList<>(); |
|
|
|
//1.1:去除组织下已在项目节点上的人员
|
|
|
|
if (null != agencyAllStaffList && agencyAllStaffList.size() > NumConstant.ZERO) { |
|
|
|
for(StaffListResultDTO ag : agencyAllStaffList){ |
|
|
|
boolean bl = true; |
|
|
|
for(ProjectStaffDTO dto : projectStaffList){ |
|
|
|
if(ag.getStaffId().equals(dto.getStaffId())&&!StringUtils.isNotBlank(dto.getDepartmentId())&&!StringUtils.isNotBlank(dto.getGridId())){ |
|
|
|
bl = false; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
if(bl){ agencyStaffList.add(ag);} |
|
|
|
} |
|
|
|
} |
|
|
|
//2:根据组织Id查询该组织下部门、人员列表
|
|
|
|
//2.1:查询组织下部门列表
|
|
|
|
List<DepartmentListResultDTO> listDept = customerDepartmentDao.selectDepartmentList(canTick.getAgencyId()); |
|
|
|
List<DeptListResultDTO> departmentList = ConvertUtils.sourceToTarget(listDept, DeptListResultDTO.class); |
|
|
|
List<CustomerStaffDepartmentDTO> deptStaffs = new ArrayList<>(); |
|
|
|
if (null != departmentList && departmentList.size() > NumConstant.ZERO) { |
|
|
|
//2.2:查询所有部门下所有人员列表并将人员分配到所属的部门下
|
|
|
|
List<String> deptIdList = departmentList.stream().map(DeptListResultDTO::getDepartmentId).collect(Collectors.toList()); |
|
|
|
deptStaffs = customerStaffDepartmentDao.selectDeptStaffs(deptIdList); |
|
|
|
List<CustomerStaffDepartmentDTO> finalDeptStaffs = deptStaffs; |
|
|
|
departmentList.forEach(dept->{ |
|
|
|
List<StaffListResultDTO> departmentStaffList = new ArrayList<>(); |
|
|
|
finalDeptStaffs.forEach(ds->{ |
|
|
|
if (dept.getDepartmentId().equals(ds.getDepartmentId())) { |
|
|
|
//去除每个部门下已经在项目流程中的人员
|
|
|
|
AtomicBoolean bl = new AtomicBoolean(true); |
|
|
|
projectStaffList.forEach(node->{ |
|
|
|
if(dept.getDepartmentId().equals(node.getDepartmentId())&&ds.getUserId().equals(node.getStaffId())&&StringUtils.isNotBlank(node.getDepartmentId())&&!StringUtils.isNotBlank(node.getGridId())){ |
|
|
|
bl.set(false); |
|
|
|
} |
|
|
|
}); |
|
|
|
if (bl.get()) { |
|
|
|
StaffListResultDTO sf = new StaffListResultDTO(); |
|
|
|
sf.setStaffId(ds.getUserId()); |
|
|
|
departmentStaffList.add(sf); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
dept.setDepartmentStaffList(departmentStaffList); |
|
|
|
}); |
|
|
|
} |
|
|
|
//3:根据组织Id查询该组织下网格、人员列表
|
|
|
|
//3.1:查询组织下网格列表
|
|
|
|
List<GridListResultDTO> gridList = customerGridDao.selectGridList(canTick.getAgencyId()); |
|
|
|
List<CustomerStaffGridDTO> gridStaffs = new ArrayList<>(); |
|
|
|
if (null != gridList && gridList.size() > NumConstant.ZERO) { |
|
|
|
//3.2:查询每一个网格下人员列表
|
|
|
|
List<String> gridIdList = gridList.stream().map(GridListResultDTO::getGridId).collect(Collectors.toList()); |
|
|
|
gridStaffs = customerStaffGridDao.selectGridStaffs(gridIdList); |
|
|
|
List<CustomerStaffGridDTO> finalGridStaffs = gridStaffs; |
|
|
|
gridList.forEach(grid->{ |
|
|
|
List<StaffListResultDTO> gridStaffList = new ArrayList<>(); |
|
|
|
finalGridStaffs.forEach(gs->{ |
|
|
|
if(grid.getGridId().equals(gs.getGridId())){ |
|
|
|
//去除每个网格下已经在项目流程中的人员
|
|
|
|
AtomicBoolean bl = new AtomicBoolean(true); |
|
|
|
projectStaffList.forEach(node->{ |
|
|
|
if(grid.getGridId().equals(node.getGridId())&&gs.getUserId().equals(node.getStaffId())&&!StringUtils.isNotBlank(node.getDepartmentId())&&StringUtils.isNotBlank(node.getGridId())){ |
|
|
|
bl.set(false); |
|
|
|
} |
|
|
|
}); |
|
|
|
if (bl.get()) { |
|
|
|
StaffListResultDTO sf = new StaffListResultDTO(); |
|
|
|
sf.setStaffId(gs.getUserId()); |
|
|
|
gridStaffList.add(sf); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
grid.setGridStaffList(gridStaffList); |
|
|
|
}); |
|
|
|
} |
|
|
|
//4:汇总组织下、组织下部门下、组织下网格下人员Id集合,调用epmet-user服务查询工作人员基本信息
|
|
|
|
List<String> staffIdList1 = agencyStaffList.stream().map(StaffListResultDTO::getStaffId).collect(Collectors.toList()); |
|
|
|
List<String> staffIdList2 = deptStaffs.stream().map(CustomerStaffDepartmentDTO::getUserId).collect(Collectors.toList()); |
|
|
|
List<String> staffIdList3 = gridStaffs.stream().map(CustomerStaffGridDTO::getUserId).collect(Collectors.toList()); |
|
|
|
List<String> staffIdList = new ArrayList<>(); |
|
|
|
staffIdList.addAll(staffIdList1); staffIdList.addAll(staffIdList2); staffIdList.addAll(staffIdList3); |
|
|
|
staffIdList = new ArrayList<String>(new LinkedHashSet<>(staffIdList));staffIdList.removeAll(Collections.singleton("")); |
|
|
|
CustomerStaffListResultDTO dto = new CustomerStaffListResultDTO(); |
|
|
|
if (null != staffIdList || staffIdList.size() > NumConstant.ZERO) { |
|
|
|
Result<CustomerStaffListResultDTO> userList = epmetUserFeignClient.getCustomerStaffList(staffIdList); |
|
|
|
if (!userList.success() || null == userList.getData()) { |
|
|
|
throw new RenException(CustomerAgencyConstant.SELECT_USER_EXCEPTION); |
|
|
|
} |
|
|
|
dto = userList.getData(); |
|
|
|
} |
|
|
|
//5:循环数据,将人员数据放到对应数据结构下
|
|
|
|
List<StaffListResultDTO> staffList = dto.getStaffList(); |
|
|
|
List<CustomerStaffRoleResultDTO> roleList = dto.getRoleList(); |
|
|
|
//有时间再优化成jdk8的遍历方式
|
|
|
|
//5.0:先把在部门或网格下存在的人员在组织中去掉,组织中只展示在部门、网格下不存在的人员
|
|
|
|
//部门
|
|
|
|
Iterator<StaffListResultDTO> itDept = agencyStaffList.iterator(); |
|
|
|
while (itDept.hasNext()) { |
|
|
|
StaffListResultDTO stf = itDept.next(); |
|
|
|
for (CustomerStaffDepartmentDTO dept : deptStaffs) { |
|
|
|
if (dept.getUserId().equals(stf.getStaffId())) { |
|
|
|
itDept.remove(); |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
//网格
|
|
|
|
Iterator<StaffListResultDTO> itGrid = agencyStaffList.iterator(); |
|
|
|
while (itGrid.hasNext()) { |
|
|
|
StaffListResultDTO stf = itGrid.next(); |
|
|
|
for (CustomerStaffGridDTO grid : gridStaffs) { |
|
|
|
if (grid.getUserId().equals(stf.getStaffId())) { |
|
|
|
itGrid.remove(); |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
//5.1装载组织下人员数据
|
|
|
|
agencyStaffList.forEach(sf->{ |
|
|
|
//人员信息
|
|
|
|
staffList.forEach(stf->{ |
|
|
|
if(sf.getStaffId().equals(stf.getStaffId())){ |
|
|
|
sf.setStaffName(stf.getStaffName()); |
|
|
|
sf.setStaffHeadPhoto(stf.getStaffHeadPhoto()); |
|
|
|
sf.setGender(stf.getGender()); |
|
|
|
} |
|
|
|
}); |
|
|
|
//人员角色信息
|
|
|
|
roleList.forEach(role->{ |
|
|
|
if(sf.getStaffId().equals(role.getStaffId())&&CustomerAgencyConstant.AGENCY_LEADER.equals(role.getRoleKey())){ |
|
|
|
sf.setRoleName(role.getRoleName()); |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
//5.2装载组织下部门下人员数据
|
|
|
|
departmentList.forEach(dept->{ |
|
|
|
List<StaffListResultDTO> departmentStaffList = dept.getDepartmentStaffList(); |
|
|
|
departmentStaffList.forEach(ds->{ |
|
|
|
//人员信息
|
|
|
|
staffList.forEach(stf->{ |
|
|
|
if(ds.getStaffId().equals(stf.getStaffId())){ |
|
|
|
ds.setStaffName(stf.getStaffName()); |
|
|
|
ds.setStaffHeadPhoto(stf.getStaffHeadPhoto()); |
|
|
|
ds.setGender(stf.getGender()); |
|
|
|
} |
|
|
|
}); |
|
|
|
//人员角色信息
|
|
|
|
roleList.forEach(role->{ |
|
|
|
if(ds.getStaffId().equals(role.getStaffId())&&CustomerAgencyConstant.DEPT_LEADER.equals(role.getRoleKey())){ |
|
|
|
ds.setRoleName(role.getRoleName()); |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
}); |
|
|
|
//5.3装载组织下网格下人员数据
|
|
|
|
gridList.forEach(grid->{ |
|
|
|
List<StaffListResultDTO> gridStaffList = grid.getGridStaffList(); |
|
|
|
gridStaffList.forEach(gs->{ |
|
|
|
//人员信息
|
|
|
|
staffList.forEach(stf->{ |
|
|
|
if(gs.getStaffId().equals(stf.getStaffId())){ |
|
|
|
gs.setStaffName(stf.getStaffName()); |
|
|
|
gs.setStaffHeadPhoto(stf.getStaffHeadPhoto()); |
|
|
|
gs.setGender(stf.getGender()); |
|
|
|
} |
|
|
|
}); |
|
|
|
//人员角色信息
|
|
|
|
roleList.forEach(role->{ |
|
|
|
if(gs.getStaffId().equals(role.getStaffId())&&CustomerAgencyConstant.GRID_MANAGER.equals(role.getRoleKey())){ |
|
|
|
gs.setRoleName(role.getRoleName()); |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
}); |
|
|
|
resultDTO.setAgencyStaffList(agencyStaffList); |
|
|
|
resultDTO.setDepartmentList(departmentList); |
|
|
|
resultDTO.setGridList(gridList); |
|
|
|