一、数据库设计
二、实体类: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 = “1{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 = “^”, 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 children = new LinkedList();
}
三、controller
@ApiOperation(value = “懒加载查询列表”)
@GetMapping("/children")
public List getChildren(SysCompany sysCompany) {
return service.getChildren(sysCompany);
}
四、service
@Override
public List getChildren(SysCompany sysCompany) {
List companyList = dao.selectCompanyInfo(sysCompany);
if (StringUtils.isNotBlank(sysCompany.getCoName())) {
return getTree(sysCompany);
}
return companyList;
}
/**
这里一般将此方法放在entity里面
*/
private List getTree(SysCompany sysCompany) {
Map<String, SysCompany> map = dao.selectByCompany(sysCompany);
List 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 selectCompanyInfo(SysCompany sysCompany);
六、mapper
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 SELECT ,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 and c.co_name like concat ('%',#{coName},'%') and c.parent_id = #{parentId} and c.parent_id is null本人因为工作繁忙,每周都会抽一次时间,把自己在项目中使用的技术更加分享,志同道合的朋友可以加我扣扣,863967089,备注博客园。
-
\s\S ↩︎