Commit 534bf304 by 宋祥

1.页面自定义配置字段,查询根据配置信息动态显示列

parent d039fe9c
...@@ -79,9 +79,9 @@ public class CommonConstant { ...@@ -79,9 +79,9 @@ public class CommonConstant {
public static class AuthFilter { public static class AuthFilter {
// 企业权限 // 企业权限
public static final String[] ACCOUNT = {"HGXSUser", "HGPZ009", "HGPZ020", "HGPZ020A"}; public static final String[] ACCOUNT = {"HGXSUser", "HGPZ009", "HGPZ020", "HGPZ020A", "HGPZ021"};
// 数据权限 // 数据权限
public static final String[] DATA = {"HGXSUser", "HGXSOrg", "HGXSUserGroup", "HGPZ009", "HGPZ020", public static final String[] DATA = {"HGXSUser", "HGXSOrg", "HGXSUserGroup", "HGPZ009", "HGPZ020", "HGPZ021",
"HGPZ010.query"}; "HGPZ010.query"};
} }
......
...@@ -33,4 +33,17 @@ public class HgPzSqlConstant { ...@@ -33,4 +33,17 @@ public class HgPzSqlConstant {
public static final String DELETE_BY_FIELD = MODULE + "deleteByField"; public static final String DELETE_BY_FIELD = MODULE + "deleteByField";
} }
/**
*
* @author songx
* @date 2024/11/6,14:21
*/
public class HgPz021 {
// 模块名称
public static final String MODULE = "HGPZ021.";
// 修改排产系数
public static final String UPDATE_SORT = MODULE + "updateSort";
}
} }
package com.baosight.hggp.hg.pz.domain;
import com.baosight.iplat4j.core.ei.EiColumn;
import com.baosight.iplat4j.core.util.StringUtils;
import java.util.Map;
/**
* Project: <br>
* Title:HGPZ020A.java <br>
* Description: <br>
*
* @author songx
* @date 2024-11-06 17:33:06
*/
public class HGPZ020A extends HGPZ020 {
private static final long serialVersionUID = 1L;
public static final String FIELD_VIEW_SQL = "viewSql"; /* 视图SQL */
public static final String FIELD_ALIAS_NAME = "aliasName"; /* 别名 */
public static final String COL_VIEW_SQL = "VIEW_SQL"; /* 视图SQL */
public static final String COL_ALIAS_NAME = "ALIAS_NAME"; /* 别名 */
public static final String QUERY = "HGPZ020A.query";
public static final String COUNT = "HGPZ020A.count";
public String viewSql = " "; /* 视图SQL */
public String aliasName = " "; /* 别名 */
/**
* initialize the metadata.
*/
public void initMetaData() {
EiColumn eiColumn;
eiColumn = new EiColumn(FIELD_VIEW_SQL);
eiColumn.setDescName("视图SQL");
eiMetadata.addMeta(eiColumn);
eiColumn = new EiColumn(FIELD_ALIAS_NAME);
eiColumn.setDescName("别名");
eiMetadata.addMeta(eiColumn);
}
/**
* the constructor.
*/
public HGPZ020A() {
super.initMetaData();
initMetaData();
}
/**
* get the viewSql - 视图SQL.
* @return the viewSql
*/
public String getViewSql() {
return this.viewSql;
}
/**
* set the viewSql - 视图SQL.
*
* @param viewSql - 视图SQL
*/
public void setViewSql(String viewSql) {
this.viewSql = viewSql;
}
/**
* get the aliasName - 别名.
* @return the aliasName
*/
public String getAliasName() {
return this.aliasName;
}
/**
* set the aliasName - 别名.
*
* @param aliasName - 别名
*/
public void setAliasName(String aliasName) {
this.aliasName = aliasName;
}
/**
* get the value from Map.
*
* @param map - source data map
*/
@Override
public void fromMap(Map map) {
super.fromMap(map);
setViewSql(StringUtils.defaultIfEmpty(StringUtils.toString(map.get(FIELD_VIEW_SQL)), viewSql));
setAliasName(StringUtils.defaultIfEmpty(StringUtils.toString(map.get(FIELD_ALIAS_NAME)), aliasName));
}
/**
* set the value to Map.
*/
@Override
public Map toMap() {
Map map = super.toMap();
map.put(FIELD_VIEW_SQL, StringUtils.toString(viewSql, eiMetadata.getMeta(FIELD_VIEW_SQL)));
map.put(FIELD_ALIAS_NAME, StringUtils.toString(aliasName, eiMetadata.getMeta(FIELD_ALIAS_NAME)));
return map;
}
}
\ No newline at end of file
...@@ -15,7 +15,7 @@ import java.util.Map; ...@@ -15,7 +15,7 @@ import java.util.Map;
* Description: <br> * Description: <br>
* *
* @author songx * @author songx
* @date 2024-11-04 16:50:20 * @date 2024-11-06 17:32:57
*/ */
public class HGPZ021 extends DaoEPBase { public class HGPZ021 extends DaoEPBase {
...@@ -34,9 +34,10 @@ public class HGPZ021 extends DaoEPBase { ...@@ -34,9 +34,10 @@ public class HGPZ021 extends DaoEPBase {
public static final String FIELD_TABLE_NAME = "tableName"; /* 表中文名 */ public static final String FIELD_TABLE_NAME = "tableName"; /* 表中文名 */
public static final String FIELD_FIELD_CODE = "fieldCode"; /* 字段英文名 */ public static final String FIELD_FIELD_CODE = "fieldCode"; /* 字段英文名 */
public static final String FIELD_FIELD_NAME = "fieldName"; /* 字段中文名 */ public static final String FIELD_FIELD_NAME = "fieldName"; /* 字段中文名 */
public static final String FIELD_VIEW_SQL = "viewSql"; /* */ public static final String FIELD_VIEW_SQL = "viewSql"; /* 视图SQL */
public static final String FIELD_ALIAS_NAME = "aliasName"; /* 别名 */
public static final String FIELD_SORT_NUM = "sortNum"; /* 排序 */ public static final String FIELD_SORT_NUM = "sortNum"; /* 排序 */
public static final String FIELD_IS_DEFAULT = "isDefault"; /* 是否默认 */ public static final String FIELD_IS_DEFAULT = "isDefault"; /* 是否默认,1-是,0-否 */
public static final String COL_ID = "ID"; /* */ public static final String COL_ID = "ID"; /* */
public static final String COL_CREATED_BY = "CREATED_BY"; /* 记录创建者 */ public static final String COL_CREATED_BY = "CREATED_BY"; /* 记录创建者 */
...@@ -51,9 +52,10 @@ public class HGPZ021 extends DaoEPBase { ...@@ -51,9 +52,10 @@ public class HGPZ021 extends DaoEPBase {
public static final String COL_TABLE_NAME = "TABLE_NAME"; /* 表中文名 */ public static final String COL_TABLE_NAME = "TABLE_NAME"; /* 表中文名 */
public static final String COL_FIELD_CODE = "FIELD_CODE"; /* 字段英文名 */ public static final String COL_FIELD_CODE = "FIELD_CODE"; /* 字段英文名 */
public static final String COL_FIELD_NAME = "FIELD_NAME"; /* 字段中文名 */ public static final String COL_FIELD_NAME = "FIELD_NAME"; /* 字段中文名 */
public static final String COL_VIEW_SQL = "VIEW_SQL"; /* */ public static final String COL_VIEW_SQL = "VIEW_SQL"; /* 视图SQL */
public static final String COL_ALIAS_NAME = "ALIAS_NAME"; /* 别名 */
public static final String COL_SORT_NUM = "SORT_NUM"; /* 排序 */ public static final String COL_SORT_NUM = "SORT_NUM"; /* 排序 */
public static final String COL_IS_DEFAULT = "IS_DEFAULT"; /* 是否默认 */ public static final String COL_IS_DEFAULT = "IS_DEFAULT"; /* 是否默认,1-是,0-否 */
public static final String QUERY = "HGPZ021.query"; public static final String QUERY = "HGPZ021.query";
public static final String COUNT = "HGPZ021.count"; public static final String COUNT = "HGPZ021.count";
...@@ -62,7 +64,7 @@ public class HGPZ021 extends DaoEPBase { ...@@ -62,7 +64,7 @@ public class HGPZ021 extends DaoEPBase {
public static final String DELETE = "HGPZ021.delete"; public static final String DELETE = "HGPZ021.delete";
@ExcelAnno(index = 0) @ExcelAnno(index = 0)
public Long id = new Long(0); /* */ public Long id = new Long(0); /* */
public String createdBy = " "; /* 记录创建者 */ public String createdBy = " "; /* 记录创建者 */
public String createdName = " "; /* 记录创建名称 */ public String createdName = " "; /* 记录创建名称 */
public String createdTime = " "; /* 记录创建时间 */ public String createdTime = " "; /* 记录创建时间 */
...@@ -79,11 +81,13 @@ public class HGPZ021 extends DaoEPBase { ...@@ -79,11 +81,13 @@ public class HGPZ021 extends DaoEPBase {
@ExcelAnno(index = 3) @ExcelAnno(index = 3)
public String fieldName = " "; /* 字段中文名 */ public String fieldName = " "; /* 字段中文名 */
@ExcelAnno(index = 4) @ExcelAnno(index = 4)
public String viewSql = " "; /* */ public String viewSql = " "; /* 视图SQL */
@ExcelAnno(index = 5) @ExcelAnno(index = 5)
public Integer sortNum = new Integer(0); /* 排序 */ public String aliasName = " "; /* 别名 */
@ExcelAnno(index = 6) @ExcelAnno(index = 6)
public Integer isDefault = new Integer(0); /* 是否默认 */ public Integer sortNum = new Integer(0); /* 排序 */
@ExcelAnno(index = 7)
public Integer isDefault = new Integer(0); /* 是否默认,1-是,0-否 */
/** /**
* initialize the metadata. * initialize the metadata.
...@@ -144,16 +148,20 @@ public class HGPZ021 extends DaoEPBase { ...@@ -144,16 +148,20 @@ public class HGPZ021 extends DaoEPBase {
eiMetadata.addMeta(eiColumn); eiMetadata.addMeta(eiColumn);
eiColumn = new EiColumn(FIELD_VIEW_SQL); eiColumn = new EiColumn(FIELD_VIEW_SQL);
eiColumn.setDescName(""); eiColumn.setDescName("视图SQL");
eiMetadata.addMeta(eiColumn);
eiColumn = new EiColumn(FIELD_ALIAS_NAME);
eiColumn.setDescName("别名");
eiMetadata.addMeta(eiColumn); eiMetadata.addMeta(eiColumn);
eiColumn = new EiColumn(FIELD_SORT_NUM); eiColumn = new EiColumn(FIELD_SORT_NUM);
eiColumn.setDescName("排序"); eiColumn.setDescName("排序");
eiMetadata.addMeta(eiColumn); eiMetadata.addMeta(eiColumn);
eiColumn = new EiColumn(FIELD_IS_DEFAULT); eiColumn = new EiColumn(FIELD_IS_DEFAULT);
eiColumn.setDescName("是否默认"); eiColumn.setDescName("是否默认,1-是,0-否");
eiMetadata.addMeta(eiColumn); eiMetadata.addMeta(eiColumn);
} }
/** /**
...@@ -174,7 +182,7 @@ public class HGPZ021 extends DaoEPBase { ...@@ -174,7 +182,7 @@ public class HGPZ021 extends DaoEPBase {
/** /**
* set the id - . * set the id - .
* *
* @param id - * @param id -
*/ */
public void setId(Long id) { public void setId(Long id) {
this.id = id; this.id = id;
...@@ -372,7 +380,7 @@ public class HGPZ021 extends DaoEPBase { ...@@ -372,7 +380,7 @@ public class HGPZ021 extends DaoEPBase {
this.fieldName = fieldName; this.fieldName = fieldName;
} }
/** /**
* get the viewSql - . * get the viewSql - 视图SQL.
* @return the viewSql * @return the viewSql
*/ */
public String getViewSql() { public String getViewSql() {
...@@ -380,14 +388,30 @@ public class HGPZ021 extends DaoEPBase { ...@@ -380,14 +388,30 @@ public class HGPZ021 extends DaoEPBase {
} }
/** /**
* set the viewSql - . * set the viewSql - 视图SQL.
* *
* @param viewSql - * @param viewSql - 视图SQL
*/ */
public void setViewSql(String viewSql) { public void setViewSql(String viewSql) {
this.viewSql = viewSql; this.viewSql = viewSql;
} }
/** /**
* get the aliasName - 别名.
* @return the aliasName
*/
public String getAliasName() {
return this.aliasName;
}
/**
* set the aliasName - 别名.
*
* @param aliasName - 别名
*/
public void setAliasName(String aliasName) {
this.aliasName = aliasName;
}
/**
* get the sortNum - 排序. * get the sortNum - 排序.
* @return the sortNum * @return the sortNum
*/ */
...@@ -403,16 +427,24 @@ public class HGPZ021 extends DaoEPBase { ...@@ -403,16 +427,24 @@ public class HGPZ021 extends DaoEPBase {
public void setSortNum(Integer sortNum) { public void setSortNum(Integer sortNum) {
this.sortNum = sortNum; this.sortNum = sortNum;
} }
/**
public Integer getIsDefault() { * get the isDefault - 是否默认,1-是,0-否.
return isDefault; * @return the isDefault
} */
public Integer getIsDefault() {
public void setIsDefault(Integer isDefault) { return this.isDefault;
this.isDefault = isDefault; }
}
/**
/** * set the isDefault - 是否默认,1-是,0-否.
*
* @param isDefault - 是否默认,1-是,0-否
*/
public void setIsDefault(Integer isDefault) {
this.isDefault = isDefault;
}
/**
* get the value from Map. * get the value from Map.
* *
* @param map - source data map * @param map - source data map
...@@ -433,8 +465,9 @@ public class HGPZ021 extends DaoEPBase { ...@@ -433,8 +465,9 @@ public class HGPZ021 extends DaoEPBase {
setFieldCode(StringUtils.defaultIfEmpty(StringUtils.toString(map.get(FIELD_FIELD_CODE)), fieldCode)); setFieldCode(StringUtils.defaultIfEmpty(StringUtils.toString(map.get(FIELD_FIELD_CODE)), fieldCode));
setFieldName(StringUtils.defaultIfEmpty(StringUtils.toString(map.get(FIELD_FIELD_NAME)), fieldName)); setFieldName(StringUtils.defaultIfEmpty(StringUtils.toString(map.get(FIELD_FIELD_NAME)), fieldName));
setViewSql(StringUtils.defaultIfEmpty(StringUtils.toString(map.get(FIELD_VIEW_SQL)), viewSql)); setViewSql(StringUtils.defaultIfEmpty(StringUtils.toString(map.get(FIELD_VIEW_SQL)), viewSql));
setAliasName(StringUtils.defaultIfEmpty(StringUtils.toString(map.get(FIELD_ALIAS_NAME)), aliasName));
setSortNum(NumberUtils.toInteger(StringUtils.toString(map.get(FIELD_SORT_NUM)), sortNum)); setSortNum(NumberUtils.toInteger(StringUtils.toString(map.get(FIELD_SORT_NUM)), sortNum));
setIsDefault(NumberUtils.toInteger(StringUtils.toString(map.get(FIELD_IS_DEFAULT)), isDefault)); setIsDefault(NumberUtils.toInteger(StringUtils.toString(map.get(FIELD_IS_DEFAULT)), isDefault));
} }
/** /**
...@@ -457,9 +490,10 @@ public class HGPZ021 extends DaoEPBase { ...@@ -457,9 +490,10 @@ public class HGPZ021 extends DaoEPBase {
map.put(FIELD_FIELD_CODE, StringUtils.toString(fieldCode, eiMetadata.getMeta(FIELD_FIELD_CODE))); map.put(FIELD_FIELD_CODE, StringUtils.toString(fieldCode, eiMetadata.getMeta(FIELD_FIELD_CODE)));
map.put(FIELD_FIELD_NAME, StringUtils.toString(fieldName, eiMetadata.getMeta(FIELD_FIELD_NAME))); map.put(FIELD_FIELD_NAME, StringUtils.toString(fieldName, eiMetadata.getMeta(FIELD_FIELD_NAME)));
map.put(FIELD_VIEW_SQL, StringUtils.toString(viewSql, eiMetadata.getMeta(FIELD_VIEW_SQL))); map.put(FIELD_VIEW_SQL, StringUtils.toString(viewSql, eiMetadata.getMeta(FIELD_VIEW_SQL)));
map.put(FIELD_ALIAS_NAME, StringUtils.toString(aliasName, eiMetadata.getMeta(FIELD_ALIAS_NAME)));
map.put(FIELD_SORT_NUM, StringUtils.toString(sortNum, eiMetadata.getMeta(FIELD_SORT_NUM))); map.put(FIELD_SORT_NUM, StringUtils.toString(sortNum, eiMetadata.getMeta(FIELD_SORT_NUM)));
map.put(FIELD_IS_DEFAULT, StringUtils.toString(isDefault, eiMetadata.getMeta(FIELD_IS_DEFAULT))); map.put(FIELD_IS_DEFAULT, StringUtils.toString(isDefault, eiMetadata.getMeta(FIELD_IS_DEFAULT)));
return map; return map;
} }
} }
\ No newline at end of file
...@@ -4,6 +4,7 @@ import com.baosight.hggp.common.DdynamicEnum; ...@@ -4,6 +4,7 @@ import com.baosight.hggp.common.DdynamicEnum;
import com.baosight.hggp.core.dao.DaoUtils; import com.baosight.hggp.core.dao.DaoUtils;
import com.baosight.hggp.hg.pz.constant.HgPzSqlConstant; import com.baosight.hggp.hg.pz.constant.HgPzSqlConstant;
import com.baosight.hggp.hg.pz.domain.HGPZ020; import com.baosight.hggp.hg.pz.domain.HGPZ020;
import com.baosight.hggp.hg.pz.domain.HGPZ020A;
import com.baosight.hggp.util.CommonMethod; import com.baosight.hggp.util.CommonMethod;
import com.baosight.hggp.util.EiInfoUtils; import com.baosight.hggp.util.EiInfoUtils;
import com.baosight.hggp.util.LogUtils; import com.baosight.hggp.util.LogUtils;
...@@ -52,7 +53,7 @@ public class ServiceHGPZ020 extends ServiceBase { ...@@ -52,7 +53,7 @@ public class ServiceHGPZ020 extends ServiceBase {
public EiInfo query(EiInfo inInfo) { public EiInfo query(EiInfo inInfo) {
try { try {
Map queryRow = EiInfoUtils.getFirstRow(inInfo); Map queryRow = EiInfoUtils.getFirstRow(inInfo);
inInfo = super.query(inInfo, HGPZ020.QUERY, new HGPZ020()); inInfo = super.query(inInfo, HGPZ020A.QUERY, new HGPZ020A());
} catch (Exception e) { } catch (Exception e) {
LogUtils.setDetailMsg(inInfo, e, "查询失败"); LogUtils.setDetailMsg(inInfo, e, "查询失败");
} }
......
...@@ -54,7 +54,7 @@ public class ServiceHGPZ020A extends ServiceEPBase { ...@@ -54,7 +54,7 @@ public class ServiceHGPZ020A extends ServiceEPBase {
public EiInfo query(EiInfo inInfo) { public EiInfo query(EiInfo inInfo) {
try { try {
Map queryRow = EiInfoUtils.getFirstRow(inInfo); Map queryRow = EiInfoUtils.getFirstRow(inInfo);
inInfo = super.query(inInfo, "HGPZ020A.query", new HGPZ021()); inInfo = super.query(inInfo, HGPZ021.QUERY, new HGPZ021());
} catch (Exception e) { } catch (Exception e) {
LogUtils.setDetailMsg(inInfo, e, "查询失败"); LogUtils.setDetailMsg(inInfo, e, "查询失败");
} }
......
...@@ -138,4 +138,24 @@ public class ServiceHGPZ021 extends ServiceBase { ...@@ -138,4 +138,24 @@ public class ServiceHGPZ021 extends ServiceBase {
} }
} }
/**
* 修改排序
*
* @param inInfo
* @return
*/
public EiInfo updateSort(EiInfo inInfo) {
try {
List<Map> resultMaps = inInfo.getBlock(EiConstant.resultBlock).getRows();
for (Map resultMap : resultMaps) {
DaoUtils.update(HgPzSqlConstant.HgPz021.UPDATE_SORT, resultMap);
}
inInfo = this.query(inInfo);
inInfo.setMsg("操作成功!本次对[" + resultMaps.size() + "]条数据修改成功!");
} catch (Exception e) {
LogUtils.setDetailMsg(inInfo, e, "修改失败");
}
return inInfo;
}
} }
...@@ -16,7 +16,6 @@ ...@@ -16,7 +16,6 @@
TABLE_NAME as "tableName", <!-- 表中文名 --> TABLE_NAME as "tableName", <!-- 表中文名 -->
FIELD_CODE as "fieldCode", <!-- 字段英文名 --> FIELD_CODE as "fieldCode", <!-- 字段英文名 -->
FIELD_NAME as "fieldName", <!-- 字段中文名 --> FIELD_NAME as "fieldName", <!-- 字段中文名 -->
VIEW_SQL as "viewSql", <!-- 视图SQL -->
SORT_NUM as "sortNum" <!-- 排序 --> SORT_NUM as "sortNum" <!-- 排序 -->
</sql> </sql>
...@@ -39,9 +38,6 @@ ...@@ -39,9 +38,6 @@
<isNotEmpty prepend=" AND " property="fieldName"> <isNotEmpty prepend=" AND " property="fieldName">
FIELD_NAME LIKE CONCAT('%', #fieldName#, '%') FIELD_NAME LIKE CONCAT('%', #fieldName#, '%')
</isNotEmpty> </isNotEmpty>
<isNotEmpty prepend=" AND " property="sortNum">
SORT_NUM = #sortNum#
</isNotEmpty>
</sql> </sql>
<sql id="orderBy"> <sql id="orderBy">
...@@ -82,12 +78,9 @@ ...@@ -82,12 +78,9 @@
TABLE_NAME, <!-- 表中文名 --> TABLE_NAME, <!-- 表中文名 -->
FIELD_CODE, <!-- 字段英文名 --> FIELD_CODE, <!-- 字段英文名 -->
FIELD_NAME, <!-- 字段中文名 --> FIELD_NAME, <!-- 字段中文名 -->
VIEW_SQL, <!-- 视图SQL -->
SORT_NUM <!-- 排序 --> SORT_NUM <!-- 排序 -->
) VALUES ( ) VALUES (
#createdBy#, #createdName#, #createdTime#, #updatedBy#, #updatedName#, #updatedTime#, #createdBy#, #createdName#, #createdTime#, #updatedBy#, #updatedName#, #updatedTime#, #accountCode#, #accountName#, #tableCode#, #tableName#, #fieldCode#, #fieldName#, #sortNum#
#accountCode#, #accountName#, #tableCode#, #tableName#, #fieldCode#, #fieldName#, #viewSql#,
#sortNum#
) )
</insert> </insert>
......
...@@ -3,39 +3,47 @@ ...@@ -3,39 +3,47 @@
<sqlMap namespace="HGPZ020A"> <sqlMap namespace="HGPZ020A">
<sql id="column"> <sql id="column">
ID as "id", <!-- --> <include refid="columnA"/>,
CREATED_BY as "createdBy", <!-- 记录创建者 --> <include refid="columnB"/>
CREATED_NAME as "createdName", <!-- 记录创建名称 --> </sql>
CREATED_TIME as "createdTime", <!-- 记录创建时间 -->
UPDATED_BY as "updatedBy", <!-- 记录修改者 --> <sql id="columnA">
UPDATED_NAME as "updatedName", <!-- 记录修改名称 --> A.ID as "id", <!-- -->
UPDATED_TIME as "updatedTime", <!-- 记录修改时间 --> A.CREATED_BY as "createdBy", <!-- 记录创建者 -->
DELETE_FLAG as "deleteFlag", <!-- 0-未删除,1-已删除 --> A.CREATED_NAME as "createdName", <!-- 记录创建名称 -->
STATUS as "status", <!-- 0-未启用,1-已启用 --> A.CREATED_TIME as "createdTime", <!-- 记录创建时间 -->
TABLE_CODE as "tableCode", <!-- 表英文名 --> A.UPDATED_BY as "updatedBy", <!-- 记录修改者 -->
TABLE_NAME as "tableName", <!-- 表中文名 --> A.UPDATED_NAME as "updatedName", <!-- 记录修改名称 -->
FIELD_CODE as "fieldCode", <!-- 字段英文名 --> A.UPDATED_TIME as "updatedTime", <!-- 记录修改时间 -->
FIELD_NAME as "fieldName", <!-- 字段中文名 --> A.ACCOUNT_CODE as "accountCode", <!-- 租户编码 -->
VIEW_SQL as "viewSql", <!-- --> A.ACCOUNT_NAME as "accountName", <!-- 租户名称 -->
SORT_NUM as "sortNum" <!-- 排序 --> A.TABLE_CODE as "tableCode", <!-- 表英文名 -->
A.TABLE_NAME as "tableName", <!-- 表中文名 -->
A.FIELD_CODE as "fieldCode", <!-- 字段英文名 -->
A.FIELD_NAME as "fieldName", <!-- 字段中文名 -->
A.SORT_NUM as "sortNum" <!-- 排序 -->
</sql>
<sql id="columnB">
B.VIEW_SQL as "viewSql", <!-- 视图SQL -->
B.ALIAS_NAME as "aliasName" <!-- 别名 -->
</sql> </sql>
<sql id="condition"> <sql id="condition">
<!-- 过滤已经添加的字段 --> <isNotEmpty prepend=" AND " property="accountCode">
AND NOT EXISTS (SELECT * FROM ${hggpSchema}.HGPZ020 A WHERE A.TABLE_CODE = T.TABLE_CODE A.ACCOUNT_CODE = #accountCode#
AND A.FIELD_CODE = T.FIELD_CODE AND A.ACCOUNT_CODE = #accountCode# </isNotEmpty>
)
<isNotEmpty prepend=" AND " property="tableCode"> <isNotEmpty prepend=" AND " property="tableCode">
TABLE_CODE LIKE CONCAT('%', #tableCode#, '%') A.TABLE_CODE = #tableCode#
</isNotEmpty> </isNotEmpty>
<isNotEmpty prepend=" AND " property="tableName"> <isNotEmpty prepend=" AND " property="tableName">
TABLE_NAME LIKE CONCAT('%', #tableName#, '%') A.TABLE_NAME LIKE CONCAT('%', #tableName#, '%')
</isNotEmpty> </isNotEmpty>
<isNotEmpty prepend=" AND " property="fieldCode"> <isNotEmpty prepend=" AND " property="fieldCode">
FIELD_CODE LIKE CONCAT('%', #fieldCode#, '%') A.FIELD_CODE LIKE CONCAT('%', #fieldCode#, '%')
</isNotEmpty> </isNotEmpty>
<isNotEmpty prepend=" AND " property="fieldName"> <isNotEmpty prepend=" AND " property="fieldName">
FIELD_NAME LIKE CONCAT('%', #fieldName#, '%') A.FIELD_NAME LIKE CONCAT('%', #fieldName#, '%')
</isNotEmpty> </isNotEmpty>
</sql> </sql>
...@@ -45,21 +53,26 @@ ...@@ -45,21 +53,26 @@
$orderBy$ $orderBy$
</isNotEmpty> </isNotEmpty>
<isEmpty property="orderBy"> <isEmpty property="orderBy">
ID DESC A.ID DESC
</isEmpty> </isEmpty>
</dynamic> </dynamic>
</sql> </sql>
<select id="query" resultClass="com.baosight.hggp.hg.pz.domain.HGPZ021"> <select id="query" resultClass="com.baosight.hggp.hg.pz.domain.HGPZ020A">
SELECT SELECT
<include refid="column"/> <include refid="column"/>
FROM ${hggpSchema}.HGPZ021 T WHERE 1=1 FROM ${hggpSchema}.HGPZ020 A, ${hggpSchema}.HGPZ021 B
WHERE A.TABLE_CODE = B.TABLE_CODE
AND A.FIELD_CODE = B.FIELD_CODE
<include refid="condition"/> <include refid="condition"/>
<include refid="orderBy"/> <include refid="orderBy"/>
</select> </select>
<select id="count" resultClass="int"> <select id="count" resultClass="int">
SELECT COUNT(*) FROM ${hggpSchema}.HGPZ021 T WHERE 1=1 SELECT COUNT(*)
FROM ${hggpSchema}.HGPZ020 A, ${hggpSchema}.HGPZ021 B
WHERE A.TABLE_CODE = B.TABLE_CODE
AND A.FIELD_CODE = B.FIELD_CODE
<include refid="condition"/> <include refid="condition"/>
</select> </select>
......
...@@ -16,21 +16,16 @@ ...@@ -16,21 +16,16 @@
TABLE_NAME as "tableName", <!-- 表中文名 --> TABLE_NAME as "tableName", <!-- 表中文名 -->
FIELD_CODE as "fieldCode", <!-- 字段英文名 --> FIELD_CODE as "fieldCode", <!-- 字段英文名 -->
FIELD_NAME as "fieldName", <!-- 字段中文名 --> FIELD_NAME as "fieldName", <!-- 字段中文名 -->
VIEW_SQL as "viewSql", <!-- --> VIEW_SQL as "viewSql", <!-- 视图SQL -->
ALIAS_NAME as "aliasName", <!-- 别名 -->
SORT_NUM as "sortNum", <!-- 排序 --> SORT_NUM as "sortNum", <!-- 排序 -->
IS_DEFAULT as "isDefault" <!-- 是否默认 --> IS_DEFAULT as "isDefault" <!-- 是否默认,1-是,0-否 -->
</sql> </sql>
<sql id="condition"> <sql id="condition">
<isNotEmpty prepend=" AND " property="id"> <isNotEmpty prepend=" AND " property="id">
ID = #id# ID = #id#
</isNotEmpty> </isNotEmpty>
<isNotEmpty prepend=" AND " property="deleteFlag">
DELETE_FLAG = #deleteFlag#
</isNotEmpty>
<isNotEmpty prepend=" AND " property="status">
STATUS = #status#
</isNotEmpty>
<isNotEmpty prepend=" AND " property="tableCode"> <isNotEmpty prepend=" AND " property="tableCode">
TABLE_CODE = #tableCode# TABLE_CODE = #tableCode#
</isNotEmpty> </isNotEmpty>
...@@ -48,6 +43,16 @@ ...@@ -48,6 +43,16 @@
</isNotEmpty> </isNotEmpty>
</sql> </sql>
<sql id="customCondition">
<include refid="condition"/>
<!-- 过滤已经添加的字段 -->
<isNotEmpty prepend=" AND " property="accountCode">
NOT EXISTS (SELECT * FROM ${hggpSchema}.HGPZ020 A WHERE A.TABLE_CODE = T.TABLE_CODE
AND A.FIELD_CODE = T.FIELD_CODE AND A.ACCOUNT_CODE = #accountCode#
)
</isNotEmpty>
</sql>
<sql id="orderBy"> <sql id="orderBy">
<dynamic prepend="ORDER BY"> <dynamic prepend="ORDER BY">
<isNotEmpty property="orderBy"> <isNotEmpty property="orderBy">
...@@ -62,14 +67,14 @@ ...@@ -62,14 +67,14 @@
<select id="query" resultClass="com.baosight.hggp.hg.pz.domain.HGPZ021"> <select id="query" resultClass="com.baosight.hggp.hg.pz.domain.HGPZ021">
SELECT SELECT
<include refid="column"/> <include refid="column"/>
FROM ${hggpSchema}.HGPZ021 WHERE 1=1 FROM ${hggpSchema}.HGPZ021 T WHERE 1=1
<include refid="condition"/> <include refid="customCondition"/>
<include refid="orderBy"/> <include refid="orderBy"/>
</select> </select>
<select id="count" resultClass="int"> <select id="count" resultClass="int">
SELECT COUNT(*) FROM ${hggpSchema}.HGPZ021 WHERE 1=1 SELECT COUNT(*) FROM ${hggpSchema}.HGPZ021 T WHERE 1=1
<include refid="condition"/> <include refid="customCondition"/>
</select> </select>
<insert id="insert"> <insert id="insert">
...@@ -86,13 +91,12 @@ ...@@ -86,13 +91,12 @@
TABLE_NAME, <!-- 表中文名 --> TABLE_NAME, <!-- 表中文名 -->
FIELD_CODE, <!-- 字段英文名 --> FIELD_CODE, <!-- 字段英文名 -->
FIELD_NAME, <!-- 字段中文名 --> FIELD_NAME, <!-- 字段中文名 -->
VIEW_SQL, <!-- 视图 --> VIEW_SQL, <!-- 视图SQL -->
ALIAS_NAME, <!-- 别名 -->
SORT_NUM, <!-- 排序 --> SORT_NUM, <!-- 排序 -->
IS_DEFAULT <!-- 是否默认 --> IS_DEFAULT <!-- 是否默认,1-是,0-否 -->
) VALUES ( ) VALUES (
#createdBy#, #createdName#, #createdTime#, #updatedBy#, #updatedName#, #updatedTime#, #createdBy#, #createdName#, #createdTime#, #updatedBy#, #updatedName#, #updatedTime#, #deleteFlag#, #status#, #tableCode#, #tableName#, #fieldCode#, #fieldName#, #viewSql#, #aliasName#, #sortNum#, #isDefault#
#deleteFlag#, #status#, #tableCode#, #tableName#, #fieldCode#, #fieldName#, #viewSql#,
#sortNum#, #isDefault#
) )
</insert> </insert>
......
...@@ -20,6 +20,7 @@ import com.baosight.hggp.hg.pz.domain.HGPZ016; ...@@ -20,6 +20,7 @@ import com.baosight.hggp.hg.pz.domain.HGPZ016;
import com.baosight.hggp.hg.pz.domain.HGPZ017; import com.baosight.hggp.hg.pz.domain.HGPZ017;
import com.baosight.hggp.hg.pz.domain.HGPZ018; import com.baosight.hggp.hg.pz.domain.HGPZ018;
import com.baosight.hggp.hg.pz.domain.HGPZ020; import com.baosight.hggp.hg.pz.domain.HGPZ020;
import com.baosight.hggp.hg.pz.domain.HGPZ020A;
import com.baosight.hggp.hg.pz.domain.HGPZ021; import com.baosight.hggp.hg.pz.domain.HGPZ021;
import com.baosight.hggp.hg.sc.domain.HGSC004; import com.baosight.hggp.hg.sc.domain.HGSC004;
import com.baosight.hggp.hg.sc.domain.HGSC004A; import com.baosight.hggp.hg.sc.domain.HGSC004A;
...@@ -1035,6 +1036,29 @@ public class HGPZTools { ...@@ -1035,6 +1036,29 @@ public class HGPZTools {
} }
/** /**
* HGPZ020A 定义
*
* @author songx
* @date 2024/11/5,14:28
*/
public static class HgPz020A {
/**
* 查询
*
* @param tableCode
* @return
*/
public static List<HGPZ020A> listByTable(String tableCode) {
Map<String, Object> queryMap = new HashMap<>();
queryMap.put(HGPZ020A.FIELD_ACCOUNT_CODE, UserSessionUtils.getAccountCode());
queryMap.put(HGPZ020A.FIELD_TABLE_CODE, tableCode);
queryMap.put(EiConstant.orderByStr, " A.SORT_NUM ASC");
return DaoBase.getInstance().query(HGPZ020A.QUERY, queryMap);
}
}
/**
* HGPZ021 定义 * HGPZ021 定义
* *
* @author songx * @author songx
......
package com.baosight.hggp.hg.pz.utils; package com.baosight.hggp.hg.pz.utils;
import com.baosight.hggp.core.constant.CommonConstant; import com.baosight.hggp.core.constant.CommonConstant;
import com.baosight.hggp.hg.pz.domain.HGPZ020; import com.baosight.hggp.hg.pz.domain.HGPZ020A;
import com.baosight.hggp.hg.pz.domain.HGPZ021; import com.baosight.hggp.hg.pz.domain.HGPZ021;
import com.baosight.hggp.hg.pz.enums.DynamicTableEnum; import com.baosight.hggp.hg.pz.enums.DynamicTableEnum;
import com.baosight.hggp.hg.pz.tools.HGPZTools; import com.baosight.hggp.hg.pz.tools.HGPZTools;
...@@ -13,11 +13,13 @@ import com.baosight.iplat4j.core.ei.EiBlock; ...@@ -13,11 +13,13 @@ import com.baosight.iplat4j.core.ei.EiBlock;
import com.baosight.iplat4j.core.ei.EiColumn; import com.baosight.iplat4j.core.ei.EiColumn;
import com.baosight.iplat4j.core.ei.EiConstant; import com.baosight.iplat4j.core.ei.EiConstant;
import com.baosight.iplat4j.core.ei.EiInfo; import com.baosight.iplat4j.core.ei.EiInfo;
import com.baosight.iplat4j.core.exception.PlatException;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -64,25 +66,25 @@ public class HGPZUtils { ...@@ -64,25 +66,25 @@ public class HGPZUtils {
*/ */
public static String buildDynamicColumn(DynamicTableEnum dynamicTableEnum) { public static String buildDynamicColumn(DynamicTableEnum dynamicTableEnum) {
// 查询企业配置的字段,如果未配置使用默认字段 // 查询企业配置的字段,如果未配置使用默认字段
List<HGPZ020> dbPz020s = HGPZTools.HgPz020.listByTable(dynamicTableEnum.getCode()); List<HGPZ020A> dbPz020as = HGPZTools.HgPz020A.listByTable(dynamicTableEnum.getCode());
if (CollectionUtils.isNotEmpty(dbPz020s)) { if (CollectionUtils.isNotEmpty(dbPz020as)) {
return dbPz020s.stream().map(item -> { return dbPz020as.stream().map(item -> {
if (StringUtils.isEmpty(item.getViewSql())) { if (StringUtils.isEmpty(item.getViewSql())) {
return item.getFieldCode(); return item.getFieldCode() + " as \"" + item.getAliasName() + "\"";
} else { } else {
return item.getViewSql() + " as " + item.getFieldCode(); return item.getViewSql() + " as \"" + item.getAliasName() + "\"";
} }
}).collect(Collectors.joining(",")); }).collect(Collectors.joining(", "));
} }
List<HGPZ021> dbPz021s = HGPZTools.HgPz021.listDefaultByTable(dynamicTableEnum.getCode()); List<HGPZ021> dbPz021s = HGPZTools.HgPz021.listDefaultByTable(dynamicTableEnum.getCode());
if (CollectionUtils.isNotEmpty(dbPz021s)) { if (CollectionUtils.isNotEmpty(dbPz021s)) {
return dbPz021s.stream().map(item -> { return dbPz021s.stream().map(item -> {
if (StringUtils.isEmpty(item.getViewSql())) { if (StringUtils.isEmpty(item.getViewSql())) {
return item.getFieldCode(); return item.getFieldCode() + " as \"" + item.getAliasName() + "\"";
} else { } else {
return item.getViewSql() + " as " + item.getFieldCode(); return item.getViewSql() + " as \"" + item.getAliasName() + "\"";
} }
}).collect(Collectors.joining(",")); }).collect(Collectors.joining(", "));
} }
return null; return null;
} }
...@@ -93,27 +95,40 @@ public class HGPZUtils { ...@@ -93,27 +95,40 @@ public class HGPZUtils {
* @param inInfo * @param inInfo
* @param clazz * @param clazz
*/ */
public static void buildEiMetadata(EiInfo inInfo, Class clazz) { public static void buildEiMetaData(EiInfo inInfo, Class clazz) throws Exception {
Map queryMap = EiInfoUtils.getFirstRow(inInfo);
// 动态列
String dynamicColumn = MapUtils.getString(queryMap, CommonConstant.Field.DYNAMIC_COLUMN);
if (StringUtils.isBlank(dynamicColumn)) {
return;
}
EiBlock resultBlock = inInfo.getBlock(EiConstant.resultBlock); EiBlock resultBlock = inInfo.getBlock(EiConstant.resultBlock);
try { // 先清除已设置的Meta信息
Map queryMap = EiInfoUtils.getFirstRow(inInfo); resultBlock.getBlockMeta().getMetas().clear();
// 动态列 // 取实体类的Meta列信息
String dynamicColumn = MapUtils.getString(queryMap, CommonConstant.Field.DYNAMIC_COLUMN); Map<String, EiColumn> originMetas = ((DaoEPBase) clazz.newInstance()).eiMetadata.getMetas();
if (StringUtils.isBlank(dynamicColumn)) { for (String itemColumn : dynamicColumn.split(",")) {
return; // 使用别名获取meta信息,例如PROJ_NAME as "projName"
String aliasName = itemColumn.split("as")[1].replace("\"", "").trim();
EiColumn eiColumn = originMetas.get(aliasName);
if (eiColumn != null) {
resultBlock.addMeta(eiColumn);
} }
// 取实体类的Meta列信息 }
Map<String, EiColumn> originMetas = ((DaoEPBase) clazz.newInstance()).eiMetadata.getMetas(); // 按动态列重新组装数据
for (String itemColumn : dynamicColumn.split(",")) { List<Map<String, Object>> newResultMaps = new ArrayList<>();
// 需要去除字段前面的表别名 Set<String> metaKeySet = resultBlock.getBlockMeta().getMetas().keySet();
EiColumn eiColumn = originMetas.get(itemColumn); for (Map resultMap : (List<Map>) resultBlock.getRows()) {
if (eiColumn != null) { LinkedHashMap newResultMap = new LinkedHashMap();
resultBlock.addMeta(eiColumn); for (String metaKey : metaKeySet) {
if (resultMap.containsKey(metaKey)) {
newResultMap.put(metaKey, resultMap.get(metaKey));
} }
} }
} catch (Exception e) { newResultMaps.add(newResultMap);
throw new PlatException("加载EiMetadata失败");
} }
resultBlock.setRows(newResultMaps);
} }
} }
......
...@@ -14,8 +14,6 @@ public class HgScSqlConstant { ...@@ -14,8 +14,6 @@ public class HgScSqlConstant {
*/ */
public static class HgSc001 { public static class HgSc001 {
// 动态查询
public static final String DYNAMIC_QUERY = "HGSC001.dynamicQuery";
// 获取 // 获取
public static final String GET_BY_CODE = "HGSC001.get"; public static final String GET_BY_CODE = "HGSC001.get";
// 德诚修改 // 德诚修改
......
package com.baosight.hggp.hg.sc.domain; package com.baosight.hggp.hg.sc.domain;
import com.baosight.iplat4j.core.util.NumberUtils;
import com.baosight.iplat4j.core.ei.EiColumn;
import com.baosight.iplat4j.core.data.DaoEPBase; import com.baosight.iplat4j.core.data.DaoEPBase;
import com.baosight.iplat4j.core.ei.EiColumn;
import com.baosight.iplat4j.core.util.NumberUtils;
import com.baosight.iplat4j.core.util.StringUtils;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import com.baosight.iplat4j.core.util.StringUtils;
/** /**
* Project: <br> * Project: <br>
...@@ -226,11 +227,11 @@ public class HGSC001 extends DaoEPBase { ...@@ -226,11 +227,11 @@ public class HGSC001 extends DaoEPBase {
eiMetadata.addMeta(eiColumn); eiMetadata.addMeta(eiColumn);
eiColumn = new EiColumn(FIELD_proj_status); eiColumn = new EiColumn(FIELD_proj_status);
eiColumn.setDescName("项目状态 0:在建;1:完工"); eiColumn.setDescName("项目状态");
eiMetadata.addMeta(eiColumn); eiMetadata.addMeta(eiColumn);
eiColumn = new EiColumn(FIELD_approval_status); eiColumn = new EiColumn(FIELD_approval_status);
eiColumn.setDescName("审批状态 0:待审;1:审核中;2:已审"); eiColumn.setDescName("审批状态");
eiMetadata.addMeta(eiColumn); eiMetadata.addMeta(eiColumn);
eiColumn = new EiColumn(FIELD_permiss_start_date); eiColumn = new EiColumn(FIELD_permiss_start_date);
......
...@@ -45,7 +45,7 @@ public class ServiceHGSC001 extends ServiceBase { ...@@ -45,7 +45,7 @@ public class ServiceHGSC001 extends ServiceBase {
@OperationLogAnnotation(operModul = "项目立项", operType = "查询", operDesc = "初始化页面") @OperationLogAnnotation(operModul = "项目立项", operType = "查询", operDesc = "初始化页面")
public EiInfo initLoad(EiInfo inInfo) { public EiInfo initLoad(EiInfo inInfo) {
try { try {
inInfo.addBlock(EiConstant.resultBlock).addBlockMeta(new HGSC001().eiMetadata); // inInfo.addBlock(EiConstant.resultBlock).addBlockMeta(new HGSC001().eiMetadata);
Map map = new HashMap(); Map map = new HashMap();
map.put(HGSC001.FIELD_account_code, UserSessionUtils.getAccountCode()); map.put(HGSC001.FIELD_account_code, UserSessionUtils.getAccountCode());
CommonMethod.initBlock(inInfo, Arrays.asList(DdynamicEnum.PROJ_TYPE_BLOCK_ID,DdynamicEnum.CUSTOMER_RECORD_BLOCK_ID), map,false); CommonMethod.initBlock(inInfo, Arrays.asList(DdynamicEnum.PROJ_TYPE_BLOCK_ID,DdynamicEnum.CUSTOMER_RECORD_BLOCK_ID), map,false);
...@@ -66,10 +66,10 @@ public class ServiceHGSC001 extends ServiceBase { ...@@ -66,10 +66,10 @@ public class ServiceHGSC001 extends ServiceBase {
try { try {
// 设置动态列 // 设置动态列
HGPZUtils.HgPz020.buildDynamicColumn(inInfo, DynamicTableEnum.HGSC001); HGPZUtils.HgPz020.buildDynamicColumn(inInfo, DynamicTableEnum.HGSC001);
inInfo = super.query(inInfo, HgScSqlConstant.HgSc001.DYNAMIC_QUERY, new HGSC001()); inInfo = super.query(inInfo, HGSC001.QUERY, new HGSC001());
// 根据结果集填充eiMetadata // 根据结果集填充eiMetadata
HGPZUtils.HgPz020.buildEiMetadata(inInfo, HGSC001.class); HGPZUtils.HgPz020.buildEiMetaData(inInfo, HGSC001.class);
} catch (PlatException e) { } catch (Exception e) {
LogUtils.setDetailMsg(inInfo, e, "查询失败"); LogUtils.setDetailMsg(inInfo, e, "查询失败");
} }
return inInfo; return inInfo;
......
...@@ -156,27 +156,14 @@ ...@@ -156,27 +156,14 @@
<select id="query" resultClass="com.baosight.hggp.hg.sc.domain.HGSC001"> <select id="query" resultClass="com.baosight.hggp.hg.sc.domain.HGSC001">
SELECT SELECT
<include refid="column"/> <isEmpty property="dynamicColumn"><include refid="column"/></isEmpty>
FROM ${hggpSchema}.HGSC001 WHERE 1=1
<include refid="customCondition"/>
<include refid="orderBy"/>
</select>
<select id="count" resultClass="int">
SELECT COUNT(*) FROM ${hggpSchema}.HGSC001 WHERE 1=1
<include refid="customCondition"/>
</select>
<select id="dynamicQuery" resultClass="com.baosight.hggp.hg.sc.domain.HGSC001">
SELECT
<isEmpty property="dynamicColumn">ID as "id"</isEmpty>
<isNotEmpty property="dynamicColumn">$dynamicColumn$</isNotEmpty> <isNotEmpty property="dynamicColumn">$dynamicColumn$</isNotEmpty>
FROM ${hggpSchema}.HGSC001 WHERE 1=1 FROM ${hggpSchema}.HGSC001 WHERE 1=1
<include refid="customCondition"/> <include refid="customCondition"/>
<include refid="orderBy"/> <include refid="orderBy"/>
</select> </select>
<select id="dynamicCount" resultClass="int"> <select id="count" resultClass="int">
SELECT COUNT(*) FROM ${hggpSchema}.HGSC001 WHERE 1=1 SELECT COUNT(*) FROM ${hggpSchema}.HGSC001 WHERE 1=1
<include refid="customCondition"/> <include refid="customCondition"/>
</select> </select>
......
...@@ -129,7 +129,7 @@ public class DocExcelUtils { ...@@ -129,7 +129,7 @@ public class DocExcelUtils {
} else if (f.getType() == BigDecimal.class) { } else if (f.getType() == BigDecimal.class) {
f.set(obj, new BigDecimal(cellValue)); f.set(obj, new BigDecimal(cellValue));
} else { } else {
f.set(obj, cellValue.trim().toUpperCase(Locale.ROOT)); f.set(obj, cellValue.trim());
} }
} catch (Exception e) { } catch (Exception e) {
String msg = String.format("读取数据值失败,名称[%s],数值[%s],%s", f.getName(), cellValue, e.getMessage()); String msg = String.format("读取数据值失败,名称[%s],数值[%s],%s", f.getName(), cellValue, e.getMessage());
......
...@@ -39,7 +39,7 @@ let query = function () { ...@@ -39,7 +39,7 @@ let query = function () {
let select = function () { let select = function () {
JSColorbox.open({ JSColorbox.open({
href: "HGPZ020A", href: "HGPZ020A",
title: "<div style='text-align: center;'>字段查询</div>", title: "<div style='text-align: center;'>字段定义查询</div>",
width: "95%", width: "95%",
height: "95%", height: "95%",
callbackName: selectCallback callbackName: selectCallback
......
...@@ -4,14 +4,14 @@ ...@@ -4,14 +4,14 @@
<%@ taglib prefix="EF" tagdir="/WEB-INF/tags/EF" %> <%@ taglib prefix="EF" tagdir="/WEB-INF/tags/EF" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/> <c:set var="ctx" value="${pageContext.request.contextPath}"/>
<EF:EFPage title="字段配置"> <EF:EFPage title="页面字段配置">
<EF:EFRegion id="inqu" title="查询条件"> <EF:EFRegion id="inqu" title="查询条件">
<div class="row"> <div class="row">
<EF:EFSelect ename="accountCode" cname="租户" blockId="inqu_status" row="0" colWidth="3" filter="contains"> <EF:EFSelect ename="accountCode" cname="租户" blockId="inqu_status" row="0" colWidth="3" filter="contains">
<EF:EFOption label="全部" value=""/> <EF:EFOption label="全部" value=""/>
<EF:EFOptions blockId="account_block_id" textField="textField" valueField="valueField"/> <EF:EFOptions blockId="account_block_id" textField="textField" valueField="valueField"/>
</EF:EFSelect> </EF:EFSelect>
<EF:EFSelect ename="tableCode" cname="名称" blockId="result" row="0" colWidth="3" filter="contains" <EF:EFSelect ename="tableCode" cname="页面名称" blockId="result" row="0" colWidth="3" filter="contains"
required="true" optionLabel="全部" template="#=valueField#-#=textField#" required="true" optionLabel="全部" template="#=valueField#-#=textField#"
valueTemplate="#=valueField#-#=textField#"> valueTemplate="#=valueField#-#=textField#">
<EF:EFCodeOption codeName="app.pz.dynamicTable"/> <EF:EFCodeOption codeName="app.pz.dynamicTable"/>
...@@ -25,19 +25,22 @@ ...@@ -25,19 +25,22 @@
<EF:EFGrid blockId="result" autoDraw="override" checkMode="row" isFloat="true" sort="single"> <EF:EFGrid blockId="result" autoDraw="override" checkMode="row" isFloat="true" sort="single">
<EF:EFColumn ename="id" cname="主键" hidden="true"/> <EF:EFColumn ename="id" cname="主键" hidden="true"/>
<EF:EFColumn ename="accountCode" cname="租户编码" enable="false" width="120" align="center"/> <EF:EFColumn ename="accountCode" cname="租户编码" enable="false" width="120" align="center"/>
<EF:EFColumn ename="accountName" cname="租户名称" enable="false" width="120" align="center"/> <EF:EFColumn ename="accountName" cname="租户名称" enable="false" width="120" align="center" sort="false"/>
<EF:EFColumn ename="tableCode" cname="表英文名" enable="false" width="120" align="left"/> <EF:EFColumn ename="tableCode" cname="页面英文名" enable="false" width="120" align="left"
<EF:EFColumn ename="tableName" cname="表中文名" enable="false" width="160" align="left"/> alias="a.tableCode"/>
<EF:EFColumn ename="fieldCode" cname="字段英文名" enable="false" width="160" align="left"/> <EF:EFColumn ename="tableName" cname="页面中文名" enable="false" width="140" align="left" sort="false"/>
<EF:EFColumn ename="fieldName" cname="字段中文名" enable="false" width="180" align="left"/> <EF:EFColumn ename="fieldCode" cname="字段英文名" enable="false" width="180" align="left"
alias="a.fieldCode"/>
<EF:EFColumn ename="fieldName" cname="字段中文名" enable="false" width="180" align="left" sort="false"/>
<EF:EFColumn ename="viewSql" cname="视图语句" enable="false" width="200" align="left" sort="false"/> <EF:EFColumn ename="viewSql" cname="视图语句" enable="false" width="200" align="left" sort="false"/>
<EF:EFColumn ename="sortNum" cname="排序" width="100" align="center" required="true"/> <EF:EFColumn ename="aliasName" cname="字段别名" enable="false" width="160" align="left" sort="false"/>
<EF:EFColumn ename="createdName" cname="创建人" enable="false" align="center"/> <EF:EFColumn ename="sortNum" cname="排序" width="100" align="center" required="true" alias="a.sortNum"/>
<EF:EFColumn ename="createdName" cname="创建人" enable="false" align="center" sort="false"/>
<EF:EFColumn ename="createdTime" cname="创建时间" enable="false" width="140" align="center" <EF:EFColumn ename="createdTime" cname="创建时间" enable="false" width="140" align="center"
editType="datetime" parseFormats="['yyyyMMddHHmmss']"/> editType="datetime" parseFormats="['yyyyMMddHHmmss']" alias="a.createdTime"/>
<EF:EFColumn ename="updatedName" cname="修改人" enable="false" align="center"/> <EF:EFColumn ename="updatedName" cname="修改人" enable="false" align="center" sort="false"/>
<EF:EFColumn ename="updatedTime" cname="修改时间" enable="false" width="140" align="center" <EF:EFColumn ename="updatedTime" cname="修改时间" enable="false" width="140" align="center"
editType="datetime" parseFormats="['yyyyMMddHHmmss']"/> editType="datetime" parseFormats="['yyyyMMddHHmmss']" alias="a.updatedTime"/>
</EF:EFGrid> </EF:EFGrid>
</EF:EFRegion> </EF:EFRegion>
......
...@@ -5,14 +5,14 @@ ...@@ -5,14 +5,14 @@
<c:set var="ctx" value="${pageContext.request.contextPath}"/> <c:set var="ctx" value="${pageContext.request.contextPath}"/>
<EF:EFPage title="字段查询"> <EF:EFPage title="字段定义查询">
<EF:EFRegion id="inqu" title="查询区域" type="query"> <EF:EFRegion id="inqu" title="查询区域" type="query">
<div class="row"> <div class="row">
<EF:EFSelect ename="accountCode" cname="租户" blockId="inqu_status" row="0" colWidth="3" filter="contains" <EF:EFSelect ename="accountCode" cname="租户" blockId="inqu_status" row="0" colWidth="3" filter="contains"
required="true"> required="true">
<EF:EFOptions blockId="account_block_id" textField="textField" valueField="valueField"/> <EF:EFOptions blockId="account_block_id" textField="textField" valueField="valueField"/>
</EF:EFSelect> </EF:EFSelect>
<EF:EFSelect ename="tableCode" cname="名称" blockId="result" row="0" colWidth="3" filter="contains" <EF:EFSelect ename="tableCode" cname="页面名称" blockId="result" row="0" colWidth="3" filter="contains"
required="true" optionLabel="全部" template="#=valueField#-#=textField#" required="true" optionLabel="全部" template="#=valueField#-#=textField#"
valueTemplate="#=valueField#-#=textField#"> valueTemplate="#=valueField#-#=textField#">
<EF:EFCodeOption codeName="app.pz.dynamicTable"/> <EF:EFCodeOption codeName="app.pz.dynamicTable"/>
...@@ -25,11 +25,12 @@ ...@@ -25,11 +25,12 @@
<EF:EFRegion id="result" title="记录集"> <EF:EFRegion id="result" title="记录集">
<EF:EFGrid blockId="result" autoDraw="override" isFloat="true" checkMode="row" height="60vh"> <EF:EFGrid blockId="result" autoDraw="override" isFloat="true" checkMode="row" height="60vh">
<EF:EFColumn ename="id" cname="内码" hidden="true"/> <EF:EFColumn ename="id" cname="内码" hidden="true"/>
<EF:EFColumn ename="tableCode" cname="英文名" enable="false" width="120" align="center"/> <EF:EFColumn ename="tableCode" cname="页面英文名" enable="false" width="120" align="center"/>
<EF:EFColumn ename="tableName" cname="表中文名" enable="false" width="160" align="left"/> <EF:EFColumn ename="tableName" cname="页面中文名" enable="false" width="140" align="left"/>
<EF:EFColumn ename="fieldCode" cname="字段英文名" enable="false" width="160" align="center"/> <EF:EFColumn ename="fieldCode" cname="字段英文名" enable="false" width="160" align="left"/>
<EF:EFColumn ename="fieldName" cname="字段中文名" enable="false" width="180" align="left"/> <EF:EFColumn ename="fieldName" cname="字段中文名" enable="false" width="180" align="left"/>
<EF:EFColumn ename="viewSql" cname="视图语句" enable="false" width="200" align="left" sort="false"/> <EF:EFColumn ename="viewSql" cname="视图语句" enable="false" width="200" align="left"/>
<EF:EFColumn ename="aliasName" cname="字段别名" enable="false" width="160" align="left"/>
<EF:EFColumn ename="sortNum" cname="排序" enable="false" width="80" align="center"/> <EF:EFColumn ename="sortNum" cname="排序" enable="false" width="80" align="center"/>
</EF:EFGrid> </EF:EFGrid>
</EF:EFRegion> </EF:EFRegion>
......
...@@ -23,6 +23,8 @@ $(function () { ...@@ -23,6 +23,8 @@ $(function () {
$("#REMOVE").on("click", remove); $("#REMOVE").on("click", remove);
// 导入 // 导入
$("#IMPORT").on("click", importData); $("#IMPORT").on("click", importData);
// 修改排序
$("#UPDATE_SORT").on("click", updateSort);
}); });
/** /**
...@@ -61,7 +63,7 @@ let modify = function (id) { ...@@ -61,7 +63,7 @@ let modify = function (id) {
let addOrUpdate = function (params) { let addOrUpdate = function (params) {
JSColorbox.open({ JSColorbox.open({
href: "HGPZ021A?" + params, href: "HGPZ021A?" + params,
title: "<div style='text-align: center;'>" + (isBlank(params) ? "新增表字段" : "修改表字段") title: "<div style='text-align: center;'>" + (isBlank(params) ? "新增页面字段" : "修改页面字段")
+ "</div>", + "</div>",
width: "60%", width: "60%",
height: "70%", height: "70%",
...@@ -107,4 +109,16 @@ let importData = function () { ...@@ -107,4 +109,16 @@ let importData = function () {
*/ */
let importDataCallback = function () { let importDataCallback = function () {
query(); query();
}
/**
* 修改排序
*/
function updateSort() {
var rows = resultGrid.getCheckedRows();
if (rows.length == 0) {
message("请先勾选数据!");
return;
}
JSUtils.submitGridsData("result", "HGPZ021", "updateSort", true);
} }
\ No newline at end of file
...@@ -4,10 +4,10 @@ ...@@ -4,10 +4,10 @@
<%@ taglib prefix="EF" tagdir="/WEB-INF/tags/EF" %> <%@ taglib prefix="EF" tagdir="/WEB-INF/tags/EF" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/> <c:set var="ctx" value="${pageContext.request.contextPath}"/>
<EF:EFPage title="表字段管理"> <EF:EFPage title="页面字段定义">
<EF:EFRegion id="inqu" title="查询条件"> <EF:EFRegion id="inqu" title="查询条件">
<div class="row"> <div class="row">
<EF:EFSelect ename="tableCode" cname="名称" blockId="result" row="0" colWidth="3" filter="contains" <EF:EFSelect ename="tableCode" cname="页面名称" blockId="result" row="0" colWidth="3" filter="contains"
required="true" optionLabel="全部" template="#=valueField#-#=textField#" required="true" optionLabel="全部" template="#=valueField#-#=textField#"
valueTemplate="#=valueField#-#=textField#"> valueTemplate="#=valueField#-#=textField#">
<EF:EFCodeOption codeName="app.pz.dynamicTable"/> <EF:EFCodeOption codeName="app.pz.dynamicTable"/>
...@@ -22,19 +22,21 @@ ...@@ -22,19 +22,21 @@
<EF:EFColumn ename="id" cname="主键" hidden="true"/> <EF:EFColumn ename="id" cname="主键" hidden="true"/>
<EF:EFColumn ename="operator" cname="操作" locked="true" enable="false" width="80" align="center" <EF:EFColumn ename="operator" cname="操作" locked="true" enable="false" width="80" align="center"
sort="false"/> sort="false"/>
<EF:EFColumn ename="tableCode" cname="英文名" enable="false" width="120" align="center"/> <EF:EFColumn ename="tableCode" cname="页面英文名" enable="false" width="120" align="center"/>
<EF:EFColumn ename="tableName" cname="表中文名" enable="false" width="160" align="left"/> <EF:EFColumn ename="tableName" cname="页面中文名" enable="false" width="140" align="left" sort="false"/>
<EF:EFColumn ename="fieldCode" cname="字段英文名" enable="false" width="160" align="left"/> <EF:EFColumn ename="fieldCode" cname="字段英文名" enable="false" width="180" align="left"/>
<EF:EFColumn ename="fieldName" cname="字段中文名" enable="false" width="180" align="left"/> <EF:EFColumn ename="fieldName" cname="字段中文名" enable="false" width="180" align="left" sort="false"/>
<EF:EFColumn ename="viewSql" cname="视图SQL" enable="false" width="200" align="left" sort="false"/> <EF:EFColumn ename="viewSql" cname="视图SQL" enable="false" width="200" align="left" sort="false"/>
<EF:EFColumn ename="sortNum" cname="排序" enable="false" width="80" align="center"/> <EF:EFColumn ename="aliasName" cname="字段别名" enable="false" width="160" align="left" sort="false"/>
<EF:EFComboColumn ename="isDefault" cname="是否默认" enable="false" width="90" align="center"> <EF:EFColumn ename="sortNum" cname="排序" width="80" align="center" required="true"/>
<EF:EFComboColumn ename="isDefault" cname="是否默认" width="100" align="center" copy="true" required="true"
sort="false">
<EF:EFCodeOption codeName="hggp.common.yesNo"/> <EF:EFCodeOption codeName="hggp.common.yesNo"/>
</EF:EFComboColumn> </EF:EFComboColumn>
<EF:EFColumn ename="createdName" cname="创建人" enable="false" align="center"/> <EF:EFColumn ename="createdName" cname="创建人" enable="false" align="center" sort="false"/>
<EF:EFColumn ename="createdTime" cname="创建时间" enable="false" width="140" align="center" <EF:EFColumn ename="createdTime" cname="创建时间" enable="false" width="140" align="center"
editType="datetime" parseFormats="['yyyyMMddHHmmss']"/> editType="datetime" parseFormats="['yyyyMMddHHmmss']"/>
<EF:EFColumn ename="updatedName" cname="修改人" enable="false" align="center"/> <EF:EFColumn ename="updatedName" cname="修改人" enable="false" align="center" sort="false"/>
<EF:EFColumn ename="updatedTime" cname="修改时间" enable="false" width="140" align="center" <EF:EFColumn ename="updatedTime" cname="修改时间" enable="false" width="140" align="center"
editType="datetime" parseFormats="['yyyyMMddHHmmss']"/> editType="datetime" parseFormats="['yyyyMMddHHmmss']"/>
</EF:EFGrid> </EF:EFGrid>
......
...@@ -35,6 +35,25 @@ $(function () { ...@@ -35,6 +35,25 @@ $(function () {
}) })
/** /**
* 页面加载完
*/
$(window).load(function () {
// 修改时禁用输入框
modifyEnableInput();
});
/**
* 禁用输入框
*/
let modifyEnableInput = function () {
let id = $("#result-0-id").val();
if (!CommonUtils.isBlank(id)) {
$("#result-0-tableCode").data("kendoDropDownList").attr("readonly", true);
$("#result-0-fieldCode").attr("readonly", true);
}
}
/**
* 保存 * 保存
*/ */
let save = function () { let save = function () {
...@@ -53,6 +72,11 @@ let save = function () { ...@@ -53,6 +72,11 @@ let save = function () {
message("字段中文名不能为空"); message("字段中文名不能为空");
return; return;
} }
let aliasName = $("#result-0-aliasName").val();
if (isBlank(aliasName)) {
message("字段别名不能为空");
return;
}
JSUtils.submitGridsData("", "HGPZ021A", "save", false, JSUtils.submitGridsData("", "HGPZ021A", "save", false,
function (res) { function (res) {
if (res.status > -1) { if (res.status > -1) {
......
...@@ -4,16 +4,16 @@ ...@@ -4,16 +4,16 @@
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/> <c:set var="ctx" value="${pageContext.request.contextPath}"/>
<EF:EFPage title="动态表详情"> <EF:EFPage title="页面字段详情">
<EF:EFRegion id="result" title="数据区域"> <EF:EFRegion id="result" title="数据区域">
<EF:EFInput cname="ID" blockId="result" ename="id" row="0" type="hidden"/> <EF:EFInput cname="ID" blockId="result" ename="id" row="0" type="hidden"/>
<div class="row"> <div class="row">
<EF:EFSelect ename="tableCode" cname="名称" blockId="result" row="0" colWidth="6" ratio="2:10" <EF:EFSelect ename="tableCode" cname="页面名称" blockId="result" row="0" colWidth="6" ratio="2:10"
filter="contains" required="true" optionLabel="请选择" template="#=valueField#-#=textField#" filter="contains" required="true" optionLabel="请选择" template="#=valueField#-#=textField#"
valueTemplate="#=valueField#-#=textField#"> valueTemplate="#=valueField#-#=textField#">
<EF:EFCodeOption codeName="app.pz.dynamicTable"/> <EF:EFCodeOption codeName="app.pz.dynamicTable"/>
</EF:EFSelect> </EF:EFSelect>
<EF:EFInput ename="tableName" cname="中文名" blockId="result" row="0" type="hidden"/> <EF:EFInput ename="tableName" cname="页面中文名" blockId="result" row="0" type="hidden"/>
</div> </div>
<div class="row"> <div class="row">
<EF:EFInput ename="fieldCode" cname="字段英文名" blockId="result" row="0" colWidth="6" ratio="2:10" <EF:EFInput ename="fieldCode" cname="字段英文名" blockId="result" row="0" colWidth="6" ratio="2:10"
...@@ -27,6 +27,10 @@ ...@@ -27,6 +27,10 @@
<EF:EFInput ename="viewSql" cname="视图语句" blockId="result" row="0" colWidth="6" ratio="2:10"/> <EF:EFInput ename="viewSql" cname="视图语句" blockId="result" row="0" colWidth="6" ratio="2:10"/>
</div> </div>
<div class="row"> <div class="row">
<EF:EFInput ename="aliasName" cname="别名" blockId="result" row="0" colWidth="6" ratio="2:10"
required="true"/>
</div>
<div class="row">
<EF:EFInput ename="sortNum" cname="排序" blockId="result" row="0" colWidth="6" ratio="2:10"/> <EF:EFInput ename="sortNum" cname="排序" blockId="result" row="0" colWidth="6" ratio="2:10"/>
</div> </div>
<div class="row"> <div class="row">
......
...@@ -11,38 +11,37 @@ $(function () { ...@@ -11,38 +11,37 @@ $(function () {
pageSize: 20, pageSize: 20,
pageSizes: [10, 20, 50, 70, 100], pageSizes: [10, 20, 50, 70, 100],
}, },
columns: [ columns: [{
{ field: "projType",
field: "projType", template: function (item) {
template: function (item) { let template = "";
let template = ""; if (item.projType && projTypeList && projTypeList.length > 0) {
if(item.projType&&projTypeList&&projTypeList.length>0){ var projTypes = item.projType.split(",");
var projTypes = item.projType.split(","); for (let i = 0; i < projTypes.length; i++) {
for(let i=0;i<projTypes.length;i++){ for (let j = 0; j < projTypeList.length; j++) {
for(let j=0;j<projTypeList.length;j++){ if (projTypes[i] === projTypeList[j]['valueField']) {
if(projTypes[i] === projTypeList[j]['valueField']){ if (template === "") {
if(template === ""){ template = projTypeList[j]['textField']
template = projTypeList[j]['textField'] } else {
}else{ template += projTypeList[j]['textField']
template += projTypeList[j]['textField'] }
} }
} }
} }
} }
} return template;
return template; }
} }, {
}, field: "operator",
{ title: "操作",
field: "operator", template: function (item) {
template: function (item) { let template = '<a style="cursor: pointer;display: inline-flex;justify-content: center;margin:auto 5px" '
let template = '<a style="cursor: pointer;display: inline-flex;justify-content: center;margin:auto 5px" ' + +
'onclick="showInfo(' + item.id + ')" >立项详情</a>'; 'onclick="showInfo(' + item.id + ')" >立项详情</a>';
return template; return template;
} }
} }],
],
loadComplete: function(grid){ loadComplete: function(grid){
// 新增 // 新增
$("#add").click(create); $("#add").click(create);
......
...@@ -30,25 +30,25 @@ ...@@ -30,25 +30,25 @@
</div> </div>
</EF:EFRegion> </EF:EFRegion>
<EF:EFRegion id="result" title="记录集"> <EF:EFRegion id="result" title="记录集">
<EF:EFGrid blockId="result" autoDraw="dynamic" isFloat="true" copyToAdd="false"> <EF:EFGrid blockId="result" autoDraw="mixed" isFloat="true" copyToAdd="false">
<EF:EFColumn ename="id" cname="主键" hidden="true"/> <EF:EFColumn ename="id" cname="主键" hidden="true"/>
<EF:EFColumn ename="operator" cname="操作" locked="true" enable="false" width="100" align="center"/> <EF:EFColumn ename="operator" cname="操作" locked="true" enable="false" width="100" align="center"/>
<EF:EFColumn ename="companyName" cname="公司名称" enable="false" width="120" align="center"/> <%-- <EF:EFColumn ename="companyName" cname="公司名称" enable="false" width="120" align="center"/>--%>
<EF:EFColumn ename="projCode" cname="项目编码" enable="false" width="120" align="center"/> <%-- <EF:EFColumn ename="projCode" cname="项目编码" enable="false" width="120" align="center"/>--%>
<EF:EFColumn ename="projName" cname="项目名称" enable="false" width="120" align="center"/> <%-- <EF:EFColumn ename="projName" cname="项目名称" enable="false" width="120" align="center"/>--%>
<EF:EFColumn ename="subcontractName" cname="分包方" enable="false" width="120" align="center"/> <%-- <EF:EFColumn ename="subcontractName" cname="分包方" enable="false" width="120" align="center"/>--%>
<EF:EFColumn ename="genralContractName" cname="总包方" enable="false" width="120" align="center"/> <%-- <EF:EFColumn ename="genralContractName" cname="总包方" enable="false" width="120" align="center"/>--%>
<EF:EFComboColumn ename="branchUnit" cname="分支单位" enable="false" <EF:EFComboColumn ename="branchUnit" cname="分支单位" enable="false" width="130" align="left"
columnTemplate="#=textField#" itemTemplate="#=textField#" columnTemplate="#=textField#" itemTemplate="#=textField#"
textField="textField" valueField="valueField" textField="textField" valueField="valueField"
maxLength="16" readonly="false" width="100" required="true" maxLength="16" readonly="false" required="true"
align="center" filter="contains" sort="true"> filter="contains" sort="true">
<EF:EFOptions blockId="customer_record_block_id" textField="textField" valueField="valueField"/> <EF:EFOptions blockId="customer_record_block_id" textField="textField" valueField="valueField"/>
</EF:EFComboColumn> </EF:EFComboColumn>
<EF:EFColumn ename="projType" cname="项目性质" enable="false" width="120" align="center"/> <%-- <EF:EFColumn ename="projType" cname="项目性质" enable="false" width="120" align="center"/>--%>
<EF:EFColumn ename="permissStartDate" cname="准许开工日期" enable="false" width="120" align="center"/> <%-- <EF:EFColumn ename="permissStartDate" cname="准许开工日期" enable="false" width="120" align="center"/>--%>
<EF:EFColumn ename="startDate" cname="开工日期" enable="false" width="120" align="center"/> <%-- <EF:EFColumn ename="startDate" cname="开工日期" enable="false" width="120" align="center"/>--%>
<EF:EFColumn ename="endDate" cname="完工日期" enable="false" width="120" align="center"/> <%-- <EF:EFColumn ename="endDate" cname="完工日期" enable="false" width="120" align="center"/>--%>
<EF:EFComboColumn ename="projStatus" cname="项目状态" width="80" align="center" required="true" <EF:EFComboColumn ename="projStatus" cname="项目状态" width="80" align="center" required="true"
readonly="true"> readonly="true">
<EF:EFCodeOption codeName="hggp.projStatus"/> <EF:EFCodeOption codeName="hggp.projStatus"/>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment