jeecg3.6.3 版本发布 20160410

jeecg_3.6.3
zhangdaiscott 10 years ago
parent d4ce14f113
commit a522ece4df

@ -1,7 +1,7 @@
JEECG 微云快速开发平台
===============
当前最新版本: 3.6.2发布日期20160315
当前最新版本: 3.6.3发布日期20160410
前言:
-----------------------------------

File diff suppressed because one or more lines are too long

@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.jeecgframework</groupId>
<artifactId>jeecg</artifactId>
<version>3.6.2</version>
<version>3.6.3</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@ -11,7 +11,10 @@
<minidao.version>1.5.5</minidao.version>
<guava.version>16.0.1</guava.version>
<!-- 主要依赖库的版本定义 -->
<!-- update-begin author xugj date:20160103 for: #851 controller 单元测试升级spring 版本 -->
<spring.version>4.0.9.RELEASE</spring.version>
<!-- update-end author xugj date:20160103 for: #851 controller 单元测试升级spring 版本 -->
<hibernate.version>4.1.0.Final</hibernate.version>
<hibernate-common-annotations.version>4.0.2.Final</hibernate-common-annotations.version>
<hibernate-jpa.version>1.0.1.Final</hibernate-jpa.version>
@ -27,11 +30,13 @@
<javassist.version>3.15.0-GA</javassist.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>
<!-- 工具包 -->
<!-- json start -->
<jackson.version>1.8.4</jackson.version>
<!-- todo 没有用到 <jackson2.version>2.1.2</jackson2.version>-->
<jacksonframework.version>1.84</jacksonframework.version>
<json-lib.version>2.1</json-lib.version>
<fastjson-lib.version>1.2.6</fastjson-lib.version>
@ -81,7 +86,16 @@
<!-- 测试依赖包 -->
<junit.version>4.7</junit.version>
<!-- update-begin author xugj date:20160103 for: #851 controller 单元测试使用DEMO -->
<hamcrest.version>1.3</hamcrest.version>
<!-- update-end author xugj date:20160103 for:#851 controller 单元测试DEMO -->
<!-- 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>
<!-- java生成缩略图 -->
@ -95,10 +109,15 @@
<!--poi 工具类 -->
<easypoi.version>2.1.4</easypoi.version>
<cxf.version>3.0.2</cxf.version>
<!--maven插件变量-->
<tomcat.version>2.2</tomcat.version>
<jetty.version>7.6.14.v20131031</jetty.version>
<webserver.port>8080</webserver.port>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<repositories>
<repository>
<repository>
<id>jeecg</id>
<name>jeecg Repository</name>
<url>http://maven.jeecg.org/nexus/content/repositories/jeecg</url>
@ -114,7 +133,7 @@
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</repositories>
<dependencies>
<!-- activation -->
@ -140,16 +159,20 @@
<groupId>org.jeecgframework</groupId>
<artifactId>minidao-pe</artifactId>
<version>${minidao.version}</version>
<!-- update-begin author xugj date:20160103 for: #851 升级spring 到4.0.9 后不需要再引入 spring-asm -->
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-asm</artifactId>
</exclusion>
<!-- update-start author xugj date:20160125 -->
<exclusion>
<groupId>org.junit</groupId>
<artifactId>com.springsource.org.junit</artifactId>
</exclusion>
<!-- update-end author xugj date:20160125 -->
</exclusions>
<!-- update-end author xugj date:20160103 for: #851 升级spring 到4.0.9 后不需要再引入 spring-asm -->
</dependency>
<!-- ckfinder start -->
<dependency>
@ -286,6 +309,19 @@
<version>${spring.version}</version>
</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 -->
<dependency>
<groupId>org.mybatis</groupId>
@ -305,6 +341,7 @@
<groupId>com.cloudhopper.proxool</groupId>
<artifactId>proxool</artifactId>
<version>${proxool.version}</version>
<!-- 许仙明加入 geronimo-javamail_1.4_spec后删除-->
<exclusions>
<exclusion>
<artifactId>geronimo-spec-javamail</artifactId>
@ -716,17 +753,21 @@
<version>${junit.version}</version>
</dependency>
<!-- hamcrest -->
<!-- update-begin author xugj date:20160103 for: #851 Spring MVC Test Framework 需要 -->
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>${hamcrest.version}</version>
</dependency>
<!-- update-end author xugj date:20160103 for: #851 Spring MVC Test Framework 需要 -->
<!-- update-begin author xugj date:20160103 for: #851 Spring MVC controller 测试 解析json需要 -->
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>0.8.1</version>
<scope>test</scope>
</dependency>
<!-- update-end author xugj date:20160103 for: #851 Spring MVC controller 测试 解析json需要 -->
<!-- spring -->
<dependency>
@ -814,6 +855,7 @@
</dependency>
<!-- baidu ueditor-->
<!-- jsoup HTML parser library @ http://jsoup.org/ -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
@ -846,23 +888,24 @@
<dependency>
<groupId>org.p3framework</groupId>
<artifactId>jeecg-p3-ui</artifactId>
<version>1.0-SNAPSHOT</version>
<version>1.1-SNAPSHOT</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.p3framework</groupId>
<artifactId>jeecg-p3-biz-actInvite</artifactId>
<version>1.0.0</version>
<artifactId>jeecg-p3-biz-demo</artifactId>
<version>1.0.1</version>
</dependency>
<!-- jeecg plugin end -->
</dependencies>
<organization>
<name>JEECG 微云快速开发平台</name>
<name>JEECG 智能快速开发平台</name>
<url>www.jeecg.org</url>
</organization>
<build>
<plugins>
<!-- tomcat插件 -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
@ -883,7 +926,40 @@
<target>1.6</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugin>
<!-- tomcat7插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>${tomcat.version}</version>
<configuration>
<port>${webserver.port}</port>
<path>/${project.artifactId}</path>
<uriEncoding>${project.build.sourceEncoding}</uriEncoding>
</configuration>
</plugin>
<!-- jetty插件 -->
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${jetty.version}</version>
<configuration>
<connectors>
<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
<port>${webserver.port}</port>
</connector>
</connectors>
<webAppConfig>
<contextPath>/${project.artifactId}</contextPath>
</webAppConfig>
<systemProperties>
<systemProperty>
<name>org.mortbay.util.URI.charset</name>
<value>${project.build.sourceEncoding}</value>
</systemProperty>
</systemProperties>
</configuration>
</plugin>
</plugins>
<finalName>jeecg</finalName>
<resources>

@ -55,6 +55,7 @@ public interface ICommonDao extends IGenericBaseCommonDao{
public void parserXml(String fileName);
public List<ComboTree> comTree(List<TSDepart> all,ComboTree comboTree);
// update-begin--Author:zhangguoming Date:20140819 for添加recuisive方法参数
/**
* ComboTree JSON
*
@ -65,7 +66,7 @@ public interface ICommonDao extends IGenericBaseCommonDao{
* @return List<ComboTree>
*/
public List<ComboTree> ComboTree(List all, ComboTreeModel comboTreeModel, List in, boolean recursive);
// update-end--Author:zhangguoming Date:20140819 for添加recuisive方法参数
public List<TreeGrid> treegrid(List all,TreeGridModel treeGridModel);
}

@ -322,11 +322,12 @@ public interface IGenericBaseCommonDao {
int maxResult);
public <T> List<T> findByDetached(DetachedCriteria dc);
//update-begin--Author:luobaoli Date:20150708 for增加执行存储过程方法
/**
*
* @param execute
*/
public <T> List<T> executeProcedure(String procedureSql,Object... params);
//update-end--Author:luobaoli Date:20150708 for增加执行存储过程方法
}

@ -53,7 +53,7 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
queryObject.setParameter("username", user.getUserName());
queryObject.setParameter("passowrd", password);
List<TSUser> users = queryObject.list();
//update-start-Author:jg_renjie Date:20151220 for配合TASK #804 【基础权限】切换用户session刷新后重新调用该方法时password值为加密后的值,故不需要加密
if (users != null && users.size() > 0) {
return users.get(0);
} else {
@ -65,7 +65,7 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
return users.get(0);
}
}
//update-end-Author:jg_renjie Date:20151220 for配合TASK #804 【基础权限】切换用户session刷新后重新调用该方法时password值为加密后的值故不需要加密
return null;
}
@ -191,7 +191,7 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
}
saveOrUpdate(object);
// 文件拷贝到指定硬盘目录
//update-begin--Author:jg_renjie Date:20150607 for上传下载功能上传UTF-8字符集TXT文件预览出现乱码的错误
if("txt".equals(extend)){
//利用utf-8字符集的固定首行隐藏编码原理
//Unicode:FF FE UTF-8:EF BB
@ -210,13 +210,13 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
out.close();
}
} else {
//update-begin--Author:zhoujf Date:20150610 forTXT文件预览出现乱码的错误
//GBK
String contents = new String(mf.getBytes(),"GBK");
OutputStream out = new FileOutputStream(savePath);
out.write(contents.getBytes());
out.close();
//update-end--Author:zhoujf Date:20150610 forTXT文件预览出现乱码的错误
}
} catch(Exception e){
String contents = new String(mf.getBytes(),"UTF-8");
@ -229,7 +229,7 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
} else {
FileCopyUtils.copy(mf.getBytes(), savefile);
}
//update-begin--Author:jg_renjie Date:20150607 for上传下载功能上传UTF-8字符集TXT文件预览出现乱码的错误
// if (uploadFile.getSwfpath() != null) {
// // 转SWF
@ -523,15 +523,16 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
for (Object inobj : in) {
ReflectHelper reflectHelper2 = new ReflectHelper(inobj);
String inId = oConvertUtils.getString(reflectHelper2.getMethodValue(comboTreeModel.getIdField()));
//update-begin--Author:JueYue Date:20140514 for==不起作用--------------------
if (inId.equals(id)) {
tree.setChecked(true);
}
//update-end--Author:JueYue Date:20140514 for==不起作用--------------------
}
}
}
// update-begin--Author:zhangguoming Date:20140819 for递归子节点属性
List curChildList = (List) reflectHelper.getMethodValue(comboTreeModel.getChildField());
if (curChildList != null && curChildList.size() > 0) {
tree.setState("closed");
@ -547,7 +548,7 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
tree.setChildren(children);
}
}
// update-end--Author:zhangguoming Date:20140819 for递归子节点属性
return tree;
}
@ -643,12 +644,12 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
tg.getFieldMap().put(entry.getKey(), fieldValue);
}
}
//update-begin--Author:anchao Date:20140822 for[bugfree号]字段级权限(表单,列表)--------------------
if (treeGridModel.getFunctionType() != null) {
String functionType = oConvertUtils.getString(reflectHelper.getMethodValue(treeGridModel.getFunctionType()));
tg.setFunctionType(functionType);
}
//update-end--Author:anchao Date:20140822 for[bugfree号]字段级权限(表单,列表)--------------------
treegrid.add(tg);
}
return treegrid;

@ -883,9 +883,9 @@ public abstract class GenericBaseCommonDao<T, PK extends Serializable>
*
*/
public Long getCountForJdbcParam(String sql, Object[] objs) {
//-- update-begin author xugj date:20160103 for: #851 controller 单元测试升级spring 版本 -->
return this.jdbcTemplate.queryForObject(sql, objs,Long.class);
//-- update-end author xugj date:20160103 for: #851 controller 单元测试升级spring 版本 -->
}
@ -909,6 +909,7 @@ public abstract class GenericBaseCommonDao<T, PK extends Serializable>
KeyHolder keyHolder = null;
SqlParameterSource sqlp = new MapSqlParameterSource(param);
//update-begin--Author: jg_huangxg Date: 20150625 for[bugfree号]oc时,录入数据在Oracle下 数据写入错误--------------------
if (StringUtil.isNotEmpty(param.get("id"))) {//表示已经生成过id(UUID),则表示是非序列或数据库自增的形式
this.namedParameterJdbcTemplate.update(sql,sqlp);
}else{//NATIVE or SEQUENCE
@ -919,14 +920,14 @@ public abstract class GenericBaseCommonDao<T, PK extends Serializable>
keyValue = keyHolder.getKey().longValue();
}
}
//update-end--Author: jg_huangxg Date: 20150625 for[bugfree号]oc时,录入数据在Oracle下 数据写入错误----------------------
return keyValue;
}
public Integer countByJdbc(String sql, Object... param) {
//-- update-begin author xugj date:20160103 for: #851 controller 单元测试升级spring 版本 -->
return this.jdbcTemplate.queryForObject(sql, param,Integer.class);
//-- update-end author xugj date:20160103 for: #851 controller 单元测试升级spring 版本 -->
}
@ -982,6 +983,7 @@ public abstract class GenericBaseCommonDao<T, PK extends Serializable>
return dc.getExecutableCriteria(getSession()).list();
}
//update-begin--Author:luobaoli Date:20150710 for增加执行存储过程方法
/**
*
*/
@ -995,5 +997,5 @@ public abstract class GenericBaseCommonDao<T, PK extends Serializable>
return sqlQuery.list();
}
//update-end--Author:luobaoli Date:20150710 for增加执行存储过程方法
}

@ -193,18 +193,18 @@ public class JdbcDao extends SimpleJdbcTemplate{
* 使For JDBC
*/
public Long getCountForJdbc(String sql) {
//-- update-begin author xugj date:20160103 for: #851 controller 单元测试升级spring 版本 -->
return jdbcTemplate.queryForObject(sql,Long.class);
//-- update-end author xugj date:20160103 for: #851 controller 单元测试升级spring 版本 -->
}
/**
* 使For JDBC-
*
*/
public Long getCountForJdbcParam(String sql,Object... objs) {
//-- update-begin author xugj date:20160103 for: #851 controller 单元测试升级spring 版本 -->
return jdbcTemplate.queryForObject(sql, objs,Long.class);
//-- update-end author xugj date:20160103 for: #851 controller 单元测试升级spring 版本 -->
}
public Integer executeSql2(String sql,List<Object> param) {
@ -216,9 +216,9 @@ public class JdbcDao extends SimpleJdbcTemplate{
}
public Integer countByJdbc(String sql, Object... param) {
//-- update-begin author xugj date:20160103 for: #851 controller 单元测试升级spring 版本 -->
return this.jdbcTemplate.queryForObject(sql, param,Integer.class);
//-- update-end author xugj date:20160103 for: #851 controller 单元测试升级spring 版本 -->
}
/**

@ -22,7 +22,8 @@ import org.springframework.util.Assert;
public class SimpleJdbcTemplate {
protected final Log logger = LogFactory.getLog(getClass());
//-- update-begin author xugj date:20160103 for: #851 controller 单元测试升级spring 版本 SimpleJdbcTemplate的功能 使用 JdbcTemplate 与 NamedParameterJdbcTemplate 实现
protected JdbcTemplate jdbcTemplate;
protected NamedParameterJdbcTemplate namedJdbcTemplate;
@ -32,7 +33,7 @@ public class SimpleJdbcTemplate {
namedJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
simpleJdbcInsert=new SimpleJdbcInsert(dataSource);
}
//-- update-end author xugj date:20160103 for: #851 controller 单元测试升级spring 版本 SimpleJdbcTemplate的功能 使用 JdbcTemplate 与 NamedParameterJdbcTemplate 实现
/**
* sql
@ -69,9 +70,9 @@ public class SimpleJdbcTemplate {
if(parameters!=null){
return jdbcTemplate.queryForObject(sql, resultBeanMapper(clazz), parameters);
}else{
//-- update-begin author xugj date:20160103 for: #851 controller 单元测试升级spring 版本
return jdbcTemplate.queryForObject(sql, resultBeanMapper(clazz),Long.class);
//-- update-end author xugj date:20160103 for: #851 controller 单元测试升级spring 版本
}
}catch (Exception e) {
@ -88,13 +89,13 @@ public class SimpleJdbcTemplate {
public long findForLong(final String sql,Map parameters){
try{
Assert.hasText(sql,"sql语句不正确!");
//-- update-begin author xugj date:20160103 for: #851 controller 单元测试升级spring 版本 SimpleJdbcTemplate的功能 使用 JdbcTemplate 与 NamedParameterJdbcTemplate 实现
if(parameters!=null){
return namedJdbcTemplate.queryForObject(sql, parameters,Long.class);
}else{
return jdbcTemplate.queryForObject(sql,Long.class);
}
//-- update-end author xugj date:20160103 for: #851 controller 单元测试升级spring 版本 SimpleJdbcTemplate的功能 使用 JdbcTemplate 与 NamedParameterJdbcTemplate 实现
}catch (Exception e) {
return 0;
}
@ -189,11 +190,12 @@ public class SimpleJdbcTemplate {
int[] updateCounts = jdbcTemplate.batchUpdate(sql,batch);
return updateCounts;
}
//-- update-begin author xugj date:20160103 for: #851 controller 单元测试升级spring 版本 SimpleJdbcTemplate的功能 使用 JdbcTemplate 与 NamedParameterJdbcTemplate 实现
protected BeanPropertyRowMapper resultBeanMapper(Class clazz) {
return BeanPropertyRowMapper.newInstance(clazz);
}
//-- update-end author xugj date:20160103 for: #851 controller 单元测试升级spring 版本 SimpleJdbcTemplate的功能 使用 JdbcTemplate 与 NamedParameterJdbcTemplate 实现
protected BeanPropertySqlParameterSource paramBeanMapper(Object object) {
return new BeanPropertySqlParameterSource(object);

@ -18,7 +18,7 @@ public class TreeGrid implements java.io.Serializable {
private String state = "open";// 是否展开(open,closed)
private String order;//排序
private Map<String, Object> fieldMap; // 存储实体字段信息容器: key-字段名称value-字段值
//update-begin--Author:anchao Date:20140822 for[bugfree号]字段级权限(表单,列表)--------------------
private String functionType;// 其他参数
public String getFunctionType() {
@ -27,7 +27,7 @@ public class TreeGrid implements java.io.Serializable {
public void setFunctionType(String functionType) {
this.functionType = functionType;
}
//update-end--Author:anchao Date:20140822 for[bugfree号]字段级权限(表单,列表)--------------------
public String getOrder() {
return order;
}

@ -248,6 +248,7 @@ public interface CommonService {
public List<ComboTree> comTree(List<TSDepart> all, ComboTree comboTree);
// update-begin--Author:zhangguoming Date:20140819 for添加recuisive方法参数
/**
* JSON
*
@ -257,7 +258,7 @@ public interface CommonService {
* @return List<ComboTree>
*/
public List<ComboTree> ComboTree(List all, ComboTreeModel comboTreeModel, List in, boolean recursive);
// update-end--Author:zhangguoming Date:20140819 for添加recuisive方法参数
/**
*
@ -351,7 +352,8 @@ public interface CommonService {
int maxResult);
public <T> List<T> findByDetached(DetachedCriteria dc);
//update-begin--Author:luobaoli Date:20150708 for增加执行存储过程方法
/**
*
* @param executeSql
@ -359,5 +361,5 @@ public interface CommonService {
* @return
*/
public <T> List<T> executeProcedure(String procedureSql,Object... params);
//update-end--Author:luobaoli Date:20150708 for增加执行存储过程方法
}

@ -414,10 +414,11 @@ public class CommonServiceImpl implements CommonService {
return commonDao.getCountForJdbc(sql);
}
//update-begin--Author:JueYue Date:20140514 for调用方法错误--------------------
public Long getCountForJdbcParam(String sql, Object[] objs) {
return commonDao.getCountForJdbcParam(sql,objs);
}
//update-end--Author:JueYue Date:20140514 for调用方法错误--------------------
public <T> void batchSave(List<T> entitys) {
@ -444,11 +445,12 @@ public class CommonServiceImpl implements CommonService {
return this.commonDao.findByDetached(dc);
}
//update-begin--Author:luobaoli Date:20150708 for增加执行存储过程方法
/**
*
*/
public <T> List<T> executeProcedure(String procedureSql,Object... params) {
return this.commonDao.executeProcedure(procedureSql, params);
}
//update-end--Author:luobaoli Date:20150708 for增加执行存储过程方法
}

@ -56,7 +56,8 @@ public final class Globals {
*/
public static String Function_Order_ONE="ofun";//一级权限
public static String Function_Order_TWO="tfun";//二级权限
//update-begin--Author:anchao Date:20140822 for[bugfree号]字段级权限(表单,列表)--------------------
/**
*
*/
@ -87,7 +88,7 @@ public final class Globals {
* - sql
*/
public static String MENU_DATA_AUTHOR_RULE_SQL ="MENU_DATA_AUTHOR_RULE_SQL";
//update-end--Author:anchao Date:20140822 for[bugfree号]字段级权限(表单,列表)--------------------
/**
*
*/

@ -0,0 +1,86 @@
package org.jeecgframework.core.enums;
import org.jeecgframework.core.util.StringUtil;
/**
* ACE
*
* @author zhoujf
*/
public enum SysACEIconEnum {
default_icon("default","icon-list-alt", "默认"),
back_icon("back","icon-briefcase", "返回"),
pie_icon("pie","icon-bar-chart", "小饼状图"),
pictures_icon("pictures","icon-picture", "图片"),
pencil_icon("pencil","icon-edit", "笔"),
map_icon("map","icon-globe", "小地图"),
group_add_icon("group_add","icon-group", "组"),
calculator_icon("calculator","icon-desktop", "计算器"),
folder_icon("folder","icon-list","文件夹");
/**
*
*/
private String style;
/**
*
*/
private String themes;
/**
*
*/
private String desc;
private SysACEIconEnum(String style, String themes, String desc) {
this.style = style;
this.themes = themes;
this.desc = desc;
}
public String getStyle() {
return style;
}
public void setStyle(String style) {
this.style = style;
}
public String getThemes() {
return themes;
}
public void setThemes(String themes) {
this.themes = themes;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public static SysACEIconEnum toEnum(String style) {
if (StringUtil.isEmpty(style)) {
//默认风格
return default_icon;
}
for(SysACEIconEnum item : SysACEIconEnum.values()) {
if(item.getStyle().equals(style)) {
return item;
}
}
//默认风格
return default_icon;
}
public String toString() {
return "{style: " + style + ", themes: " + themes + ", desc: " + desc +"}";
}
}

@ -52,7 +52,9 @@ public class HqlGenerateUtil {
* @throws Exception
*/
public static void installHql(CriteriaQuery cq, Object searchObj) {
// --author龙金波 ------start---date20150519--------for统一函数处理sqlbuilder----------------------------------
installHql(cq,searchObj,null);
// --author龙金波 ------end---date20150519--------for统一函数处理sqlbuilder----------------------------------
}
@ -67,6 +69,7 @@ public class HqlGenerateUtil {
public static void installHql(CriteriaQuery cq, Object searchObj,
Map<String, String[]> parameterMap) {
installHqlJoinAlias(cq, searchObj, getRuleMap(), parameterMap, "");
// --author龙金波 ------start---date20150422--------for增加一个特殊sql参数处理----------------------------------
try{
String json= null;
if(StringUtil.isNotEmpty(cq.getDataGrid().getSqlbuilder())){
@ -86,6 +89,7 @@ public class HqlGenerateUtil {
}catch(Exception e){
e.printStackTrace();
}
// --author龙金波 ------start---date201504022--------for增加一个特殊sql参数处理----------------------------------
cq.add();
}
@ -137,21 +141,27 @@ public class HqlGenerateUtil {
// 根据类型分类处理
if (type.contains("class java.lang")
|| type.contains("class java.math")) {
// ------------update--Author:JueYue Date:2014-8-23
// for查询拼装的替换
if (value != null && !value.equals("")) {
HqlRuleEnum rule = PageValueConvertRuleEnum
.convert(value);
if(HqlRuleEnum.LIKE.equals(rule)&&(!(value+"").contains("*"))){
value="*%"+value+"%*";
//update-begin--Author:zzl Date:20151123 for加入配置属性可默认进行模糊查询
//update-begin--Author:jg_renjie Date:20150328 for#1003:【bug】单表模式年龄查询报错
if(HqlRuleEnum.LIKE.equals(rule)&&(!(value+"").contains("*"))&&!"class java.lang.Integer".contains(type)){
value="*%"+String.valueOf(value.toString())+"%*";
} else {
rule = HqlRuleEnum.EQ;
}
//update-end--Author:jg_renjie Date:20150328 for#1003:【bug】单表模式年龄查询报错
//update-end--Author:zzl Date:20151123 for加入配置属性可默认进行模糊查询
value = PageValueConvertRuleEnum.replaceValue(rule,
value);
ObjectParseUtil.addCriteria(cq, aliasName, rule, value);
} else if (parameterMap != null) {
//update-end--Author:ll3231@126.com Date:20151222 for支持所有类型数据
Object beginValue_=null , endValue_ =null;
if ("class java.lang.Integer".equals(type)) {
if(!"".equals(beginValue)&&null!=beginValue)
@ -187,7 +197,7 @@ public class HqlGenerateUtil {
ObjectParseUtil.addCriteria(cq, aliasName,
HqlRuleEnum.LE, endValue_);
}
// ------------update--Author:JueYue Date:2014-8-23
// for查询拼装的替换
} else if ("class java.util.Date".equals(type)) {
QueryTimeFormat format = origDescriptors[i].getReadMethod()
@ -226,7 +236,7 @@ public class HqlGenerateUtil {
if (isHaveRuleData(ruleMap, aliasName) ||( isNotEmpty(param)
&& itIsNotAllEmpty(param))) {
// 如果是实体类,创建别名,继续创建查询条件
// ------------update--Author:JueYue Date:20140521
// for用户反馈
cq.createAlias(aliasName,
aliasName.replaceAll("\\.", "_"));
@ -356,7 +366,10 @@ public class HqlGenerateUtil {
Map<String, TSDataRule> ruleMap = new HashMap<String, TSDataRule>();
List<TSDataRule> list =JeecgDataAutorUtils.loadDataSearchConditonSQL(); //(List<TSDataRule>) ContextHolderUtils
// .getRequest().getAttribute(Globals.MENU_DATA_AUTHOR_RULES);
if(list != null){
if(list != null&&list.size()>0){
if(list.get(0)==null){
return ruleMap;
}
for (TSDataRule rule : list) {
ruleMap.put(rule.getRuleColumn(), rule);
}
@ -395,6 +408,7 @@ public class HqlGenerateUtil {
}
// --author龙金波 ------end---date20150628--------forsql组装
// --author陈璞 ------begin---date20150612--------forsql组装
/**
* ,
* return: java.lang.Integer
@ -464,14 +478,14 @@ public class HqlGenerateUtil {
Object value = PropertyUtils.getSimpleProperty(searchObj, name);
// 根据类型分类处理
if (type.contains("class java.lang") || type.contains("class java.math")) {
// ------------update--Author:JueYue Date:2014-8-23
// for查询拼装的替换
if (value != null && !value.equals("")) {
HqlRuleEnum rule = PageValueConvertRuleEnum.convert(value);
value = PageValueConvertRuleEnum.replaceValue(rule, value);
ObjectParseUtil.addCriteria(cq, aliasName, rule, value);
}
// ------------update--Author:JueYue Date:2014-8-23
// for查询拼装的替换
} else if ("class java.util.Date".equals(type)) {
QueryTimeFormat format = origDescriptors[i].getReadMethod().getAnnotation(QueryTimeFormat.class);
@ -486,7 +500,7 @@ public class HqlGenerateUtil {
Object param = PropertyUtils.getSimpleProperty(searchObj, name);
if (isHaveRuleData(ruleMap, aliasName) || (isNotEmpty(param) && itIsNotAllEmpty(param))) {
// 如果是实体类,创建别名,继续创建查询条件
// ------------update--Author:JueYue Date:20140521
// for用户反馈
cq.createAlias(aliasName, aliasName.replaceAll("\\.", "_"));
// ------------end--Author:JueYue Date:20140521 for用户反馈

@ -35,6 +35,8 @@ public class SysContextSqlConvert {
return "";
String sqlValue="";
HqlRuleEnum ruleEnum=HqlRuleEnum.getByValue(dataRule.getRuleConditions());
//-----------------------------------------------------------------------
//#{sys_user_code}%
String ValueTemp = dataRule.getRuleValue();
String moshi = "";
@ -48,6 +50,7 @@ public class SysContextSqlConvert {
} else {
ValueTemp = ValueTemp;
}
//-----------------------------------------------------------------------
String tempValue = null;
//---author:jg_xugj----start-----date:20151226--------for#814 【数据权限】扩展支持写表达式通过session取值
tempValue = ResourceUtil.converRuleValue(ValueTemp);
@ -69,7 +72,7 @@ public class SysContextSqlConvert {
sqlValue+=" and "+dataRule.getRuleColumn()+" <'"+tempValue+"'";
break;
case LE:
sqlValue+=" and "+dataRule.getRuleColumn()+" =>'"+tempValue+"'";
sqlValue+=" and "+dataRule.getRuleColumn()+" <= '"+tempValue+"'";
break;
case EQ:
sqlValue+=" and "+dataRule.getRuleColumn()+" ='"+tempValue+"'";

@ -50,11 +50,11 @@ public class PageValueConvertRuleEnum {
if(rule == null && val.startsWith(HqlParseEnum.SUFFIX_NOT_EQUAL.getValue())){
rule = HqlRuleEnum.NE;
}
//update-begin--Author:zzl Date:20151123 for加入配置属性可默认进行模糊查询
if(rule==null&&ResourceUtil.fuzzySearch){
rule = HqlRuleEnum.LIKE;
}
//update-end--Author:zzl Date:20151123 for加入配置属性可默认进行模糊查询
return rule != null ? rule : HqlRuleEnum.EQ;
}

@ -23,7 +23,8 @@ public class OpenOfficePDFConverter implements PDFConverter {
private static int[] port = { 8100 };
public void convert2PDF(String inputFile, String pdfFile, String extend) {
//update-begin--Author:zhoujf Date:20150610 forTXT文件预览出现乱码的错误
// if (extend.equals("txt")) {
//
// String odtFile = FileUtils.getFilePrefix(inputFile) + ".odt";
@ -41,7 +42,7 @@ public class OpenOfficePDFConverter implements PDFConverter {
// }
//
// }
//update-begin--Author:zhoujf Date:20150610 forTXT文件预览出现乱码的错误
startService();
//pdfFile = pdfFile.replaceAll(" ", "").replaceAll(" ", "");

@ -25,10 +25,10 @@ public class SWFToolsSWFConverter implements SWFConverter {
return;
}
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";
// ---update-for--文件预览无效----- scott@2013/05/22 ADD END
try {
// 开始转换文档
Process process = Runtime.getRuntime().exec(command);

@ -95,7 +95,7 @@ public class AuthInterceptor implements HandlerInterceptor {
}
//String functionId=oConvertUtils.getString(request.getParameter("clickFunctionId"));
String functionId="";
//update-begin--Author:JueYue Date:20140831 foronlinecodeing 的URL判断--------------------
//onlinecoding的访问地址有规律可循数据权限链接篡改
if(requestPath.equals("cgAutoListController.do?datagrid")) {
requestPath += "&configId=" + request.getParameter("configId");
@ -106,7 +106,8 @@ public class AuthInterceptor implements HandlerInterceptor {
if(requestPath.equals("cgFormBuildController.do?ftlForm")) {
requestPath += "&tableName=" + request.getParameter("tableName");
}
//update-begin--Author:许国杰 Date:20151219 for#813 【online表单】扩展出三个请求独立的添加、查看、编辑请求原来的保留
if(requestPath.equals("cgFormBuildController.do?goAddFtlForm")) {
requestPath += "&tableName=" + request.getParameter("tableName");
}
@ -116,10 +117,12 @@ public class AuthInterceptor implements HandlerInterceptor {
if(requestPath.equals("cgFormBuildController.do?goDatilFtlForm")) {
requestPath += "&tableName=" + request.getParameter("tableName");
}
//update-end--Author:许国杰 Date:20151219 for#813 【online表单】扩展出三个请求独立的添加、查看、编辑请求原来的保留
//update-end--Author:JueYue Date:20140831 foronlinecodeing 的URL判断--------------------
//这个地方用全匹配?应该是模糊查询吧
//TODO
//update-begin--Author:张忠亮 Date:20150717 for解决rest风格下 权限失效问题
String uri= request.getRequestURI().substring(request.getContextPath().length() + 1);
String realRequestPath = null;
if(uri.endsWith(".do")||uri.endsWith(".action")){
@ -128,7 +131,7 @@ public class AuthInterceptor implements HandlerInterceptor {
realRequestPath=uri;
}
List<TSFunction> functions = systemService.findByProperty(TSFunction.class, "functionUrl", realRequestPath);
//update-end--Author:张忠亮 Date:20150717 for解决rest风格下 权限失效问题
if (functions.size()>0){
functionId = functions.get(0).getId();
}
@ -140,7 +143,7 @@ public class AuthInterceptor implements HandlerInterceptor {
request.setAttribute(Globals.OPERATIONCODES, operationCodes);
}
if(!oConvertUtils.isEmpty(functionId)){
//update-begin--Author:anchao Date:20140822 for[bugfree号]字段级权限(表单,列表)--------------------
//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);
@ -208,9 +211,9 @@ public class AuthInterceptor implements HandlerInterceptor {
boolean bMgrUrl = false;
if (functionList == null) {
// functionList = systemService.loadAll(TSFunction.class);
// update-start--Author:zhoujf Date:20150521 for只查询菜单类型的权限
functionList = systemService.findHql("from TSFunction where functionType = ? ", (short)0);
// update---end--Author:zhoujf Date:20150521 for只查询菜单类型的权限
}
for (TSFunction function : functionList) {
if (function.getFunctionUrl() != null && function.getFunctionUrl().startsWith(requestPath)) {
@ -234,15 +237,16 @@ public class AuthInterceptor implements HandlerInterceptor {
"ru.userid='"+userid+"' AND f.functionurl like '"+requestPath+"%'";
List list = this.systemService.findListbySql(sql);
if(list.size()==0){
// update-start--Author:zhangguoming Date:20140821 for判断当前用户组织机构下角色所拥有的权限
// update-start--Author:zhangguoming Date:20140825 for获取当前用户登录时选择的组织机构代码
String orgId = currLoginUser.getCurrentDepart().getId();
// update-end--Author:zhangguoming Date:20140825 for获取当前用户登录时选择的组织机构代码
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 " +
"AND ro.org_id='" +orgId+ "' AND f.functionurl like '"+requestPath+"%'";
List functionOfOrgList = this.systemService.findListbySql(functionOfOrgSql);
return functionOfOrgList.size() > 0;
// update-end--Author:zhangguoming Date:20140821 for判断当前用户组织机构下角色所拥有的权限
}else{
return true;
}

@ -27,14 +27,14 @@ public class DataBaseCronTriggerBean extends CronTriggerBean{
(TSTimeTaskEntity.class,"taskId",this.getName());
if(task!=null&&task.getIsEffect().equals("1")
&&!task.getCronExpression().equals(this.getCronExpression())){
//-- update-begin author xugj date:20160103 for: #851 controller 单元测试升级spring 版本
try {
this.setCronExpression(task.getCronExpression());
} catch (ParseException e) {
// TODO 异常必须被处理
e.printStackTrace();
}
//-- update-begin author xugj date:20160103 for: #851 controller 单元测试升级spring 版本
DynamicTask.updateSpringMvcTaskXML(this,task.getCronExpression());
}
}

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

@ -235,6 +235,46 @@ public final class JSONHelper {
return data;
}
/**
* jsonMap <li>
* json{"name":"admin","retries":"3fff","testname":"ddd","testretries":"fffffffff"}
*/
public static Map<String, Object> json2Map(String jsonStr) {
Map<String, Object> data = new HashMap<String, Object>();
// 将json字符串转换成jsonObject
JSONObject jsonObject = JSONObject.fromObject(jsonStr);
Iterator it = jsonObject.keys();
// 遍历jsonObject数据添加到Map对象
while (it.hasNext())
{
String key = String.valueOf(it.next());
Object value = jsonObject.get(key);
data.put(key, value);
}
return data;
}
/**
* jsonMap <li>
* json{"name":"admin","retries":"3fff","testname":"ddd","testretries":"fffffffff"}
*/
public static Map<String, List<Map<String, Object>>> json2MapList(String jsonStr) {
Map<String, List<Map<String, Object>>> data = new HashMap<String, List<Map<String, Object>>>();
// 将json字符串转换成jsonObject
JSONObject jsonObject = JSONObject.fromObject(jsonStr);
Iterator it = jsonObject.keys();
// 遍历jsonObject数据添加到Map对象
while (it.hasNext())
{
String key = String.valueOf(it.next());
Object value = jsonObject.get(key);
List<Map<String, Object>> list = toList(value);
data.put(key, list);
}
return data;
}
/***
* List<Map<String,Object>>

@ -6,6 +6,7 @@ import java.util.Map;
import java.util.Set;
import org.apache.commons.lang.StringUtils;
import org.jeecgframework.core.enums.SysACEIconEnum;
import org.jeecgframework.web.system.pojo.base.TSFunction;
import org.jeecgframework.web.system.pojo.base.TSIcon;
import org.jeecgframework.web.system.service.MutiLangServiceI;
@ -263,6 +264,7 @@ public class ListtoMenu {
return menuString.toString();
}
// update-start--Author:zhangguoming Date:20140622 for左侧树调整加大宽度、更换节点图标、修改选中颜色
/**
* EASYUI
@ -311,7 +313,7 @@ public class ListtoMenu {
return menuString.toString();
}
// update-end--Author:zhangguoming Date:20140622 for左侧树调整加大宽度、更换节点图标、修改选中颜色
/**
* -----
@ -416,19 +418,19 @@ public class ListtoMenu {
menuString.append(getMutiLang(function.getFunctionName()));
menuString.append("\',\'");
menuString.append(function.getFunctionUrl());
//update-begin ---author:scott---for:外部链接在系统中配置无效----date:20150325
//如果是外部链接则不加菜单ID
if(function.getFunctionUrl().indexOf("http:")==-1){
//update-begin--Author:jg_renjie Date:20150715 for解决rest风格时传入id错误的问题
if(function.getFunctionUrl().indexOf("?") == -1){
menuString.append("?clickFunctionId=");
} else {
menuString.append("&clickFunctionId=");
}
//update-end--Author:jg_renjie Date:20150715 for解决rest风格时传入id错误的问题
menuString.append(function.getId());
}
//update-end ---author:scott---for:外部链接在系统中配置无效----date:20150325
menuString.append("\',\'");
menuString.append(icon);
menuString.append("\')\" title=\"");
@ -515,7 +517,9 @@ public class ListtoMenu {
menuString.append(" </ul> ");
return menuString.toString();
}
//update-start--Author:gaofeng Date:2014-02-14新增webos头部菜单导航,多级菜单
/**
* webos
* @param pFunctions
@ -644,10 +648,10 @@ public class ListtoMenu {
dataString.append("'"+function.getId()+"':{ ");
dataString.append("appid:'"+function.getId()+"',");
dataString.append("url:'"+function.getFunctionUrl()+"',");
// update-begin--Author:zhangguoming Date:20140509 for添加云桌面图标
// dataString.append(getIconandName(function.getFunctionName()));
dataString.append(getIconAndNameForDesk(function));
// update-end--Author:zhangguoming Date:20140509 for添加云桌面图标
dataString.append("asc :"+function.getFunctionOrder());
dataString.append(" },");
}
@ -657,6 +661,7 @@ public class ListtoMenu {
return data;
}
// update-begin--Author:zhangguoming Date:20140512 for添加云桌面图标管理
private static String getIconAndNameForDesk(TSFunction function) {
StringBuffer dataString = new StringBuffer();
@ -736,7 +741,8 @@ public class ListtoMenu {
String lang_context = mutiLangService.getLang(functionName);
return lang_context;
}
// update-end--Author:zhangguoming Date:20140512 for添加云桌面图标管理
//update-start--Author:gaofeng Date:2014-02-14新增Webos头部菜单导航多级菜单
public static String getDIYMultistageTree(Map<Integer, List<TSFunction>> map) {
if(map==null||map.size()==0||!map.containsKey(0)){return "不具有任何权限,\n请找管理员分配权限";}
@ -798,7 +804,8 @@ public class ListtoMenu {
}
return menuString.toString();
}
//update-start--Author:龙金波 Date:2015-03-16新增ACE左侧菜单导航多级
public static String getAceMultistageTree(Map<Integer, List<TSFunction>> map) {
if(map==null||map.size()==0||!map.containsKey(0)){return "不具有任何权限,\n请找管理员分配权限";}
StringBuffer menuString = new StringBuffer();
@ -806,8 +813,10 @@ public class ListtoMenu {
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()));
menuString.append("<a href=\"#\" class=\"dropdown-toggle\" ><i class=\""+SysACEIconEnum.toEnum(function.getTSIcon().getIconClas()).getThemes()+"\"></i>");
menuString.append("<span class=\"menu-text\">");
menuString.append(getMutiLang(function.getFunctionName()));
menuString.append("</span>");
/* int submenusize = function.getSubFunctionSize();
if (submenusize == 0) {
menuString.append("</a></li>");
@ -821,10 +830,10 @@ public class ListtoMenu {
}*/
if(!function.hasSubFunction(map)){
menuString.append("</a></li>");
menuString.append(getSubMenu(function,1,map));
//menuString.append(getSubMenu(function,1,map));
}else{
menuString.append("<b class=\"arrow\"></b><ul class=\"submenu\" >");
menuString.append(getSubMenu(function,1,map));
menuString.append("<b class=\"arrow icon-angle-down\"></b></a><ul class=\"submenu\" >");
menuString.append(getACESubMenu(function,1,map));
menuString.append("</ul></li>");
}
curIndex++;
@ -832,27 +841,13 @@ public class ListtoMenu {
return menuString.toString();
}
private static String getSubMenu(TSFunction parent,int level,Map<Integer, List<TSFunction>> map){
private static String getACESubMenu(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(getLeafOfACETree(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>");
}
}
}
@ -866,9 +861,7 @@ public class ListtoMenu {
}
//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("<li> <a href=\"javascript:addTabs({id:\'").append(function.getId());
menuString.append("\',title:\'").append(name).append("\',close: true,url:\'");
menuString.append(function.getFunctionUrl());
menuString.append("&clickFunctionId=");
@ -880,6 +873,7 @@ public class ListtoMenu {
menuString.append("\" url=\"");
menuString.append(function.getFunctionUrl());
menuString.append("\" >");
menuString.append("<i class=\"icon-double-angle-right\"></i>");
menuString.append(name);
menuString.append("</a></li>");
return menuString.toString();

@ -24,9 +24,9 @@ public class ResourceUtil {
public static final String LOCAL_CLINET_USER = "LOCAL_CLINET_USER";
private static final ResourceBundle bundle = java.util.ResourceBundle.getBundle("sysConfig");
//update-begin--Author:zzl Date:20151123 for加入配置属性可默认进行模糊查询
public final static boolean fuzzySearch= ResourceUtil.isFuzzySearch();
//update-end--Author:zzl Date:20151123 for加入配置属性可默认进行模糊查询
/**
* session
@ -40,7 +40,7 @@ public class ResourceUtil {
HttpSession session = ContextHolderUtils.getSession();
if(ClientManager.getInstance().getClient(session.getId())!=null){
return ClientManager.getInstance().getClient(session.getId()).getUser();
//update-begin--update---author:scott-----------date:20151218-------for:解决分布式登录问题-------
}else{
TSUser u = (TSUser) session.getAttribute(ResourceUtil.LOCAL_CLINET_USER);
Client client = new Client();
@ -49,7 +49,7 @@ public class ResourceUtil {
client.setUser(u);
ClientManager.getInstance().addClinet(session.getId(), client);
}
//update-end--update---author:scott-----------date:20151218-------for:解决分布式登录问题-------
return null;
}
@Deprecated
@ -160,6 +160,7 @@ public class ResourceUtil {
return DBTypeUtil.getDBType().toLowerCase();
}
// update-begin--Author:zhangguoming Date:20140226 for添加验证码
/**
*
*
@ -177,7 +178,7 @@ public class ResourceUtil {
public static String getRandCodeType() {
return bundle.getString("randCodeType");
}
// update-end--Author:zhangguoming Date:20140226 for添加验证码
/**
*
@ -206,7 +207,9 @@ public class ResourceUtil {
} else {
key = key;
}
//----------------------------------------------------------------
//update-begin--Author:zhangdaihao Date:20140913 for获取系统上下文变量
//替换为系统的登录用户账号
// if (key.equals(DataBaseConstant.CREATE_BY)
@ -228,6 +231,9 @@ public class ResourceUtil {
) {
returnValue = getSessionUserName().getRealName();
}
//update-end--Author:zhangdaihao Date:20140913 for获取系统上下文变量
//----------------------------------------------------------------
//替换为系统登录用户的公司编码
if (key.equals(DataBaseConstant.SYS_COMPANY_CODE)|| key.equals(DataBaseConstant.SYS_COMPANY_CODE_TABLE)) {
returnValue = getSessionUserName().getCurrentDepart().getOrgCode()
@ -298,9 +304,9 @@ public class ResourceUtil {
org.jeecgframework.core.util.LogUtil.info(getPorjectPath());
org.jeecgframework.core.util.LogUtil.info(getSysPath());
}
//update-begin--Author:zzl Date:20151123 for加入配置属性可默认进行模糊查询
public static boolean isFuzzySearch(){
return "1".equals(bundle.getString("fuzzySearch"));
}
//update-end--Author:zzl Date:20151123 for加入配置属性可默认进行模糊查询
}

@ -11,8 +11,9 @@ public class YouBianCodeUtil {
// 数字位数(默认生成3位的数字)
//----update-begin--------autor:张肖江----------date:20150120--- for:postcode生成方式一位字符加四位数字----
private static final int numLength = 2;//代表数字位数
//----update-end --------autor:张肖江----------date:20150120--- for:postcode生成方式一位字符加四位数字----
public static final int zhanweiLength = 1+numLength;
/**
@ -77,9 +78,10 @@ public class YouBianCodeUtil {
public static synchronized String getSubYouBianCode(String parentCode,String localCode) {
if(localCode!=null && localCode!=""){
//----update-begin--------autor:张肖江----------date:20150120--- for:解决postcode生成bug----
// return parentCode + getNextYouBianCode(localCode);
return getNextYouBianCode(localCode);
//----update-end----------autor:张肖江----------date:20150120--- for:解决postcode生成bug----
}else{
parentCode = parentCode + "A"+ getNextStrNum(0);
}

@ -57,7 +57,7 @@ public class AuthFilterTag extends TagSupport{
protected void getAuthFilter(StringBuilder out) {
out.append("<script type=\"text/javascript\">");
out.append("$(document).ready(function(){");
//update-begin--Author:anchao Date:20140822 for[bugfree号]字段级权限(表单,列表)--------------------
if(ResourceUtil.getSessionUserName().getUserName().equals("admin")|| !Globals.BUTTON_AUTHORITY_CHECK){
}else{
Set<String> operationCodes = (Set<String>) super.pageContext.getRequest().getAttribute(Globals.OPERATIONCODES);
@ -82,7 +82,7 @@ public class AuthFilterTag extends TagSupport{
}
}
//update-end--Author:anchao Date:20140822 for[bugfree号]字段级权限(表单,列表)--------------------
out.append("});");
out.append("</script>");
}

@ -22,7 +22,7 @@ import org.jeecgframework.core.util.oConvertUtils;
public class BaseTag extends TagSupport {
private static final long serialVersionUID = 1L;
protected String type = "default";// 加载类型
// update-start--Author:longjb Date:20150317 for修改增加easyui css主题目录切换的属性默认default兼容前版本
protected String cssTheme ;
public String getCssTheme() {
@ -33,7 +33,7 @@ public class BaseTag extends TagSupport {
public void setCssTheme(String cssTheme) {
this.cssTheme = cssTheme;
}
// update-end--Author:longjb Date:20150317 for修改增加easyui css主题目录切换的属性
public void setType(String type) {
this.type = type;
@ -62,7 +62,7 @@ public class BaseTag extends TagSupport {
}
}
//}
// update-start--Author:longjb Date:20150408 for手动设置指定主题属性优先
if(cssTheme==null||"".equals(cssTheme)){
cssTheme="default";
}*/
@ -78,17 +78,18 @@ public class BaseTag extends TagSupport {
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);
sb.append(langjs);
// update-begin--Author:zhangguoming Date:20140521 for云桌面图标拖拽、用户自定义桌面
if (oConvertUtils.isIn("jquery-webos", types)) {
sb.append("<script type=\"text/javascript\" src=\"plug-in/sliding/js/jquery-1.7.1.min.js\"></script>");
} else if (oConvertUtils.isIn("jquery", types)) {
sb.append("<script type=\"text/javascript\" src=\"plug-in/jquery/jquery-1.8.3.js\"></script>");
// update-begin--Author:longjb1 Date:20150515 for增加jquery cookie缓存和localstorage插件
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>");
// update-end--Author:longjb1 Date:20150515 for增加jquery cookie缓存和localstorage插件
}
// update-end--Author:zhangguoming Date:20140521 for云桌面图标拖拽、用户自定义桌面
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/tools/ckeditorTool.js\"></script>");
@ -99,11 +100,11 @@ public class BaseTag extends TagSupport {
}
if (oConvertUtils.isIn("easyui", types)) {
sb.append("<script type=\"text/javascript\" src=\"plug-in/tools/dataformat.js\"></script>");
// update-start--Author:longjb Date:20150317 for修改增加easyui css主题目录切换的属性
// 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.getEasyUiMainTheme(sysThemesEnum));
// update-end--Author:longjb Date:20150317 for修改增加easyui css主题目录切换的属性
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\">");
@ -171,10 +172,10 @@ public class BaseTag extends TagSupport {
}
if (oConvertUtils.isIn("tools", types)) {
// update-start--Author:longjb Date:20150317 for修改增加common css 重新定义了ace样式下的inputtxt
// 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));
// update-end--Author:longjb Date:20150317 for修改增加common css 重新定义了ace样式下的inputtxt
// 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.getBootstrapTabTheme(sysThemesEnum));

@ -1,7 +1,6 @@
package org.jeecgframework.tag.core.easyui;
import java.io.IOException;
import java.util.UUID;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
@ -10,8 +9,6 @@ import javax.servlet.jsp.tagext.TagSupport;
import org.jeecgframework.core.util.MutiLangUtil;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.core.util.UUIDGenerator;
import org.jeecgframework.web.system.service.MutiLangServiceI;
import org.springframework.beans.factory.annotation.Autowired;
/**
@ -168,7 +165,11 @@ public class ChooseTag extends TagSupport {
private void clearAll(StringBuffer sb,String methodname) {
String[] textnames=null;
String[] inputTextnames=null;
textnames = textname.split(",");
//update-begin--Author: jg_huangxg Date: 20160330 for 防止空指针
if (!StringUtil.isEmpty(this.textname)) {
textnames = textname.split(",");
}
//update-end--Author: jg_huangxg Date: 20160330 for 防止空指针
if(StringUtil.isNotEmpty(inputTextname)){
inputTextnames = inputTextname.split(",");
}else{

@ -26,9 +26,9 @@ public class DataGridColumnTag extends TagSupport {
protected boolean checkbox;
protected String formatter;
protected String formatterjs;//自定义函数名称(调用页面自定义js方法 参数为(value,row,index)
// update-start-Author:zhangguoming Date:20140921 forTASK #458 列表hidden=false才是隐藏好像有点问题
protected boolean hidden=false;
// update-end-Author:zhangguoming Date:20140921 forTASK #458 列表hidden=false才是隐藏好像有点问题
protected String replace;
protected String treefield;
protected boolean image;

@ -79,7 +79,8 @@ public class DataGridTag extends TagSupport {
private boolean autoLoadData=true; // 列表是否自动加载数据
//private boolean frozenColumn=false; // 是否是冰冻列 默认不是
private String langArg;
// update-start--Author:zhoujf Date:20150608 for修改增加easyui css主题目录切换的属性默认default兼容前版本
protected String cssTheme ;
public String getCssTheme() {
@ -88,7 +89,7 @@ public class DataGridTag extends TagSupport {
public void setCssTheme(String cssTheme) {
this.cssTheme = cssTheme;
}
// update-end--Author:zhoujf Date:20150608 for修改增加easyui css主题目录切换的属性
private boolean queryBuilder = false;// 高级查询器
public boolean isQueryBuilder() {
@ -313,7 +314,7 @@ public class DataGridTag extends TagSupport {
dataGridColumn.setExtendParams(extendParams);
dataGridColumn.setEditor(editor);
columnList.add(dataGridColumn);
//update-begin--Author:anchao Date:20140826 for[bugfree号]数据列权限控制--------------------
Set<String> operationCodes = (Set<String>) super.pageContext.getRequest().getAttribute(Globals.OPERATIONCODES);
if (null!=operationCodes) {
for (String MyoperationCode : operationCodes) {
@ -327,7 +328,7 @@ public class DataGridTag extends TagSupport {
}
}
}
//update-end--Author:anchao Date:20140826 for[bugfree号]数据列权限控制--------------------
@ -525,9 +526,9 @@ public class DataGridTag extends TagSupport {
sb.append(",\"mData\":\"" + column.getField() + "\"");
sb.append(",\"sWidth\":\"" + colwidth + "\"");
sb.append(",\"bSortable\":" + column.isSortable() + "");
// update-start-Author:zhangguoming Date:20140921 forTASK #458 列表hidden=false才是隐藏好像有点问题
sb.append(",\"bVisible\":" + !column.isHidden() + "");
// update-end-Author:zhangguoming Date:20140921 forTASK #458 列表hidden=false才是隐藏好像有点问题
sb.append(",\"bSearchable\":" + column.isQuery() + "");
}
sb.append("}");
@ -642,10 +643,12 @@ public class DataGridTag extends TagSupport {
sb.append("}");
sb.append("});");
this.setPager(sb, grid);
//update-begin longjb 20150515 for:新增表头恢复函数调用
//update-begin SCOTT 20150525 for: 特殊情况下,导致页面错乱,做下异常处理
sb.append("try{restoreheader();}catch(ex){}");
sb.append("});");
//update-end SCOTT 20150525 for: 特殊情况下,导致页面错乱,做下异常处理
//update-begin longjb 20150515 for:新增表头恢复函数调用
sb.append("function reloadTable(){");
sb.append("try{");
sb.append(" $(\'#\'+gridname).datagrid(\'reload\');" );
@ -659,7 +662,7 @@ public class DataGridTag extends TagSupport {
sb.append("function getSelectRows(){");
sb.append(" return $(\'#"+name+"\').datagrid('getChecked');");
sb.append("}");
//update-begin longjb 20150515 for:新增表头定义存储和恢复函数
sb.append(" function saveHeader(){");
sb.append(" var columnsFields =null;var easyextends=false;try{columnsFields = $('#"+name+"').datagrid('getColumns');easyextends=true;");
sb.append("}catch(e){columnsFields =$('#"+name+"').datagrid('getColumnFields');}");
@ -694,7 +697,7 @@ public class DataGridTag extends TagSupport {
sb.append( "}");
sb.append( "}");
sb.append( "}");
//update-end longjb 201515 for:新增表头定义存储和恢复函数
if (columnList.size() > 0) {
sb.append("function " + name + "search(){");
//update by jg_renjie at 2016/1/11 for:TASK #823 增加form实现Form表单验证
@ -708,19 +711,21 @@ public class DataGridTag extends TagSupport {
sb.append("function dosearch(params){");
sb.append("var jsonparams=$.parseJSON(params);");
sb.append("$(\'#" + name + "\')." + grid + "({url:'" + actionUrl + "&field=" + searchFields + "',queryParams:jsonparams});" + "}");
//update-begin chenxu 20140423 for:修改在弹出界面中使用single查询模式时查询条件不起作用
//searchbox框执行方法
searchboxFun(sb,grid);
//update-end chenxu 20140423 for:修改在弹出界面中使用single查询模式时查询条件不起作用
//生成重置按钮功能js
//update-begin Robin 20140426 for:回车事件
//回车事件
sb.append("function EnterPress(e){");
sb.append("var e = e || window.event;");
sb.append("if(e.keyCode == 13){ ");
sb.append(name+"search();");
sb.append("}}");
//update-begin Robin 20140426 for:回车事件
sb.append("function searchReset(name){");
sb.append(" $(\"#\"+name+\"tb\").find(\":input\").val(\"\");");
@ -813,7 +818,8 @@ public class DataGridTag extends TagSupport {
}else if(col.isAutocomplete()){
sb.append(getAutoSpan(col.getField().replaceAll("_","\\."),extendAttribute(col.getExtend())));
}else{
//update-begin Robin 20140426 for:回车事件 兼容IE,FF
// update-start--Author:longjb Date:20150323 for增加class属性便于样式控制
sb.append("<input onkeypress=\"EnterPress(event)\" onkeydown=\"EnterPress()\" type=\"text\" name=\""+col.getField().replaceAll("_","\\.")+"\" "+extendAttribute(col.getExtend())+" class=\"inuptxt\" style=\"width: 100px\" />");
}
@ -821,7 +827,7 @@ public class DataGridTag extends TagSupport {
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("<input type=\"text\" name=\""+col.getField()+"_end\" style=\"width: 94px\" "+extendAttribute(col.getExtend())+" class=\"inuptxt\"/>");
// update-end--Author:longjb Date:20150323 for增加class属性便于样式控制
}
sb.append("</span>");
}
@ -947,7 +953,7 @@ public class DataGridTag extends TagSupport {
Gson gson = new Gson();
Map<String, String> mp = gson.fromJson(field, Map.class);
for(Map.Entry<String, String> entry: mp.entrySet()) {
//update-authorscott for:jeecg-bpm修改- date:20151557
sb.append(entry.getKey()+"=" + gson.toJson(entry.getValue()) + "\"");
}
}
@ -1043,6 +1049,7 @@ public class DataGridTag extends TagSupport {
}
}
//update-start--Author: jg_huangxg Date:20151204 for增加styke属性便于样式控制
StringBuffer style = new StringBuffer();
if (!StringUtil.isEmpty(dataGridUrl.getUrlStyle())) {
style.append(" style=\'");
@ -1067,7 +1074,7 @@ public class DataGridTag extends TagSupport {
if (OptTypeDirection.Deff.equals(dataGridUrl.getType())) {
sb.append("href+=\"[<a href=\'" + url + "' title=\'"+dataGridUrl.getTitle()+"\'" + style.toString() + ">\";");
}
//update-end--Author: jg_huangxg Date:20151204 for增加styke属性便于样式控制
if (OptTypeDirection.OpenTab.equals(dataGridUrl.getType())) {
sb.append("href+=\"[<a href=\'#\' onclick=addOneTab('" + dataGridUrl.getTitle() + "','" + url + "')>\";");
}
@ -1149,7 +1156,7 @@ public class DataGridTag extends TagSupport {
int i = 0;
for (DataGridColumn column : columnList) {
i++;
if((column.isFrozenColumn()&&frozen==0)||(!column.isFrozenColumn()&&frozen==1)){
if((column.isFrozenColumn()&&frozen==0)||(!column.isFrozenColumn()&&frozen==1)){
String field;
if (treegrid) {
field = column.getTreefield();
@ -1167,12 +1174,12 @@ public class DataGridTag extends TagSupport {
sb.append(","+column.getExtendParams().substring(0,
column.getExtendParams().length()-1));
}
// update-start-Author:zhangguoming Date:20140921 forTASK #458 列表hidden=false才是隐藏好像有点问题
// 隐藏字段
if (column.isHidden()) {
sb.append(",hidden:true");
}
// update-end-Author:zhangguoming Date:20140921 forTASK #458 列表hidden=false才是隐藏好像有点问题
if (!treegrid) {
// 字段排序
if ((column.isSortable()) && (field.indexOf("_") <= 0 && field != "opt")) {
@ -1209,6 +1216,10 @@ public class DataGridTag extends TagSupport {
// sb.append("return \"");
this.getOptUrl(sb);
sb.append("}");
}else if(column.getFormatter()!=null)
{
sb.append(",formatter:function(value,rec,index){");
sb.append(" return new Date().format('"+column.getFormatter()+"',value);}");
}else if (columnValueList.size() > 0 && !column.getField().equals("opt")) {// 值替換
String testString = "";
for (ColumnValue columnValue : columnValueList) {
@ -1237,10 +1248,6 @@ public class DataGridTag extends TagSupport {
sb.append("}");
}
}
}else if(column.getFormatter()!=null)
{
sb.append(",formatter:function(value,rec,index){");
sb.append(" return new Date().format('"+column.getFormatter()+"',value);}");
}
}
// 背景设置
@ -1316,7 +1323,7 @@ public class DataGridTag extends TagSupport {
}
public String getNoAuthOperButton(){
//update-begin--Author:anchao Date:20140822 for[bugfree号]字段级权限(表单,列表)--------------------
StringBuffer sb = new StringBuffer();
if(ResourceUtil.getSessionUserName().getUserName().equals("admin")|| !Globals.BUTTON_AUTHORITY_CHECK){
}else{
@ -1342,7 +1349,7 @@ public class DataGridTag extends TagSupport {
}
}
//update-end--Author:anchao Date:20140822 for[bugfree号]字段级权限(表单,列表)--------------------
//org.jeecgframework.core.util.LogUtil.info("----getNoAuthOperButton-------"+sb.toString());
return sb.toString();
}
@ -1580,7 +1587,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 getSelectRows(){");
sb.append(" return $(\'#"+name+"\').datagrid('getChecked');}");
//update-begin longjb 20150515 for:新增表头定义存储和恢复函数
sb.append(" function saveHeader(){");
sb.append(" var columnsFields =null;var easyextends=false;try{columnsFields = $('#"+name+"').datagrid('getColumns');easyextends=true;");
sb.append("}catch(e){columnsFields =$('#"+name+"').datagrid('getColumnFields');}");
@ -1615,7 +1622,7 @@ public class DataGridTag extends TagSupport {
sb.append( "}");
sb.append( "}");
sb.append( "}");
//update-end longjb 201515 for:新增表头定义存储和恢复函数
if (columnList.size() > 0) {
sb.append("function " + name + "search(){");
sb.append("var queryParams=$(\'#" + name + "\').datagrid('options').queryParams;");
@ -1634,7 +1641,7 @@ public class DataGridTag extends TagSupport {
sb.append("if(e.keyCode == 13){ ");
sb.append(name+"search();");
sb.append("}}");
//update-begin Robin 20140426 for:回车事件
sb.append("function searchReset(name){");
sb.append(" $(\"#"+name+"tb\").find(\":input\").val(\"\");");

@ -86,6 +86,22 @@ public class DepartSelectTag extends TagSupport {
this.windowHeight = windowHeight;
}
private String departId;
private String departName;
public String getDepartId() {
return departId;
}
public void setDepartId(String departId) {
this.departId = departId;
}
public String getDepartName() {
return departName;
}
public void setDepartName(String departName) {
this.departName = departName;
}
public int doStartTag() throws JspTagException {
return EVAL_PAGE;
}
@ -130,8 +146,16 @@ public class DepartSelectTag extends TagSupport {
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("<input readonly=\"true\" type=\"text\" id=\"" + selectedNamesInputId + "\" name=\"" + selectedNamesInputId + "\" style=\"width: 300px\" onclick=\"openDepartmentSelect()\" ");
if(StringUtils.isNotBlank(departId)){
sb.append(" value=\""+departName+"\"");
}
sb.append(" />");
sb.append("<input id=\"" + selectedIdsInputId + "\" name=\"" + selectedIdsInputId + "\" type=\"hidden\" ");
if(StringUtils.isNotBlank(departName)){
sb.append(" value=\""+departId+"\"");
}
sb.append(">");
sb.append("</span>");
String commonDepartmentList = MutiLangUtil.getMutiLangInstance().getLang("common.department.list");
@ -140,19 +164,31 @@ public class DepartSelectTag extends TagSupport {
sb.append("<script type=\"text/javascript\">");
sb.append("function openDepartmentSelect() {");
sb.append(" $.dialog.setting.zIndex = 9999; ");
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(" ]}).zindex();");
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);");
//update--start--by:jg_renjie--at:20160318 for:#942 【组件封装】组织机构弹出模式,目前是列表,得改造成树方式
//sb.append(" var departname = iframe.getdepartListSelections('text');");
sb.append(" var treeObj = iframe.$.fn.zTree.getZTreeObj(\"departSelect\");");
sb.append(" var nodes = treeObj.getCheckedNodes(true);");
sb.append(" if(nodes.length>0){");
sb.append(" var ids='',names='';");
sb.append("for(i=0;i<nodes.length;i++){");
sb.append(" var node = nodes[i];");
sb.append(" ids += node.id+',';");
sb.append(" names += node.name+',';");
sb.append("}");
sb.append(" $('#" + selectedNamesInputId + "').val(names);");
sb.append(" $('#" + selectedNamesInputId + "').blur();");
sb.append(" $('#" + selectedIdsInputId + "').val(ids);");
sb.append("}");
//update--end--by:jg_renjie--at:20160318 for:#942 【组件封装】组织机构弹出模式,目前是列表,得改造成树方式
sb.append("}");
sb.append("</script>");
return sb;

@ -45,7 +45,8 @@ public class DictSelectTag extends TagSupport {
private String dictField;// 自定义字典表的匹配字段-字典的编码值
private String dictText;// 自定义字典表的显示文本-字典的显示值
private String extendJson;//扩展参数
//update-begin--Author:jg_xugj 许国杰 Date:20151209 for#775 增加只读属性
private String readonly;// 只读属性
public String getReadonly() {
return readonly;
@ -53,7 +54,9 @@ public class DictSelectTag extends TagSupport {
public void setReadonly(String readonly) {
this.readonly = readonly;
}
//update-end--Author:jg_xugj 许国杰 Date:20151209 for#775 增加只读属性
// update-begin--Author:jg_longjb龙金波 Date:20150313 for增加查询条件属性
private String dictCondition;
public String getDictCondition() {
return dictCondition;
@ -62,7 +65,8 @@ public class DictSelectTag extends TagSupport {
public void setDictCondition(String dicCondition) {
this.dictCondition = dicCondition;
}
// update-end--Author:jg_longjb龙金波 Date:20150313 for增加查询条件属性
// update-start--Author:jg_huangxg Date:20151116 for增加datatype属性
private String datatype;
public String getDatatype() {
return datatype;
@ -71,7 +75,7 @@ public class DictSelectTag extends TagSupport {
public void setDatatype(String datatype) {
this.datatype = datatype;
}
// update-end--Author:jg_longjb龙金波 Date:20150313 for增加datatype属性
@Autowired
private static SystemService systemService;
@ -117,9 +121,10 @@ public class DictSelectTag extends TagSupport {
}
}else {
sb.append("<select name=\"" + field + "\"");
//update-begin--Author:jg_xugj 许国杰 Date:20151209 for#775 增加只读属性
this.readonly(sb);
//update-end--Author:jg_xugj 许国杰 Date:20151209 for#775 增加只读属性
//增加扩展属性
if (!StringUtils.isBlank(this.extendJson)) {
@ -133,9 +138,9 @@ public class DictSelectTag extends TagSupport {
sb.append(" id=\"" + id + "\"");
}
sb.append(">");
//update-begin--Author:zhangdaihao Date:20140724 for[bugfree号]默认选择项目--------------------
select("common.please.select", "", sb);
//update-end--Author:zhangdaihao Date:20140724 for[bugfree号]默认选择项目----------------------
for (Map<String, Object> map : list) {
select(map.get("text").toString(), map.get("field").toString(), sb);
}
@ -170,9 +175,9 @@ public class DictSelectTag extends TagSupport {
}
} else {
sb.append("<select name=\"" + field + "\"");
//update-begin--Author:jg_xugj 许国杰 Date:20151209 for#775 增加只读属性
this.readonly(sb);
//update-end--Author:jg_xugj 许国杰 Date:20151209 for#775 增加只读属性
//增加扩展属性
if (!StringUtils.isBlank(this.extendJson)) {
@ -187,9 +192,9 @@ public class DictSelectTag extends TagSupport {
}
this.datatype(sb);
sb.append(">");
//update-begin--Author:zhangdaihao Date:20140724 for[bugfree号]默认选择项目--------------------
select("common.please.select", "", sb);
//update-end--Author:zhangdaihao Date:20140724 for[bugfree号]默认选择项目----------------------
for (TSType type : types) {
select(type.getTypename(), type.getTypecode(), sb);
}
@ -233,9 +238,9 @@ public class DictSelectTag extends TagSupport {
if (!StringUtils.isBlank(this.id)) {
sb.append(" id=\"" + id + "\"");
}
//update-begin--Author:jg_xugj 许国杰 Date:20151209 for#775 增加只读属性
this.readonly(sb);
//update-end--Author:jg_xugj 许国杰 Date:20151209 for#775 增加只读属性
this.datatype(sb);
sb.append(" />");
@ -245,9 +250,9 @@ public class DictSelectTag extends TagSupport {
if (!StringUtils.isBlank(this.id)) {
sb.append(" id=\"" + id + "\"");
}
//update-begin--Author:jg_xugj 许国杰 Date:20151209 for#775 增加只读属性
this.readonly(sb);
//update-end--Author:jg_xugj 许国杰 Date:20151209 for#775 增加只读属性
this.datatype(sb);
sb.append(" />");
}
@ -280,9 +285,9 @@ public class DictSelectTag extends TagSupport {
if (!StringUtils.isBlank(this.id)) {
sb.append(" id=\"" + id + "\"");
}
//update-begin--Author:jg_xugj 许国杰 Date:20151209 for#775 增加只读属性
this.readonly(sb);
//update-end--Author:jg_xugj 许国杰 Date:20151209 for#775 增加只读属性
this.datatype(sb);
sb.append(" />");
} else {
@ -291,9 +296,9 @@ public class DictSelectTag extends TagSupport {
if (!StringUtils.isBlank(this.id)) {
sb.append(" id=\"" + id + "\"");
}
//update-begin--Author:jg_xugj 许国杰 Date:20151209 for#775 增加只读属性
this.readonly(sb);
//update-end--Author:jg_xugj 许国杰 Date:20151209 for#775 增加只读属性
this.datatype(sb);
sb.append(" />");
}
@ -327,11 +332,11 @@ public class DictSelectTag extends TagSupport {
private List<Map<String, Object>> queryDic() {
String sql = "select " + dictField + " as field," + dictText
+ " as text from " + dictTable;
// update-begin--Author:jg_longjb龙金波 Date:20150313 for增加查询条件属性 例如where type='xxx'
if(dictCondition!=null){
sql+=dictCondition;
}
// update--end--Author:jg_longjb龙金波 Date:20150313 for增加查询条件属性
systemService = ApplicationContextUtil.getContext().getBean(
SystemService.class);
List<Map<String, Object>> list = systemService.findForJdbc(sql);

@ -30,9 +30,9 @@ public class FormValidationTag extends TagSupport {
protected String action;// 表单提交路径
protected String tabtitle;// 表单选项卡
protected String tiptype = "4";//校验方式
// update-start--Author:longjb Date:20150317 for修改增加css样式类属性
protected String styleClass ;//table 样式
// update-start--Author:longjb Date:20150323 for修改增加css主题类属性
protected String cssTheme;//主题样式目录默认为空
public String getCssTheme() {
@ -42,7 +42,7 @@ public class FormValidationTag extends TagSupport {
public void setCssTheme(String cssTheme) {
this.cssTheme = cssTheme;
}
// update-end--Author:longjb Date:20150323 for修改增加css主题类属性
public String getStyleClass() {
return styleClass;
}
@ -50,7 +50,7 @@ public class FormValidationTag extends TagSupport {
public void setStyleClass(String styleClass) {
this.styleClass = styleClass;
}
// update-end--Author:longjb Date:20150317 for修改增加css样式类属性
public void setTabtitle(String tabtitle) {
this.tabtitle = tabtitle;
}
@ -103,11 +103,11 @@ public class FormValidationTag extends TagSupport {
sb.append("<div id=\"steps\">");
}
sb.append("<form id=\"" + formid + "\" " );
// update-start--Author:longjb Date:20150317 for修改增加css样式类属性
if(this.getStyleClass()!=null){
sb.append("class=\""+this.getStyleClass()+"\" ");
}
// update-end--Author:longjb Date:20150317 for修改增加css样式类属性
sb.append(" action=\"" + action + "\" name=\"" + formid + "\" method=\"post\">");
if ("btn_sub".equals(btnsub) && dialog)
sb.append("<input type=\"hidden\" id=\"" + btnsub + "\" class=\"" + btnsub + "\"/>");
@ -132,7 +132,7 @@ public class FormValidationTag extends TagSupport {
JspWriter out = this.pageContext.getOut();
StringBuffer sb = new StringBuffer();
if (layout.equals("div")) {
// update-start--Author:longjb Date:20150323 for修改增加css主题类属性
// if("metro".equals(cssTheme)){
// sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/"+cssTheme+"/divfrom.css\" type=\"text/css\"/>");
// }else{
@ -154,7 +154,8 @@ public class FormValidationTag extends TagSupport {
sb.append(SysThemesUtil.getValidformStyleTheme(sysThemesEnum));
//tablefrom.css
sb.append(SysThemesUtil.getValidformTablefrom(sysThemesEnum));
// update-end--Author:longjb Date:20150323 for修改增加css主题类属性
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/datatype_{0}.js\"></script>", "{0}", lang));
@ -230,7 +231,7 @@ public class FormValidationTag extends TagSupport {
passsb.append("}");// trigger结尾
passsb.append("}");// passwordstrength结尾
}
// update-start--Author:gaofeng Date:20140711 for修改在使用jptransform时的逗号","拼接错误
sb.append("usePlugin:{");
if (usePlugin.indexOf("password") >= 0) {
sb.append(passsb);
@ -242,7 +243,7 @@ public class FormValidationTag extends TagSupport {
}
jqsb.append("jqtransform :{selector:\"select\"}");
}
// update-end--Author:gaofeng Date:20140711 for修改在使用jptransform时的逗号","拼接错误
if (usePlugin.indexOf("jqtransform") >= 0) {
sb.append(jqsb);
}

@ -62,22 +62,22 @@ public class MenuTag extends TagSupport {
public StringBuffer end() {
StringBuffer sb = new StringBuffer();
// update-begin--Author:zhangguoming Date:20140622 for左侧树调整加大宽度、更换节点图标、修改选中颜色
if (style.equals("easyui")) {
sb.append("<ul id=\"nav\" class=\"easyui-tree tree-lines\" fit=\"true\" border=\"false\">");
sb.append(ListtoMenu.getEasyuiMultistageTree(menuFun, style));
sb.append("</ul>");
}
if(style.equals("shortcut"))
// update-begin--Author:zhangguoming Date:20140429 for在IE7下 导航显示问题
// { 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\">");
// update-end--Author:zhangguoming Date:20140429 for在IE7下 导航显示问题
sb.append(ListtoMenu.getEasyuiMultistageTree(menuFun, style));
sb.append("</div>");
}
// update-end--Author:zhangguoming Date:20140622 for左侧树调整加大宽度、更换节点图标、修改选中颜色
if(style.equals("bootstrap"))
{
sb.append(ListtoMenu.getBootMenu(parentFun, childFun));

@ -74,7 +74,7 @@ public class TagUtil {
}
value = reflectHelper.getMethodValue(fieldName)==null?"":reflectHelper.getMethodValue(fieldName);
if (value !=""&&value != null && (FiledName.indexOf("_") != -1||FiledName.indexOf(".") != -1)) {
// update-start--Author:zhangguoming Date:20140827 for功能增强添加处理对象中List<Object>属性字段的解析
if(value instanceof List) {
Object tempValue = "";
for (Object listValue : (List)value) {
@ -84,10 +84,10 @@ public class TagUtil {
} else {
value = fieldNametoValues(childFieldName, value);
}
// update-end--Author:zhangguoming Date:20140827 for功能增强添加处理对象中List<Object>属性字段的解析
}
if(value != "" && value != null) {
// update-begin--Author:jb_longjb 龙金波 Date:20150313 for处理json中可能包含的特殊字符防止页面加载出错
value = converunicode(value.toString());
}
return value;
@ -97,7 +97,7 @@ public class TagUtil {
for (int i=0; i<jsonValue.length(); i++) {
char c = jsonValue.charAt(i);
switch (c){
// update-begin--Author:zhoujf Date:20150615 for菜单图片不显示的问题
// case '\"':
// sb.append("\\\"");
// break;
@ -110,7 +110,7 @@ public class TagUtil {
// case '/':
// sb.append("\\/");
// break;
// update-end--Author:zhoujf Date:20150615 for菜单图片不显示的问题
case '\b':
sb.append("\\b");
break;
@ -132,7 +132,7 @@ public class TagUtil {
}
return sb.toString();
}
// update-end--Author:jb_longjb 龙金波 Date:20150313 for处理json中可能包含的特殊字符防止页面加载出错
/**
*
@ -596,7 +596,8 @@ public class TagUtil {
param += "'\"+index+\"'";// 传出行索引号参数
return param;
}
//update-begin--Author:luobaoli Date:20150711 for新增方法将存储过程返回的数据解析为json格式
public static String getJson(List fields,List datas){
if(datas!=null && datas.size()>0){
StringBuffer sb = new StringBuffer();
@ -616,5 +617,32 @@ public class TagUtil {
return "{\"total\":\"0\",\"rows\":[]}";
}
}
//update-begin--Author:luobaoli Date:20150711 for新增方法将存储过程返回的数据解析为json格式
public static String getJsonByMap(List fields,List<Map<String,Object>> datas){
if(datas!=null && datas.size()>0){
StringBuffer sb = new StringBuffer();
sb.append("{\"total\":\""+datas.size()+"\",\"rows\":[");
for(int i=0;i<datas.size();i++){
Map<String,Object> values = (Map<String,Object>) datas.get(i);
sb.append("{");
//for(int j=0;j<values.size();){
int j=0;
for (Object value : values.values()) {
sb.append("\""+fields.get(j)+"\":\""+(value==null?"":value)+"\""+(j==values.size()-1?"":","));
j++;
}
//sb.append("\""+fields.get(j)+"\":\""+(values.get(j)==null?"":values.get(j))+"\""+(j==values.size()-1?"":","));
//}
sb.append("}"+(i==datas.size()-1?"":","));
}
sb.append("]}");
return sb.toString();
}else{
return "{\"total\":\"0\",\"rows\":[]}";
}
}
}

@ -31,7 +31,7 @@ public class UploadTag extends TagSupport {
protected boolean auto=false;//是否自动上传
protected String onUploadSuccess;//上传成功处理函数
protected boolean view=false;//生成查看删除链接
// update-begin--Author:jb_longjb 龙金波 Date:20150318 for:新增formId属性保持formData属性向前兼容
protected String formId;//参数名称
public String getFormId() {
@ -40,7 +40,7 @@ public class UploadTag extends TagSupport {
public void setFormId(String formId) {
this.formId = formId;
}
// update-end--Author:jb_longjb 龙金波 Date:20150318 for:新增formId属性保持formData属性向前兼容
public void setView(boolean view) {
this.view = view;
@ -135,7 +135,7 @@ public class UploadTag extends TagSupport {
}
}
sb.append("});");
// update-begin--Author:jb_longjb 龙金波 Date:20150318 for:用formId简化表单与附件同时提交的序列化问题
}else if (formId!=null) {
sb.append(" var o = {};");
sb.append(" var _array = $('#"+formId+"').serializeArray();");
@ -151,7 +151,7 @@ public class UploadTag extends TagSupport {
sb.append(" });");
sb.append("$(\'#"+id+"\').uploadify(\"settings\", \"formData\", o);");
};
// update-end--Author:jb_longjb 龙金波 Date:20150318 for:简化表单与附件同时提交的序列化问题
sb.append("} ,"
+"onQueueComplete : function(queueData) { ");
if(dialog)

@ -0,0 +1,179 @@
package org.jeecgframework.tag.core.easyui;
import org.apache.commons.lang.StringUtils;
import org.jeecgframework.core.util.MutiLangUtil;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import java.io.IOException;
/**
*
*
*
* @author: wangkun
* @date 2015-3-27
* @version 1.0
*/
public class UserSelectTag 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 title;//弹出框标头
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
private String lblName;//组件名称
public String getLblName() {
return lblName;
}
public void setLblName(String lblName) {
this.lblName = lblName;
}
private String selectedNamesInputId; // 用于记录已选择用户名称的input的id
public String getSelectedNamesInputId() {
return selectedNamesInputId;
}
public void setSelectedNamesInputId(String _selectedNamesInputId) {
this.selectedNamesInputId = _selectedNamesInputId;
}
private String userNameInputWidth; //已选择机构输入框宽度
public String getUserNameInputWidth() {
return userNameInputWidth;
}
public void setUserNameInputWidth(String userNameInputWidth) {
this.userNameInputWidth = userNameInputWidth;
}
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;
}
private String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
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 = "realName"; // 默认id
}
//String lblDepartment = MutiLangUtil.getMutiLangInstance().getLang("common.department");
if(StringUtils.isBlank(lblName)){
lblName = "真实姓名";
}
if(StringUtils.isBlank(userNameInputWidth)){
userNameInputWidth = "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: " + userNameInputWidth + ";text-align:right;\" title=\"" + lblName + "\"/>");
sb.append(lblName + "");
sb.append("</span>");
sb.append("<input readonly=\"true\" type=\"text\" id=\"" + selectedNamesInputId + "\" name=\"" + selectedNamesInputId + "\" style=\"width: 200px\" onclick=\"openUserSelect()\" ");
/*if(StringUtils.isNotBlank(departId)){
sb.append(" value=\""+departName+"\"");
}*/
//sb.append(" />");
//sb.append("<input id=\"" + selectedIdsInputId + "\" name=\"" + selectedIdsInputId + "\" type=\"hidden\" ");
/*if(StringUtils.isNotBlank(departName)){
sb.append(" value=\""+departId+"\"");
}*/
//sb.append(">");
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 openUserSelect() {");
sb.append(" $.dialog.setting.zIndex = 9999; ");
sb.append(" $.dialog({content: 'url:userController.do?userSelect', zIndex: 2100, title: '" + title + "', lock: true, width: '" + windowWidth + "', height: '" + windowHeight + "', opacity: 0.4, button: [");
sb.append(" {name: '" + commonConfirm + "', callback: callbackUserSelect, focus: true},");
sb.append(" {name: '" + commonCancel + "', callback: function (){}}");
sb.append(" ]}).zindex();");
sb.append("}");
sb.append("function callbackUserSelect() {");
sb.append("var iframe = this.iframe.contentWindow;");
//var treeObj = iframe.$.fn.zTree.getZTreeObj("departSelect");
sb.append("var rowsData = iframe.$('#userList1').datagrid('getSelections');");
sb.append("if (!rowsData || rowsData.length==0) {");
sb.append("tip('<t:mutiLang langKey=\"common.please.select.edit.item\"/>');");
sb.append("return;");
sb.append("}");
sb.append("var names=rowsData[0].realName;");
sb.append("$('#" + selectedNamesInputId + "').val(names);");
sb.append("$('#" + selectedNamesInputId + "').blur();");
//sb.append(" $('#" + selectedIdsInputId + "').val(ids);");
sb.append("}");
sb.append("</script>");
return sb;
}
}

@ -66,7 +66,8 @@ public class CgDynamGraphController extends BaseController {
//step.3 组合模板+数据参数,进行页面展现
loadVars(cgDynamGraphMap,request);
String html;
//update-begin--Author:xuguojie Date:20160303 for #959 【报表功能】在线配置图表改造,支持移动端单独展示
//判断是否为综合类
Map<String, Object> mainConfig = (Map<String, Object> )cgDynamGraphMap.get(CgReportConstant.MAIN);
String defaultGtype =mainConfig.get("graph_type")==null?null:(String)mainConfig.get("graph_type");
@ -81,7 +82,7 @@ public class CgDynamGraphController extends BaseController {
//设置gtype
html = viewEngine.parseTemplate("/org/jeecgframework/web/cgdynamgraph/engine/core/cgDynamGraphDesignMobile.ftl", cgDynamGraphMap);
}
//update-end--Author:xuguojie Date:20160303 for #959 【报表功能】在线配置图表改造,支持移动端单独展示
try {
response.setContentType("text/html");
response.setHeader("Cache-Control", "no-store");
@ -258,7 +259,7 @@ public class CgDynamGraphController extends BaseController {
}
}
//step.4 进行查询返回结果
//update-begin--Author:张忠亮 Date:20150608 for多数据源支持
String dbKey=(String)configM.get("db_source");
List<Map<String, Object>> result=null;
Long size=0l;
@ -276,7 +277,7 @@ public class CgDynamGraphController extends BaseController {
result= cgDynamGraphService.queryByCgDynamGraphSql(querySql, queryparams);
size = cgDynamGraphService.countQueryByCgDynamGraphSql(querySql, queryparams);
}
//update-end--Author:张忠亮 Date:20150608 for多数据源支持
dealDic(result,items);
dealReplace(result,items);
response.setContentType("application/json");
@ -308,7 +309,7 @@ public class CgDynamGraphController extends BaseController {
}catch (Exception e) {
e.printStackTrace();
String errorInfo = "解析失败!<br><br>失败原因:";
//update-start--Author: jg_huangxg Date:20151210 for修改提示内容
//无法直接捕捉到:java.net.ConnectException异常
int i = e.getMessage().indexOf("Connection refused: connect");
@ -317,7 +318,7 @@ public class CgDynamGraphController extends BaseController {
}else{
errorInfo += "SQL语法错误.";
}
//update-end--Author: jg_huangxg Date:20151210 for修改提示内容
reJson.put("status", "error");
reJson.put("datas", errorInfo);
return reJson;

@ -43,10 +43,11 @@ public class CgDynamGraphConfigHeadEntity implements java.io.Serializable {
private java.lang.String updateBy;
/**修改人名称*/
private java.lang.String updateName;
//update-begin--Author:张忠亮 Date:20150608 for加入多数据源属性
/**动态数据源*/
private String dbSource;
//update-end--Author:张忠亮 Date:20150608 for加入多数据源属性
/**图表类型*/
@ -236,7 +237,7 @@ public class CgDynamGraphConfigHeadEntity implements java.io.Serializable {
public void setUpdateName(java.lang.String updateName){
this.updateName = updateName;
}
//update-begin--Author:张忠亮 Date:20150608 for加入多数据源属性
@Column(name ="db_source",length=36)
public String getDbSource() {
return dbSource;
@ -245,7 +246,7 @@ public class CgDynamGraphConfigHeadEntity implements java.io.Serializable {
public void setDbSource(String dbSource) {
this.dbSource = dbSource;
}
//update-end--Author:张忠亮 Date:20150608 for加入多数据源属性
@Column(name ="graph_type",length=36)
public String getGraphType() {

@ -55,14 +55,15 @@ public class CgDynamGraphConfigHeadPage implements java.io.Serializable {
private java.lang.String cgrSql;
/**描述*/
private java.lang.String content;
//update-begin--Author:xuguojie Date:20160303 for #959 【报表功能】在线配置图表改造,支持移动端单独展示
/**图表类型*/
private String graphType;
/**数据结构类型*/
private String dataStructure;
/**是否分页*/
private String isPagination;
//update-end--Author:xuguojie Date:20160303 for #959 【报表功能】在线配置图表改造,支持移动端单独展示
@ -150,7 +151,7 @@ public class CgDynamGraphConfigHeadPage implements java.io.Serializable {
public void setContent(java.lang.String content){
this.content = content;
}
//update-begin--Author:xuguojie Date:20160303 for #959 【报表功能】在线配置图表改造,支持移动端单独展示
@Column(name ="graph_type",length=36)
public String getGraphType() {
return graphType;
@ -177,6 +178,6 @@ public class CgDynamGraphConfigHeadPage implements java.io.Serializable {
public void setIsPagination(String isPagination) {
this.isPagination = isPagination;
}
//update-end--Author:xuguojie Date:20160303 for #959 【报表功能】在线配置图表改造,支持移动端单独展示
}

@ -50,12 +50,12 @@ public class FormHtmlUtil {
private static String getTextAreaFormHtml(
CgFormFieldEntity cgFormFieldEntity) {
StringBuilder html = new StringBuilder("");
//update-begin--Author:zhoujf Date:20151218 foronline表单模板textarea优化--------------------
html.append("<textarea rows=\"6\" ");
if(cgFormFieldEntity.getFieldLength()!=null&&cgFormFieldEntity.getFieldLength()>0){
html.append("style=\"width:").append(cgFormFieldEntity.getFieldLength()).append("px\" ");
}
//update-end--Author:zhoujf Date:20151218 foronline表单模板textarea优化--------------------
html.append("id=\"").append(cgFormFieldEntity.getFieldName()).append("\" ");
html.append("name=\"").append(cgFormFieldEntity.getFieldName()).append("\" ");
if("Y".equals(cgFormFieldEntity.getIsNull())){

@ -199,10 +199,11 @@ public class AutoFormController extends BaseController {
autoForm.setFormContent(html);
autoForm.setFormParse(autoForm.getFormContent());
}
//update-begin--Author:jg_renjie Date:20160131 for针对默认字段 create_name、create_by等获取系统上下文值进行处理
autoForm.setCreateDate(new Date());
autoForm.setCreateName(ResourceUtil.getSessionUserName().getUserName());
autoForm.setCreateName(ResourceUtil.getSessionUserName().getRealName());
autoForm.setCreateBy(ResourceUtil.getSessionUserName().getUserName());
//update-end--Author:jg_renjie Date:20160131 for针对默认字段 create_name、create_by等获取系统上下文值进行处理
autoFormService.save(autoForm);
systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
}catch(Exception e){
@ -242,10 +243,11 @@ public class AutoFormController extends BaseController {
t.setFormContent(html);
t.setFormParse(autoForm.getFormContent());
}
//update-begin--Author:jg_renjie Date:20160131 for针对默认字段 create_name、create_by等获取系统上下文值进行处理
autoForm.setUpdateDate(new Date());
autoForm.setUpdateName(ResourceUtil.getSessionUserName().getUserName());
autoForm.setUpdateName(ResourceUtil.getSessionUserName().getRealName());
autoForm.setUpdateBy(ResourceUtil.getSessionUserName().getUserName());
//update-end--Author:jg_renjie Date:20160131 for针对默认字段 create_name、create_by等获取系统上下文值进行处理
autoFormService.saveOrUpdate(t);
attributes.put("id", t.getId());
j.setAttributes(attributes);
@ -264,9 +266,11 @@ public class AutoFormController extends BaseController {
autoForm.setFormContent(html);
autoForm.setFormParse(autoForm.getFormContent());
}
//--update-begin-------------date:20151102---------for:check 表单编码不允许重复--------------------
//TODO 待实现
//--update-end-------------date:20151102---------for:check 表单编码不允许重复----------------------
autoFormService.save(autoForm);
attributes.put("id", autoForm.getId());
j.setAttributes(attributes);
@ -299,7 +303,7 @@ public class AutoFormController extends BaseController {
map.put(name, name);
}
}
//update---begin---author:zhoujf------date:20151207---------------for:大小写问题修改-------------------------------
// Elements ids = doc.select("input[name$=.id]");
// for (Element el: ids) {
// String name = el.attr("name");
@ -310,7 +314,7 @@ public class AutoFormController extends BaseController {
// map.put(name, name);
// }
// }
//update---end---author:zhoujf------date:20151207---------------for:大小写问题修改-------------------------------
}
@ -401,9 +405,9 @@ public class AutoFormController extends BaseController {
for(AutoFormDbEntity dbForm:list){
map = new HashMap<String,Object>();
map.put("id", dbForm.getId());
//update-begin--Author: jg_huangxg Date:20151106 for自定义表单时数据源树把数据源编码 和 字段属性名显示出来
map.put("name", dbForm.getDbChName()+"("+dbForm.getDbName()+")");
//update-end--Author: jg_huangxg Date:20151106 for自定义表单时数据源树把数据源编码 和 字段属性名显示出来
map.put("dbCode", dbForm.getDbName());
map.put("pid", "0");
//增加父节点
@ -414,9 +418,9 @@ public class AutoFormController extends BaseController {
for(AutoFormDbFieldEntity field: fieldlist){
map = new HashMap<String,Object>();
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()+")");
//update-end--Author: jg_huangxg Date:20151106 for自定义表单时数据源树把数据源编码 和 字段属性名显示出来
map.put("pId", dbForm.getId());
map.put("nocheck",true);
dateList.add(map);
@ -428,9 +432,9 @@ public class AutoFormController extends BaseController {
for(AutoFormDbFieldEntity field: fieldlist){
map = new HashMap<String,Object>();
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()+")");
//update-end--Author: jg_huangxg Date:20151106 for自定义表单时数据源树把数据源编码 和 字段属性名显示出来
map.put("pId", dbForm.getId());
map.put("nocheck",true);
dateList.add(map);
@ -479,15 +483,15 @@ public class AutoFormController extends BaseController {
dsData.put("dsName", db.getDbName());
dsList.add(dsData);
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=?";
//update-end--Author: jg_huangxg Date:20151106 for增加字段文本的查询,当字段文本为空时,使用字段名称
List<Map<String,Object>> columns = this.systemService.findHql(hql, autoFormDbId);
dsData.put("columns", columns);
} 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=?";
//update-end--Author: jg_huangxg Date:20151106 for增加字段文本的查询,当字段文本为空时,使用字段名称
List<Map<String,Object>> columns = this.systemService.findHql(hql, autoFormDbId);
if(columns.size()>0){
dsData.put("columns", columns);
@ -610,14 +614,14 @@ public class AutoFormController extends BaseController {
public ModelAndView viewContent(AutoFormEntity autoForm, HttpServletRequest req) {
String message = "";
try {
//-- update-begin author xugj date:20160103 for: #851 controller 单元测试升级servlet-api 后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));
}
//-- update-end author xugj date:20160103 for: #851 controller 单元测试升级servlet-api 后req.getParameterMap() 返回值类型变化
String op = req.getParameter("op");
if(StringUtil.isEmpty(op)){
@ -742,11 +746,12 @@ public class AutoFormController extends BaseController {
}
hqlTable.append(" where ID ='").append(id).append("'");
//update-start--Author:luobaoli Date:20150701 for如果数据源为空那么以当前上下文中的DB配置为准查询出表数据
if("".equals(formDb.getDbKey())){
//当前上下文中的DB环境获取数据库表中的所有数据
data = systemService.findForJdbc(hqlTable.toString());
}
//update-end--Author:luobaoli Date:20150701 for如果数据源为空那么以当前上下文中的DB配置为准查询出表数据
else{
DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(formDb.getDbKey());
if(dynamicDataSourceEntity!=null){
@ -891,9 +896,9 @@ public class AutoFormController extends BaseController {
if(StringUtils.isNotBlank(dbForm.getAutoFormId())){
List<AutoFormDbEntity> dbFormList = this.systemService.findByProperty(AutoFormDbEntity.class, "autoFormId", dbForm.getAutoFormId());
if(dbFormList.size()>0){
//update-begin--Author:jg_renjie Date:20150722 for设置默认选项的value值
message = "<option value='' selected='selected'>请选择数据源</option>";
//update-end--Author:jg_renjie Date:20150722 for设置默认选项的value值
for(AutoFormDbEntity entity:dbFormList){
//根据数据源名称进行匹配数据
message += "<option value='"+entity.getDbName()+"'>"+(StringUtils.isBlank(entity.getDbChName())?entity.getDbName():entity.getDbChName())+"</option>";
@ -902,17 +907,17 @@ public class AutoFormController extends BaseController {
j.setMsg(message);
} else{
j.setSuccess(false);
//update-begin--Author:jg_renjie Date:20150722 for设置默认选项的value值
message = "<option value='' selected='selected'>请先添加数据源</option>";
//update-end--Author:jg_renjie Date:20150722 for设置默认选项的value值
j.setMsg(message);
}
}else{
//2.如果ID为空则option拼接提示信息
j.setSuccess(false);
//update-begin--Author:jg_renjie Date:20150722 for设置默认选项的value值
message = "<option value='' selected='selected'>请先添加数据源</option>";
//update-end--Author:jg_renjie Date:20150722 for设置默认选项的value值
j.setMsg(message);
}
return j;
@ -932,12 +937,13 @@ public class AutoFormController extends BaseController {
//1.如果ID不为空则拼接option字符串
//根据数据源名称进行匹配数据
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 = ?";
List<AutoFormDbEntity> list= this.systemService.findHql(hqlList, dbForm.getDbName(),dbForm.getAutoFormId());
if(list.size() ==1){
dbForm = list.get(0);
//update-end--Author:jg_renjie Date:20150723 for数据源根据autoFormId与dbName取数据
//dbForm = this.systemService.findUniqueByProperty(AutoFormDbEntity.class, "dbName", dbForm.getDbName());
List<Map<String,Object>> columns = new ArrayList<Map<String,Object>>();
if("table".equals(dbForm.getDbType())){
@ -956,9 +962,9 @@ public class AutoFormController extends BaseController {
}
}
if(columns.size()>0){
//update-begin--Author:jg_renjie Date:20150722 for设置默认选项的value值
message = "<option value='' selected='selected'>请选择字段</option>";
//update-end--Author:jg_renjie Date:20150722 for设置默认选项的value值
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>";
}
@ -966,17 +972,17 @@ public class AutoFormController extends BaseController {
j.setMsg(message);
} else{
j.setSuccess(false);
//update-begin--Author:jg_renjie Date:20150722 for设置默认选项的value值
message = "<option value='' selected='selected'>请先添加字段</option>";
//update-end--Author:jg_renjie Date:20150722 for设置默认选项的value值
j.setMsg(message);
}
}else{
//2.如果ID为空则option拼接提示信息
j.setSuccess(false);
//update-begin--Author:jg_renjie Date:20150722 for设置默认选项的value值
message = "<option value='' selected='selected'>请先选择数据源</option>";
//update-end--Author:jg_renjie Date:20150722 for设置默认选项的value值
j.setMsg(message);
}
}
@ -1000,7 +1006,8 @@ public class AutoFormController extends BaseController {
Map<String, Object> attributes = new HashMap<String, Object>();
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 = ?";
List<AutoFormDbEntity> list= this.systemService.findHql(hqlList, dbForm.getDbName(),dbForm.getAutoFormId());
if(list.size() ==1){
@ -1012,7 +1019,8 @@ public class AutoFormController extends BaseController {
} else {
attributes.put("dbName", dbForm.getDbName());
}
//update-end--Author:jg_renjie Date:20150723 for数据源根据autoFormId与dbName取数据
//dbForm = this.systemService.findUniqueByProperty(AutoFormDbEntity.class, "dbName", dbForm.getDbName());
List<Map<String,Object>> columns = new ArrayList<Map<String,Object>>();
if("table".equals(dbForm.getDbType())){
@ -1030,7 +1038,8 @@ public class AutoFormController extends BaseController {
}
}
}
//update-start--Author:jg_renjie Date:20151107 for优化根据数据源生成数据列
StringBuilder options = null;
StringBuilder trList = new StringBuilder();
String headStr = "";
@ -1172,7 +1181,7 @@ public class AutoFormController extends BaseController {
} else {
message = "<option value=\"\">无字段</option>";
}
//update-end--Author:jg_renjie Date:20151107 for优化根据数据源生成数据列
j.setSuccess(true);
//j.setMsg(message);
@ -1190,7 +1199,8 @@ public class AutoFormController extends BaseController {
return j;
}
//add-end--Author:jg_renjie Date:20150725 for数据源根据autoFormId与dbName取数据,并拼接成tr串
//update-start--Author:jg_renjie Date:20151107 for优化根据数据源生成数据列
/**
*
*/
@ -1219,7 +1229,7 @@ public class AutoFormController extends BaseController {
j.setMsg(message);
return j;
}
//update-end--Author:jg_renjie Date:20151107 for优化根据数据源生成数据列
/**
*
@ -1325,7 +1335,7 @@ public class AutoFormController extends BaseController {
j.setMsg(message);
return j;
}
//update-begin--Author:zzl Date:20151102 for表单编码唯一性验证
@RequestMapping(params = "checkTbCode")
@ResponseBody
@ -1349,7 +1359,8 @@ public class AutoFormController extends BaseController {
jsonObject.put("status", "y");
return jsonObject;
}
//update-end--Author:zzl Date:20151102 for表单编码唯一性验证
//update-begin--Author:zzl Date:20151110 for数据源级联删除
private void delFormDb(String autoFormId){
List<AutoFormDbEntity> list = this.systemService.findByProperty(AutoFormDbEntity.class, "autoFormId", autoFormId);
if(list!=null&&list.size()>0) {
@ -1359,5 +1370,5 @@ public class AutoFormController extends BaseController {
}
}
}
//update-end--Author:zzl Date:20151110 for数据源级联删除
}

@ -68,12 +68,12 @@ public class AutoFormDbController extends BaseController {
*/
@RequestMapping(params = "autoFormDb")
public ModelAndView autoFormDb(HttpServletRequest request) {
//update--begin---author:scott---date:20151029-----for:通过自定义表单筛选数据源-------
String autoFormId = request.getParameter("autoFormId");
if(oConvertUtils.isNotEmpty(autoFormId)){
request.setAttribute("autoFormId", autoFormId);
}
//update--begin---author:scott---date:20151029-----for:通过自定义表单筛选数据源-------
return new ModelAndView("jeecg/cgform/autoform/autoFormDbList");
}
@ -210,19 +210,23 @@ public class AutoFormDbController extends BaseController {
if (StringUtil.isNotEmpty(autoFormDb.getId())) {
autoFormDb = autoFormDbService.getEntity(AutoFormDbEntity.class, autoFormDb.getId());
}
//update-begin--Author:jg_renjie Date:20150620 for能够将参数传递到前台页面
req.setAttribute("autoFormDbPage", autoFormDb);
//update-end--Author:jg_renjie Date:20150620 for能够将参数传递到前台页面
//update-begin--Author:luobaoli Date:20150701 for增加初始化数据源显示
Collection<DynamicDataSourceEntity> dynamicDataSourceEntitys = DynamicDataSourceEntity.DynamicDataSourceMap.values();
req.setAttribute("dynamicDataSourceEntitys", dynamicDataSourceEntitys);
//update-begin--Author:luobaoli Date:20150701 for增加初始化数据源显示
//update-begin--Author:luobaoli Date:20150701 for增加初始化数据表显示
try {
List<String> tableNames = new JeecgReadTable().readAllTableNames();
req.setAttribute("tableNames", tableNames);
} catch (SQLException e) {
logger.info(e.getMessage());
}
//update-end--Author:luobaoli Date:20150701 for增加初始化数据表显示
return new ModelAndView("jeecg/cgform/autoform/autoFormDb-add");
}
@ -235,21 +239,25 @@ public class AutoFormDbController extends BaseController {
public ModelAndView goUpdate(AutoFormDbEntity autoFormDb, HttpServletRequest req) {
if (StringUtil.isNotEmpty(autoFormDb.getId())) {
autoFormDb = autoFormDbService.getEntity(AutoFormDbEntity.class, autoFormDb.getId());
//update-begin--Author:luobaoli Date:20150620 for当数据库类型选择为Table时需要返回所有表用于展现
List<String> tableNames = null;
if(StringUtils.isNotBlank(autoFormDb.getDbKey()) && "table".equals(autoFormDb.getDbType())){
//update-start--Author:luobaoli Date:20150623 for调整了获取数据库类型和数据库名称的逻辑
DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(autoFormDb.getDbKey());
if(dynamicDataSourceEntity!=null){
tableNames = DynamicDBUtil.findList(autoFormDb.getDbKey(),SqlUtil.getAllTableSql(dynamicDataSourceEntity.getDbType(), "'"+dynamicDataSourceEntity.getDbName()+"'"),String.class);
}
//update-end--Author:luobaoli Date:20150623 for调整了获取数据库类型和数据库名称的逻辑
}
//update-begin--Author:luobaoli Date:20150701 for增加初始化数据源显示
Collection<DynamicDataSourceEntity> dynamicDataSourceEntitys = DynamicDataSourceEntity.DynamicDataSourceMap.values();
req.setAttribute("dynamicDataSourceEntitys", dynamicDataSourceEntitys);
//update-begin--Author:luobaoli Date:20150701 for增加初始化数据源显示
//update-start--Author:luobaoli Date:20150701 for数据库为默认的时候数据库表为当前DB环境中的表
//update-begin--Author:scott Date:20151116 for数据源-表-字段加载注意数据库表类型和SQL类型冲突---------
//数据源类型
String dbKey = null;
if(CgAutoListConstant.DB_TYPE_TABLE.equals(autoFormDb.getDbType())){
@ -257,7 +265,7 @@ public class AutoFormDbController extends BaseController {
}else if(CgAutoListConstant.DB_TYPE_SQL.equals(autoFormDb.getDbType())){
dbKey = autoFormDb.getTbDbKey();
}
//update-end--Author:scott Date:20151116 for数据源-表-字段加载注意数据库表类型和SQL类型冲突---------
if(StringUtils.isBlank(dbKey)){
//默认当前平台数据源
try {
@ -271,9 +279,9 @@ public class AutoFormDbController extends BaseController {
tableNames = DynamicDBUtil.findList(dbKey,SqlUtil.getAllTableSql(dynamicDataSourceEntity.getDbType(), "'" + dynamicDataSourceEntity.getDbName() + "'"),String.class);
}
}
//update-start--Author:luobaoli Date:20150701 for数据库为默认的时候数据库表为当前DB环境中的表
req.setAttribute("tableNames", tableNames);
//update-end--Author:luobaoli Date:20150620 for当数据库类型选择为Table时需要返回所有表用于展现
req.setAttribute("autoFormDbPage", autoFormDb);
}
@ -389,12 +397,12 @@ public class AutoFormDbController extends BaseController {
List<String> tableNames = null;
try{
if(StringUtils.isNotBlank(dbKey)){
//update-start--Author:luobaoli Date:20150623 for调整了获取数据库类型和数据库名称的逻辑
DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(dbKey);
if(dynamicDataSourceEntity!=null){
tableNames = DynamicDBUtil.findList(dbKey,SqlUtil.getAllTableSql(dynamicDataSourceEntity.getDbType(), "'" + dynamicDataSourceEntity.getDbName() + "'"),String.class);
}
//update-end--Author:luobaoli Date:20150623 for调整了获取数据库类型和数据库名称的逻辑
}else{
tableNames = new JeecgReadTable().readAllTableNames();
}
@ -423,12 +431,12 @@ public class AutoFormDbController extends BaseController {
Map reJson = new HashMap<String, Object>();
List<String> columnsNames = null;
if(StringUtils.isNotBlank(dbKey)){
//update-end--Author:luobaoli Date:20150623 for调整了获取数据库类型和数据库名称的逻辑
DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(dbKey);
if(dynamicDataSourceEntity!=null){
columnsNames = DynamicDBUtil.findList(dbKey,SqlUtil.getAllCloumnSql(dynamicDataSourceEntity.getDbType(), "'" + tableName + "'", "'" + dynamicDataSourceEntity.getDbName() + "'"),String.class);
}
//update-end--Author:luobaoli Date:20150623 for调整了获取数据库类型和数据库名称的逻辑
}else{
try {
List<Columnt> columns = new JeecgReadTable().readOriginalTableColumn(tableName);
@ -507,12 +515,13 @@ public class AutoFormDbController extends BaseController {
hqlTable.append(autoFormDbFieldEntity.getFieldName()+",");
}
hqlTable.deleteCharAt(hqlTable.length()-1).append(" from "+dbTableName);
//update-start--Author:luobaoli Date:20150701 for如果数据源为空那么以当前上下文中的DB配置为准查询出表数据
if("".equals(dbKey)){
//当前上下文中的DB环境获取数据库表中的所有数据
map = systemService.findForJdbc(hqlTable.toString());
}
//update-end--Author:luobaoli Date:20150701 for如果数据源为空那么以当前上下文中的DB配置为准查询出表数据
else{
DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(dbKey);
if(dynamicDataSourceEntity!=null){
@ -564,7 +573,7 @@ public class AutoFormDbController extends BaseController {
//add-begin--Author:jg_renjie Date:20150720 for增加数据源名称的唯一性校验
//update-begin--Author:zzl Date:20151102 for检查数据源编码是否重复
/**
*
*/
@ -592,7 +601,7 @@ public class AutoFormDbController extends BaseController {
jsonObject.put("status", "y");
return jsonObject;
}
//update-end--Author:zzl Date:20151102 for检查数据源编码是否重复
//add-end--Author:jg_renjie Date:20150720 for增加数据源名称的唯一性校验

@ -87,11 +87,11 @@ public class CgAutoListController extends BaseController{
//step.3 封装页面数据
loadVars(configs,paras,request);
//step.4 组合模板+数据参数,进行页面展现
//update-begin--Author:张忠亮 Date:20151019 forurl中加入olstylecode 可指定风格
String template=request.getParameter("olstylecode");
if(StringUtils.isBlank(template)){
CgFormHeadEntity head = cgFormFieldService.getCgFormHeadByTableName(id);
//update-begin--Author:张忠亮 Date:20150707 foronline表单风格加入录入、编辑、列表、详情页面设置
template=head.getFormTemplate();
paras.put("_olstylecode","");
}else{
@ -100,7 +100,7 @@ public class CgAutoListController extends BaseController{
paras.put("this_olstylecode",template);
CgformTemplateEntity entity=cgformTemplateService.findByCode(template);
String html = viewEngine.parseTemplate(TemplateUtil.getTempletPath(entity,0, TemplateUtil.TemplateType.LIST), paras);
//update-end--Author:张忠亮 Date:20151019 forurl中加入olstylecode 可指定风格
try {
response.setContentType("text/html");
response.setHeader("Cache-Control", "no-store");
@ -141,7 +141,8 @@ public class CgAutoListController extends BaseController{
QueryParamUtil.loadQueryParams(request,b,params);
fieldMap.put(b.getFieldName(), new String[]{b.getType(), b.getFieldDefault()});
}
//------------------update-begin-------2015年6月1日----author:zhongsy------for:表单配置支持树形------------
//参数处理
boolean isTree = configs.get(CgAutoListConstant.CONFIG_ISTREE) == null ? false
: CgAutoListConstant.BOOL_TRUE.equalsIgnoreCase(configs.get(CgAutoListConstant.CONFIG_ISTREE).toString());
@ -169,12 +170,12 @@ public class CgAutoListController extends BaseController{
params.put(parentIdFieldName, "=" + treeId);
}
}
//------------------update-end-------2015年6月1日----author:zhongsy------for:表单配置支持树形------------
int p = page==null?1:Integer.parseInt(page);
int r = rows==null?99999:Integer.parseInt(rows);
//step.3 进行查询返回结果如果为tree的下级数据则不需要分页
//------------------update-start-------2015年6月1日----author:zhongsy------for:表单配置支持树形------------
List<Map<String, Object>> result = null;
if(isTree && treeId !=null) {
//防止下级数据太大最大只取500条
@ -188,7 +189,7 @@ public class CgAutoListController extends BaseController{
cgTableService.treeFromResultHandle(table, parentIdFieldName, parentIdFieldType,
result);
}
//------------------update-end-------2015年6月1日----author:zhongsy------for:表单配置支持树形------------
//处理页面中若存在checkbox只能显示code值而不能显示text值问题
Map<String, Object> dicMap = new HashMap<String, Object>();
@ -224,14 +225,14 @@ public class CgAutoListController extends BaseController{
PrintWriter writer;
try {
writer = response.getWriter();
//------------------update-start-------2015年6月1日----author:zhongsy------for:表单配置支持树形------------
if(isTree && treeId !=null) {
//下级列表
writer.println(QueryParamUtil.getJson(result));
}else {
writer.println(QueryParamUtil.getJson(result,size));
}
//------------------update-end-------2015年6月1日----author:zhongsy------for:表单配置支持树形------------
writer.flush();
} catch (IOException e) {
e.printStackTrace();
@ -269,9 +270,9 @@ public class CgAutoListController extends BaseController{
// }
for(DictEntity dictEntity:dicDataList){
if(value.equalsIgnoreCase(dictEntity.getTypecode())){
//------------------update-begin------for:-国际化处理-----------------------author:zhagndaihao------------
r.put(bean.getFieldName(),MutiLangUtil.getMutiLangInstance().getLang(dictEntity.getTypename()));
//------------------update-end-----for:-国际化处理----------------------------author:zhagndaihao---------
}
}
}
@ -342,7 +343,7 @@ public class CgAutoListController extends BaseController{
List<Map> queryList = new ArrayList<Map>();
StringBuilder fileds = new StringBuilder();
StringBuilder initQuery = new StringBuilder();
//------------------update-begin-------2014年9月3日----author:JueYue------for:-列表数据隐藏权限------------
Set<String> operationCodes = (Set<String>) request.getAttribute(Globals.OPERATIONCODES);
Map<String,TSOperation> operationCodesMap = new HashMap<String, TSOperation>();
if(operationCodes != null){
@ -358,7 +359,7 @@ public class CgAutoListController extends BaseController{
if(operationCodesMap.containsKey(bean.getFieldName())) {
continue;
}
//------------------update-end---2014年9月3日----author:JueYue------for:-列表数据隐藏权限------------
Map fm = new HashMap<String, Object>();
fm.put(CgAutoListConstant.FILED_ID, bean.getFieldName());
fm.put(CgAutoListConstant.FIELD_TITLE, bean.getContent());

@ -79,10 +79,10 @@ public class CgAutoListRestController extends BaseController{
loadVars(configs,paras,request);
//step.4 组合模板+数据参数,进行页面展现
CgFormHeadEntity head = cgFormFieldService.getCgFormHeadByTableName(id);
//update-begin--Author:张忠亮 Date:20150707 foronline表单风格加入录入、编辑、列表、详情页面设置
CgformTemplateEntity entity=cgformTemplateService.findByCode(head.getFormTemplate());
String html = viewEngine.parseTemplate(TemplateUtil.getTempletPath(entity, 0, TemplateUtil.TemplateType.LIST), paras);
//update-end--Author:张忠亮 Date:20150707 foronline表单风格加入录入、编辑、列表、详情页面设置
try {
response.setContentType("text/html");
response.setHeader("Cache-Control", "no-store");
@ -155,7 +155,7 @@ public class CgAutoListRestController extends BaseController{
List<Map> queryList = new ArrayList<Map>();
StringBuilder fileds = new StringBuilder();
StringBuilder initQuery = new StringBuilder();
//------------------update-begin-------2014年9月3日----author:JueYue------for:-列表数据隐藏权限------------
Set<String> operationCodes = (Set<String>) request.getAttribute(Globals.OPERATIONCODES);
Map<String,TSOperation> operationCodesMap = new HashMap<String, TSOperation>();
if(operationCodes != null){
@ -171,7 +171,7 @@ public class CgAutoListRestController extends BaseController{
if(operationCodesMap.containsKey(bean.getFieldName())) {
continue;
}
//------------------update-end---2014年9月3日----author:JueYue------for:-列表数据隐藏权限------------
Map fm = new HashMap<String, Object>();
fm.put(CgAutoListConstant.FILED_ID, bean.getFieldName());
fm.put(CgAutoListConstant.FIELD_TITLE, bean.getContent());

@ -73,7 +73,7 @@ public class CgFormBuildController extends BaseController {
public void setMessage(String message) {
this.message = message;
}
//update-begin--Author:许国杰 Date:20151219 for#813 【online表单】扩展出三个请求独立的添加、查看、编辑请求原来的保留
@RequestMapping(params = "goAddFtlForm")
public void goAddFtlForm(HttpServletRequest request,HttpServletResponse response) {
ftlForm(request,response);
@ -86,7 +86,7 @@ public class CgFormBuildController extends BaseController {
public void goDatilFtlForm(HttpServletRequest request,HttpServletResponse response) {
ftlForm(request,response);
}
//update-end--Author:许国杰 Date:20151219 for#813 【online表单】扩展出三个请求独立的添加、查看、编辑请求原来的保留
//add-start--Author:scott Date:20160301 foronline表单移动样式单独配置
/**
@ -118,10 +118,10 @@ public class CgFormBuildController extends BaseController {
String tableName =request.getParameter("tableName");
Map<String, Object> data = new HashMap<String, Object>();
String id = request.getParameter("id");
//update-begin--Author:张忠亮 Date:20150707 foronline表单风格加入录入、编辑、列表、详情页面设置
String mode=request.getParameter("mode");
String templateName=tableName+"_";
//update-begin--Author:张忠亮 Date:20151019 forurl中加入olstylecode 可指定风格
TemplateUtil.TemplateType templateType=TemplateUtil.TemplateType.LIST;
if(StringUtils.isBlank(id)){
templateName+=TemplateUtil.TemplateType.ADD.getName();
@ -144,7 +144,7 @@ public class CgFormBuildController extends BaseController {
if(StringUtils.isNotEmpty(id)){
dataForm = dataBaseService.findOneForJdbc(tableName, id);
}
//update-begin--Author:zhoujf Date:20151223 for恢复--------------------
Iterator it=dataForm.entrySet().iterator();
while(it.hasNext()){
Map.Entry entry=(Map.Entry)it.next();
@ -152,7 +152,7 @@ public class CgFormBuildController extends BaseController {
Object ov=entry.getValue();
data.put(ok, ov);
}
//update-begin--Author:zhoujf Date:20151223 for恢复--------------------
Map<String, Object> tableData = new HashMap<String, Object>();
//获取主表或单表表单数据
tableData.put(tableName, dataForm);
@ -173,9 +173,9 @@ public class CgFormBuildController extends BaseController {
//装载单表/(主表和附表)表单数据
data.put("data", tableData);
data.put("id", id);
//update-begin--Author:钟世云 Date:20150610 foronline支持树配置--------------------
data.put("head", head);
//update-end--Author:钟世云 Date:20150610 foronline支持树配置----------------------
//页面样式js引用
data.put(CgAutoListConstant.CONFIG_IFRAME, getHtmlHead(request));
@ -184,13 +184,13 @@ public class CgFormBuildController extends BaseController {
pushImages(data, id);
String content =null;
response.setContentType("text/html;charset=utf-8");
//update-begin--Author:张忠亮 Date:20151019 forurl中加入olstylecode 可指定风格
String urlTemplateName = request.getParameter("olstylecode");
//update-begin---author:scott---date:20160301-----for:online表单移动样式单独配置-----
if(oConvertUtils.isEmpty(urlTemplateName)){
urlTemplateName = (String) request.getAttribute("olstylecode");
}
//update-end---author:scott---date:20160301-----for:online表单移动样式单独配置-----
if(StringUtils.isNotBlank(urlTemplateName)){
data.put("this_olstylecode",urlTemplateName);
@ -201,7 +201,7 @@ public class CgFormBuildController extends BaseController {
LogUtil.info("-------------formTemplate-----------"+head.getFormTemplate());
content=getTableTemplate(templateName,request,data);
}
//update-end--Author:张忠亮 Date:20151019 forurl中加入olstylecode 可指定风格
response.getWriter().print(content);
long end = System.currentTimeMillis();
logger.debug("自定义表单生成耗时:"+(end-start)+" ms");
@ -210,7 +210,7 @@ public class CgFormBuildController extends BaseController {
}
}
//update-begin--Author:张忠亮 Date:20151020 forurl中加入olstylecode 可指定风格 代码优化
/**
* url
* @param templateName
@ -223,9 +223,9 @@ public class CgFormBuildController extends BaseController {
CgformTemplateEntity entity=cgformTemplateService.findByCode(templateName);
if(entity!=null){
FreemarkerHelper viewEngine = new FreemarkerHelper();
//update-begin---author:scott---date:20160301-----for:解决传递stylecode解析模板报错问题-----
dataMap.put("DictData", ApplicationContextUtil.getContext().getBean("dictDataTag"));
//update-end---author:scott---date:20160301-----for:解决传递stylecode解析模板报错问题-----
content = viewEngine.parseTemplate(TemplateUtil.getTempletPath(entity,0, templateType), dataMap);
}
return content;
@ -241,17 +241,17 @@ public class CgFormBuildController extends BaseController {
private String getTableTemplate(String templateName,HttpServletRequest request,Map data){
StringWriter stringWriter = new StringWriter();
BufferedWriter writer = new BufferedWriter(stringWriter);
//update--begin-------author:scott------date:20151118----for:online表单缓存问题---------------
String ftlVersion =request.getParameter("ftlVersion");
// String ftlVersion = oConvertUtils.getString(data.get("version"));
//update--begin-------author:scott------date:20151118----for:online表单缓存问题---------------
Template template = templetContext.getTemplate(templateName, ftlVersion);
try {
//update-begin---author:scott---date:20150118-----for:修改linux时间格式不对问题-------------
template.setDateTimeFormat("yyyy-MM-dd HH:mm:ss");
template.setDateFormat("yyyy-MM-dd");
template.setTimeFormat("HH:mm:ss");
//update-end---author:scott---date:20150118-----for:修改linux时间格式不对问题---------------
template.process(data, writer);
} catch (TemplateException e) {
e.printStackTrace();
@ -260,7 +260,7 @@ public class CgFormBuildController extends BaseController {
}
return stringWriter.toString();
}
//update-end--Author:张忠亮 Date:20151020 forurl中加入olstylecode 可指定风格 代码优化
private String getHtmlHead(HttpServletRequest request){
HttpSession session = ContextHolderUtils.getSession();
String lang = (String)session.getAttribute("lang");
@ -326,7 +326,7 @@ public class CgFormBuildController extends BaseController {
}
data.put("filesList", files);
}
//update-start--Author: jg_huangxg Date:20160113 forTASK #824 【online开发】控件类型扩展增加一个图片类型 image
/**
* (),
* @param data
@ -349,7 +349,7 @@ public class CgFormBuildController extends BaseController {
}
data.put("imageList", images);
}
//update-end--Author: jg_huangxg Date:20160113 forTASK #824 【online开发】控件类型扩展增加一个图片类型 image
/**
*
*
@ -513,9 +513,9 @@ public class CgFormBuildController extends BaseController {
}
data = CommUtils.mapConvert(data);
dataBaseService.executeSqlExtend(formId, buttonCode, data);
//update-start--Author:luobaoli Date:20150630 for 增加java增强逻辑处理
dataBaseService.executeJavaExtend(formId, buttonCode, data);
//update-end--Author:luobaoli Date:20150630 for 增加java增强逻辑处理
}
j.setSuccess(true);
message = "操作成功";

@ -81,7 +81,7 @@ public class CgFormBuildRestController extends BaseController {
try {
long start = System.currentTimeMillis();
String tableName = configId;
//update-begin--Author:张忠亮 Date:20150707 foronline表单风格加入录入、编辑、列表、详情页面设置
String mode=request.getParameter("mode");
String templateName=tableName+"_";
if(StringUtils.isBlank(id)){
@ -92,9 +92,11 @@ public class CgFormBuildRestController extends BaseController {
templateName+=TemplateUtil.TemplateType.UPDATE.getName();
}
// update-start--Author:zhangguoming Date:20140922 for根据ftlVersion动态读取模板
String ftlVersion =request.getParameter("ftlVersion");
Template template = templetContext.getTemplate(templateName, ftlVersion);
// update-end--Author:zhangguoming Date:20140922 for根据ftlVersion动态读取模板
//update-end--Author:张忠亮 Date:20150707 foronline表单风格加入录入、编辑、列表、详情页面设置
StringWriter stringWriter = new StringWriter();
BufferedWriter writer = new BufferedWriter(stringWriter);
Map<String, Object> data = new HashMap<String, Object>();
@ -136,9 +138,9 @@ public class CgFormBuildRestController extends BaseController {
//装载单表/(主表和附表)表单数据
data.put("data", tableData);
data.put("id", id);
//update-begin--Author:钟世云 Date:20150610 foronline支持树配置--------------------
data.put("head", head);
//update-end--Author:钟世云 Date:20150610 foronline支持树配置----------------------
//页面样式js引用
data.put(CgAutoListConstant.CONFIG_IFRAME, getHtmlHead(request));

@ -0,0 +1,349 @@
package org.jeecgframework.web.cgform.controller.build;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.jeecgframework.core.common.exception.BusinessException;
import org.jeecgframework.core.util.JSONHelper;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.web.cgform.common.CommUtils;
import org.jeecgframework.web.cgform.entity.config.CgFormHeadEntity;
import org.jeecgframework.web.cgform.service.autolist.CgTableServiceI;
import org.jeecgframework.web.cgform.service.build.DataBaseService;
import org.jeecgframework.web.cgform.service.config.CgFormFieldServiceI;
import org.jeecgframework.web.cgform.util.SignatureUtil;
import org.jeecgframework.web.cgform.util.TableJson;
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.ResponseBody;
@Controller
@RequestMapping("/cgFormDataController")
public class CgFormDataController {
@Autowired
private DataBaseService dataBaseService;
@Autowired
private CgTableServiceI cgTableService;
@Autowired
private CgFormFieldServiceI cgFormFieldService;
/**
* key
*/
private static final String SIGN_KEY = "26F72780372E84B6CFAED6F7B19139CC47B1912B6CAED753";
/**
* onlinegetFormInfo
*
* @return
*/
@RequestMapping(params = "getFormInfo")
@ResponseBody
public TableJson getFormInfo(String tableName,
String id,
String sign,
HttpServletRequest request,HttpServletResponse response) {
TableJson j = new TableJson();
try {
//参数校验
if(StringUtil.isEmpty(tableName)){
throw new BusinessException("tableName不能为空");
}
if(StringUtil.isEmpty(id)){
throw new BusinessException("id不能为空");
}
if(StringUtil.isEmpty(sign)){
throw new BusinessException("sign不能为空");
}
//签名验证
Map<String, String> paramMap = new HashMap<String, String>();
paramMap.put("tableName", tableName);
paramMap.put("id", id);
paramMap.put("method", "getFormInfo");
if(!SignatureUtil.checkSign(paramMap, SIGN_KEY, sign)){
throw new BusinessException("签名验证失败");
}
//校验该表是否是online表单
CgFormHeadEntity head = cgFormFieldService.getCgFormHeadByTableName(tableName);
if(head==null){
throw new BusinessException("该表单不是online表单");
}
if(head.getJformType()==1){
//单表
j.setTableType(head.getJformType());
Map<String, Object> dataForm = dataBaseService.findOneForJdbc(tableName, id);
j.setTableData(dataForm);
}else if(head.getJformType()==2){
//主表
j.setTableType(head.getJformType());
Map<String, Object> mainForm = dataBaseService.findOneForJdbc(tableName, id);
j.setTableData(mainForm);
Map<String, Object> tableData = new HashMap<String, Object>();
String subTableStr = head.getSubTableStr();
if(StringUtils.isNotEmpty(subTableStr)){
String [] subTables = subTableStr.split(",");
List<Map<String,Object>> subTableData = new ArrayList<Map<String,Object>>();
for(String subTable:subTables){
subTableData = cgFormFieldService.getSubTableData(tableName,subTable,id);
tableData.put(subTable, subTableData);
}
}
j.setSubTableDate(tableData);
}else{
throw new BusinessException("不支持该类型的表单的操作");
}
} catch (BusinessException e) {
j.setSuccess(false);
j.setMsg(e.getMessage());
} catch (Exception e) {
j.setSuccess(false);
j.setMsg("系统异常");
}
return j;
}
/**
* onlinedeleteFormInfo
*
* @return
*/
@RequestMapping(params = "deleteFormInfo")
@ResponseBody
public TableJson deleteFormInfo(String tableName,
String id,
String sign,
HttpServletRequest request,HttpServletResponse response) {
TableJson j = new TableJson();
try {
//参数校验
if(StringUtil.isEmpty(tableName)){
throw new BusinessException("tableName不能为空");
}
if(StringUtil.isEmpty(id)){
throw new BusinessException("id不能为空");
}
if(StringUtil.isEmpty(sign)){
throw new BusinessException("sign不能为空");
}
//签名验证
Map<String, String> paramMap = new HashMap<String, String>();
paramMap.put("tableName", tableName);
paramMap.put("id", id);
paramMap.put("method", "deleteFormInfo");
if(!SignatureUtil.checkSign(paramMap, SIGN_KEY, sign)){
throw new BusinessException("签名验证失败");
}
//校验该表是否是online表单
CgFormHeadEntity head = cgFormFieldService.getCgFormHeadByTableName(tableName);
if(head==null){
throw new BusinessException("该表单不是online表单");
}
if(head.getJformType()!=1&&head.getJformType()!=2){
throw new BusinessException("不支持该类型的表单的操作");
}
cgTableService.delete(tableName, id);
j.setMsg("删除成功");
} catch (BusinessException e) {
j.setSuccess(false);
j.setMsg(e.getMessage());
} catch (Exception e) {
j.setSuccess(false);
j.setMsg("系统异常");
}
return j;
}
/**
* onlineaddFormInfo
*
* @return
*/
@RequestMapping(params = "addFormInfo")
@ResponseBody
public TableJson addFormInfo(String tableName,
String id,
String data,
String sign,
HttpServletRequest request,HttpServletResponse response) {
TableJson j = new TableJson();
try {
//参数校验
if(StringUtil.isEmpty(tableName)){
throw new BusinessException("tableName不能为空");
}
if(StringUtil.isEmpty(id)){
throw new BusinessException("id不能为空");
}
if(StringUtil.isEmpty(data)){
throw new BusinessException("data不能为空");
}
if(StringUtil.isEmpty(sign)){
throw new BusinessException("sign不能为空");
}
//签名验证
Map<String, String> paramMap = new HashMap<String, String>();
paramMap.put("tableName", tableName);
paramMap.put("id", id);
paramMap.put("data", data);
paramMap.put("method", "addFormInfo");
if(!SignatureUtil.checkSign(paramMap, SIGN_KEY, sign)){
throw new BusinessException("签名验证失败");
}
//校验该表是否是online表单
CgFormHeadEntity head = cgFormFieldService.getCgFormHeadByTableName(tableName);
if(head==null){
throw new BusinessException("该表单不是online表单");
}
if(head.getJformType()!=1&&head.getJformType()!=2){
throw new BusinessException("不支持该类型的表单的操作");
}
Map<String, Object> dataForm = dataBaseService.findOneForJdbc(tableName, id);
if(dataForm!=null){
throw new BusinessException("表单数据已存在");
}
if(head.getJformType()==1){
Map<String, Object> formData;
try {
formData = new HashMap<String, Object>();
formData = JSONHelper.json2Map(data);
} catch (Exception e) {
throw new BusinessException("json解析异常");
}
formData.put("id", id);
dataBaseService.insertTable(tableName, formData);
}else if(head.getJformType()==2){
Map<String, List<Map<String, Object>>> formData;
try {
formData = new HashMap<String, List<Map<String,Object>>>();
formData = JSONHelper.json2MapList(data);
List<Map<String,Object>> list = formData.get(tableName);
if(list==null||list.size()<=0){
throw new BusinessException("主表数据异常");
}
Map<String,Object> mainMap = list.get(0);
if(mainMap.get("id")==null||"".equals((String)mainMap.get("id"))){
throw new BusinessException("主表数据缺少id");
}
if(!id.equals((String)mainMap.get("id"))){
throw new BusinessException("id与主表id不一致");
}
} catch (Exception e) {
throw new BusinessException("json解析异常");
}
// Map<String,List<Map<String,Object>>> mapMore =CommUtils.mapConvertMore(formData, tableName);
dataBaseService.insertTableMore(formData, tableName);
}
j.setMsg("新增表单数据成功");
} catch (BusinessException e) {
j.setSuccess(false);
j.setMsg(e.getMessage());
} catch (Exception e) {
j.setSuccess(false);
j.setMsg("系统异常");
}
return j;
}
/**
* onlineupdateFormInfo
*
* @return
*/
@RequestMapping(params = "updateFormInfo")
@ResponseBody
public TableJson updateFormInfo(String tableName,
String id,
String data,
String sign,
HttpServletRequest request,HttpServletResponse response) {
TableJson j = new TableJson();
try {
//参数校验
if(StringUtil.isEmpty(tableName)){
throw new BusinessException("tableName不能为空");
}
if(StringUtil.isEmpty(id)){
throw new BusinessException("id不能为空");
}
if(StringUtil.isEmpty(data)){
throw new BusinessException("data不能为空");
}
if(StringUtil.isEmpty(sign)){
throw new BusinessException("sign不能为空");
}
//签名验证
Map<String, String> paramMap = new HashMap<String, String>();
paramMap.put("tableName", tableName);
paramMap.put("id", id);
paramMap.put("data", data);
paramMap.put("method", "updateFormInfo");
if(!SignatureUtil.checkSign(paramMap, SIGN_KEY, sign)){
throw new BusinessException("签名验证失败");
}
//校验该表是否是online表单
CgFormHeadEntity head = cgFormFieldService.getCgFormHeadByTableName(tableName);
if(head==null){
throw new BusinessException("该表单不是online表单");
}
if(head.getJformType()!=1&&head.getJformType()!=2){
throw new BusinessException("不支持该类型的表单的操作");
}
Map<String, Object> dataForm = dataBaseService.findOneForJdbc(tableName, id);
if(dataForm==null){
throw new BusinessException("表单数据不存在");
}
if(head.getJformType()==1){
Map<String, Object> formData;
try {
formData = new HashMap<String, Object>();
formData = JSONHelper.json2Map(data);
} catch (Exception e) {
throw new BusinessException("json解析异常");
}
dataBaseService.updateTable(tableName,id, formData);
}else if(head.getJformType()==2){
Map<String, List<Map<String, Object>>> formData;
try {
formData = new HashMap<String, List<Map<String,Object>>>();
formData = JSONHelper.json2MapList(data);
List<Map<String,Object>> list = formData.get(tableName);
if(list==null||list.size()<=0){
throw new BusinessException("主表数据异常");
}
Map<String,Object> mainMap = list.get(0);
if(mainMap.get("id")==null||"".equals((String)mainMap.get("id"))){
throw new BusinessException("主表数据缺少id");
}
if(!id.equals((String)mainMap.get("id"))){
throw new BusinessException("id与主表id不一致");
}
} catch (Exception e) {
throw new BusinessException("json解析异常");
}
// Map<String,List<Map<String,Object>>> mapMore =CommUtils.mapConvertMore(formData, tableName);
dataBaseService.updateTableMore(formData, tableName);
}
j.setMsg("更新表单数据成功");
} catch (BusinessException e) {
j.setSuccess(false);
j.setMsg(e.getMessage());
} catch (Exception e) {
j.setSuccess(false);
j.setMsg("系统异常");
}
return j;
}
}

@ -621,7 +621,7 @@ public class CgformFtlController extends BaseController {
// System.out.println(json.getString("data"));
// // 判断有没有激活过的模板
// message = FormUtil.GetHtml(json.getString("parse"),json.getString("data"), action);
//update-begin--Author:jg_renjie Date:20150706 for更改解析前台传来的html
if(StringUtils.isNotBlank(parseForm)){
TemplateUtil tool = new TemplateUtil();
Map<String,Object> map = tool.processor(parseForm);
@ -629,7 +629,7 @@ public class CgformFtlController extends BaseController {
} else {
j.setMsg("");
}
//update-end--Author:jg_renjie Date:20150706 for更改解析前台传来的html
j.setSuccess(true);
} catch (Exception e) {
logger.info(e.getMessage());

@ -100,6 +100,8 @@ public class CgFormHeadController extends BaseController {
return new ModelAndView("jeecg/cgform/config/cgformSynChoice");
}
//update-begin--Author:luobaoli Date:20150705 for取消title参数修改"配置地址"生成的URL为REST风格
//update-begin--Author: jg_huangxg Date:20150806 for恢复title参数修改"配置地址"生成的URL为 .do风格
@RequestMapping(params = "popmenulink")
public ModelAndView popmenulink(ModelMap modelMap,
@RequestParam String url,
@ -108,7 +110,8 @@ public class CgFormHeadController extends BaseController {
modelMap.put("url",url);
return new ModelAndView("jeecg/cgform/config/popmenulink");
}
//update-end--Author: jg_huangxg Date:20150806 for恢复title参数修改"配置地址"生成的URL为 .do风格
//update-end--Author:luobaoli Date:20150705 for取消title参数修改"配置地址"生成的URL为REST风格
/**
* easyui AJAX
*
@ -124,13 +127,13 @@ public class CgFormHeadController extends BaseController {
DataGrid dataGrid) {
CriteriaQuery cq = new CriteriaQuery(CgFormHeadEntity.class,
dataGrid);
//update-start--Author:luobaoli Date:20150607 for添加表单查询过滤条件
String jformCategory = request.getParameter("jformCategory");
if(StringUtil.isNotEmpty(jformCategory)){
cq.eq("jformCategory", jformCategory);
cq.add();
}
//update-end--Author:luobaoli Date:20150607 for添加表单查询过滤条件
// 查询条件组装器
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq,
@ -250,9 +253,9 @@ public class CgFormHeadController extends BaseController {
@ResponseBody
public AjaxJson save(CgFormHeadEntity cgFormHead,
HttpServletRequest request) {
//update-begin--Author:张忠亮 Date:20151121 for清除缓存
templetContext.clearCache();
//update-end--Author:张忠亮 Date:20151121 for清除缓存
AjaxJson j = new AjaxJson();
CgFormHeadEntity oldTable =cgFormFieldService.getEntity(CgFormHeadEntity.class, cgFormHead.getId());
cgFormFieldService.removeSubTableStr4Main(oldTable);
@ -365,10 +368,10 @@ public class CgFormHeadController extends BaseController {
//cgFormHead.setTableName(cgFormHead.getTableName().replace(CgAutoListConstant.jform_, ""));
req.setAttribute("cgFormHeadPage", cgFormHead);
}
//update-start--Author:luobaoli Date:20150607 for增加表单分类列表
List<TSType> typeList = TSTypegroup.allTypes.get(MutiLangUtil.getMutiLangInstance().getLang("bdfl"));
req.setAttribute("typeList", typeList);
//update-end--Author:luobaoli Date:20150607 for增加表单分类列表
return new ModelAndView("jeecg/cgform/config/cgFormHead");
}
/**
@ -422,12 +425,13 @@ public class CgFormHeadController extends BaseController {
columnList.add(initCgFormFieldEntityString("update_name","更新人名称"));
columnList.add(initCgFormFieldEntityString("update_by", "更新人登录名称"));
columnList.add(initCgFormFieldEntityTime("update_date", "更新日期"));
//update-begin--Author:张忠亮 Date:20150613 for新增默认字段
columnList.add(initCgFormFieldEntityString("sys_org_code","所属部门"));
columnList.add(initCgFormFieldEntityString("sys_company_code", "所属公司"));
//update-end--Author:张忠亮 Date:20150613 for新增默认字段
//update-begin--Author:zhoujf Date:20160115 for新增流程状态默认字段
columnList.add(initCgFormFieldEntityBpmStatus());
//update-end--Author:zhoujf Date:20160115 for新增流程状态默认字段
return columnList;
}
/**

@ -286,9 +286,9 @@ public class JformGraphreportHeadController extends BaseController {
params.setHeadRows(1);
params.setNeedSave(true);
try {
//update-begin--Author:JueYue Date:20150523 forEasyPoi升级
List<JformGraphreportHeadPage> listCourses = ExcelImportUtil.importExcel(file.getInputStream(), JformGraphreportHeadPage.class, params);
//update-end--Author:JueYue Date:20150523 forEasyPoi升级
for(JformGraphreportHeadPage page:listCourses){
JformGraphreportHeadEntity headEntity=page.getJformGraphreportHeadEntity();
List<JformGraphreportItemEntity> itemEntities=page.getJformGraphreportItemList();

@ -369,9 +369,9 @@ public class ExcelTempletController extends BaseController {
String value = String.valueOf(r.get(bean.getFieldName()));
for (DictEntity dictEntity : dicDataList) {
if (value.equalsIgnoreCase(dictEntity.getTypecode())) {
//------------------update-begin------for:-国际化处理-----------------------author:zhagndaihao------------
r.put(bean.getFieldName(), MutiLangUtil.getMutiLangInstance().getLang(dictEntity.getTypename()));
//------------------update-end-----for:-国际化处理----------------------------author:zhagndaihao---------
}
}
}

@ -155,14 +155,14 @@ public class GenerateController extends BaseController {
//step.2 判断表是否存在
boolean tableexist = new JeecgReadTable().checkTableExist(tableName);
if(tableexist){
//update--begin-------author:scott------date:20151118----for:online生成器支持自定义word模板生成---------------
//step.3 判断是不是用用户自定义界面
CgformCodeGenerate generate = new CgformCodeGenerate(createFileProperty,generateEntity);
if(createFileProperty.getJspMode().equals("04")){
String formhtml = templetContextWord.autoFormGenerateHtml(tableName, null, null);
generate.setCgformJspHtml(formhtml);
}
//update--end-------author:scott------date:20151118----for:online生成器支持自定义word模板生成---------------
//step.4 调用代码生成器
generate.generateToFile();
@ -199,7 +199,7 @@ public class GenerateController extends BaseController {
*/
@RequestMapping(params = "dogenerateOne2Many")
@ResponseBody
public void dogenerateOne2Many(CodeParamEntity codeParamEntityIn,GenerateSubListEntity subTableListEntity,HttpServletRequest request,HttpServletResponse response){
public void dogenerateOne2Many(CodeParamEntity codeParamEntityIn,GenerateSubListEntity subTableListEntity,String jspMode,HttpServletRequest request,HttpServletResponse response){
AjaxJson j = new AjaxJson();
//step.1 设置主表
//从前台获取codeParamEntityIn
@ -237,7 +237,13 @@ public class GenerateController extends BaseController {
}
codeParamEntityIn.setSubTabParam(subTabParamIn);
//step.5 一对多(父子表)数据模型,代码生成
CgformCodeGenerateOneToMany.oneToManyCreate(subTabParamIn, codeParamEntityIn,mainG,subsG);
//update--begin-------author:zhoujf------date:20160318----for:online生成器支持bootstrap风格生成---------------
if("06".equals(jspMode)){
CgformCodeGenerateOneToMany.oneToManyCreateBootstap(subTabParamIn, codeParamEntityIn,mainG,subsG);
}else{
CgformCodeGenerateOneToMany.oneToManyCreate(subTabParamIn, codeParamEntityIn,mainG,subsG);
}
//update--end-------author:zhoujf------date:20160318----for:online生成器支持bootstrap风格生成---------------
//j.setMsg("成功生成增删改查->功能:"+codeParamEntityIn.getFtlDescription());
j.setMsg(codeParamEntityIn.getFtlDescription()+":功能生成成功,请刷新项目重启,菜单访问路径:"+CodeStringUtils.getInitialSmall(codeParamEntityIn.getEntityName())+"Controller.do?list");
}catch (Exception e) {

@ -548,10 +548,10 @@ public class CgformTemplateController extends BaseController {
}
//获取上传根路径
private String getUploadBasePath(HttpServletRequest request){
// update-start--Author:zhoujf Date:20150623 for文件basePath获取
// String path=request.getSession().getServletContext().getRealPath("/WEB-INF/classes/online/template");
String path= this.getClass().getResource("/").getPath()+"online/template";
// update-end--Author:zhoujf Date:20150623 for文件basePath获取
return path;
}

@ -191,13 +191,13 @@ public class CgformTransController {
cgFormField.setLength(Integer.valueOf(columnt
.getPrecision()));
}
//update-begin--Author:zhangdaihao Date:20140212 for[001]oracle下number类型数据库表导出表单默认长度为0同步失败
else{
if(cgFormField.getType().equals(DataBaseConst.INT)){
cgFormField.setLength(10);
}
}
//update-end--Author:zhangdaihao Date:20140212 for[001]oracle下number类型数据库表导出表单默认长度为0同步失败
if (StringUtil.isNotEmpty(columnt.getScale()))
cgFormField.setPointLength(Integer.valueOf(columnt
.getScale()));

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

@ -65,11 +65,11 @@ public class TempletContext {
return null;
}
String oldTableName = tableName;
// update-start--Author:zhangguoming Date:20140922 for根据ftlVersion动态读取模板
if (ftlVersion != null && ftlVersion.length() > 0) {
tableName = tableName + "&ftlVersion=" + ftlVersion;
}
// update-end--Author:zhangguoming Date:20140922 for根据ftlVersion动态读取模板
try {
if(CgAutoListConstant.SYS_MODE_DEV.equalsIgnoreCase(_sysMode)){//开发模式
template = freemarker.getTemplate(tableName,freemarker.getLocale(), ENCODING);
@ -128,7 +128,7 @@ public class TempletContext {
public void setTags(Map<String, TemplateDirectiveModel> tags) {
this.tags = tags;
}
//update-begin--Author:张忠亮 Date:20151121 for清除缓存
public void clearCache(){
try{
ehCache.removeAll();
@ -136,5 +136,5 @@ public class TempletContext {
}
}
//update-end--Author:张忠亮 Date:20151121 for清除缓存
}

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

@ -54,9 +54,9 @@ public class AutoFormDbEntity implements java.io.Serializable {
private java.lang.String tbDbKey;
/**填报数据表*/
private java.lang.String tbDbTableName;
//update-begin--Author:zzl Date:20151028 for数据源名称
private String dbChName;
//update-end--Author:zzl Date:20151028 for数据源名称
/**
*: java.lang.String
*@return: java.lang.String
@ -347,7 +347,7 @@ public class AutoFormDbEntity implements java.io.Serializable {
return tbDbTableName;
}
//add-end--Author: jg_huangxg Date:20150723 for增加填报数据源字段和填报数据表字段
//update-begin--Author:zzl Date:20151028 for数据源名称
@Column(name ="DB_CH_NAME",nullable=true,length=32)
public String getDbChName() {
return dbChName;
@ -356,5 +356,5 @@ public class AutoFormDbEntity implements java.io.Serializable {
public void setDbChName(String dbChName) {
this.dbChName = dbChName;
}
//update-end--Author:zzl Date:20151028 for数据源名称
}

@ -53,10 +53,10 @@ public class AutoFormDbFieldEntity implements java.io.Serializable {
/**字段名*/
@Excel(name="字段名")
private java.lang.String fieldName;
//update-begin--Author:zzl Date:20151028 for就增加字段文本
@Excel(name="字段文本")
private String fieldText;
//update-end--Author:zzl Date:20151028 for就增加字段文本
/**
*: java.lang.String
*@return: java.lang.String
@ -237,6 +237,7 @@ public class AutoFormDbFieldEntity implements java.io.Serializable {
this.fieldName = fieldName;
}
//update-begin--Author:zzl Date:20151028 for增加字段文本
@Column(name ="FIELD_Text",nullable=true,length=50)
public String getFieldText() {
return fieldText;
@ -245,6 +246,6 @@ public class AutoFormDbFieldEntity implements java.io.Serializable {
public void setFieldText(String fieldText) {
this.fieldText = fieldText;
}
//update-end--Author:zzl Date:20151028 for增加字段文本
}

@ -71,9 +71,9 @@ public class AutoFormEntity implements java.io.Serializable {
private java.lang.String dbId;
private java.lang.String autoFormId;
//update-begin--Author:zzl Date:20151028 for增加主数据源
private String mainTableSource;
//update-end--Author:zzl Date:20151028 for增加主数据源
/**
*: java.lang.String
*@return: java.lang.String
@ -311,7 +311,7 @@ public class AutoFormEntity implements java.io.Serializable {
public void setAutoFormId(java.lang.String autoFormId) {
this.autoFormId = autoFormId;
}
//update-begin--Author:zzl Date:20151028 for增加主数据源
@Column(name ="main_table_source",nullable=true)
public String getMainTableSource() {
return mainTableSource;
@ -321,4 +321,5 @@ public class AutoFormEntity implements java.io.Serializable {
this.mainTableSource = mainTableSource;
}
//update-end--Author:zzl Date:20151028 for增加主数据源
}

@ -63,12 +63,12 @@ public class CgformTemplateEntity implements java.io.Serializable {
private String templateComment;
private String templateZipName;
//update-begin--Author:张忠亮 Date:20150707 for加入 列表、添加、修改、详情模板名称
private String templateListName;
private String templateAddName;
private String templateUpdateName;
private String templateDetailName;
//update-end--Author:张忠亮 Date:20150707 for加入 列表、添加、修改、详情模板名称
/**
*: java.lang.String
*@return: java.lang.String

@ -11,11 +11,14 @@ import org.jeecgframework.web.cgform.exception.BusinessException;
*
*/
public interface DataBaseService {
//update-start--Author:luobaoli Date:20150615 for 调整接口,抛出异常
public void insertTable(String tableName, Map<String, Object> data) throws BusinessException ;
//update-end--Author:luobaoli Date:20150615 for 调整接口,抛出异常
//update-start--Author:luobaoli Date:20150630 for 调整接口,抛出异常
public int updateTable(String tableName,Object id, Map<String, Object> data) throws BusinessException ;
//update-end--Author:luobaoli Date:20150630 for 调整接口,抛出异常
public Map<String, Object> findOneForJdbc(String tableName, String id);
@ -31,6 +34,7 @@ public interface DataBaseService {
public Object getPkValue(String tableName);
//update-start--Author:luobaoli Date:20150630 for增加JAVA业务增强功能
/**
* java
* @param formId
@ -38,5 +42,5 @@ public interface DataBaseService {
* @param data
*/
public void executeJavaExtend(String formId, String buttonCode,Map<String, Object> data) throws BusinessException;
//update-end--Author:luobaoli Date:20150630 for增加JAVA业务增强功能
}

@ -5,7 +5,7 @@ import org.jeecgframework.core.common.service.CommonService;
import java.util.Map;
public interface CgformFtlServiceI extends CommonService{
// update-start--Author:zhangguoming Date:20140922 for根据ftlVersion动态读取模板
/**
* tableNameform
* <li> ftlVersion </li>
@ -14,7 +14,7 @@ public interface CgformFtlServiceI extends CommonService{
* @return form
*/
public Map<String,Object> getCgformFtlByTableName(String tableName, String ftlVersion);
// update-end--Author:zhangguoming Date:20140922 for根据ftlVersion动态读取模板
/**
* tableNameform

@ -86,9 +86,9 @@ public class CgTableServiceImpl extends CommonServiceImpl implements CgTableServ
}
data = CommUtils.mapConvert(data);
dataBaseService.executeSqlExtend(head.getId(), "delete", data);
//update-start--Author:luobaoli Date:20150630 for 增加delete按纽java增强逻辑处理
dataBaseService.executeJavaExtend(head.getId(), "delete", data);
//update-start--Author:luobaoli Date:20150630 for 增加delete按纽java增强逻辑处理
}
//step.1 删除表
StringBuilder deleteSql = new StringBuilder();
@ -153,7 +153,7 @@ public class CgTableServiceImpl extends CommonServiceImpl implements CgTableServ
}
}
}
//update-begin--Author:JueYue Date:20140831 foronlinecoding 数据权限
Object dataRuleSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();//ContextHolderUtils.getRequest().getAttribute(Globals.MENU_DATA_AUTHOR_RULE_SQL);
if(dataRuleSql != null && !dataRuleSql.equals("")){
if(params.size() == 0) {
@ -161,7 +161,7 @@ public class CgTableServiceImpl extends CommonServiceImpl implements CgTableServ
}
sqlB.append(dataRuleSql);
}
//update-end--Author:JueYue Date:20140831 foronlinecoding 数据权限
}

@ -90,17 +90,17 @@ public class DataBaseServiceImpl extends CommonServiceImpl implements DataBaseSe
}
String sql = "INSERT INTO " + tableName + " (" + insertKey + ") VALUES (" + insertValue + ")";
Object key = null;
//update-begin--Author: jg_huangxg Date: 20150626 for[bugfree号]删除异常捕获
key = this.executeSqlReturnKey(sql,data);
//update-end--Author: jg_huangxg Date: 20150626 for[bugfree号]删除异常捕获
if(key!=null && key instanceof Long){
data.put("id", key);
}
if(cgFormHeadEntity!=null){
executeSqlExtend(cgFormHeadEntity.getId(),"add",data);
//update-start--Author:luobaoli Date:20150630 for 增加add按纽java增强逻辑处理
executeJavaExtend(cgFormHeadEntity.getId(),"add",data);
//update-end--Author:luobaoli Date:20150630 for 增加add按纽java增强逻辑处理
}
}
/**
@ -179,11 +179,11 @@ public class DataBaseServiceImpl extends CommonServiceImpl implements DataBaseSe
data.put(String.valueOf(key), newV);
}
}
//update---start--authorJueYue---------date20140824---------for默认值无效
} else if(oConvertUtils.isNotEmpty(fieldConfigs.get(key).getFieldDefault())) {
data.remove(key.toString().toLowerCase());
}
//update---end--authorJueYue---------date20140824---------for默认值无效
}
return data;
}
@ -194,7 +194,7 @@ public class DataBaseServiceImpl extends CommonServiceImpl implements DataBaseSe
* @param id id
* @param data map
*/
//update-start--Author:luobaoli Date:20150630 for 抛出异常到controller中
public int updateTable(String tableName, Object id, Map<String, Object> data) throws BusinessException {
fillUpdateSysVar(data);
dataAdapter(tableName,data);
@ -223,13 +223,13 @@ public class DataBaseServiceImpl extends CommonServiceImpl implements DataBaseSe
if(cgFormHeadEntity!=null){
executeSqlExtend(cgFormHeadEntity.getId(),"update",data);
//update-start--Author:luobaoli Date:20150630 for 增加update按纽java增强逻辑处理
executeJavaExtend(cgFormHeadEntity.getId(),"update",data);
//update-end--Author:luobaoli Date:20150630 for 增加update按纽java增强逻辑处理
}
return num;
}
//update-end--Author:luobaoli Date:20150630 for 抛出异常到controller中
/**
*
@ -240,8 +240,8 @@ public class DataBaseServiceImpl extends CommonServiceImpl implements DataBaseSe
public Map<String, Object> findOneForJdbc(String tableName, String id) {
StringBuffer sqlBuffer = new StringBuffer();
sqlBuffer.append("select * from ").append(tableName);
sqlBuffer.append(" where id='").append(id).append("'");
Map<String, Object> map = this.findOneForJdbc(sqlBuffer.toString());
sqlBuffer.append(" where id= ? ");
Map<String, Object> map = commonDao.findOneForJdbc(sqlBuffer.toString(), id);
return map;
}
@ -304,10 +304,10 @@ public class DataBaseServiceImpl extends CommonServiceImpl implements DataBaseSe
sql = sql.replace("#{UUID}", UUIDGenerator.generate());
}
for (String key : params.keySet()) {
//update-begin--Author:JueYue Date:20140425 forString不能强转
// sql = sql.replace("${" + key + "}", "'"+String.valueOf(params.get(key))+"'");
sql = sql.replace("#{" + key + "}",String.valueOf(params.get(key)));
//update-end--Author:JueYue Date:20140425 forString不能强转
}
return sql;
}
@ -320,8 +320,10 @@ public class DataBaseServiceImpl extends CommonServiceImpl implements DataBaseSe
//消除字段
String [] filterName = {"tableName","saveOrUpdateMore"};
mainMap = CommUtils.attributeMapFilter(mainMap,filterName);
Object pkValue = getPkValue(mainTableName);
mainMap.put("id", pkValue);
if(mainMap.get("id")==null||"".equals((String)mainMap.get("id"))){
Object pkValue = getPkValue(mainTableName);
mainMap.put("id", pkValue);
}
insertTable(mainTableName, mainMap);
//插入附表信息
//去除主表信息
@ -590,7 +592,8 @@ public class DataBaseServiceImpl extends CommonServiceImpl implements DataBaseSe
}
return flag;
}
//update-start--Author:luobaoli Date:20150630 for 增加JAVA业务增强功能
/**
* JAVA
*/
@ -600,7 +603,7 @@ public class DataBaseServiceImpl extends CommonServiceImpl implements DataBaseSe
if(cgformEnhanceJavaEntity!=null){
String cgJavaType = cgformEnhanceJavaEntity.getCgJavaType();
String cgJavaValue = cgformEnhanceJavaEntity.getCgJavaValue();
//update-start--Author:luobaoli Date:20150701 for 允许springKey或者javaClass为空
if(StringUtil.isNotEmpty(cgJavaValue)){
Object obj = null;
try {
@ -620,7 +623,7 @@ public class DataBaseServiceImpl extends CommonServiceImpl implements DataBaseSe
throw new BusinessException("执行JAVA增强出现异常");
}
}
//update-end--Author:luobaoli Date:20150701 for 允许springKey或者javaClass为空
}
}
@ -635,6 +638,6 @@ public class DataBaseServiceImpl extends CommonServiceImpl implements DataBaseSe
}
return null;
}
//update-end--Author:luobaoli Date:20150630 for 增加JAVA业务增强功能
}

@ -13,7 +13,7 @@ import java.util.Map;
@Service("cgformFtlService")
@Transactional
public class CgformFtlServiceImpl extends CommonServiceImpl implements CgformFtlServiceI {
// update-start--Author:zhangguoming Date:20140922 for根据ftlVersion动态读取模板
@Override
public Map<String, Object> getCgformFtlByTableName(String tableName, String ftlVersion) {
StringBuilder sql = new StringBuilder("");
@ -27,7 +27,7 @@ public class CgformFtlServiceImpl extends CommonServiceImpl implements CgformFtl
}
return null;
}
// update-end--Author:zhangguoming Date:20140922 for根据ftlVersion动态读取模板
/**
* tableNameform

@ -160,14 +160,15 @@ public class DbTableProcess {
dbExport = new SchemaExport(newconf,SessionFactoryUtils.getDataSource(
session.getSessionFactory()).getConnection());
dbExport.execute(true, true, false, true);
//update-begin--Author:Robin Date:20140507 forTASK #409 字段长度未注明时,显示同步数据库成功,但实则未创建数据表
//抛出执行异常,抛出第一个即可
@SuppressWarnings("unchecked")
List<Exception> exceptionList = dbExport.getExceptions();
for (Exception exception : exceptionList) {
throw new DBException(exception.getMessage());
}
//update-end--Author:Robin Date:20140507 forTASK #409 字段长度未注明时,显示同步数据库成功,但实则未创建数据表
}
/**

@ -106,7 +106,7 @@ public class CgformEnhanceJavaServiceImpl extends CommonServiceImpl implements C
public boolean checkClassOrSpringBeanIsExist(CgformEnhanceJavaEntity cgformEnhanceJavaEntity) {
String cgJavaType = cgformEnhanceJavaEntity.getCgJavaType();
String cgJavaValue = cgformEnhanceJavaEntity.getCgJavaValue();
//update-start--Author:luobaoli Date:20150701 for 如果springKey或者javaClass值为空时不做操作
if(StringUtil.isNotEmpty(cgJavaValue)){
try {
if("class".equals(cgJavaType)){
@ -125,7 +125,7 @@ public class CgformEnhanceJavaServiceImpl extends CommonServiceImpl implements C
return false;
}
}
//update-end--Author:luobaoli Date:20150701 for 如果springKey或者javaClass值为空时不做操作
return true;
}
}

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

@ -79,9 +79,9 @@ public class FormHtmlUtilWord {
if(cgFormFieldEntity.getFieldLength()!=null&&cgFormFieldEntity.getFieldLength()>0){
html.append("style=\"width:").append(cgFormFieldEntity.getFieldLength()).append("px\" ");
}
//update--begin---author:scott------date:20151118---for:online代码生成自定义word模板----------------------
html.append("value=\"\\@{onlineCodeGenereateEntityKey@.").append(cgFormFieldEntity.getFieldName()).append("}\" ");
//update--begin---author:scott------date:20151118---for:online代码生成自定义word模板---------------------
if("Y".equals(cgFormFieldEntity.getIsNull())){
html.append("ignore=\"ignore\" ");
}

@ -88,11 +88,11 @@ public class TempletContextWord {
return null;
}
String oldTableName = tableName;
// update-start--Author:zhangguoming Date:20140922 for根据ftlVersion动态读取模板
if (ftlVersion != null && ftlVersion.length() > 0) {
tableName = tableName + "&ftlVersion=" + ftlVersion;
}
// update-end--Author:zhangguoming Date:20140922 for根据ftlVersion动态读取模板
try {
if(CgAutoListConstant.SYS_MODE_DEV.equalsIgnoreCase(_sysMode)){//开发模式
template = freemarker.getTemplate(tableName,freemarker.getLocale(), ENCODING);

@ -245,9 +245,9 @@ public class MigrateForm<T> {
DBTable<T> dbTable = new DBTable<T>();
dbTable.setTableName(PublicUtil.getTableName(sql));
dbTable.setClass1(clazz);
//-- update-begin author xugj date:20160103 for: #851 controller 单元测试 升级spring 引起的变化
List<T> dataList = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(clazz));
//-- update-end author xugj date:20160103 for: #851 controller 单元测试 升级spring 引起的变化
dbTable.setTableData(dataList);
return dbTable;
}

@ -226,12 +226,13 @@ public class AutoFormTemplateParseUtil {
List<String> listlength = Arrays.asList(lenths.split("`"));
int tdCount = listTitle.size();
//update-start--Author:luobaoli Date:20150806 for拼接tableId及初始化判断是否有合计行
String tableId = name + "_table";
String dsName = getListDsName(listAutofield);
//是否有合计行
boolean isExistSum = false;
//update-start--Author:luobaoli Date:20150806 for如果数据源为空那么以当前上下文中的DB配置为准查询出表数据
String listfk = "<input type=\"hidden\" name=\"listctrl_fk_"+dsName+"\" value=\""+pkid+"\">";
String listfkdsid = "<input type=\"hidden\" name=\"listctrl_fkdsid_"+dsName+"\" value=\""+fkdsid+"\">";
String rowTemplet = getListctrlRowTemplet(name,atrrMap);
@ -479,13 +480,13 @@ public class AutoFormTemplateParseUtil {
if ((i+1) == tdCount)// 最后一列不显示
{
//update-begin--Author:jg_renjie Date:20150806 for第一列不显示删除功能
// if(row == 0){
// tr += "<td></td>";
// } else {
tr += "<td><button class=\"btn btn-small btn-success delrow\" type=\"button\">删除</button></td>";
// }
//update-end--Author:jg_renjie Date:20150806 for第一列不显示删除功能
}
if (row == 0)// 统计的行只有一行
@ -493,9 +494,9 @@ public class AutoFormTemplateParseUtil {
// region
if(!"1".equals(flag)){
if (sum != "") {
//update-begin--Author:jg_renjie Date:20150806 for当有合计时将是否有合计行标识置为true
isExistSum = true;
//update-end--Author:jg_renjie Date:20150806 for当有合计时将是否有合计行标识置为true
tdSum += MessageFormat
.format(
"<td>合计:<input class=\"input-small\" type=\"text\" value=\"value{0}\" name=\"{1}[total]\" {2}\">{3}</td>",
@ -524,7 +525,7 @@ public class AutoFormTemplateParseUtil {
temp_html = MessageFormat.format(temp, theader, sbTr.toString(), tdSum);
String divId = name+"_row_templet";
//update-begin--Author:jg_renjie Date:20150806 for添加“添加一行”及“删除”按钮的click方法
temp_html += "<script type=\"text/javascript\">";
temp_html += "$(function(){";
temp_html += "$(\"#"+name+"_listAdd\").click(function(){";
@ -543,7 +544,9 @@ public class AutoFormTemplateParseUtil {
//添加删除按钮的方法
temp_html +="$(\".delrow\").click(function(){$(this).parent().parent().remove();"+name+"_resetTrNum();});";
temp_html += "});";
//update-end--Author:jg_renjie Date:20150806 for当有合计时将是否有合计行标识置为true
//update-begin--Author:jg_renjie Date:20151017 for重置各行的序列号
temp_html +="function "+name+"_resetTrNum() {";
temp_html +="$(\"#"+name + "_table tbody tr\").each(function(i) {";
temp_html +=" $(':input, select,a', this).each(function() {";
@ -562,7 +565,7 @@ public class AutoFormTemplateParseUtil {
temp_html +="});";
temp_html +="}";
temp_html +="</script>";
//update-end--Author:jg_renjie Date:20151017 for重置各行的序列号
return temp_html;
}
@ -766,9 +769,9 @@ public class AutoFormTemplateParseUtil {
// String leipiplugins = (String)atrrMap.get("leipiplugins");
String orgtype = (String)atrrMap.get("orgtype");
String autofield = (String)atrrMap.get("autofield");
//update-begin--Author:jg_renjie Date:20151025 for增加datatype属性
String datatype = (String)atrrMap.get("datatype");
//update-end--Author:jg_renjie Date:20151025 for增加datatype属性
StringBuilder sb = new StringBuilder();
//add by jg_renjie at 20151029 for:自定义单行文本控件实现日历选项及datatype无值时提示错误
sb.append("<input ");
@ -789,11 +792,11 @@ public class AutoFormTemplateParseUtil {
sb.append(" title=").append("\"").append(title).append("\"");
sb.append(" name=").append("\"").append(name).append("\"");
sb.append(" value=").append("\"").append(getSingleValue(autofield,paras)).append("\"");
//update-begin--Author:jg_renjie Date:20151025 for增加datatype属性
if(StringUtils.isNotBlank(datatype)){
sb.append(" datatype=").append("\"").append(datatype).append("\"");
}
//update-end--Author:jg_renjie Date:20151025 for增加datatype属性
sb.append(" />");
html = sb.toString();
return html;

@ -97,11 +97,11 @@ public class QueryParamUtil {
if(!StringUtil.isEmpty(value)){
String result = "";
if(CgAutoListConstant.TYPE_STRING.equalsIgnoreCase(fieldType)){
//update-begin--Author:zzl Date:20151123 for加入配置属性可默认进行模糊查询
if(ResourceUtil.fuzzySearch&&(!value.contains("*"))){
value="*"+value+"*";
}
//update-end--Author:zzl Date:20151123 for加入配置属性可默认进行模糊查询
result = "'" +value+ "'";
}else if(CgAutoListConstant.TYPE_DATE.equalsIgnoreCase(fieldType)){
result = getDateFunction(value, "yyyy-MM-dd");

@ -0,0 +1,152 @@
package org.jeecgframework.web.cgform.util;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
import javax.servlet.http.HttpServletRequest;
import org.jeecgframework.core.common.exception.BusinessException;
import org.jeecgframework.p3.core.util.MD5Util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* .
*
* @author zhoujf
*/
public abstract class SignatureUtil {
private static final Logger LOG = LoggerFactory.getLogger(SignatureUtil.class);
/**
* ,MD5.
* @param paramMap Map,
* @param key
* @return
*/
public static String sign(Map<String, String> paramMap, String key) {
if(key == null){
throw new BusinessException("key不能为空");
}
String sign = createSign(paramMap,key);
return sign;
}
/**
* md5,:a-z,
*/
private static String createSign(Map<String, String> paramMap, String key) {
StringBuffer sb = new StringBuffer();
SortedMap<String,String> sort=new TreeMap<String,String>(paramMap);
Set<Entry<String, String>> es = sort.entrySet();
Iterator<Entry<String, String>> it = es.iterator();
while (it.hasNext()) {
@SuppressWarnings("rawtypes")
Map.Entry entry = (Map.Entry) it.next();
String k = (String) entry.getKey();
String v = (String) entry.getValue();
if (null != v && !"".equals(v)&& !"null".equals(v) && !"sign".equals(k) && !"key".equals(k)) {
sb.append(k + "=" + v + "&");
}
}
sb.append("key=" + key);
LOG.info("HMAC source:{}", new Object[] { sb.toString() } );
String sign = MD5Util.MD5Encode(sb.toString(), "UTF-8").toUpperCase();
LOG.info("HMAC:{}", new Object[] { sign } );
return sign;
}
/**
* , MD5.
* @param paramMap Map,
* @param key
* @param sign
* @return
*/
public static boolean checkSign(Map<String, String> paramMap, String key, String sign) {
if(key == null){
throw new BusinessException("key不能为空");
}
if(sign == null){
throw new BusinessException("需要验签的字符为空");
}
return sign.equals(sign(paramMap,key));
}
/**
* requestMap
* @param request
* @return
*/
public static Map<String,String> getSignMap(HttpServletRequest request){
Map<String,String> paramMap = new HashMap<String, String>();
Map<String, String[]> map = request.getParameterMap();
Set<Entry<String, String[]>> es = map.entrySet();
Iterator<Entry<String, String[]>> it = es.iterator();
while (it.hasNext()) {
@SuppressWarnings("rawtypes")
Map.Entry entry = (Map.Entry) it.next();
String k = (String) entry.getKey();
Object ov = entry.getValue();
String v="";
if(ov instanceof String[]){
String[] value=(String[])ov;
v= value[0];
}else{
v=ov.toString();
}
paramMap.put(k, v);
}
return paramMap;
}
/**
* requestMap
* @param request
* @return
*/
public static Map<String,String> getSignMap(String url){
Map<String,String> paramMap = new HashMap<String, String>();
url = url.substring(url.indexOf("?")+1);
String[] params = url.split("&");
for(int i=0;i<params.length;i++){
String param = params[i];
if(param.indexOf("=")!=-1){
String[] values = param.split("=");
if(values!=null&&values.length==2){
//update----begin---author:scott----date:20160115----for:昵称转码,签名问题处理----
if ("nickname".equals(values[0])) {
paramMap.put(values[0],URLDecoder.decode(values[1]));
}else{
paramMap.put(values[0], values[1]);
}
//update----begin---author:scott----date:20160115----for:昵称转码,签名问题处理----
}
}
}
return paramMap;
}
public static void main(String[] args) {
// String url = "http://www.saphao.com:9999/P3-Web/commonxrs/toIndex.do?actId=402880ee51334a520151334c3eaf0001&openid=oR0jFt_DTsAUJebWqGeq3A1VWfRw&nickname=JEFF&subscribe=1&jwid=&sign=F5E56A64B650A98E67CCCFFF871C7133";
// Map<String,String> t = getSignMap(url);
// for(Map.Entry<String, String> entry:t.entrySet()){
// System.out.println(entry.getKey()+"--->"+entry.getValue());
// }
String key = "26F72780372E84B6CFAED6F7B19139CC47B1912B6CAED753";
Map<String, String> paramMap = new HashMap<String, String>();
paramMap.put("tableName", "jform_le_main");
paramMap.put("id", "402813815398698b015398698b710000");
paramMap.put("data", "{jform_le_main:[{id=\"402813815398698b015398698b710000\",name:\"ceshi111111\",sex:1,remark:\"java developer\"}],jform_le_subone:[{main_id=\"402813815398698b015398698b710000\",name:\"ceshi111111\",sex:1,remark:\"java developer\"}],jform_le_submany:[{main_id=\"402813815398698b015398698b710000\",name:\"ceshi111111\",sex:1,remark:\"java developer\"},{name:\"ceshi111111\",sex:1,remark:\"java developer\"}]}");
paramMap.put("method", "updateFormInfo");
System.out.println(createSign(paramMap,key));
}
}

@ -0,0 +1,68 @@
package org.jeecgframework.web.cgform.util;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;
/**
* $.ajaxJSON
*
* @author
*
*/
public class TableJson {
private boolean success = true;// 是否成功
private String msg = "操作成功";// 提示信息
private Integer tableType;
private Object tableData = null;// 单表/主表信息
private Map<String, Object> subTableDate;// 子表信息
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public Integer getTableType() {
return tableType;
}
public void setTableType(Integer tableType) {
this.tableType = tableType;
}
public Object getTableData() {
return tableData;
}
public void setTableData(Object tableData) {
this.tableData = tableData;
}
public Map<String, Object> getSubTableDate() {
return subTableDate;
}
public void setSubTableDate(Map<String, Object> subTableDate) {
this.subTableDate = subTableDate;
}
@Override
public String toString() {
return "TableJson [success=" + success + ", msg=" + msg
+ ", tableType=" + tableType + ", tableData=" + tableData
+ ", subTableDate=" + subTableDate + "]";
}
}

@ -276,13 +276,13 @@ public class TemplateUtil {
}
if ((i+1) == tdCount)// 最后一列不显示 && 第一列也不显示
{
//update-begin--Author:jg_renjie Date:20150806 for第一列不显示删除功能
if(row == 0){
tr += "<td></td>";
} else {
tr += "<td><a href=\"javascript:void(0);\" class=\"delrow \">删除</a></td>";
}
//update-end--Author:jg_renjie Date:20150806 for第一列不显示删除功能
}
if (row == 0)// 统计的行只有一行
{

@ -71,10 +71,10 @@ public class CgReportController extends BaseController {
FreemarkerHelper viewEngine = new FreemarkerHelper();
//step.3 组合模板+数据参数,进行页面展现
loadVars(cgReportMap,request);
// update-start--Author:zhoujf Date:20150605 for页面css js引用 多风格切换
//step.4 页面css js引用
cgReportMap.put(CgAutoListConstant.CONFIG_IFRAME, getHtmlHead(request));
// update-end----Author:zhoujf Date:20150605 for页面css js引用 多风格切换
String html = viewEngine.parseTemplate("/org/jeecgframework/web/cgreport/engine/core/cgreportlist.ftl", cgReportMap);
try {
response.setContentType("text/html");
@ -129,10 +129,10 @@ public class CgReportController extends BaseController {
FreemarkerHelper viewEngine = new FreemarkerHelper();
//step.3 组合模板+数据参数,进行页面展现
loadVars(cgReportMap,request);
// update-start--Author:zhoujf Date:20150605 for页面css js引用 多风格切换
//step.4 页面css js引用
cgReportMap.put(CgAutoListConstant.CONFIG_IFRAME, getHtmlHead(request));
// update-end----Author:zhoujf Date:20150605 for页面css js引用 多风格切换
String html = viewEngine.parseTemplate("/org/jeecgframework/web/cgreport/engine/core/cgreportlistpopup.ftl", cgReportMap);
try {
response.setContentType("text/html");
@ -290,7 +290,7 @@ public class CgReportController extends BaseController {
//step.4 进行查询返回结果
int p = page==null?1:Integer.parseInt(page);
int r = rows==null?99999:Integer.parseInt(rows);
//update-begin--Author:张忠亮 Date:20150608 for多数据源支持
String dbKey=(String)configM.get("db_source");
List<Map<String, Object>> result=null;
Long size=0l;
@ -307,7 +307,7 @@ public class CgReportController extends BaseController {
result= cgReportService.queryByCgReportSql(querySql, queryparams, p, r);
size = cgReportService.countQueryByCgReportSql(querySql, queryparams);
}
//update-end--Author:张忠亮 Date:20150608 for多数据源支持
dealDic(result,items);
dealReplace(result,items);
response.setContentType("application/json");
@ -339,7 +339,7 @@ public class CgReportController extends BaseController {
}catch (Exception e) {
e.printStackTrace();
String errorInfo = "解析失败!<br><br>失败原因:";
//update-start--Author: jg_huangxg Date:20151210 for修改提示内容
//无法直接捕捉到:java.net.ConnectException异常
int i = e.getMessage().indexOf("Connection refused: connect");
@ -348,7 +348,7 @@ public class CgReportController extends BaseController {
}else{
errorInfo += "SQL语法错误.";
}
//update-end--Author: jg_huangxg Date:20151210 for修改提示内容
reJson.put("status", "error");
reJson.put("datas", errorInfo);
return reJson;

@ -73,7 +73,7 @@ public class CgExportExcelController extends BaseController {
}
}
//step.3 进行查询返回结果
//update-begin--Author:张忠亮 Date:20150608 for多数据源支持
String dbKey=(String)configM.get("db_source");
List<Map<String, Object>> result=null;
if(StringUtils.isNotBlank(dbKey)){

@ -51,9 +51,9 @@ $(function(){$('#${config_id}List').datagrid(
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 getSelectRows(){
//update-begin--Author:jg_renjie---------date:20150606--------for: popup功能多选只能返回一个值的错误
//return $('#${config_id}List').datagrid('getSelections');
//update-end--Author:jg_renjie---------date:20150606--------for: popup功能多选只能返回一个值的错误
/**
* 解决popup功能多选只能返回一个值的错误

@ -42,15 +42,17 @@ public class CgreportConfigHeadEntity implements java.io.Serializable {
private java.lang.String updateBy;
/**修改人名称*/
private java.lang.String updateName;
//update-begin--Author:张忠亮 Date:20150608 for加入多数据源属性
/**动态数据源*/
private String dbSource;
//update-end--Author:张忠亮 Date:20150608 for加入多数据源属性
//update-begin--Author:huangzq Date:20151129 for扩展增加俩字段非必填
/**返回值字段*/
private String returnValField;
/**返回文本字段*/
private String returnTxtField;
//update-end--Author:huangzq Date:20151129 for扩展增加俩字段非必填
/**
*: java.lang.String
@ -232,7 +234,7 @@ public class CgreportConfigHeadEntity implements java.io.Serializable {
public void setUpdateName(java.lang.String updateName){
this.updateName = updateName;
}
//update-begin--Author:张忠亮 Date:20150608 for加入多数据源属性
@Column(name ="db_source",length=36)
public String getDbSource() {
return dbSource;
@ -241,7 +243,10 @@ public class CgreportConfigHeadEntity implements java.io.Serializable {
public void setDbSource(String dbSource) {
this.dbSource = dbSource;
}
//update-end--Author:张忠亮 Date:20150608 for加入多数据源属性
//update-begin--Author:huangzq Date:20151129 for扩展增加俩字段非必填
@Column(name ="return_val_field",length=100)
public String getReturnValField() {
return returnValField;
@ -258,5 +263,5 @@ public class CgreportConfigHeadEntity implements java.io.Serializable {
public void setReturnTxtField(String returnTxtField) {
this.returnTxtField = returnTxtField;
}
//update-end--Author:huangzq Date:20151129 for扩展增加俩字段非必填
}

@ -282,9 +282,9 @@ public class CourseController extends BaseController {
params.setHeadRows(2);
params.setNeedSave(true);
try {
//update-begin--Author:JueYue Date:20150523 forEasyPoi升级
List<CourseEntity> listCourses = ExcelImportUtil.importExcel(file.getInputStream(),CourseEntity.class,params);
//update-end--Author:JueYue Date:20150523 forEasyPoi升级
for (CourseEntity course : listCourses) {
if(course.getName()!=null){
courseService.saveCourse(course);

@ -175,24 +175,24 @@ public class DemoController extends BaseController {
AjaxJson j = new AjaxJson();
String id = StringUtil.getEncodePra(req.getParameter("id"));
String floor = "";
//update-begin--Author:huangzq Date:20151127 for三级联调
if(StringUtil.isNotEmpty(id)){
if("ThreeLevelLinkage".equals(id)){
floor += "省:<select name=\"province\" id=\"provinceid\">"+"</select>" + "&nbsp;&nbsp;";
floor += "市:<select name=\"city\" id=\"cityid\">"+"</select>" + "&nbsp;&nbsp;";
floor += "县:<select name=\"county\" id=\"countyid\">"+"</select>" + "&nbsp;&nbsp;";
//update-end--Author:huangzq Date:20151127 for三级联调
}else{
CriteriaQuery cq = new CriteriaQuery(TSFunction.class);
cq.eq("TSFunction.id", id);
cq.add();
List<TSFunction> functions = systemService.getListByCriteriaQuery(cq, false);
if (functions.size() > 0) {
//update-begin--Author:张忠亮 Date:20150606 for优化国际化
for (TSFunction function : functions) {
floor += "<input type=\"checkbox\" name=\"floornum\" id=\"floornum\" value=\"" + function.getId() + "\">" + MutiLangUtil.getMutiLangInstance().getLang(function.getFunctionName()) + "&nbsp;&nbsp;";
}
//update-end--Author:张忠亮 Date:20150606 for优化国际化
} else {
floor += "没有子项目!";
}
@ -322,7 +322,8 @@ public class DemoController extends BaseController {
j.setMsg(message);
return j;
}
//update-begin--Author:luobaoli Date:20150707 for增加表单特殊布局DEMO新增/修改功能在当前页显示
/**
* demo
*/
@ -348,10 +349,12 @@ public class DemoController extends BaseController {
return new ModelAndView("jeecg/demo/base/layout/demoLayout");
}
//update-end--Author:luobaoli Date:20150707 for增加表单特殊布局DEMO新增/修改功能在当前页显示
//update-begin--Author:huangzq Date:2016-01-27 forTASK #866=>huangzq 【新功能】集成电子签章
@RequestMapping(params = "eSign")
public ModelAndView eSignDemo(HttpServletRequest request) {
return new ModelAndView("jeecg/demo/test/zsign");
}
//update-end--Author:huangzq Date:2016-01-27 forTASK #866=>huangzq 【新功能】集成电子签章
}

@ -9,13 +9,6 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.collections.CollectionUtils;
import org.jeecgframework.web.demo.entity.test.CKEditorEntity;
import org.jeecgframework.web.demo.entity.test.JeecgDemo;
import org.jeecgframework.web.demo.entity.test.JeecgDemoPage;
import org.jeecgframework.web.demo.service.test.JeecgDemoServiceI;
import org.jeecgframework.web.system.pojo.base.TSDepart;
import org.jeecgframework.web.system.service.SystemService;
import org.apache.log4j.Logger;
import org.jeecgframework.core.annotation.config.AutoMenu;
import org.jeecgframework.core.annotation.config.AutoMenuOperation;
@ -27,10 +20,16 @@ import org.jeecgframework.core.constant.Globals;
import org.jeecgframework.core.util.MyBeanUtils;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.tag.core.easyui.TagUtil;
import org.jeecgframework.tag.vo.datatable.SortDirection;
import org.jeecgframework.web.demo.entity.test.CKEditorEntity;
import org.jeecgframework.web.demo.entity.test.JeecgDemo;
import org.jeecgframework.web.demo.entity.test.JeecgDemoPage;
import org.jeecgframework.web.demo.service.test.JeecgDemoServiceI;
import org.jeecgframework.web.system.pojo.base.TSDepart;
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.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
@ -203,6 +202,9 @@ public class JeecgDemoController extends BaseController {
@RequestMapping(params = "datagrid")
public void datagrid(JeecgDemo jeecgDemo,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
CriteriaQuery cq = new CriteriaQuery(JeecgDemo.class, dataGrid);
//多字段排序
cq.addOrder("mobilePhone",SortDirection.asc);
cq.addOrder("age",SortDirection.asc);
//查询条件组装器
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, jeecgDemo,request.getParameterMap());
this.jeecgDemoService.getDataGridReturn(cq, true);
@ -415,7 +417,7 @@ public class JeecgDemoController extends BaseController {
public ModelAndView goDemo(HttpServletRequest request) {
return new ModelAndView("jeecg/demo/jeecgDemo/"+request.getParameter("demoPage"));
}
//update-begin--Author:张忠亮 Date:20150701 for保存新增/更新的行数据
/**
* /
@ -449,5 +451,5 @@ public class JeecgDemoController extends BaseController {
}
return j;
}
//update-end--Author:张忠亮 Date:20150701 for保存新增/更新的行数据
}

@ -92,10 +92,14 @@ public class JeecgEasyUIController extends BaseController {
this.jeecgJdbcService.getDatagrid1(jeecgJdbc, dataGrid);
TagUtil.datagrid(response, dataGrid);
// end of 方式1 ========================================= */
// 方式2, 取值自己处理(代码量多一些,但执行效率应该会稍高一些) -------------------------------
/*
this.jeecgJdbcService.getDatagrid2(jeecgJdbc, dataGrid);
TagUtil.datagrid(response, dataGrid);
// end of 方式2 ========================================= */
// 方式3, 取值进一步自己处理(直接转换成easyUI的datagrid需要的东西执行效率最高最自由) -------------------------------
//*
JSONObject jObject = this.jeecgJdbcService.getDatagrid3(jeecgJdbc, dataGrid);
responseDatagrid(response, jObject);
@ -167,7 +171,11 @@ public class JeecgEasyUIController extends BaseController {
req.setAttribute("departList", departList);
return new ModelAndView("jeecg/demo/notag/jeecgEasyUI");
}
// -----------------------------------------------------------------------------------
// 以下各函数可以提成共用部件 (Add by Quainty)
// -----------------------------------------------------------------------------------
public void responseDatagrid(HttpServletResponse response, JSONObject jObject) {
response.setContentType("application/json");
response.setHeader("Cache-Control", "no-store");

@ -83,10 +83,14 @@ public class JeecgJdbcController extends BaseController {
this.jeecgJdbcService.getDatagrid1(jeecgJdbc, dataGrid);
TagUtil.datagrid(response, dataGrid);
// end of 方式1 ========================================= */
// 方式2, 取值自己处理(代码量多一些,但执行效率应该会稍高一些) -------------------------------
/*
this.jeecgJdbcService.getDatagrid2(jeecgJdbc, dataGrid);
TagUtil.datagrid(response, dataGrid);
// end of 方式2 ========================================= */
// 方式3, 取值进一步自己处理(直接转换成easyUI的datagrid需要的东西执行效率最高最自由) -------------------------------
//*
JSONObject jObject = this.jeecgJdbcService.getDatagrid3(jeecgJdbc, dataGrid);
responseDatagrid(response, jObject);
@ -156,7 +160,11 @@ public class JeecgJdbcController extends BaseController {
}
return new ModelAndView("jeecg/demo/test/jeecgJdbc");
}
// -----------------------------------------------------------------------------------
// 以下各函数可以提成共用部件 (Add by Quainty)
// -----------------------------------------------------------------------------------
public void responseDatagrid(HttpServletResponse response, JSONObject jObject) {
response.setContentType("application/json");
response.setHeader("Cache-Control", "no-store");

@ -3,7 +3,9 @@ package org.jeecgframework.web.demo.controller.test;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@ -30,7 +32,8 @@ public class JeecgProcedureController extends BaseController{
public String procudure(HttpServletRequest request) {
return "jeecg/demo/base/procedure/procedure";
}
//update-begin--Author:luobaoli Date:20150711 for优化数据读取和解析过程
@RequestMapping(params = "datagrid")
public void datagrid(JeecgDemo demo,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
List dealFields = new ArrayList();
@ -41,8 +44,8 @@ public class JeecgProcedureController extends BaseController{
StringBuffer dbFields = SqlGenerateUtil.generateDBFields(demo,field,dealFields);//sql中需要查询的列
StringBuffer whereSql = SqlGenerateUtil.generateWhere(demo, request.getParameterMap());//sql查询的条件
List datas = null;
//scott 201602229 存储过程暂时不支持
List<Map<String,Object>> datas = null;
//scott 采用springjdbc 直接调用存储过程
try {
datas = jeecgProcedureService.queryDataByProcedure(tableName,dbFields.toString(),whereSql.toString());
} catch (Exception e) {
@ -53,10 +56,9 @@ public class JeecgProcedureController extends BaseController{
response.setHeader("Cache-Control", "no-store");
try {
PrintWriter pw = response.getWriter();
pw.write(TagUtil.getJson(dealFields,datas));
pw.write(TagUtil.getJsonByMap(dealFields,datas));
} catch (IOException e) {
e.printStackTrace();
}
}
}

@ -107,10 +107,10 @@ public class JpPersonController extends BaseController {
List<JpPersonEntity> listPersons;
try {
boolean isSuccess = true;
//update-begin--Author:JueYue Date:20150523 forEasyPoi升级
listPersons = ExcelImportUtil.importExcel(
file.getInputStream(), JpPersonEntity.class,new ImportParams());
//update-end--Author:JueYue Date:20150523 forEasyPoi升级
for (JpPersonEntity person : listPersons) {
person.setId(UUIDGenerator.generate());
if (person.getAge() == null || person.getCreatedt() == null || person.getSalary() == null) {

@ -114,9 +114,9 @@ public class ReportDemoController extends BaseController {
Long count = systemService.getCountForJdbc("SELECT COUNT(1) FROM T_S_student WHERE 1=1");
List lt = new ArrayList();
hc = new Highchart();
//update-begin--Author:JueYue Date:20140724 for国际化--------------------
hc.setName(mutiLangService.getLang(CLASS_STUDENT_COUNT_ANALYSIS));
//update-end--Author:JueYue Date:20140724 for国际化--------------------
hc.setType(reportType);
Map<String, Object> map;
if (userBroswerList.size() > 0) {

@ -56,6 +56,8 @@ public class JeecgJdbcServiceImpl extends CommonServiceImpl implements JeecgJdbc
}
// end of 方式1 ========================================= */
// 方式2, 取值自己处理(代码量多一些,但执行效率应该会稍高一些) -------------------------------
public void getDatagrid2(JeecgJdbcEntity pageObj, DataGrid dataGrid) {
String sqlWhere = getSqlWhere(pageObj);
@ -109,6 +111,7 @@ public class JeecgJdbcServiceImpl extends CommonServiceImpl implements JeecgJdbc
// end of 方式2 ========================================= */
// 推荐方法
// 方式3, 取值进一步自己处理(直接转换成easyUI的datagrid需要的东西执行效率最高最自由) -------------------------------
public JSONObject getDatagrid3(JeecgJdbcEntity pageObj, DataGrid dataGrid) {
String sqlWhere = getSqlWhere(pageObj);
@ -161,7 +164,10 @@ public class JeecgJdbcServiceImpl extends CommonServiceImpl implements JeecgJdbc
}
return sqlWhere;
}
// -----------------------------------------------------------------------------------
// 以下各函数可以提成共用部件 (Add by Quainty)
// -----------------------------------------------------------------------------------
/**
* easyUIDataGridJSONObject
* @param mapList :

@ -1,23 +1,28 @@
package org.jeecgframework.web.demo.service.impl.test;
import java.util.List;
import java.util.Map;
import org.jeecgframework.core.common.service.impl.CommonServiceImpl;
import org.jeecgframework.web.demo.dao.test.JeecgProcedureDao;
import org.jeecgframework.web.demo.entity.test.JeecgDemo;
import org.jeecgframework.web.demo.service.test.JeecgProcedureServiceI;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service("jeecgProcedureServiceImpl")
@Transactional
public class JeecgProcedureServiceImpl extends CommonServiceImpl implements JeecgProcedureServiceI{
public class JeecgProcedureServiceImpl extends JdbcDaoSupport implements JeecgProcedureServiceI{
//update-begin--Author:luobaoli Date:20150711 for新增调用存储过程的service方法
@Autowired
private JeecgProcedureDao jeecgProcedureDao;
@Override
public List queryDataByProcedure(String tableName, String fields, String whereSql) {
return jeecgProcedureDao.queryDataByProcedure(tableName, fields, whereSql);
//return jeecgProcedureDao.queryDataByProcedure(tableName, fields, whereSql);
String sql = "call formDataList('"+tableName+"','"+fields+"','"+whereSql+"')";
return this.getJdbcTemplate().queryForList(sql);
}
//update-end--Author:luobaoli Date:20150711 for新增调用存储过程的service方法
}

@ -2,10 +2,9 @@ package org.jeecgframework.web.demo.service.test;
import java.util.List;
import org.jeecgframework.core.common.service.CommonService;
public interface JeecgProcedureServiceI extends CommonService{
public interface JeecgProcedureServiceI{
//update-begin--Author:luobaoli Date:20150711 for新增调用存储过程的service接口
public List queryDataByProcedure(String tableName,String fields,String whereSql);
//update-end--Author:luobaoli Date:20150711 for新增调用存储过程的service接口
}

@ -76,10 +76,10 @@ public class GraphReportController extends BaseController {
FreemarkerHelper viewEngine = new FreemarkerHelper();
//step.3 组合模板+数据参数,进行页面展现
loadVars(cgReportMap);
// update-start--Author:zhoujf Date:20150605 for页面css js引用 多风格切换
//step.4 页面css js引用
cgReportMap.put(CgAutoListConstant.CONFIG_IFRAME, getHtmlHead(request));
// update-end----Author:zhoujf Date:20150605 for页面css js引用 多风格切换
String html = viewEngine.parseTemplate("/org/jeecgframework/web/graphreport/engine/core/graphreportlist.ftl", cgReportMap);
try {
response.setContentType("text/html");
@ -140,10 +140,10 @@ public class GraphReportController extends BaseController {
FreemarkerHelper viewEngine = new FreemarkerHelper();
//step.3 组合模板+数据参数,进行页面展现
loadVars(cgReportMap);
// update-start--Author:zhoujf Date:20150605 for页面css js引用 多风格切换
//step.4 页面css js引用
cgReportMap.put(CgAutoListConstant.CONFIG_IFRAME, getHtmlHead(request));
// update-end----Author:zhoujf Date:20150605 for页面css js引用 多风格切换
String html = viewEngine.parseTemplate("/org/jeecgframework/web/cgreport/engine/core/cgreportlistpopup.ftl", cgReportMap);
try {
response.setContentType("text/html");
@ -234,9 +234,9 @@ public class GraphReportController extends BaseController {
List<Map<String, Object>> dicDatas = null;
dictCodeOrSQL = dictCodeOrSQL.trim();
if(dictCodeOrSQL.toLowerCase().startsWith("select ")) {
//update-begin-----author:scott----date:20151105-------for:改造支持oracle--------
dictCodeOrSQL = dictCodeOrSQL.replaceAll("'[kK][eE][yY]'", "typecode").replaceAll("'[vV][aA][lL][uU][eE]'", "typename");
//update-end-----author:scott----date:20151105-------for:改造支持oracle--------
dicDatas = systemService.findForJdbc(dictCodeOrSQL, null);
}else {
dicDatas = queryDic(dictCodeOrSQL);

@ -0,0 +1,350 @@
package org.jeecgframework.web.onlinedoc.controller;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
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.ExceptionUtil;
import org.jeecgframework.core.util.MyBeanUtils;
import org.jeecgframework.core.util.ResourceUtil;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants;
import org.jeecgframework.tag.core.easyui.TagUtil;
import org.jeecgframework.web.onlinedoc.entity.OnlineDocEntity;
import org.jeecgframework.web.onlinedoc.service.OnlineDocServiceI;
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.RequestMethod;
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;
/**
* @Title: Controller
* @Description: 线
* @author onlineGenerator
* @date 2016-03-19 15:49:59
* @version V1.0
*
*/
@Scope("prototype")
@Controller
@RequestMapping("/onlineDocController")
public class OnlineDocController extends BaseController {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(OnlineDocController.class);
@Autowired
private OnlineDocServiceI onlineDocService;
@Autowired
private SystemService systemService;
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
/**
* 线
*
* @return
*/
@RequestMapping(params = "list")
public ModelAndView list(HttpServletRequest request) {
return new ModelAndView("jeecg/onlinedoc/onlineDocList");
}
/**
* easyui AJAX
*
* @param request
* @param response
* @param dataGrid
* @param user
*/
@RequestMapping(params = "datagrid")
public void datagrid(OnlineDocEntity onlineDoc,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
CriteriaQuery cq = new CriteriaQuery(OnlineDocEntity.class, dataGrid);
//查询条件组装器
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, onlineDoc, request.getParameterMap());
try{
//自定义追加查询条件
}catch (Exception e) {
throw new BusinessException(e.getMessage());
}
cq.add();
this.onlineDocService.getDataGridReturn(cq, true);
TagUtil.datagrid(response, dataGrid);
}
/**
* 线
*
* @return
*/
@RequestMapping(params = "doDel")
@ResponseBody
public AjaxJson doDel(OnlineDocEntity onlineDoc, HttpServletRequest request) {
AjaxJson j = new AjaxJson();
onlineDoc = systemService.getEntity(OnlineDocEntity.class, onlineDoc.getId());
message = "在线文档删除成功";
try{
onlineDocService.delete(onlineDoc);
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(",")){
OnlineDocEntity onlineDoc = systemService.getEntity(OnlineDocEntity.class,
id
);
onlineDocService.delete(onlineDoc);
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(OnlineDocEntity onlineDoc, HttpServletRequest request) {
AjaxJson j = new AjaxJson();
message = "在线文档添加成功";
try{
onlineDocService.save(onlineDoc);
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(OnlineDocEntity onlineDoc, HttpServletRequest request) {
AjaxJson j = new AjaxJson();
message = "在线文档更新成功";
OnlineDocEntity t = onlineDocService.get(OnlineDocEntity.class, onlineDoc.getId());
try {
MyBeanUtils.copyBeanNotNull2Bean(onlineDoc, t);
onlineDocService.saveOrUpdate(t);
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(OnlineDocEntity onlineDoc, HttpServletRequest req) {
if (StringUtil.isNotEmpty(onlineDoc.getId())) {
onlineDoc = onlineDocService.getEntity(OnlineDocEntity.class, onlineDoc.getId());
req.setAttribute("onlineDocPage", onlineDoc);
}
return new ModelAndView("jeecg/onlinedoc/onlineDoc-add");
}
/**
* 线
*
* @return
*/
@RequestMapping(params = "goUpdate")
public ModelAndView goUpdate(OnlineDocEntity onlineDoc, HttpServletRequest req) {
if (StringUtil.isNotEmpty(onlineDoc.getId())) {
onlineDoc = onlineDocService.getEntity(OnlineDocEntity.class, onlineDoc.getId());
req.setAttribute("onlineDocPage", onlineDoc);
}
return new ModelAndView("jeecg/onlinedoc/onlineDoc-update");
}
/**
*
*
* @return
*/
@RequestMapping(params = "upload")
public ModelAndView upload(HttpServletRequest req) {
req.setAttribute("controller_name","onlineDocController");
return new ModelAndView("common/upload/pub_excel_upload");
}
/**
* excel
*
* @param request
* @param response
*/
@RequestMapping(params = "exportXls")
public String exportXls(OnlineDocEntity onlineDoc,HttpServletRequest request,HttpServletResponse response
, DataGrid dataGrid,ModelMap modelMap) {
CriteriaQuery cq = new CriteriaQuery(OnlineDocEntity.class, dataGrid);
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, onlineDoc, request.getParameterMap());
List<OnlineDocEntity> onlineDocs = this.onlineDocService.getListByCriteriaQuery(cq,false);
modelMap.put(NormalExcelConstants.FILE_NAME,"在线文档");
modelMap.put(NormalExcelConstants.CLASS,OnlineDocEntity.class);
modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("在线文档列表", "导出人:"+ResourceUtil.getSessionUserName().getRealName(),
"导出信息"));
modelMap.put(NormalExcelConstants.DATA_LIST,onlineDocs);
return NormalExcelConstants.JEECG_EXCEL_VIEW;
}
/**
* excel 使
*
* @param request
* @param response
*/
@RequestMapping(params = "exportXlsByT")
public String exportXlsByT(OnlineDocEntity onlineDoc,HttpServletRequest request,HttpServletResponse response
, DataGrid dataGrid,ModelMap modelMap) {
modelMap.put(NormalExcelConstants.FILE_NAME,"在线文档");
modelMap.put(NormalExcelConstants.CLASS,OnlineDocEntity.class);
modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("在线文档列表", "导出人:"+ResourceUtil.getSessionUserName().getRealName(),
"导出信息"));
modelMap.put(NormalExcelConstants.DATA_LIST,new ArrayList());
return NormalExcelConstants.JEECG_EXCEL_VIEW;
}
@SuppressWarnings("unchecked")
@RequestMapping(params = "importExcel", method = RequestMethod.POST)
@ResponseBody
public AjaxJson importExcel(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(2);
params.setHeadRows(1);
params.setNeedSave(true);
try {
List<OnlineDocEntity> listOnlineDocEntitys = ExcelImportUtil.importExcel(file.getInputStream(),OnlineDocEntity.class,params);
for (OnlineDocEntity onlineDoc : listOnlineDocEntitys) {
onlineDocService.save(onlineDoc);
}
j.setMsg("文件导入成功!");
} catch (Exception e) {
j.setMsg("文件导入失败!");
logger.error(ExceptionUtil.getExceptionMessage(e));
}finally{
try {
file.getInputStream().close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return j;
}
//上传文件方法
@RequestMapping(params="ajaxUpload")
@ResponseBody
public String ajaxUpload(HttpServletRequest request) throws IllegalStateException, IOException {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
String fileName = "";
String uploadPath = "upload/";
String path =request.getSession().getServletContext().getRealPath("/")+uploadPath;
String realPath = "";
String oldName = "";
for (Iterator<String> it = multipartRequest.getFileNames(); it.hasNext();) {
String key = it.next();
MultipartFile mulfile = multipartRequest.getFile(key);
fileName = mulfile.getOriginalFilename();
oldName = fileName.substring(0,fileName.lastIndexOf("."));
fileName = rewriteFileName(fileName);
File file = new File(path + fileName);
mulfile.transferTo(file);
}
realPath = "{\"path\":\""+uploadPath+fileName+"\",\"oldName\":\"" + oldName + "\",\"newName\":\"" + fileName + "\"}";
return realPath;
}
//文件名称处理
private String rewriteFileName(String fileName) {
int pointIndex = fileName.lastIndexOf(".");
StringBuffer fileNameBuffer = new StringBuffer();
fileNameBuffer.append((new Date()).getTime()+"_"+fileName.substring(0,pointIndex));
fileNameBuffer.append(fileName.substring(pointIndex));
return fileNameBuffer.toString();
}
}

@ -0,0 +1,293 @@
package org.jeecgframework.web.onlinedoc.entity;
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 2016-03-19 15:49:59
* @version V1.0
*
*/
@Entity
@Table(name = "t_s_online_doc", schema = "")
@SuppressWarnings("serial")
public class OnlineDocEntity 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;
/**流程状态*/
private java.lang.String bpmStatus;
/**文件原名*/
private java.lang.String oldName;
/**文件名*/
private java.lang.String newName;
/**描述*/
@Excel(name="描述")
private java.lang.String description;
/**分类节点*/
@Excel(name="分类节点")
private java.lang.String treeNode;
/**下载地址*/
private java.lang.String path;
/**
*: 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 ="BPM_STATUS",nullable=true,length=32)
public java.lang.String getBpmStatus(){
return this.bpmStatus;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setBpmStatus(java.lang.String bpmStatus){
this.bpmStatus = bpmStatus;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="OLD_NAME",nullable=true,length=50)
public java.lang.String getOldName(){
return this.oldName;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setOldName(java.lang.String oldName){
this.oldName = oldName;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="NEW_NAME",nullable=true,length=50)
public java.lang.String getNewName(){
return this.newName;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setNewName(java.lang.String newName){
this.newName = newName;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="DESCRIPTION",nullable=true,length=200)
public java.lang.String getDescription(){
return this.description;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setDescription(java.lang.String description){
this.description = description;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="PATH",nullable=true,length=200)
public java.lang.String getPath(){
return this.path;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setPath(java.lang.String path){
this.path = path;
}
public void setTreeNode(java.lang.String treeNode) {
this.treeNode = treeNode;
}
@Column(name ="TREE_NODE",nullable=true,length=200)
public java.lang.String getTreeNode() {
return treeNode;
}
}

@ -0,0 +1,33 @@
package org.jeecgframework.web.onlinedoc.service;
import java.io.Serializable;
import org.jeecgframework.core.common.service.CommonService;
import org.jeecgframework.web.onlinedoc.entity.OnlineDocEntity;
public interface OnlineDocServiceI extends CommonService{
public <T> void delete(T entity);
public <T> Serializable save(T entity);
public <T> void saveOrUpdate(T entity);
/**
* -sql-
* @param id
* @return
*/
public boolean doAddSql(OnlineDocEntity t);
/**
* -sql-
* @param id
* @return
*/
public boolean doUpdateSql(OnlineDocEntity t);
/**
* -sql-
* @param id
* @return
*/
public boolean doDelSql(OnlineDocEntity t);
}

@ -0,0 +1,84 @@
package org.jeecgframework.web.onlinedoc.service.impl;
import java.io.Serializable;
import java.util.UUID;
import org.jeecgframework.core.common.service.impl.CommonServiceImpl;
import org.jeecgframework.web.onlinedoc.entity.OnlineDocEntity;
import org.jeecgframework.web.onlinedoc.service.OnlineDocServiceI;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service("onlineDocService")
@Transactional
public class OnlineDocServiceImpl extends CommonServiceImpl implements OnlineDocServiceI {
public <T> void delete(T entity) {
super.delete(entity);
//执行删除操作配置的sql增强
this.doDelSql((OnlineDocEntity)entity);
}
public <T> Serializable save(T entity) {
Serializable t = super.save(entity);
//执行新增操作配置的sql增强
this.doAddSql((OnlineDocEntity)entity);
return t;
}
public <T> void saveOrUpdate(T entity) {
super.saveOrUpdate(entity);
//执行更新操作配置的sql增强
this.doUpdateSql((OnlineDocEntity)entity);
}
/**
* -sql-
* @param id
* @return
*/
public boolean doAddSql(OnlineDocEntity t){
return true;
}
/**
* -sql-
* @param id
* @return
*/
public boolean doUpdateSql(OnlineDocEntity t){
return true;
}
/**
* -sql-
* @param id
* @return
*/
public boolean doDelSql(OnlineDocEntity t){
return true;
}
/**
* sql
* @param sql
* @return
*/
public String replaceVal(String sql,OnlineDocEntity t){
sql = sql.replace("#{id}",String.valueOf(t.getId()));
sql = sql.replace("#{create_name}",String.valueOf(t.getCreateName()));
sql = sql.replace("#{create_by}",String.valueOf(t.getCreateBy()));
sql = sql.replace("#{create_date}",String.valueOf(t.getCreateDate()));
sql = sql.replace("#{update_name}",String.valueOf(t.getUpdateName()));
sql = sql.replace("#{update_by}",String.valueOf(t.getUpdateBy()));
sql = sql.replace("#{update_date}",String.valueOf(t.getUpdateDate()));
sql = sql.replace("#{sys_org_code}",String.valueOf(t.getSysOrgCode()));
sql = sql.replace("#{sys_company_code}",String.valueOf(t.getSysCompanyCode()));
sql = sql.replace("#{bpm_status}",String.valueOf(t.getBpmStatus()));
sql = sql.replace("#{old_name}",String.valueOf(t.getOldName()));
sql = sql.replace("#{new_name}",String.valueOf(t.getNewName()));
sql = sql.replace("#{description}",String.valueOf(t.getDescription()));
sql = sql.replace("#{treeNode}",String.valueOf(t.getTreeNode()));
sql = sql.replace("#{path}",String.valueOf(t.getPath()));
sql = sql.replace("#{UUID}",UUID.randomUUID().toString());
return sql;
}
}

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

Loading…
Cancel
Save