From 634f2d6b09acbab6cec6090f6b9b3068a4347e04 Mon Sep 17 00:00:00 2001 From: Chengliang <1546584672@qq.com> Date: Fri, 20 May 2022 15:00:03 +0800 Subject: [PATCH] =?UTF-8?q?=E8=81=94=E6=9F=A5=E9=83=A8=E9=97=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/DepartmentController.java | 13 ++++ .../entity/department/bo/DepartmentBO.java | 77 +++++++++++++++++++ .../param/QuerySingleDeptListParam.java | 23 ++++++ .../entity/department/po/DepartmentPO.java | 49 ++++++++++++ .../department/vo/SingleDeptTreeVO.java | 43 +++++++++++ .../entity/employee/Employee.java | 28 +++++++ .../mapper/department/DepartmentMapper.java | 21 +++++ .../mapper/department/DepartmentMapper.xml | 27 +++++++ .../mapper/employee/EmployeeMapper.java | 17 ++++ .../mapper/employee/EmployeeMapper.xml | 11 +++ .../service/DepartmentService.java | 22 ++++++ .../service/impl/DepartmentServiceImpl.java | 39 ++++++++++ .../web/DepartmentController.java | 44 +++++++++++ .../wrapper/DepartmentWrapper.java | 29 +++++++ 14 files changed, 443 insertions(+) create mode 100644 src/com/api/organization/web/DepartmentController.java create mode 100644 src/com/engine/organization/entity/department/bo/DepartmentBO.java create mode 100644 src/com/engine/organization/entity/department/param/QuerySingleDeptListParam.java create mode 100644 src/com/engine/organization/entity/department/po/DepartmentPO.java create mode 100644 src/com/engine/organization/entity/department/vo/SingleDeptTreeVO.java create mode 100644 src/com/engine/organization/entity/employee/Employee.java create mode 100644 src/com/engine/organization/mapper/department/DepartmentMapper.java create mode 100644 src/com/engine/organization/mapper/department/DepartmentMapper.xml create mode 100644 src/com/engine/organization/mapper/employee/EmployeeMapper.java create mode 100644 src/com/engine/organization/mapper/employee/EmployeeMapper.xml create mode 100644 src/com/engine/organization/service/DepartmentService.java create mode 100644 src/com/engine/organization/service/impl/DepartmentServiceImpl.java create mode 100644 src/com/engine/organization/web/DepartmentController.java create mode 100644 src/com/engine/organization/wrapper/DepartmentWrapper.java diff --git a/src/com/api/organization/web/DepartmentController.java b/src/com/api/organization/web/DepartmentController.java new file mode 100644 index 00000000..b79f621a --- /dev/null +++ b/src/com/api/organization/web/DepartmentController.java @@ -0,0 +1,13 @@ +package com.api.organization.web; + +import javax.ws.rs.Path; + +/** + * @Author weaver_cl + * @Description: TODO + * @Date 2022/5/20 + * @Version V1.0 + **/ +@Path("/bs/hrmorganization/dept") +public class DepartmentController extends com.engine.organization.web.DepartmentController { +} diff --git a/src/com/engine/organization/entity/department/bo/DepartmentBO.java b/src/com/engine/organization/entity/department/bo/DepartmentBO.java new file mode 100644 index 00000000..da7bae34 --- /dev/null +++ b/src/com/engine/organization/entity/department/bo/DepartmentBO.java @@ -0,0 +1,77 @@ +package com.engine.organization.entity.department.bo; + +import com.engine.organization.entity.department.po.DepartmentPO; +import com.engine.organization.entity.department.vo.SingleDeptTreeVO; +import com.engine.organization.mapper.department.DepartmentMapper; +import com.engine.organization.mapper.employee.EmployeeMapper; +import com.engine.organization.util.db.MapperProxyFactory; +import org.apache.commons.collections.CollectionUtils; + +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @Author weaver_cl + * @Description: TODO + * @Date 2022/5/20 + * @Version V1.0 + **/ +public class DepartmentBO { + + public static List buildSingleDeptTreeVOS(List departmentPOs) { + + if (CollectionUtils.isEmpty(departmentPOs)) { + return Collections.emptyList(); + } + + + List singleDeptTreeVOS = departmentPOs.stream().map(e -> SingleDeptTreeVO.builder() + .id(e.getId()) + .deptName(e.getDeptName()) + .parentDeptName(getDeptNameById(e.getParentDept())) + .deptPrincipalName(getEmployeeNameById((long) e.getDeptPrincipal())) + .children(recursiveData(e.getId())) + .build() + ).collect(Collectors.toList()); + + return singleDeptTreeVOS; + + } + + + public static String getDeptNameById(int id) { + return MapperProxyFactory.getProxy(DepartmentMapper.class).getDeptNameById(id); + } + + public static String getEmployeeNameById(Long id) { + return MapperProxyFactory.getProxy(EmployeeMapper.class).getEmployeeNameById(id); + } + + + /** + * 递归获取 + * @param parentDeptId + * @return + */ + public static List recursiveData(long parentDeptId) { + List departmentPOS = MapperProxyFactory.getProxy(DepartmentMapper.class).getDeptListByPId(parentDeptId); + if (CollectionUtils.isEmpty(departmentPOS)) { + return Collections.emptyList(); + } + + List singleDeptTreeVOS = departmentPOS.stream().map(e -> SingleDeptTreeVO.builder() + .id(e.getId()) + .deptName(e.getDeptName()) + .parentDeptName(getDeptNameById(e.getParentDept())) + .deptPrincipalName(getEmployeeNameById((long) e.getDeptPrincipal())) + .children(recursiveData(e.getId())) + .build() + ).collect(Collectors.toList()); + + return singleDeptTreeVOS; + } + + + +} diff --git a/src/com/engine/organization/entity/department/param/QuerySingleDeptListParam.java b/src/com/engine/organization/entity/department/param/QuerySingleDeptListParam.java new file mode 100644 index 00000000..a0dd33d0 --- /dev/null +++ b/src/com/engine/organization/entity/department/param/QuerySingleDeptListParam.java @@ -0,0 +1,23 @@ +package com.engine.organization.entity.department.param; + +import com.engine.organization.common.BaseQueryParam; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author weaver_cl + * @Description: TODO + * @Date 2022/5/20 + * @Version V1.0 + **/ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class QuerySingleDeptListParam extends BaseQueryParam { + + private int parentComp; + +} diff --git a/src/com/engine/organization/entity/department/po/DepartmentPO.java b/src/com/engine/organization/entity/department/po/DepartmentPO.java new file mode 100644 index 00000000..e06c1a0b --- /dev/null +++ b/src/com/engine/organization/entity/department/po/DepartmentPO.java @@ -0,0 +1,49 @@ +package com.engine.organization.entity.department.po; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * @Author weaver_cl + * @Description: TODO + * @Date 2022/5/19 + * @Version V1.0 + **/ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class DepartmentPO { + + private Long id; + + private String deptNo; + + private String deptName; + + private String deptNameShort; + + private int parentComp; + + private int parentDept; + + private int deptPrincipal; //部门负责人 + + private int showOrder; + + private String description; + + private int forbiddenTag; + + private Long creator; + + private int deleteType; + + private Date createTime; + + private Date updateTime; +} diff --git a/src/com/engine/organization/entity/department/vo/SingleDeptTreeVO.java b/src/com/engine/organization/entity/department/vo/SingleDeptTreeVO.java new file mode 100644 index 00000000..5055275b --- /dev/null +++ b/src/com/engine/organization/entity/department/vo/SingleDeptTreeVO.java @@ -0,0 +1,43 @@ +package com.engine.organization.entity.department.vo; + +import com.cloudstore.eccom.pc.table.WeaTableType; +import com.engine.organization.annotation.OrganizationTable; +import com.engine.organization.annotation.TableTitle; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @Author weaver_cl + * @Description: TODO + * @Date 2022/5/20 + * @Version V1.0 + **/ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@OrganizationTable(pageId = "01b397a9-638b-4d58-89c7-4a1d17f98656", + tableType = WeaTableType.NONE) +public class SingleDeptTreeVO { + + private Long id; + + @TableTitle(title = "部门名称", dataIndex = "deptName", key = "deptName") + private String deptName; + + @TableTitle(title = "上级部门", dataIndex = "parentDeptName", key = "parentDeptName") + private String parentDeptName; //上级部门 + + @TableTitle(title = "部门负责人", dataIndex = "deptPrincipalName", key = "deptPrincipalName") + private String deptPrincipalName; //部门负责人 + + //子节点 + private List children; + + + +} diff --git a/src/com/engine/organization/entity/employee/Employee.java b/src/com/engine/organization/entity/employee/Employee.java new file mode 100644 index 00000000..d64979c6 --- /dev/null +++ b/src/com/engine/organization/entity/employee/Employee.java @@ -0,0 +1,28 @@ +package com.engine.organization.entity.employee; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author weaver_cl + * @Description: TODO + * @Date 2022/5/20 + * @Version V1.0 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class Employee { + + private Long employeeId; + + private String username; + + private Long departmentId; + + //.... + +} diff --git a/src/com/engine/organization/mapper/department/DepartmentMapper.java b/src/com/engine/organization/mapper/department/DepartmentMapper.java new file mode 100644 index 00000000..cbf2912b --- /dev/null +++ b/src/com/engine/organization/mapper/department/DepartmentMapper.java @@ -0,0 +1,21 @@ +package com.engine.organization.mapper.department; + +import com.engine.organization.entity.department.po.DepartmentPO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Author weaver_cl + * @Description: TODO + * @Date 2022/5/20 + * @Version V1.0 + **/ +public interface DepartmentMapper { + + List getDeptListByCompId(@Param("parentComp") int parentComp); + + List getDeptListByPId(@Param("PId")Long PId); + + String getDeptNameById(@Param("id")int id); +} diff --git a/src/com/engine/organization/mapper/department/DepartmentMapper.xml b/src/com/engine/organization/mapper/department/DepartmentMapper.xml new file mode 100644 index 00000000..49ecedaa --- /dev/null +++ b/src/com/engine/organization/mapper/department/DepartmentMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/com/engine/organization/mapper/employee/EmployeeMapper.java b/src/com/engine/organization/mapper/employee/EmployeeMapper.java new file mode 100644 index 00000000..d6533bc5 --- /dev/null +++ b/src/com/engine/organization/mapper/employee/EmployeeMapper.java @@ -0,0 +1,17 @@ +package com.engine.organization.mapper.employee; + +import com.engine.organization.entity.department.po.DepartmentPO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Author weaver_cl + * @Description: TODO + * @Date 2022/5/20 + * @Version V1.0 + **/ +public interface EmployeeMapper { + + String getEmployeeNameById(@Param("employeeId") Long id); +} diff --git a/src/com/engine/organization/mapper/employee/EmployeeMapper.xml b/src/com/engine/organization/mapper/employee/EmployeeMapper.xml new file mode 100644 index 00000000..e00791d6 --- /dev/null +++ b/src/com/engine/organization/mapper/employee/EmployeeMapper.xml @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/src/com/engine/organization/service/DepartmentService.java b/src/com/engine/organization/service/DepartmentService.java new file mode 100644 index 00000000..0a32073b --- /dev/null +++ b/src/com/engine/organization/service/DepartmentService.java @@ -0,0 +1,22 @@ +package com.engine.organization.service; + +import com.engine.organization.entity.department.param.QuerySingleDeptListParam; +import com.engine.organization.entity.department.vo.SingleDeptTreeVO; +import com.engine.organization.util.page.PageInfo; + +/** + * @Author weaver_cl + * @Description: TODO + * @Date 2022/5/20 + * @Version V1.0 + **/ +public interface DepartmentService { + + /** + * 根据分部id获取部门tree + * 联查部门 + * @param param + * @return + */ + PageInfo getDeptListByPid(QuerySingleDeptListParam param); +} diff --git a/src/com/engine/organization/service/impl/DepartmentServiceImpl.java b/src/com/engine/organization/service/impl/DepartmentServiceImpl.java new file mode 100644 index 00000000..3fdfca59 --- /dev/null +++ b/src/com/engine/organization/service/impl/DepartmentServiceImpl.java @@ -0,0 +1,39 @@ +package com.engine.organization.service.impl; + +import com.engine.core.impl.Service; +import com.engine.organization.entity.department.bo.DepartmentBO; +import com.engine.organization.entity.department.param.QuerySingleDeptListParam; +import com.engine.organization.entity.department.po.DepartmentPO; +import com.engine.organization.entity.department.vo.SingleDeptTreeVO; +import com.engine.organization.mapper.department.DepartmentMapper; +import com.engine.organization.service.DepartmentService; +import com.engine.organization.util.db.MapperProxyFactory; +import com.engine.organization.util.page.PageInfo; +import com.engine.organization.util.page.PageUtil; + +import java.util.List; + +/** + * @Author weaver_cl + * @Description: TODO + * @Date 2022/5/20 + * @Version V1.0 + **/ +public class DepartmentServiceImpl extends Service implements DepartmentService { + + + @Override + public PageInfo getDeptListByPid(QuerySingleDeptListParam param) { + + //1.查询分部下所有部门 + PageUtil.start(param.getCurrent(),param.getPageSize()); + List departmentPOS = MapperProxyFactory.getProxy(DepartmentMapper.class).getDeptListByCompId(param.getParentComp()); + List singleDeptTreeVOS = DepartmentBO.buildSingleDeptTreeVOS(departmentPOS); + PageInfo pageInfos = new PageInfo<>(singleDeptTreeVOS,SingleDeptTreeVO.class); + pageInfos.setTotal(departmentPOS.size()); + pageInfos.setPageNum(param.getCurrent()); + pageInfos.setPageSize(param.getPageSize()); + + return pageInfos; + } +} diff --git a/src/com/engine/organization/web/DepartmentController.java b/src/com/engine/organization/web/DepartmentController.java new file mode 100644 index 00000000..d8b05372 --- /dev/null +++ b/src/com/engine/organization/web/DepartmentController.java @@ -0,0 +1,44 @@ +package com.engine.organization.web; + +import com.engine.common.util.ServiceUtil; +import com.engine.organization.entity.department.param.QuerySingleDeptListParam; +import com.engine.organization.util.response.ReturnResult; +import com.engine.organization.wrapper.DepartmentWrapper; +import io.swagger.v3.oas.annotations.parameters.RequestBody; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; + +/** + * @Author weaver_cl + * @Description: TODO + * @Date 2022/5/20 + * @Version V1.0 + **/ +public class DepartmentController { + + private DepartmentWrapper getDepartmentWrapper(User user) { + return ServiceUtil.getService(DepartmentWrapper.class,user); + } + + + @POST + @Path("/getDeptListByPid") + @Produces(MediaType.APPLICATION_JSON) + public ReturnResult getDeptListByPid(@Context HttpServletRequest request, @Context HttpServletResponse response, + @RequestBody QuerySingleDeptListParam querySingleDeptListParam) { + try { + User user = HrmUserVarify.getUser(request, response); + return getDepartmentWrapper(user).getDeptListByPid(querySingleDeptListParam); + }catch (Exception e) { + return ReturnResult.exceptionHandle(e.getMessage()); + } + } +} diff --git a/src/com/engine/organization/wrapper/DepartmentWrapper.java b/src/com/engine/organization/wrapper/DepartmentWrapper.java new file mode 100644 index 00000000..114d5c50 --- /dev/null +++ b/src/com/engine/organization/wrapper/DepartmentWrapper.java @@ -0,0 +1,29 @@ +package com.engine.organization.wrapper; + +import com.engine.common.util.ServiceUtil; +import com.engine.core.impl.Service; +import com.engine.organization.entity.department.param.QuerySingleDeptListParam; +import com.engine.organization.service.DepartmentService; +import com.engine.organization.service.impl.DepartmentServiceImpl; +import com.engine.organization.util.page.PageInfo; +import com.engine.organization.util.response.ReturnResult; +import com.engine.organization.entity.department.vo.SingleDeptTreeVO; +import weaver.hrm.User; + +/** + * @Author weaver_cl + * @Description: TODO + * @Date 2022/5/20 + * @Version V1.0 + **/ +public class DepartmentWrapper extends Service { + + public DepartmentService getDepartmentService(User user) { + return ServiceUtil.getService(DepartmentServiceImpl.class,user); + } + + public ReturnResult getDeptListByPid(QuerySingleDeptListParam param) { + PageInfo singleDeptTreeVOS = getDepartmentService(user).getDeptListByPid(param); + return ReturnResult.successed(singleDeptTreeVOS); + } +}