package com.engine.organization.component; import com.cloudstore.eccom.constant.WeaBoolAttr; import com.cloudstore.eccom.pc.table.*; import com.engine.organization.annotation.*; import org.apache.commons.lang3.StringUtils; import weaver.general.PageIdConst; import weaver.hrm.User; import weaver.systeminfo.SystemEnv; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class OrganizationWeaTable extends WeaTable { public OrganizationWeaTable(User user, Class clazz) { boolean isAnno = clazz.isAnnotationPresent(OrganizationTable.class); if (isAnno) { OrganizationTable table = (OrganizationTable) clazz.getAnnotation(OrganizationTable.class); String pageId = table.pageId(); super.setPageID(pageId); String pageUid = pageId + "_" + user.getUID(); super.setPageUID(pageUid); String pageSize = PageIdConst.getPageSize(pageId, user.getUID()); super.setPagesize(pageSize); String backfields = table.fields(); super.setBackfields(backfields); String sql = table.fromSql(); super.setSqlform(sql); String where = table.where(); if (StringUtils.isNotBlank(where)) { super.setSqlwhere(where); } String orderby = table.orderby(); if (StringUtils.isNotBlank(orderby)) { super.setSqlorderby(orderby); } String sortway = table.sortway(); if (StringUtils.isNotBlank(sortway)) { super.setSqlsortway(sortway); } String groupby = table.groupby(); if (StringUtils.isNotBlank(groupby)) { super.setSqlgroupby(groupby); } boolean distinct = table.distinct(); super.setSqlisdistinct(String.valueOf(distinct)); String primarykey = table.primarykey(); if (StringUtils.isNotBlank(primarykey)) { super.setSqlprimarykey(primarykey); } OrganizationTableOperate[] operates = table.operates(); if (operates != null && operates.length > 0) { List operateList = new ArrayList<>(); Arrays.stream(operates).forEach(o -> { String text = o.text(); int labelId = o.labelId(); String htmlLabelName = SystemEnv.getHtmlLabelName(labelId, user.getLanguage()); if (StringUtils.isNotBlank(htmlLabelName)) { text = htmlLabelName; } WeaTableOperate weaTableOperate = new WeaTableOperate(text, o.href(), o.index()); operateList.add(weaTableOperate); }); WeaTableOperates weaTableOperates = new WeaTableOperates(); OperatePopedom popedoms = table.operatePopedom(); WeaTablePopedom popedom = new WeaTablePopedom(); if (popedoms != null && !"".equals(popedoms.transmethod())) { popedom.setTransmethod(popedoms.transmethod()); popedom.setOtherpara(popedoms.otherpara()); weaTableOperates.setPopedom(popedom); } weaTableOperates.setOperate(operateList); super.setOperates(weaTableOperates); } WeaTableType weaTableTypeEnum = table.tableType(); //设置check是否可用 if (weaTableTypeEnum == WeaTableType.CHECKBOX) { super.setTableType(weaTableTypeEnum); CheckboxPopedom checkPopedom = table.checkboxPopedom(); WeaTableCheckboxpopedom checkboxpopedom = new WeaTableCheckboxpopedom(); if (checkPopedom != null && !"".equals(checkPopedom.showmethod())) { checkboxpopedom.setShowmethod(checkPopedom.showmethod()); checkboxpopedom.setPopedompara(checkPopedom.popedompara()); } super.setCheckboxpopedom(checkboxpopedom); } } Field[] fields = clazz.getDeclaredFields(); for (Field f : fields) { boolean isanno = f.isAnnotationPresent(OrganizationTableColumn.class); if (isanno) { OrganizationTableColumn columnAnn = f.getAnnotation(OrganizationTableColumn.class); String text = columnAnn.text(); int labelId = columnAnn.labelId(); String htmlLabelName = SystemEnv.getHtmlLabelName(labelId, user.getLanguage()); if (StringUtils.isNotBlank(htmlLabelName)) { text = htmlLabelName; } String width = columnAnn.width(); String column = columnAnn.column(); String orderkey = columnAnn.orderkey(); boolean display = columnAnn.display(); WeaTableColumn weaTableColumn = new WeaTableColumn(width, text, column, orderkey); String transmethod = columnAnn.transmethod(); if (StringUtils.isNotBlank(transmethod)) { weaTableColumn.setTransmethod(transmethod); } String otherPara = columnAnn.otherPara(); if (StringUtils.isNotBlank(otherPara)) { weaTableColumn.setOtherpara(otherPara); } else { // 未设置其他参数,但是设置了多语言,自动添加其它参数为语言类型 if (columnAnn.multiLanguage()) { weaTableColumn.setOtherpara(String.valueOf(user.getLanguage())); } } if (!display) { weaTableColumn.setDisplay(WeaBoolAttr.FALSE); } super.getColumns().add(weaTableColumn); } } } }