package com.engine.organization.entity.chart; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import org.apache.commons.collections.CollectionUtils; import weaver.conn.RecordSet; import java.util.ArrayList; import java.util.List; /** * @author:dxfeng * @createTime: 2023/07/25 * @version: 1.0 */ @Data @AllArgsConstructor @NoArgsConstructor @Builder public class TreeSelect { public static final String COMPANY = "company"; public static final String SUB_COMPANY = "subCompany"; public static final String DEPARTMENT = "department"; private String key; private String id; private String title; private String type; private String icon; private List children; public List getChildren() { if (null != children) { return children; } children = new ArrayList<>(); RecordSet rs = new RecordSet(); if (COMPANY.equals(type)) { String sql = "select id ,subcompanyname from hrmsubcompany where (canceled is null or canceled != 1) and (supsubcomid is null or supsubcomid = 0) and companyid = ? order by showorder desc"; rs.executeQuery(sql, key); while (rs.next()) { children.add(TreeSelect.builder().key(rs.getString("id")).title(rs.getString("subcompanyname")).type(SUB_COMPANY).build()); } } else if (SUB_COMPANY.equals(type)) { String sql = "select id ,subcompanyname from hrmsubcompany where (canceled is null or canceled != 1) and supsubcomid = ? order by showorder desc"; rs.executeQuery(sql, key); while (rs.next()) { children.add(TreeSelect.builder().key(rs.getString("id")).title(rs.getString("subcompanyname")).type(SUB_COMPANY).build()); } sql = "select id,departmentname from hrmdepartment where (canceled is null or canceled != 1) and (supdepid is null or supdepid =0) and subcompanyid1 = ? order by showorder desc"; rs.executeQuery(sql, key); while (rs.next()) { children.add(TreeSelect.builder().key(rs.getString("id")).title(rs.getString("departmentname")).type(DEPARTMENT).build()); } } else if (DEPARTMENT.equals(type)) { String sql = "select id,departmentname from hrmdepartment where (canceled is null or canceled != 1) and supdepid = ? order by showorder desc"; rs.executeQuery(sql, key); while (rs.next()) { children.add(TreeSelect.builder().key(rs.getString("id")).title(rs.getString("departmentname")).type(DEPARTMENT).build()); } } return CollectionUtils.isEmpty(children) ? null : children; } public String getKey() { switch (type) { case COMPANY: return "c" + key; case SUB_COMPANY: return "s" + key; case DEPARTMENT: return "d" + key; default: break; } return key; } public String getId() { return key; } }