java后台樹形結構展示---懶加載


一、數據庫設計

 

 

 二、實體類:entity

import com.joyoung.cloud.security.common.validatedGroup.Add;
import com.joyoung.cloud.security.common.validatedGroup.Modify;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import javax.persistence.Id;
import javax.persistence.Transient;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;

/**
* 公司表(SysCompany)實體類
*
* @author yangyuwei
* @since 2019-06-06 13:45:23
*/
@ApiModel(value = "公司類")
@Data
@Accessors(chain = true)
public class SysCompany implements Serializable {
private static final long serialVersionUID = 600959061181555399L;
@ApiModelProperty(value = "主鍵Id")
@Id
@Null(message = "{add_id}", groups = {Add.class})
@NotNull(message = "{modify_id}", groups = {Modify.class})
private String id;
//上級公司id
@ApiModelProperty(value = "Id")
private String parentId;
//公司名稱
@ApiModelProperty(value = "公司名稱")
@NotBlank(message = "{name_null}")
@Pattern(regexp = "^[\\s\\S]{1,20}$", message = "{name_rule}")
private String coName;
//公司簡稱
@ApiModelProperty(value = "公司簡稱")
private String coAbbr;
//公司編號
@ApiModelProperty(value = "公司編號")
private String coCode;
//公司地址
@ApiModelProperty(value = "公司地址")
private String coAddr;
//郵編
@ApiModelProperty(value = "郵編")
@Pattern(regexp = "^$|[0-9]{6}$", message = "{zipCode_error}")
private String zipCode;
//法人名稱
@ApiModelProperty(value = "法人名稱")
private String legalName;
//法定代表人
@ApiModelProperty(value = "法定代表人")
private String legalRep;
//稅號
@ApiModelProperty(value = "稅號")
private String taxId;
//電話號碼("XXX-XXXXXXX""XXXX-XXXXXXXX""XXX-XXXXXXX""XXX-XXXXXXXX""XXXXXXX""XXXXXXXX)
// @Pattern(regexp = "^(\\(\\d{3,4}\\)|\\d{3,4}-|\\s)?\\d{7,14}$", message = "請輸入正確的電話號碼")
@ApiModelProperty(value = "電話號碼")
private String tel;
//開戶銀行名稱
@ApiModelProperty(value ="開戶銀行名稱")
private String bankName;
//開戶銀行賬號
@ApiModelProperty(value = "開戶銀行賬號")
private String bankAcct;
//創建人id
private String crtUser;
//創建人名稱
private String crtName;
//創建時間
private Date crtTime;
//最后修改人id
private String updUser;
//最后修改人名稱
private String updName;
//最后修改時間
private Date updTime;
//備注
private String remark;
//邏輯刪除標識:1=刪除;0=未刪除
private Integer delFlag;

private String attr1;

private String attr2;

private String attr3;

/*****************************以下為添加字段*********************************/
@Transient
private Boolean hasChecked;
@Transient
private Boolean hasChildren;
@Transient
private List<SysCompany> children = new LinkedList<SysCompany>();

}

三、controller
@ApiOperation(value = "懶加載查詢列表")
@GetMapping("/children")
public List<SysCompany> getChildren(SysCompany sysCompany) {
return service.getChildren(sysCompany);
}
四、service

@Override
public List<SysCompany> getChildren(SysCompany sysCompany) {
List<SysCompany> companyList = dao.selectCompanyInfo(sysCompany);
if (StringUtils.isNotBlank(sysCompany.getCoName())) {
return getTree(sysCompany);
}
return companyList;
}


/**
這里一般將此方法放在entity里面
*/
private List<SysCompany> getTree(SysCompany sysCompany) {
Map<String, SysCompany> map = dao.selectByCompany(sysCompany);
List<SysCompany> tree = new ArrayList<>();
map.forEach((id, obj) -> {
if (map.containsKey(obj.getParentId())) {
map.get(obj.getParentId()).getChildren().add(obj);
} else {
tree.add(obj);
}
});
return tree;
}
五、dao
public List<SysCompany> selectCompanyInfo(SysCompany sysCompany);

六、mapper
<sql id="sys_param">
c.id,
c.parent_id,
c.co_name,
c.co_abbr,
c.co_code,
c.co_addr,
c.zip_code,
c.legal_name,
c.legal_rep,
c.tax_id,
c.tel,
c.bank_name,
c.bank_acct,
c.crt_user,
c.crt_name,
c.crt_time,
c.upd_user,
c.upd_name,
c.upd_time,
c.remark,
c.del_flag
</sql>
<select id="selectCompanyInfo" resultMap="SysCompanyMap"
parameterType="com.joyoung.cloud.security.common.entity.admin.SysCompany">
SELECT
<include refid="sys_param"/>,EXISTS (SELECT 1 from sys_company sc where sc.parent_id=c.id and sc.del_flag=0) as
hasChildren
FROM
sys_company c
WHERE
c.del_flag = 0
<if test="coName!=null">
and c.co_name like concat ('%',#{coName},'%')
</if>
<if test="parentId !=null and parentId !=''">
and c.parent_id = #{parentId}
</if>
<if test="parentId == null || parentId == ''">
and c.parent_id is null
</if>
</select>
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM