diff --git a/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java b/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java index efc17fcc5..15702d216 100644 --- a/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java +++ b/src/com/engine/salary/entity/datacollection/DataCollectionEmployee.java @@ -6,6 +6,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.List; import java.util.Map; /** @@ -112,6 +113,11 @@ public class DataCollectionEmployee { //是否外部人员 private boolean extEmp; + // 直接上级id + private Long managerId; + + private List children; + /** * 扩展数据 */ diff --git a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml index 2f6f5010c..1cff796fe 100644 --- a/src/com/engine/salary/mapper/datacollection/EmployMapper.xml +++ b/src/com/engine/salary/mapper/datacollection/EmployMapper.xml @@ -235,7 +235,8 @@ e.subcompanyid1 as subcompanyid, e.departmentid as departmentId, d.DEPARTMENTNAME as departmentName, - e.jobtitle as jobtitleId + e.jobtitle as jobtitleId, + e.managerid as managerid from hrmresource e left join hrmdepartment d on e.departmentid = d.id where e.status not in (7) diff --git a/src/com/engine/salary/service/SalaryEmployeeService.java b/src/com/engine/salary/service/SalaryEmployeeService.java index 7b3a744fd..78de8bb36 100644 --- a/src/com/engine/salary/service/SalaryEmployeeService.java +++ b/src/com/engine/salary/service/SalaryEmployeeService.java @@ -131,4 +131,6 @@ public interface SalaryEmployeeService { * @return */ List listByManagerId(Long managerId); + + List listEmployeeTreeByManagerId(Long managerId); } diff --git a/src/com/engine/salary/service/SalarySendService.java b/src/com/engine/salary/service/SalarySendService.java index 97f66cbea..fe265a8a3 100644 --- a/src/com/engine/salary/service/SalarySendService.java +++ b/src/com/engine/salary/service/SalarySendService.java @@ -224,4 +224,6 @@ public interface SalarySendService { * @return */ List listJunior(Long uid); + + List listJuniorTree(Long uid); } diff --git a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java index 6bb9ff16c..75d7969c1 100644 --- a/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryEmployeeServiceImpl.java @@ -424,4 +424,18 @@ public class SalaryEmployeeServiceImpl extends Service implements SalaryEmployee List employeeList = employBiz.listByManagerId(managerId); return employeeList.stream().filter(emp -> Arrays.stream(emp.getManagerstr().split(",")).collect(Collectors.toList()).contains(managerId.toString())).collect(Collectors.toList()); } + + @Override + public List listEmployeeTreeByManagerId(Long managerId) { + List allEmployees = employBiz.listAll(); + List collect = allEmployees.stream().filter(employee -> employee.getEmployeeId().equals(managerId)) + .peek(employee -> employee.setChildren(getChildren(employee, allEmployees))).collect(Collectors.toList()); + return collect; + } + + List getChildren(DataCollectionEmployee root, List all) { + return all.stream().filter(employee -> root.getEmployeeId().equals(employee.getManagerId())).peek(employee -> { + employee.setChildren(getChildren(employee, all)); + }).collect(Collectors.toList()); + } } diff --git a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java index 78db2ce99..8a9aa4976 100644 --- a/src/com/engine/salary/service/impl/SalarySendServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalarySendServiceImpl.java @@ -1736,4 +1736,13 @@ public class SalarySendServiceImpl extends Service implements SalarySendService List employees = getSalaryEmployeeService(user).listByManagerId(managerId); return employees; } + + @Override + public List listJuniorTree(Long managerId) { + if (ObjectUtils.isEmpty(managerId)) { + return Collections.emptyList(); + } + List employees = getSalaryEmployeeService(user).listEmployeeTreeByManagerId(managerId); + return employees; + } } diff --git a/src/com/engine/salary/web/SalaryBillController.java b/src/com/engine/salary/web/SalaryBillController.java index 0eaa50da1..e63963dfc 100644 --- a/src/com/engine/salary/web/SalaryBillController.java +++ b/src/com/engine/salary/web/SalaryBillController.java @@ -1,6 +1,7 @@ package com.engine.salary.web; import com.engine.common.util.ServiceUtil; +import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.salaryBill.dto.*; import com.engine.salary.entity.salaryBill.param.*; import com.engine.salary.enums.salarybill.SalarySendStatusEnum; @@ -598,6 +599,14 @@ public class SalaryBillController { return new ResponseResult>(user).run(getSalarySendWrapper(user)::myJuniorMap, Long.valueOf(user.getUID())); } + @GET + @Path("/myJuniorTree") + @Produces(MediaType.APPLICATION_JSON) + public String myJuniorTree(@Context HttpServletRequest request, @Context HttpServletResponse response) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult>(user).run(getSalarySendWrapper(user)::myJuniorTree, Long.valueOf(user.getUID())); + } + /** * 我的工资单列表 * diff --git a/src/com/engine/salary/wrapper/SalarySendWrapper.java b/src/com/engine/salary/wrapper/SalarySendWrapper.java index 44b2a17d4..c1d1cb7af 100644 --- a/src/com/engine/salary/wrapper/SalarySendWrapper.java +++ b/src/com/engine/salary/wrapper/SalarySendWrapper.java @@ -725,4 +725,8 @@ public class SalarySendWrapper extends Service implements SalarySendWrapperProxy List employeeList = getSalarySendService(user).listJunior(managerId); return SalaryEntityUtil.convert2Map(employeeList, DataCollectionEmployee::getEmployeeId, DataCollectionEmployee::getUsername); } + + public List myJuniorTree(Long managerId) { + return getSalarySendService(user).listJuniorTree(managerId); + } }