From e53e7e09d057eb907c7b4758d5c59671ef5a959f Mon Sep 17 00:00:00 2001 From: mashuai Date: Thu, 15 Aug 2024 17:25:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=AC=E5=8F=B8=E4=BA=BA=E5=91=98=E6=A0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/bonus/base/api/domain/BmCustomer.java | 16 +++- .../bonus/base/api/domain/SysDeptTree.java | 82 +++++++++++++++++++ .../com/bonus/base/api/domain/TreeSelect.java | 9 ++ .../base/controller/BmCustomerController.java | 15 ++++ .../bonus/base/mapper/BmCustomerMapper.java | 8 ++ .../base/service/IBmCustomerService.java | 9 ++ .../service/impl/BmCustomerServiceImpl.java | 73 +++++++++++++++++ .../mapper/base/BmCustomerMapper.xml | 24 ++++-- 8 files changed, 227 insertions(+), 9 deletions(-) create mode 100644 bonus-api/bonus-api-system/src/main/java/com/bonus/base/api/domain/SysDeptTree.java diff --git a/bonus-api/bonus-api-system/src/main/java/com/bonus/base/api/domain/BmCustomer.java b/bonus-api/bonus-api-system/src/main/java/com/bonus/base/api/domain/BmCustomer.java index 7e685ca..bf1fbe0 100644 --- a/bonus-api/bonus-api-system/src/main/java/com/bonus/base/api/domain/BmCustomer.java +++ b/bonus-api/bonus-api-system/src/main/java/com/bonus/base/api/domain/BmCustomer.java @@ -32,16 +32,28 @@ public class BmCustomer extends BaseEntity implements Serializable { * 往来单位类型 */ @ApiModelProperty(value = "往来单位类型") - @Excel(name = "单位类型") private Integer typeId; + /** + * 往来单位类型 + */ + @ApiModelProperty(value = "往来单位类型名称") + @Excel(name = "单位类型") + private String typeName; + /** * 所属分公司 */ @ApiModelProperty(value = "所属分公司") - @Excel(name = "所属分公司") private Integer companyId; + /** + * 所属分公司 + */ + @ApiModelProperty(value = "所属分公司名称") + @Excel(name = "所属分公司") + private String companyName; + /** * 材料员 */ diff --git a/bonus-api/bonus-api-system/src/main/java/com/bonus/base/api/domain/SysDeptTree.java b/bonus-api/bonus-api-system/src/main/java/com/bonus/base/api/domain/SysDeptTree.java new file mode 100644 index 0000000..37576e2 --- /dev/null +++ b/bonus-api/bonus-api-system/src/main/java/com/bonus/base/api/domain/SysDeptTree.java @@ -0,0 +1,82 @@ +package com.bonus.base.api.domain; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; + +import java.util.ArrayList; +import java.util.Date; +import java.io.Serializable; +import java.util.List; + +/** + * 部门表(SysDept)实体类 + * + * @author makejava + * @since 2024-08-15 13:44:56 + */ +@Data +public class SysDeptTree implements Serializable { + private static final long serialVersionUID = 991828482042492876L; + /** + * 更新时间 + */ + private Date updateTime; + /** + * 更新者 + */ + private String updateBy; + /** + * 创建时间 + */ + private Date createTime; + /** + * 创建者 + */ + private String createBy; + /** + * 删除标志(0代表存在 2代表删除) + */ + private String delFlag; + /** + * 部门状态(0正常 1停用) + */ + private String status; + /** + * 邮箱 + */ + private String email; + /** + * 联系电话 + */ + private String phone; + /** + * 负责人 + */ + private String leader; + /** + * 显示顺序 + */ + private Integer orderNum; + /** + * 部门名称 + */ + private String deptName; + /** + * 祖级列表 + */ + private String ancestors; + /** + * 父部门id + */ + private Integer parentId; + /** + * 部门id + */ + private Integer deptId; + + /** 子节点 */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private List children = new ArrayList<>(); + +} + diff --git a/bonus-api/bonus-api-system/src/main/java/com/bonus/base/api/domain/TreeSelect.java b/bonus-api/bonus-api-system/src/main/java/com/bonus/base/api/domain/TreeSelect.java index af660ad..5ba3b33 100644 --- a/bonus-api/bonus-api-system/src/main/java/com/bonus/base/api/domain/TreeSelect.java +++ b/bonus-api/bonus-api-system/src/main/java/com/bonus/base/api/domain/TreeSelect.java @@ -1,5 +1,6 @@ package com.bonus.base.api.domain; +import com.bonus.system.api.domain.SysDept; import com.fasterxml.jackson.annotation.JsonInclude; import java.io.Serializable; @@ -36,6 +37,14 @@ public class TreeSelect implements Serializable @JsonInclude(JsonInclude.Include.NON_EMPTY) private List children; + public TreeSelect(SysDeptTree dept) + { + this.id = dept.getDeptId(); + this.parentId = dept.getParentId(); + this.label = dept.getDeptName(); + this.children = dept.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); + } + public TreeSelect(MaType maType) { this.parentId = maType.getParentId(); diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/controller/BmCustomerController.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/controller/BmCustomerController.java index d4f4075..cc34985 100644 --- a/bonus-modules/bonus-base/src/main/java/com/bonus/base/controller/BmCustomerController.java +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/controller/BmCustomerController.java @@ -1,6 +1,8 @@ package com.bonus.base.controller; import com.bonus.base.api.domain.BmCustomer; +import com.bonus.base.api.domain.SysDeptTree; +import com.bonus.base.api.domain.TreeSelect; import com.bonus.base.service.IBmCustomerService; import com.bonus.common.core.utils.poi.ExcelUtil; import com.bonus.common.core.web.controller.BaseController; @@ -51,6 +53,19 @@ public class BmCustomerController extends BaseController { return getDataTableError(new ArrayList<>()); } + /** + * 查询部门树 + * + * @return 查询结果 + */ + @ApiOperation(value = "查询部门树") + @RequiresPermissions("material:maType:query") + @GetMapping("/deptTree") + public AjaxResult selectDeptTree(SysDeptTree sysDept) { + List deptList = customerService.selectDeptTree(sysDept); + return AjaxResult.success(deptList); + } + /** * 获取往来单位下拉选 */ diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/mapper/BmCustomerMapper.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/mapper/BmCustomerMapper.java index 4ca4507..b77a625 100644 --- a/bonus-modules/bonus-base/src/main/java/com/bonus/base/mapper/BmCustomerMapper.java +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/mapper/BmCustomerMapper.java @@ -1,6 +1,7 @@ package com.bonus.base.mapper; import com.bonus.base.api.domain.BmCustomer; +import com.bonus.base.api.domain.SysDeptTree; import java.util.List; @@ -56,4 +57,11 @@ public interface BmCustomerMapper { * @return 结果 */ int deleteCustomerByIds(Long[] customerIds); + + /** + * + * @return + */ + List selectDeptTree(SysDeptTree sysDept); + } diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/service/IBmCustomerService.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/service/IBmCustomerService.java index 5e008ae..8b37365 100644 --- a/bonus-modules/bonus-base/src/main/java/com/bonus/base/service/IBmCustomerService.java +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/service/IBmCustomerService.java @@ -1,6 +1,8 @@ package com.bonus.base.service; import com.bonus.base.api.domain.BmCustomer; +import com.bonus.base.api.domain.SysDeptTree; +import com.bonus.base.api.domain.TreeSelect; import java.util.List; @@ -58,4 +60,11 @@ public interface IBmCustomerService * @return 结果 */ public int deleteCustomerByIds(Long[] customerIds); + + /** + * 查询部门下拉树结构 + * @return + */ + List selectDeptTree(SysDeptTree sysDept); + } diff --git a/bonus-modules/bonus-base/src/main/java/com/bonus/base/service/impl/BmCustomerServiceImpl.java b/bonus-modules/bonus-base/src/main/java/com/bonus/base/service/impl/BmCustomerServiceImpl.java index f915fe3..17d0768 100644 --- a/bonus-modules/bonus-base/src/main/java/com/bonus/base/service/impl/BmCustomerServiceImpl.java +++ b/bonus-modules/bonus-base/src/main/java/com/bonus/base/service/impl/BmCustomerServiceImpl.java @@ -1,12 +1,18 @@ package com.bonus.base.service.impl; import com.bonus.base.api.domain.BmCustomer; +import com.bonus.base.api.domain.SysDeptTree; +import com.bonus.base.api.domain.TreeSelect; import com.bonus.base.mapper.BmCustomerMapper; import com.bonus.base.service.IBmCustomerService; +import com.bonus.common.core.utils.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.Iterator; import java.util.List; +import java.util.stream.Collectors; /** * 往来单位 服务层实现 @@ -49,4 +55,71 @@ public class BmCustomerServiceImpl implements IBmCustomerService public int deleteCustomerByIds(Long[] customerIds) { return bmCustomerMapper.deleteCustomerByIds(customerIds); } + + /** + * 查询部门树结构信息 + * @return + */ + @Override + public List selectDeptTree(SysDeptTree sysDept) { + List deptList = bmCustomerMapper.selectDeptTree(sysDept); + return buildDeptTreeSelect(deptList); + } + + private List buildDeptTreeSelect(List deptList) { + List deptTrees = buildDeptTree(deptList); + return deptTrees.stream().map(TreeSelect::new).collect(Collectors.toList()); + } + + private List buildDeptTree(List deptList) { + List returnList = new ArrayList<>(); + List tempList = deptList.stream().map(SysDeptTree::getDeptId).collect(Collectors.toList()); + for (SysDeptTree sysDept : deptList) { + // 如果是顶级节点, 遍历该父节点的所有子节点 + if (!tempList.contains(sysDept.getParentId())) { + recursionFn(deptList, sysDept); + returnList.add(sysDept); + } + } + if (returnList.isEmpty()) { + returnList = deptList; + } + return returnList; + } + + /** + * 递归列表 + */ + private void recursionFn(List list, SysDeptTree t) { + // 得到子节点列表 + List childList = getChildList(list, t); + t.setChildren(childList); + for (SysDeptTree tChild : childList) { + if (hasChild(list, tChild)) { + recursionFn(list, tChild); + } + } + } + + /** + * 得到子节点列表 + */ + private List getChildList(List list, SysDeptTree t) { + List tlist = new ArrayList<>(); + Iterator it = list.iterator(); + while (it.hasNext()) { + SysDeptTree n = (SysDeptTree) it.next(); + if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getDeptId().longValue()) { + tlist.add(n); + } + } + return tlist; + } + + /** + * 判断是否有子节点 + */ + private boolean hasChild(List list, SysDeptTree t) { + return getChildList(list, t).size() > 0 ? true : false; + } } diff --git a/bonus-modules/bonus-base/src/main/resources/mapper/base/BmCustomerMapper.xml b/bonus-modules/bonus-base/src/main/resources/mapper/base/BmCustomerMapper.xml index b9bd375..4cff0f0 100644 --- a/bonus-modules/bonus-base/src/main/resources/mapper/base/BmCustomerMapper.xml +++ b/bonus-modules/bonus-base/src/main/resources/mapper/base/BmCustomerMapper.xml @@ -20,21 +20,23 @@ - id, type_id, company_id, `name`, material_clerk, manager, phone, is_active, `time`, - legal_representative, legal_phone, sort_num, company + bc.id, bc.type_id, bct.NAME as typeName, bc.company_id, sd.dept_name as companyName, bc.`name`, bc.material_clerk, bc.manager, bc.phone, bc.is_active, bc.`time`, + bc.legal_representative, bc.legal_phone, bc.sort_num, bc.company + +