jeecg 3.6.2 版本发布(移动开发能力:移动OA,移动报表,插件开发)

jeecg_3.6.2
zhangdaiscott 10 years ago
parent e7588d4eb5
commit a9e5e8dd57

@ -1,7 +1,7 @@
JEECG 微云快速开发平台 JEECG 微云快速开发平台
=============== ===============
当前最新版本: 3.6发布日期20151204 当前最新版本: 3.6.2发布日期20160315
前言: 前言:
----------------------------------- -----------------------------------
@ -16,6 +16,9 @@ JEECG
JEECG宗旨是: 简单功能由代Online Coding配置出功能;复杂功能由代码生成器生成进行手工Merge; 复杂流程业务采用表单自定义,业务流程使用工作流来实现、扩展出任务接口,供开发编写业务逻辑。实现了流程任务节点和任务接口的灵活配置,既保证了公司流程的保密行,又减少了开发人员的工作量。 JEECG宗旨是: 简单功能由代Online Coding配置出功能;复杂功能由代码生成器生成进行手工Merge; 复杂流程业务采用表单自定义,业务流程使用工作流来实现、扩展出任务接口,供开发编写业务逻辑。实现了流程任务节点和任务接口的灵活配置,既保证了公司流程的保密行,又减少了开发人员的工作量。
适用项目
-----------------------------------
JEECG快速开发平台可以应用在任何J2EE项目的开发中尤其适合企业信息管理系统MIS、内部办公系统OA、企业资源计划系统ERP、客户关系管理系统CRM其半智能手工Merge的开发方式可以显著提高开发效率70%以上极大降低开发成本JEECG尤为显著的支持SAAS企业级应用开发插件机制更好的支持了SAAS云应用需求。
为什么选择JEECG? 为什么选择JEECG?
----------------------------------- -----------------------------------
@ -26,7 +29,7 @@ JEECG
* 5.常用共通封装,各种工具类(定时任务,短信接口,邮件发送,Excel导出等),基本满足80%项目需求 * 5.常用共通封装,各种工具类(定时任务,短信接口,邮件发送,Excel导出等),基本满足80%项目需求
* 6.集成简易报表工具图像报表和数据导出非常方便可极其方便的生成pdf、excel、word等报表 * 6.集成简易报表工具图像报表和数据导出非常方便可极其方便的生成pdf、excel、word等报表
* 7.集成工作流activiti并实现了只需在页面配置流程转向可极大的简化jbpm工作流的开发用jbpm的流程设计器画出了流程走向一个工作流基本就完成了只需写很少量的java代码 * 7.集成工作流activiti并实现了只需在页面配置流程转向可极大的简化jbpm工作流的开发用jbpm的流程设计器画出了流程走向一个工作流基本就完成了只需写很少量的java代码
* 8.UI快速开发针对WEB UI进行标准式封装页面统一采用自定义标签实现功能列表数据展现、页面校验等,标签使用简单清晰且便于维护 * 8.UI标签针对WEB UI进行标准式封装页面统一采用自定义标签实现功能列表数据展现、页面校验等,标签使用简单清晰且便于维护
* 9.在线流程设计采用开源Activiti流程引擎实现在线画流程,自定义表单,表单挂靠,业务流转 * 9.在线流程设计采用开源Activiti流程引擎实现在线画流程,自定义表单,表单挂靠,业务流转
* 10.查询过滤器查询功能自动生成后台动态拼SQL追加查询条件支持多种匹配方式全匹配/模糊查询/包含查询/不匹配查询); * 10.查询过滤器查询功能自动生成后台动态拼SQL追加查询条件支持多种匹配方式全匹配/模糊查询/包含查询/不匹配查询);
* 11.多数据源:及其简易的使用方式,在线配置数据源配置,便捷的从其他数据抓取数据; * 11.多数据源:及其简易的使用方式,在线配置数据源配置,便捷的从其他数据抓取数据;
@ -45,11 +48,11 @@ JEECG
JEECG 功能特点 JEECG 功能特点
----------------------------------- -----------------------------------
* SpringMvc + Hibernate + UI标签库 + Minidao + Easyui + Easypoi + Highcharts + Ehcache 等基础架构</br> * 采用SpringMVC + Hibernate + Minidao(类Mybatis) + Easyui(UI库)+ Jquery + Boostrap + Ehcache + Redis + Ztree等基础架构</br>
* 采用面向声明的开发模式, 基于泛型编写极少代码即可实现复杂的数据展示、数据编辑、 * 采用面向声明的开发模式, 基于泛型编写极少代码即可实现复杂的数据展示、数据编辑、
表单处理等功能再配合Online Coding在线开发与代码生成器的使用,将J2EE的开发效率提高6倍以上可以将代码减少80%以上。</br> 表单处理等功能再配合Online Coding在线开发与代码生成器的使用,将J2EE的开发效率提高6倍以上可以将代码减少80%以上。</br>
* JEECG V3.6 版本技术点总结: * JEECG 技术点总结:
* <b>技术点一:</b>Online Coding在线开发(通过在线配置实现一个表模型的增删改查功能,无需一行代码,支持用户自定义表单布局) </br> * <b>技术点一:</b>Online Coding在线开发(通过在线配置实现一个表模型的增删改查功能,无需一行代码,支持用户自定义表单布局) </br>
* <b>技术点二:</b>代码生成器,支持多种数据模型,根据表生成对应的Entity,Service,Dao,Action,JSP等,增删改查功能生成直接使用</br> * <b>技术点二:</b>代码生成器,支持多种数据模型,根据表生成对应的Entity,Service,Dao,Action,JSP等,增删改查功能生成直接使用</br>
@ -65,8 +68,12 @@ JEECG
* <b>技术点十二:</b>多种首页风格切换,支持自定义首页风格。经典风格、Shortcut风格、ACE bootstrap风格、云桌面风格</br> * <b>技术点十二:</b>多种首页风格切换,支持自定义首页风格。经典风格、Shortcut风格、ACE bootstrap风格、云桌面风格</br>
* <b>技术点十三:</b>在线配置报表(无需编码,通过在线配置方式,实现曲线图,柱状图,数据等报表)</br> * <b>技术点十三:</b>在线配置报表(无需编码,通过在线配置方式,实现曲线图,柱状图,数据等报表)</br>
* <b>技术点十四:</b>简易Excel导入导出支持单表导出和一对多表模式导出生成的代码自带导入导出功能</br> * <b>技术点十四:</b>简易Excel导入导出支持单表导出和一对多表模式导出生成的代码自带导入导出功能</br>
* <b>技术点十五:</b>移动OA移动OA审批功能采用H5技术实现手机移动办公无缝对接微信、钉钉、微信企业号、也可以做APP</br>
* <b>技术点十六:</b>移动图表在线配置移动报表采用H5技术可以手机端查看</br>
* <b>技术点十七:</b>插件开发业务功能组件以插件方式集成平台也可以单独部署发发布有力支撑了SAAS云应用系统需求</br>
* JEECG V3.6, 经过了专业压力测试,性能测试,保证后台数据的准确性和页面访问速度</br> * JEECG V3.6.2, 经过了专业压力测试,性能测试,保证后台数据的准确性和页面访问速度</br>
* 支持多种浏览器: IE, 火狐, Google 等</br> * 支持多种浏览器: IE, 火狐, Google 等</br>
* 支持数据库: Mysql,Oracle10g,Postgre,SqlServer等</br> * 支持数据库: Mysql,Oracle10g,Postgre,SqlServer等</br>
* 基础权限: 用户,角色,菜单权限,按钮权限,数据权限</br> * 基础权限: 用户,角色,菜单权限,按钮权限,数据权限</br>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -3,16 +3,15 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>org.jeecgframework</groupId> <groupId>org.jeecgframework</groupId>
<artifactId>jeecg</artifactId> <artifactId>jeecg</artifactId>
<version>3.6</version> <version>3.6.2</version>
<packaging>war</packaging> <packaging>war</packaging>
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<codegenerate.version>3.6-SNAPSHOT</codegenerate.version> <codegenerate.version>3.6-SNAPSHOT</codegenerate.version>
<minidao.version>1.5.4</minidao.version> <minidao.version>1.5.5</minidao.version>
<guava.version>16.0.1</guava.version> <guava.version>16.0.1</guava.version>
<!-- 主要依赖库的版本定义 --> <spring.version>4.0.9.RELEASE</spring.version>
<spring.version>3.1.1.RELEASE</spring.version>
<hibernate.version>4.1.0.Final</hibernate.version> <hibernate.version>4.1.0.Final</hibernate.version>
<hibernate-common-annotations.version>4.0.2.Final</hibernate-common-annotations.version> <hibernate-common-annotations.version>4.0.2.Final</hibernate-common-annotations.version>
<hibernate-jpa.version>1.0.1.Final</hibernate-jpa.version> <hibernate-jpa.version>1.0.1.Final</hibernate-jpa.version>
@ -28,13 +27,11 @@
<javassist.version>3.15.0-GA</javassist.version> <javassist.version>3.15.0-GA</javassist.version>
<ant.version>1.6.5</ant.version> <ant.version>1.6.5</ant.version>
<!-- todo 没有用到 <spring-jpa.versoin>2.0.8</spring-jpa.versoin>-->
<mybatis-spring.version>1.1.1</mybatis-spring.version> <mybatis-spring.version>1.1.1</mybatis-spring.version>
<!-- 工具包 --> <!-- 工具包 -->
<!-- json start --> <!-- json start -->
<jackson.version>1.8.4</jackson.version> <jackson.version>1.8.4</jackson.version>
<!-- todo 没有用到 <jackson2.version>2.1.2</jackson2.version>-->
<jacksonframework.version>1.84</jacksonframework.version> <jacksonframework.version>1.84</jacksonframework.version>
<json-lib.version>2.1</json-lib.version> <json-lib.version>2.1</json-lib.version>
<fastjson-lib.version>1.2.6</fastjson-lib.version> <fastjson-lib.version>1.2.6</fastjson-lib.version>
@ -84,14 +81,7 @@
<!-- 测试依赖包 --> <!-- 测试依赖包 -->
<junit.version>4.7</junit.version> <junit.version>4.7</junit.version>
<!-- todo 没有用到 <hamcrest.version>1.3</hamcrest.version>--> <hamcrest.version>1.3</hamcrest.version>
<!-- todo 没有用到 <mockito.version>1.9.5</mockito.version>-->
<!-- todo 没有用到 <powermock.version>1.5</powermock.version>-->
<!-- todo 没有用到 <selenium.version>2.28.0</selenium.version>-->
<!-- todo 没有用到 <jetty.version>7.6.8.v20121106</jetty.version>-->
<!-- Plugin的属性定义 -->
<!-- todo 没有用到 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>-->
<!-- todo 没有用到 <jdk.version>1.6</jdk.version>-->
<CKFinder.version>2.4</CKFinder.version> <CKFinder.version>2.4</CKFinder.version>
<!-- java生成缩略图 --> <!-- java生成缩略图 -->
@ -104,6 +94,7 @@
<groovy.version>2.3.3</groovy.version> <groovy.version>2.3.3</groovy.version>
<!--poi 工具类 --> <!--poi 工具类 -->
<easypoi.version>2.1.4</easypoi.version> <easypoi.version>2.1.4</easypoi.version>
<cxf.version>3.0.2</cxf.version>
</properties> </properties>
<repositories> <repositories>
@ -190,8 +181,18 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.jeecgframework</groupId> <groupId>org.jeecgframework</groupId>
<artifactId>minidao</artifactId> <artifactId>minidao-pe</artifactId>
<version>${minidao.version}</version> <version>${minidao.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-asm</artifactId>
</exclusion>
<exclusion>
<groupId>org.junit</groupId>
<artifactId>com.springsource.org.junit</artifactId>
</exclusion>
</exclusions>
</dependency> </dependency>
<!-- ckfinder start --> <!-- ckfinder start -->
<dependency> <dependency>
@ -328,19 +329,6 @@
<version>${spring.version}</version> <version>${spring.version}</version>
</dependency> </dependency>
<!--工作流依赖包 -->
<!--
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>${activiti.version}</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring</artifactId>
<version>${activiti.version}</version>
</dependency>
-->
<!-- mybatis --> <!-- mybatis -->
<dependency> <dependency>
<groupId>org.mybatis</groupId> <groupId>org.mybatis</groupId>
@ -360,7 +348,6 @@
<groupId>com.cloudhopper.proxool</groupId> <groupId>com.cloudhopper.proxool</groupId>
<artifactId>proxool</artifactId> <artifactId>proxool</artifactId>
<version>${proxool.version}</version> <version>${proxool.version}</version>
<!-- 许仙明加入 geronimo-javamail_1.4_spec后删除-->
<exclusions> <exclusions>
<exclusion> <exclusion>
<artifactId>geronimo-spec-javamail</artifactId> <artifactId>geronimo-spec-javamail</artifactId>
@ -449,11 +436,11 @@
<version>${spring.version}</version> <version>${spring.version}</version>
</dependency> </dependency>
<!-- web依赖包 --> <!-- web begin Spring MVC Test Framework 需要 servlet-api 3.0 以上 -->
<dependency> <dependency>
<groupId>javax.servlet</groupId> <groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId> <artifactId>javax.servlet-api</artifactId>
<version>2.5</version> <version>3.0.1</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
@ -461,6 +448,12 @@
<artifactId>jsp-api</artifactId> <artifactId>jsp-api</artifactId>
<version>2.0</version> <version>2.0</version>
<scope>provided</scope> <scope>provided</scope>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency> </dependency>
<dependency> <dependency>
<groupId>javax.servlet</groupId> <groupId>javax.servlet</groupId>
@ -639,6 +632,12 @@
<groupId>commons-logging</groupId> <groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId> <artifactId>commons-logging</artifactId>
<version>${commons-logging.version}</version> <version>${commons-logging.version}</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency> </dependency>
<dependency> <dependency>
<groupId>commons-logging</groupId> <groupId>commons-logging</groupId>
@ -760,11 +759,17 @@
<version>${junit.version}</version> <version>${junit.version}</version>
</dependency> </dependency>
<!-- hamcrest --> <!-- hamcrest -->
<!--<dependency> <dependency>
<groupId>org.hamcrest</groupId> <groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId> <artifactId>hamcrest-all</artifactId>
<version>${hamcrest.version}</version> <version>${hamcrest.version}</version>
</dependency>--> </dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>0.8.1</version>
<scope>test</scope>
</dependency>
<!-- spring --> <!-- spring -->
<dependency> <dependency>
@ -852,7 +857,6 @@
</dependency> </dependency>
<!-- baidu ueditor--> <!-- baidu ueditor-->
<!-- jsoup HTML parser library @ http://jsoup.org/ -->
<dependency> <dependency>
<groupId>org.jsoup</groupId> <groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId> <artifactId>jsoup</artifactId>
@ -864,10 +868,40 @@
<artifactId>guava</artifactId> <artifactId>guava</artifactId>
<version>${guava.version}</version> <version>${guava.version}</version>
</dependency> </dependency>
<!-- huangzq add cxf webservice 20151231-->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>${cxf.version}</version>
</dependency>
<!-- jeecg plugin begin -->
<dependency>
<groupId>org.p3framework</groupId>
<artifactId>jeecg-p3-core</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.p3framework</groupId>
<artifactId>jeecg-p3-ui</artifactId>
<version>1.0-SNAPSHOT</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.p3framework</groupId>
<artifactId>jeecg-p3-biz-actInvite</artifactId>
<version>1.0.0</version>
</dependency>
<!-- jeecg plugin end -->
</dependencies> </dependencies>
<organization> <organization>
<name>JEECG 智能快速开发平台</name> <name>JEECG 微云快速开发平台</name>
<url>www.jeecg.org</url> <url>www.jeecg.org</url>
</organization> </organization>
<build> <build>

@ -54,6 +54,7 @@ public interface ICommonDao extends IGenericBaseCommonDao{
*/ */
public void parserXml(String fileName); public void parserXml(String fileName);
public List<ComboTree> comTree(List<TSDepart> all,ComboTree comboTree); public List<ComboTree> comTree(List<TSDepart> all,ComboTree comboTree);
/** /**
* ComboTree JSON * ComboTree JSON
* *
@ -64,6 +65,7 @@ public interface ICommonDao extends IGenericBaseCommonDao{
* @return List<ComboTree> * @return List<ComboTree>
*/ */
public List<ComboTree> ComboTree(List all, ComboTreeModel comboTreeModel, List in, boolean recursive); public List<ComboTree> ComboTree(List all, ComboTreeModel comboTreeModel, List in, boolean recursive);
public List<TreeGrid> treegrid(List all,TreeGridModel treeGridModel); public List<TreeGrid> treegrid(List all,TreeGridModel treeGridModel);
} }

@ -322,9 +322,11 @@ public interface IGenericBaseCommonDao {
int maxResult); int maxResult);
public <T> List<T> findByDetached(DetachedCriteria dc); public <T> List<T> findByDetached(DetachedCriteria dc);
/** /**
* *
* @param execute * @param execute
*/ */
public <T> List<T> executeProcedure(String procedureSql,Object... params); public <T> List<T> executeProcedure(String procedureSql,Object... params);
} }

@ -53,9 +53,19 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
queryObject.setParameter("username", user.getUserName()); queryObject.setParameter("username", user.getUserName());
queryObject.setParameter("passowrd", password); queryObject.setParameter("passowrd", password);
List<TSUser> users = queryObject.list(); List<TSUser> users = queryObject.list();
if (users != null && users.size() > 0) {
return users.get(0);
} else {
queryObject = getSession().createQuery(query);
queryObject.setParameter("username", user.getUserName());
queryObject.setParameter("passowrd", user.getPassword());
users = queryObject.list();
if(users != null && users.size() > 0){ if(users != null && users.size() > 0){
return users.get(0); return users.get(0);
} }
}
return null; return null;
} }
@ -181,6 +191,7 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
} }
saveOrUpdate(object); saveOrUpdate(object);
// 文件拷贝到指定硬盘目录 // 文件拷贝到指定硬盘目录
if("txt".equals(extend)){ if("txt".equals(extend)){
//利用utf-8字符集的固定首行隐藏编码原理 //利用utf-8字符集的固定首行隐藏编码原理
//Unicode:FF FE UTF-8:EF BB //Unicode:FF FE UTF-8:EF BB
@ -199,11 +210,13 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
out.close(); out.close();
} }
} else { } else {
//GBK //GBK
String contents = new String(mf.getBytes(),"GBK"); String contents = new String(mf.getBytes(),"GBK");
OutputStream out = new FileOutputStream(savePath); OutputStream out = new FileOutputStream(savePath);
out.write(contents.getBytes()); out.write(contents.getBytes());
out.close(); out.close();
} }
} catch(Exception e){ } catch(Exception e){
String contents = new String(mf.getBytes(),"UTF-8"); String contents = new String(mf.getBytes(),"UTF-8");
@ -217,6 +230,7 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
FileCopyUtils.copy(mf.getBytes(), savefile); FileCopyUtils.copy(mf.getBytes(), savefile);
} }
// if (uploadFile.getSwfpath() != null) { // if (uploadFile.getSwfpath() != null) {
// // 转SWF // // 转SWF
// reflectHelper.setMethodValue(uploadFile.getSwfpath(), path + swfName + ".swf"); // reflectHelper.setMethodValue(uploadFile.getSwfpath(), path + swfName + ".swf");
@ -509,12 +523,15 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
for (Object inobj : in) { for (Object inobj : in) {
ReflectHelper reflectHelper2 = new ReflectHelper(inobj); ReflectHelper reflectHelper2 = new ReflectHelper(inobj);
String inId = oConvertUtils.getString(reflectHelper2.getMethodValue(comboTreeModel.getIdField())); String inId = oConvertUtils.getString(reflectHelper2.getMethodValue(comboTreeModel.getIdField()));
if (inId.equals(id)) { if (inId.equals(id)) {
tree.setChecked(true); tree.setChecked(true);
} }
} }
} }
} }
List curChildList = (List) reflectHelper.getMethodValue(comboTreeModel.getChildField()); List curChildList = (List) reflectHelper.getMethodValue(comboTreeModel.getChildField());
if (curChildList != null && curChildList.size() > 0) { if (curChildList != null && curChildList.size() > 0) {
tree.setState("closed"); tree.setState("closed");
@ -531,6 +548,7 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
} }
} }
return tree; return tree;
} }
/** /**
@ -625,10 +643,12 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
tg.getFieldMap().put(entry.getKey(), fieldValue); tg.getFieldMap().put(entry.getKey(), fieldValue);
} }
} }
if (treeGridModel.getFunctionType() != null) { if (treeGridModel.getFunctionType() != null) {
String functionType = oConvertUtils.getString(reflectHelper.getMethodValue(treeGridModel.getFunctionType())); String functionType = oConvertUtils.getString(reflectHelper.getMethodValue(treeGridModel.getFunctionType()));
tg.setFunctionType(functionType); tg.setFunctionType(functionType);
} }
treegrid.add(tg); treegrid.add(tg);
} }
return treegrid; return treegrid;

@ -875,7 +875,7 @@ public abstract class GenericBaseCommonDao<T, PK extends Serializable>
* 使For JDBC * 使For JDBC
*/ */
public Long getCountForJdbc(String sql) { public Long getCountForJdbc(String sql) {
return this.jdbcTemplate.queryForLong(sql); return this.jdbcTemplate.queryForObject(sql,Long.class);
} }
/** /**
@ -883,7 +883,10 @@ public abstract class GenericBaseCommonDao<T, PK extends Serializable>
* *
*/ */
public Long getCountForJdbcParam(String sql, Object[] objs) { public Long getCountForJdbcParam(String sql, Object[] objs) {
return this.jdbcTemplate.queryForLong(sql, objs);
return this.jdbcTemplate.queryForObject(sql, objs,Long.class);
} }
public List<Map<String, Object>> findForJdbc(String sql, Object... objs) { public List<Map<String, Object>> findForJdbc(String sql, Object... objs) {
@ -905,6 +908,7 @@ public abstract class GenericBaseCommonDao<T, PK extends Serializable>
Object keyValue = null; Object keyValue = null;
KeyHolder keyHolder = null; KeyHolder keyHolder = null;
SqlParameterSource sqlp = new MapSqlParameterSource(param); SqlParameterSource sqlp = new MapSqlParameterSource(param);
if (StringUtil.isNotEmpty(param.get("id"))) {//表示已经生成过id(UUID),则表示是非序列或数据库自增的形式 if (StringUtil.isNotEmpty(param.get("id"))) {//表示已经生成过id(UUID),则表示是非序列或数据库自增的形式
this.namedParameterJdbcTemplate.update(sql,sqlp); this.namedParameterJdbcTemplate.update(sql,sqlp);
}else{//NATIVE or SEQUENCE }else{//NATIVE or SEQUENCE
@ -915,11 +919,15 @@ public abstract class GenericBaseCommonDao<T, PK extends Serializable>
keyValue = keyHolder.getKey().longValue(); keyValue = keyHolder.getKey().longValue();
} }
} }
return keyValue; return keyValue;
} }
public Integer countByJdbc(String sql, Object... param) { public Integer countByJdbc(String sql, Object... param) {
return this.jdbcTemplate.queryForInt(sql, param);
return this.jdbcTemplate.queryForObject(sql, param,Integer.class);
} }
public Map<String, Object> findOneForJdbc(String sql, Object... objs) { public Map<String, Object> findOneForJdbc(String sql, Object... objs) {
@ -973,6 +981,7 @@ public abstract class GenericBaseCommonDao<T, PK extends Serializable>
public <T> List<T> findByDetached(DetachedCriteria dc) { public <T> List<T> findByDetached(DetachedCriteria dc) {
return dc.getExecutableCriteria(getSession()).list(); return dc.getExecutableCriteria(getSession()).list();
} }
/** /**
* *
*/ */
@ -986,4 +995,5 @@ public abstract class GenericBaseCommonDao<T, PK extends Serializable>
return sqlQuery.list(); return sqlQuery.list();
} }
} }

@ -193,14 +193,18 @@ public class JdbcDao extends SimpleJdbcTemplate{
* 使For JDBC * 使For JDBC
*/ */
public Long getCountForJdbc(String sql) { public Long getCountForJdbc(String sql) {
return jdbcTemplate.queryForLong(sql);
return jdbcTemplate.queryForObject(sql,Long.class);
} }
/** /**
* 使For JDBC- * 使For JDBC-
* *
*/ */
public Long getCountForJdbcParam(String sql,Object... objs) { public Long getCountForJdbcParam(String sql,Object... objs) {
return jdbcTemplate.queryForLong(sql, objs);
return jdbcTemplate.queryForObject(sql, objs,Long.class);
} }
public Integer executeSql2(String sql,List<Object> param) { public Integer executeSql2(String sql,List<Object> param) {
@ -212,7 +216,9 @@ public class JdbcDao extends SimpleJdbcTemplate{
} }
public Integer countByJdbc(String sql, Object... param) { public Integer countByJdbc(String sql, Object... param) {
return this.jdbcTemplate.queryForInt(sql, param);
return this.jdbcTemplate.queryForObject(sql, param,Integer.class);
} }
/** /**

@ -7,8 +7,10 @@ import javax.sql.DataSource;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource; import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.jdbc.core.simple.ParameterizedBeanPropertyRowMapper; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.simple.SimpleJdbcInsert; import org.springframework.jdbc.core.simple.SimpleJdbcInsert;
import org.springframework.util.Assert; import org.springframework.util.Assert;
/** /**
@ -21,13 +23,17 @@ public class SimpleJdbcTemplate {
protected final Log logger = LogFactory.getLog(getClass()); protected final Log logger = LogFactory.getLog(getClass());
protected org.springframework.jdbc.core.simple.SimpleJdbcTemplate jdbcTemplate; protected JdbcTemplate jdbcTemplate;
protected NamedParameterJdbcTemplate namedJdbcTemplate;
protected SimpleJdbcInsert simpleJdbcInsert; protected SimpleJdbcInsert simpleJdbcInsert;
public SimpleJdbcTemplate(DataSource dataSource){ public SimpleJdbcTemplate(DataSource dataSource){
jdbcTemplate=new org.springframework.jdbc.core.simple.SimpleJdbcTemplate(dataSource); jdbcTemplate=new JdbcTemplate(dataSource);
namedJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
simpleJdbcInsert=new SimpleJdbcInsert(dataSource); simpleJdbcInsert=new SimpleJdbcInsert(dataSource);
} }
/** /**
* sql * sql
* @param sql(select * from tb where id=:id) * @param sql(select * from tb where id=:id)
@ -63,7 +69,10 @@ public class SimpleJdbcTemplate {
if(parameters!=null){ if(parameters!=null){
return jdbcTemplate.queryForObject(sql, resultBeanMapper(clazz), parameters); return jdbcTemplate.queryForObject(sql, resultBeanMapper(clazz), parameters);
}else{ }else{
return jdbcTemplate.queryForLong(sql, resultBeanMapper(clazz));
return jdbcTemplate.queryForObject(sql, resultBeanMapper(clazz),Long.class);
} }
}catch (Exception e) { }catch (Exception e) {
return null; return null;
@ -79,11 +88,13 @@ public class SimpleJdbcTemplate {
public long findForLong(final String sql,Map parameters){ public long findForLong(final String sql,Map parameters){
try{ try{
Assert.hasText(sql,"sql语句不正确!"); Assert.hasText(sql,"sql语句不正确!");
if(parameters!=null){ if(parameters!=null){
return jdbcTemplate.queryForLong(sql, parameters); return namedJdbcTemplate.queryForObject(sql, parameters,Long.class);
}else{ }else{
return jdbcTemplate.queryForLong(sql); return jdbcTemplate.queryForObject(sql,Long.class);
} }
}catch (Exception e) { }catch (Exception e) {
return 0; return 0;
} }
@ -179,11 +190,11 @@ public class SimpleJdbcTemplate {
return updateCounts; return updateCounts;
} }
protected BeanPropertyRowMapper resultBeanMapper(Class clazz) {
protected ParameterizedBeanPropertyRowMapper resultBeanMapper(Class clazz) { return BeanPropertyRowMapper.newInstance(clazz);
return ParameterizedBeanPropertyRowMapper.newInstance(clazz);
} }
protected BeanPropertySqlParameterSource paramBeanMapper(Object object) { protected BeanPropertySqlParameterSource paramBeanMapper(Object object) {
return new BeanPropertySqlParameterSource(object); return new BeanPropertySqlParameterSource(object);
} }

@ -18,6 +18,7 @@ public class TreeGrid implements java.io.Serializable {
private String state = "open";// 是否展开(open,closed) private String state = "open";// 是否展开(open,closed)
private String order;//排序 private String order;//排序
private Map<String, Object> fieldMap; // 存储实体字段信息容器: key-字段名称value-字段值 private Map<String, Object> fieldMap; // 存储实体字段信息容器: key-字段名称value-字段值
private String functionType;// 其他参数 private String functionType;// 其他参数
public String getFunctionType() { public String getFunctionType() {
@ -26,6 +27,7 @@ public class TreeGrid implements java.io.Serializable {
public void setFunctionType(String functionType) { public void setFunctionType(String functionType) {
this.functionType = functionType; this.functionType = functionType;
} }
public String getOrder() { public String getOrder() {
return order; return order;
} }

@ -247,6 +247,7 @@ public interface CommonService {
public void parserXml(String fileName); public void parserXml(String fileName);
public List<ComboTree> comTree(List<TSDepart> all, ComboTree comboTree); public List<ComboTree> comTree(List<TSDepart> all, ComboTree comboTree);
/** /**
* JSON * JSON
* *
@ -257,6 +258,7 @@ public interface CommonService {
*/ */
public List<ComboTree> ComboTree(List all, ComboTreeModel comboTreeModel, List in, boolean recursive); public List<ComboTree> ComboTree(List all, ComboTreeModel comboTreeModel, List in, boolean recursive);
/** /**
* *
* *
@ -349,6 +351,7 @@ public interface CommonService {
int maxResult); int maxResult);
public <T> List<T> findByDetached(DetachedCriteria dc); public <T> List<T> findByDetached(DetachedCriteria dc);
/** /**
* *
* @param executeSql * @param executeSql
@ -356,4 +359,5 @@ public interface CommonService {
* @return * @return
*/ */
public <T> List<T> executeProcedure(String procedureSql,Object... params); public <T> List<T> executeProcedure(String procedureSql,Object... params);
} }

@ -413,11 +413,13 @@ public class CommonServiceImpl implements CommonService {
public Long getCountForJdbc(String sql) { public Long getCountForJdbc(String sql) {
return commonDao.getCountForJdbc(sql); return commonDao.getCountForJdbc(sql);
} }
public Long getCountForJdbcParam(String sql, Object[] objs) { public Long getCountForJdbcParam(String sql, Object[] objs) {
return commonDao.getCountForJdbcParam(sql,objs); return commonDao.getCountForJdbcParam(sql,objs);
} }
public <T> void batchSave(List<T> entitys) { public <T> void batchSave(List<T> entitys) {
this.commonDao.batchSave(entitys); this.commonDao.batchSave(entitys);
} }
@ -441,10 +443,12 @@ public class CommonServiceImpl implements CommonService {
public <T> List<T> findByDetached(DetachedCriteria dc) { public <T> List<T> findByDetached(DetachedCriteria dc) {
return this.commonDao.findByDetached(dc); return this.commonDao.findByDetached(dc);
} }
/** /**
* *
*/ */
public <T> List<T> executeProcedure(String procedureSql,Object... params) { public <T> List<T> executeProcedure(String procedureSql,Object... params) {
return this.commonDao.executeProcedure(procedureSql, params); return this.commonDao.executeProcedure(procedureSql, params);
} }
} }

@ -56,6 +56,7 @@ public final class Globals {
*/ */
public static String Function_Order_ONE="ofun";//一级权限 public static String Function_Order_ONE="ofun";//一级权限
public static String Function_Order_TWO="tfun";//二级权限 public static String Function_Order_TWO="tfun";//二级权限
/** /**
* *
*/ */
@ -86,6 +87,7 @@ public final class Globals {
* - sql * - sql
*/ */
public static String MENU_DATA_AUTHOR_RULE_SQL ="MENU_DATA_AUTHOR_RULE_SQL"; public static String MENU_DATA_AUTHOR_RULE_SQL ="MENU_DATA_AUTHOR_RULE_SQL";
/** /**
* *
*/ */

@ -12,7 +12,9 @@ public enum SysThemesEnum {
DEFAULT_STYLE("default","main/main","default", "经典风格"), DEFAULT_STYLE("default","main/main","default", "经典风格"),
SHORTCUT_STYLE("shortcut","main/shortcut_main","default", "ShortCut风格"), SHORTCUT_STYLE("shortcut","main/shortcut_main","default", "ShortCut风格"),
SLIDING_STYLE("sliding","main/sliding_main","default", "Sliding云桌面"), SLIDING_STYLE("sliding","main/sliding_main","default", "Sliding云桌面"),
ACE_STYLE("ace","main/ace_main","metro", "ACE平面风格"); ACE_STYLE("ace","main/ace_main","metro", "ACE平面风格"),
ACE_LE_STYLE("acele","main/ace_main","metrole", "ACE2风格"),
DIY("diy","main/diy","default","diy风格");
/** /**
@ -75,14 +77,16 @@ public enum SysThemesEnum {
public static SysThemesEnum toEnum(String style) { public static SysThemesEnum toEnum(String style) {
if (StringUtil.isEmpty(style)) { if (StringUtil.isEmpty(style)) {
return SHORTCUT_STYLE; //默认风格
return ACE_LE_STYLE;
} }
for(SysThemesEnum item : SysThemesEnum.values()) { for(SysThemesEnum item : SysThemesEnum.values()) {
if(item.getStyle().equals(style)) { if(item.getStyle().equals(style)) {
return item; return item;
} }
} }
return SHORTCUT_STYLE; //默认风格
return ACE_LE_STYLE;
} }
public String toString() { public String toString() {

@ -3,6 +3,7 @@ package org.jeecgframework.core.extend.hqlsearch;
import java.beans.PropertyDescriptor; import java.beans.PropertyDescriptor;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
@ -51,7 +52,6 @@ public class HqlGenerateUtil {
* @throws Exception * @throws Exception
*/ */
public static void installHql(CriteriaQuery cq, Object searchObj) { public static void installHql(CriteriaQuery cq, Object searchObj) {
// --author龙金波 ------start---date20150519--------for统一函数处理sqlbuilder----------------------------------
installHql(cq,searchObj,null); installHql(cq,searchObj,null);
} }
@ -67,7 +67,6 @@ public class HqlGenerateUtil {
public static void installHql(CriteriaQuery cq, Object searchObj, public static void installHql(CriteriaQuery cq, Object searchObj,
Map<String, String[]> parameterMap) { Map<String, String[]> parameterMap) {
installHqlJoinAlias(cq, searchObj, getRuleMap(), parameterMap, ""); installHqlJoinAlias(cq, searchObj, getRuleMap(), parameterMap, "");
// --author龙金波 ------start---date20150422--------for增加一个特殊sql参数处理----------------------------------
try{ try{
String json= null; String json= null;
if(StringUtil.isNotEmpty(cq.getDataGrid().getSqlbuilder())){ if(StringUtil.isNotEmpty(cq.getDataGrid().getSqlbuilder())){
@ -87,7 +86,6 @@ public class HqlGenerateUtil {
}catch(Exception e){ }catch(Exception e){
e.printStackTrace(); e.printStackTrace();
} }
// --author龙金波 ------start---date201504022--------for增加一个特殊sql参数处理----------------------------------
cq.add(); cq.add();
} }
@ -139,22 +137,57 @@ public class HqlGenerateUtil {
// 根据类型分类处理 // 根据类型分类处理
if (type.contains("class java.lang") if (type.contains("class java.lang")
|| type.contains("class java.math")) { || type.contains("class java.math")) {
// for查询拼装的替换 // for查询拼装的替换
if (value != null && !value.equals("")) { if (value != null && !value.equals("")) {
HqlRuleEnum rule = PageValueConvertRuleEnum HqlRuleEnum rule = PageValueConvertRuleEnum
.convert(value); .convert(value);
if(HqlRuleEnum.LIKE.equals(rule)&&(!(value+"").contains("*"))){ if(HqlRuleEnum.LIKE.equals(rule)&&(!(value+"").contains("*"))){
value="*%"+value+"%*"; value="*%"+value+"%*";
} }
value = PageValueConvertRuleEnum.replaceValue(rule, value = PageValueConvertRuleEnum.replaceValue(rule,
value); value);
ObjectParseUtil.addCriteria(cq, aliasName, rule, value); ObjectParseUtil.addCriteria(cq, aliasName, rule, value);
} else if (parameterMap != null) { } else if (parameterMap != null) {
Object beginValue_=null , endValue_ =null;
if ("class java.lang.Integer".equals(type)) {
if(!"".equals(beginValue)&&null!=beginValue)
beginValue_ = Integer.parseInt(beginValue);
if(!"".equals(endValue)&&null!=endValue)
endValue_ =Integer.parseInt(endValue);
} else if ("class java.math.BigDecimal".equals(type)) {
if(!"".equals(beginValue)&&null!=beginValue)
beginValue_ = new BigDecimal(beginValue);
if(!"".equals(endValue)&&null!=endValue)
endValue_ = new BigDecimal(endValue);
} else if ("class java.lang.Short".equals(type)) {
if(!"".equals(beginValue)&&null!=beginValue)
beginValue_ =Short.parseShort(beginValue);
if(!"".equals(endValue)&&null!=endValue)
endValue_ =Short.parseShort(endValue);
} else if ("class java.lang.Long".equals(type)) {
if(!"".equals(beginValue)&&null!=beginValue)
beginValue_ = Long.parseLong(beginValue);
if(!"".equals(endValue)&&null!=endValue)
endValue_ =Long.parseLong(endValue);
} else if ("class java.lang.Float".equals(type)) {
if(!"".equals(beginValue)&&null!=beginValue)
beginValue_ = Float.parseFloat(beginValue);
if(!"".equals(endValue)&&null!=endValue)
endValue_ =Float.parseFloat(endValue);
}else{
beginValue_ = beginValue;
endValue_ = endValue;
}
ObjectParseUtil.addCriteria(cq, aliasName, ObjectParseUtil.addCriteria(cq, aliasName,
HqlRuleEnum.GE, beginValue); HqlRuleEnum.GE, beginValue_);
ObjectParseUtil.addCriteria(cq, aliasName, ObjectParseUtil.addCriteria(cq, aliasName,
HqlRuleEnum.LE, endValue); HqlRuleEnum.LE, endValue_);
} }
// for查询拼装的替换 // for查询拼装的替换
} else if ("class java.util.Date".equals(type)) { } else if ("class java.util.Date".equals(type)) {
QueryTimeFormat format = origDescriptors[i].getReadMethod() QueryTimeFormat format = origDescriptors[i].getReadMethod()
@ -193,9 +226,11 @@ public class HqlGenerateUtil {
if (isHaveRuleData(ruleMap, aliasName) ||( isNotEmpty(param) if (isHaveRuleData(ruleMap, aliasName) ||( isNotEmpty(param)
&& itIsNotAllEmpty(param))) { && itIsNotAllEmpty(param))) {
// 如果是实体类,创建别名,继续创建查询条件 // 如果是实体类,创建别名,继续创建查询条件
// for用户反馈 // for用户反馈
cq.createAlias(aliasName, cq.createAlias(aliasName,
aliasName.replaceAll("\\.", "_")); aliasName.replaceAll("\\.", "_"));
// ------------end--Author:JueYue Date:20140521 for用户反馈
installHqlJoinAlias(cq, param, ruleMap, parameterMap, installHqlJoinAlias(cq, param, ruleMap, parameterMap,
aliasName); aliasName);
} }
@ -251,7 +286,10 @@ public class HqlGenerateUtil {
} }
private static String converRuleValue(String ruleValue) { private static String converRuleValue(String ruleValue) {
String value = ResourceUtil.getUserSystemData(ruleValue); //---author:jg_xugj----start-----date:20151226--------for#814 【数据权限】扩展支持写表达式通过session取值
//这个方法建议去掉直接调用ResourceUtil.converRuleValue(ruleValue)
String value = ResourceUtil.converRuleValue(ruleValue);
//---author:jg_xugj----end-----date:20151226--------for#814 【数据权限】扩展支持写表达式通过session取值
return value!= null ? value : ruleValue; return value!= null ? value : ruleValue;
} }
@ -355,6 +393,8 @@ public class HqlGenerateUtil {
} }
return sb.toString(); return sb.toString();
} }
// --author龙金波 ------end---date20150628--------forsql组装
/** /**
* , * ,
* return: java.lang.Integer * return: java.lang.Integer
@ -394,4 +434,69 @@ public class HqlGenerateUtil {
} }
return column; return column;
} }
// --author陈璞 ------end---date20150612--------forsql组装
/**
* HQL
* @return cq
* @param cq
* @param searchObj
*/
public static CriteriaQuery getDataAuthorConditionHql(CriteriaQuery cq, Object searchObj) {
Map<String, TSDataRule> ruleMap = getRuleMap();
PropertyDescriptor origDescriptors[] = PropertyUtils.getPropertyDescriptors(searchObj);
String aliasName, name, type;
for (int i = 0; i < origDescriptors.length; i++) {
aliasName = origDescriptors[i].getName();
name = origDescriptors[i].getName();
type = origDescriptors[i].getPropertyType().toString();
try {
if (judgedIsUselessField(name) || !PropertyUtils.isReadable(searchObj, name)) {
continue;
}
// 如果规则包含这个属性
if (ruleMap.containsKey(aliasName)) {
addRuleToCriteria(ruleMap.get(aliasName), aliasName, origDescriptors[i].getPropertyType(), cq);
}
Object value = PropertyUtils.getSimpleProperty(searchObj, name);
// 根据类型分类处理
if (type.contains("class java.lang") || type.contains("class java.math")) {
// for查询拼装的替换
if (value != null && !value.equals("")) {
HqlRuleEnum rule = PageValueConvertRuleEnum.convert(value);
value = PageValueConvertRuleEnum.replaceValue(rule, value);
ObjectParseUtil.addCriteria(cq, aliasName, rule, value);
}
// for查询拼装的替换
} else if ("class java.util.Date".equals(type)) {
QueryTimeFormat format = origDescriptors[i].getReadMethod().getAnnotation(QueryTimeFormat.class);
SimpleDateFormat userDefined = null;
if (format != null) {
userDefined = new SimpleDateFormat(format.format());
}
if (isNotEmpty(value)) {
cq.eq(aliasName, value);
}
} else if (!StringUtil.isJavaClass(origDescriptors[i].getPropertyType())) {
Object param = PropertyUtils.getSimpleProperty(searchObj, name);
if (isHaveRuleData(ruleMap, aliasName) || (isNotEmpty(param) && itIsNotAllEmpty(param))) {
// 如果是实体类,创建别名,继续创建查询条件
// for用户反馈
cq.createAlias(aliasName, aliasName.replaceAll("\\.", "_"));
// ------------end--Author:JueYue Date:20140521 for用户反馈
getDataAuthorConditionHql(cq, param);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
return cq;
}
} }

@ -35,8 +35,6 @@ public class SysContextSqlConvert {
return ""; return "";
String sqlValue=""; String sqlValue="";
HqlRuleEnum ruleEnum=HqlRuleEnum.getByValue(dataRule.getRuleConditions()); HqlRuleEnum ruleEnum=HqlRuleEnum.getByValue(dataRule.getRuleConditions());
//-----------------------------------------------------------------------
//#{sys_user_code}% //#{sys_user_code}%
String ValueTemp = dataRule.getRuleValue(); String ValueTemp = dataRule.getRuleValue();
String moshi = ""; String moshi = "";
@ -50,9 +48,11 @@ public class SysContextSqlConvert {
} else { } else {
ValueTemp = ValueTemp; ValueTemp = ValueTemp;
} }
//-----------------------------------------------------------------------
String tempValue = null; String tempValue = null;
tempValue = ResourceUtil.getUserSystemData(ValueTemp); //---author:jg_xugj----start-----date:20151226--------for#814 【数据权限】扩展支持写表达式通过session取值
tempValue = ResourceUtil.converRuleValue(ValueTemp);
//---author:jg_xugj----end-----date:20151226--------for#814 【数据权限】扩展支持写表达式通过session取值
if(tempValue!=null){ if(tempValue!=null){
tempValue = tempValue + moshi; tempValue = tempValue + moshi;
}else{ }else{

@ -50,9 +50,11 @@ public class PageValueConvertRuleEnum {
if(rule == null && val.startsWith(HqlParseEnum.SUFFIX_NOT_EQUAL.getValue())){ if(rule == null && val.startsWith(HqlParseEnum.SUFFIX_NOT_EQUAL.getValue())){
rule = HqlRuleEnum.NE; rule = HqlRuleEnum.NE;
} }
if(rule==null&&ResourceUtil.fuzzySearch){ if(rule==null&&ResourceUtil.fuzzySearch){
rule = HqlRuleEnum.LIKE; rule = HqlRuleEnum.LIKE;
} }
return rule != null ? rule : HqlRuleEnum.EQ; return rule != null ? rule : HqlRuleEnum.EQ;
} }

@ -23,6 +23,7 @@ public class OpenOfficePDFConverter implements PDFConverter {
private static int[] port = { 8100 }; private static int[] port = { 8100 };
public void convert2PDF(String inputFile, String pdfFile, String extend) { public void convert2PDF(String inputFile, String pdfFile, String extend) {
// if (extend.equals("txt")) { // if (extend.equals("txt")) {
// //
// String odtFile = FileUtils.getFilePrefix(inputFile) + ".odt"; // String odtFile = FileUtils.getFilePrefix(inputFile) + ".odt";
@ -41,6 +42,7 @@ public class OpenOfficePDFConverter implements PDFConverter {
// //
// } // }
startService(); startService();
//pdfFile = pdfFile.replaceAll(" ", "").replaceAll(" ", ""); //pdfFile = pdfFile.replaceAll(" ", "").replaceAll(" ", "");
org.jeecgframework.core.util.LogUtil.info("进行文档转换转换:" + inputFile + " --> " + pdfFile); org.jeecgframework.core.util.LogUtil.info("进行文档转换转换:" + inputFile + " --> " + pdfFile);

@ -25,9 +25,10 @@ public class SWFToolsSWFConverter implements SWFConverter {
return; return;
} }
String command = ConStant.getSWFToolsPath(extend) + " \"" + inputFile String command = ConStant.getSWFToolsPath(extend) + " \"" + inputFile
//---update-for--文件预览无效------ scott@2013/05/22 ADD START
+ "\" -o " +" \""+ swfFile +" \""+ " -s languagedir=D:\\xpdf-chinese-simplified -T 9 -f"; + "\" -o " +" \""+ swfFile +" \""+ " -s languagedir=D:\\xpdf-chinese-simplified -T 9 -f";
// + "\" -o " + swfFile + " -s languagedir=D:\\xpdf-chinese-simplified -T 9 -f"; // + "\" -o " + swfFile + " -s languagedir=D:\\xpdf-chinese-simplified -T 9 -f";
try { try {
// 开始转换文档 // 开始转换文档
Process process = Runtime.getRuntime().exec(command); Process process = Runtime.getRuntime().exec(command);

@ -95,6 +95,7 @@ public class AuthInterceptor implements HandlerInterceptor {
} }
//String functionId=oConvertUtils.getString(request.getParameter("clickFunctionId")); //String functionId=oConvertUtils.getString(request.getParameter("clickFunctionId"));
String functionId=""; String functionId="";
//onlinecoding的访问地址有规律可循数据权限链接篡改 //onlinecoding的访问地址有规律可循数据权限链接篡改
if(requestPath.equals("cgAutoListController.do?datagrid")) { if(requestPath.equals("cgAutoListController.do?datagrid")) {
requestPath += "&configId=" + request.getParameter("configId"); requestPath += "&configId=" + request.getParameter("configId");
@ -105,8 +106,20 @@ public class AuthInterceptor implements HandlerInterceptor {
if(requestPath.equals("cgFormBuildController.do?ftlForm")) { if(requestPath.equals("cgFormBuildController.do?ftlForm")) {
requestPath += "&tableName=" + request.getParameter("tableName"); requestPath += "&tableName=" + request.getParameter("tableName");
} }
if(requestPath.equals("cgFormBuildController.do?goAddFtlForm")) {
requestPath += "&tableName=" + request.getParameter("tableName");
}
if(requestPath.equals("cgFormBuildController.do?goUpdateFtlForm")) {
requestPath += "&tableName=" + request.getParameter("tableName");
}
if(requestPath.equals("cgFormBuildController.do?goDatilFtlForm")) {
requestPath += "&tableName=" + request.getParameter("tableName");
}
//这个地方用全匹配?应该是模糊查询吧 //这个地方用全匹配?应该是模糊查询吧
//TODO //TODO
String uri= request.getRequestURI().substring(request.getContextPath().length() + 1); String uri= request.getRequestURI().substring(request.getContextPath().length() + 1);
String realRequestPath = null; String realRequestPath = null;
if(uri.endsWith(".do")||uri.endsWith(".action")){ if(uri.endsWith(".do")||uri.endsWith(".action")){
@ -115,6 +128,7 @@ public class AuthInterceptor implements HandlerInterceptor {
realRequestPath=uri; realRequestPath=uri;
} }
List<TSFunction> functions = systemService.findByProperty(TSFunction.class, "functionUrl", realRequestPath); List<TSFunction> functions = systemService.findByProperty(TSFunction.class, "functionUrl", realRequestPath);
if (functions.size()>0){ if (functions.size()>0){
functionId = functions.get(0).getId(); functionId = functions.get(0).getId();
} }
@ -126,6 +140,7 @@ public class AuthInterceptor implements HandlerInterceptor {
request.setAttribute(Globals.OPERATIONCODES, operationCodes); request.setAttribute(Globals.OPERATIONCODES, operationCodes);
} }
if(!oConvertUtils.isEmpty(functionId)){ if(!oConvertUtils.isEmpty(functionId)){
//List<String> allOperation=this.systemService.findListbySql("SELECT operationcode FROM t_s_operation WHERE functionid='"+functionId+"'"); //List<String> allOperation=this.systemService.findListbySql("SELECT operationcode FROM t_s_operation WHERE functionid='"+functionId+"'");
List<TSOperation> allOperation=this.systemService.findByProperty(TSOperation.class, "TSFunction.id", functionId); List<TSOperation> allOperation=this.systemService.findByProperty(TSOperation.class, "TSFunction.id", functionId);
@ -135,8 +150,10 @@ public class AuthInterceptor implements HandlerInterceptor {
//s=s.replaceAll(" ", ""); //s=s.replaceAll(" ", "");
newall.add(s); newall.add(s);
} }
//---author:jg_xugj----start-----date:20151210--------for#781 【oracle兼容】兼容问题fun.operation!='' 在oracle 数据下不正确
String hasOperSql="SELECT operation FROM t_s_role_function fun, t_s_role_user role WHERE " + String hasOperSql="SELECT operation FROM t_s_role_function fun, t_s_role_user role WHERE " +
"fun.functionid='"+functionId+"' AND fun.operation!='' AND fun.roleid=role.roleid AND role.userid='"+client.getUser().getId()+"' "; "fun.functionid='"+functionId+"' AND fun.operation is not null AND fun.roleid=role.roleid AND role.userid='"+client.getUser().getId()+"' ";
//---author:jg_xugj----end-----date:20151210--------for#781 【oracle兼容】兼容问题fun.operation!='' 在oracle 数据下不正确
List<String> hasOperList = this.systemService.findListbySql(hasOperSql); List<String> hasOperList = this.systemService.findListbySql(hasOperSql);
for(String operationIds:hasOperList){ for(String operationIds:hasOperList){
for(String operationId:operationIds.split(",")){ for(String operationId:operationIds.split(",")){
@ -191,7 +208,9 @@ public class AuthInterceptor implements HandlerInterceptor {
boolean bMgrUrl = false; boolean bMgrUrl = false;
if (functionList == null) { if (functionList == null) {
// functionList = systemService.loadAll(TSFunction.class); // functionList = systemService.loadAll(TSFunction.class);
functionList = systemService.findHql("from TSFunction where functionType = ? ", (short)0); functionList = systemService.findHql("from TSFunction where functionType = ? ", (short)0);
} }
for (TSFunction function : functionList) { for (TSFunction function : functionList) {
if (function.getFunctionUrl() != null && function.getFunctionUrl().startsWith(requestPath)) { if (function.getFunctionUrl() != null && function.getFunctionUrl().startsWith(requestPath)) {
@ -215,12 +234,15 @@ public class AuthInterceptor implements HandlerInterceptor {
"ru.userid='"+userid+"' AND f.functionurl like '"+requestPath+"%'"; "ru.userid='"+userid+"' AND f.functionurl like '"+requestPath+"%'";
List list = this.systemService.findListbySql(sql); List list = this.systemService.findListbySql(sql);
if(list.size()==0){ if(list.size()==0){
String orgId = currLoginUser.getCurrentDepart().getId(); String orgId = currLoginUser.getCurrentDepart().getId();
String functionOfOrgSql = "SELECT DISTINCT f.id from t_s_function f, t_s_role_function rf, t_s_role_org ro " + String functionOfOrgSql = "SELECT DISTINCT f.id from t_s_function f, t_s_role_function rf, t_s_role_org ro " +
"WHERE f.ID=rf.functionid AND rf.roleid=ro.role_id " + "WHERE f.ID=rf.functionid AND rf.roleid=ro.role_id " +
"AND ro.org_id='" +orgId+ "' AND f.functionurl like '"+requestPath+"%'"; "AND ro.org_id='" +orgId+ "' AND f.functionurl like '"+requestPath+"%'";
List functionOfOrgList = this.systemService.findListbySql(functionOfOrgSql); List functionOfOrgList = this.systemService.findListbySql(functionOfOrgSql);
return functionOfOrgList.size() > 0; return functionOfOrgList.size() > 0;
}else{ }else{
return true; return true;
} }

@ -1,8 +1,9 @@
package org.jeecgframework.core.timer; package org.jeecgframework.core.timer;
import java.text.ParseException;
import org.jeecgframework.web.system.pojo.base.TSTimeTaskEntity; import org.jeecgframework.web.system.pojo.base.TSTimeTaskEntity;
import org.jeecgframework.web.system.service.TimeTaskServiceI; import org.jeecgframework.web.system.service.TimeTaskServiceI;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.CronTriggerBean; import org.springframework.scheduling.quartz.CronTriggerBean;
/** /**
@ -20,13 +21,20 @@ public class DataBaseCronTriggerBean extends CronTriggerBean{
/** /**
* *
*/ */
public void afterPropertiesSet() throws Exception { public void afterPropertiesSet() {
super.afterPropertiesSet(); super.afterPropertiesSet();
TSTimeTaskEntity task = timeTaskService.findUniqueByProperty TSTimeTaskEntity task = timeTaskService.findUniqueByProperty
(TSTimeTaskEntity.class,"taskId",this.getName()); (TSTimeTaskEntity.class,"taskId",this.getName());
if(task!=null&&task.getIsEffect().equals("1") if(task!=null&&task.getIsEffect().equals("1")
&&!task.getCronExpression().equals(this.getCronExpression())){ &&!task.getCronExpression().equals(this.getCronExpression())){
try {
this.setCronExpression(task.getCronExpression()); this.setCronExpression(task.getCronExpression());
} catch (ParseException e) {
// TODO 异常必须被处理
e.printStackTrace();
}
DynamicTask.updateSpringMvcTaskXML(this,task.getCronExpression()); DynamicTask.updateSpringMvcTaskXML(this,task.getCronExpression());
} }
} }

@ -65,7 +65,6 @@ public class DateUtils extends PropertyEditorSupport {
*/ */
public static Calendar getCalendar(long millis) { public static Calendar getCalendar(long millis) {
Calendar cal = Calendar.getInstance(); Calendar cal = Calendar.getInstance();
// --------------------cal.setTimeInMillis(millis);
cal.setTime(new Date(millis)); cal.setTime(new Date(millis));
return cal; return cal;
} }
@ -256,7 +255,6 @@ public class DateUtils extends PropertyEditorSupport {
* @return * @return
*/ */
public static Timestamp getCalendarTimestamp(Calendar cal) { public static Timestamp getCalendarTimestamp(Calendar cal) {
// ---------------------return new Timestamp(cal.getTimeInMillis());
return new Timestamp(cal.getTime().getTime()); return new Timestamp(cal.getTime().getTime());
} }
@ -290,7 +288,6 @@ public class DateUtils extends PropertyEditorSupport {
* @return * @return
*/ */
public static long getMillis(Calendar cal) { public static long getMillis(Calendar cal) {
// --------------------return cal.getTimeInMillis();
return cal.getTime().getTime(); return cal.getTime().getTime();
} }

@ -107,6 +107,7 @@ public class DynamicDBUtil {
} }
return list; return list;
} }
//add-begin--Author:luobaoli Date:20150620 for增加返回值为List的方法
public static <T> List<T> findList(final String dbKey, String sql, Class<T> clazz,Object... param) { public static <T> List<T> findList(final String dbKey, String sql, Class<T> clazz,Object... param) {
List<T> list; List<T> list;
JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey); JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
@ -118,6 +119,7 @@ public class DynamicDBUtil {
} }
return list; return list;
} }
//add-end--Author:luobaoli Date:20150620 for增加返回值为List的方法
public static void main(String[] args) { public static void main(String[] args) {
DynamicDataSourceEntity dynamicSourceEntity = new DynamicDataSourceEntity(); DynamicDataSourceEntity dynamicSourceEntity = new DynamicDataSourceEntity();

@ -0,0 +1,49 @@
package org.jeecgframework.core.util;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
/**
* ehcache
*
* cacheNameehcache.xml
*/
public class EhcacheUtil {
public static CacheManager manager = CacheManager.create();
public static Object get(String cacheName, Object key) {
Cache cache = manager.getCache(cacheName);
if (cache != null) {
Element element = cache.get(key);
if (element != null) {
return element.getObjectValue();
}
}
return null;
}
public static void put(String cacheName, Object key, Object value) {
Cache cache = manager.getCache(cacheName);
if (cache != null) {
cache.put(new Element(key, value));
}
}
public static boolean remove(String cacheName, Object key) {
Cache cache = manager.getCache(cacheName);
if (cache != null) {
return cache.remove(key);
}
return false;
}
public static void main(String[] args) {
String key = "key";
String value = "hello";
EhcacheUtil.put("mytest", key, value);
System.out.println(EhcacheUtil.get("mytest", key));
}
}

@ -263,6 +263,7 @@ public class ListtoMenu {
return menuString.toString(); return menuString.toString();
} }
/** /**
* EASYUI * EASYUI
* @param map the map of Map<Integer, List<TSFunction>> * @param map the map of Map<Integer, List<TSFunction>>
@ -311,6 +312,7 @@ public class ListtoMenu {
return menuString.toString(); return menuString.toString();
} }
/** /**
* ----- * -----
* @param parent * @param parent
@ -414,15 +416,19 @@ public class ListtoMenu {
menuString.append(getMutiLang(function.getFunctionName())); menuString.append(getMutiLang(function.getFunctionName()));
menuString.append("\',\'"); menuString.append("\',\'");
menuString.append(function.getFunctionUrl()); menuString.append(function.getFunctionUrl());
//如果是外部链接则不加菜单ID //如果是外部链接则不加菜单ID
if(function.getFunctionUrl().indexOf("http:")==-1){ if(function.getFunctionUrl().indexOf("http:")==-1){
if(function.getFunctionUrl().indexOf("?") == -1){ if(function.getFunctionUrl().indexOf("?") == -1){
menuString.append("?clickFunctionId="); menuString.append("?clickFunctionId=");
} else { } else {
menuString.append("&clickFunctionId="); menuString.append("&clickFunctionId=");
} }
menuString.append(function.getId()); menuString.append(function.getId());
} }
menuString.append("\',\'"); menuString.append("\',\'");
menuString.append(icon); menuString.append(icon);
menuString.append("\')\" title=\""); menuString.append("\')\" title=\"");
@ -509,6 +515,7 @@ public class ListtoMenu {
menuString.append(" </ul> "); menuString.append(" </ul> ");
return menuString.toString(); return menuString.toString();
} }
/** /**
* webos * webos
* @param pFunctions * @param pFunctions
@ -637,8 +644,10 @@ public class ListtoMenu {
dataString.append("'"+function.getId()+"':{ "); dataString.append("'"+function.getId()+"':{ ");
dataString.append("appid:'"+function.getId()+"',"); dataString.append("appid:'"+function.getId()+"',");
dataString.append("url:'"+function.getFunctionUrl()+"',"); dataString.append("url:'"+function.getFunctionUrl()+"',");
// dataString.append(getIconandName(function.getFunctionName())); // dataString.append(getIconandName(function.getFunctionName()));
dataString.append(getIconAndNameForDesk(function)); dataString.append(getIconAndNameForDesk(function));
dataString.append("asc :"+function.getFunctionOrder()); dataString.append("asc :"+function.getFunctionOrder());
dataString.append(" },"); dataString.append(" },");
} }
@ -647,6 +656,7 @@ public class ListtoMenu {
data = dataString.toString(); data = dataString.toString();
return data; return data;
} }
private static String getIconAndNameForDesk(TSFunction function) { private static String getIconAndNameForDesk(TSFunction function) {
StringBuffer dataString = new StringBuffer(); StringBuffer dataString = new StringBuffer();
@ -726,6 +736,69 @@ public class ListtoMenu {
String lang_context = mutiLangService.getLang(functionName); String lang_context = mutiLangService.getLang(functionName);
return lang_context; return lang_context;
} }
public static String getDIYMultistageTree(Map<Integer, List<TSFunction>> map) {
if(map==null||map.size()==0||!map.containsKey(0)){return "不具有任何权限,\n请找管理员分配权限";}
StringBuffer menuString = new StringBuffer();
List<TSFunction> list = map.get(0);
int curIndex = 0;
for (TSFunction function : list) {
menuString.append("<li>");
menuString.append("<a href=\"#\" class=\"dropdown-toggle\" ><i class=\"menu-icon fa fa-desktop\"></i>")
.append(getMutiLang(function.getFunctionName()));
/* int submenusize = function.getSubFunctionSize();
if (submenusize == 0) {
menuString.append("</a></li>");
}
if (submenusize > 0) {
menuString.append("<b class=\"arrow\"></b><ul class=\"submenu\" >");
}
menuString.append(getSubMenu(function,1,map));
if (submenusize > 0) {
menuString.append("</ul></li>");
}*/
if(!function.hasSubFunction(map)){
menuString.append("</a></li>");
menuString.append(getDIYSubMenu(function,1,map));
}else{
menuString.append("<b class=\"arrow\"></b><ul class=\"submenu\" >");
menuString.append(getDIYSubMenu(function,1,map));
menuString.append("</ul></li>");
}
curIndex++;
}
return menuString.toString();
}
private static String getDIYSubMenu(TSFunction parent,int level,Map<Integer, List<TSFunction>> map){
StringBuffer menuString = new StringBuffer();
List<TSFunction> list = map.get(level);
for (TSFunction function : list) {
if (function.getTSFunction().getId().equals(parent.getId())){
if(!function.hasSubFunction(map)){
menuString.append(getLeafOfDIYTree(function));
}else if(map.containsKey(level+1)){
String icon = "folder";
try{
if (function.getTSIcon() != null) {
icon = TSIcon.allTSIcons.get(function.getTSIcon().getId()).getIconClas();
}
}catch(Exception e){
//TODO handle icon load exception
}
menuString.append("<li><a href=\"#\" ><i class=\"menu-icon fa fa-eye pink\" iconCls=\""
+ icon+"\" ></i>"+ getMutiLang(function.getFunctionName()) +"<b class=\"arrow\"></b>");
menuString.append("<ul class=\"submenu\">");
menuString.append(getChildOfTree(function,level+1,map));
menuString.append("</ul></li>");
}
}
}
return menuString.toString();
}
public static String getAceMultistageTree(Map<Integer, List<TSFunction>> map) { public static String getAceMultistageTree(Map<Integer, List<TSFunction>> map) {
if(map==null||map.size()==0||!map.containsKey(0)){return "不具有任何权限,\n请找管理员分配权限";} if(map==null||map.size()==0||!map.containsKey(0)){return "不具有任何权限,\n请找管理员分配权限";}
StringBuffer menuString = new StringBuffer(); StringBuffer menuString = new StringBuffer();
@ -786,6 +859,33 @@ public class ListtoMenu {
return menuString.toString(); return menuString.toString();
} }
private static String getLeafOfACETree(TSFunction function){ private static String getLeafOfACETree(TSFunction function){
StringBuffer menuString = new StringBuffer();
String icon = "folder";
if (function.getTSIcon() != null) {
icon = TSIcon.allTSIcons.get(function.getTSIcon().getId()).getIconClas();
}
//addTabs({id:'home',title:'首页',close: false,url: 'loginController.do?home'});
String name = getMutiLang(function.getFunctionName()) ;
menuString.append("<li iconCls=\"");
menuString.append(icon);
menuString.append("\"> <a href=\"javascript:addTabs({id:\'").append(function.getId());
menuString.append("\',title:\'").append(name).append("\',close: true,url:\'");
menuString.append(function.getFunctionUrl());
menuString.append("&clickFunctionId=");
menuString.append(function.getId());
// menuString.append("\',\'");
// menuString.append(icon);
menuString.append("\'})\" title=\"");
menuString.append(name);
menuString.append("\" url=\"");
menuString.append(function.getFunctionUrl());
menuString.append("\" >");
menuString.append(name);
menuString.append("</a></li>");
return menuString.toString();
}
private static String getLeafOfDIYTree(TSFunction function){
StringBuffer menuString = new StringBuffer(); StringBuffer menuString = new StringBuffer();
String icon = "folder"; String icon = "folder";
if (function.getTSIcon() != null) { if (function.getTSIcon() != null) {

@ -28,6 +28,8 @@ public class MutiLangUtil {
String message = getMutiLangInstance().getLang("common.delete.success.param", param_lang_key); String message = getMutiLangInstance().getLang("common.delete.success.param", param_lang_key);
return message; return message;
} }
// add-begin--Author:zhangguoming Date:20140727 for通用删除消息方法
/** /**
* *
* *
@ -38,6 +40,7 @@ public class MutiLangUtil {
String message = getMutiLangInstance().getLang("common.delete.fail.param", param_lang_key); String message = getMutiLangInstance().getLang("common.delete.fail.param", param_lang_key);
return message; return message;
} }
// add-end--Author:zhangguoming Date:20140727 for通用删除消息方法
/** /**
* *
@ -107,6 +110,24 @@ public class MutiLangUtil {
return false; return false;
} }
/**
* lang_key
*
* @param lang_key
* @return truefalse
*/
public static boolean existLangKey(String lang_key,String langCode)
{
String hql = "from MutiLangEntity where langKey = '"+lang_key+"' and langCode = '"+langCode+"'";
List<MutiLangEntity> langKeyList = getMutiLangInstance().findByQueryString(hql);
if(!langKeyList.isEmpty())
{
return true;
}
return false;
}
/** /**
* context * context
* *
@ -142,6 +163,8 @@ public class MutiLangUtil {
String context = getMutiLangInstance().getLang(title, langArg); String context = getMutiLangInstance().getLang(title, langArg);
return context; return context;
} }
// add-begin--Author:zhangguoming Date:20140928 for多语言
/** /**
* *
* @param list * @param list
@ -176,5 +199,6 @@ public class MutiLangUtil {
list.clear(); list.clear();
list.addAll(newList); list.addAll(newList);
} }
// add-end--Author:zhangguoming Date:20140928 for多语言
} }

@ -1,5 +1,6 @@
package org.jeecgframework.core.util; package org.jeecgframework.core.util;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.ResourceBundle; import java.util.ResourceBundle;
@ -10,6 +11,7 @@ import javax.servlet.http.HttpSession;
import org.jeecgframework.core.constant.DataBaseConstant; import org.jeecgframework.core.constant.DataBaseConstant;
import org.jeecgframework.web.system.manager.ClientManager; import org.jeecgframework.web.system.manager.ClientManager;
import org.jeecgframework.web.system.pojo.base.Client;
import org.jeecgframework.web.system.pojo.base.TSRoleFunction; import org.jeecgframework.web.system.pojo.base.TSRoleFunction;
import org.jeecgframework.web.system.pojo.base.TSUser; import org.jeecgframework.web.system.pojo.base.TSUser;
@ -19,10 +21,13 @@ import org.jeecgframework.web.system.pojo.base.TSUser;
* *
*/ */
public class ResourceUtil { public class ResourceUtil {
public static final String LOCAL_CLINET_USER = "LOCAL_CLINET_USER";
private static final ResourceBundle bundle = java.util.ResourceBundle.getBundle("sysConfig"); private static final ResourceBundle bundle = java.util.ResourceBundle.getBundle("sysConfig");
public final static boolean fuzzySearch= ResourceUtil.isFuzzySearch(); public final static boolean fuzzySearch= ResourceUtil.isFuzzySearch();
/** /**
* session * session
* *
@ -35,7 +40,16 @@ public class ResourceUtil {
HttpSession session = ContextHolderUtils.getSession(); HttpSession session = ContextHolderUtils.getSession();
if(ClientManager.getInstance().getClient(session.getId())!=null){ if(ClientManager.getInstance().getClient(session.getId())!=null){
return ClientManager.getInstance().getClient(session.getId()).getUser(); return ClientManager.getInstance().getClient(session.getId()).getUser();
}else{
TSUser u = (TSUser) session.getAttribute(ResourceUtil.LOCAL_CLINET_USER);
Client client = new Client();
client.setIp("");
client.setLogindatetime(new Date());
client.setUser(u);
ClientManager.getInstance().addClinet(session.getId(), client);
} }
return null; return null;
} }
@Deprecated @Deprecated
@ -145,6 +159,7 @@ public class ResourceUtil {
public static final String getJdbcUrl() { public static final String getJdbcUrl() {
return DBTypeUtil.getDBType().toLowerCase(); return DBTypeUtil.getDBType().toLowerCase();
} }
/** /**
* *
* *
@ -163,6 +178,7 @@ public class ResourceUtil {
return bundle.getString("randCodeType"); return bundle.getString("randCodeType");
} }
/** /**
* *
* *
@ -191,7 +207,6 @@ public class ResourceUtil {
key = key; key = key;
} }
//----------------------------------------------------------------
//替换为系统的登录用户账号 //替换为系统的登录用户账号
// if (key.equals(DataBaseConstant.CREATE_BY) // if (key.equals(DataBaseConstant.CREATE_BY)
@ -213,7 +228,6 @@ public class ResourceUtil {
) { ) {
returnValue = getSessionUserName().getRealName(); returnValue = getSessionUserName().getRealName();
} }
//----------------------------------------------------------------
//替换为系统登录用户的公司编码 //替换为系统登录用户的公司编码
if (key.equals(DataBaseConstant.SYS_COMPANY_CODE)|| key.equals(DataBaseConstant.SYS_COMPANY_CODE_TABLE)) { if (key.equals(DataBaseConstant.SYS_COMPANY_CODE)|| key.equals(DataBaseConstant.SYS_COMPANY_CODE_TABLE)) {
returnValue = getSessionUserName().getCurrentDepart().getOrgCode() returnValue = getSessionUserName().getCurrentDepart().getOrgCode()
@ -234,13 +248,59 @@ public class ResourceUtil {
if(returnValue!=null){returnValue = returnValue + moshi;} if(returnValue!=null){returnValue = returnValue + moshi;}
return returnValue; return returnValue;
} }
//---author:jg_xugj----start-----date:20151226--------for#814 【数据权限】扩展支持写表达式通过session取值
/**
* session
* @param key
* Session
* @return
*/
private static String getSessionData(String key) {
//${myVar}%
//得到${} 后面的值
String moshi = "";
if(key.indexOf("}")!=-1){
moshi = key.substring(key.indexOf("}")+1);
}
String returnValue = null;
//---author:jg_xugj----start-----date:20151226--------for修改bug 1、key.contains("${") 应改为 key.contains("#{") 2、StringUtil.isEmpty(key) 判断 不为空
if (key.contains("#{")) {
key = key.substring(2,key.indexOf("}"));
}
//从session中取得值
if (!StringUtil.isEmpty(key)) {
HttpSession session = ContextHolderUtils.getSession();
returnValue = (String) session.getAttribute(key);
}
//---author:jg_xugj----end-----date:20151226--------for修改bug 1、key.contains("${") 应改为 key.contains("#{") 2、StringUtil.isEmpty(key) 判断 不为空
//结果加上${} 后面的值
if(returnValue!=null){returnValue = returnValue + moshi;}
return returnValue;
}
/**
*
*
* @param key
* Session
* @return
*/
public static String converRuleValue(String ruleValue) {
String value = ResourceUtil.getSessionData(ruleValue);
if(StringUtil.isEmpty(value))
value = ResourceUtil.getUserSystemData(ruleValue);
return value!= null ? value : ruleValue;
}
//---author:jg_xugj----end-----date:20151226--------for#814 【数据权限】扩展支持写表达式通过session取值
public static void main(String[] args) { public static void main(String[] args) {
org.jeecgframework.core.util.LogUtil.info(getPorjectPath()); org.jeecgframework.core.util.LogUtil.info(getPorjectPath());
org.jeecgframework.core.util.LogUtil.info(getSysPath()); org.jeecgframework.core.util.LogUtil.info(getSysPath());
} }
public static boolean isFuzzySearch(){ public static boolean isFuzzySearch(){
return "1".equals(bundle.getString("fuzzySearch")); return "1".equals(bundle.getString("fuzzySearch"));
} }
} }

@ -24,6 +24,8 @@ public class SqlUtil {
public static final String POSTGRE_SQL = "select * from ( {0}) sel_tab00 limit {2} offset {1}";//postgresql public static final String POSTGRE_SQL = "select * from ( {0}) sel_tab00 limit {2} offset {1}";//postgresql
public static final String ORACLE_SQL = "select * from (select row_.*,rownum rownum_ from ({0}) row_ where rownum <= {1}) where rownum_>{2}"; //oracle public static final String ORACLE_SQL = "select * from (select row_.*,rownum rownum_ from ({0}) row_ where rownum <= {1}) where rownum_>{2}"; //oracle
public static final String SQLSERVER_SQL = "select * from ( select row_number() over(order by tempColumn) tempRowNumber, * from (select top {1} tempColumn = 0, {0}) t ) tt where tempRowNumber > {2}"; //sqlserver public static final String SQLSERVER_SQL = "select * from ( select row_number() over(order by tempColumn) tempRowNumber, * from (select top {1} tempColumn = 0, {0}) t ) tt where tempRowNumber > {2}"; //sqlserver
//add-begin--Author:luobaoli Date:20150620 for增加各个数据库获取表的SQL和获取指定表列的SQL
/** /**
* SQL * SQL
*/ */
@ -39,6 +41,7 @@ public class SqlUtil {
public static final String POSTGRE_ALLCOLUMNS_SQL = "select table_name from information_schema.columns where table_name = {0}"; public static final String POSTGRE_ALLCOLUMNS_SQL = "select table_name from information_schema.columns where table_name = {0}";
public static final String ORACLE_ALLCOLUMNS_SQL = "select column_name from all_tab_columns where table_name ={0}"; public static final String ORACLE_ALLCOLUMNS_SQL = "select column_name from all_tab_columns where table_name ={0}";
public static final String SQLSERVER_ALLCOLUMNS_SQL = "select name from syscolumns where id={0}"; public static final String SQLSERVER_ALLCOLUMNS_SQL = "select name from syscolumns where id={0}";
//add-end--Author:luobaoli Date:20150620 for增加各个数据库获取表的SQL和获取指定表列的SQL
/** /**
* sql * sql
* @param sql * @param sql
@ -149,6 +152,8 @@ public class SqlUtil {
int selectDistinctIndex = sql.toLowerCase().indexOf("select distinct"); int selectDistinctIndex = sql.toLowerCase().indexOf("select distinct");
return selectIndex + (selectDistinctIndex == selectIndex ? 15 : 6); return selectIndex + (selectDistinctIndex == selectIndex ? 15 : 6);
} }
//add-begin--Author:luobaoli Date:20150620 for增加各个数据库获取表的SQL和获取指定表列的SQL
public static String getAllTableSql(String dbType,String ... param){ public static String getAllTableSql(String dbType,String ... param){
if(StringUtil.isNotEmpty(dbType)){ if(StringUtil.isNotEmpty(dbType)){
if(dbType.equals(DATABSE_TYPE_MYSQL)){ if(dbType.equals(DATABSE_TYPE_MYSQL)){
@ -178,4 +183,5 @@ public class SqlUtil {
} }
return null; return null;
} }
//add-end--Author:luobaoli Date:20150620 for增加各个数据库获取表的SQL和获取指定表列的SQL
} }

@ -56,6 +56,23 @@ public class SysThemesUtil {
StringBuffer sb = new StringBuffer(""); StringBuffer sb = new StringBuffer("");
if("metro".equals(sysThemesEnum.getThemes())){ if("metro".equals(sysThemesEnum.getThemes())){
sb.append("<link id=\"easyuiTheme\" rel=\"stylesheet\" href=\"plug-in/easyui/themes/metro/main.css\" type=\"text/css\"></link>"); sb.append("<link id=\"easyuiTheme\" rel=\"stylesheet\" href=\"plug-in/easyui/themes/metro/main.css\" type=\"text/css\"></link>");
}else if("metrole".equals(sysThemesEnum.getThemes())){
sb.append("<link id=\"easyuiTheme\" rel=\"stylesheet\" href=\"plug-in/easyui/themes/metrole/main.css\" type=\"text/css\"></link>");
}
return sb.toString();
}
/**
* easyui main.css
* @param sysThemesEnum
* @return
*/
public static String getEasyUiIconTheme(SysThemesEnum sysThemesEnum){
StringBuffer sb = new StringBuffer("");
if("metrole".equals(sysThemesEnum.getThemes())){
sb.append("<link id=\"easyuiTheme\" rel=\"stylesheet\" href=\"plug-in/easyui/themes/metrole/icon.css\" type=\"text/css\"></link>");
}else {
sb.append("<link id=\"easyuiTheme\" rel=\"stylesheet\" href=\"plug-in/easyui/themes/icon.css\" type=\"text/css\"></link>");
} }
return sb.toString(); return sb.toString();
} }
@ -69,6 +86,8 @@ public class SysThemesUtil {
StringBuffer sb = new StringBuffer(""); StringBuffer sb = new StringBuffer("");
if("metro".equals(sysThemesEnum.getThemes())){ if("metro".equals(sysThemesEnum.getThemes())){
sb.append("<link rel=\"stylesheet\" href=\"plug-in/tools/css/metro/common.css\" type=\"text/css\"></link>"); sb.append("<link rel=\"stylesheet\" href=\"plug-in/tools/css/metro/common.css\" type=\"text/css\"></link>");
}else if("metrole".equals(sysThemesEnum.getThemes())){
sb.append("<link rel=\"stylesheet\" href=\"plug-in/tools/css/metrole/common.css\" type=\"text/css\"></link>");
}else{ }else{
sb.append("<link rel=\"stylesheet\" href=\"plug-in/tools/css/common.css\" type=\"text/css\"></link>"); sb.append("<link rel=\"stylesheet\" href=\"plug-in/tools/css/common.css\" type=\"text/css\"></link>");
} }
@ -84,12 +103,30 @@ public class SysThemesUtil {
StringBuffer sb = new StringBuffer(""); StringBuffer sb = new StringBuffer("");
if("metro".equals(sysThemesEnum.getThemes())){ if("metro".equals(sysThemesEnum.getThemes())){
sb.append("<script type=\"text/javascript\" src=\"plug-in/lhgDialog/lhgdialog.min.js?skin=metro\"></script>"); sb.append("<script type=\"text/javascript\" src=\"plug-in/lhgDialog/lhgdialog.min.js?skin=metro\"></script>");
}else if("metrole".equals(sysThemesEnum.getThemes())){
sb.append("<script type=\"text/javascript\" src=\"plug-in/lhgDialog/lhgdialog.min.js?skin=metrole\"></script>");
}else{ }else{
sb.append("<script type=\"text/javascript\" src=\"plug-in/lhgDialog/lhgdialog.min.js\"></script>"); sb.append("<script type=\"text/javascript\" src=\"plug-in/lhgDialog/lhgdialog.min.js\"></script>");
} }
return sb.toString(); return sb.toString();
} }
/**
* lhgdialog
* @param sysThemesEnum
* @return
*/
public static String getBootstrapTabTheme(SysThemesEnum sysThemesEnum){
StringBuffer sb = new StringBuffer("");
if("metro".equals(sysThemesEnum.getThemes())){
sb.append("<script type=\"text/javascript\" src=\"plug-in/ace/js/bootstrap-tab.js\"></script>");
}else if("metrole".equals(sysThemesEnum.getThemes())){
sb.append("<script type=\"text/javascript\" src=\"plug-in/ace/js/bootstrap-tab.js\"></script>");
}
return sb.toString();
}
/** /**
* graphreport report.css * graphreport report.css
* @param sysThemesEnum * @param sysThemesEnum
@ -99,7 +136,8 @@ public class SysThemesUtil {
StringBuffer sb = new StringBuffer(""); StringBuffer sb = new StringBuffer("");
if("metro".equals(sysThemesEnum.getThemes())){ if("metro".equals(sysThemesEnum.getThemes())){
sb.append("<link rel=\"stylesheet\" href=\"plug-in/graphreport/css/metro/report.css\" type=\"text/css\"></link>"); sb.append("<link rel=\"stylesheet\" href=\"plug-in/graphreport/css/metro/report.css\" type=\"text/css\"></link>");
}else if("metrole".equals(sysThemesEnum.getThemes())){
sb.append("<link rel=\"stylesheet\" href=\"plug-in/graphreport/css/metrole/report.css\" type=\"text/css\"></link>");
}else{ }else{
sb.append("<link rel=\"stylesheet\" href=\"plug-in/graphreport/css/report.css\" type=\"text/css\"></link>"); sb.append("<link rel=\"stylesheet\" href=\"plug-in/graphreport/css/report.css\" type=\"text/css\"></link>");
} }
@ -115,6 +153,8 @@ public class SysThemesUtil {
StringBuffer sb = new StringBuffer(""); StringBuffer sb = new StringBuffer("");
if("metro".equals(sysThemesEnum.getThemes())){ if("metro".equals(sysThemesEnum.getThemes())){
sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/metro/divfrom.css\" type=\"text/css\"/>"); sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/metro/divfrom.css\" type=\"text/css\"/>");
}else if("metrole".equals(sysThemesEnum.getThemes())){
sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/metrole/divfrom.css\" type=\"text/css\"/>");
}else{ }else{
sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/divfrom.css\" type=\"text/css\"/>"); sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/divfrom.css\" type=\"text/css\"/>");
} }
@ -130,6 +170,8 @@ public class SysThemesUtil {
StringBuffer sb = new StringBuffer(""); StringBuffer sb = new StringBuffer("");
if("metro".equals(sysThemesEnum.getThemes())){ if("metro".equals(sysThemesEnum.getThemes())){
sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/metro/style.css\" type=\"text/css\"/>"); sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/metro/style.css\" type=\"text/css\"/>");
}else if("metrole".equals(sysThemesEnum.getThemes())){
sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/metrole/style.css\" type=\"text/css\"/>");
}else{ }else{
sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/style.css\" type=\"text/css\"/>"); sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/style.css\" type=\"text/css\"/>");
} }
@ -145,6 +187,8 @@ public class SysThemesUtil {
StringBuffer sb = new StringBuffer(""); StringBuffer sb = new StringBuffer("");
if("metro".equals(sysThemesEnum.getThemes())){ if("metro".equals(sysThemesEnum.getThemes())){
sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/metro/tablefrom.css\" type=\"text/css\"/>"); sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/metro/tablefrom.css\" type=\"text/css\"/>");
}else if("metrole".equals(sysThemesEnum.getThemes())){
sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/metrole/tablefrom.css\" type=\"text/css\"/>");
}else{ }else{
sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/tablefrom.css\" type=\"text/css\"/>"); sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/tablefrom.css\" type=\"text/css\"/>");
} }

@ -10,7 +10,9 @@ package org.jeecgframework.core.util;
public class YouBianCodeUtil { public class YouBianCodeUtil {
// 数字位数(默认生成3位的数字) // 数字位数(默认生成3位的数字)
private static final int numLength = 4;
private static final int numLength = 2;//代表数字位数
public static final int zhanweiLength = 1+numLength; public static final int zhanweiLength = 1+numLength;
/** /**
@ -74,8 +76,10 @@ public class YouBianCodeUtil {
*/ */
public static synchronized String getSubYouBianCode(String parentCode,String localCode) { public static synchronized String getSubYouBianCode(String parentCode,String localCode) {
if(localCode!=null && localCode!=""){ if(localCode!=null && localCode!=""){
// return parentCode + getNextYouBianCode(localCode); // return parentCode + getNextYouBianCode(localCode);
return getNextYouBianCode(localCode); return getNextYouBianCode(localCode);
}else{ }else{
parentCode = parentCode + "A"+ getNextStrNum(0); parentCode = parentCode + "A"+ getNextStrNum(0);
} }

@ -57,6 +57,7 @@ public class AuthFilterTag extends TagSupport{
protected void getAuthFilter(StringBuilder out) { protected void getAuthFilter(StringBuilder out) {
out.append("<script type=\"text/javascript\">"); out.append("<script type=\"text/javascript\">");
out.append("$(document).ready(function(){"); out.append("$(document).ready(function(){");
if(ResourceUtil.getSessionUserName().getUserName().equals("admin")|| !Globals.BUTTON_AUTHORITY_CHECK){ if(ResourceUtil.getSessionUserName().getUserName().equals("admin")|| !Globals.BUTTON_AUTHORITY_CHECK){
}else{ }else{
Set<String> operationCodes = (Set<String>) super.pageContext.getRequest().getAttribute(Globals.OPERATIONCODES); Set<String> operationCodes = (Set<String>) super.pageContext.getRequest().getAttribute(Globals.OPERATIONCODES);
@ -81,6 +82,7 @@ public class AuthFilterTag extends TagSupport{
} }
} }
out.append("});"); out.append("});");
out.append("</script>"); out.append("</script>");
} }

@ -22,6 +22,7 @@ import org.jeecgframework.core.util.oConvertUtils;
public class BaseTag extends TagSupport { public class BaseTag extends TagSupport {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
protected String type = "default";// 加载类型 protected String type = "default";// 加载类型
protected String cssTheme ; protected String cssTheme ;
public String getCssTheme() { public String getCssTheme() {
@ -33,6 +34,7 @@ public class BaseTag extends TagSupport {
this.cssTheme = cssTheme; this.cssTheme = cssTheme;
} }
public void setType(String type) { public void setType(String type) {
this.type = type; this.type = type;
} }
@ -60,6 +62,7 @@ public class BaseTag extends TagSupport {
} }
} }
//} //}
if(cssTheme==null||"".equals(cssTheme)){ if(cssTheme==null||"".equals(cssTheme)){
cssTheme="default"; cssTheme="default";
}*/ }*/
@ -75,13 +78,17 @@ public class BaseTag extends TagSupport {
String lang = (String)((HttpServletRequest) this.pageContext.getRequest()).getSession().getAttribute("lang"); String lang = (String)((HttpServletRequest) this.pageContext.getRequest()).getSession().getAttribute("lang");
String langjs = StringUtil.replace("<script type=\"text/javascript\" src=\"plug-in/mutiLang/{0}.js\"></script>", "{0}", lang); String langjs = StringUtil.replace("<script type=\"text/javascript\" src=\"plug-in/mutiLang/{0}.js\"></script>", "{0}", lang);
sb.append(langjs); sb.append(langjs);
if (oConvertUtils.isIn("jquery-webos", types)) { if (oConvertUtils.isIn("jquery-webos", types)) {
sb.append("<script type=\"text/javascript\" src=\"plug-in/sliding/js/jquery-1.7.1.min.js\"></script>"); sb.append("<script type=\"text/javascript\" src=\"plug-in/sliding/js/jquery-1.7.1.min.js\"></script>");
} else if (oConvertUtils.isIn("jquery", types)) { } else if (oConvertUtils.isIn("jquery", types)) {
sb.append("<script type=\"text/javascript\" src=\"plug-in/jquery/jquery-1.8.3.js\"></script>"); sb.append("<script type=\"text/javascript\" src=\"plug-in/jquery/jquery-1.8.3.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/jquery/jquery.cookie.js\" ></script>"); sb.append("<script type=\"text/javascript\" src=\"plug-in/jquery/jquery.cookie.js\" ></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/jquery-plugs/storage/jquery.storageapi.min.js\" ></script>"); sb.append("<script type=\"text/javascript\" src=\"plug-in/jquery-plugs/storage/jquery.storageapi.min.js\" ></script>");
} }
if (oConvertUtils.isIn("ckeditor", types)) { if (oConvertUtils.isIn("ckeditor", types)) {
sb.append("<script type=\"text/javascript\" src=\"plug-in/ckeditor/ckeditor.js\"></script>"); sb.append("<script type=\"text/javascript\" src=\"plug-in/ckeditor/ckeditor.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/tools/ckeditorTool.js\"></script>"); sb.append("<script type=\"text/javascript\" src=\"plug-in/tools/ckeditorTool.js\"></script>");
@ -92,10 +99,13 @@ public class BaseTag extends TagSupport {
} }
if (oConvertUtils.isIn("easyui", types)) { if (oConvertUtils.isIn("easyui", types)) {
sb.append("<script type=\"text/javascript\" src=\"plug-in/tools/dataformat.js\"></script>"); sb.append("<script type=\"text/javascript\" src=\"plug-in/tools/dataformat.js\"></script>");
// sb.append("<link id=\"easyuiTheme\" rel=\"stylesheet\" href=\"plug-in/easyui/themes/"+cssTheme+"/easyui.css\" type=\"text/css\"></link>"); // sb.append("<link id=\"easyuiTheme\" rel=\"stylesheet\" href=\"plug-in/easyui/themes/"+cssTheme+"/easyui.css\" type=\"text/css\"></link>");
sb.append(SysThemesUtil.getEasyUiTheme(sysThemesEnum)); sb.append(SysThemesUtil.getEasyUiTheme(sysThemesEnum));
sb.append(SysThemesUtil.getEasyUiMainTheme(sysThemesEnum)); sb.append(SysThemesUtil.getEasyUiMainTheme(sysThemesEnum));
sb.append("<link rel=\"stylesheet\" href=\"plug-in/easyui/themes/icon.css\" type=\"text/css\"></link>");
sb.append(SysThemesUtil.getEasyUiIconTheme(sysThemesEnum));
// sb.append("<link rel=\"stylesheet\" href=\"plug-in/easyui/themes/icon.css\" type=\"text/css\"></link>");
sb.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"plug-in/accordion/css/accordion.css\">"); sb.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"plug-in/accordion/css/accordion.css\">");
sb.append("<script type=\"text/javascript\" src=\"plug-in/easyui/jquery.easyui.min.1.3.2.js\"></script>"); sb.append("<script type=\"text/javascript\" src=\"plug-in/easyui/jquery.easyui.min.1.3.2.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/easyui/locale/zh-cn.js\"></script>"); sb.append("<script type=\"text/javascript\" src=\"plug-in/easyui/locale/zh-cn.js\"></script>");
@ -161,10 +171,13 @@ public class BaseTag extends TagSupport {
} }
if (oConvertUtils.isIn("tools", types)) { if (oConvertUtils.isIn("tools", types)) {
// sb.append("<link rel=\"stylesheet\" href=\"plug-in/tools/css/"+("metro".equals(cssTheme)?"metro/":"")+"common.css\" type=\"text/css\"></link>"); // sb.append("<link rel=\"stylesheet\" href=\"plug-in/tools/css/"+("metro".equals(cssTheme)?"metro/":"")+"common.css\" type=\"text/css\"></link>");
sb.append(SysThemesUtil.getCommonTheme(sysThemesEnum)); sb.append(SysThemesUtil.getCommonTheme(sysThemesEnum));
// sb.append("<script type=\"text/javascript\" src=\"plug-in/lhgDialog/lhgdialog.min.js"+("metro".equals(cssTheme)?"?skin=metro":"")+"\"></script>"); // sb.append("<script type=\"text/javascript\" src=\"plug-in/lhgDialog/lhgdialog.min.js"+("metro".equals(cssTheme)?"?skin=metro":"")+"\"></script>");
sb.append(SysThemesUtil.getLhgdialogTheme(sysThemesEnum)); sb.append(SysThemesUtil.getLhgdialogTheme(sysThemesEnum));
sb.append(SysThemesUtil.getBootstrapTabTheme(sysThemesEnum));
sb.append(StringUtil.replace("<script type=\"text/javascript\" src=\"plug-in/tools/curdtools_{0}.js\"></script>", "{0}", lang)); sb.append(StringUtil.replace("<script type=\"text/javascript\" src=\"plug-in/tools/curdtools_{0}.js\"></script>", "{0}", lang));
sb.append("<script type=\"text/javascript\" src=\"plug-in/tools/easyuiextend.js\"></script>"); sb.append("<script type=\"text/javascript\" src=\"plug-in/tools/easyuiextend.js\"></script>");

@ -74,6 +74,7 @@ public class ChooseTag extends TagSupport {
sb.append("var initValue = ").append("$(\'#" + hiddenName + "\').val();"); sb.append("var initValue = ").append("$(\'#" + hiddenName + "\').val();");
sb.append("url += ").append("'&ids='+initValue;"); sb.append("url += ").append("'&ids='+initValue;");
} }
// --authorzhoujf------end-----date:20150531--------for: 编辑用户,选择角色,弹出的角色列表页面,默认没选中 标签扩展
sb.append("if(typeof(windowapi) == 'undefined'){"); sb.append("if(typeof(windowapi) == 'undefined'){");
sb.append("$.dialog({"); sb.append("$.dialog({");
sb.append("content: \'url:\'+url,"); sb.append("content: \'url:\'+url,");

@ -26,7 +26,9 @@ public class DataGridColumnTag extends TagSupport {
protected boolean checkbox; protected boolean checkbox;
protected String formatter; protected String formatter;
protected String formatterjs;//自定义函数名称(调用页面自定义js方法 参数为(value,row,index) protected String formatterjs;//自定义函数名称(调用页面自定义js方法 参数为(value,row,index)
protected boolean hidden=false; protected boolean hidden=false;
protected String replace; protected String replace;
protected String treefield; protected String treefield;
protected boolean image; protected boolean image;

@ -20,13 +20,14 @@ public class DataGridConfOptTag extends TagSupport {
private String message;//询问链接的提示语 private String message;//询问链接的提示语
private String exp;//判断链接是否显示的表达式 private String exp;//判断链接是否显示的表达式
private String operationCode;//按钮的操作Code private String operationCode;//按钮的操作Code
private String urlStyle;//样式
public int doStartTag() throws JspTagException { public int doStartTag() throws JspTagException {
return EVAL_PAGE; return EVAL_PAGE;
} }
public int doEndTag() throws JspTagException { public int doEndTag() throws JspTagException {
Tag t = findAncestorWithClass(this, DataGridTag.class); Tag t = findAncestorWithClass(this, DataGridTag.class);
DataGridTag parent = (DataGridTag) t; DataGridTag parent = (DataGridTag) t;
parent.setConfUrl(url,MutiLangUtil.getMutiLangInstance().getLang(title),MutiLangUtil.getMutiLangInstance().getLang(message),exp,operationCode); parent.setConfUrl(url,MutiLangUtil.getMutiLangInstance().getLang(title),MutiLangUtil.getMutiLangInstance().getLang(message),exp,operationCode,urlStyle);
return EVAL_PAGE; return EVAL_PAGE;
} }
public void setExp(String exp) { public void setExp(String exp) {
@ -44,4 +45,10 @@ public class DataGridConfOptTag extends TagSupport {
public void setOperationCode(String operationCode) { public void setOperationCode(String operationCode) {
this.operationCode = operationCode; this.operationCode = operationCode;
} }
public void setUrlStyle(String urlStyle) {
this.urlStyle = urlStyle;
}
public String getUrlStyle() {
return urlStyle;
}
} }

@ -17,13 +17,14 @@ public class DataGridDefOptTag extends TagSupport {
protected String title; protected String title;
private String exp;//判断链接是否显示的表达式 private String exp;//判断链接是否显示的表达式
private String operationCode;//按钮的操作Code private String operationCode;//按钮的操作Code
private String urlStyle;//样式
public int doStartTag() throws JspTagException { public int doStartTag() throws JspTagException {
return EVAL_PAGE; return EVAL_PAGE;
} }
public int doEndTag() throws JspTagException { public int doEndTag() throws JspTagException {
Tag t = findAncestorWithClass(this, DataGridTag.class); Tag t = findAncestorWithClass(this, DataGridTag.class);
DataGridTag parent = (DataGridTag) t; DataGridTag parent = (DataGridTag) t;
parent.setDefUrl(url, title, exp,operationCode); parent.setDefUrl(url, title, exp,operationCode,urlStyle);
return EVAL_PAGE; return EVAL_PAGE;
} }
@ -39,5 +40,11 @@ public class DataGridDefOptTag extends TagSupport {
public void setOperationCode(String operationCode) { public void setOperationCode(String operationCode) {
this.operationCode = operationCode; this.operationCode = operationCode;
} }
public void setUrlStyle(String urlStyle) {
this.urlStyle = urlStyle;
}
public String getUrlStyle() {
return urlStyle;
}
} }

@ -26,6 +26,7 @@ public class DataGridDelOptTag extends TagSupport {
private String operationCode;//按钮的操作Code private String operationCode;//按钮的操作Code
private String langArg; private String langArg;
private String urlStyle;//样式
public int doStartTag() throws JspTagException { public int doStartTag() throws JspTagException {
return EVAL_PAGE; return EVAL_PAGE;
@ -35,7 +36,7 @@ public class DataGridDelOptTag extends TagSupport {
Tag t = findAncestorWithClass(this, DataGridTag.class); Tag t = findAncestorWithClass(this, DataGridTag.class);
DataGridTag parent = (DataGridTag) t; DataGridTag parent = (DataGridTag) t;
parent.setDelUrl(url, title, message, exp, funname,operationCode); parent.setDelUrl(url, title, message, exp, funname,operationCode,urlStyle);
return EVAL_PAGE; return EVAL_PAGE;
} }
public void setFunname(String funname) { public void setFunname(String funname) {
@ -60,4 +61,10 @@ public class DataGridDelOptTag extends TagSupport {
public void setLangArg(String langArg) { public void setLangArg(String langArg) {
this.langArg = langArg; this.langArg = langArg;
} }
public void setUrlStyle(String urlStyle) {
this.urlStyle = urlStyle;
}
public String getUrlStyle() {
return urlStyle;
}
} }

@ -24,6 +24,7 @@ public class DataGridFunOptTag extends TagSupport {
private String funname;//自定义函数名称 private String funname;//自定义函数名称
private String operationCode;//按钮的操作Code private String operationCode;//按钮的操作Code
private String langArg;//按钮的操作Code private String langArg;//按钮的操作Code
private String urlStyle;//样式
public int doStartTag() throws JspTagException { public int doStartTag() throws JspTagException {
@ -34,7 +35,7 @@ public class DataGridFunOptTag extends TagSupport {
Tag t = findAncestorWithClass(this, DataGridTag.class); Tag t = findAncestorWithClass(this, DataGridTag.class);
DataGridTag parent = (DataGridTag) t; DataGridTag parent = (DataGridTag) t;
parent.setFunUrl(title,exp,funname,operationCode); parent.setFunUrl(title,exp,funname,operationCode,urlStyle);
return EVAL_PAGE; return EVAL_PAGE;
} }
public void setFunname(String funname) { public void setFunname(String funname) {
@ -53,5 +54,11 @@ public class DataGridFunOptTag extends TagSupport {
public void setLangArg(String langArg) { public void setLangArg(String langArg) {
this.langArg = langArg; this.langArg = langArg;
} }
public void setUrlStyle(String urlStyle) {
this.urlStyle = urlStyle;
}
public String getUrlStyle() {
return urlStyle;
}
} }

@ -19,6 +19,7 @@ public class DataGridOpenOptTag extends TagSupport {
protected String title;//链接标题 protected String title;//链接标题
private String exp;//判断链接是否显示的表达式 private String exp;//判断链接是否显示的表达式
private String operationCode;//按钮的操作Code private String operationCode;//按钮的操作Code
private String urlStyle;//样式
private String openModel = "OpenWin"; //弹出方式 private String openModel = "OpenWin"; //弹出方式
public int doStartTag() throws JspTagException { public int doStartTag() throws JspTagException {
@ -27,7 +28,7 @@ public class DataGridOpenOptTag extends TagSupport {
public int doEndTag() throws JspTagException { public int doEndTag() throws JspTagException {
Tag t = findAncestorWithClass(this, DataGridTag.class); Tag t = findAncestorWithClass(this, DataGridTag.class);
DataGridTag parent = (DataGridTag) t; DataGridTag parent = (DataGridTag) t;
parent.setOpenUrl(url,title,width,height,exp,operationCode,openModel); parent.setOpenUrl(url,title,width,height,exp,operationCode,openModel,urlStyle);
return EVAL_PAGE; return EVAL_PAGE;
} }
public void setWidth(String width) { public void setWidth(String width) {
@ -52,5 +53,11 @@ public class DataGridOpenOptTag extends TagSupport {
public void setOpenModel(String openModel) { public void setOpenModel(String openModel) {
this.openModel = openModel; this.openModel = openModel;
} }
public void setUrlStyle(String urlStyle) {
this.urlStyle = urlStyle;
}
public String getUrlStyle() {
return urlStyle;
}
} }

@ -79,6 +79,7 @@ public class DataGridTag extends TagSupport {
private boolean autoLoadData=true; // 列表是否自动加载数据 private boolean autoLoadData=true; // 列表是否自动加载数据
//private boolean frozenColumn=false; // 是否是冰冻列 默认不是 //private boolean frozenColumn=false; // 是否是冰冻列 默认不是
private String langArg; private String langArg;
protected String cssTheme ; protected String cssTheme ;
public String getCssTheme() { public String getCssTheme() {
@ -88,6 +89,7 @@ public class DataGridTag extends TagSupport {
this.cssTheme = cssTheme; this.cssTheme = cssTheme;
} }
private boolean queryBuilder = false;// 高级查询器 private boolean queryBuilder = false;// 高级查询器
public boolean isQueryBuilder() { public boolean isQueryBuilder() {
return queryBuilder; return queryBuilder;
@ -176,20 +178,21 @@ public class DataGridTag extends TagSupport {
/** /**
* URL * URL
*/ */
public void setConfUrl(String url, String title, String message, String exp,String operationCode) { public void setConfUrl(String url, String title, String message, String exp,String operationCode, String urlStyle) {
DataGridUrl dataGridUrl = new DataGridUrl(); DataGridUrl dataGridUrl = new DataGridUrl();
dataGridUrl.setTitle(title); dataGridUrl.setTitle(title);
dataGridUrl.setUrl(url); dataGridUrl.setUrl(url);
dataGridUrl.setType(OptTypeDirection.Confirm); dataGridUrl.setType(OptTypeDirection.Confirm);
dataGridUrl.setMessage(message); dataGridUrl.setMessage(message);
dataGridUrl.setExp(exp); dataGridUrl.setExp(exp);
dataGridUrl.setUrlStyle(urlStyle);
installOperationCode(dataGridUrl, operationCode,urlList); installOperationCode(dataGridUrl, operationCode,urlList);
} }
/** /**
* URL * URL
*/ */
public void setDelUrl(String url, String title, String message, String exp, String funname,String operationCode) { public void setDelUrl(String url, String title, String message, String exp, String funname,String operationCode, String urlStyle) {
DataGridUrl dataGridUrl = new DataGridUrl(); DataGridUrl dataGridUrl = new DataGridUrl();
dataGridUrl.setTitle(title); dataGridUrl.setTitle(title);
dataGridUrl.setUrl(url); dataGridUrl.setUrl(url);
@ -197,17 +200,19 @@ public class DataGridTag extends TagSupport {
dataGridUrl.setMessage(message); dataGridUrl.setMessage(message);
dataGridUrl.setExp(exp); dataGridUrl.setExp(exp);
dataGridUrl.setFunname(funname); dataGridUrl.setFunname(funname);
dataGridUrl.setUrlStyle(urlStyle);
installOperationCode(dataGridUrl, operationCode,urlList); installOperationCode(dataGridUrl, operationCode,urlList);
} }
/** /**
* URL * URL
*/ */
public void setDefUrl(String url, String title, String exp,String operationCode) { public void setDefUrl(String url, String title, String exp,String operationCode, String urlStyle) {
DataGridUrl dataGridUrl = new DataGridUrl(); DataGridUrl dataGridUrl = new DataGridUrl();
dataGridUrl.setTitle(title); dataGridUrl.setTitle(title);
dataGridUrl.setUrl(url); dataGridUrl.setUrl(url);
dataGridUrl.setType(OptTypeDirection.Deff); dataGridUrl.setType(OptTypeDirection.Deff);
dataGridUrl.setExp(exp); dataGridUrl.setExp(exp);
dataGridUrl.setUrlStyle(urlStyle);
installOperationCode(dataGridUrl, operationCode,urlList); installOperationCode(dataGridUrl, operationCode,urlList);
} }
@ -234,12 +239,13 @@ public class DataGridTag extends TagSupport {
/** /**
* URL * URL
*/ */
public void setFunUrl(String title, String exp, String funname,String operationCode) { public void setFunUrl(String title, String exp, String funname,String operationCode, String urlStyle) {
DataGridUrl dataGridUrl = new DataGridUrl(); DataGridUrl dataGridUrl = new DataGridUrl();
dataGridUrl.setTitle(title); dataGridUrl.setTitle(title);
dataGridUrl.setType(OptTypeDirection.Fun); dataGridUrl.setType(OptTypeDirection.Fun);
dataGridUrl.setExp(exp); dataGridUrl.setExp(exp);
dataGridUrl.setFunname(funname); dataGridUrl.setFunname(funname);
dataGridUrl.setUrlStyle(urlStyle);
installOperationCode(dataGridUrl, operationCode,urlList); installOperationCode(dataGridUrl, operationCode,urlList);
} }
@ -247,7 +253,7 @@ public class DataGridTag extends TagSupport {
/** /**
* URL * URL
*/ */
public void setOpenUrl(String url, String title, String width, String height, String exp,String operationCode, String openModel) { public void setOpenUrl(String url, String title, String width, String height, String exp,String operationCode, String openModel, String urlStyle) {
DataGridUrl dataGridUrl = new DataGridUrl(); DataGridUrl dataGridUrl = new DataGridUrl();
dataGridUrl.setTitle(title); dataGridUrl.setTitle(title);
dataGridUrl.setUrl(url); dataGridUrl.setUrl(url);
@ -255,6 +261,7 @@ public class DataGridTag extends TagSupport {
dataGridUrl.setHeight(height); dataGridUrl.setHeight(height);
dataGridUrl.setType(OptTypeDirection.valueOf(openModel)); dataGridUrl.setType(OptTypeDirection.valueOf(openModel));
dataGridUrl.setExp(exp); dataGridUrl.setExp(exp);
dataGridUrl.setUrlStyle(urlStyle);
installOperationCode(dataGridUrl, operationCode,urlList); installOperationCode(dataGridUrl, operationCode,urlList);
} }
@ -306,6 +313,7 @@ public class DataGridTag extends TagSupport {
dataGridColumn.setExtendParams(extendParams); dataGridColumn.setExtendParams(extendParams);
dataGridColumn.setEditor(editor); dataGridColumn.setEditor(editor);
columnList.add(dataGridColumn); columnList.add(dataGridColumn);
Set<String> operationCodes = (Set<String>) super.pageContext.getRequest().getAttribute(Globals.OPERATIONCODES); Set<String> operationCodes = (Set<String>) super.pageContext.getRequest().getAttribute(Globals.OPERATIONCODES);
if (null!=operationCodes) { if (null!=operationCodes) {
for (String MyoperationCode : operationCodes) { for (String MyoperationCode : operationCodes) {
@ -322,6 +330,7 @@ public class DataGridTag extends TagSupport {
if (field != "opt") { if (field != "opt") {
fields += field + ","; fields += field + ",";
if ("group".equals(queryMode)) { if ("group".equals(queryMode)) {
@ -439,6 +448,7 @@ public class DataGridTag extends TagSupport {
JspWriter out = this.pageContext.getOut(); JspWriter out = this.pageContext.getOut();
// String indexStyle =null; // String indexStyle =null;
//-----author:jg_longjb----start-----date:20150408--------for:读取cookie主题样式 ace界面下table的输出
// Cookie[] cookies = ((HttpServletRequest) super.pageContext // Cookie[] cookies = ((HttpServletRequest) super.pageContext
// .getRequest()).getCookies(); // .getRequest()).getCookies();
// for (Cookie cookie : cookies) { // for (Cookie cookie : cookies) {
@ -456,6 +466,7 @@ public class DataGridTag extends TagSupport {
// }else{ // }else{
out.print(end().toString()); out.print(end().toString());
// } // }
//-----author:jg_longjb----end-----date:20150408--------for:读取cookie主题样式 ace界面下table的输出
}else{ }else{
out.print(datatables().toString()); out.print(datatables().toString());
out.flush(); out.flush();
@ -514,7 +525,9 @@ public class DataGridTag extends TagSupport {
sb.append(",\"mData\":\"" + column.getField() + "\""); sb.append(",\"mData\":\"" + column.getField() + "\"");
sb.append(",\"sWidth\":\"" + colwidth + "\""); sb.append(",\"sWidth\":\"" + colwidth + "\"");
sb.append(",\"bSortable\":" + column.isSortable() + ""); sb.append(",\"bSortable\":" + column.isSortable() + "");
sb.append(",\"bVisible\":" + !column.isHidden() + ""); sb.append(",\"bVisible\":" + !column.isHidden() + "");
sb.append(",\"bSearchable\":" + column.isQuery() + ""); sb.append(",\"bSearchable\":" + column.isQuery() + "");
} }
sb.append("}"); sb.append("}");
@ -629,8 +642,10 @@ public class DataGridTag extends TagSupport {
sb.append("}"); sb.append("}");
sb.append("});"); sb.append("});");
this.setPager(sb, grid); this.setPager(sb, grid);
sb.append("try{restoreheader();}catch(ex){}"); sb.append("try{restoreheader();}catch(ex){}");
sb.append("});"); sb.append("});");
sb.append("function reloadTable(){"); sb.append("function reloadTable(){");
sb.append("try{"); sb.append("try{");
sb.append(" $(\'#\'+gridname).datagrid(\'reload\');" ); sb.append(" $(\'#\'+gridname).datagrid(\'reload\');" );
@ -644,6 +659,7 @@ public class DataGridTag extends TagSupport {
sb.append("function getSelectRows(){"); sb.append("function getSelectRows(){");
sb.append(" return $(\'#"+name+"\').datagrid('getChecked');"); sb.append(" return $(\'#"+name+"\').datagrid('getChecked');");
sb.append("}"); sb.append("}");
sb.append(" function saveHeader(){"); sb.append(" function saveHeader(){");
sb.append(" var columnsFields =null;var easyextends=false;try{columnsFields = $('#"+name+"').datagrid('getColumns');easyextends=true;"); sb.append(" var columnsFields =null;var easyextends=false;try{columnsFields = $('#"+name+"').datagrid('getColumns');easyextends=true;");
sb.append("}catch(e){columnsFields =$('#"+name+"').datagrid('getColumnFields');}"); sb.append("}catch(e){columnsFields =$('#"+name+"').datagrid('getColumnFields');}");
@ -678,19 +694,26 @@ public class DataGridTag extends TagSupport {
sb.append( "}"); sb.append( "}");
sb.append( "}"); sb.append( "}");
sb.append( "}"); sb.append( "}");
if (columnList.size() > 0) { if (columnList.size() > 0) {
sb.append("function " + name + "search(){"); sb.append("function " + name + "search(){");
//update by jg_renjie at 2016/1/11 for:TASK #823 增加form实现Form表单验证
sb.append("if($(\"#"+name+"Form\").Validform({tiptype:3}).check()){");
//update by jg_renjie at 2016/1/11 for:TASK #823 增加form实现Form表单验证
sb.append("var queryParams=$(\'#" + name + "\').datagrid('options').queryParams;"); sb.append("var queryParams=$(\'#" + name + "\').datagrid('options').queryParams;");
sb.append("$(\'#" + name + "tb\').find('*').each(function(){queryParams[$(this).attr('name')]=$(this).val();});"); sb.append("$(\'#" + name + "tb\').find('*').each(function(){queryParams[$(this).attr('name')]=$(this).val();});");
sb.append("$(\'#" + name + "\')." + grid + "({url:'" + actionUrl + "&field=" + searchFields + "',pageNumber:1});" + "}"); sb.append("$(\'#" + name + "\')." + grid + "({url:'" + actionUrl + "&field=" + searchFields + "',pageNumber:1});" + "}}");
//高级查询执行方法 //高级查询执行方法
sb.append("function dosearch(params){"); sb.append("function dosearch(params){");
sb.append("var jsonparams=$.parseJSON(params);"); sb.append("var jsonparams=$.parseJSON(params);");
sb.append("$(\'#" + name + "\')." + grid + "({url:'" + actionUrl + "&field=" + searchFields + "',queryParams:jsonparams});" + "}"); sb.append("$(\'#" + name + "\')." + grid + "({url:'" + actionUrl + "&field=" + searchFields + "',queryParams:jsonparams});" + "}");
//searchbox框执行方法 //searchbox框执行方法
searchboxFun(sb,grid); searchboxFun(sb,grid);
//生成重置按钮功能js //生成重置按钮功能js
//回车事件 //回车事件
sb.append("function EnterPress(e){"); sb.append("function EnterPress(e){");
sb.append("var e = e || window.event;"); sb.append("var e = e || window.event;");
@ -698,10 +721,16 @@ public class DataGridTag extends TagSupport {
sb.append(name+"search();"); sb.append(name+"search();");
sb.append("}}"); sb.append("}}");
sb.append("function searchReset(name){"); sb.append("function searchReset(name){");
sb.append(" $(\"#\"+name+\"tb\").find(\":input\").val(\"\");"); sb.append(" $(\"#\"+name+\"tb\").find(\":input\").val(\"\");");
String func = name.trim() + "search();"; //update by jg_renjie at 2016/1/11 for:TASK #823 增加form实现Form表单验证,此处避免reset时走验证代码做了冗余
sb.append(func); //String func = name.trim() + "search();";
//sb.append(func);
sb.append("var queryParams=$(\'#" + name + "\').datagrid('options').queryParams;");
sb.append("$(\'#" + name + "tb\').find('*').each(function(){queryParams[$(this).attr('name')]=$(this).val();});");
sb.append("$(\'#" + name + "\')." + grid + "({url:'" + actionUrl + "&field=" + searchFields + "',pageNumber:1});");
//update by jg_renjie at 2016/1/11 for:TASK #823 增加form实现Form表单验证,此处避免reset时走验证代码做了冗余
sb.append("}"); sb.append("}");
} }
sb.append("</script>"); sb.append("</script>");
@ -711,6 +740,14 @@ public class DataGridTag extends TagSupport {
sb.append("<div name=\"searchColums\">"); sb.append("<div name=\"searchColums\">");
//-----longjb1 增加用于高级查询的参数项 //-----longjb1 增加用于高级查询的参数项
sb.append("<input id=\"_sqlbuilder\" name=\"sqlbuilder\" type=\"hidden\" />"); sb.append("<input id=\"_sqlbuilder\" name=\"sqlbuilder\" type=\"hidden\" />");
//update by jg_renjie at 2016/1/11 for:TASK #823 增加form实现Form表单验证
sb.append("<form id='"+name+"Form'>");
sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/style.css\" type=\"text/css\">");
sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/tablefrom.css\" type=\"text/css\">");
sb.append("<script type=\"text/javascript\" src=\"plug-in/Validform/js/Validform_v5.3.1_min_zh-cn.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/Validform/js/Validform_Datatype_zh-cn.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/Validform/js/datatype_zh-cn.js\"></script>");
//update by jg_renjie at 2016/1/11 for:TASK #823
//如果表单是组合查询 //如果表单是组合查询
if("group".equals(getQueryMode())){ if("group".equals(getQueryMode())){
for (DataGridColumn col : columnList) { for (DataGridColumn col : columnList) {
@ -777,18 +814,20 @@ public class DataGridTag extends TagSupport {
sb.append(getAutoSpan(col.getField().replaceAll("_","\\."),extendAttribute(col.getExtend()))); sb.append(getAutoSpan(col.getField().replaceAll("_","\\."),extendAttribute(col.getExtend())));
}else{ }else{
sb.append("<input onkeypress=\"EnterPress(event)\" onkeydown=\"EnterPress()\" type=\"text\" name=\""+col.getField().replaceAll("_","\\.")+"\" "+extendAttribute(col.getExtend())+" class=\"inuptxt\" style=\"width: 100px\" />"); sb.append("<input onkeypress=\"EnterPress(event)\" onkeydown=\"EnterPress()\" type=\"text\" name=\""+col.getField().replaceAll("_","\\.")+"\" "+extendAttribute(col.getExtend())+" class=\"inuptxt\" style=\"width: 100px\" />");
} }
}else if("group".equals(col.getQueryMode())){ }else if("group".equals(col.getQueryMode())){
sb.append("<input type=\"text\" name=\""+col.getField()+"_begin\" style=\"width: 94px\" "+extendAttribute(col.getExtend())+" class=\"inuptxt\"/>"); sb.append("<input type=\"text\" name=\""+col.getField()+"_begin\" style=\"width: 94px\" "+extendAttribute(col.getExtend())+" class=\"inuptxt\"/>");
sb.append("<span style=\"display:-moz-inline-box;display:inline-block;width: 8px;text-align:right;\">~</span>"); sb.append("<span style=\"display:-moz-inline-box;display:inline-block;width: 8px;text-align:right;\">~</span>");
sb.append("<input type=\"text\" name=\""+col.getField()+"_end\" style=\"width: 94px\" "+extendAttribute(col.getExtend())+" class=\"inuptxt\"/>"); sb.append("<input type=\"text\" name=\""+col.getField()+"_end\" style=\"width: 94px\" "+extendAttribute(col.getExtend())+" class=\"inuptxt\"/>");
} }
sb.append("</span>"); sb.append("</span>");
} }
} }
} }
sb.append("</div>"); sb.append("</form></div>");
} }
if(toolBarList.size()==0 && !hasQueryColum(columnList)){ if(toolBarList.size()==0 && !hasQueryColum(columnList)){
sb.append("<div style=\"height:0px;\" >"); sb.append("<div style=\"height:0px;\" >");
@ -877,7 +916,7 @@ public class DataGridTag extends TagSupport {
while(itvalue.hasNext()){ while(itvalue.hasNext()){
String multkey = String.valueOf(itvalue.next()); String multkey = String.valueOf(itvalue.next());
String multvalue = nextObj.getString(multkey); String multvalue = nextObj.getString(multkey);
re.append(multkey+":"+multvalue+","); re.append(multkey+":"+multvalue+";");
} }
re.deleteCharAt(re.length()-1); re.deleteCharAt(re.length()-1);
} }
@ -908,6 +947,7 @@ public class DataGridTag extends TagSupport {
Gson gson = new Gson(); Gson gson = new Gson();
Map<String, String> mp = gson.fromJson(field, Map.class); Map<String, String> mp = gson.fromJson(field, Map.class);
for(Map.Entry<String, String> entry: mp.entrySet()) { for(Map.Entry<String, String> entry: mp.entrySet()) {
sb.append(entry.getKey()+"=" + gson.toJson(entry.getValue()) + "\""); sb.append(entry.getKey()+"=" + gson.toJson(entry.getValue()) + "\"");
} }
} }
@ -1003,23 +1043,31 @@ public class DataGridTag extends TagSupport {
} }
} }
StringBuffer style = new StringBuffer();
if (!StringUtil.isEmpty(dataGridUrl.getUrlStyle())) {
style.append(" style=\'");
style.append(dataGridUrl.getUrlStyle());
style.append("\' ");
}
if (OptTypeDirection.Confirm.equals(dataGridUrl.getType())) { if (OptTypeDirection.Confirm.equals(dataGridUrl.getType())) {
sb.append("href+=\"[<a href=\'#\' onclick=confirm(\'" + url + "\',\'" + dataGridUrl.getMessage() + "\',\'"+name+"\')> \";"); sb.append("href+=\"[<a href=\'#\' onclick=confirm(\'" + url + "\',\'" + dataGridUrl.getMessage() + "\',\'"+name+"\')" + style.toString() + "> \";");
} }
if (OptTypeDirection.Del.equals(dataGridUrl.getType())) { if (OptTypeDirection.Del.equals(dataGridUrl.getType())) {
sb.append("href+=\"[<a href=\'#\' onclick=delObj(\'" + url + "\',\'"+name+"\')>\";"); sb.append("href+=\"[<a href=\'#\' onclick=delObj(\'" + url + "\',\'"+name+"\')" + style.toString() + ">\";");
} }
if (OptTypeDirection.Fun.equals(dataGridUrl.getType())) { if (OptTypeDirection.Fun.equals(dataGridUrl.getType())) {
String name = TagUtil.getFunction(dataGridUrl.getFunname()); String name = TagUtil.getFunction(dataGridUrl.getFunname());
String parmars = TagUtil.getFunParams(dataGridUrl.getFunname()); String parmars = TagUtil.getFunParams(dataGridUrl.getFunname());
sb.append("href+=\"[<a href=\'#\' onclick=" + name + "(" + parmars + ")>\";"); sb.append("href+=\"[<a href=\'#\' onclick=" + name + "(" + parmars + ")" + style.toString() + ">\";");
} }
if (OptTypeDirection.OpenWin.equals(dataGridUrl.getType())) { if (OptTypeDirection.OpenWin.equals(dataGridUrl.getType())) {
sb.append("href+=\"[<a href=\'#\' onclick=openwindow('" + dataGridUrl.getTitle() + "','" + url + "','"+name+"'," + dataGridUrl.getWidth() + "," + dataGridUrl.getHeight() + ")>\";"); sb.append("href+=\"[<a href=\'#\' onclick=openwindow('" + dataGridUrl.getTitle() + "','" + url + "','"+name+"'," + dataGridUrl.getWidth() + "," + dataGridUrl.getHeight() + ")" + style.toString() + ">\";");
} //update-end--Author:liuht Date:20130228 for弹出窗口设置参数不生效 } //update-end--Author:liuht Date:20130228 for弹出窗口设置参数不生效
if (OptTypeDirection.Deff.equals(dataGridUrl.getType())) { if (OptTypeDirection.Deff.equals(dataGridUrl.getType())) {
sb.append("href+=\"[<a href=\'" + url + "' title=\'"+dataGridUrl.getTitle()+"\'>\";"); sb.append("href+=\"[<a href=\'" + url + "' title=\'"+dataGridUrl.getTitle()+"\'" + style.toString() + ">\";");
} }
if (OptTypeDirection.OpenTab.equals(dataGridUrl.getType())) { if (OptTypeDirection.OpenTab.equals(dataGridUrl.getType())) {
sb.append("href+=\"[<a href=\'#\' onclick=addOneTab('" + dataGridUrl.getTitle() + "','" + url + "')>\";"); sb.append("href+=\"[<a href=\'#\' onclick=addOneTab('" + dataGridUrl.getTitle() + "','" + url + "')>\";");
} }
@ -1119,10 +1167,12 @@ public class DataGridTag extends TagSupport {
sb.append(","+column.getExtendParams().substring(0, sb.append(","+column.getExtendParams().substring(0,
column.getExtendParams().length()-1)); column.getExtendParams().length()-1));
} }
// 隐藏字段 // 隐藏字段
if (column.isHidden()) { if (column.isHidden()) {
sb.append(",hidden:true"); sb.append(",hidden:true");
} }
if (!treegrid) { if (!treegrid) {
// 字段排序 // 字段排序
if ((column.isSortable()) && (field.indexOf("_") <= 0 && field != "opt")) { if ((column.isSortable()) && (field.indexOf("_") <= 0 && field != "opt")) {
@ -1266,6 +1316,7 @@ public class DataGridTag extends TagSupport {
} }
public String getNoAuthOperButton(){ public String getNoAuthOperButton(){
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
if(ResourceUtil.getSessionUserName().getUserName().equals("admin")|| !Globals.BUTTON_AUTHORITY_CHECK){ if(ResourceUtil.getSessionUserName().getUserName().equals("admin")|| !Globals.BUTTON_AUTHORITY_CHECK){
}else{ }else{
@ -1291,6 +1342,7 @@ public class DataGridTag extends TagSupport {
} }
} }
//org.jeecgframework.core.util.LogUtil.info("----getNoAuthOperButton-------"+sb.toString()); //org.jeecgframework.core.util.LogUtil.info("----getNoAuthOperButton-------"+sb.toString());
return sb.toString(); return sb.toString();
} }
@ -1346,7 +1398,7 @@ public class DataGridTag extends TagSupport {
nsb.append("}).result(function (event, row, formatted) {"); nsb.append("}).result(function (event, row, formatted) {");
nsb.append("$(\"#"+getEntityName()+"_"+id+"\").val(row['"+filed+"']);}); });") nsb.append("$(\"#"+getEntityName()+"_"+id+"\").val(row['"+filed+"']);}); });")
.append("</script>") .append("</script>")
.append("<input class=\"inuptxt\" type=\"text\" id=\""+getEntityName()+"_"+id+"\" name=\""+filed+"\" datatype=\"*\" "+extend+ StringUtil.replace(" nullmsg=\"\" errormsg=\"{0}\"/>", "{0}", MutiLangUtil.getMutiLangInstance().getLang("input.error"))); .append("<input class=\"inuptxt\" type=\"text\" id=\""+getEntityName()+"_"+id+"\" name=\""+filed+"\" "+extend+ StringUtil.replace(" nullmsg=\"\" errormsg=\"{0}\"/>", "{0}", MutiLangUtil.getMutiLangInstance().getLang("input.error")));
return nsb.toString(); return nsb.toString();
} }
/** /**
@ -1419,6 +1471,8 @@ public class DataGridTag extends TagSupport {
public void setLangArg(String langArg) { public void setLangArg(String langArg) {
this.langArg = langArg; this.langArg = langArg;
} }
//-----author:jg_longjb----start-----date:20150408--------for:新增ace 界面下的button class样式
public StringBuffer aceStyleTable() { public StringBuffer aceStyleTable() {
String grid = ""; String grid = "";
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
@ -1526,6 +1580,7 @@ public class DataGridTag extends TagSupport {
sb.append("function get" + name + "Selections(field){" + "var ids = [];" + "var rows = $(\'#" + name + "\')." + grid + "(\'getSelections\');" + "for(var i=0;i<rows.length;i++){" + "ids.push(rows[i][field]);" + "}" + "ids.join(\',\');" + "return ids" + "};"); sb.append("function get" + name + "Selections(field){" + "var ids = [];" + "var rows = $(\'#" + name + "\')." + grid + "(\'getSelections\');" + "for(var i=0;i<rows.length;i++){" + "ids.push(rows[i][field]);" + "}" + "ids.join(\',\');" + "return ids" + "};");
sb.append("function getSelectRows(){"); sb.append("function getSelectRows(){");
sb.append(" return $(\'#"+name+"\').datagrid('getChecked');}"); sb.append(" return $(\'#"+name+"\').datagrid('getChecked');}");
sb.append(" function saveHeader(){"); sb.append(" function saveHeader(){");
sb.append(" var columnsFields =null;var easyextends=false;try{columnsFields = $('#"+name+"').datagrid('getColumns');easyextends=true;"); sb.append(" var columnsFields =null;var easyextends=false;try{columnsFields = $('#"+name+"').datagrid('getColumns');easyextends=true;");
sb.append("}catch(e){columnsFields =$('#"+name+"').datagrid('getColumnFields');}"); sb.append("}catch(e){columnsFields =$('#"+name+"').datagrid('getColumnFields');}");
@ -1560,6 +1615,7 @@ public class DataGridTag extends TagSupport {
sb.append( "}"); sb.append( "}");
sb.append( "}"); sb.append( "}");
sb.append( "}"); sb.append( "}");
if (columnList.size() > 0) { if (columnList.size() > 0) {
sb.append("function " + name + "search(){"); sb.append("function " + name + "search(){");
sb.append("var queryParams=$(\'#" + name + "\').datagrid('options').queryParams;"); sb.append("var queryParams=$(\'#" + name + "\').datagrid('options').queryParams;");
@ -1579,6 +1635,7 @@ public class DataGridTag extends TagSupport {
sb.append(name+"search();"); sb.append(name+"search();");
sb.append("}}"); sb.append("}}");
sb.append("function searchReset(name){"); sb.append("function searchReset(name){");
sb.append(" $(\"#"+name+"tb\").find(\":input\").val(\"\");"); sb.append(" $(\"#"+name+"tb\").find(\":input\").val(\"\");");
String func = name.trim() + "search();"; String func = name.trim() + "search();";
@ -1713,6 +1770,10 @@ public class DataGridTag extends TagSupport {
} }
return sb; return sb;
} }
//-----author:jg_longjb----end-----date:20150408--------for:新增封装查询器组件-
//-----author:jg_longjb----start-----date:20150427--------for:新增高级查询器queryBuilder
private void appendLine(StringBuffer sb,String str) { private void appendLine(StringBuffer sb,String str) {
String format = "\r\n"; //调试 格式化 String format = "\r\n"; //调试 格式化
sb.append(str).append(format); sb.append(str).append(format);
@ -2072,4 +2133,5 @@ appendLine(sb," }}\">关系</th>");
} }
return sb.toString(); return sb.toString();
} }
//----author:jg_longjb----start-----date:20150427--------for:新增封装查询器组件----
} }

@ -0,0 +1,160 @@
package org.jeecgframework.tag.core.easyui;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import org.jeecgframework.web.system.pojo.base.TSType;
import org.jeecgframework.web.system.pojo.base.TSTypegroup;
import org.jeecgframework.web.system.service.MutiLangServiceI;
import org.jeecgframework.web.system.service.SystemService;
import org.apache.commons.lang.StringUtils;
import org.jeecgframework.core.util.ApplicationContextUtil;
import org.jeecgframework.core.util.MutiLangUtil;
import org.springframework.beans.factory.annotation.Autowired;
import com.google.gson.Gson;
/**
*
*
*
* @author: lijun
* @date 2015-3-1
* @version 1.0
*/
public class DepartSelectTag extends TagSupport {
private static final long serialVersionUID = 1;
private String readonly;// 只读属性
public String getReadonly() {
return readonly;
}
public void setReadonly(String readonly) {
this.readonly = readonly;
}
private String selectedNamesInputId; // 用于记录已选择部门编号的input的id
public String getSelectedNamesInputId() {
return selectedNamesInputId;
}
public void setSelectedNamesInputId(String _selectedNamesInputId) {
this.selectedNamesInputId = _selectedNamesInputId;
}
private String selectedIdsInputId; // 用于显示已选择部门名称的input的id
public String getSelectedIdsInputId() {
return selectedIdsInputId;
}
public void setSelectedIdsInputId(String _selectedIdsInputId) {
this.selectedIdsInputId = _selectedIdsInputId;
}
private String departNameInputWidth; //已选择机构输入框宽度
public String getDepartNameInputWidth() {
return departNameInputWidth;
}
public void setDepartNameInputWidth(String departNameInputWidth) {
this.departNameInputWidth = departNameInputWidth;
}
private String windowWidth; //窗口宽度
public String getWindowWidth() {
return windowWidth;
}
public void setWindowWidth(String windowWidth) {
this.windowWidth = windowWidth;
}
private String windowHeight; //窗口高度
public String getWindowHeight() {
return windowHeight;
}
public void setWindowHeight(String windowHeight) {
this.windowHeight = windowHeight;
}
public int doStartTag() throws JspTagException {
return EVAL_PAGE;
}
public int doEndTag() throws JspTagException {
try {
JspWriter out = this.pageContext.getOut();
out.print(end().toString());
} catch (IOException e) {
e.printStackTrace();
}
return EVAL_PAGE;
}
public StringBuffer end() {
StringBuffer sb = new StringBuffer();
if (StringUtils.isBlank(selectedNamesInputId)) {
selectedNamesInputId = "departname"; // 默认id
}
if (StringUtils.isBlank(selectedIdsInputId)) {
selectedIdsInputId = "orgIds"; // 默认id
}
String lblDepartment = MutiLangUtil.getMutiLangInstance().getLang("common.department");
if(StringUtils.isBlank(lblDepartment)){
lblDepartment = "组织机构";
}
if(StringUtils.isBlank(departNameInputWidth)){
departNameInputWidth = "80px";
}
if(StringUtils.isBlank(windowWidth)){
windowWidth = "400px";
}
if(StringUtils.isBlank(windowHeight)){
windowHeight = "350px";
}
sb.append("<span style=\"display:-moz-inline-box;display:inline-block;\">");
sb.append("<span style=\"vertical-align:middle;display:-moz-inline-box;display:inline-block;width: " + departNameInputWidth + ";text-align:right;\" title=\"" + lblDepartment + "\"/>");
sb.append(lblDepartment + "");
sb.append("</span>");
sb.append("<input readonly=\"true\" type=\"text\" id=\"" + selectedNamesInputId + "\" name=\"" + selectedNamesInputId + "\" style=\"width: 300px\" onclick=\"openDepartmentSelect()\"/>");
sb.append("<input id=\"" + selectedIdsInputId + "\" name=\"" + selectedIdsInputId + "\" type=\"hidden\">");
sb.append("</span>");
String commonDepartmentList = MutiLangUtil.getMutiLangInstance().getLang("common.department.list");
String commonConfirm = MutiLangUtil.getMutiLangInstance().getLang("common.confirm");
String commonCancel = MutiLangUtil.getMutiLangInstance().getLang("common.cancel");
sb.append("<script type=\"text/javascript\">");
sb.append("function openDepartmentSelect() {");
sb.append(" $.dialog({content: 'url:departController.do?departSelect', zIndex: 2100, title: '" + commonDepartmentList + "', lock: true, width: '" + windowWidth + "', height: '" + windowHeight + "', opacity: 0.4, button: [");
sb.append(" {name: '" + commonConfirm + "', callback: callbackDepartmentSelect, focus: true},");
sb.append(" {name: '" + commonCancel + "', callback: function (){}}");
sb.append(" ]});");
sb.append("}");
sb.append("function callbackDepartmentSelect() {");
sb.append(" var iframe = this.iframe.contentWindow;");
sb.append(" var departname = iframe.getdepartListSelections('text');");
sb.append(" $('#" + selectedNamesInputId + "').val(departname);");
sb.append(" $('#" + selectedNamesInputId + "').blur();");
sb.append(" var id = iframe.getdepartListSelections('id');");
sb.append(" $('#" + selectedIdsInputId + "').val(id);");
sb.append("}");
sb.append("</script>");
return sb;
}
}

@ -45,6 +45,15 @@ public class DictSelectTag extends TagSupport {
private String dictField;// 自定义字典表的匹配字段-字典的编码值 private String dictField;// 自定义字典表的匹配字段-字典的编码值
private String dictText;// 自定义字典表的显示文本-字典的显示值 private String dictText;// 自定义字典表的显示文本-字典的显示值
private String extendJson;//扩展参数 private String extendJson;//扩展参数
private String readonly;// 只读属性
public String getReadonly() {
return readonly;
}
public void setReadonly(String readonly) {
this.readonly = readonly;
}
private String dictCondition; private String dictCondition;
public String getDictCondition() { public String getDictCondition() {
return dictCondition; return dictCondition;
@ -53,6 +62,7 @@ public class DictSelectTag extends TagSupport {
public void setDictCondition(String dicCondition) { public void setDictCondition(String dicCondition) {
this.dictCondition = dicCondition; this.dictCondition = dicCondition;
} }
private String datatype; private String datatype;
public String getDatatype() { public String getDatatype() {
return datatype; return datatype;
@ -61,6 +71,7 @@ public class DictSelectTag extends TagSupport {
public void setDatatype(String datatype) { public void setDatatype(String datatype) {
this.datatype = datatype; this.datatype = datatype;
} }
@Autowired @Autowired
private static SystemService systemService; private static SystemService systemService;
@ -106,6 +117,10 @@ public class DictSelectTag extends TagSupport {
} }
}else { }else {
sb.append("<select name=\"" + field + "\""); sb.append("<select name=\"" + field + "\"");
this.readonly(sb);
//增加扩展属性 //增加扩展属性
if (!StringUtils.isBlank(this.extendJson)) { if (!StringUtils.isBlank(this.extendJson)) {
Gson gson = new Gson(); Gson gson = new Gson();
@ -118,7 +133,9 @@ public class DictSelectTag extends TagSupport {
sb.append(" id=\"" + id + "\""); sb.append(" id=\"" + id + "\"");
} }
sb.append(">"); sb.append(">");
select("common.please.select", "", sb); select("common.please.select", "", sb);
for (Map<String, Object> map : list) { for (Map<String, Object> map : list) {
select(map.get("text").toString(), map.get("field").toString(), sb); select(map.get("text").toString(), map.get("field").toString(), sb);
} }
@ -153,6 +170,10 @@ public class DictSelectTag extends TagSupport {
} }
} else { } else {
sb.append("<select name=\"" + field + "\""); sb.append("<select name=\"" + field + "\"");
this.readonly(sb);
//增加扩展属性 //增加扩展属性
if (!StringUtils.isBlank(this.extendJson)) { if (!StringUtils.isBlank(this.extendJson)) {
Gson gson = new Gson(); Gson gson = new Gson();
@ -166,7 +187,9 @@ public class DictSelectTag extends TagSupport {
} }
this.datatype(sb); this.datatype(sb);
sb.append(">"); sb.append(">");
select("common.please.select", "", sb); select("common.please.select", "", sb);
for (TSType type : types) { for (TSType type : types) {
select(type.getTypename(), type.getTypecode(), sb); select(type.getTypename(), type.getTypecode(), sb);
} }
@ -210,6 +233,10 @@ public class DictSelectTag extends TagSupport {
if (!StringUtils.isBlank(this.id)) { if (!StringUtils.isBlank(this.id)) {
sb.append(" id=\"" + id + "\""); sb.append(" id=\"" + id + "\"");
} }
this.readonly(sb);
this.datatype(sb); this.datatype(sb);
sb.append(" />"); sb.append(" />");
} else { } else {
@ -218,6 +245,9 @@ public class DictSelectTag extends TagSupport {
if (!StringUtils.isBlank(this.id)) { if (!StringUtils.isBlank(this.id)) {
sb.append(" id=\"" + id + "\""); sb.append(" id=\"" + id + "\"");
} }
this.readonly(sb);
this.datatype(sb); this.datatype(sb);
sb.append(" />"); sb.append(" />");
} }
@ -250,6 +280,9 @@ public class DictSelectTag extends TagSupport {
if (!StringUtils.isBlank(this.id)) { if (!StringUtils.isBlank(this.id)) {
sb.append(" id=\"" + id + "\""); sb.append(" id=\"" + id + "\"");
} }
this.readonly(sb);
this.datatype(sb); this.datatype(sb);
sb.append(" />"); sb.append(" />");
} else { } else {
@ -258,6 +291,9 @@ public class DictSelectTag extends TagSupport {
if (!StringUtils.isBlank(this.id)) { if (!StringUtils.isBlank(this.id)) {
sb.append(" id=\"" + id + "\""); sb.append(" id=\"" + id + "\"");
} }
this.readonly(sb);
this.datatype(sb); this.datatype(sb);
sb.append(" />"); sb.append(" />");
} }
@ -291,9 +327,11 @@ public class DictSelectTag extends TagSupport {
private List<Map<String, Object>> queryDic() { private List<Map<String, Object>> queryDic() {
String sql = "select " + dictField + " as field," + dictText String sql = "select " + dictField + " as field," + dictText
+ " as text from " + dictTable; + " as text from " + dictTable;
if(dictCondition!=null){ if(dictCondition!=null){
sql+=dictCondition; sql+=dictCondition;
} }
systemService = ApplicationContextUtil.getContext().getBean( systemService = ApplicationContextUtil.getContext().getBean(
SystemService.class); SystemService.class);
List<Map<String, Object>> list = systemService.findForJdbc(sql); List<Map<String, Object>> list = systemService.findForJdbc(sql);
@ -312,6 +350,30 @@ public class DictSelectTag extends TagSupport {
return sb; return sb;
} }
/**
* readonly , readonly
* @author jg_xugj
* @param sb
* @return sb
*/
private StringBuffer readonly(StringBuffer sb){
if(!StringUtils.isBlank(readonly) &&readonly.equals("readonly")){
if ("radio".equals(type)) {
sb.append(" disable= \"disabled\" disabled=\"disabled\" ");
}
else if ("checkbox".equals(type)) {
sb.append(" disable= \"disabled\" disabled=\"disabled\" ");
}
else if ("text".equals(type)) {
}
else {
sb.append(" disable= \"disabled\" disabled=\"disabled\" ");
}
}
return sb;
}
public String getTypeGroupCode() { public String getTypeGroupCode() {
return typeGroupCode; return typeGroupCode;
} }

@ -30,7 +30,9 @@ public class FormValidationTag extends TagSupport {
protected String action;// 表单提交路径 protected String action;// 表单提交路径
protected String tabtitle;// 表单选项卡 protected String tabtitle;// 表单选项卡
protected String tiptype = "4";//校验方式 protected String tiptype = "4";//校验方式
protected String styleClass ;//table 样式 protected String styleClass ;//table 样式
protected String cssTheme;//主题样式目录默认为空 protected String cssTheme;//主题样式目录默认为空
public String getCssTheme() { public String getCssTheme() {
@ -40,6 +42,7 @@ public class FormValidationTag extends TagSupport {
public void setCssTheme(String cssTheme) { public void setCssTheme(String cssTheme) {
this.cssTheme = cssTheme; this.cssTheme = cssTheme;
} }
public String getStyleClass() { public String getStyleClass() {
return styleClass; return styleClass;
} }
@ -47,6 +50,7 @@ public class FormValidationTag extends TagSupport {
public void setStyleClass(String styleClass) { public void setStyleClass(String styleClass) {
this.styleClass = styleClass; this.styleClass = styleClass;
} }
public void setTabtitle(String tabtitle) { public void setTabtitle(String tabtitle) {
this.tabtitle = tabtitle; this.tabtitle = tabtitle;
} }
@ -99,9 +103,11 @@ public class FormValidationTag extends TagSupport {
sb.append("<div id=\"steps\">"); sb.append("<div id=\"steps\">");
} }
sb.append("<form id=\"" + formid + "\" " ); sb.append("<form id=\"" + formid + "\" " );
if(this.getStyleClass()!=null){ if(this.getStyleClass()!=null){
sb.append("class=\""+this.getStyleClass()+"\" "); sb.append("class=\""+this.getStyleClass()+"\" ");
} }
sb.append(" action=\"" + action + "\" name=\"" + formid + "\" method=\"post\">"); sb.append(" action=\"" + action + "\" name=\"" + formid + "\" method=\"post\">");
if ("btn_sub".equals(btnsub) && dialog) if ("btn_sub".equals(btnsub) && dialog)
sb.append("<input type=\"hidden\" id=\"" + btnsub + "\" class=\"" + btnsub + "\"/>"); sb.append("<input type=\"hidden\" id=\"" + btnsub + "\" class=\"" + btnsub + "\"/>");
@ -126,6 +132,7 @@ public class FormValidationTag extends TagSupport {
JspWriter out = this.pageContext.getOut(); JspWriter out = this.pageContext.getOut();
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
if (layout.equals("div")) { if (layout.equals("div")) {
// if("metro".equals(cssTheme)){ // if("metro".equals(cssTheme)){
// sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/"+cssTheme+"/divfrom.css\" type=\"text/css\"/>"); // sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/"+cssTheme+"/divfrom.css\" type=\"text/css\"/>");
// }else{ // }else{
@ -147,6 +154,7 @@ public class FormValidationTag extends TagSupport {
sb.append(SysThemesUtil.getValidformStyleTheme(sysThemesEnum)); sb.append(SysThemesUtil.getValidformStyleTheme(sysThemesEnum));
//tablefrom.css //tablefrom.css
sb.append(SysThemesUtil.getValidformTablefrom(sysThemesEnum)); sb.append(SysThemesUtil.getValidformTablefrom(sysThemesEnum));
sb.append(StringUtil.replace("<script type=\"text/javascript\" src=\"plug-in/Validform/js/Validform_v5.3.1_min_{0}.js\"></script>", "{0}", lang)); sb.append(StringUtil.replace("<script type=\"text/javascript\" src=\"plug-in/Validform/js/Validform_v5.3.1_min_{0}.js\"></script>", "{0}", lang));
sb.append(StringUtil.replace("<script type=\"text/javascript\" src=\"plug-in/Validform/js/Validform_Datatype_{0}.js\"></script>", "{0}", lang)); sb.append(StringUtil.replace("<script type=\"text/javascript\" src=\"plug-in/Validform/js/Validform_Datatype_{0}.js\"></script>", "{0}", lang));
sb.append(StringUtil.replace("<script type=\"text/javascript\" src=\"plug-in/Validform/js/datatype_{0}.js\"></script>", "{0}", lang)); sb.append(StringUtil.replace("<script type=\"text/javascript\" src=\"plug-in/Validform/js/datatype_{0}.js\"></script>", "{0}", lang));
@ -222,6 +230,7 @@ public class FormValidationTag extends TagSupport {
passsb.append("}");// trigger结尾 passsb.append("}");// trigger结尾
passsb.append("}");// passwordstrength结尾 passsb.append("}");// passwordstrength结尾
} }
sb.append("usePlugin:{"); sb.append("usePlugin:{");
if (usePlugin.indexOf("password") >= 0) { if (usePlugin.indexOf("password") >= 0) {
sb.append(passsb); sb.append(passsb);
@ -233,6 +242,7 @@ public class FormValidationTag extends TagSupport {
} }
jqsb.append("jqtransform :{selector:\"select\"}"); jqsb.append("jqtransform :{selector:\"select\"}");
} }
if (usePlugin.indexOf("jqtransform") >= 0) { if (usePlugin.indexOf("jqtransform") >= 0) {
sb.append(jqsb); sb.append(jqsb);
} }

@ -62,18 +62,22 @@ public class MenuTag extends TagSupport {
public StringBuffer end() { public StringBuffer end() {
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
if (style.equals("easyui")) { if (style.equals("easyui")) {
sb.append("<ul id=\"nav\" class=\"easyui-tree tree-lines\" fit=\"true\" border=\"false\">"); sb.append("<ul id=\"nav\" class=\"easyui-tree tree-lines\" fit=\"true\" border=\"false\">");
sb.append(ListtoMenu.getEasyuiMultistageTree(menuFun, style)); sb.append(ListtoMenu.getEasyuiMultistageTree(menuFun, style));
sb.append("</ul>"); sb.append("</ul>");
} }
if(style.equals("shortcut")) if(style.equals("shortcut"))
// { sb.append("<div id=\"nav\" style=\"display:none;\" class=\"easyui-accordion\" fit=\"true\" border=\"false\">"); // { sb.append("<div id=\"nav\" style=\"display:none;\" class=\"easyui-accordion\" fit=\"true\" border=\"false\">");
{ {
sb.append("<div id=\"nav\" style=\"display:block;\" class=\"easyui-accordion\" fit=\"true\" border=\"false\">"); sb.append("<div id=\"nav\" style=\"display:block;\" class=\"easyui-accordion\" fit=\"true\" border=\"false\">");
sb.append(ListtoMenu.getEasyuiMultistageTree(menuFun, style)); sb.append(ListtoMenu.getEasyuiMultistageTree(menuFun, style));
sb.append("</div>"); sb.append("</div>");
} }
if(style.equals("bootstrap")) if(style.equals("bootstrap"))
{ {
sb.append(ListtoMenu.getBootMenu(parentFun, childFun)); sb.append(ListtoMenu.getBootMenu(parentFun, childFun));
@ -92,6 +96,10 @@ public class MenuTag extends TagSupport {
{ {
sb.append(ListtoMenu.getAceMultistageTree(menuFun)); sb.append(ListtoMenu.getAceMultistageTree(menuFun));
} }
if(style.equals("diy"))
{
sb.append(ListtoMenu.getDIYMultistageTree(menuFun));
}
return sb; return sb;
} }
public void setStyle(String style) { public void setStyle(String style) {

@ -74,6 +74,7 @@ public class TagUtil {
} }
value = reflectHelper.getMethodValue(fieldName)==null?"":reflectHelper.getMethodValue(fieldName); value = reflectHelper.getMethodValue(fieldName)==null?"":reflectHelper.getMethodValue(fieldName);
if (value !=""&&value != null && (FiledName.indexOf("_") != -1||FiledName.indexOf(".") != -1)) { if (value !=""&&value != null && (FiledName.indexOf("_") != -1||FiledName.indexOf(".") != -1)) {
if(value instanceof List) { if(value instanceof List) {
Object tempValue = ""; Object tempValue = "";
for (Object listValue : (List)value) { for (Object listValue : (List)value) {
@ -83,8 +84,10 @@ public class TagUtil {
} else { } else {
value = fieldNametoValues(childFieldName, value); value = fieldNametoValues(childFieldName, value);
} }
} }
if(value != "" && value != null) { if(value != "" && value != null) {
value = converunicode(value.toString()); value = converunicode(value.toString());
} }
return value; return value;
@ -94,6 +97,7 @@ public class TagUtil {
for (int i=0; i<jsonValue.length(); i++) { for (int i=0; i<jsonValue.length(); i++) {
char c = jsonValue.charAt(i); char c = jsonValue.charAt(i);
switch (c){ switch (c){
// case '\"': // case '\"':
// sb.append("\\\""); // sb.append("\\\"");
// break; // break;
@ -106,6 +110,7 @@ public class TagUtil {
// case '/': // case '/':
// sb.append("\\/"); // sb.append("\\/");
// break; // break;
case '\b': case '\b':
sb.append("\\b"); sb.append("\\b");
break; break;
@ -128,6 +133,7 @@ public class TagUtil {
return sb.toString(); return sb.toString();
} }
/** /**
* *
* @param fields * @param fields
@ -590,6 +596,7 @@ public class TagUtil {
param += "'\"+index+\"'";// 传出行索引号参数 param += "'\"+index+\"'";// 传出行索引号参数
return param; return param;
} }
public static String getJson(List fields,List datas){ public static String getJson(List fields,List datas){
if(datas!=null && datas.size()>0){ if(datas!=null && datas.size()>0){
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
@ -609,4 +616,5 @@ public class TagUtil {
return "{\"total\":\"0\",\"rows\":[]}"; return "{\"total\":\"0\",\"rows\":[]}";
} }
} }
} }

@ -31,6 +31,7 @@ public class UploadTag extends TagSupport {
protected boolean auto=false;//是否自动上传 protected boolean auto=false;//是否自动上传
protected String onUploadSuccess;//上传成功处理函数 protected String onUploadSuccess;//上传成功处理函数
protected boolean view=false;//生成查看删除链接 protected boolean view=false;//生成查看删除链接
protected String formId;//参数名称 protected String formId;//参数名称
public String getFormId() { public String getFormId() {
@ -40,6 +41,7 @@ public class UploadTag extends TagSupport {
this.formId = formId; this.formId = formId;
} }
public void setView(boolean view) { public void setView(boolean view) {
this.view = view; this.view = view;
} }
@ -133,6 +135,7 @@ public class UploadTag extends TagSupport {
} }
} }
sb.append("});"); sb.append("});");
}else if (formId!=null) { }else if (formId!=null) {
sb.append(" var o = {};"); sb.append(" var o = {};");
sb.append(" var _array = $('#"+formId+"').serializeArray();"); sb.append(" var _array = $('#"+formId+"').serializeArray();");
@ -148,6 +151,7 @@ public class UploadTag extends TagSupport {
sb.append(" });"); sb.append(" });");
sb.append("$(\'#"+id+"\').uploadify(\"settings\", \"formData\", o);"); sb.append("$(\'#"+id+"\').uploadify(\"settings\", \"formData\", o);");
}; };
sb.append("} ," sb.append("} ,"
+"onQueueComplete : function(queueData) { "); +"onQueueComplete : function(queueData) { ");
if(dialog) if(dialog)

@ -19,6 +19,7 @@ public class DataGridUrl {
private String funname;//自定义函数名称 private String funname;//自定义函数名称
private boolean isRadio;//是否是单选框 private boolean isRadio;//是否是单选框
private String onclick;//选项单击事件 private String onclick;//选项单击事件
private String urlStyle;//url样式
public String getOnclick() { public String getOnclick() {
return onclick; return onclick;
} }
@ -116,5 +117,13 @@ public class DataGridUrl {
this.icon = icon; this.icon = icon;
} }
public void setUrlStyle(String urlStyle) {
this.urlStyle = urlStyle;
}
public String getUrlStyle() {
return urlStyle;
}
} }

@ -0,0 +1,295 @@
package org.jeecgframework.web.cgdynamgraph.controller;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.jeecgframework.core.common.controller.BaseController;
import org.jeecgframework.core.common.exception.BusinessException;
import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
import org.jeecgframework.core.common.model.json.AjaxJson;
import org.jeecgframework.core.common.model.json.DataGrid;
import org.jeecgframework.core.constant.Globals;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.tag.core.easyui.TagUtil;
import org.jeecgframework.web.cgdynamgraph.entity.core.CgDynamGraphConfigHeadEntity;
import org.jeecgframework.web.cgdynamgraph.entity.core.CgDynamGraphConfigItemEntity;
import org.jeecgframework.web.cgdynamgraph.entity.core.CgDynamGraphConfigParamEntity;
import org.jeecgframework.web.cgdynamgraph.page.core.CgDynamGraphConfigHeadPage;
import org.jeecgframework.web.cgdynamgraph.service.core.CgDynamGraphConfigHeadServiceI;
import org.jeecgframework.web.system.service.SystemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
/**
* @Title: Controller
* @Description:
* @author
* @date 2016-01-10 16:00:21
* @version V1.0
*
*/
@Scope("prototype")
@Controller
@RequestMapping("/cgDynamGraphConfigHeadController.do")
public class CgDynamGraphConfigHeadController extends BaseController {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(CgDynamGraphConfigHeadController.class);
@Autowired
private CgDynamGraphConfigHeadServiceI cgDynamGraphConfigHeadService;
@Autowired
private SystemService systemService;
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
/**
*
*
* @return
*/
@RequestMapping(params = "cgDynamGraphConfigHead")
public ModelAndView CgDynamGraphConfigHead(HttpServletRequest request) {
return new ModelAndView("jeecg/cgdynamgraph/core/cgDynamGraphConfigHeadList");
}
/**
* easyui AJAX
*
* @param request
* @param response
* @param dataGrid
* @param user
*/
@RequestMapping(params = "datagrid")
public void datagrid(CgDynamGraphConfigHeadEntity cgDynamGraphConfigHead,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
CriteriaQuery cq = new CriteriaQuery(CgDynamGraphConfigHeadEntity.class, dataGrid);
//查询条件组装器
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, cgDynamGraphConfigHead);
try{
//自定义追加查询条件
}catch (Exception e) {
throw new BusinessException(e.getMessage());
}
cq.add();
this.cgDynamGraphConfigHeadService.getDataGridReturn(cq, true);
TagUtil.datagrid(response, dataGrid);
}
/**
*
*
* @return
*/
@RequestMapping(params = "doDel")
@ResponseBody
public AjaxJson doDel(CgDynamGraphConfigHeadEntity cgDynamGraphConfigHead, HttpServletRequest request) {
AjaxJson j = new AjaxJson();
cgDynamGraphConfigHead = systemService.getEntity(CgDynamGraphConfigHeadEntity.class, cgDynamGraphConfigHead.getId());
message = "动态报表配置抬头删除成功";
try{
cgDynamGraphConfigHeadService.delMain(cgDynamGraphConfigHead);
systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
}catch(Exception e){
e.printStackTrace();
message = "动态报表配置抬头删除失败";
throw new BusinessException(e.getMessage());
}
j.setMsg(message);
return j;
}
/**
*
*
* @return
*/
@RequestMapping(params = "doBatchDel")
@ResponseBody
public AjaxJson doBatchDel(String ids,HttpServletRequest request){
AjaxJson j = new AjaxJson();
message = "动态报表配置抬头删除成功";
try{
for(String id:ids.split(",")){
CgDynamGraphConfigHeadEntity cgDynamGraphConfigHead = systemService.getEntity(CgDynamGraphConfigHeadEntity.class, id);
cgDynamGraphConfigHeadService.delMain(cgDynamGraphConfigHead);
systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
}
}catch(Exception e){
e.printStackTrace();
message = "动态报表配置抬头删除失败";
throw new BusinessException(e.getMessage());
}
j.setMsg(message);
return j;
}
/**
*
*
* @param ids
* @return
*/
@RequestMapping(params = "doAdd")
@ResponseBody
public AjaxJson doAdd(CgDynamGraphConfigHeadEntity cgDynamGraphConfigHead,CgDynamGraphConfigHeadPage cgDynamGraphConfigHeadPage, HttpServletRequest request) {
List<CgDynamGraphConfigItemEntity> cgDynamGraphConfigItemList = cgDynamGraphConfigHeadPage.getCgDynamGraphConfigItemList();
List<CgDynamGraphConfigParamEntity> cgDynamGraphConfigParamList = cgDynamGraphConfigHeadPage.getCgDynamGraphConfigParamList();
AjaxJson j = new AjaxJson();
message = "添加成功";
try{
cgDynamGraphConfigHeadService.addMain(cgDynamGraphConfigHead, cgDynamGraphConfigItemList,cgDynamGraphConfigParamList);
systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
}catch(Exception e){
e.printStackTrace();
message = "动态报表配置抬头添加失败";
throw new BusinessException(e.getMessage());
}
j.setMsg(message);
return j;
}
/**
*
*
* @param ids
* @return
*/
@RequestMapping(params = "doUpdate")
@ResponseBody
public AjaxJson doUpdate(CgDynamGraphConfigHeadEntity cgDynamGraphConfigHead,CgDynamGraphConfigHeadPage cgDynamGraphConfigHeadPage, HttpServletRequest request) {
List<CgDynamGraphConfigItemEntity> cgDynamGraphConfigItemList = cgDynamGraphConfigHeadPage.getCgDynamGraphConfigItemList();
List<CgDynamGraphConfigParamEntity> cgDynamGraphConfigParamList = cgDynamGraphConfigHeadPage.getCgDynamGraphConfigParamList();
AjaxJson j = new AjaxJson();
message = "更新成功";
try{
cgDynamGraphConfigHeadService.updateMain(cgDynamGraphConfigHead, cgDynamGraphConfigItemList, cgDynamGraphConfigParamList);
systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
}catch(Exception e){
e.printStackTrace();
message = "更新动态报表配置抬头失败";
throw new BusinessException(e.getMessage());
}
j.setMsg(message);
return j;
}
/**
*
*
* @return
*/
@RequestMapping(params = "goAdd")
public ModelAndView goAdd(CgDynamGraphConfigHeadEntity cgDynamGraphConfigHead, HttpServletRequest req) {
if (StringUtil.isNotEmpty(cgDynamGraphConfigHead.getId())) {
cgDynamGraphConfigHead = cgDynamGraphConfigHeadService.getEntity(CgDynamGraphConfigHeadEntity.class, cgDynamGraphConfigHead.getId());
req.setAttribute("cgDynamGraphConfigHeadPage", cgDynamGraphConfigHead);
}
return new ModelAndView("jeecg/cgdynamgraph/core/cgDynamGraphConfigHead-add");
}
/**
*
*
* @return
*/
@RequestMapping(params = "goUpdate")
public ModelAndView goUpdate(CgDynamGraphConfigHeadEntity cgDynamGraphConfigHead, HttpServletRequest req) {
if (StringUtil.isNotEmpty(cgDynamGraphConfigHead.getId())) {
cgDynamGraphConfigHead = cgDynamGraphConfigHeadService.getEntity(CgDynamGraphConfigHeadEntity.class, cgDynamGraphConfigHead.getId());
req.setAttribute("cgDynamGraphConfigHeadPage", cgDynamGraphConfigHead);
}
return new ModelAndView("jeecg/cgdynamgraph/core/cgDynamGraphConfigHead-update");
}
/**
* []
*
* @return
*/
@RequestMapping(params = "cgDynamGraphConfigItemList")
public ModelAndView cgDynamGraphConfigItemList(CgDynamGraphConfigHeadEntity cgDynamGraphConfigHead, HttpServletRequest req) {
//===================================================================================
//获取参数
Object id0 = cgDynamGraphConfigHead.getId();
//===================================================================================
//查询-动态报表配置明细
String hql0 = "from CgDynamGraphConfigItemEntity where 1 = 1 AND cgrheadId = ? ";
try{
List<CgDynamGraphConfigItemEntity> cgDynamGraphConfigItemEntityList = systemService.findHql(hql0,id0);
req.setAttribute("cgDynamGraphConfigItemList", cgDynamGraphConfigItemEntityList);
}catch(Exception e){
logger.info(e.getMessage());
}
return new ModelAndView("jeecg/cgdynamgraph/core/cgDynamGraphConfigItemList");
}
/**
* []
*
* @return
*/
@RequestMapping(params = "cgDynamGraphConfigParamList")
public ModelAndView cgDynamGraphConfigParamList(CgDynamGraphConfigHeadEntity cgDynamGraphConfigHead, HttpServletRequest req) {
//===================================================================================
//获取参数
Object id0 = cgDynamGraphConfigHead.getId();
//===================================================================================
//查询-动态报表配置明细
String hql0 = "from CgDynamGraphConfigParamEntity where 1 = 1 AND cgrheadId = ? ";
try{
List<CgDynamGraphConfigParamEntity> cgDynamGraphConfigParamEntityList = systemService.findHql(hql0,id0);
req.setAttribute("cgDynamGraphConfigParamList",cgDynamGraphConfigParamEntityList);
}catch(Exception e){
logger.info(e.getMessage());
}
return new ModelAndView("jeecg/cgdynamgraph/core/cgDynamGraphConfigParamList");
}
@RequestMapping(params = "popmenulink")
public ModelAndView popmenulink(ModelMap modelMap,
@RequestParam String url,
@RequestParam String title, HttpServletRequest request) {
modelMap.put("title",title);
modelMap.put("url",url);
StringBuilder sb = new StringBuilder("");
try{
CgDynamGraphConfigHeadEntity cgDynamGraphConfigHeadEntity = systemService.findUniqueByProperty(CgDynamGraphConfigHeadEntity.class, "code", title);
String hql0 = "from CgDynamGraphConfigParamEntity where 1 = 1 AND cgrheadId = ? ";
List<CgDynamGraphConfigParamEntity> cgreportConfigParamList = systemService.findHql(hql0,cgDynamGraphConfigHeadEntity.getId());
if(cgreportConfigParamList!=null&cgreportConfigParamList.size()>0){
for(CgDynamGraphConfigParamEntity cgreportConfigParam :cgreportConfigParamList){
sb.append("&").append(cgreportConfigParam.getParamName()).append("=");
if(StringUtil.isNotEmpty(cgreportConfigParam.getParamValue())){
sb.append(cgreportConfigParam.getParamValue());
}else{
sb.append("${"+cgreportConfigParam.getParamName()+"}");
}
}
}
}catch(Exception e){
}
modelMap.put("params",sb.toString());
return new ModelAndView("jeecg/cgreport/core/popmenulink");
}
}

@ -0,0 +1,417 @@
package org.jeecgframework.web.cgdynamgraph.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.jeecgframework.core.common.controller.BaseController;
import org.jeecgframework.core.common.exception.BusinessException;
import org.jeecgframework.core.enums.SysThemesEnum;
import org.jeecgframework.core.util.ContextHolderUtils;
import org.jeecgframework.core.util.DynamicDBUtil;
import org.jeecgframework.core.util.SqlUtil;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.core.util.SysThemesUtil;
import org.jeecgframework.core.util.oConvertUtils;
import org.jeecgframework.web.cgdynamgraph.service.core.CgDynamGraphServiceI;
import org.jeecgframework.web.cgform.common.CgAutoListConstant;
import org.jeecgframework.web.cgform.engine.FreemarkerHelper;
import org.jeecgframework.web.cgreport.common.CgReportConstant;
import org.jeecgframework.web.cgreport.exception.CgReportNotFoundException;
import org.jeecgframework.web.cgreport.util.CgReportQueryParamUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
/**
*
* @Title:CgReportController
* @description:
* @author
* @date Jul 29, 2013 9:39:40 PM
* @version V1.0
*/
@Controller
@RequestMapping("/cgDynamGraphController")
public class CgDynamGraphController extends BaseController {
@Autowired
private CgDynamGraphServiceI cgDynamGraphService;
@RequestMapping(params = "design")
public void design(String id, HttpServletRequest request,String gtype,
HttpServletResponse response) {
//step.1 根据id获取该动态报表的配置参数
Map<String, Object> cgDynamGraphMap = null;
try{
cgDynamGraphMap = cgDynamGraphService.queryCgDynamGraphConfig(id);
}catch (Exception e) {
throw new CgReportNotFoundException("动态报表配置不存在!");
}
//step.2 获取列表ftl模板路径
FreemarkerHelper viewEngine = new FreemarkerHelper();
//step.3 组合模板+数据参数,进行页面展现
loadVars(cgDynamGraphMap,request);
String html;
//判断是否为综合类
Map<String, Object> mainConfig = (Map<String, Object> )cgDynamGraphMap.get(CgReportConstant.MAIN);
String defaultGtype =mainConfig.get("graph_type")==null?null:(String)mainConfig.get("graph_type");
//图表类型全为空,则跳转到综合界面。
if(StringUtil.isEmpty(gtype)&&StringUtil.isEmpty(defaultGtype)){
html = viewEngine.parseTemplate("/org/jeecgframework/web/cgdynamgraph/engine/core/cgDynamGraphDesign.ftl", cgDynamGraphMap);
}
//跳转到简单页面,只有查询条件与图
else{
gtype = StringUtils.isEmpty(gtype)?defaultGtype:gtype; //优先级:参数中的值比表头配置的值高
cgDynamGraphMap.put("gtype", gtype);
//设置gtype
html = viewEngine.parseTemplate("/org/jeecgframework/web/cgdynamgraph/engine/core/cgDynamGraphDesignMobile.ftl", cgDynamGraphMap);
}
try {
response.setContentType("text/html");
response.setHeader("Cache-Control", "no-store");
PrintWriter writer = response.getWriter();
writer.println(html);
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
private String getHtmlHead(HttpServletRequest request){
HttpSession session = ContextHolderUtils.getSession();
String lang = (String)session.getAttribute("lang");
StringBuilder sb= new StringBuilder("");
SysThemesEnum sysThemesEnum = SysThemesUtil.getSysTheme(request);
sb.append("<script type=\"text/javascript\" src=\"plug-in/jquery/jquery-1.8.3.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/tools/dataformat.js\"></script>");
sb.append(SysThemesUtil.getEasyUiTheme(sysThemesEnum));
sb.append("<link rel=\"stylesheet\" href=\"plug-in/easyui/themes/icon.css\" type=\"text/css\"></link>");
sb.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"plug-in/accordion/css/accordion.css\">");
sb.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"plug-in/accordion/css/icons.css\">");
sb.append("<script type=\"text/javascript\" src=\"plug-in/easyui/jquery.easyui.min.1.3.2.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/easyui/locale/zh-cn.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/tools/syUtil.js\"></script>");
sb.append(SysThemesUtil.getLhgdialogTheme(sysThemesEnum));
sb.append(StringUtil.replace("<script type=\"text/javascript\" src=\"plug-in/tools/curdtools_{0}.js\"></script>", "{0}", lang));
sb.append("<script type=\"text/javascript\" src=\"plug-in/tools/easyuiextend.js\"></script>");
return sb.toString();
}
/**
*
* @param cgDynamGraphMap
*/
@SuppressWarnings("unchecked")
private void loadVars(Map<String, Object> cgDynamGraphMap,HttpServletRequest request) {
Map mainM = (Map) cgDynamGraphMap.get(CgReportConstant.MAIN);
List<Map<String,Object>> fieldList = (List<Map<String, Object>>) cgDynamGraphMap.get(CgReportConstant.ITEMS);
List<String> paramList = (List<String>)cgDynamGraphMap.get(CgReportConstant.PARAMS);
List<Map<String,Object>> queryList = new ArrayList<Map<String,Object>>(0);
for(Map<String,Object> fl:fieldList){
fl.put(CgReportConstant.ITEM_FIELDNAME, ((String)fl.get(CgReportConstant.ITEM_FIELDNAME)).toLowerCase());
String isQuery = (String) fl.get(CgReportConstant.ITEM_ISQUERY);
if(CgReportConstant.BOOL_TRUE.equalsIgnoreCase(isQuery)){
loadDic(fl,fl);
queryList.add(fl);
}
}
StringBuilder sb = new StringBuilder("");
if(paramList!=null&&paramList.size()>0){
queryList = new ArrayList<Map<String,Object>>(0);
for(String param:paramList){
sb.append("&").append(param).append("=");
String value = request.getParameter(param);
if(StringUtil.isNotEmpty(value)){
sb.append(value);
}
}
}
cgDynamGraphMap.put(CgReportConstant.CONFIG_ID, mainM.get("code"));
cgDynamGraphMap.put(CgReportConstant.CONFIG_NAME, mainM.get("name"));
cgDynamGraphMap.put(CgReportConstant.CONFIG_FIELDLIST, fieldList);
cgDynamGraphMap.put(CgReportConstant.CONFIG_QUERYLIST, queryList);
//获取传递参数
cgDynamGraphMap.put(CgReportConstant.CONFIG_PARAMS, sb.toString());
}
/**
*
* @param result
* @param beans
*/
@SuppressWarnings("unchecked")
private void dealDic(List<Map<String, Object>> result,
List<Map<String,Object>> beans) {
for(Map<String,Object> bean:beans){
String dict_code = (String) bean.get(CgReportConstant.ITEM_DICCODE);
if(StringUtil.isEmpty(dict_code)){
//不需要处理字典
continue;
}else{
List<Map<String, Object>> dicDatas = queryDic(dict_code);
for(Map r:result){
String value = String.valueOf(r.get(bean.get(CgReportConstant.ITEM_FIELDNAME)));
for(Map m:dicDatas){
String typecode = String.valueOf(m.get("typecode"));
String typename = String.valueOf(m.get("typename"));
if(value.equalsIgnoreCase(typecode)){
r.put(bean.get(CgReportConstant.ITEM_FIELDNAME),typename);
}
}
}
}
}
}
/**
*
* @param result
* @param beans
*/
@SuppressWarnings("unchecked")
private void dealReplace(List<Map<String, Object>> result,
List<Map<String,Object>> beans){
for(Map<String,Object> bean:beans){
try{
//获取取值表达式
String replace = (String) bean.get(CgReportConstant.ITEM_REPLACE);
if(StringUtil.isEmpty(replace)){
continue;
}
String[] groups = replace.split(",");
for(String g:groups){
String[] items = g.split("_");
String v = items[0];//逻辑判断值
String txt = items[1];//要转换的文本
for(Map r:result){
String value = String.valueOf(r.get(bean.get(CgReportConstant.ITEM_FIELDNAME)));
if(value.equalsIgnoreCase(v)){
r.put(bean.get(CgReportConstant.ITEM_FIELDNAME),txt);
}
}
}
}catch (Exception e) {
//这里出现异常原因是因为取值表达式不正确
e.printStackTrace();
throw new BusinessException("取值表达式不正确");
}
}
}
/**
*
* @param configId id-code
* @param page
* @param rows
* @param request
* @param response
*/
@SuppressWarnings("unchecked")
@RequestMapping(params = "datagrid")
public void datagrid(String configId,HttpServletRequest request,
HttpServletResponse response) {
//step.1 根据id获取该动态报表的配置参数
Map<String, Object> cgDynamGraphMap = null;
try{
cgDynamGraphMap = cgDynamGraphService.queryCgDynamGraphConfig(configId);
if(cgDynamGraphMap.size()<=0){
throw new CgReportNotFoundException("动态报表配置不存在!");
}
}catch (Exception e) {
throw new CgReportNotFoundException("查找动态报表配置失败!"+e.getMessage());
}
//step.2 获取该配置的查询SQL
Map configM = (Map) cgDynamGraphMap.get(CgReportConstant.MAIN);
String querySql = (String) configM.get(CgReportConstant.CONFIG_SQL);
List<Map<String,Object>> items = (List<Map<String, Object>>) cgDynamGraphMap.get(CgReportConstant.ITEMS);
List<String> paramList = (List<String>) cgDynamGraphMap.get(CgReportConstant.PARAMS);
Map queryparams = new LinkedHashMap<String,Object>();
if(paramList!=null&&paramList.size()>0){
for(String param :paramList){
String value = request.getParameter(param);
value = value==null?"":value;
querySql = querySql.replace("${"+param+"}", value);
}
}else{
for(Map<String,Object> item:items){
String isQuery = (String) item.get(CgReportConstant.ITEM_ISQUERY);
if(CgReportConstant.BOOL_TRUE.equalsIgnoreCase(isQuery)){
//step.3 装载查询条件
CgReportQueryParamUtil.loadQueryParams(request, item, queryparams);
}
}
}
//step.4 进行查询返回结果
String dbKey=(String)configM.get("db_source");
List<Map<String, Object>> result=null;
Long size=0l;
if(StringUtils.isNotBlank(dbKey)){
result= DynamicDBUtil.findList(dbKey,querySql);
Map map=(Map)DynamicDBUtil.findOne(dbKey,SqlUtil.getCountSql(querySql,null));
if(map.get("COUNT(*)") instanceof BigDecimal){
BigDecimal count = (BigDecimal)map.get("COUNT(*)");
size = count.longValue();
}else{
size=(Long)map.get("COUNT(*)");
}
}else{
result= cgDynamGraphService.queryByCgDynamGraphSql(querySql, queryparams);
size = cgDynamGraphService.countQueryByCgDynamGraphSql(querySql, queryparams);
}
dealDic(result,items);
dealReplace(result,items);
response.setContentType("application/json");
response.setHeader("Cache-Control", "no-store");
PrintWriter writer;
try {
writer = response.getWriter();
writer.println(CgReportQueryParamUtil.getJson(result,size));
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* SQL
* @param sql
* @return
*/
@SuppressWarnings("unchecked")
@RequestMapping(params = "getFields", method = RequestMethod.POST)
@ResponseBody
public Object getSqlFields(String sql,String dbKey){
List<String> fields = null;
List<String> params = null;
Map reJson = new HashMap<String, Object>();
try{
fields = getFields(sql, dbKey);
params = getSqlParams(sql);
}catch (Exception e) {
e.printStackTrace();
String errorInfo = "解析失败!<br><br>失败原因:";
//无法直接捕捉到:java.net.ConnectException异常
int i = e.getMessage().indexOf("Connection refused: connect");
if (i != -1) {//非链接异常
errorInfo += "数据源连接失败.";
}else{
errorInfo += "SQL语法错误.";
}
reJson.put("status", "error");
reJson.put("datas", errorInfo);
return reJson;
}
reJson.put("status", "success");
reJson.put("fields", fields);
reJson.put("params", params);
return reJson;
}
private List<String> getFields(String sql,String dbKey){
List<String> fields = null;
sql = getSql(sql);
if(StringUtils.isNotBlank(dbKey)){
List<Map<String,Object>> dataList=DynamicDBUtil.findList(dbKey,SqlUtil.jeecgCreatePageSql(dbKey,sql,null,1,1),null);
if(dataList.size()<1){
throw new BusinessException("该报表sql没有数据");
}
Set fieldsSet= dataList.get(0).keySet();
fields = new ArrayList<String>(fieldsSet);
}else{
fields = cgDynamGraphService.getSqlFields(sql);
}
return fields;
}
private String getSql(String sql){
String regex = "\\$\\{\\w+\\}";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(sql);
while(m.find()){
String whereParam = m.group();
System.out.println(whereParam);
sql = sql.replace(whereParam, "'' or 1=1 or 1=''");
sql = sql.replace("'''", "''");
System.out.println(sql);
}
//兼容图表
regex = "\\{\\w+\\}";
p = Pattern.compile(regex);
m = p.matcher(sql);
while(m.find()){
String whereParam = m.group();
System.out.println(whereParam);
sql = sql.replace(whereParam, " 1=1 ");
System.out.println(sql);
}
return sql;
}
public List<String> getSqlParams(String sql) {
if(oConvertUtils.isEmpty(sql)){
return null;
}
List<String> params = new ArrayList<String>();
String regex = "\\$\\{\\w+\\}";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(sql);
while(m.find()){
String whereParam = m.group();
params.add(whereParam.substring(whereParam.indexOf("{")+1,whereParam.indexOf("}")));
}
return params;
}
/**
*
* @param m freemarker
* @param bean
*/
@SuppressWarnings("unchecked")
private void loadDic(Map m, Map<String, Object> cgDynamGraphMap) {
String dict_code = (String) cgDynamGraphMap.get("dict_code");
if(StringUtil.isEmpty(dict_code)){
m.put(CgReportConstant.FIELD_DICTLIST, new ArrayList(0));
return;
}
List<Map<String, Object>> dicDatas = queryDic(dict_code);
m.put(CgReportConstant.FIELD_DICTLIST, dicDatas);
}
/**
*
* @param diccode
* @return
*/
private List<Map<String, Object>> queryDic(String diccode) {
StringBuilder dicSql = new StringBuilder();
dicSql.append(" SELECT TYPECODE,TYPENAME FROM");
dicSql.append(" "+CgReportConstant.SYS_DIC);
dicSql.append(" "+"WHERE TYPEGROUPID = ");
dicSql.append(" "+"(SELECT ID FROM "+CgReportConstant.SYS_DICGROUP+" WHERE TYPEGROUPCODE = '"+diccode+"' )");
List<Map<String, Object>> dicDatas = cgDynamGraphService.findForJdbc(dicSql.toString());
return dicDatas;
}
}

@ -0,0 +1,23 @@
package org.jeecgframework.web.cgdynamgraph.dao.core;
import java.util.List;
import java.util.Map;
import org.jeecgframework.minidao.annotation.Arguments;
import org.jeecgframework.minidao.annotation.MiniDao;
import org.springframework.stereotype.Repository;
/**
*
* @author zhangdaihao
*
*/
@Repository("cgDynamGraphDao")
public interface CgDynamGraphDao{
@Arguments("configId")
List<Map<String,Object>> queryCgDynamGraphItems(String configId);
@Arguments("id")
Map queryCgDynamGraphMainConfig(String id);
}

@ -0,0 +1,273 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>HTML5在线图表设计器</title>
<meta name="Description" content="在线图表设计器" />
<meta name="Keywords" content="图表,ichartjs,html5,canvas,html5例子,设计" />
<link id="easyuiTheme" rel="stylesheet" href="plug-in/easyui/themes/default/easyui.css" type="text/css"></link>
<link rel="stylesheet" href="plug-in/easyui/themes/icon.css" type="text/css"></link>
<link rel="stylesheet" type="text/css" href="plug-in/accordion/css/accordion.css">
<link rel="stylesheet" type="text/css" href="plug-in/accordion/css/icons.css">
<link rel="stylesheet" href="plug-in/jquery-ui/css/ui-lightness/jquery-ui-1.9.2.custom.min.css">
<link rel="stylesheet" href="plug-in/ichart/css/gallery.css">
<script type="text/javascript" src="plug-in/jquery/jquery-1.8.3.js"></script>
<script type="text/javascript" src="plug-in/easyui/jquery.easyui.min.1.3.2.js"></script>
<script type="text/javascript" src="plug-in/easyui/locale/zh-cn.js"></script>
<script src="plug-in/jquery-ui/js/jquery-ui-1.9.2.custom.min.js"></script>
<script type="text/javascript" src="plug-in/tools/dataformat.js"></script>
<script type="text/javascript" src="plug-in/tools/curdtools_zh-cn.js"></script>
<script type="text/javascript" src="plug-in/tools/easyuiextend.js"></script>
<script type="text/javascript" src="plug-in/tools/syUtil.js"></script>
<script type="text/javascript" src="plug-in/lhgDialog/lhgdialog.min.js"></script>
<script src="plug-in/ichart/js/ichart-1.0.js"></script>
<script src="webpage/jeecg/cgdynamgraph/core/cgDynamGraphDesign.js"></script>
<script type="text/javascript">
$(function(){$('#${config_id}List').datagrid(
{
idField: 'id',
title: '${config_name}',
url:' cgDynamGraphController.do?datagrid&configId=${config_id}${config_params}',
fit:true,
fitColumns:false,
pageSize: 10,
pagination:true,
pageList:[10,30,50,100],
singleSelect:true,
checkbox:false,
sortOrder:'asc',
rownumbers:true,
showFooter:true,
frozenColumns:[[]],
columns:[
[ <#if (config_fieldList?size>0)>
<#list config_fieldList as x>
<#if x_has_next>
{field:'${x['field_name']}',
title:'${x['field_txt']}',
<#if x['field_href']?? && x['field_href']!="">
formatter:function(value,rec,index){
var href='';
href+=applyHref('字段链接','${x['field_href']}',value,rec,index);
return href;
},
</#if>
<#if x['is_show'] == "N" >hidden:true,</#if>
width:80},
<#else>
{field:'${x['field_name']}',title:'${x['field_txt']}',width:80}
</#if>
</#list>
</#if>
]
],
onLoadSuccess:function(data){$("#${config_id}List").datagrid("clearSelections");
DATA_=data.rows;
doChart();},
onClickRow:function(rowIndex,rowData)
{rowid=rowData.id;gridname='${config_id}List';}
});
$('#${config_id}List').datagrid('getPager').pagination({beforePageText:'',afterPageText:'/{pages}',displayMsg:'{from}-{to}共{total}条',showPageList:true,showRefresh:true});
$('#${config_id}List').datagrid('getPager').pagination({onBeforeRefresh:function(pageNumber, pageSize){ $(this).pagination('loading');$(this).pagination('loaded'); }});});
function reloadTable(){
try{
$('#'+gridname).datagrid('reload');
$('#'+gridname).treegrid('reload');
}catch(ex){
//donothing
}
}
function reload${config_id}List(){$('#${config_id}List').datagrid('reload');}
function get${config_id}ListSelected(field){return getSelected(field);}
function getSelected(field){var row = $('#'+gridname).datagrid('getSelected');if(row!=null){value= row[field];}else{value='';}return value;}
function get${config_id}ListSelections(field){var ids = [];var rows = $('#${config_id}List').datagrid('getSelections');for(var i=0;i<rows.length;i++){ids.push(rows[i][field]);}ids.join(',');return ids};
function ${config_id}Listsearch(){var queryParams=$('#${config_id}List').datagrid('options').queryParams;$('#${config_id}Listtb').find('*').each(function(){queryParams[$(this).attr('name')]=$(this).val();});$('#${config_id}List').datagrid({url:' cgDynamGraphController.do?datagrid&configId=${config_id}',pageNumber:1});}
function dosearch(params){var jsonparams=$.parseJSON(params);$('#${config_id}List').datagrid({url:' cgDynamGraphController.do?datagrid&configId=${config_id},',queryParams:jsonparams});}
function ${config_id}Listsearchbox(value,name){var queryParams=$('#${config_id}List').datagrid('options').queryParams;queryParams[name]=value;queryParams.searchfield=name;$('#${config_id}List').datagrid('reload');}$('#${config_id}Listsearchbox').searchbox({searcher:function(value,name){${config_id}Listsearchbox(value,name);},menu:'#${config_id}Listmm',prompt:'请输入查询关键字'});
function searchReset_${config_id}(name){ $("#"+name+"tb").find(":input").val("");${config_id}Listsearch();}
//导出
function exportXls() {
var submitUrl = "cgExportExcelController.do?exportXls&configId=${config_id}";
var queryParams = "";
$('#${config_id}Listtb').find('*').each(function(){
queryParams+= "&"+$(this).attr('name')+"="+$(this).val();
}
);
submitUrl+=queryParams;
submitUrl = encodeURI(submitUrl);
window.location.href=submitUrl;
}
//将字段href中的变量替换掉
function applyHref(tabname,href,value,rec,index){
//addOneTab(tabname,href);
var hrefnew = href;
var re = "";
var p1 = /\#\{(\w+)\}/g;
try{
var vars =hrefnew.match(p1);
for(var i=0;i<vars.length;i++){
var keyt = vars[i];
var p2 = /\#\{(\w+)\}/g;
var key = p2.exec(keyt);
hrefnew = hrefnew.replace(keyt,rec[key[1]]);
}
}catch(ex){
}
re += "<a href = '#' onclick=\"addOneTab('"+tabname+"','"+ hrefnew+"')\" ><u>"+value+"</u></a>";
return re;
}
</script>
</head>
<body>
<nav>
<div id="gallery_tools">
<div class="gallery_tool">
<div class="gallery_too">
开启动画:<input name="animate" type="checkbox" id="gallery_animate" class="gallery_check" checked="checked"/>
</div>
<div class="gallery_too">
开启阴影:<input type="checkbox" id="gallery_shadow" class="gallery_check"/>
</div>
<div class="gallery_too">
背景颜色:
<div class="gallery_bg">
<div class="gallery_bg_list">
<div class="gallery_color" type="0" style="background-color: #d9e6f4;"></div>
<div class="gallery_color" type="0" style="background-color: #fefefe;"></div>
<div class="gallery_color" type="0" style="background-color: #eeeeee;"></div>
<div class="gallery_color" type="0" style="background-color: #eff8ff;"></div>
</div>
</div>
</div>
<div class="gallery_too">
坐标系背景颜色:
<div class="gallery_bg">
<div class="gallery_bg_list">
<div class="gallery_color" type="1" style="background-color: #d9e6f4;"></div>
<div class="gallery_color" type="1" style="background-color: #fefefe;"></div>
<div class="gallery_color" type="1" style="background-color: #eeeeee;"></div>
<div class="gallery_color" type="1" style="background-color: #eff8ff;"></div>
<div class="gallery_color" type="1" style="background-color: #d6dbd2;"></div>
</div>
</div>
</div>
<div class="gallery_too">
<input type="button" id="custom-data" class="gallery_check" value="自定义数据"/>
</div>
<div class="gallery_too">
<a href="javascript: void(0);" title="download chart" target="_blank" download="chart.png" id="download_a">
<input id="download" disabled="disabled" type="button" class="gallery_check" value="导出图表" />
</a>
</div>
</div>
</div>
</nav>
<section id="gallery_container">
<section id="gallery_left_container">
<section id="gallery_ichart" class="gallery_section">
<div class="gallery_bar">单击图标进行图表类型选择->></div>
<div class="gallery_draggable pie2d" type="Pie2D">
</div>
<div class="gallery_draggable pie3d" type="Pie3D">
</div>
<div class="gallery_draggable column2d" type="Column2D">
</div>
<div class="gallery_draggable column3d" type="Column3D">
</div>
<div class="gallery_draggable bar2d" type="Bar2D">
</div>
<div class="gallery_draggable area2d" type="Area2D">
</div>
<div class="gallery_draggable line2d" type="LineBasic2D"></div>
<div class="gallery_draggable sline2d" type="LineBasic2D" option="1"></div>
</section >
</section>
<section id="gallery_right_container" >
<section id="gallery_right_bg" class="right_container"></section>
</section>
<section id="canvasDiv"></section>
</section>
<div id="dialog-form" title="定制数据">
<p id="validateTips">所有文本均为必填项.</p>
<div>
<span>标题:</span><span>
<input type="text" id="form_title" class="form_title" size="34" value="输入标题名称"/>
</span>&nbsp;&nbsp;
<span><a href="javascript:void(0)" onclick="addRow();">增加一行</a></span>
</div>
<div style="margin-top:4px;">
<span style="float: left;">数据:</span>
<span>
<table class='form_table' id='data_table'>
<thead>
<tr><td>名称</td><td>数值(数字)</td><td>颜色</td><td></td></tr>
</thead>
<tbody id='form_tbody'>
<tr id='form_tr_head'><td><input type="text" class="form_text" /></td><td><input type="text" class="form_text" /></td><td class="td_color"><input type="text" class="form_text" /></td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td></tr>
</tbody>
</table>
</span>
</div>
<div id ="gallery_color_picker">
<div class="color" style="background-color: #a5c2d5;" color="#a5c2d5"></div>
<div class="color" style="background-color: #cbab4f;" color="#cbab4f"></div>
<div class="color" style="background-color: #76a871;" color="#76a871"></div>
<div class="color" style="background-color: #9f7961;" color="#9f7961"></div>
<div class="color" style="background-color: #a56f8f;" color="#a56f8f"></div>
<div class="color" style="background-color: #cf77d7;" color="#cf77d7"></div>
<div class="color" style="background-color: #f76f6f;" color="#f76f6f"></div>
<div class="color" style="background-color: #c12c44;" color="#c12c44"></div>
<div class="color" style="background-color: #6f83a5;" color="#6f83a5"></div>
</div>
</div>
<div id="gallery_data" class="gallery_section">
<table width="100%" id="${config_id}List" toolbar="#${config_id}Listtb"></table>
<div id="${config_id}Listtb" style="padding:3px; height: auto">
<div name="searchColums">
<#list config_queryList as x>
<span style="display:-moz-inline-box;display:inline-block;">
<span style="display:-moz-inline-box;display:inline-block;width: 100px;text-align:right;text-align:right;text-overflow:ellipsis;-o-text-overflow:ellipsis; overflow: hidden;white-space:nowrap;" title="${x['field_txt']}">${x['field_txt']}</span>
<#if x['search_mode']=="group">
<input type="text" name="${x['field_name']}_begin" style="width: 94px" <#if x['field_type']=="Date">class="easyui-datebox"</#if> />
<span style="display:-moz-inline-box;display:inline-block;width: 8px;text-align:right;">~</span>
<input type="text" name="${x['field_name']}_end" style="width: 94px" <#if x['field_type']=="Date">class="easyui-datebox"</#if> />
</#if>
<#if x['search_mode']=="single">
<#if (x['field_dictlist']?size >0)>
<select name = "${x['field_name']}" WIDTH="100" style="width: 104px">
<option value = "">---请选择---</option>
<#list x['field_dictlist'] as xd>
<option value = "${xd['typecode']}">${xd['typename']}</option>
</#list>
</select>
</#if>
<#if (x['field_dictlist']?size <= 0)>
<input type="text" name="${x['field_name']}" style="width: 100px" <#if x['field_type']=="Date">class="easyui-datebox"</#if> />
</#if>
</#if>
</span>
</#list>
</div>
<div style="height:30px;" class="datagrid-toolbar">
<span style="float:left;" >
<a href="#" class="easyui-linkbutton" plain="true" icon="icon-putout" onclick="exportXls();">导出excel</a>
</span>
<#if (config_queryList?size >0)>
<span style="float:right">
<a href="#" class="easyui-linkbutton" iconCls="icon-search" onclick="${config_id}Listsearch()">查询</a>
<a href="#" class="easyui-linkbutton" iconCls="icon-reload" onclick="searchReset_${config_id}('${config_id}List')">重置</a>
</span>
</#if>
</div>
</div>
</div >
</body>
</html>

@ -0,0 +1,57 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>${main.name}</title>
<meta name="Description" content="在线图表设计器" />
<meta name="Keywords" content="图表,ichartjs,html5,canvas,html5例子,设计" />
<link id="easyuiTheme" rel="stylesheet" href="plug-in/easyui/themes/default/easyui.css" type="text/css"></link>
<link rel="stylesheet" href="plug-in/easyui/themes/icon.css" type="text/css"></link>
<link rel="stylesheet" type="text/css" href="plug-in/accordion/css/accordion.css">
<link rel="stylesheet" type="text/css" href="plug-in/accordion/css/icons.css">
<link rel="stylesheet" href="plug-in/jquery-ui/css/ui-lightness/jquery-ui-1.9.2.custom.min.css">
<link rel="stylesheet" href="plug-in/ichart/css/gallery.css">
<!--覆盖css文件中的样式 因为与综合类的共同不能修改css中的样式-->
<style type="text/css">
#canvasDiv{
position: absolute;
top: 0px;
left: 0px;
width: 100%;
}
</style>
<script type="text/javascript" src="plug-in/jquery/jquery-1.8.3.js"></script>
<script type="text/javascript" src="plug-in/easyui/jquery.easyui.min.1.3.2.js"></script>
<script type="text/javascript" src="plug-in/easyui/locale/zh-cn.js"></script>
<script src="plug-in/jquery-ui/js/jquery-ui-1.9.2.custom.min.js"></script>
<script type="text/javascript" src="plug-in/tools/dataformat.js"></script>
<script type="text/javascript" src="plug-in/tools/curdtools_zh-cn.js"></script>
<script type="text/javascript" src="plug-in/tools/easyuiextend.js"></script>
<script type="text/javascript" src="plug-in/tools/syUtil.js"></script>
<script type="text/javascript" src="plug-in/lhgDialog/lhgdialog.min.js"></script>
<script src="plug-in/ichart/js/ichart-1.0.js"></script>
<script src="webpage/jeecg/cgdynamgraph/core/cgDynamGraphDesignMobile.js"></script>
<script type="text/javascript">
$(document).ready(function(){
TYPE_ = '${gtype}'
TITLE_='${main.content}'
var param = {configId: '${config_id}'};
//显示趋势图
$.post("cgDynamGraphController.do?datagrid", param, function(data) {
DATA_=eval(data).rows;
doChart();
});
$(window).resize(function() {
doChart();
});
});
</script>
</head>
<body>
<div id="canvasDiv"></div>
</body>
</html>

@ -0,0 +1,276 @@
package org.jeecgframework.web.cgdynamgraph.entity.core;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
/**
* @Title: Entity
* @Description:
* @author
* @date 2013-12-07 16:00:21
* @version V1.0
*
*/
@Entity
@Table(name = "jform_cgdynamgraph_head", schema = "")
@SuppressWarnings("serial")
public class CgDynamGraphConfigHeadEntity implements java.io.Serializable {
/**主键*/
private java.lang.String id;
/**编码*/
private java.lang.String code;
/**名称*/
private java.lang.String name;
/**查询数据SQL*/
private java.lang.String cgrSql;
/**描述*/
private java.lang.String content;
/**创建时间*/
private java.util.Date createDate;
/**创建人ID*/
private java.lang.String createBy;
/**创建人名称*/
private java.lang.String createName;
/**修改时间*/
private java.util.Date updateDate;
/**修改人*/
private java.lang.String updateBy;
/**修改人名称*/
private java.lang.String updateName;
/**动态数据源*/
private String dbSource;
/**图表类型*/
private String graphType;
/**数据结构类型*/
private String dataStructure;
/**是否分页*/
private String isPagination;
/**
*: java.lang.String
*@return: java.lang.String
*/
@Id
@GeneratedValue(generator = "paymentableGenerator")
@GenericGenerator(name = "paymentableGenerator", strategy = "uuid")
@Column(name ="ID",nullable=false,length=36)
public java.lang.String getId(){
return this.id;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setId(java.lang.String id){
this.id = id;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="CODE",nullable=false,length=36)
public java.lang.String getCode(){
return this.code;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setCode(java.lang.String code){
this.code = code;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="NAME",nullable=false,length=100)
public java.lang.String getName(){
return this.name;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setName(java.lang.String name){
this.name = name;
}
/**
*: java.lang.String
*@return: java.lang.String SQL
*/
@Column(name ="CGR_SQL",nullable=false,length=2000)
public java.lang.String getCgrSql(){
return this.cgrSql;
}
/**
*: java.lang.String
*@param: java.lang.String SQL
*/
public void setCgrSql(java.lang.String cgrSql){
this.cgrSql = cgrSql;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="CONTENT",nullable=false,length=1000)
public java.lang.String getContent(){
return this.content;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setContent(java.lang.String content){
this.content = content;
}
/**
*: java.util.Date
*@return: java.util.Date
*/
@Column(name ="create_date",nullable=true)
public java.util.Date getCreateDate(){
return this.createDate;
}
/**
*: java.util.Date
*@param: java.util.Date
*/
public void setCreateDate(java.util.Date createDate){
this.createDate = createDate;
}
/**
*: java.lang.String
*@return: java.lang.String ID
*/
@Column(name ="create_by",nullable=true,length=32)
public java.lang.String getCreateBy(){
return this.createBy;
}
/**
*: java.lang.String
*@param: java.lang.String ID
*/
public void setCreateBy(java.lang.String createBy){
this.createBy = createBy;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="create_name",nullable=true,length=32)
public java.lang.String getCreateName(){
return this.createName;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setCreateName(java.lang.String createName){
this.createName = createName;
}
/**
*: java.util.Date
*@return: java.util.Date
*/
@Column(name ="update_date",nullable=true)
public java.util.Date getUpdateDate(){
return this.updateDate;
}
/**
*: java.util.Date
*@param: java.util.Date
*/
public void setUpdateDate(java.util.Date updateDate){
this.updateDate = updateDate;
}
/**
*: java.lang.String
*@return: java.lang.String ID
*/
@Column(name ="update_by",nullable=true,length=32)
public java.lang.String getUpdateBy(){
return this.updateBy;
}
/**
*: java.lang.String
*@param: java.lang.String ID
*/
public void setUpdateBy(java.lang.String updateBy){
this.updateBy = updateBy;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="update_name",nullable=true,length=32)
public java.lang.String getUpdateName(){
return this.updateName;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setUpdateName(java.lang.String updateName){
this.updateName = updateName;
}
@Column(name ="db_source",length=36)
public String getDbSource() {
return dbSource;
}
public void setDbSource(String dbSource) {
this.dbSource = dbSource;
}
@Column(name ="graph_type",length=36)
public String getGraphType() {
return graphType;
}
public void setGraphType(String graphType) {
this.graphType = graphType;
}
@Column(name ="data_structure",length=36)
public String getDataStructure() {
return dataStructure;
}
public void setDataStructure(String dataStructure) {
this.dataStructure = dataStructure;
}
@Column(name ="is_pagination",length=2)
public String getIsPagination() {
return isPagination;
}
public void setIsPagination(String isPagination) {
this.isPagination = isPagination;
}
}

@ -0,0 +1,248 @@
package org.jeecgframework.web.cgdynamgraph.entity.core;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
/**
* @Title: Entity
* @Description:
* @author
* @date 2013-12-07 16:00:21
* @version V1.0
*
*/
@Entity
@Table(name = "jform_cgdynamgraph_item", schema = "")
@SuppressWarnings("serial")
public class CgDynamGraphConfigItemEntity implements java.io.Serializable {
/**主键*/
private java.lang.String id;
/**字段名*/
private java.lang.String fieldName;
/**字段序号*/
private java.lang.Integer orderNum;
/**字段文本*/
private java.lang.String fieldTxt;
/**字段类型*/
private java.lang.String fieldType;
//update_begin by:Robin for:TASK #344 动态报表需要增加字段是否显示字段herf
/**字段href*/
private String fieldHref;
/**是否显示*/
private String isShow;
//update_begin by:Robin for:TASK #344 动态报表需要增加字段是否显示字段herf
/**查询模式*/
private java.lang.String sMode;
/**取值表达式*/
private java.lang.String replaceVa;
/**字典Code*/
private java.lang.String dictCode;
/**是否查询*/
private java.lang.String sFlag;
/**外键*/
private java.lang.String cgrheadId;
/**
*: java.lang.String
*@return: java.lang.String
*/
@Id
@GeneratedValue(generator = "paymentableGenerator")
@GenericGenerator(name = "paymentableGenerator", strategy = "uuid")
@Column(name ="ID",nullable=false,length=36)
public java.lang.String getId(){
return this.id;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setId(java.lang.String id){
this.id = id;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="FIELD_NAME",nullable=true,length=36)
public java.lang.String getFieldName(){
return this.fieldName;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setFieldName(java.lang.String fieldName){
this.fieldName = fieldName;
}
/**
*: java.lang.Integer
*@return: java.lang.Integer
*/
@Column(name ="ORDER_NUM",nullable=true,length=10)
public java.lang.Integer getOrderNum(){
return this.orderNum;
}
/**
*: java.lang.Integer
*@param: java.lang.Integer
*/
public void setOrderNum(java.lang.Integer orderNum){
this.orderNum = orderNum;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="FIELD_TXT",nullable=true,length=1000)
public java.lang.String getFieldTxt(){
return this.fieldTxt;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setFieldTxt(java.lang.String fieldTxt){
this.fieldTxt = fieldTxt;
}
/**
* @return isShow
*/
@Column(name = "IS_SHOW",nullable=true,length=5)
public String getIsShow() {
return isShow;
}
/**
* @param isShow isShow
*/
public void setIsShow(String isShow) {
this.isShow = isShow;
}
/**
* @return fieldHref
*/
@Column(name ="FIELD_HREF",nullable=true,length=120)
public String getFieldHref() {
return fieldHref;
}
/**
* @param fieldHref fieldHref
*/
public void setFieldHref(String fieldHref) {
this.fieldHref = fieldHref;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="FIELD_TYPE",nullable=true,length=10)
public java.lang.String getFieldType(){
return this.fieldType;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setFieldType(java.lang.String fieldType){
this.fieldType = fieldType;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="S_MODE",nullable=true,length=10)
public java.lang.String getSMode(){
return this.sMode;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setSMode(java.lang.String sMode){
this.sMode = sMode;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="REPLACE_VA",nullable=true,length=36)
public java.lang.String getReplaceVa(){
return this.replaceVa;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setReplaceVa(java.lang.String replaceVa){
this.replaceVa = replaceVa;
}
/**
*: java.lang.String
*@return: java.lang.String Code
*/
@Column(name ="DICT_CODE",nullable=true,length=36)
public java.lang.String getDictCode(){
return this.dictCode;
}
/**
*: java.lang.String
*@param: java.lang.String Code
*/
public void setDictCode(java.lang.String dictCode){
this.dictCode = dictCode;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="S_FLAG",nullable=true,length=2)
public java.lang.String getSFlag(){
return this.sFlag;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setSFlag(java.lang.String sFlag){
this.sFlag = sFlag;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="CGRHEAD_ID",nullable=true,length=36)
public java.lang.String getCgrheadId(){
return this.cgrheadId;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setCgrheadId(java.lang.String cgrheadId){
this.cgrheadId = cgrheadId;
}
}

@ -0,0 +1,284 @@
package org.jeecgframework.web.cgdynamgraph.entity.core;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
import org.jeecgframework.poi.excel.annotation.Excel;
/**
* @Title: Entity
* @Description:
* @author onlineGenerator
* @date 2015-12-01 11:22:58
* @version V1.0
*
*/
@Entity
@Table(name = "jform_cgdynamgraph_param", schema = "")
@SuppressWarnings("serial")
public class CgDynamGraphConfigParamEntity implements java.io.Serializable {
/**主键*/
private java.lang.String id;
/**创建人名称*/
private java.lang.String createName;
/**创建人登录名称*/
private java.lang.String createBy;
/**创建日期*/
private java.util.Date createDate;
/**更新人名称*/
private java.lang.String updateName;
/**更新人登录名称*/
private java.lang.String updateBy;
/**更新日期*/
private java.util.Date updateDate;
/**所属部门*/
private java.lang.String sysOrgCode;
/**所属公司*/
private java.lang.String sysCompanyCode;
/**参数名称*/
@Excel(name="参数名称")
private java.lang.String paramName;
/**参数说明*/
@Excel(name="参数说明")
private java.lang.String paramDesc;
/**数值*/
@Excel(name="数值")
private java.lang.String paramValue;
/**排序*/
@Excel(name="排序")
private java.lang.Integer seq;
/**数据源ID*/
@Excel(name="动态报表ID")
private java.lang.String cgrheadId;
/**
*: java.lang.String
*@return: java.lang.String
*/
@Id
@GeneratedValue(generator = "paymentableGenerator")
@GenericGenerator(name = "paymentableGenerator", strategy = "uuid")
@Column(name ="ID",nullable=false,length=36)
public java.lang.String getId(){
return this.id;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setId(java.lang.String id){
this.id = id;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="CREATE_NAME",nullable=true,length=50)
public java.lang.String getCreateName(){
return this.createName;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setCreateName(java.lang.String createName){
this.createName = createName;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="CREATE_BY",nullable=true,length=50)
public java.lang.String getCreateBy(){
return this.createBy;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setCreateBy(java.lang.String createBy){
this.createBy = createBy;
}
/**
*: java.util.Date
*@return: java.util.Date
*/
@Column(name ="CREATE_DATE",nullable=true,length=20)
public java.util.Date getCreateDate(){
return this.createDate;
}
/**
*: java.util.Date
*@param: java.util.Date
*/
public void setCreateDate(java.util.Date createDate){
this.createDate = createDate;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="UPDATE_NAME",nullable=true,length=50)
public java.lang.String getUpdateName(){
return this.updateName;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setUpdateName(java.lang.String updateName){
this.updateName = updateName;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="UPDATE_BY",nullable=true,length=50)
public java.lang.String getUpdateBy(){
return this.updateBy;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setUpdateBy(java.lang.String updateBy){
this.updateBy = updateBy;
}
/**
*: java.util.Date
*@return: java.util.Date
*/
@Column(name ="UPDATE_DATE",nullable=true,length=20)
public java.util.Date getUpdateDate(){
return this.updateDate;
}
/**
*: java.util.Date
*@param: java.util.Date
*/
public void setUpdateDate(java.util.Date updateDate){
this.updateDate = updateDate;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="SYS_ORG_CODE",nullable=true,length=50)
public java.lang.String getSysOrgCode(){
return this.sysOrgCode;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setSysOrgCode(java.lang.String sysOrgCode){
this.sysOrgCode = sysOrgCode;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="SYS_COMPANY_CODE",nullable=true,length=50)
public java.lang.String getSysCompanyCode(){
return this.sysCompanyCode;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setSysCompanyCode(java.lang.String sysCompanyCode){
this.sysCompanyCode = sysCompanyCode;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="PARAM_NAME",nullable=false,length=32)
public java.lang.String getParamName(){
return this.paramName;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setParamName(java.lang.String paramName){
this.paramName = paramName;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="PARAM_DESC",nullable=true,length=32)
public java.lang.String getParamDesc(){
return this.paramDesc;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setParamDesc(java.lang.String paramDesc){
this.paramDesc = paramDesc;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="PARAM_VALUE",nullable=true,length=32)
public java.lang.String getParamValue(){
return this.paramValue;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setParamValue(java.lang.String paramValue){
this.paramValue = paramValue;
}
/**
*: java.lang.Integer
*@return: java.lang.Integer
*/
@Column(name ="SEQ",nullable=true,length=32)
public java.lang.Integer getSeq(){
return this.seq;
}
/**
*: java.lang.Integer
*@param: java.lang.Integer
*/
public void setSeq(java.lang.Integer seq){
this.seq = seq;
}
/**
*: java.lang.String
*@return: java.lang.String ID
*/
@Column(name ="CGRHEAD_ID",nullable=true,length=36)
public java.lang.String getCgrheadId() {
return cgrheadId;
}
public void setCgrheadId(java.lang.String cgrheadId) {
this.cgrheadId = cgrheadId;
}
}

@ -0,0 +1,182 @@
package org.jeecgframework.web.cgdynamgraph.page.core;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
import org.jeecgframework.web.cgdynamgraph.entity.core.CgDynamGraphConfigItemEntity;
import org.jeecgframework.web.cgdynamgraph.entity.core.CgDynamGraphConfigParamEntity;
/**
* @Title: Entity
* @Description:
* @author
* @date 2013-12-07 16:00:21
* @version V1.0
*
*/
@Entity
@Table(name = "jform_cgdynamgraph_head", schema = "")
@SuppressWarnings("serial")
public class CgDynamGraphConfigHeadPage implements java.io.Serializable {
/**保存-动态报表配置明细*/
private List<CgDynamGraphConfigItemEntity> cgDynamGraphConfigItemList = new ArrayList<CgDynamGraphConfigItemEntity>();
/**保存-动态报表参数*/
private List<CgDynamGraphConfigParamEntity> cgDynamGraphConfigParamList = new ArrayList<CgDynamGraphConfigParamEntity>();
public List<CgDynamGraphConfigItemEntity> getCgDynamGraphConfigItemList() {
return cgDynamGraphConfigItemList;
}
public void setCgDynamGraphConfigItemList(List<CgDynamGraphConfigItemEntity> cgDynamGraphConfigItemList) {
this.cgDynamGraphConfigItemList = cgDynamGraphConfigItemList;
}
public List<CgDynamGraphConfigParamEntity> getCgDynamGraphConfigParamList() {
return cgDynamGraphConfigParamList;
}
public void setCgDynamGraphConfigParamList(
List<CgDynamGraphConfigParamEntity> cgDynamGraphConfigParamList) {
this.cgDynamGraphConfigParamList = cgDynamGraphConfigParamList;
}
/**主键*/
private java.lang.String id;
/**编码*/
private java.lang.String code;
/**名称*/
private java.lang.String name;
/**查询数据SQL*/
private java.lang.String cgrSql;
/**描述*/
private java.lang.String content;
/**图表类型*/
private String graphType;
/**数据结构类型*/
private String dataStructure;
/**是否分页*/
private String isPagination;
/**
*: java.lang.String
*@return: java.lang.String
*/
@Id
@GeneratedValue(generator = "paymentableGenerator")
@GenericGenerator(name = "paymentableGenerator", strategy = "uuid")
@Column(name ="ID",nullable=false,length=36)
public java.lang.String getId(){
return this.id;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setId(java.lang.String id){
this.id = id;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="CODE",nullable=false,length=36)
public java.lang.String getCode(){
return this.code;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setCode(java.lang.String code){
this.code = code;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="NAME",nullable=false,length=100)
public java.lang.String getName(){
return this.name;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setName(java.lang.String name){
this.name = name;
}
/**
*: java.lang.String
*@return: java.lang.String SQL
*/
@Column(name ="CGR_SQL",nullable=false,length=2000)
public java.lang.String getCgrSql(){
return this.cgrSql;
}
/**
*: java.lang.String
*@param: java.lang.String SQL
*/
public void setCgrSql(java.lang.String cgrSql){
this.cgrSql = cgrSql;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="CONTENT",nullable=false,length=1000)
public java.lang.String getContent(){
return this.content;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setContent(java.lang.String content){
this.content = content;
}
@Column(name ="graph_type",length=36)
public String getGraphType() {
return graphType;
}
public void setGraphType(String graphType) {
this.graphType = graphType;
}
@Column(name ="data_structure",length=36)
public String getDataStructure() {
return dataStructure;
}
public void setDataStructure(String dataStructure) {
this.dataStructure = dataStructure;
}
@Column(name ="is_pagination",length=2)
public String getIsPagination() {
return isPagination;
}
public void setIsPagination(String isPagination) {
this.isPagination = isPagination;
}
}

@ -0,0 +1,45 @@
package org.jeecgframework.web.cgdynamgraph.service.core;
import java.util.List;
import org.jeecgframework.core.common.service.CommonService;
import org.jeecgframework.web.cgdynamgraph.entity.core.CgDynamGraphConfigHeadEntity;
import org.jeecgframework.web.cgdynamgraph.entity.core.CgDynamGraphConfigItemEntity;
import org.jeecgframework.web.cgdynamgraph.entity.core.CgDynamGraphConfigParamEntity;
public interface CgDynamGraphConfigHeadServiceI extends CommonService{
public <T> void delete(T entity);
/**
*
*
*/
public void addMain(CgDynamGraphConfigHeadEntity cgDynamGraphConfigHead,
List<CgDynamGraphConfigItemEntity> cgDynamGraphConfigItemList,List<CgDynamGraphConfigParamEntity> cgDynamGraphConfigParamList) ;
/**
*
*
*/
public void updateMain(CgDynamGraphConfigHeadEntity cgDynamGraphConfigHead,
List<CgDynamGraphConfigItemEntity> cgDynamGraphConfigItemList,List<CgDynamGraphConfigParamEntity> cgDynamGraphConfigParamList);
public void delMain (CgDynamGraphConfigHeadEntity cgDynamGraphConfigHead);
/**
* -sql-
* @param id
* @return
*/
public boolean doAddSql(CgDynamGraphConfigHeadEntity t);
/**
* -sql-
* @param id
* @return
*/
public boolean doUpdateSql(CgDynamGraphConfigHeadEntity t);
/**
* -sql-
* @param id
* @return
*/
public boolean doDelSql(CgDynamGraphConfigHeadEntity t);
}

@ -0,0 +1,57 @@
package org.jeecgframework.web.cgdynamgraph.service.core;
import java.util.List;
import java.util.Map;
import org.jeecgframework.core.common.service.CommonService;
/**
*
* @Title:CgDynamGraphServiceI
* @description:
* @author
* @date Jul 30, 2013 8:43:01 AM
* @version V1.0
*/
public interface CgDynamGraphServiceI extends CommonService{
/**
* ID
* @param reportId
* @return
*/
public Map<String,Object> queryCgDynamGraphConfig(String reportId);
/**
* id
* @param reportId
* @return
*/
public Map<String,Object> queryCgDynamGraphMainConfig(String reportId);
/**
* id
* @param reportId
* @return
*/
public List<Map<String,Object>> queryCgDynamGraphItems(String reportId);
/**
* SQL
* @param sql SQL
* @param params
* @param page
* @param rows
* @return
*/
public List<Map<String,Object>> queryByCgDynamGraphSql(String sql,Map params);
/**
* sql
* @param sql SQL
* @param params
* @return
*/
public long countQueryByCgDynamGraphSql(String sql,Map params);
/**
* sqlsql
* @param sql sql
* @return
*/
public List<String> getSqlFields(String sql);
}

@ -0,0 +1,190 @@
package org.jeecgframework.web.cgdynamgraph.service.impl.core;
import java.util.List;
import java.util.UUID;
import org.jeecgframework.core.common.exception.BusinessException;
import org.jeecgframework.core.common.service.impl.CommonServiceImpl;
import org.jeecgframework.core.util.MyBeanUtils;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.web.cgdynamgraph.entity.core.CgDynamGraphConfigHeadEntity;
import org.jeecgframework.web.cgdynamgraph.entity.core.CgDynamGraphConfigItemEntity;
import org.jeecgframework.web.cgdynamgraph.entity.core.CgDynamGraphConfigParamEntity;
import org.jeecgframework.web.cgdynamgraph.service.core.CgDynamGraphConfigHeadServiceI;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service("cgDynamGraphConfigHeadService")
@Transactional
public class CgDynamGraphConfigHeadServiceImpl extends CommonServiceImpl implements CgDynamGraphConfigHeadServiceI {
public <T> void delete(T entity) {
super.delete(entity);
//执行删除操作配置的sql增强
this.doDelSql((CgDynamGraphConfigHeadEntity)entity);
}
public void addMain(CgDynamGraphConfigHeadEntity cgDynamGraphConfigHead,
List<CgDynamGraphConfigItemEntity> cgDynamGraphConfigItemList,List<CgDynamGraphConfigParamEntity> cgDynamGraphConfigParamList){
//保存主信息
this.save(cgDynamGraphConfigHead);
/**保存-动态报表配置明细*/
for(CgDynamGraphConfigItemEntity cgDynamGraphConfigItem:cgDynamGraphConfigItemList){
//外键设置
cgDynamGraphConfigItem.setCgrheadId(cgDynamGraphConfigHead.getId());
this.save(cgDynamGraphConfigItem);
}
/**保存-动态报表参数*/
for(CgDynamGraphConfigParamEntity cgDynamGraphConfigParam:cgDynamGraphConfigParamList){
//外键设置
cgDynamGraphConfigParam.setCgrheadId(cgDynamGraphConfigHead.getId());
this.save(cgDynamGraphConfigParam);
}
//执行新增操作配置的sql增强
this.doAddSql(cgDynamGraphConfigHead);
}
public void updateMain(CgDynamGraphConfigHeadEntity cgDynamGraphConfigHead,
List<CgDynamGraphConfigItemEntity> cgDynamGraphConfigItemList,List<CgDynamGraphConfigParamEntity> cgDynamGraphConfigParamList) {
//保存主表信息
this.saveOrUpdate(cgDynamGraphConfigHead);
//===================================================================================
//获取参数
Object id0 = cgDynamGraphConfigHead.getId();
//===================================================================================
//1.查询出数据库的明细数据-动态报表配置明细
String hql0 = "from CgDynamGraphConfigItemEntity where 1 = 1 AND cgrheadId = ? ";
List<CgDynamGraphConfigItemEntity> cgDynamGraphConfigItemOldList = this.findHql(hql0,id0);
//2.筛选更新明细数据-动态报表配置明细
for(CgDynamGraphConfigItemEntity oldE:cgDynamGraphConfigItemOldList){
boolean isUpdate = false;
for(CgDynamGraphConfigItemEntity sendE:cgDynamGraphConfigItemList){
//需要更新的明细数据-动态报表配置明细
if(oldE.getId().equals(sendE.getId())){
try {
MyBeanUtils.copyBeanNotNull2Bean(sendE,oldE);
this.saveOrUpdate(oldE);
} catch (Exception e) {
e.printStackTrace();
throw new BusinessException(e.getMessage());
}
isUpdate= true;
break;
}
}
if(!isUpdate){
//如果数据库存在的明细,前台没有传递过来则是删除-动态报表配置明细
super.delete(oldE);
}
}
//3.持久化新增的数据-动态报表配置明细
for(CgDynamGraphConfigItemEntity cgDynamGraphConfigItem:cgDynamGraphConfigItemList){
if(StringUtil.isEmpty(cgDynamGraphConfigItem.getId())){
//外键设置
cgDynamGraphConfigItem.setCgrheadId(cgDynamGraphConfigHead.getId());
this.save(cgDynamGraphConfigItem);
}
}
//===================================================================================
//1.查询出数据库的报表参数-动态报表参数
String hql1 = "from CgDynamGraphConfigParamEntity where 1 = 1 AND cgrheadId = ? ";
List<CgDynamGraphConfigParamEntity> cgDynamGraphConfigParamOldList = this.findHql(hql1,id0);
//2.筛选更新明细数据-动态报表配置明细
for(CgDynamGraphConfigParamEntity oldE:cgDynamGraphConfigParamOldList){
boolean isUpdate = false;
for(CgDynamGraphConfigParamEntity sendE:cgDynamGraphConfigParamList){
//需要更新的明细数据-动态报表配置明细
if(oldE.getId().equals(sendE.getId())){
try {
MyBeanUtils.copyBeanNotNull2Bean(sendE,oldE);
this.saveOrUpdate(oldE);
} catch (Exception e) {
e.printStackTrace();
throw new BusinessException(e.getMessage());
}
isUpdate= true;
break;
}
}
if(!isUpdate){
//如果数据库存在的明细,前台没有传递过来则是删除-动态报表配置明细
super.delete(oldE);
}
}
//3.持久化新增的数据-动态报表配置明细
for(CgDynamGraphConfigParamEntity cgDynamGraphConfigParam:cgDynamGraphConfigParamList){
if(StringUtil.isEmpty(cgDynamGraphConfigParam.getId())){
//外键设置
cgDynamGraphConfigParam.setCgrheadId(cgDynamGraphConfigHead.getId());
this.save(cgDynamGraphConfigParam);
}
}
//执行更新操作配置的sql增强
this.doUpdateSql(cgDynamGraphConfigHead);
}
public void delMain(CgDynamGraphConfigHeadEntity cgDynamGraphConfigHead) {
//删除主表信息
this.delete(cgDynamGraphConfigHead);
//===================================================================================
//获取参数
Object id0 = cgDynamGraphConfigHead.getId();
//===================================================================================
//删除-动态报表配置明细
String hql0 = "from CgDynamGraphConfigItemEntity where 1 = 1 AND cgrheadId = ? ";
List<CgDynamGraphConfigItemEntity> cgDynamGraphConfigItemOldList = this.findHql(hql0,id0);
this.deleteAllEntitie(cgDynamGraphConfigItemOldList);
//删除-动态报表参数
String hql1 = "from CgDynamGraphConfigParamEntity where 1 = 1 AND cgrheadId = ? ";
List<CgDynamGraphConfigParamEntity> cgDynamGraphConfigParamOldList = this.findHql(hql1,id0);
this.deleteAllEntitie(cgDynamGraphConfigParamOldList);
}
/**
* -sql-
* @param id
* @return
*/
public boolean doAddSql(CgDynamGraphConfigHeadEntity t){
return true;
}
/**
* -sql-
* @param id
* @return
*/
public boolean doUpdateSql(CgDynamGraphConfigHeadEntity t){
return true;
}
/**
* -sql-
* @param id
* @return
*/
public boolean doDelSql(CgDynamGraphConfigHeadEntity t){
return true;
}
/**
* sql
* @param sql
* @return
*/
public String replaceVal(String sql,CgDynamGraphConfigHeadEntity t){
sql = sql.replace("#{id}",String.valueOf(t.getId()));
sql = sql.replace("#{code}",String.valueOf(t.getCode()));
sql = sql.replace("#{name}",String.valueOf(t.getName()));
sql = sql.replace("#{cgr_sql}",String.valueOf(t.getCgrSql()));
sql = sql.replace("#{content}",String.valueOf(t.getContent()));
sql = sql.replace("#{UUID}",UUID.randomUUID().toString());
return sql;
}
}

@ -0,0 +1,133 @@
package org.jeecgframework.web.cgdynamgraph.service.impl.core;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.jeecgframework.core.common.dao.jdbc.JdbcDao;
import org.jeecgframework.core.common.exception.BusinessException;
import org.jeecgframework.core.common.service.impl.CommonServiceImpl;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.core.util.oConvertUtils;
import org.jeecgframework.web.cgdynamgraph.dao.core.CgDynamGraphDao;
import org.jeecgframework.web.cgdynamgraph.entity.core.CgDynamGraphConfigHeadEntity;
import org.jeecgframework.web.cgdynamgraph.entity.core.CgDynamGraphConfigParamEntity;
import org.jeecgframework.web.cgdynamgraph.service.core.CgDynamGraphServiceI;
import org.jeecgframework.web.cgreport.common.CgReportConstant;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service(value="cgDynamGraphService")
@Transactional
public class CgDynamGraphServiceImpl extends CommonServiceImpl implements
CgDynamGraphServiceI {
@Autowired
private JdbcDao jdbcDao;
@Autowired
private CgDynamGraphDao cgDynamGraphDao;
public Map<String, Object> queryCgDynamGraphConfig(String reportId) {
Map<String,Object> cgDynamGraphM = new HashMap<String, Object>(0);
Map<String,Object> mainM = queryCgDynamGraphMainConfig(reportId);
List<Map<String,Object>> itemsM = queryCgDynamGraphItems(reportId);
List<String> params =queryCgDynamGraphParam(reportId);
cgDynamGraphM.put(CgReportConstant.MAIN, mainM);
cgDynamGraphM.put(CgReportConstant.ITEMS, itemsM);
cgDynamGraphM.put(CgReportConstant.PARAMS, params);
return cgDynamGraphM;
}
public Map<String,Object> queryCgDynamGraphMainConfig(String reportId){
// String sql = JeecgSqlUtil.getMethodSql(JeecgSqlUtil.getMethodUrl());
// Map<String,Object> parameters = new LinkedHashMap<String,Object>();
// parameters.put("id", reportId);
// Map mainM = jdbcDao.findForMap(sql, parameters);
//采用MiniDao实现方式
return cgDynamGraphDao.queryCgDynamGraphMainConfig(reportId);
}
public List<Map<String,Object>> queryCgDynamGraphItems(String reportId){
// String sql = JeecgSqlUtil.getMethodSql(JeecgSqlUtil.getMethodUrl());
// Map<String,Object> parameters = new LinkedHashMap<String,Object>();
// parameters.put("configId", reportId);
// List<Map<String,Object>> items = jdbcDao.findForListMap(sql, parameters);
//采用MiniDao实现方式
return cgDynamGraphDao.queryCgDynamGraphItems(reportId);
}
public List<String> queryCgDynamGraphParam(String reportId){
List<String> list = null;
CgDynamGraphConfigHeadEntity cgDynamGraphConfigHead = this.findUniqueByProperty(CgDynamGraphConfigHeadEntity.class, "code", reportId);
String hql0 = "from CgDynamGraphConfigParamEntity where 1 = 1 AND cgrheadId = ? ";
List<CgDynamGraphConfigParamEntity> cgDynamGraphConfigParamList = this.findHql(hql0,cgDynamGraphConfigHead.getId());
if(cgDynamGraphConfigParamList!=null&cgDynamGraphConfigParamList.size()>0){
list = new ArrayList<String>();
for(CgDynamGraphConfigParamEntity cgDynamGraphConfigParam :cgDynamGraphConfigParamList){
list.add(cgDynamGraphConfigParam.getParamName());
}
}
return list;
}
@SuppressWarnings("unchecked")
public List<Map<String, Object>> queryByCgDynamGraphSql(String sql, Map params) {
String querySql = getFullSql(sql,params);
List<Map<String,Object>> result = null;
result = jdbcDao.findForJdbc(querySql);
return result;
}
/**
* sql
* @param sql
* @param params
* @return
*/
@SuppressWarnings("unchecked")
private String getFullSql(String sql,Map params){
StringBuilder sqlB = new StringBuilder();
sqlB.append("SELECT t.* FROM ( ");
sqlB.append(sql+" ");
sqlB.append(") t ");
if (params.size() >= 1) {
sqlB.append("WHERE 1=1 ");
Iterator it = params.keySet().iterator();
while (it.hasNext()) {
String key = String.valueOf(it.next());
String value = String.valueOf(params.get(key));
if (!StringUtil.isEmpty(value) && !"null".equals(value)) {
sqlB.append(" AND ");
sqlB.append(" " + key + value );
}
}
}
return sqlB.toString();
}
@SuppressWarnings("unchecked")
public long countQueryByCgDynamGraphSql(String sql, Map params) {
String querySql = getFullSql(sql,params);
querySql = "SELECT COUNT(*) FROM ("+querySql+") t2";
long result = jdbcDao.findForLong(querySql,new HashMap(0));
return result;
}
@SuppressWarnings( "unchecked" )
public List<String> getSqlFields(String sql) {
if(oConvertUtils.isEmpty(sql)){
return null;
}
List<Map<String, Object>> result = jdbcDao.findForJdbc(sql, 1, 1);
if(result.size()<1){
throw new BusinessException("该报表sql没有数据");
}
Set fieldsSet= result.get(0).keySet();
List<String> fileds = new ArrayList<String>(fieldsSet);
return fileds;
}
}

@ -0,0 +1,17 @@
select
ci.id as id,
ci.field_name as field_name,
ci.field_txt as field_txt,
ci.field_href as field_href,
ci.is_show as is_show,
ci.field_type as field_type,
ci.replace_va as replace_value,
ci.dict_code as dict_code,
ci.s_flag as search_flag,
ci.s_mode as search_mode,
ci.cgrhead_id as cgreport_head_id
from jform_cgdynamgraph_item ci,jform_cgdynamgraph_head ch
where 1=1
and ci.cgrhead_id = ch.id
and ch.code = '${configId}'
order by ci.order_num asc

@ -0,0 +1,10 @@
select
ch.id as id,
ch.code as code,
ch.name as name,
ch.cgr_sql as cgreport_sql,
ch.content as content,
ch.db_source,
ch.graph_type
from jform_cgdynamgraph_head ch
where ch.code = '${id}'

@ -50,7 +50,12 @@ public class FormHtmlUtil {
private static String getTextAreaFormHtml( private static String getTextAreaFormHtml(
CgFormFieldEntity cgFormFieldEntity) { CgFormFieldEntity cgFormFieldEntity) {
StringBuilder html = new StringBuilder(""); StringBuilder html = new StringBuilder("");
html.append("<textarea style=\"width: 300px\" rows=\"6\" ");
html.append("<textarea rows=\"6\" ");
if(cgFormFieldEntity.getFieldLength()!=null&&cgFormFieldEntity.getFieldLength()>0){
html.append("style=\"width:").append(cgFormFieldEntity.getFieldLength()).append("px\" ");
}
html.append("id=\"").append(cgFormFieldEntity.getFieldName()).append("\" "); html.append("id=\"").append(cgFormFieldEntity.getFieldName()).append("\" ");
html.append("name=\"").append(cgFormFieldEntity.getFieldName()).append("\" "); html.append("name=\"").append(cgFormFieldEntity.getFieldName()).append("\" ");
if("Y".equals(cgFormFieldEntity.getIsNull())){ if("Y".equals(cgFormFieldEntity.getIsNull())){

@ -14,6 +14,14 @@
<property name="defaultEncoding" value="UTF-8"></property> <property name="defaultEncoding" value="UTF-8"></property>
<property name="numberFormat" value="0"></property> <property name="numberFormat" value="0"></property>
</bean> </bean>
<!-- Template Context -->
<bean id="templetContext" class="org.jeecgframework.web.cgform.engine.TempletContext">
<property name="tags">
<map>
<entry key="DictData" value-ref="dictDataTag" />
</map>
</property>
</bean>
<!-- update begin online代码生成器支持 自定义word改造 --> <!-- update begin online代码生成器支持 自定义word改造 -->
<!-- FreeMarker 自定义word代码生成器 --> <!-- FreeMarker 自定义word代码生成器 -->
@ -27,20 +35,12 @@
<property name="tags"> <property name="tags">
<map> <map>
<entry key="DictData" value-ref="dictDataTag" /> <entry key="DictData" value-ref="dictDataTag" />
<entry key="mutiLang" value-ref="mutiLangTag" />
</map> </map>
</property> </property>
</bean> </bean>
<!-- update end online代码生成器支持 自定义word改造 --> <!-- update end online代码生成器支持 自定义word改造 -->
<!-- Template Context -->
<bean id="templetContext" class="org.jeecgframework.web.cgform.engine.TempletContext">
<property name="tags">
<map>
<entry key="DictData" value-ref="dictDataTag" />
</map>
</property>
</bean>
<!-- 拦截器 --> <!-- 拦截器 -->
<mvc:interceptors> <mvc:interceptors>
<!-- 表单配置更新后增加版本号 --> <!-- 表单配置更新后增加版本号 -->

@ -6,6 +6,8 @@ import freemarker.template.Template;
import freemarker.template.TemplateException; import freemarker.template.TemplateException;
import net.sf.json.JSONArray; import net.sf.json.JSONArray;
import net.sf.json.JSONObject; import net.sf.json.JSONObject;
import oracle.sql.BLOB;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.jeecgframework.core.common.controller.BaseController; import org.jeecgframework.core.common.controller.BaseController;
@ -16,6 +18,8 @@ import org.jeecgframework.core.common.model.json.DataGrid;
import org.jeecgframework.core.constant.Globals; import org.jeecgframework.core.constant.Globals;
import org.jeecgframework.core.util.DynamicDBUtil; import org.jeecgframework.core.util.DynamicDBUtil;
import org.jeecgframework.core.util.MyBeanUtils; import org.jeecgframework.core.util.MyBeanUtils;
import org.jeecgframework.core.util.ResourceUtil;
import org.jeecgframework.core.util.SqlUtil;
import org.jeecgframework.core.util.StringUtil; import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.tag.core.easyui.TagUtil; import org.jeecgframework.tag.core.easyui.TagUtil;
import org.jeecgframework.web.cgform.entity.autoform.*; import org.jeecgframework.web.cgform.entity.autoform.*;
@ -41,10 +45,18 @@ import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.StringWriter; import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.sql.Blob;
import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -187,6 +199,10 @@ public class AutoFormController extends BaseController {
autoForm.setFormContent(html); autoForm.setFormContent(html);
autoForm.setFormParse(autoForm.getFormContent()); autoForm.setFormParse(autoForm.getFormContent());
} }
autoForm.setCreateDate(new Date());
autoForm.setCreateName(ResourceUtil.getSessionUserName().getUserName());
autoFormService.save(autoForm); autoFormService.save(autoForm);
systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO); systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
}catch(Exception e){ }catch(Exception e){
@ -226,6 +242,10 @@ public class AutoFormController extends BaseController {
t.setFormContent(html); t.setFormContent(html);
t.setFormParse(autoForm.getFormContent()); t.setFormParse(autoForm.getFormContent());
} }
autoForm.setUpdateDate(new Date());
autoForm.setUpdateName(ResourceUtil.getSessionUserName().getUserName());
autoFormService.saveOrUpdate(t); autoFormService.saveOrUpdate(t);
attributes.put("id", t.getId()); attributes.put("id", t.getId());
j.setAttributes(attributes); j.setAttributes(attributes);
@ -245,10 +265,8 @@ public class AutoFormController extends BaseController {
autoForm.setFormParse(autoForm.getFormContent()); autoForm.setFormParse(autoForm.getFormContent());
} }
//--update-begin-------------date:20151102---------for:check 表单编码不允许重复--------------------
//TODO 待实现 //TODO 待实现
//--update-end-------------date:20151102---------for:check 表单编码不允许重复----------------------
autoFormService.save(autoForm); autoFormService.save(autoForm);
attributes.put("id", autoForm.getId()); attributes.put("id", autoForm.getId());
j.setAttributes(attributes); j.setAttributes(attributes);
@ -281,7 +299,7 @@ public class AutoFormController extends BaseController {
map.put(name, name); map.put(name, name);
} }
} }
//update---begin---author:zhoujf------date:20151207---------------for:大小写问题修改-------------------------------
// Elements ids = doc.select("input[name$=.id]"); // Elements ids = doc.select("input[name$=.id]");
// for (Element el: ids) { // for (Element el: ids) {
// String name = el.attr("name"); // String name = el.attr("name");
@ -292,7 +310,7 @@ public class AutoFormController extends BaseController {
// map.put(name, name); // map.put(name, name);
// } // }
// } // }
//update---end---author:zhoujf------date:20151207---------------for:大小写问题修改-------------------------------
} }
@ -383,9 +401,9 @@ public class AutoFormController extends BaseController {
for(AutoFormDbEntity dbForm:list){ for(AutoFormDbEntity dbForm:list){
map = new HashMap<String,Object>(); map = new HashMap<String,Object>();
map.put("id", dbForm.getId()); map.put("id", dbForm.getId());
//update-begin--Author: jg_huangxg Date:20151106 for自定义表单时数据源树把数据源编码 和 字段属性名显示出来
map.put("name", dbForm.getDbChName()+"("+dbForm.getDbName()+")"); map.put("name", dbForm.getDbChName()+"("+dbForm.getDbName()+")");
//update-end--Author: jg_huangxg Date:20151106 for自定义表单时数据源树把数据源编码 和 字段属性名显示出来
map.put("dbCode", dbForm.getDbName()); map.put("dbCode", dbForm.getDbName());
map.put("pid", "0"); map.put("pid", "0");
//增加父节点 //增加父节点
@ -396,9 +414,9 @@ public class AutoFormController extends BaseController {
for(AutoFormDbFieldEntity field: fieldlist){ for(AutoFormDbFieldEntity field: fieldlist){
map = new HashMap<String,Object>(); map = new HashMap<String,Object>();
map.put("id", field.getId()); map.put("id", field.getId());
//update-begin--Author: jg_huangxg Date:20151106 for自定义表单时数据源树把数据源编码 和 字段属性名显示出来
map.put("name", (StringUtils.isBlank(field.getFieldText())||"null".equals(field.getFieldText()))?field.getFieldName():field.getFieldText()+"("+field.getFieldName()+")"); map.put("name", (StringUtils.isBlank(field.getFieldText())||"null".equals(field.getFieldText()))?field.getFieldName():field.getFieldText()+"("+field.getFieldName()+")");
//update-end--Author: jg_huangxg Date:20151106 for自定义表单时数据源树把数据源编码 和 字段属性名显示出来
map.put("pId", dbForm.getId()); map.put("pId", dbForm.getId());
map.put("nocheck",true); map.put("nocheck",true);
dateList.add(map); dateList.add(map);
@ -410,9 +428,9 @@ public class AutoFormController extends BaseController {
for(AutoFormDbFieldEntity field: fieldlist){ for(AutoFormDbFieldEntity field: fieldlist){
map = new HashMap<String,Object>(); map = new HashMap<String,Object>();
map.put("id", field.getId()); map.put("id", field.getId());
//update-begin--Author: jg_huangxg Date:20151106 for自定义表单时数据源树把数据源编码 和 字段属性名显示出来
map.put("name", (StringUtils.isBlank(field.getFieldText())||"null".equals(field.getFieldText()))?field.getFieldName():field.getFieldText()+"("+field.getFieldName()+")"); map.put("name", (StringUtils.isBlank(field.getFieldText())||"null".equals(field.getFieldText()))?field.getFieldName():field.getFieldText()+"("+field.getFieldName()+")");
//update-end--Author: jg_huangxg Date:20151106 for自定义表单时数据源树把数据源编码 和 字段属性名显示出来
map.put("pId", dbForm.getId()); map.put("pId", dbForm.getId());
map.put("nocheck",true); map.put("nocheck",true);
dateList.add(map); dateList.add(map);
@ -461,15 +479,15 @@ public class AutoFormController extends BaseController {
dsData.put("dsName", db.getDbName()); dsData.put("dsName", db.getDbName());
dsList.add(dsData); dsList.add(dsData);
if("table".equals(db.getDbType())){ if("table".equals(db.getDbType())){
//update-begin--Author: jg_huangxg Date:20151106 for增加字段文本的查询,当字段文本为空时,使用字段名称
String hql = "select new Map(t.fieldName as fieldName,t.fieldText as fieldText) from AutoFormDbFieldEntity t where t.autoFormDbId=?"; String hql = "select new Map(t.fieldName as fieldName,t.fieldText as fieldText) from AutoFormDbFieldEntity t where t.autoFormDbId=?";
//update-end--Author: jg_huangxg Date:20151106 for增加字段文本的查询,当字段文本为空时,使用字段名称
List<Map<String,Object>> columns = this.systemService.findHql(hql, autoFormDbId); List<Map<String,Object>> columns = this.systemService.findHql(hql, autoFormDbId);
dsData.put("columns", columns); dsData.put("columns", columns);
} else if("sql".equals(db.getDbType())){ } else if("sql".equals(db.getDbType())){
//update-begin--Author: jg_huangxg Date:20151106 for增加字段文本的查询,当字段文本为空时,使用字段名称
String hql = "select new Map(t.fieldName as fieldName,t.fieldText as fieldText) from AutoFormDbFieldEntity t where t.autoFormDbId=?"; String hql = "select new Map(t.fieldName as fieldName,t.fieldText as fieldText) from AutoFormDbFieldEntity t where t.autoFormDbId=?";
//update-end--Author: jg_huangxg Date:20151106 for增加字段文本的查询,当字段文本为空时,使用字段名称
List<Map<String,Object>> columns = this.systemService.findHql(hql, autoFormDbId); List<Map<String,Object>> columns = this.systemService.findHql(hql, autoFormDbId);
if(columns.size()>0){ if(columns.size()>0){
dsData.put("columns", columns); dsData.put("columns", columns);
@ -592,8 +610,15 @@ public class AutoFormController extends BaseController {
public ModelAndView viewContent(AutoFormEntity autoForm, HttpServletRequest req) { public ModelAndView viewContent(AutoFormEntity autoForm, HttpServletRequest req) {
String message = ""; String message = "";
try { try {
//获取参数 //获取参数
Map<String,Object> paramMap = req.getParameterMap(); Map<String, String[]> tem = req.getParameterMap();
Map<String,Object> paramMap = new HashMap<String, Object>();
for(String key :tem.keySet()){
paramMap.put(key, tem.get(key));
}
String op = req.getParameter("op"); String op = req.getParameter("op");
if(StringUtil.isEmpty(op)){ if(StringUtil.isEmpty(op)){
op = AutoFormTemplateParseUtil.OP_VIEW; op = AutoFormTemplateParseUtil.OP_VIEW;
@ -677,6 +702,9 @@ public class AutoFormController extends BaseController {
List<AutoFormDbEntity> formDbList = this.systemService.findByProperty(AutoFormDbEntity.class, "autoFormId", autoForm.getId()); List<AutoFormDbEntity> formDbList = this.systemService.findByProperty(AutoFormDbEntity.class, "autoFormId", autoForm.getId());
for(AutoFormDbEntity formDb: formDbList){ for(AutoFormDbEntity formDb: formDbList){
List<Map<String, Object>> data = new ArrayList<Map<String, Object>>(); List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
List<Map<String, Object>> typeList = getColumnTypes(formDb.getTbDbTableName(),formDb.getDbKey());
if("table".equals(formDb.getDbType())){ if("table".equals(formDb.getDbType())){
//如果数据源类型为表类型通过属性表里面的属性拼出SQL //如果数据源类型为表类型通过属性表里面的属性拼出SQL
String hqlField = "from AutoFormDbFieldEntity where 1 = 1 AND aUTO_FORM_DB_ID = ? "; String hqlField = "from AutoFormDbFieldEntity where 1 = 1 AND aUTO_FORM_DB_ID = ? ";
@ -686,8 +714,23 @@ public class AutoFormController extends BaseController {
if(autoFormDbFieldEntityList.size()>0){ if(autoFormDbFieldEntityList.size()>0){
StringBuffer hqlTable = new StringBuffer().append("select "); StringBuffer hqlTable = new StringBuffer().append("select ");
for(AutoFormDbFieldEntity autoFormDbFieldEntity:autoFormDbFieldEntityList){ for(AutoFormDbFieldEntity autoFormDbFieldEntity:autoFormDbFieldEntityList){
//author:jg_renjie----start-----date:20160228--------forTASK #704 【表单填报预览】针对特殊类型数据需要进行转换比如blob
boolean flag = false;
for(Map<String,Object> typeMap:typeList){
String dataType = typeMap.get("dataType").toString().toUpperCase();
String columnNm = typeMap.get("columnNm").toString().toUpperCase();
if(dataType.contains("BLOB") && columnNm.equals(autoFormDbFieldEntity.getFieldName().toUpperCase())){
hqlTable.append("CONVERT(GROUP_CONCAT("+autoFormDbFieldEntity.getFieldName()+") USING utf8) as "+autoFormDbFieldEntity.getFieldName()+",");
flag = true;
}
}
if(!flag){
hqlTable.append(autoFormDbFieldEntity.getFieldName()+","); hqlTable.append(autoFormDbFieldEntity.getFieldName()+",");
} }
//author:jg_renjie----end-----date:20160228--------forTASK #704 【表单填报预览】针对特殊类型数据需要进行转换比如blob
}
hqlTable.deleteCharAt(hqlTable.length()-1).append(" from "+formDb.getDbTableName()); hqlTable.deleteCharAt(hqlTable.length()-1).append(" from "+formDb.getDbTableName());
String id = ""; String id = "";
Object value = paramMap.get("id"); Object value = paramMap.get("id");
@ -699,12 +742,11 @@ public class AutoFormController extends BaseController {
} }
hqlTable.append(" where ID ='").append(id).append("'"); hqlTable.append(" where ID ='").append(id).append("'");
//update-start--Author:luobaoli Date:20150701 for如果数据源为空那么以当前上下文中的DB配置为准查询出表数据
if("".equals(formDb.getDbKey())){ if("".equals(formDb.getDbKey())){
//当前上下文中的DB环境获取数据库表中的所有数据 //当前上下文中的DB环境获取数据库表中的所有数据
data = systemService.findForJdbc(hqlTable.toString()); data = systemService.findForJdbc(hqlTable.toString());
} }
//update-end--Author:luobaoli Date:20150701 for如果数据源为空那么以当前上下文中的DB配置为准查询出表数据
else{ else{
DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(formDb.getDbKey()); DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(formDb.getDbKey());
if(dynamicDataSourceEntity!=null){ if(dynamicDataSourceEntity!=null){
@ -749,17 +791,61 @@ public class AutoFormController extends BaseController {
} }
} }
paras.put(formDb.getDbName(), data); paras.put(formDb.getDbName(), formatData(typeList,data));
}else{ }else{
//预留给CLAZZ类型 //预留给CLAZZ类型
} }
} }
return paras; return paras;
} }
/**
*
* @param dbTableNm
* @return
*/
//author:jg_renjie----start-----date:20160228--------forTASK #704 【表单填报预览】针对特殊类型数据需要进行转换比如blob
private List<Map<String, Object>> getColumnTypes(String dbTableNm,String dbkey){
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
String sql = "select DATA_TYPE as dataType,COLUMN_NAME as columnNm from information_schema.COLUMNS where TABLE_NAME='"+dbTableNm+"'";
if(StringUtils.isNotBlank(dbkey)){
list= DynamicDBUtil.findList(dbkey,sql);
} else {
list = systemService.findForJdbc(sql);
}
return list;
}
private List<Map<String, Object>> formatData(List<Map<String, Object>> typeList,List<Map<String, Object>> data){
for(Map<String, Object> hashmap:data){
java.util.Map.Entry entry = null;
Iterator it = hashmap.entrySet().iterator();
while(it.hasNext()){
entry = (java.util.Map.Entry)it.next();
for(Map<String,Object> typeMap:typeList){
String dataType = typeMap.get("dataType").toString().toUpperCase();
String columnNm = typeMap.get("columnNm").toString().toUpperCase();
if(dataType.contains("BLOB") && columnNm.equals(entry.getKey().toString().toUpperCase())){
String srt2;
try {
srt2 = new String((byte[])entry.getValue(),"UTF-8");
hashmap.put(entry.getKey().toString(), srt2);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
}
}
return data;
}
//author:jg_renjie----end-----date:20160228--------forTASK #704 【表单填报预览】针对特殊类型数据需要进行转换比如blob
/** /**
* *
* @param * @param
@ -805,9 +891,9 @@ public class AutoFormController extends BaseController {
if(StringUtils.isNotBlank(dbForm.getAutoFormId())){ if(StringUtils.isNotBlank(dbForm.getAutoFormId())){
List<AutoFormDbEntity> dbFormList = this.systemService.findByProperty(AutoFormDbEntity.class, "autoFormId", dbForm.getAutoFormId()); List<AutoFormDbEntity> dbFormList = this.systemService.findByProperty(AutoFormDbEntity.class, "autoFormId", dbForm.getAutoFormId());
if(dbFormList.size()>0){ if(dbFormList.size()>0){
//update-begin--Author:jg_renjie Date:20150722 for设置默认选项的value值
message = "<option value='' selected='selected'>请选择数据源</option>"; message = "<option value='' selected='selected'>请选择数据源</option>";
//update-end--Author:jg_renjie Date:20150722 for设置默认选项的value值
for(AutoFormDbEntity entity:dbFormList){ for(AutoFormDbEntity entity:dbFormList){
//根据数据源名称进行匹配数据 //根据数据源名称进行匹配数据
message += "<option value='"+entity.getDbName()+"'>"+(StringUtils.isBlank(entity.getDbChName())?entity.getDbName():entity.getDbChName())+"</option>"; message += "<option value='"+entity.getDbName()+"'>"+(StringUtils.isBlank(entity.getDbChName())?entity.getDbName():entity.getDbChName())+"</option>";
@ -816,17 +902,17 @@ public class AutoFormController extends BaseController {
j.setMsg(message); j.setMsg(message);
} else{ } else{
j.setSuccess(false); j.setSuccess(false);
//update-begin--Author:jg_renjie Date:20150722 for设置默认选项的value值
message = "<option value='' selected='selected'>请先添加数据源</option>"; message = "<option value='' selected='selected'>请先添加数据源</option>";
//update-end--Author:jg_renjie Date:20150722 for设置默认选项的value值
j.setMsg(message); j.setMsg(message);
} }
}else{ }else{
//2.如果ID为空则option拼接提示信息 //2.如果ID为空则option拼接提示信息
j.setSuccess(false); j.setSuccess(false);
//update-begin--Author:jg_renjie Date:20150722 for设置默认选项的value值
message = "<option value='' selected='selected'>请先添加数据源</option>"; message = "<option value='' selected='selected'>请先添加数据源</option>";
//update-end--Author:jg_renjie Date:20150722 for设置默认选项的value值
j.setMsg(message); j.setMsg(message);
} }
return j; return j;
@ -847,12 +933,11 @@ public class AutoFormController extends BaseController {
//根据数据源名称进行匹配数据 //根据数据源名称进行匹配数据
if(StringUtils.isNotBlank(dbForm.getDbName()) && StringUtils.isNotBlank(dbForm.getAutoFormId())){ if(StringUtils.isNotBlank(dbForm.getDbName()) && StringUtils.isNotBlank(dbForm.getAutoFormId())){
//update-begin--Author:jg_renjie Date:20150723 for数据源根据autoFormId与dbName取数据
String hqlList = "from AutoFormDbEntity t where t.dbName = ? and autoFormId = ?"; String hqlList = "from AutoFormDbEntity t where t.dbName = ? and autoFormId = ?";
List<AutoFormDbEntity> list= this.systemService.findHql(hqlList, dbForm.getDbName(),dbForm.getAutoFormId()); List<AutoFormDbEntity> list= this.systemService.findHql(hqlList, dbForm.getDbName(),dbForm.getAutoFormId());
if(list.size() ==1){ if(list.size() ==1){
dbForm = list.get(0); dbForm = list.get(0);
//update-end--Author:jg_renjie Date:20150723 for数据源根据autoFormId与dbName取数据
//dbForm = this.systemService.findUniqueByProperty(AutoFormDbEntity.class, "dbName", dbForm.getDbName()); //dbForm = this.systemService.findUniqueByProperty(AutoFormDbEntity.class, "dbName", dbForm.getDbName());
List<Map<String,Object>> columns = new ArrayList<Map<String,Object>>(); List<Map<String,Object>> columns = new ArrayList<Map<String,Object>>();
if("table".equals(dbForm.getDbType())){ if("table".equals(dbForm.getDbType())){
@ -871,9 +956,9 @@ public class AutoFormController extends BaseController {
} }
} }
if(columns.size()>0){ if(columns.size()>0){
//update-begin--Author:jg_renjie Date:20150722 for设置默认选项的value值
message = "<option value='' selected='selected'>请选择字段</option>"; message = "<option value='' selected='selected'>请选择字段</option>";
//update-end--Author:jg_renjie Date:20150722 for设置默认选项的value值
for(Map<String,Object> map:columns){ for(Map<String,Object> map:columns){
message += "<option value='"+map.get("fieldName")+"'>"+(StringUtils.isBlank((String)map.get("fieldText"))?map.get("fieldName"):map.get("fieldText")) +"</option>"; message += "<option value='"+map.get("fieldName")+"'>"+(StringUtils.isBlank((String)map.get("fieldText"))?map.get("fieldName"):map.get("fieldText")) +"</option>";
} }
@ -881,17 +966,17 @@ public class AutoFormController extends BaseController {
j.setMsg(message); j.setMsg(message);
} else{ } else{
j.setSuccess(false); j.setSuccess(false);
//update-begin--Author:jg_renjie Date:20150722 for设置默认选项的value值
message = "<option value='' selected='selected'>请先添加字段</option>"; message = "<option value='' selected='selected'>请先添加字段</option>";
//update-end--Author:jg_renjie Date:20150722 for设置默认选项的value值
j.setMsg(message); j.setMsg(message);
} }
}else{ }else{
//2.如果ID为空则option拼接提示信息 //2.如果ID为空则option拼接提示信息
j.setSuccess(false); j.setSuccess(false);
//update-begin--Author:jg_renjie Date:20150722 for设置默认选项的value值
message = "<option value='' selected='selected'>请先选择数据源</option>"; message = "<option value='' selected='selected'>请先选择数据源</option>";
//update-end--Author:jg_renjie Date:20150722 for设置默认选项的value值
j.setMsg(message); j.setMsg(message);
} }
} }
@ -916,7 +1001,6 @@ public class AutoFormController extends BaseController {
if(StringUtils.isNotBlank(dbForm.getDbName()) && StringUtils.isNotBlank(dbForm.getAutoFormId())){ if(StringUtils.isNotBlank(dbForm.getDbName()) && StringUtils.isNotBlank(dbForm.getAutoFormId())){
//update-begin--Author:jg_renjie Date:20150723 for数据源根据autoFormId与dbName取数据
String hqlList = "from AutoFormDbEntity t where t.dbName = ? and autoFormId = ?"; String hqlList = "from AutoFormDbEntity t where t.dbName = ? and autoFormId = ?";
List<AutoFormDbEntity> list= this.systemService.findHql(hqlList, dbForm.getDbName(),dbForm.getAutoFormId()); List<AutoFormDbEntity> list= this.systemService.findHql(hqlList, dbForm.getDbName(),dbForm.getAutoFormId());
if(list.size() ==1){ if(list.size() ==1){
@ -929,7 +1013,6 @@ public class AutoFormController extends BaseController {
attributes.put("dbName", dbForm.getDbName()); attributes.put("dbName", dbForm.getDbName());
} }
//update-end--Author:jg_renjie Date:20150723 for数据源根据autoFormId与dbName取数据
//dbForm = this.systemService.findUniqueByProperty(AutoFormDbEntity.class, "dbName", dbForm.getDbName()); //dbForm = this.systemService.findUniqueByProperty(AutoFormDbEntity.class, "dbName", dbForm.getDbName());
List<Map<String,Object>> columns = new ArrayList<Map<String,Object>>(); List<Map<String,Object>> columns = new ArrayList<Map<String,Object>>();
if("table".equals(dbForm.getDbType())){ if("table".equals(dbForm.getDbType())){
@ -948,7 +1031,6 @@ public class AutoFormController extends BaseController {
} }
} }
//update-start--Author:jg_renjie Date:20151107 for优化根据数据源生成数据列
StringBuilder options = null; StringBuilder options = null;
StringBuilder trList = new StringBuilder(); StringBuilder trList = new StringBuilder();
String headStr = ""; String headStr = "";
@ -1090,7 +1172,7 @@ public class AutoFormController extends BaseController {
} else { } else {
message = "<option value=\"\">无字段</option>"; message = "<option value=\"\">无字段</option>";
} }
//update-end--Author:jg_renjie Date:20151107 for优化根据数据源生成数据列
j.setSuccess(true); j.setSuccess(true);
//j.setMsg(message); //j.setMsg(message);
@ -1109,7 +1191,6 @@ public class AutoFormController extends BaseController {
} }
//add-end--Author:jg_renjie Date:20150725 for数据源根据autoFormId与dbName取数据,并拼接成tr串 //add-end--Author:jg_renjie Date:20150725 for数据源根据autoFormId与dbName取数据,并拼接成tr串
//update-start--Author:jg_renjie Date:20151107 for优化根据数据源生成数据列
/** /**
* *
*/ */
@ -1138,7 +1219,7 @@ public class AutoFormController extends BaseController {
j.setMsg(message); j.setMsg(message);
return j; return j;
} }
//update-end--Author:jg_renjie Date:20151107 for优化根据数据源生成数据列
/** /**
* *
@ -1244,7 +1325,7 @@ public class AutoFormController extends BaseController {
j.setMsg(message); j.setMsg(message);
return j; return j;
} }
//update-begin--Author:zzl Date:20151102 for表单编码唯一性验证
@RequestMapping(params = "checkTbCode") @RequestMapping(params = "checkTbCode")
@ResponseBody @ResponseBody
@ -1268,8 +1349,7 @@ public class AutoFormController extends BaseController {
jsonObject.put("status", "y"); jsonObject.put("status", "y");
return jsonObject; return jsonObject;
} }
//update-end--Author:zzl Date:20151102 for表单编码唯一性验证
//update-begin--Author:zzl Date:20151110 for数据源级联删除
private void delFormDb(String autoFormId){ private void delFormDb(String autoFormId){
List<AutoFormDbEntity> list = this.systemService.findByProperty(AutoFormDbEntity.class, "autoFormId", autoFormId); List<AutoFormDbEntity> list = this.systemService.findByProperty(AutoFormDbEntity.class, "autoFormId", autoFormId);
if(list!=null&&list.size()>0) { if(list!=null&&list.size()>0) {
@ -1279,5 +1359,5 @@ public class AutoFormController extends BaseController {
} }
} }
} }
//update-end--Author:zzl Date:20151110 for数据源级联删除
} }

@ -68,10 +68,12 @@ public class AutoFormDbController extends BaseController {
*/ */
@RequestMapping(params = "autoFormDb") @RequestMapping(params = "autoFormDb")
public ModelAndView autoFormDb(HttpServletRequest request) { public ModelAndView autoFormDb(HttpServletRequest request) {
String autoFormId = request.getParameter("autoFormId"); String autoFormId = request.getParameter("autoFormId");
if(oConvertUtils.isNotEmpty(autoFormId)){ if(oConvertUtils.isNotEmpty(autoFormId)){
request.setAttribute("autoFormId", autoFormId); request.setAttribute("autoFormId", autoFormId);
} }
return new ModelAndView("jeecg/cgform/autoform/autoFormDbList"); return new ModelAndView("jeecg/cgform/autoform/autoFormDbList");
} }
@ -208,15 +210,19 @@ public class AutoFormDbController extends BaseController {
if (StringUtil.isNotEmpty(autoFormDb.getId())) { if (StringUtil.isNotEmpty(autoFormDb.getId())) {
autoFormDb = autoFormDbService.getEntity(AutoFormDbEntity.class, autoFormDb.getId()); autoFormDb = autoFormDbService.getEntity(AutoFormDbEntity.class, autoFormDb.getId());
} }
req.setAttribute("autoFormDbPage", autoFormDb); req.setAttribute("autoFormDbPage", autoFormDb);
Collection<DynamicDataSourceEntity> dynamicDataSourceEntitys = DynamicDataSourceEntity.DynamicDataSourceMap.values(); Collection<DynamicDataSourceEntity> dynamicDataSourceEntitys = DynamicDataSourceEntity.DynamicDataSourceMap.values();
req.setAttribute("dynamicDataSourceEntitys", dynamicDataSourceEntitys); req.setAttribute("dynamicDataSourceEntitys", dynamicDataSourceEntitys);
try { try {
List<String> tableNames = new JeecgReadTable().readAllTableNames(); List<String> tableNames = new JeecgReadTable().readAllTableNames();
req.setAttribute("tableNames", tableNames); req.setAttribute("tableNames", tableNames);
} catch (SQLException e) { } catch (SQLException e) {
logger.info(e.getMessage()); logger.info(e.getMessage());
} }
return new ModelAndView("jeecg/cgform/autoform/autoFormDb-add"); return new ModelAndView("jeecg/cgform/autoform/autoFormDb-add");
} }
@ -229,16 +235,21 @@ public class AutoFormDbController extends BaseController {
public ModelAndView goUpdate(AutoFormDbEntity autoFormDb, HttpServletRequest req) { public ModelAndView goUpdate(AutoFormDbEntity autoFormDb, HttpServletRequest req) {
if (StringUtil.isNotEmpty(autoFormDb.getId())) { if (StringUtil.isNotEmpty(autoFormDb.getId())) {
autoFormDb = autoFormDbService.getEntity(AutoFormDbEntity.class, autoFormDb.getId()); autoFormDb = autoFormDbService.getEntity(AutoFormDbEntity.class, autoFormDb.getId());
List<String> tableNames = null; List<String> tableNames = null;
if(StringUtils.isNotBlank(autoFormDb.getDbKey()) && "table".equals(autoFormDb.getDbType())){ if(StringUtils.isNotBlank(autoFormDb.getDbKey()) && "table".equals(autoFormDb.getDbType())){
DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(autoFormDb.getDbKey()); DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(autoFormDb.getDbKey());
if(dynamicDataSourceEntity!=null){ if(dynamicDataSourceEntity!=null){
tableNames = DynamicDBUtil.findList(autoFormDb.getDbKey(),SqlUtil.getAllTableSql(dynamicDataSourceEntity.getDbType(), "'"+dynamicDataSourceEntity.getDbName()+"'"),String.class); tableNames = DynamicDBUtil.findList(autoFormDb.getDbKey(),SqlUtil.getAllTableSql(dynamicDataSourceEntity.getDbType(), "'"+dynamicDataSourceEntity.getDbName()+"'"),String.class);
} }
} }
Collection<DynamicDataSourceEntity> dynamicDataSourceEntitys = DynamicDataSourceEntity.DynamicDataSourceMap.values(); Collection<DynamicDataSourceEntity> dynamicDataSourceEntitys = DynamicDataSourceEntity.DynamicDataSourceMap.values();
req.setAttribute("dynamicDataSourceEntitys", dynamicDataSourceEntitys); req.setAttribute("dynamicDataSourceEntitys", dynamicDataSourceEntitys);
//数据源类型 //数据源类型
String dbKey = null; String dbKey = null;
if(CgAutoListConstant.DB_TYPE_TABLE.equals(autoFormDb.getDbType())){ if(CgAutoListConstant.DB_TYPE_TABLE.equals(autoFormDb.getDbType())){
@ -246,6 +257,7 @@ public class AutoFormDbController extends BaseController {
}else if(CgAutoListConstant.DB_TYPE_SQL.equals(autoFormDb.getDbType())){ }else if(CgAutoListConstant.DB_TYPE_SQL.equals(autoFormDb.getDbType())){
dbKey = autoFormDb.getTbDbKey(); dbKey = autoFormDb.getTbDbKey();
} }
if(StringUtils.isBlank(dbKey)){ if(StringUtils.isBlank(dbKey)){
//默认当前平台数据源 //默认当前平台数据源
try { try {
@ -259,7 +271,9 @@ public class AutoFormDbController extends BaseController {
tableNames = DynamicDBUtil.findList(dbKey,SqlUtil.getAllTableSql(dynamicDataSourceEntity.getDbType(), "'" + dynamicDataSourceEntity.getDbName() + "'"),String.class); tableNames = DynamicDBUtil.findList(dbKey,SqlUtil.getAllTableSql(dynamicDataSourceEntity.getDbType(), "'" + dynamicDataSourceEntity.getDbName() + "'"),String.class);
} }
} }
req.setAttribute("tableNames", tableNames); req.setAttribute("tableNames", tableNames);
req.setAttribute("autoFormDbPage", autoFormDb); req.setAttribute("autoFormDbPage", autoFormDb);
} }
@ -338,6 +352,8 @@ public class AutoFormDbController extends BaseController {
reJson.put("params", params); reJson.put("params", params);
return reJson; return reJson;
} }
//add-begin--Author:luobaoli Date:20150621 for当数据库类型选择为Table时增加表属性列表
/** /**
* [] * []
* *
@ -358,6 +374,9 @@ public class AutoFormDbController extends BaseController {
} }
return new ModelAndView("jeecg/cgform/autoform/autoFormDbFieldForTableList"); return new ModelAndView("jeecg/cgform/autoform/autoFormDbFieldForTableList");
} }
//add-end--Author:luobaoli Date:20150621 for当数据库类型选择为Table时增加表属性列表
//add-begin--Author:luobaoli Date:20150621 for获取数据源类型对应数据库的所有表
/** /**
* *
* @param db_key * @param db_key
@ -370,10 +389,12 @@ public class AutoFormDbController extends BaseController {
List<String> tableNames = null; List<String> tableNames = null;
try{ try{
if(StringUtils.isNotBlank(dbKey)){ if(StringUtils.isNotBlank(dbKey)){
DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(dbKey); DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(dbKey);
if(dynamicDataSourceEntity!=null){ if(dynamicDataSourceEntity!=null){
tableNames = DynamicDBUtil.findList(dbKey,SqlUtil.getAllTableSql(dynamicDataSourceEntity.getDbType(), "'" + dynamicDataSourceEntity.getDbName() + "'"),String.class); tableNames = DynamicDBUtil.findList(dbKey,SqlUtil.getAllTableSql(dynamicDataSourceEntity.getDbType(), "'" + dynamicDataSourceEntity.getDbName() + "'"),String.class);
} }
}else{ }else{
tableNames = new JeecgReadTable().readAllTableNames(); tableNames = new JeecgReadTable().readAllTableNames();
} }
@ -387,6 +408,9 @@ public class AutoFormDbController extends BaseController {
return reJson; return reJson;
} }
//add-end--Author:luobaoli Date:20150621 for获取数据源类型对应数据库的所有表
//add-begin--Author:luobaoli Date:20150621 for获取指定表的所有列
/** /**
* *
* @param sql * @param sql
@ -399,10 +423,12 @@ public class AutoFormDbController extends BaseController {
Map reJson = new HashMap<String, Object>(); Map reJson = new HashMap<String, Object>();
List<String> columnsNames = null; List<String> columnsNames = null;
if(StringUtils.isNotBlank(dbKey)){ if(StringUtils.isNotBlank(dbKey)){
DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(dbKey); DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(dbKey);
if(dynamicDataSourceEntity!=null){ if(dynamicDataSourceEntity!=null){
columnsNames = DynamicDBUtil.findList(dbKey,SqlUtil.getAllCloumnSql(dynamicDataSourceEntity.getDbType(), "'" + tableName + "'", "'" + dynamicDataSourceEntity.getDbName() + "'"),String.class); columnsNames = DynamicDBUtil.findList(dbKey,SqlUtil.getAllCloumnSql(dynamicDataSourceEntity.getDbType(), "'" + tableName + "'", "'" + dynamicDataSourceEntity.getDbName() + "'"),String.class);
} }
}else{ }else{
try { try {
List<Columnt> columns = new JeecgReadTable().readOriginalTableColumn(tableName); List<Columnt> columns = new JeecgReadTable().readOriginalTableColumn(tableName);
@ -422,6 +448,9 @@ public class AutoFormDbController extends BaseController {
return reJson; return reJson;
} }
//add-end--Author:luobaoli Date:20150621 for获取指定表的所有列
//add-begin--Author:luobaoli Date:20150626 for新增数据源展示页面
/** /**
* *
* @param id * @param id
@ -446,6 +475,9 @@ public class AutoFormDbController extends BaseController {
} }
return new ModelAndView("jeecg/cgform/autoform/autoFormDb-view"); return new ModelAndView("jeecg/cgform/autoform/autoFormDb-view");
} }
//add-end--Author:luobaoli Date:20150626 for新增数据源展示页面
//add-begin--Author:luobaoli Date:20150626 for新增通过动态SQL或者数据源表动态获取相关数据功能
/** /**
* *
* @param id * @param id
@ -475,10 +507,12 @@ public class AutoFormDbController extends BaseController {
hqlTable.append(autoFormDbFieldEntity.getFieldName()+","); hqlTable.append(autoFormDbFieldEntity.getFieldName()+",");
} }
hqlTable.deleteCharAt(hqlTable.length()-1).append(" from "+dbTableName); hqlTable.deleteCharAt(hqlTable.length()-1).append(" from "+dbTableName);
if("".equals(dbKey)){ if("".equals(dbKey)){
//当前上下文中的DB环境获取数据库表中的所有数据 //当前上下文中的DB环境获取数据库表中的所有数据
map = systemService.findForJdbc(hqlTable.toString()); map = systemService.findForJdbc(hqlTable.toString());
} }
else{ else{
DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(dbKey); DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(dbKey);
if(dynamicDataSourceEntity!=null){ if(dynamicDataSourceEntity!=null){
@ -525,6 +559,12 @@ public class AutoFormDbController extends BaseController {
j.setMsg(msg); j.setMsg(msg);
return j; return j;
} }
//add-end--Author:luobaoli Date:20150626 for新增通过动态SQL或者数据源表动态获取相关数据功能
//add-begin--Author:jg_renjie Date:20150720 for增加数据源名称的唯一性校验
/** /**
* *
*/ */
@ -553,5 +593,7 @@ public class AutoFormDbController extends BaseController {
return jsonObject; return jsonObject;
} }
//add-end--Author:jg_renjie Date:20150720 for增加数据源名称的唯一性校验
} }

@ -87,9 +87,11 @@ public class CgAutoListController extends BaseController{
//step.3 封装页面数据 //step.3 封装页面数据
loadVars(configs,paras,request); loadVars(configs,paras,request);
//step.4 组合模板+数据参数,进行页面展现 //step.4 组合模板+数据参数,进行页面展现
String template=request.getParameter("olstylecode"); String template=request.getParameter("olstylecode");
if(StringUtils.isBlank(template)){ if(StringUtils.isBlank(template)){
CgFormHeadEntity head = cgFormFieldService.getCgFormHeadByTableName(id); CgFormHeadEntity head = cgFormFieldService.getCgFormHeadByTableName(id);
template=head.getFormTemplate(); template=head.getFormTemplate();
paras.put("_olstylecode",""); paras.put("_olstylecode","");
}else{ }else{
@ -98,6 +100,7 @@ public class CgAutoListController extends BaseController{
paras.put("this_olstylecode",template); paras.put("this_olstylecode",template);
CgformTemplateEntity entity=cgformTemplateService.findByCode(template); CgformTemplateEntity entity=cgformTemplateService.findByCode(template);
String html = viewEngine.parseTemplate(TemplateUtil.getTempletPath(entity,0, TemplateUtil.TemplateType.LIST), paras); String html = viewEngine.parseTemplate(TemplateUtil.getTempletPath(entity,0, TemplateUtil.TemplateType.LIST), paras);
try { try {
response.setContentType("text/html"); response.setContentType("text/html");
response.setHeader("Cache-Control", "no-store"); response.setHeader("Cache-Control", "no-store");
@ -138,6 +141,7 @@ public class CgAutoListController extends BaseController{
QueryParamUtil.loadQueryParams(request,b,params); QueryParamUtil.loadQueryParams(request,b,params);
fieldMap.put(b.getFieldName(), new String[]{b.getType(), b.getFieldDefault()}); fieldMap.put(b.getFieldName(), new String[]{b.getType(), b.getFieldDefault()});
} }
//参数处理 //参数处理
boolean isTree = configs.get(CgAutoListConstant.CONFIG_ISTREE) == null ? false boolean isTree = configs.get(CgAutoListConstant.CONFIG_ISTREE) == null ? false
: CgAutoListConstant.BOOL_TRUE.equalsIgnoreCase(configs.get(CgAutoListConstant.CONFIG_ISTREE).toString()); : CgAutoListConstant.BOOL_TRUE.equalsIgnoreCase(configs.get(CgAutoListConstant.CONFIG_ISTREE).toString());
@ -166,9 +170,11 @@ public class CgAutoListController extends BaseController{
} }
} }
int p = page==null?1:Integer.parseInt(page); int p = page==null?1:Integer.parseInt(page);
int r = rows==null?99999:Integer.parseInt(rows); int r = rows==null?99999:Integer.parseInt(rows);
//step.3 进行查询返回结果如果为tree的下级数据则不需要分页 //step.3 进行查询返回结果如果为tree的下级数据则不需要分页
List<Map<String, Object>> result = null; List<Map<String, Object>> result = null;
if(isTree && treeId !=null) { if(isTree && treeId !=null) {
//防止下级数据太大最大只取500条 //防止下级数据太大最大只取500条
@ -183,6 +189,7 @@ public class CgAutoListController extends BaseController{
result); result);
} }
//处理页面中若存在checkbox只能显示code值而不能显示text值问题 //处理页面中若存在checkbox只能显示code值而不能显示text值问题
Map<String, Object> dicMap = new HashMap<String, Object>(); Map<String, Object> dicMap = new HashMap<String, Object>();
for(CgFormFieldEntity b:beans){ for(CgFormFieldEntity b:beans){
@ -217,12 +224,14 @@ public class CgAutoListController extends BaseController{
PrintWriter writer; PrintWriter writer;
try { try {
writer = response.getWriter(); writer = response.getWriter();
if(isTree && treeId !=null) { if(isTree && treeId !=null) {
//下级列表 //下级列表
writer.println(QueryParamUtil.getJson(result)); writer.println(QueryParamUtil.getJson(result));
}else { }else {
writer.println(QueryParamUtil.getJson(result,size)); writer.println(QueryParamUtil.getJson(result,size));
} }
writer.flush(); writer.flush();
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
@ -260,7 +269,9 @@ public class CgAutoListController extends BaseController{
// } // }
for(DictEntity dictEntity:dicDataList){ for(DictEntity dictEntity:dicDataList){
if(value.equalsIgnoreCase(dictEntity.getTypecode())){ if(value.equalsIgnoreCase(dictEntity.getTypecode())){
r.put(bean.getFieldName(),MutiLangUtil.getMutiLangInstance().getLang(dictEntity.getTypename())); r.put(bean.getFieldName(),MutiLangUtil.getMutiLangInstance().getLang(dictEntity.getTypename()));
} }
} }
} }
@ -331,6 +342,7 @@ public class CgAutoListController extends BaseController{
List<Map> queryList = new ArrayList<Map>(); List<Map> queryList = new ArrayList<Map>();
StringBuilder fileds = new StringBuilder(); StringBuilder fileds = new StringBuilder();
StringBuilder initQuery = new StringBuilder(); StringBuilder initQuery = new StringBuilder();
Set<String> operationCodes = (Set<String>) request.getAttribute(Globals.OPERATIONCODES); Set<String> operationCodes = (Set<String>) request.getAttribute(Globals.OPERATIONCODES);
Map<String,TSOperation> operationCodesMap = new HashMap<String, TSOperation>(); Map<String,TSOperation> operationCodesMap = new HashMap<String, TSOperation>();
if(operationCodes != null){ if(operationCodes != null){
@ -346,6 +358,7 @@ public class CgAutoListController extends BaseController{
if(operationCodesMap.containsKey(bean.getFieldName())) { if(operationCodesMap.containsKey(bean.getFieldName())) {
continue; continue;
} }
Map fm = new HashMap<String, Object>(); Map fm = new HashMap<String, Object>();
fm.put(CgAutoListConstant.FILED_ID, bean.getFieldName()); fm.put(CgAutoListConstant.FILED_ID, bean.getFieldName());
fm.put(CgAutoListConstant.FIELD_TITLE, bean.getContent()); fm.put(CgAutoListConstant.FIELD_TITLE, bean.getContent());
@ -423,7 +436,8 @@ public class CgAutoListController extends BaseController{
sb.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"plug-in/accordion/css/accordion.css\">"); sb.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"plug-in/accordion/css/accordion.css\">");
// sb.append("<link id=\"easyuiTheme\" rel=\"stylesheet\" href=\"plug-in/easyui/themes/"+cssTheme+"/easyui.css\" type=\"text/css\"></link>"); // sb.append("<link id=\"easyuiTheme\" rel=\"stylesheet\" href=\"plug-in/easyui/themes/"+cssTheme+"/easyui.css\" type=\"text/css\"></link>");
sb.append(SysThemesUtil.getEasyUiTheme(sysThemesEnum)); sb.append(SysThemesUtil.getEasyUiTheme(sysThemesEnum));
sb.append("<link rel=\"stylesheet\" href=\"plug-in/easyui/themes/icon.css\" type=\"text/css\"></link>"); sb.append(SysThemesUtil.getEasyUiIconTheme(sysThemesEnum));
// sb.append("<link rel=\"stylesheet\" href=\"plug-in/easyui/themes/icon.css\" type=\"text/css\"></link>");
sb.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"plug-in/accordion/css/icons.css\">"); sb.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"plug-in/accordion/css/icons.css\">");
sb.append("<script type=\"text/javascript\" src=\"plug-in/easyui/jquery.easyui.min.1.3.2.js\"></script>"); sb.append("<script type=\"text/javascript\" src=\"plug-in/easyui/jquery.easyui.min.1.3.2.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/easyui/locale/zh-cn.js\"></script>"); sb.append("<script type=\"text/javascript\" src=\"plug-in/easyui/locale/zh-cn.js\"></script>");
@ -612,7 +626,9 @@ public class CgAutoListController extends BaseController{
sysVarName = sysVarName.replaceAll("\\{", ""); sysVarName = sysVarName.replaceAll("\\{", "");
sysVarName = sysVarName.replaceAll("\\}", ""); sysVarName = sysVarName.replaceAll("\\}", "");
sysVarName =sysVarName.replace("sys.", ""); sysVarName =sysVarName.replace("sys.", "");
return ResourceUtil.getUserSystemData(sysVarName); //---author:jg_xugj----start-----date:20151226--------for#814 【数据权限】扩展支持写表达式通过session取值
return ResourceUtil.converRuleValue(sysVarName);
//---author:jg_xugj----end-----date:20151226--------for#814 【数据权限】扩展支持写表达式通过session取值
}else{ }else{
return sysVarName; return sysVarName;
} }

@ -79,8 +79,10 @@ public class CgAutoListRestController extends BaseController{
loadVars(configs,paras,request); loadVars(configs,paras,request);
//step.4 组合模板+数据参数,进行页面展现 //step.4 组合模板+数据参数,进行页面展现
CgFormHeadEntity head = cgFormFieldService.getCgFormHeadByTableName(id); CgFormHeadEntity head = cgFormFieldService.getCgFormHeadByTableName(id);
CgformTemplateEntity entity=cgformTemplateService.findByCode(head.getFormTemplate()); CgformTemplateEntity entity=cgformTemplateService.findByCode(head.getFormTemplate());
String html = viewEngine.parseTemplate(TemplateUtil.getTempletPath(entity, 0, TemplateUtil.TemplateType.LIST), paras); String html = viewEngine.parseTemplate(TemplateUtil.getTempletPath(entity, 0, TemplateUtil.TemplateType.LIST), paras);
try { try {
response.setContentType("text/html"); response.setContentType("text/html");
response.setHeader("Cache-Control", "no-store"); response.setHeader("Cache-Control", "no-store");
@ -153,6 +155,7 @@ public class CgAutoListRestController extends BaseController{
List<Map> queryList = new ArrayList<Map>(); List<Map> queryList = new ArrayList<Map>();
StringBuilder fileds = new StringBuilder(); StringBuilder fileds = new StringBuilder();
StringBuilder initQuery = new StringBuilder(); StringBuilder initQuery = new StringBuilder();
Set<String> operationCodes = (Set<String>) request.getAttribute(Globals.OPERATIONCODES); Set<String> operationCodes = (Set<String>) request.getAttribute(Globals.OPERATIONCODES);
Map<String,TSOperation> operationCodesMap = new HashMap<String, TSOperation>(); Map<String,TSOperation> operationCodesMap = new HashMap<String, TSOperation>();
if(operationCodes != null){ if(operationCodes != null){
@ -168,6 +171,7 @@ public class CgAutoListRestController extends BaseController{
if(operationCodesMap.containsKey(bean.getFieldName())) { if(operationCodesMap.containsKey(bean.getFieldName())) {
continue; continue;
} }
Map fm = new HashMap<String, Object>(); Map fm = new HashMap<String, Object>();
fm.put(CgAutoListConstant.FILED_ID, bean.getFieldName()); fm.put(CgAutoListConstant.FILED_ID, bean.getFieldName());
fm.put(CgAutoListConstant.FIELD_TITLE, bean.getContent()); fm.put(CgAutoListConstant.FIELD_TITLE, bean.getContent());
@ -435,7 +439,10 @@ public class CgAutoListRestController extends BaseController{
sysVarName = sysVarName.replaceAll("\\{", ""); sysVarName = sysVarName.replaceAll("\\{", "");
sysVarName = sysVarName.replaceAll("\\}", ""); sysVarName = sysVarName.replaceAll("\\}", "");
sysVarName =sysVarName.replace("sys.", ""); sysVarName =sysVarName.replace("sys.", "");
return ResourceUtil.getUserSystemData(sysVarName); //---author:jg_xugj----start-----date:20151226--------for#814 【数据权限】扩展支持写表达式通过session取值
return ResourceUtil.converRuleValue(sysVarName);
//---author:jg_xugj----end-----date:20151226--------for#814 【数据权限】扩展支持写表达式通过session取值
}else{ }else{
return sysVarName; return sysVarName;
} }

@ -1,15 +1,29 @@
package org.jeecgframework.web.cgform.controller.build; package org.jeecgframework.web.cgform.controller.build;
import freemarker.template.Template; import java.io.BufferedWriter;
import freemarker.template.TemplateException; import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.jeecgframework.core.common.controller.BaseController; import org.jeecgframework.core.common.controller.BaseController;
import org.jeecgframework.core.common.model.json.AjaxJson; import org.jeecgframework.core.common.model.json.AjaxJson;
import org.jeecgframework.core.enums.SysThemesEnum; import org.jeecgframework.core.enums.SysThemesEnum;
import org.jeecgframework.core.util.ApplicationContextUtil;
import org.jeecgframework.core.util.ContextHolderUtils; import org.jeecgframework.core.util.ContextHolderUtils;
import org.jeecgframework.core.util.LogUtil;
import org.jeecgframework.core.util.StringUtil; import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.core.util.SysThemesUtil; import org.jeecgframework.core.util.SysThemesUtil;
import org.jeecgframework.core.util.oConvertUtils;
import org.jeecgframework.web.cgform.common.CgAutoListConstant; import org.jeecgframework.web.cgform.common.CgAutoListConstant;
import org.jeecgframework.web.cgform.common.CommUtils; import org.jeecgframework.web.cgform.common.CommUtils;
import org.jeecgframework.web.cgform.engine.FreemarkerHelper; import org.jeecgframework.web.cgform.engine.FreemarkerHelper;
@ -20,7 +34,6 @@ import org.jeecgframework.web.cgform.entity.upload.CgUploadEntity;
import org.jeecgframework.web.cgform.exception.BusinessException; import org.jeecgframework.web.cgform.exception.BusinessException;
import org.jeecgframework.web.cgform.service.build.DataBaseService; import org.jeecgframework.web.cgform.service.build.DataBaseService;
import org.jeecgframework.web.cgform.service.config.CgFormFieldServiceI; import org.jeecgframework.web.cgform.service.config.CgFormFieldServiceI;
import org.jeecgframework.core.util.oConvertUtils;
import org.jeecgframework.web.cgform.service.template.CgformTemplateServiceI; import org.jeecgframework.web.cgform.service.template.CgformTemplateServiceI;
import org.jeecgframework.web.cgform.util.TemplateUtil; import org.jeecgframework.web.cgform.util.TemplateUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -29,13 +42,8 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest; import freemarker.template.Template;
import javax.servlet.http.HttpServletResponse; import freemarker.template.TemplateException;
import javax.servlet.http.HttpSession;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.StringWriter;
import java.util.*;
/** /**
* @ClassName: formBuildController * @ClassName: formBuildController
@ -66,6 +74,39 @@ public class CgFormBuildController extends BaseController {
this.message = message; this.message = message;
} }
@RequestMapping(params = "goAddFtlForm")
public void goAddFtlForm(HttpServletRequest request,HttpServletResponse response) {
ftlForm(request,response);
}
@RequestMapping(params = "goUpdateFtlForm")
public void goUpdateFtlForm(HttpServletRequest request,HttpServletResponse response) {
ftlForm(request,response);
}
@RequestMapping(params = "goDatilFtlForm")
public void goDatilFtlForm(HttpServletRequest request,HttpServletResponse response) {
ftlForm(request,response);
}
//add-start--Author:scott Date:20160301 foronline表单移动样式单独配置
/**
* Online访
*/
@RequestMapping(params = "mobileForm")
public void mobileForm(HttpServletRequest request,HttpServletResponse response) {
String tableName =request.getParameter("tableName");
String sql = "select form_template_mobile from cgform_head where table_name = '"+tableName+"'";
Map<String, Object> mp = cgFormFieldService.findOneForJdbc(sql);
if(mp.containsKey("form_template_mobile") && oConvertUtils.isNotEmpty(mp.get("form_template_mobile"))){
String urlTemplateName=request.getParameter("olstylecode");
if(oConvertUtils.isEmpty(urlTemplateName)){
request.setAttribute("olstylecode", mp.get("form_template_mobile").toString().trim());
}
}
ftlForm(request,response);
}
//add-end--Author:scott Date:20160301 foronline表单移动样式单独配置
/** /**
* form * form
*/ */
@ -77,8 +118,10 @@ public class CgFormBuildController extends BaseController {
String tableName =request.getParameter("tableName"); String tableName =request.getParameter("tableName");
Map<String, Object> data = new HashMap<String, Object>(); Map<String, Object> data = new HashMap<String, Object>();
String id = request.getParameter("id"); String id = request.getParameter("id");
String mode=request.getParameter("mode"); String mode=request.getParameter("mode");
String templateName=tableName+"_"; String templateName=tableName+"_";
TemplateUtil.TemplateType templateType=TemplateUtil.TemplateType.LIST; TemplateUtil.TemplateType templateType=TemplateUtil.TemplateType.LIST;
if(StringUtils.isBlank(id)){ if(StringUtils.isBlank(id)){
templateName+=TemplateUtil.TemplateType.ADD.getName(); templateName+=TemplateUtil.TemplateType.ADD.getName();
@ -101,6 +144,7 @@ public class CgFormBuildController extends BaseController {
if(StringUtils.isNotEmpty(id)){ if(StringUtils.isNotEmpty(id)){
dataForm = dataBaseService.findOneForJdbc(tableName, id); dataForm = dataBaseService.findOneForJdbc(tableName, id);
} }
Iterator it=dataForm.entrySet().iterator(); Iterator it=dataForm.entrySet().iterator();
while(it.hasNext()){ while(it.hasNext()){
Map.Entry entry=(Map.Entry)it.next(); Map.Entry entry=(Map.Entry)it.next();
@ -108,6 +152,7 @@ public class CgFormBuildController extends BaseController {
Object ov=entry.getValue(); Object ov=entry.getValue();
data.put(ok, ov); data.put(ok, ov);
} }
Map<String, Object> tableData = new HashMap<String, Object>(); Map<String, Object> tableData = new HashMap<String, Object>();
//获取主表或单表表单数据 //获取主表或单表表单数据
tableData.put(tableName, dataForm); tableData.put(tableName, dataForm);
@ -128,22 +173,35 @@ public class CgFormBuildController extends BaseController {
//装载单表/(主表和附表)表单数据 //装载单表/(主表和附表)表单数据
data.put("data", tableData); data.put("data", tableData);
data.put("id", id); data.put("id", id);
data.put("head", head); data.put("head", head);
//页面样式js引用 //页面样式js引用
data.put(CgAutoListConstant.CONFIG_IFRAME, getHtmlHead(request)); data.put(CgAutoListConstant.CONFIG_IFRAME, getHtmlHead(request));
//装载附件信息数据 //装载附件信息数据
pushFiles(data, id); pushFiles(data, id);
pushImages(data, id);
String content =null; String content =null;
response.setContentType("text/html;charset=utf-8"); response.setContentType("text/html;charset=utf-8");
String urlTemplateName = request.getParameter("olstylecode"); String urlTemplateName = request.getParameter("olstylecode");
if(oConvertUtils.isEmpty(urlTemplateName)){
urlTemplateName = (String) request.getAttribute("olstylecode");
}
if(StringUtils.isNotBlank(urlTemplateName)){ if(StringUtils.isNotBlank(urlTemplateName)){
data.put("this_olstylecode",urlTemplateName); data.put("this_olstylecode",urlTemplateName);
LogUtil.info("-------------urlTemplateName-----------"+urlTemplateName);
content=getUrlTemplate(urlTemplateName,templateType,data); content=getUrlTemplate(urlTemplateName,templateType,data);
}else{ }else{
data.put("this_olstylecode",head.getFormTemplate()); data.put("this_olstylecode",head.getFormTemplate());
LogUtil.info("-------------formTemplate-----------"+head.getFormTemplate());
content=getTableTemplate(templateName,request,data); content=getTableTemplate(templateName,request,data);
} }
response.getWriter().print(content); response.getWriter().print(content);
long end = System.currentTimeMillis(); long end = System.currentTimeMillis();
logger.debug("自定义表单生成耗时:"+(end-start)+" ms"); logger.debug("自定义表单生成耗时:"+(end-start)+" ms");
@ -152,6 +210,7 @@ public class CgFormBuildController extends BaseController {
} }
} }
/** /**
* url * url
* @param templateName * @param templateName
@ -164,6 +223,9 @@ public class CgFormBuildController extends BaseController {
CgformTemplateEntity entity=cgformTemplateService.findByCode(templateName); CgformTemplateEntity entity=cgformTemplateService.findByCode(templateName);
if(entity!=null){ if(entity!=null){
FreemarkerHelper viewEngine = new FreemarkerHelper(); FreemarkerHelper viewEngine = new FreemarkerHelper();
dataMap.put("DictData", ApplicationContextUtil.getContext().getBean("dictDataTag"));
content = viewEngine.parseTemplate(TemplateUtil.getTempletPath(entity,0, templateType), dataMap); content = viewEngine.parseTemplate(TemplateUtil.getTempletPath(entity,0, templateType), dataMap);
} }
return content; return content;
@ -179,10 +241,17 @@ public class CgFormBuildController extends BaseController {
private String getTableTemplate(String templateName,HttpServletRequest request,Map data){ private String getTableTemplate(String templateName,HttpServletRequest request,Map data){
StringWriter stringWriter = new StringWriter(); StringWriter stringWriter = new StringWriter();
BufferedWriter writer = new BufferedWriter(stringWriter); BufferedWriter writer = new BufferedWriter(stringWriter);
// String ftlVersion =request.getParameter("ftlVersion");
String ftlVersion = oConvertUtils.getString(data.get("version")); String ftlVersion =request.getParameter("ftlVersion");
// String ftlVersion = oConvertUtils.getString(data.get("version"));
Template template = templetContext.getTemplate(templateName, ftlVersion); Template template = templetContext.getTemplate(templateName, ftlVersion);
try { try {
template.setDateTimeFormat("yyyy-MM-dd HH:mm:ss");
template.setDateFormat("yyyy-MM-dd");
template.setTimeFormat("HH:mm:ss");
template.process(data, writer); template.process(data, writer);
} catch (TemplateException e) { } catch (TemplateException e) {
e.printStackTrace(); e.printStackTrace();
@ -191,6 +260,7 @@ public class CgFormBuildController extends BaseController {
} }
return stringWriter.toString(); return stringWriter.toString();
} }
private String getHtmlHead(HttpServletRequest request){ private String getHtmlHead(HttpServletRequest request){
HttpSession session = ContextHolderUtils.getSession(); HttpSession session = ContextHolderUtils.getSession();
String lang = (String)session.getAttribute("lang"); String lang = (String)session.getAttribute("lang");
@ -225,6 +295,11 @@ public class CgFormBuildController extends BaseController {
sb.append(SysThemesUtil.getValidformStyleTheme(sysThemesEnum)); sb.append(SysThemesUtil.getValidformStyleTheme(sysThemesEnum));
//tablefrom.css //tablefrom.css
sb.append(SysThemesUtil.getValidformTablefrom(sysThemesEnum)); sb.append(SysThemesUtil.getValidformTablefrom(sysThemesEnum));
//umedit
sb.append("<link rel=\"stylesheet\" href=\"plug-in/umeditor/themes/default/css/umeditor.css\" type=\"text/css\"></link>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/umeditor/umeditor.config.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/umeditor/umeditor.min.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/umeditor/lang/zh-cn/zh-cn.js\"></script>");
return sb.toString(); return sb.toString();
} }
@ -252,6 +327,29 @@ public class CgFormBuildController extends BaseController {
data.put("filesList", files); data.put("filesList", files);
} }
/**
* (),
* @param data
* @param id ,
*/
private void pushImages(Map<String, Object> data, String id) {
List<CgUploadEntity> uploadBeans = cgFormFieldService.findByProperty(CgUploadEntity.class, "cgformId", id);
List<Map<String,Object>> images = new ArrayList<Map<String,Object>>(0);
for(CgUploadEntity b:uploadBeans){
String title = b.getAttachmenttitle();//附件名
String fileKey = b.getId();//附件主键
String path = b.getRealpath();//附件路径
String field = b.getCgformField();//表单中作为附件控件的字段
Map<String, Object> image = new HashMap<String, Object>();
image.put("title", title);
image.put("fileKey", fileKey);
image.put("path", path);
image.put("field", field==null?"":field);
images.add(image);
}
data.put("imageList", images);
}
/** /**
* *
* *
@ -415,7 +513,9 @@ public class CgFormBuildController extends BaseController {
} }
data = CommUtils.mapConvert(data); data = CommUtils.mapConvert(data);
dataBaseService.executeSqlExtend(formId, buttonCode, data); dataBaseService.executeSqlExtend(formId, buttonCode, data);
dataBaseService.executeJavaExtend(formId, buttonCode, data); dataBaseService.executeJavaExtend(formId, buttonCode, data);
} }
j.setSuccess(true); j.setSuccess(true);
message = "操作成功"; message = "操作成功";

@ -81,6 +81,7 @@ public class CgFormBuildRestController extends BaseController {
try { try {
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
String tableName = configId; String tableName = configId;
String mode=request.getParameter("mode"); String mode=request.getParameter("mode");
String templateName=tableName+"_"; String templateName=tableName+"_";
if(StringUtils.isBlank(id)){ if(StringUtils.isBlank(id)){
@ -90,8 +91,10 @@ public class CgFormBuildRestController extends BaseController {
}else{ }else{
templateName+=TemplateUtil.TemplateType.UPDATE.getName(); templateName+=TemplateUtil.TemplateType.UPDATE.getName();
} }
String ftlVersion =request.getParameter("ftlVersion"); String ftlVersion =request.getParameter("ftlVersion");
Template template = templetContext.getTemplate(templateName, ftlVersion); Template template = templetContext.getTemplate(templateName, ftlVersion);
StringWriter stringWriter = new StringWriter(); StringWriter stringWriter = new StringWriter();
BufferedWriter writer = new BufferedWriter(stringWriter); BufferedWriter writer = new BufferedWriter(stringWriter);
Map<String, Object> data = new HashMap<String, Object>(); Map<String, Object> data = new HashMap<String, Object>();
@ -133,8 +136,10 @@ public class CgFormBuildRestController extends BaseController {
//装载单表/(主表和附表)表单数据 //装载单表/(主表和附表)表单数据
data.put("data", tableData); data.put("data", tableData);
data.put("id", id); data.put("id", id);
data.put("head", head); data.put("head", head);
//页面样式js引用 //页面样式js引用
data.put(CgAutoListConstant.CONFIG_IFRAME, getHtmlHead(request)); data.put(CgAutoListConstant.CONFIG_IFRAME, getHtmlHead(request));
//装载附件信息数据 //装载附件信息数据

@ -621,6 +621,7 @@ public class CgformFtlController extends BaseController {
// System.out.println(json.getString("data")); // System.out.println(json.getString("data"));
// // 判断有没有激活过的模板 // // 判断有没有激活过的模板
// message = FormUtil.GetHtml(json.getString("parse"),json.getString("data"), action); // message = FormUtil.GetHtml(json.getString("parse"),json.getString("data"), action);
if(StringUtils.isNotBlank(parseForm)){ if(StringUtils.isNotBlank(parseForm)){
TemplateUtil tool = new TemplateUtil(); TemplateUtil tool = new TemplateUtil();
Map<String,Object> map = tool.processor(parseForm); Map<String,Object> map = tool.processor(parseForm);
@ -628,6 +629,7 @@ public class CgformFtlController extends BaseController {
} else { } else {
j.setMsg(""); j.setMsg("");
} }
j.setSuccess(true); j.setSuccess(true);
} catch (Exception e) { } catch (Exception e) {
logger.info(e.getMessage()); logger.info(e.getMessage());

@ -1,38 +1,47 @@
package org.jeecgframework.web.cgform.controller.config; package org.jeecgframework.web.cgform.controller.config;
import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.jeecgframework.web.cgform.engine.TempletContext;
import org.jeecgframework.web.cgform.entity.config.CgFormFieldEntity;
import org.jeecgframework.web.cgform.entity.config.CgFormHeadEntity;
import org.jeecgframework.web.cgform.exception.BusinessException;
import org.jeecgframework.web.cgform.service.config.CgFormFieldServiceI;
import org.jeecgframework.web.cgform.service.impl.config.util.FieldNumComparator;
import org.jeecgframework.web.system.pojo.base.TSType;
import org.jeecgframework.web.system.pojo.base.TSTypegroup;
import org.jeecgframework.web.system.service.SystemService;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.jeecgframework.core.common.controller.BaseController; import org.jeecgframework.core.common.controller.BaseController;
import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery; import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
import org.jeecgframework.core.common.model.json.AjaxJson; import org.jeecgframework.core.common.model.json.AjaxJson;
import org.jeecgframework.core.common.model.json.DataGrid; import org.jeecgframework.core.common.model.json.DataGrid;
import org.jeecgframework.core.constant.Globals; import org.jeecgframework.core.constant.Globals;
import org.jeecgframework.core.util.ExceptionUtil;
import org.jeecgframework.core.util.MutiLangUtil; import org.jeecgframework.core.util.MutiLangUtil;
import org.jeecgframework.core.util.MyBeanUtils; import org.jeecgframework.core.util.MyBeanUtils;
import org.jeecgframework.core.util.StringUtil; import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.tag.core.easyui.TagUtil; import org.jeecgframework.tag.core.easyui.TagUtil;
import org.jeecgframework.web.cgform.engine.TempletContext;
import org.jeecgframework.web.cgform.entity.config.CgFormFieldEntity;
import org.jeecgframework.web.cgform.entity.config.CgFormFieldVO;
import org.jeecgframework.web.cgform.entity.config.CgFormHeadEntity;
import org.jeecgframework.web.cgform.exception.BusinessException;
import org.jeecgframework.web.cgform.service.config.CgFormFieldServiceI;
import org.jeecgframework.web.cgform.service.impl.config.util.FieldNumComparator;
import org.jeecgframework.web.system.pojo.base.TSType;
import org.jeecgframework.web.system.pojo.base.TSTypegroup;
import org.jeecgframework.web.system.service.SystemService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap; import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
/** /**
@ -90,6 +99,7 @@ public class CgFormHeadController extends BaseController {
public ModelAndView goCgFormSynChoice(HttpServletRequest request) { public ModelAndView goCgFormSynChoice(HttpServletRequest request) {
return new ModelAndView("jeecg/cgform/config/cgformSynChoice"); return new ModelAndView("jeecg/cgform/config/cgformSynChoice");
} }
@RequestMapping(params = "popmenulink") @RequestMapping(params = "popmenulink")
public ModelAndView popmenulink(ModelMap modelMap, public ModelAndView popmenulink(ModelMap modelMap,
@RequestParam String url, @RequestParam String url,
@ -98,6 +108,7 @@ public class CgFormHeadController extends BaseController {
modelMap.put("url",url); modelMap.put("url",url);
return new ModelAndView("jeecg/cgform/config/popmenulink"); return new ModelAndView("jeecg/cgform/config/popmenulink");
} }
/** /**
* easyui AJAX * easyui AJAX
* *
@ -113,12 +124,14 @@ public class CgFormHeadController extends BaseController {
DataGrid dataGrid) { DataGrid dataGrid) {
CriteriaQuery cq = new CriteriaQuery(CgFormHeadEntity.class, CriteriaQuery cq = new CriteriaQuery(CgFormHeadEntity.class,
dataGrid); dataGrid);
String jformCategory = request.getParameter("jformCategory"); String jformCategory = request.getParameter("jformCategory");
if(StringUtil.isNotEmpty(jformCategory)){ if(StringUtil.isNotEmpty(jformCategory)){
cq.eq("jformCategory", jformCategory); cq.eq("jformCategory", jformCategory);
cq.add(); cq.add();
} }
// 查询条件组装器 // 查询条件组装器
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq,
cgFormHead); cgFormHead);
@ -237,7 +250,9 @@ public class CgFormHeadController extends BaseController {
@ResponseBody @ResponseBody
public AjaxJson save(CgFormHeadEntity cgFormHead, public AjaxJson save(CgFormHeadEntity cgFormHead,
HttpServletRequest request) { HttpServletRequest request) {
templetContext.clearCache(); templetContext.clearCache();
AjaxJson j = new AjaxJson(); AjaxJson j = new AjaxJson();
CgFormHeadEntity oldTable =cgFormFieldService.getEntity(CgFormHeadEntity.class, cgFormHead.getId()); CgFormHeadEntity oldTable =cgFormFieldService.getEntity(CgFormHeadEntity.class, cgFormHead.getId());
cgFormFieldService.removeSubTableStr4Main(oldTable); cgFormFieldService.removeSubTableStr4Main(oldTable);
@ -350,8 +365,10 @@ public class CgFormHeadController extends BaseController {
//cgFormHead.setTableName(cgFormHead.getTableName().replace(CgAutoListConstant.jform_, "")); //cgFormHead.setTableName(cgFormHead.getTableName().replace(CgAutoListConstant.jform_, ""));
req.setAttribute("cgFormHeadPage", cgFormHead); req.setAttribute("cgFormHeadPage", cgFormHead);
} }
List<TSType> typeList = TSTypegroup.allTypes.get(MutiLangUtil.getMutiLangInstance().getLang("bdfl")); List<TSType> typeList = TSTypegroup.allTypes.get(MutiLangUtil.getMutiLangInstance().getLang("bdfl"));
req.setAttribute("typeList", typeList); req.setAttribute("typeList", typeList);
return new ModelAndView("jeecg/cgform/config/cgFormHead"); return new ModelAndView("jeecg/cgform/config/cgFormHead");
} }
/** /**
@ -405,8 +422,12 @@ public class CgFormHeadController extends BaseController {
columnList.add(initCgFormFieldEntityString("update_name","更新人名称")); columnList.add(initCgFormFieldEntityString("update_name","更新人名称"));
columnList.add(initCgFormFieldEntityString("update_by", "更新人登录名称")); columnList.add(initCgFormFieldEntityString("update_by", "更新人登录名称"));
columnList.add(initCgFormFieldEntityTime("update_date", "更新日期")); columnList.add(initCgFormFieldEntityTime("update_date", "更新日期"));
columnList.add(initCgFormFieldEntityString("sys_org_code","所属部门")); columnList.add(initCgFormFieldEntityString("sys_org_code","所属部门"));
columnList.add(initCgFormFieldEntityString("sys_company_code", "所属公司")); columnList.add(initCgFormFieldEntityString("sys_company_code", "所属公司"));
columnList.add(initCgFormFieldEntityBpmStatus());
return columnList; return columnList;
} }
/** /**
@ -429,6 +450,28 @@ public class CgFormHeadController extends BaseController {
return field; return field;
} }
/**
* id
* @return
*/
private CgFormFieldEntity initCgFormFieldEntityBpmStatus(){
CgFormFieldEntity field = new CgFormFieldEntity();
field.setFieldName("bpm_status");
field.setLength(32);
field.setContent("流程状态");
field.setIsKey("N");
field.setIsNull("Y");
field.setOrderNum(1);
field.setType("string");
field.setPointLength(0);
field.setIsShow("N");
field.setIsShowList("Y");
field.setFieldLength(120);
field.setDictField("bpm_status");
field.setFieldDefault("1");
return field;
}
/** /**
* *
* @return * @return
@ -549,4 +592,124 @@ public class CgFormHeadController extends BaseController {
return j; return j;
} }
@RequestMapping(params = "importExcel")
@ResponseBody
public AjaxJson importExcel(String headId,HttpServletRequest request, HttpServletResponse response) {
AjaxJson j = new AjaxJson();
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
MultipartFile file = entity.getValue();// 获取上传文件对象
ImportParams params = new ImportParams();
params.setTitleRows(0);
params.setHeadRows(1);
params.setNeedSave(false);
try {
CgFormHeadEntity cgFormHead = systemService.getEntity(CgFormHeadEntity.class,headId);
if(cgFormHead==null){
j.setMsg("表数据异常!");
return j;
}
List<CgFormFieldVO> fieldList = ExcelImportUtil.importExcel(file.getInputStream(),CgFormFieldVO.class,params);
//根据headid查询该表下的字段信息
String hql = "from CgFormFieldEntity where table.id = ? ";
List<CgFormFieldEntity> list = systemService.findHql(hql, headId);
if(list==null){
list = new ArrayList<CgFormFieldEntity>();
}
CgFormFieldEntity fieldEntity = null;
StringBuilder sb = new StringBuilder("");
List<CgFormFieldEntity> saveList = new ArrayList<CgFormFieldEntity>();
for (CgFormFieldVO field : fieldList) {
System.out.println("-------------field------------"+field);
if(StringUtil.isEmpty(field.getFieldName())){
continue;
}
if(existField(field.getFieldName(),list)){
sb.append(field.getFieldName()).append(",");
continue;
}
fieldEntity = new CgFormFieldEntity();
fieldEntity.setTable(cgFormHead);
fieldEntity.setFieldName(field.getFieldName());
String content = field.getContent();
if(StringUtil.isEmpty(content)){
content = field.getFieldName();
}
fieldEntity.setContent(content);
String type = field.getType();
if(StringUtil.isEmpty(type)){
type = "string";
}
fieldEntity.setType(type);
String length = field.getLength();
if(StringUtil.isEmpty(length)){
length = "32";
}
fieldEntity.setLength(Integer.valueOf(length));
String pointLength = field.getPointLength();
if(StringUtil.isEmpty(pointLength)){
pointLength = "0";
}
fieldEntity.setPointLength(Integer.valueOf(pointLength));
fieldEntity.setFieldDefault(field.getFieldDefault());
fieldEntity.setIsKey("N");
String isNull = field.getIsNull();
if("否".equals(isNull)){
isNull = "N";
}else{
isNull = "Y";
}
fieldEntity.setIsNull(isNull);
fieldEntity.setOrderNum(1);
fieldEntity.setIsShow("Y");
fieldEntity.setIsShowList("Y");
fieldEntity.setFieldLength(120);
list.add(fieldEntity);
saveList.add(fieldEntity);
}
systemService.batchSave(saveList);
if(StringUtil.isEmpty(sb.toString())){
j.setMsg("文件导入成功!");
}else{
j.setMsg("文件导入成功!重复字段【"+sb.toString()+"】忽略");
}
} catch (Exception e) {
j.setMsg("文件导入失败!");
logger.error(ExceptionUtil.getExceptionMessage(e));
}finally{
try {
file.getInputStream().close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return j;
}
private boolean existField(String field,List<CgFormFieldEntity> list){
boolean flag = false;
for(CgFormFieldEntity entity :list){
if(field.equalsIgnoreCase(entity.getFieldName())){
flag = true;
break;
}
}
return flag;
}
/**
* excel
*
* @return
*/
@RequestMapping(params = "upload")
public String upload(String id,HttpServletRequest request) {
request.setAttribute("headId", id);
return "jeecg/cgform/config/cgformColUpload";
}
} }

@ -286,7 +286,9 @@ public class JformGraphreportHeadController extends BaseController {
params.setHeadRows(1); params.setHeadRows(1);
params.setNeedSave(true); params.setNeedSave(true);
try { try {
List<JformGraphreportHeadPage> listCourses = ExcelImportUtil.importExcel(file.getInputStream(), JformGraphreportHeadPage.class, params); List<JformGraphreportHeadPage> listCourses = ExcelImportUtil.importExcel(file.getInputStream(), JformGraphreportHeadPage.class, params);
for(JformGraphreportHeadPage page:listCourses){ for(JformGraphreportHeadPage page:listCourses){
JformGraphreportHeadEntity headEntity=page.getJformGraphreportHeadEntity(); JformGraphreportHeadEntity headEntity=page.getJformGraphreportHeadEntity();
List<JformGraphreportItemEntity> itemEntities=page.getJformGraphreportItemList(); List<JformGraphreportItemEntity> itemEntities=page.getJformGraphreportItemList();

@ -369,7 +369,9 @@ public class ExcelTempletController extends BaseController {
String value = String.valueOf(r.get(bean.getFieldName())); String value = String.valueOf(r.get(bean.getFieldName()));
for (DictEntity dictEntity : dicDataList) { for (DictEntity dictEntity : dicDataList) {
if (value.equalsIgnoreCase(dictEntity.getTypecode())) { if (value.equalsIgnoreCase(dictEntity.getTypecode())) {
r.put(bean.getFieldName(), MutiLangUtil.getMutiLangInstance().getLang(dictEntity.getTypename())); r.put(bean.getFieldName(), MutiLangUtil.getMutiLangInstance().getLang(dictEntity.getTypename()));
} }
} }
} }

@ -155,12 +155,14 @@ public class GenerateController extends BaseController {
//step.2 判断表是否存在 //step.2 判断表是否存在
boolean tableexist = new JeecgReadTable().checkTableExist(tableName); boolean tableexist = new JeecgReadTable().checkTableExist(tableName);
if(tableexist){ if(tableexist){
//step.3 判断是不是用用户自定义界面 //step.3 判断是不是用用户自定义界面
CgformCodeGenerate generate = new CgformCodeGenerate(createFileProperty,generateEntity); CgformCodeGenerate generate = new CgformCodeGenerate(createFileProperty,generateEntity);
if(createFileProperty.getJspMode().equals("04")){ if(createFileProperty.getJspMode().equals("04")){
String formhtml = templetContextWord.autoFormGenerateHtml(tableName, null, null); String formhtml = templetContextWord.autoFormGenerateHtml(tableName, null, null);
generate.setCgformJspHtml(formhtml); generate.setCgformJspHtml(formhtml);
} }
//step.4 调用代码生成器 //step.4 调用代码生成器
generate.generateToFile(); generate.generateToFile();

@ -548,8 +548,10 @@ public class CgformTemplateController extends BaseController {
} }
//获取上传根路径 //获取上传根路径
private String getUploadBasePath(HttpServletRequest request){ private String getUploadBasePath(HttpServletRequest request){
// String path=request.getSession().getServletContext().getRealPath("/WEB-INF/classes/online/template"); // String path=request.getSession().getServletContext().getRealPath("/WEB-INF/classes/online/template");
String path= this.getClass().getResource("/").getPath()+"online/template"; String path= this.getClass().getResource("/").getPath()+"online/template";
return path; return path;
} }

@ -191,11 +191,13 @@ public class CgformTransController {
cgFormField.setLength(Integer.valueOf(columnt cgFormField.setLength(Integer.valueOf(columnt
.getPrecision())); .getPrecision()));
} }
else{ else{
if(cgFormField.getType().equals(DataBaseConst.INT)){ if(cgFormField.getType().equals(DataBaseConst.INT)){
cgFormField.setLength(10); cgFormField.setLength(10);
} }
} }
if (StringUtil.isNotEmpty(columnt.getScale())) if (StringUtil.isNotEmpty(columnt.getScale()))
cgFormField.setPointLength(Integer.valueOf(columnt cgFormField.setPointLength(Integer.valueOf(columnt
.getScale())); .getScale()));

@ -72,16 +72,14 @@ public class DBTempletLoader implements TemplateLoader {
} }
private Object getObject(String name) throws IOException { private Object getObject(String name) throws IOException {
// update-start--Author:zhangguoming Date:20140922 for根据ftlVersion动态读取模板
String ftlVersion = ""; String ftlVersion = "";
String ftlVersionParam = "&ftlVersion="; String ftlVersionParam = "&ftlVersion=";
if(name.contains(ftlVersionParam)) { if(name.contains(ftlVersionParam)) {
ftlVersion = name.substring(name.indexOf(ftlVersionParam) + ftlVersionParam.length()); ftlVersion = name.substring(name.indexOf(ftlVersionParam) + ftlVersionParam.length());
name = name.substring(0, name.indexOf(ftlVersionParam)); name = name.substring(0, name.indexOf(ftlVersionParam));
} }
// update-end--Author:zhangguoming Date:20140922 for根据ftlVersion动态读取模板
//update-begin--Author:张忠亮 Date:20150707 foronline表单风格加入录入、编辑、列表、详情页面设置
TemplateUtil.TemplateType templateType= null; TemplateUtil.TemplateType templateType= null;
if(name.lastIndexOf(".ftl")==-1&&name.lastIndexOf("_")!=-1){ if(name.lastIndexOf(".ftl")==-1&&name.lastIndexOf("_")!=-1){
templateType=TemplateUtil.TemplateType.getVal(name.substring(name.lastIndexOf("_")+1)); templateType=TemplateUtil.TemplateType.getVal(name.substring(name.lastIndexOf("_")+1));
@ -90,20 +88,20 @@ public class DBTempletLoader implements TemplateLoader {
if(templateType==null){ if(templateType==null){
templateType= TemplateUtil.TemplateType.UPDATE; templateType= TemplateUtil.TemplateType.UPDATE;
} }
//update-end--Author:张忠亮 Date:20150707 foronline表单风格加入录入、编辑、列表、详情页面设置
PathMatchingResourcePatternResolver patternResolver = new PathMatchingResourcePatternResolver(); PathMatchingResourcePatternResolver patternResolver = new PathMatchingResourcePatternResolver();
if(name.lastIndexOf(".ftl")==-1){//判断是否为include的模板 if(name.lastIndexOf(".ftl")==-1){//判断是否为include的模板
//如果是主表直接走一对多模板 //如果是主表直接走一对多模板
CgFormHeadEntity head = cgFormFieldService.getCgFormHeadByTableName(name); CgFormHeadEntity head = cgFormFieldService.getCgFormHeadByTableName(name);
if(head==null)return null; if(head==null)return null;
//update-begin--Author:张忠亮 Date:20150707 foronline表单风格加入录入、编辑、列表、详情页面设置
CgformTemplateEntity entity=cgformTemplateService.findByCode(head.getFormTemplate()); CgformTemplateEntity entity=cgformTemplateService.findByCode(head.getFormTemplate());
//update-end--Author:张忠亮 Date:20150707 foronline表单风格加入录入、编辑、列表、详情页面设置
if(head.getJformType()==CgAutoListConstant.JFORM_TYPE_MAIN_TALBE){ if(head.getJformType()==CgAutoListConstant.JFORM_TYPE_MAIN_TALBE){
//update-begin--Author:张忠亮 Date:20150623 for自定义模板
Resource[] resources = patternResolver.getResources(TemplateUtil.getTempletPath(entity, head.getJformType(), templateType)); Resource[] resources = patternResolver.getResources(TemplateUtil.getTempletPath(entity, head.getJformType(), templateType));
//update-end--Author:张忠亮 Date:20150623 for自定义模板
InputStreamReader inputStreamReader =null; InputStreamReader inputStreamReader =null;
if (resources != null && resources.length > 0) { if (resources != null && resources.length > 0) {
inputStreamReader = new InputStreamReader(resources[0].getInputStream(),"UTF-8"); inputStreamReader = new InputStreamReader(resources[0].getInputStream(),"UTF-8");
@ -112,23 +110,23 @@ public class DBTempletLoader implements TemplateLoader {
} }
//1、根据table name 查询cgformftl 有则获取模板内容 //1、根据table name 查询cgformftl 有则获取模板内容
//2、没有cgformftl 则查询cgformfield 根据cgformfield生成模板 //2、没有cgformftl 则查询cgformfield 根据cgformfield生成模板
// update-start--Author:zhangguoming Date:20140922 for根据ftlVersion动态读取模板
Map<String,Object> cgformFtlEntity = new HashMap<String, Object>(); Map<String,Object> cgformFtlEntity = new HashMap<String, Object>();
if (ftlVersion != null && ftlVersion.length() > 0) { if (ftlVersion != null && ftlVersion.length() > 0) {
cgformFtlEntity = cgformFtlService.getCgformFtlByTableName(name, ftlVersion); cgformFtlEntity = cgformFtlService.getCgformFtlByTableName(name, ftlVersion);
} else { } else {
cgformFtlEntity = cgformFtlService.getCgformFtlByTableName(name); cgformFtlEntity = cgformFtlService.getCgformFtlByTableName(name);
} }
// update-end--Author:zhangguoming Date:20140922 for根据ftlVersion动态读取模板
if(cgformFtlEntity!=null){ if(cgformFtlEntity!=null){
String content = (String) (cgformFtlEntity.get("ftl_content")==null?"":cgformFtlEntity.get("ftl_content")); String content = (String) (cgformFtlEntity.get("ftl_content")==null?"":cgformFtlEntity.get("ftl_content"));
content = initFormHtml( content, name); content = initFormHtml( content, name);
// org.jeecgframework.core.util.LogUtil.info(content); // org.jeecgframework.core.util.LogUtil.info(content);
return new StringBuilder(content); return new StringBuilder(content);
}else{ }else{
//update-begin--Author:张忠亮 Date:20150623 for自定义模板
Resource[] resources = patternResolver.getResources(TemplateUtil.getTempletPath(entity, head.getJformType(),templateType)); Resource[] resources = patternResolver.getResources(TemplateUtil.getTempletPath(entity, head.getJformType(),templateType));
//update-end--Author:张忠亮 Date:20150623 for自定义模板
InputStreamReader inputStreamReader =null; InputStreamReader inputStreamReader =null;
if (resources != null && resources.length > 0) { if (resources != null && resources.length > 0) {
inputStreamReader = new InputStreamReader(resources[0].getInputStream(),"UTF-8"); inputStreamReader = new InputStreamReader(resources[0].getInputStream(),"UTF-8");

@ -17,6 +17,9 @@ public class FreemarkerHelper {
private static Configuration _tplConfig = new Configuration(); private static Configuration _tplConfig = new Configuration();
static{ static{
_tplConfig.setClassForTemplateLoading(FreemarkerHelper.class, "/"); _tplConfig.setClassForTemplateLoading(FreemarkerHelper.class, "/");
_tplConfig.setDateTimeFormat("yyyy-MM-dd HH:mm:ss");
_tplConfig.setDateFormat("yyyy-MM-dd");
_tplConfig.setTimeFormat("HH:mm:ss");
} }
/** /**
@ -32,6 +35,9 @@ public class FreemarkerHelper {
StringWriter swriter = new StringWriter(); StringWriter swriter = new StringWriter();
Template mytpl = null; Template mytpl = null;
mytpl = _tplConfig.getTemplate(tplName, encoding); mytpl = _tplConfig.getTemplate(tplName, encoding);
mytpl.setDateTimeFormat("yyyy-MM-dd HH:mm:ss");
mytpl.setDateFormat("yyyy-MM-dd");
mytpl.setTimeFormat("HH:mm:ss");
mytpl.process(paras, swriter); mytpl.process(paras, swriter);
return swriter.toString(); return swriter.toString();
} catch (Exception e) { } catch (Exception e) {

@ -65,9 +65,11 @@ public class TempletContext {
return null; return null;
} }
String oldTableName = tableName; String oldTableName = tableName;
if (ftlVersion != null && ftlVersion.length() > 0) { if (ftlVersion != null && ftlVersion.length() > 0) {
tableName = tableName + "&ftlVersion=" + ftlVersion; tableName = tableName + "&ftlVersion=" + ftlVersion;
} }
try { try {
if(CgAutoListConstant.SYS_MODE_DEV.equalsIgnoreCase(_sysMode)){//开发模式 if(CgAutoListConstant.SYS_MODE_DEV.equalsIgnoreCase(_sysMode)){//开发模式
template = freemarker.getTemplate(tableName,freemarker.getLocale(), ENCODING); template = freemarker.getTemplate(tableName,freemarker.getLocale(), ENCODING);
@ -126,6 +128,7 @@ public class TempletContext {
public void setTags(Map<String, TemplateDirectiveModel> tags) { public void setTags(Map<String, TemplateDirectiveModel> tags) {
this.tags = tags; this.tags = tags;
} }
public void clearCache(){ public void clearCache(){
try{ try{
ehCache.removeAll(); ehCache.removeAll();
@ -133,4 +136,5 @@ public class TempletContext {
} }
} }
} }

@ -29,6 +29,7 @@
</label> </label>
</td> </td>
<td class="value"> <td class="value">
<!--update-begin--Author:钟世云 Date:20150610 foronline支持树配置-->
<#if head.isTree=='Y' && head.treeParentIdFieldName==po.field_name> <#if head.isTree=='Y' && head.treeParentIdFieldName==po.field_name>
<!--如果为树形菜单父id输入框设置为select--> <!--如果为树形菜单父id输入框设置为select-->
<input id="${po.field_name}" ${po.extend_json?if_exists} name="${po.field_name}" type="text" <input id="${po.field_name}" ${po.extend_json?if_exists} name="${po.field_name}" type="text"
@ -72,6 +73,7 @@
} }
} }
"> ">
<!--update-end--Author:钟世云 Date:20150610 foronline支持树配置-->
<#elseif po.show_type=='text'> <#elseif po.show_type=='text'>
<input id="${po.field_name}" ${po.extend_json?if_exists} name="${po.field_name}" type="text" <input id="${po.field_name}" ${po.extend_json?if_exists} name="${po.field_name}" type="text"
style="width: 150px" class="inputxt" value="${data['${tableName}']['${po.field_name}']?if_exists?html}" style="width: 150px" class="inputxt" value="${data['${tableName}']['${po.field_name}']?if_exists?html}"
@ -338,9 +340,11 @@
} }
function uploadFile(data){ function uploadFile(data){
if(!$("input[name='id']").val()){ if(!$("input[name='id']").val()){
<!--update-start--Author:luobaoli Date:20150614 for需要判断data.obj存在才能取id值-->
if(data.obj!=null && data.obj!='undefined'){ if(data.obj!=null && data.obj!='undefined'){
$("input[name='id']").val(data.obj.id); $("input[name='id']").val(data.obj.id);
} }
<!--update-end--Author:luobaoli Date:20150614 for需要判断data.obj存在才能取id值-->
} }
if($(".uploadify-queue-item").length>0){ if($(".uploadify-queue-item").length>0){
upload(); upload();

@ -76,9 +76,11 @@
} }
function uploadFile(data){ function uploadFile(data){
if(!$("input[name='id']").val()){ if(!$("input[name='id']").val()){
<!--update-start--Author:luobaoli Date:20150614 for需要判断data.obj存在才能取id值-->
if(data.obj!=null && data.obj!='undefined'){ if(data.obj!=null && data.obj!='undefined'){
$("input[name='id']").val(data.obj.id); $("input[name='id']").val(data.obj.id);
} }
<!--update-end--Author:luobaoli Date:20150614 for需要判断data.obj存在才能取id值-->
} }
if($(".uploadify-queue-item").length>0){ if($(".uploadify-queue-item").length>0){
upload(); upload();

@ -63,10 +63,12 @@ public class DictDataTag implements TemplateDirectiveModel {
if (dataList == null) { if (dataList == null) {
dataList = new ArrayList<TSType>(); dataList = new ArrayList<TSType>();
} }
for(TSType s:dataList){ for(TSType s:dataList){
String names = s.getTypename(); String names = s.getTypename();
s.setTypename(MutiLangUtil.getMutiLangInstance().getLang(names)); s.setTypename(MutiLangUtil.getMutiLangInstance().getLang(names));
} }
env.setGlobalVariable(var, new SimpleCollection(dataList)); env.setGlobalVariable(var, new SimpleCollection(dataList));
} else { } else {
// table表查询 // table表查询

@ -0,0 +1,81 @@
package org.jeecgframework.web.cgform.engine.tag;
import java.io.IOException;
import java.io.Writer;
import java.util.Map;
import org.jeecgframework.core.util.ApplicationContextUtil;
import org.jeecgframework.web.system.service.MutiLangServiceI;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import freemarker.core.Environment;
import freemarker.template.TemplateDirectiveBody;
import freemarker.template.TemplateDirectiveModel;
import freemarker.template.TemplateException;
import freemarker.template.TemplateModel;
import freemarker.template.TemplateModelException;
import freemarker.template.TemplateScalarModel;
/**
*
* 使 <@mutiLang langKey="${po.content}"/>
* @author Zhoujf
*
*/
@Component("mutiLangTag")
public class MutiLangTag implements TemplateDirectiveModel {
private static final Logger LOG = LoggerFactory
.getLogger(MutiLangTag.class);
@Autowired
private static MutiLangServiceI mutiLangService;
public void execute(Environment env, Map params, TemplateModel[] loopVars,
TemplateDirectiveBody body) throws TemplateException, IOException {
// 多语言key
String langKey = getAttribute(params, "langKey");
if (langKey == null) {
throw new TemplateException(
"Can not find attribute 'name' in data tag", env);
}
String langArg = getAttribute(params, "langArg");
if (mutiLangService == null)
{
mutiLangService = ApplicationContextUtil.getContext().getBean(MutiLangServiceI.class);
}
String lang_context = mutiLangService.getLang(langKey, langArg);
Writer out = env.getOut();
out.append(lang_context);
}
/**
*
*
* @param params
* @param name
* @return
*/
@SuppressWarnings("unchecked")
private String getAttribute(Map params, String name) {
String value = null;
if (params.containsKey(name)) {
TemplateModel paramValue = (TemplateModel) params.get(name);
try {
value = ((TemplateScalarModel) paramValue).getAsString();
} catch (TemplateModelException e) {
LOG.error("get attribute '{}' error", name, e);
}
}
return value;
}
}

@ -54,7 +54,9 @@ public class AutoFormDbEntity implements java.io.Serializable {
private java.lang.String tbDbKey; private java.lang.String tbDbKey;
/**填报数据表*/ /**填报数据表*/
private java.lang.String tbDbTableName; private java.lang.String tbDbTableName;
private String dbChName; private String dbChName;
/** /**
*: java.lang.String *: java.lang.String
*@return: java.lang.String *@return: java.lang.String
@ -309,6 +311,8 @@ public class AutoFormDbEntity implements java.io.Serializable {
public void setAutoFormId(java.lang.String autoFormId){ public void setAutoFormId(java.lang.String autoFormId){
this.autoFormId = autoFormId; this.autoFormId = autoFormId;
} }
//add-begin--Author:luobaoli Date:20150620 for增加数据源字段
/** /**
*: java.lang.String *: java.lang.String
*@return: java.lang.String *@return: java.lang.String
@ -322,6 +326,9 @@ public class AutoFormDbEntity implements java.io.Serializable {
public void setDbKey(java.lang.String dbKey) { public void setDbKey(java.lang.String dbKey) {
this.dbKey = dbKey; this.dbKey = dbKey;
} }
//add-end--Author:luobaoli Date:20150620 for增加数据源字段
//add-begin--Author: jg_huangxg Date:20150723 for增加填报数据源字段和填报数据表字段
public void setTbDbKey(java.lang.String tbDbKey) { public void setTbDbKey(java.lang.String tbDbKey) {
this.tbDbKey = tbDbKey; this.tbDbKey = tbDbKey;
} }
@ -339,6 +346,8 @@ public class AutoFormDbEntity implements java.io.Serializable {
public java.lang.String getTbDbTableName() { public java.lang.String getTbDbTableName() {
return tbDbTableName; return tbDbTableName;
} }
//add-end--Author: jg_huangxg Date:20150723 for增加填报数据源字段和填报数据表字段
@Column(name ="DB_CH_NAME",nullable=true,length=32) @Column(name ="DB_CH_NAME",nullable=true,length=32)
public String getDbChName() { public String getDbChName() {
return dbChName; return dbChName;
@ -347,4 +356,5 @@ public class AutoFormDbEntity implements java.io.Serializable {
public void setDbChName(String dbChName) { public void setDbChName(String dbChName) {
this.dbChName = dbChName; this.dbChName = dbChName;
} }
} }

@ -53,8 +53,10 @@ public class AutoFormDbFieldEntity implements java.io.Serializable {
/**字段名*/ /**字段名*/
@Excel(name="字段名") @Excel(name="字段名")
private java.lang.String fieldName; private java.lang.String fieldName;
@Excel(name="字段文本") @Excel(name="字段文本")
private String fieldText; private String fieldText;
/** /**
*: java.lang.String *: java.lang.String
*@return: java.lang.String *@return: java.lang.String
@ -234,6 +236,7 @@ public class AutoFormDbFieldEntity implements java.io.Serializable {
public void setFieldName(java.lang.String fieldName){ public void setFieldName(java.lang.String fieldName){
this.fieldName = fieldName; this.fieldName = fieldName;
} }
@Column(name ="FIELD_Text",nullable=true,length=50) @Column(name ="FIELD_Text",nullable=true,length=50)
public String getFieldText() { public String getFieldText() {
return fieldText; return fieldText;
@ -243,4 +246,5 @@ public class AutoFormDbFieldEntity implements java.io.Serializable {
this.fieldText = fieldText; this.fieldText = fieldText;
} }
} }

@ -271,10 +271,12 @@ public class AutoFormDbPage implements java.io.Serializable {
public void setAutoFormId(java.lang.String autoFormId){ public void setAutoFormId(java.lang.String autoFormId){
this.autoFormId = autoFormId; this.autoFormId = autoFormId;
} }
//add-begin--Author:luobaoli Date:20150620 for增加数据源字段
public java.lang.String getDbKey() { public java.lang.String getDbKey() {
return dbKey; return dbKey;
} }
public void setDbKey(java.lang.String dbKey) { public void setDbKey(java.lang.String dbKey) {
this.dbKey = dbKey; this.dbKey = dbKey;
} }
//add-end--Author:luobaoli Date:20150620 for增加数据源字段
} }

@ -71,7 +71,9 @@ public class AutoFormEntity implements java.io.Serializable {
private java.lang.String dbId; private java.lang.String dbId;
private java.lang.String autoFormId; private java.lang.String autoFormId;
private String mainTableSource; private String mainTableSource;
/** /**
*: java.lang.String *: java.lang.String
*@return: java.lang.String *@return: java.lang.String
@ -309,6 +311,7 @@ public class AutoFormEntity implements java.io.Serializable {
public void setAutoFormId(java.lang.String autoFormId) { public void setAutoFormId(java.lang.String autoFormId) {
this.autoFormId = autoFormId; this.autoFormId = autoFormId;
} }
@Column(name ="main_table_source",nullable=true) @Column(name ="main_table_source",nullable=true)
public String getMainTableSource() { public String getMainTableSource() {
return mainTableSource; return mainTableSource;
@ -317,4 +320,5 @@ public class AutoFormEntity implements java.io.Serializable {
public void setMainTableSource(String mainTableSource) { public void setMainTableSource(String mainTableSource) {
this.mainTableSource = mainTableSource; this.mainTableSource = mainTableSource;
} }
} }

@ -94,8 +94,10 @@ public class CgFormFieldEntity implements java.io.Serializable {
private java.lang.String oldFieldName; private java.lang.String oldFieldName;
/**字段默认值*/ /**字段默认值*/
private java.lang.String fieldDefault; private java.lang.String fieldDefault;
//add-start--Author:luobaoli Date:20150610 for添加扩展参数字段
/**扩展参数**/ /**扩展参数**/
private java.lang.String extendJson; private java.lang.String extendJson;
//add-start--Author:luobaoli Date:20150610 for添加扩展参数字段
/** /**
*: java.lang.String *: java.lang.String
@ -549,6 +551,8 @@ public class CgFormFieldEntity implements java.io.Serializable {
public void setFieldDefault(java.lang.String fieldDefault) { public void setFieldDefault(java.lang.String fieldDefault) {
this.fieldDefault = fieldDefault; this.fieldDefault = fieldDefault;
} }
//add-start--Author:luobaoli Date:20150610 for添加扩展参数字段
@Column(name ="extend_json",nullable=true,length=500) @Column(name ="extend_json",nullable=true,length=500)
public java.lang.String getExtendJson() { public java.lang.String getExtendJson() {
return extendJson; return extendJson;
@ -557,4 +561,5 @@ public class CgFormFieldEntity implements java.io.Serializable {
public void setExtendJson(java.lang.String extendJson) { public void setExtendJson(java.lang.String extendJson) {
this.extendJson = extendJson; this.extendJson = extendJson;
} }
//add-end--Author:luobaoli Date:20150610 for添加扩展参数字段
} }

@ -0,0 +1,99 @@
package org.jeecgframework.web.cgform.entity.config;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecgframework.poi.excel.annotation.ExcelTarget;
/**
* @Title: Entity
* @Description:
* @author jueyue
* @date 2013-06-30 11:37:32
* @version V1.0
*
*/
@ExcelTarget("cgFormFieldVO")
public class CgFormFieldVO implements java.io.Serializable {
private static final long serialVersionUID = 8248068871232905945L;
/**id*/
private java.lang.String id;
/**字段名称*/
@Excel(name="字段名称",orderNum="1")
private java.lang.String fieldName;
/**功能注释*/
@Excel(name="字段备注",orderNum="2")
private java.lang.String content;
/**字段类型*/
@Excel(name="字段类型",orderNum="3")
private java.lang.String type;
/**字段长度*/
@Excel(name="字段长度",orderNum="4")
private java.lang.String length;
/**小数点长度*/
@Excel(name="小数点长度",orderNum="5")
private java.lang.String pointLength;
/**默认值*/
@Excel(name="默认值",orderNum="6")
private java.lang.String fieldDefault;
/**是否允许空值*/
@Excel(name="允许空值",orderNum="7")
private java.lang.String isNull;
public java.lang.String getId() {
return id;
}
public void setId(java.lang.String id) {
this.id = id;
}
public java.lang.String getFieldName() {
return fieldName;
}
public void setFieldName(java.lang.String fieldName) {
this.fieldName = fieldName;
}
public java.lang.String getLength() {
return length;
}
public void setLength(java.lang.String length) {
this.length = length;
}
public java.lang.String getPointLength() {
return pointLength;
}
public void setPointLength(java.lang.String pointLength) {
this.pointLength = pointLength;
}
public java.lang.String getType() {
return type;
}
public void setType(java.lang.String type) {
this.type = type;
}
public java.lang.String getIsNull() {
return isNull;
}
public void setIsNull(java.lang.String isNull) {
this.isNull = isNull;
}
public java.lang.String getContent() {
return content;
}
public void setContent(java.lang.String content) {
this.content = content;
}
public java.lang.String getFieldDefault() {
return fieldDefault;
}
public void setFieldDefault(java.lang.String fieldDefault) {
this.fieldDefault = fieldDefault;
}
@Override
public String toString() {
return "CgFormFieldVO [id=" + id + ", fieldName=" + fieldName
+ ", content=" + content + ", type=" + type + ", length="
+ length + ", pointLength=" + pointLength + ", fieldDefault="
+ fieldDefault + ", isNull=" + isNull + "]";
}
}

@ -83,10 +83,21 @@ public class CgFormHeadEntity implements java.io.Serializable {
private java.lang.String treeIdFieldname; private java.lang.String treeIdFieldname;
/**树形列表 菜单列名*/ /**树形列表 菜单列名*/
private java.lang.String treeFieldname; private java.lang.String treeFieldname;
//add-start--Author:luobaoli Date:20150607 for增加表单分类列
/**表单分类*/ /**表单分类*/
private java.lang.String jformCategory; private java.lang.String jformCategory;
//add-end--Author:luobaoli Date:20150607 for增加表单分类列
//add-start--Author:张忠亮 Date:20150618 for增加表单模板选择
/**表单模板*/ /**表单模板*/
private String formTemplate; private String formTemplate;
//add-end--Author:张忠亮 Date:20150618 for增加表单模板选择
//add-start--Author:scott Date:20160301 foronline表单移动样式单独配置
/**表单模板样式(移动端)*/
private String formTemplateMobile;
//add-end--Author:scott Date:20160301 foronline表单移动样式单独配置
/** /**
*: java.lang.String *: java.lang.String
*@return: java.lang.String id *@return: java.lang.String id
@ -446,6 +457,7 @@ public class CgFormHeadEntity implements java.io.Serializable {
public void setJformCategory(java.lang.String jformCategory) { public void setJformCategory(java.lang.String jformCategory) {
this.jformCategory = jformCategory; this.jformCategory = jformCategory;
} }
//add-start--Author:张忠亮 Date:20150618 for增加表单模板选择
@Column(name ="form_template",length=50) @Column(name ="form_template",length=50)
public String getFormTemplate() { public String getFormTemplate() {
return formTemplate; return formTemplate;
@ -454,4 +466,14 @@ public class CgFormHeadEntity implements java.io.Serializable {
public void setFormTemplate(String formTemplate) { public void setFormTemplate(String formTemplate) {
this.formTemplate = formTemplate; this.formTemplate = formTemplate;
} }
//add-end--Author:张忠亮 Date:20150618 for增加表单模板选择
@Column(name ="form_template_mobile",length=50)
public String getFormTemplateMobile() {
return formTemplateMobile;
}
public void setFormTemplateMobile(String formTemplateMobile) {
this.formTemplateMobile = formTemplateMobile;
}
} }

@ -63,10 +63,12 @@ public class CgformTemplateEntity implements java.io.Serializable {
private String templateComment; private String templateComment;
private String templateZipName; private String templateZipName;
private String templateListName; private String templateListName;
private String templateAddName; private String templateAddName;
private String templateUpdateName; private String templateUpdateName;
private String templateDetailName; private String templateDetailName;
/** /**
*: java.lang.String *: java.lang.String
*@return: java.lang.String *@return: java.lang.String

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save