JEECG 3.7.5 VUE+ElementUI SPA单页面应用版本发布

jeecg_3.7.5
zhangdaiscott@163.com 6 years ago
parent d584347ce7
commit 394d787b6a

@ -1,11 +1,11 @@
JEECG 微云快速开发平台
===============
当前最新版本: 3.7.3发布日期20180313
当前最新版本: 3.7.5发布日期20180516
前言:
-----------------------------------
随着 WEB UI 框架 ( EasyUI/Jquery UI/Ext/DWZ) 等的逐渐成熟,系统界面逐渐实现统一化,代码生成器也可以生成统一规范的界面!
随着 WEB UI 框架 ( EasyUI/Jquery UI/Ext/DWZ/VUE/Boostrap) 等的逐渐成熟,系统界面逐渐实现统一化,代码生成器也可以生成统一规范的界面!
代码生成+手工MERGE半智能开发将是新的趋势单表数据模型和一对多数据模型的增删改查功能直接生成使用,可节省80%工作量,快速提高开发效率!!!
@ -46,35 +46,39 @@ JEECG
JEECG 功能特点
-----------------------------------
* 采用SpringMVC + Hibernate + Minidao(类Mybatis) + Easyui(UI库)+ Jquery + Boostrap + Ehcache + Redis + Ztree等基础架构</br>
* 采用SpringMVC + Hibernate + Minidao(类Mybatis) + Easyui(UI库)+ Jquery + Boostrap + Ehcache + Redis + Ztree + Vue + Boostrap-table + ElementUI等基础架构</br>
* 采用面向声明的开发模式, 基于泛型编写极少代码即可实现复杂的数据展示、数据编辑、表单处理等功能再配合Online Coding在线开发与代码生成器的使用,将J2EE的开发效率提高8倍以上可以将代码减少90%以上。</br>
* JEECG 技术点总结:
* <b>技术点一:</b>Online Coding在线开发(通过在线配置实现一个表模型的增删改查功能,无需一行代码,支持用户自定义表单布局) </br>
* <b>技术点二:</b>代码生成器,支持多种数据模型,根据表生成对应的Entity,Service,Dao,Action,JSP等,增删改查功能生成直接使用</br>
* <b>技术点三:</b>UI快速开发库针对WEB UI进行标准封装页面统一采用UI标签实现功能数据datagrid,表单校验,Popup,Tab等实现JSP页面零JS开发维护非常高效</br>
* <b>技术点四:</b>在线流程定义采用开源Activiti流程引擎实现在线画流程,自定义表单,表单挂接,业务流转,流程监控,流程跟踪,流程委托等</br>
* <b>技术点五:</b>自定义表单,支持用户自定义表单布局支持单表、列表、Select\Radio\Checkbox\PopUP\Date等特殊控件</br>
* <b>技术点六:</b>查询过滤器查询功能自动生成后台动态拼SQL追加查询条件支持多种匹配方式全匹配/模糊查询/包含查询/不匹配查询)</br>
* <b>技术点七:</b>移动平台支持对Bootstrap(兼容Html5)进行标准封装 </br>
* <b>技术点八:</b>动态报表功能用户输入一个sql系统自动解析生成报表</br>
* <b>技术点九:</b>数据权限(精细化数据权限控制,控制到行级,列表级,表单字段级,实现不同人看不同数据,不同人对同一个页面操作不同字段)</br>
* <b>技术点十:</b>国际化(支持多语言,国际化的封装为多语言做了便捷支持)</br>
* <b>技术点十一:</b>多数据源(在线配置数据源,数据源工作类封装)</br>
* <b>技术点十二:</b>多种首页风格切换,支持自定义首页风格。经典风格、Shortcut风格、ACE bootstrap风格、云桌面风格</br>
* <b>技术点十三:</b>在线配置报表(无需编码,通过在线配置方式,实现曲线图,柱状图,数据等报表)</br>
* <b>技术点十四:</b>简易Excel导入导出支持单表导出和一对多表模式导出生成的代码自带导入导出功能</br>
* <b>技术点十五:</b>移动OA移动OA审批功能采用H5技术实现手机移动办公无缝对接微信、钉钉、微信企业号、也可以做APP</br>
* <b>技术点十六:</b>移动图表在线配置移动报表采用H5技术可以手机端查看</br>
* <b>技术点十七:</b>插件开发业务功能组件以插件方式集成平台也可以单独部署发发布有力支撑了SAAS云应用系统需求</br>
* <b>技术点十八:</b>专业接口对接机制统一采用restful接口方式集成swagger-ui在线接口文档Jwt token安全验证方便客户端对接</br>
* <b>技术点十九:</b>接口安全机制,可细化控制接口授权,非常简便实现不同客户端只看自己数据等控制</br>
* <b>技术点二十:</b>高级组合查询功能,在线配置支持主子表关联查询,可保存查询历史</br>
* <b>技术点二十一:</b>支持二级管理员,权限细化管理</br>
* <b>技术点二十二:</b>代码生成器支持resutful接口生成</br>
* JEECG V3.7.3, 经过了专业压力测试,性能测试,保证后台数据的准确性和页面访问速度</br>
* <b>技术点一:</b>代码生成器SPA单页面应用快速生成采用VUE+ElementUI打造酷炫效果 </br>
* <b>技术点二:</b>新一代代码生成器更灵活的代码生成器工厂,可灵活自定义生成的代码文件名称、路径等;根据模板结构生成代码文件</br>
* <b>技术点三:</b>新一代代码生成器支持Vue+ElementUI风格Bootstrap表单+EasyUI原生态列表风格ElementUI表单+EasyUI原生态列表风格</br>
* <b>技术点四:</b>Dategrid标签多列表风格快速切换给用户提供多种选择</br>
* <b>技术点五:</b>Online Coding在线开发(通过在线配置实现一个表模型的增删改查功能,无需一行代码,支持用户自定义表单布局) </br>
* <b>技术点六:</b>代码生成器,支持多种数据模型,根据表生成对应的Entity,Service,Dao,Action,JSP等,增删改查功能生成直接使用</br>
* <b>技术点七:</b>UI快速开发库针对WEB UI进行标准封装页面统一采用UI标签实现功能数据datagrid,表单校验,Popup,Tab等实现JSP页面零JS开发维护非常高效</br>
* <b>技术点八:</b>在线流程定义采用开源Activiti流程引擎实现在线画流程,自定义表单,表单挂接,业务流转,流程监控,流程跟踪,流程委托等</br>
* <b>技术点九:</b>自定义表单,支持用户自定义表单布局支持单表、列表、Select\Radio\Checkbox\PopUP\Date等特殊控件</br>
* <b>技术点十:</b>查询过滤器查询功能自动生成后台动态拼SQL追加查询条件支持多种匹配方式全匹配/模糊查询/包含查询/不匹配查询)</br>
* <b>技术点十一::</b>移动平台支持对Bootstrap(兼容Html5)进行标准封装 </br>
* <b>技术点十二:</b>动态报表功能用户输入一个sql系统自动解析生成报表</br>
* <b>技术点十三:</b>数据权限(精细化数据权限控制,控制到行级,列表级,表单字段级,实现不同人看不同数据,不同人对同一个页面操作不同字段)</br>
* <b>技术点十四:</b>国际化(支持多语言,国际化的封装为多语言做了便捷支持)</br>
* <b>技术点十五:</b>多数据源(在线配置数据源,数据源工作类封装)</br>
* <b>技术点十六:</b>多种首页风格切换,支持自定义首页风格。经典风格、Shortcut风格、ACE bootstrap风格、云桌面风格</br>
* <b>技术点十七:</b>在线配置报表(无需编码,通过在线配置方式,实现曲线图,柱状图,数据等报表)</br>
* <b>技术点十八:</b>简易Excel导入导出支持单表导出和一对多表模式导出生成的代码自带导入导出功能</br>
* <b>技术点十九:</b>移动OA移动OA审批功能采用H5技术实现手机移动办公无缝对接微信、钉钉、微信企业号、也可以做APP</br>
* <b>技术点二十:</b>移动图表在线配置移动报表采用H5技术可以手机端查看</br>
* <b>技术点二十一::</b>插件开发业务功能组件以插件方式集成平台也可以单独部署发发布有力支撑了SAAS云应用系统需求</br>
* <b>技术点二十二::</b>专业接口对接机制统一采用restful接口方式集成swagger-ui在线接口文档Jwt token安全验证方便客户端对接</br>
* <b>技术点二十三:</b>接口安全机制,可细化控制接口授权,非常简便实现不同客户端只看自己数据等控制</br>
* <b>技术点二十四:</b>高级组合查询功能,在线配置支持主子表关联查询,可保存查询历史</br>
* <b>技术点二十五:</b>支持二级管理员,权限细化管理</br>
* <b>技术点二十六:</b>代码生成器支持resutful接口生成</br>
* JEECG V3.7.5, 经过了专业压力测试,性能测试,保证后台数据的准确性和页面访问速度</br>
* 支持多种浏览器: IE, 火狐, Google 等</br>
* 支持数据库: Mysql,Oracle,Postgre,SqlServer等</br>
* 基础权限: 用户,角色,菜单权限,按钮权限,数据权限</br>

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -4,7 +4,7 @@
eclipse + maven + jdk7 + tomcat7 + mysql
2. 手工执行初始化SQL脚本
docs/db/jeecg_3.7.3_mysql.sql
docs/db/jeecg_3.7.5_mysql.sql
注意: 必须手工执行doc\db下的数据库脚本
3. 入门开发环境搭建

@ -5,9 +5,9 @@
1.oracle 导入命令
说明: jeecg脚本导出用户是scott
imp scott/tiger@orcl file=jeecg_3.7.3_oracle11g.dmp
imp scott/tiger@orcl file=jeecg_3.7.5_oracle11g.dmp
导入其他用户的表
imp jeecgos/jeecgos@orcl file=/opt/datatmp/jeecg_3.7.3_oracle11g.dmp fromuser=scott touser=jeecgos ignore=y commit=y buffer=300000000 feedback=10000
imp jeecgos/jeecgos@orcl file=/opt/datatmp/jeecg_3.7.5_oracle11g.dmp fromuser=scott touser=jeecgos ignore=y commit=y buffer=300000000 feedback=10000
2. oracle、SqlServer脚步索引会有部分丢失为了系统性能请自行补加索引。

@ -3,11 +3,11 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.jeecgframework</groupId>
<artifactId>jeecg</artifactId>
<version>3.7.3</version>
<version>3.7.5</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<codegenerate.version>3.6.2</codegenerate.version>
<codegenerate.version>3.6.3</codegenerate.version>
<minidao.version>1.6.2</minidao.version>
<guava.version>16.0.1</guava.version>
@ -152,6 +152,8 @@
<groupId>org.jeecgframework</groupId>
<artifactId>codegenerate</artifactId>
<version>${codegenerate.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/codegenerate-3.6.3-20180503.jar</systemPath>
</dependency>
<dependency>
<groupId>org.jeecgframework</groupId>
@ -184,12 +186,16 @@
<groupId>pinyin4j</groupId>
<artifactId>pinyin4j</artifactId>
<version>${pinyin4j.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/pinyin4j-2.5.0-20170917.jar</systemPath>
</dependency>
<dependency>
<groupId>com.springsource</groupId>
<artifactId>org.quartz</artifactId>
<version>${org.quartz.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/org.quartz-1.6.2-20170917.jar</systemPath>
</dependency>
<!-- SPRING start -->
<dependency>
@ -378,6 +384,8 @@
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>${ojdbc14.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/ojdbc14-10.2.0.5.0-20170917.jar</systemPath>
</dependency>
<!-- jtds for mssql/db2
<dependency>
@ -659,6 +667,8 @@
<groupId>org.jeecgframework</groupId>
<artifactId>freemarker-null</artifactId>
<version>${freemarker.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/freemarker-null-2.3.19-20170917.jar</systemPath>
</dependency>
<!-- JSR303 Bean Validator -->
<dependency>
@ -741,6 +751,8 @@
<groupId>org.artofsolving</groupId>
<artifactId>jodconverter</artifactId>
<version>${jodconverter.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/jodconverter-3.0-beta-4-20170917.jar</systemPath>
</dependency>
<!-- openoffice end -->
<dependency>
@ -780,17 +792,23 @@
<groupId>org.jeecgframework</groupId>
<artifactId>jacob</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/jacob-1.0.0-20170917.jar</systemPath>
</dependency>
<!-- highchart 图片导出 -->
<dependency>
<groupId>org.jeecgframework</groupId>
<artifactId>batik-all</artifactId>
<version>1.6</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/batik-all-1.6-20170917.jar</systemPath>
</dependency>
<dependency>
<groupId>org.jeecgframework</groupId>
<artifactId>fop</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/fop-1.0-20170917.jar</systemPath>
</dependency>
<dependency>
<groupId>xerces</groupId>
@ -845,11 +863,15 @@
<groupId>com.baidu.ueditor.jeecg</groupId>
<artifactId>ueditor</artifactId>
<version>1.1.1</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/ueditor-1.1.1-20170917.jar</systemPath>
</dependency>
<dependency>
<groupId>com.baidu.ueditor.jeecg</groupId>
<artifactId>json</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/json-1.0-20170917.jar</systemPath>
</dependency>
<!-- baidu ueditor-->
@ -1010,16 +1032,15 @@
<url>www.jeecg.org</url>
</organization>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<!-- tomcat插件 -->
<!-- tomcat6插件 -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<version>1.1</version>
<configuration>
<path>/jeecg</path>
<path>/jeecg</path>
<port>8080</port>
<uriEncoding>UTF-8</uriEncoding>
<url>http://localhost:8080/manager/html</url>
@ -1077,9 +1098,7 @@
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
<finalName>jeecg</finalName>
<resources>
<resource>
<directory>src/main/java</directory>

@ -43,21 +43,33 @@ public class TsBlackListServiceImpl extends CommonServiceImpl implements TsBlack
* @return
*/
private void doAddBus(TsBlackListEntity t) throws Exception{
}
//-----------------sql增强 start----------------------------
//-----------------sql增强 end------------------------------
//-----------------java增强 start---------------------------
}
/**
*
* @param t
* @return
*/
private void doUpdateBus(TsBlackListEntity t) throws Exception{
}
//-----------------sql增强 start----------------------------
//-----------------sql增强 end------------------------------
//-----------------java增强 start---------------------------
}
/**
*
* @param id
* @return
*/
private void doDelBus(TsBlackListEntity t) throws Exception{
}
//-----------------sql增强 start----------------------------
//-----------------sql增强 end------------------------------
//-----------------java增强 start---------------------------
}
private Map<String,Object> populationMap(TsBlackListEntity t){
Map<String,Object> map = new HashMap<String,Object>();

@ -23,6 +23,7 @@ import org.jeecgframework.core.common.model.json.TreeGrid;
import org.jeecgframework.core.constant.Globals;
import org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil;
import org.jeecgframework.core.util.DateUtils;
import org.jeecgframework.core.util.HttpRequest;
import org.jeecgframework.core.util.JSONHelper;
import org.jeecgframework.core.util.MutiLangUtil;
import org.jeecgframework.core.util.MyClassLoader;
@ -110,6 +111,7 @@ public class JeecgFormDemoController extends BaseController {
return new ModelAndView("com/jeecg/demo/form_popupMultiValue");
}
/**
*---
*/
@ -254,6 +256,7 @@ public class JeecgFormDemoController extends BaseController {
logger.info("----左右布局 demo转入页面-----");
return new ModelAndView("com/jeecg/demo/siteSelect");
}
/**
*
*/
@ -263,6 +266,7 @@ public class JeecgFormDemoController extends BaseController {
return new ModelAndView("com/jeecg/demo/specialLayout");
}
@RequestMapping(params = "commonUpload")
public ModelAndView commonUploadDemo(){
return new ModelAndView("system/commonupload/commonUploadFile");
@ -603,4 +607,57 @@ public class JeecgFormDemoController extends BaseController {
logger.info("----选项卡demo转入页面-----");
return new ModelAndView("com/jeecg/demo/tabDemo");
}
/**
* Demo:
* @param request
* @return
*/
@RequestMapping(params = "interfaceTestDemo")
public ModelAndView interfaceTestDemo(HttpServletRequest request) {
logger.info("----接口测试demo转入页面-----");
return new ModelAndView("com/jeecg/demo/form_interfaceTestDemo");
}
/**
* Demo:
* @param request
* @param response
* @return AjaxJson
*/
@RequestMapping(params = "interfaceTest")
@ResponseBody
public AjaxJson testInterface(HttpServletRequest request,HttpServletResponse response) {
AjaxJson j=new AjaxJson();
try {
String serverUrl = request.getParameter("serverUrl");//请求的地址
String requestBody = request.getParameter("requestBody");//请求的参数
String requestMethod = request.getParameter("requestMethod");//请求的方式
if(requestMethod.equals("POST")){
if(requestBody !=""){
logger.info("----请求接口开始-----");
String sendPost = HttpRequest.sendPost(serverUrl, requestBody);
logger.info("----请求接口结束-----"+sendPost);
j.setSuccess(true);
j.setObj(sendPost);
}else{
j.setSuccess(false);
j.setObj("请填写请求参数");
}
}
if(requestMethod.equals("GET")){
logger.info("----请求接口开始-----");
String sendGet = HttpRequest.sendGet(serverUrl, requestBody);
logger.info("----请求接口结束-----"+sendGet);
j.setSuccess(true);
j.setObj(sendGet);
}
} catch (Exception e) {
j.setSuccess(false);
j.setObj("服务器请求失败");
e.printStackTrace();
}
return j;
}
}

@ -4,13 +4,17 @@ import java.io.OutputStreamWriter;
import java.io.StringReader;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.ConstraintViolation;
import javax.validation.Validator;
import org.apache.batik.transcoder.Transcoder;
import org.apache.batik.transcoder.TranscoderException;
@ -19,8 +23,10 @@ import org.apache.batik.transcoder.TranscoderOutput;
import org.apache.batik.transcoder.image.JPEGTranscoder;
import org.apache.batik.transcoder.image.PNGTranscoder;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.fop.svg.PDFTranscoder;
import org.apache.log4j.Logger;
import org.jeecgframework.core.beanvalidator.BeanValidators;
import org.jeecgframework.core.common.controller.BaseController;
import org.jeecgframework.core.common.dao.jdbc.JdbcDao;
import org.jeecgframework.core.common.exception.BusinessException;
@ -36,33 +42,52 @@ import org.jeecgframework.core.util.JeecgDataAutorUtils;
import org.jeecgframework.core.util.MyBeanUtils;
import org.jeecgframework.core.util.ResourceUtil;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.core.util.oConvertUtils;
import org.jeecgframework.jwt.util.GsonUtil;
import org.jeecgframework.jwt.util.ResponseMessage;
import org.jeecgframework.jwt.util.Result;
import org.jeecgframework.minidao.pojo.MiniDaoPage;
import org.jeecgframework.p3.core.util.oConvertUtils;
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.tag.vo.datatable.SortDirection;
import org.jeecgframework.web.system.enums.InterfaceEnum;
import org.jeecgframework.web.system.pojo.base.InterfaceRuleDto;
import org.jeecgframework.web.system.pojo.base.TSDepart;
import org.jeecgframework.web.system.pojo.base.TSLog;
import org.jeecgframework.web.system.service.MutiLangServiceI;
import org.jeecgframework.web.system.service.SystemService;
import org.jeecgframework.web.system.util.InterfaceUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.util.UriComponentsBuilder;
import com.alibaba.fastjson.JSONArray;
import com.jeecg.demo.dao.JeecgMinidaoDao;
import com.jeecg.demo.entity.JeecgDemoEntity;
import com.jeecg.demo.entity.JeecgDemoPage;
import com.jeecg.demo.entity.JeecgLogReport;
import com.jeecg.demo.service.JeecgDemoServiceI;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
/**
* @Title: Controller
* @Description: jeecg_demo
@ -73,6 +98,7 @@ import com.jeecg.demo.service.JeecgDemoServiceI;
*/
@Controller
@RequestMapping("/jeecgListDemoController")
@Api(value="JeecgDemo",description="Angular JeecgDemo接口",tags="AngularJeecgDemoAPI")
public class JeecgListDemoController extends BaseController {
/**
* Logger for this class
@ -83,6 +109,10 @@ public class JeecgListDemoController extends BaseController {
private JeecgDemoServiceI jeecgDemoService;
@Autowired
private SystemService systemService;
@Autowired
private Validator validator;
@Autowired
private JeecgMinidaoDao jeecgMinidaoDao;
@ -120,6 +150,39 @@ public class JeecgListDemoController extends BaseController {
return new ModelAndView("com/jeecg/demo/jeecgDemoList");
}
@RequestMapping(params = "vueList")
public ModelAndView vueList(HttpServletRequest request) {
return new ModelAndView("com/jeecg/demo/vueList");
}
@RequestMapping(params = "vueNewList")
public ModelAndView vueNewList(HttpServletRequest request) {
return new ModelAndView("com/jeecg/demo/vueNewList");
}
@RequestMapping(params = "vueBootstrapTableList")
public ModelAndView vueBootstrapTableList(HttpServletRequest request) {
return new ModelAndView("com/jeecg/demo/vueBootstrapTableList");
}
@RequestMapping(params = "vueBootstrapTableAdd")
public ModelAndView vueBootstrapTableAdd(HttpServletRequest request) {
return new ModelAndView("com/jeecg/demo/vueBootstrapTableAdd");
}
@RequestMapping(params = "vueBootstrapTableEdit")
public ModelAndView vueBootstrapTableEdit(HttpServletRequest request) {
return new ModelAndView("com/jeecg/demo/vueBootstrapTableEdit");
}
@RequestMapping(params = "vueBootstrapTableGet")
@ResponseBody
public AjaxJson vueBootstrapTableGet(String id,HttpServletRequest request) {
AjaxJson json=new AjaxJson();
if(org.apache.commons.lang.StringUtils.isNotBlank(id)) {
JeecgDemoEntity t = jeecgDemoService.get(JeecgDemoEntity.class, id);
json.setObj(t);
}
json.setMsg("查询成功!");
return json;
}
@RequestMapping(params = "multiHeaList")
public ModelAndView multiHeaList(HttpServletRequest request) {
return new ModelAndView("com/jeecg/demo/jeecgDemoList-multihead");
@ -1010,6 +1073,7 @@ public class JeecgListDemoController extends BaseController {
req.setAttribute("logs",arr);
return new ModelAndView("com/jeecg/demo/logrp-chart");
}
/**
*
* @param request
@ -1063,4 +1127,242 @@ public class JeecgListDemoController extends BaseController {
return new ModelAndView("com/jeecg/demo/echartsDemo");
}
@RequestMapping(value="/list",method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value="jeecgDemo列表信息",produces="application/json",httpMethod="GET")
public ResponseMessage<Map<String,Object>> list(@RequestParam("pageNo") int pageNo, @RequestParam("pageSize") int pageSize,JeecgDemoEntity entity,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
InterfaceRuleDto interfaceRuleDto = InterfaceUtil.getInterfaceRuleDto(request, InterfaceEnum.jeecgdemo_list);
if(interfaceRuleDto==null){
return Result.error("您没有该接口的权限!");
}
CriteriaQuery query = new CriteriaQuery(JeecgDemoEntity.class, dataGrid);
InterfaceUtil.installCriteriaQuery(query, interfaceRuleDto, InterfaceEnum.jeecgdemo_list);
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(query, entity, request.getParameterMap());
query.setCurPage(pageNo<=0?1:pageNo);
query.setPageSize(pageSize);
query.addOrder("createDate", SortDirection.desc);
query.add();
this.jeecgDemoService.getDataGridReturn(query, true);
Map<String,Object> resultMap=new HashMap<String, Object>();
resultMap.put("data", dataGrid.getResults());
resultMap.put("total", dataGrid.getTotal());
return Result.success(resultMap);
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value="根据ID获取jeecgDemo信息",notes="根据ID获取jeecgDemo信息",httpMethod="GET",produces="application/json")
public ResponseMessage<?> get(@ApiParam(required=true,name="id",value="ID")@PathVariable("id") String id,HttpServletRequest request) {
InterfaceRuleDto interfaceRuleDto = InterfaceUtil.getInterfaceRuleDto(request, InterfaceEnum.jeecgdemo_get);
if(interfaceRuleDto==null){
return Result.error("您没有该接口的权限!");
}
JeecgDemoEntity task = this.jeecgDemoService.get(JeecgDemoEntity.class, id);
if (task == null) {
return Result.error("根据ID获取jeecgDemo信息为空");
}
return Result.success(task);
}
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
@ApiOperation(value="创建jeecgDemo")
public ResponseMessage<?> create(@ApiParam(name="jeecgDemo对象")@RequestBody JeecgDemoEntity jeecgDemo, UriComponentsBuilder uriBuilder,HttpServletRequest request) {
InterfaceRuleDto interfaceRuleDto = InterfaceUtil.getInterfaceRuleDto(request, InterfaceEnum.jeecgdemo_add);
if(interfaceRuleDto==null){
return Result.error("您没有该接口的权限!");
}
logger.info("create[{}]" + GsonUtil.toJson(jeecgDemo));
//调用JSR303 Bean Validator进行校验如果出错返回含400错误码及json格式的错误信息.
Set<ConstraintViolation<JeecgDemoEntity>> failures = validator.validate(jeecgDemo);
if (!failures.isEmpty()) {
return Result.error(JSONArray.toJSONString(BeanValidators.extractPropertyAndMessage(failures)));
}
//保存
try{
jeecgDemo.setCreateDate(new Date());
this.jeecgDemoService.save(jeecgDemo);
} catch (Exception e) {
e.printStackTrace();
return Result.error("jeecgDemo信息保存失败");
}
return Result.success(jeecgDemo);
}
@RequestMapping(method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
@ApiOperation(value="更新jeecgDemo",notes="更新jeecgDemo")
public ResponseMessage<?> update(@RequestBody JeecgDemoEntity jeecgDemo,HttpServletRequest request) {
InterfaceRuleDto interfaceRuleDto = InterfaceUtil.getInterfaceRuleDto(request, InterfaceEnum.jeecgdemo_edit);
if(interfaceRuleDto==null){
return Result.error("您没有该接口的权限!");
}
logger.info("update[{}]" + GsonUtil.toJson(jeecgDemo));
//调用JSR303 Bean Validator进行校验如果出错返回含400错误码及json格式的错误信息.
Set<ConstraintViolation<JeecgDemoEntity>> failures = validator.validate(jeecgDemo);
if (!failures.isEmpty()) {
return Result.error(JSONArray.toJSONString(BeanValidators.extractPropertyAndMessage(failures)));
}
//保存
try{
this.jeecgDemoService.saveOrUpdate(jeecgDemo);
} catch (Exception e) {
e.printStackTrace();
return Result.error("更新jeecgDemo信息失败");
}
//按Restful约定返回204状态码, 无内容. 也可以返回200状态码.
return Result.success("更新jeecgDemo信息成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ApiOperation(value="删除jeecgDemo")
@ResponseBody
public ResponseMessage<?> delete(@ApiParam(name="id",value="ID",required=true)@PathVariable("id") String id,HttpServletRequest request) {
InterfaceRuleDto interfaceRuleDto = InterfaceUtil.getInterfaceRuleDto(request, InterfaceEnum.jeecgdemo_delete);
if(interfaceRuleDto==null){
return Result.error("您没有该接口的权限!");
}
logger.info("delete[{}]" + id);
// 验证
if (StringUtils.isEmpty(id)) {
return Result.error("ID不能为空");
}
try {
this.jeecgDemoService.deleteEntityById(JeecgDemoEntity.class, id);
} catch (Exception e) {
e.printStackTrace();
return Result.error("jeecgDemo删除失败");
}
return Result.success();
}
/**
* jeecgDemo-bootstrap-list
* @param request
* @return
*/
@RequestMapping(params = "bootTableDemo")
public ModelAndView bootTableDemo(HttpServletRequest request) {
return new ModelAndView("com/jeecg/demo/jeecgDemo-bootstrap-list");
}
/**
* jeecgDemo-bootstrap
*
* @return
*/
@RequestMapping(params = "goBootStrapTableUpdate")
public ModelAndView goBootStrapTableUpdate(JeecgDemoEntity jeecgDemo, HttpServletRequest req) {
if (StringUtil.isNotEmpty(jeecgDemo.getId())) {
jeecgDemo = jeecgDemoService.getEntity(JeecgDemoEntity.class, jeecgDemo.getId());
req.setAttribute("jeecgDemoPage", jeecgDemo);
}
return new ModelAndView("com/jeecg/demo/jeecgDemo-bootstrap-update");
}
/**
* jeecgDemo-bootstrap
*
* @return
*/
@RequestMapping(params = "goBootStrapTableAdd")
public ModelAndView goBootStrapTableAdd(JeecgDemoEntity jeecgDemo, HttpServletRequest req) {
if (StringUtil.isNotEmpty(jeecgDemo.getId())) {
jeecgDemo = jeecgDemoService.getEntity(JeecgDemoEntity.class, jeecgDemo.getId());
req.setAttribute("jeecgDemoPage", jeecgDemo);
}
return new ModelAndView("com/jeecg/demo/jeecgDemo-bootstrap-add");
}
/**
* list
* @param request
* @return
*/
@RequestMapping(params = "natureAceTableDemo")
public ModelAndView natureAceTableDemo(HttpServletRequest request) {
return new ModelAndView("com/jeecg/demo/jeecgDemo-nature-ace-list");
}
/**
*
* @return
*/
@RequestMapping(params = "goNatureAceTableUpdate")
public ModelAndView goNatureAceTableUpdate(JeecgDemoEntity jeecgDemo, HttpServletRequest req) {
if (StringUtil.isNotEmpty(jeecgDemo.getId())) {
jeecgDemo = jeecgDemoService.getEntity(JeecgDemoEntity.class, jeecgDemo.getId());
req.setAttribute("jeecgDemoPage", jeecgDemo);
}
return new ModelAndView("com/jeecg/demo/jeecgDemo-nature-ace-update");
}
/**
*
* @return
*/
@RequestMapping(params = "goNatureAceTableAdd")
public ModelAndView goNatureAceTableAdd(JeecgDemoEntity jeecgDemo, HttpServletRequest req) {
if (StringUtil.isNotEmpty(jeecgDemo.getId())) {
jeecgDemo = jeecgDemoService.getEntity(JeecgDemoEntity.class, jeecgDemo.getId());
req.setAttribute("jeecgDemoPage", jeecgDemo);
}
return new ModelAndView("com/jeecg/demo/jeecgDemo-nature-ace-add");
}
/**
* jeecgDemo-bootstrap-list-tag
* @param request
* @return
*/
@RequestMapping(params = "bootstrapTableTagDemo")
public ModelAndView bootstrapTableTagDemo(HttpServletRequest request) {
return new ModelAndView("com/jeecg/demo/jeecgDemo-bootstrap-list-tag");
}
/**
* jeecgDemo-bootstrap-list-tag
* @param request
* @return
*/
@RequestMapping(params = "bootstrapTableTagDemo2")
public ModelAndView bootstrapTableTagDemo2(HttpServletRequest request) {
return new ModelAndView("com/jeecg/demo/jeecgDemo-bootstrap-list-tag2");
}
/**
* jeecgDemo-bootstrap
*
* @return
*/
@RequestMapping(params = "goBootStrapTableUpdate2")
public ModelAndView goBootStrapTableUpdate2(JeecgDemoEntity jeecgDemo, HttpServletRequest req) {
if (StringUtil.isNotEmpty(jeecgDemo.getId())) {
jeecgDemo = jeecgDemoService.getEntity(JeecgDemoEntity.class, jeecgDemo.getId());
req.setAttribute("jeecgDemoPage", jeecgDemo);
}
return new ModelAndView("com/jeecg/demo/jeecgDemo-bootstrap-update2");
}
/**
* jeecgDemo-bootstrap
*
* @return
*/
@RequestMapping(params = "goBootStrapTableAdd2")
public ModelAndView goBootStrapTableAdd2(JeecgDemoEntity jeecgDemo, HttpServletRequest req) {
if (StringUtil.isNotEmpty(jeecgDemo.getId())) {
jeecgDemo = jeecgDemoService.getEntity(JeecgDemoEntity.class, jeecgDemo.getId());
req.setAttribute("jeecgDemoPage", jeecgDemo);
}
return new ModelAndView("com/jeecg/demo/jeecgDemo-bootstrap-add2");
}
}

@ -0,0 +1,426 @@
package com.jeecg.demo.controller;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.ConstraintViolation;
import javax.validation.Validator;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.jeecgframework.core.beanvalidator.BeanValidators;
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.core.util.oConvertUtils;
import org.jeecgframework.jwt.util.ResponseMessage;
import org.jeecgframework.jwt.util.Result;
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.system.service.SystemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
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.bind.annotation.ResponseStatus;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.util.UriComponentsBuilder;
import com.alibaba.fastjson.JSONArray;
import com.jeecg.demo.entity.JformOrderCustomer2Entity;
import com.jeecg.demo.service.JformOrderMain2ServiceI;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
/**
* @Title: Controller
* @Description:
* @author onlineGenerator
* @date 2018-03-27 17:02:39
* @version V1.0
*
*/
@Controller
@RequestMapping("/jformOrderCustomer2Controller")
@Api(value="JformOrderCustomer2",description="订单客户信息",tags="jformOrderCustomer2Controller")
public class JformOrderCustomer2Controller extends BaseController {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(JformOrderCustomer2Controller.class);
@Autowired
private JformOrderMain2ServiceI jformOrderMain2Service;
@Autowired
private SystemService systemService;
@Autowired
private Validator validator;
/**
*
*
* @return
*/
@RequestMapping(params = "list")
public ModelAndView list(HttpServletRequest request) {
return new ModelAndView("com/jeecg/demo/jformOrderMain2/jformOrderCustomer2/list");
}
/**
* easyui AJAX
*
* @param request
* @param response
* @param dataGrid
* @param user
*/
@RequestMapping(params = "datagrid")
public void datagrid(JformOrderCustomer2Entity jformOrderCustomer2,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
CriteriaQuery cq = new CriteriaQuery(JformOrderCustomer2Entity.class, dataGrid);
String mainId = request.getParameter("mainId");
if(oConvertUtils.isNotEmpty(mainId)){
//查询条件组装器
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, jformOrderCustomer2, request.getParameterMap());
try{
//自定义追加查询条件
cq.eq("fkId", mainId);
String query_money_begin = request.getParameter("money_begin");
String query_money_end = request.getParameter("money_end");
if(StringUtil.isNotEmpty(query_money_begin)){
cq.ge("money", Double.parseDouble(query_money_begin));
}
if(StringUtil.isNotEmpty(query_money_end)){
cq.le("money", Double.parseDouble(query_money_end));
}
}catch (Exception e) {
throw new BusinessException(e.getMessage());
}
cq.add();
this.jformOrderMain2Service.getDataGridReturn(cq, true);
}
TagUtil.datagrid(response, dataGrid);
}
/**
*
*
* @return
*/
@RequestMapping(params = "doDel")
@ResponseBody
public AjaxJson doDel(JformOrderCustomer2Entity jformOrderCustomer2, HttpServletRequest request) {
String message = null;
AjaxJson j = new AjaxJson();
jformOrderCustomer2 = systemService.getEntity(JformOrderCustomer2Entity.class, jformOrderCustomer2.getId());
message = "订单客户信息删除成功";
try{
if(jformOrderCustomer2!=null){
jformOrderMain2Service.delete(jformOrderCustomer2);
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){
String message = null;
AjaxJson j = new AjaxJson();
message = "订单客户信息删除成功";
try{
for(String id:ids.split(",")){
JformOrderCustomer2Entity jformOrderCustomer2 = systemService.getEntity(JformOrderCustomer2Entity.class,
id
);
if(jformOrderCustomer2!=null){
jformOrderMain2Service.delete(jformOrderCustomer2);
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(JformOrderCustomer2Entity jformOrderCustomer2, HttpServletRequest request) {
String message = null;
AjaxJson j = new AjaxJson();
message = "订单客户信息添加成功";
try{
jformOrderMain2Service.save(jformOrderCustomer2);
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(JformOrderCustomer2Entity jformOrderCustomer2, HttpServletRequest request) {
String message = null;
AjaxJson j = new AjaxJson();
message = "订单客户信息更新成功";
JformOrderCustomer2Entity t = jformOrderMain2Service.get(JformOrderCustomer2Entity.class, jformOrderCustomer2.getId());
try {
MyBeanUtils.copyBeanNotNull2Bean(jformOrderCustomer2, t);
jformOrderMain2Service.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(JformOrderCustomer2Entity jformOrderCustomer2, HttpServletRequest req) {
if (StringUtil.isNotEmpty(jformOrderCustomer2.getId())) {
jformOrderCustomer2 = jformOrderMain2Service.getEntity(JformOrderCustomer2Entity.class, jformOrderCustomer2.getId());
req.setAttribute("jformOrderCustomer2Page", jformOrderCustomer2);
}
req.setAttribute("mainId", req.getParameter("mainId"));
return new ModelAndView("com/jeecg/demo/jformOrderMain2/jformOrderCustomer2/add");
}
/**
*
*
* @return
*/
@RequestMapping(params = "goUpdate")
public ModelAndView goUpdate(JformOrderCustomer2Entity jformOrderCustomer2, HttpServletRequest req) {
if (StringUtil.isNotEmpty(jformOrderCustomer2.getId())) {
jformOrderCustomer2 = jformOrderMain2Service.getEntity(JformOrderCustomer2Entity.class, jformOrderCustomer2.getId());
req.setAttribute("jformOrderCustomer2Page", jformOrderCustomer2);
}
return new ModelAndView("com/jeecg/demo/jformOrderMain2/jformOrderCustomer2/update");
}
/**
*
*
* @return
*/
@RequestMapping(params = "upload")
public ModelAndView upload(HttpServletRequest req) {
req.setAttribute("controller_name","jformOrderCustomer2Controller");
return new ModelAndView("common/upload/pub_excel_upload");
}
/**
* excel
*
* @param request
* @param response
*/
@RequestMapping(params = "exportXls")
public String exportXls(JformOrderCustomer2Entity jformOrderCustomer2,HttpServletRequest request,HttpServletResponse response
, DataGrid dataGrid,ModelMap modelMap) {
CriteriaQuery cq = new CriteriaQuery(JformOrderCustomer2Entity.class, dataGrid);
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, jformOrderCustomer2, request.getParameterMap());
List<JformOrderCustomer2Entity> jformOrderCustomer2s = this.jformOrderMain2Service.getListByCriteriaQuery(cq,false);
modelMap.put(NormalExcelConstants.FILE_NAME,"订单客户信息");
modelMap.put(NormalExcelConstants.CLASS,JformOrderCustomer2Entity.class);
modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("订单客户信息列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
"导出信息"));
modelMap.put(NormalExcelConstants.DATA_LIST,jformOrderCustomer2s);
return NormalExcelConstants.JEECG_EXCEL_VIEW;
}
/**
* excel 使
*
* @param request
* @param response
*/
@RequestMapping(params = "exportXlsByT")
public String exportXlsByT(JformOrderCustomer2Entity jformOrderCustomer2,HttpServletRequest request,HttpServletResponse response
, DataGrid dataGrid,ModelMap modelMap) {
modelMap.put(NormalExcelConstants.FILE_NAME,"订单客户信息");
modelMap.put(NormalExcelConstants.CLASS,JformOrderCustomer2Entity.class);
modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("订单客户信息列表", "导出人:"+ResourceUtil.getSessionUser().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<JformOrderCustomer2Entity> listJformOrderCustomer2Entitys = ExcelImportUtil.importExcel(file.getInputStream(),JformOrderCustomer2Entity.class,params);
for (JformOrderCustomer2Entity jformOrderCustomer2 : listJformOrderCustomer2Entitys) {
jformOrderMain2Service.save(jformOrderCustomer2);
}
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(method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value="订单客户信息列表信息",produces="application/json",httpMethod="GET")
public ResponseMessage<List<JformOrderCustomer2Entity>> list() {
List<JformOrderCustomer2Entity> listJformOrderCustomer2s=jformOrderMain2Service.getList(JformOrderCustomer2Entity.class);
return Result.success(listJformOrderCustomer2s);
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value="根据ID获取订单客户信息信息",notes="根据ID获取订单客户信息信息",httpMethod="GET",produces="application/json")
public ResponseMessage<?> get(@ApiParam(required=true,name="id",value="ID")@PathVariable("id") String id) {
JformOrderCustomer2Entity task = jformOrderMain2Service.get(JformOrderCustomer2Entity.class, id);
if (task == null) {
return Result.error("根据ID获取订单客户信息信息为空");
}
return Result.success(task);
}
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
@ApiOperation(value="创建订单客户信息")
public ResponseMessage<?> create(@ApiParam(name="订单客户信息对象")@RequestBody JformOrderCustomer2Entity jformOrderCustomer2, UriComponentsBuilder uriBuilder) {
//调用JSR303 Bean Validator进行校验如果出错返回含400错误码及json格式的错误信息.
Set<ConstraintViolation<JformOrderCustomer2Entity>> failures = validator.validate(jformOrderCustomer2);
if (!failures.isEmpty()) {
return Result.error(JSONArray.toJSONString(BeanValidators.extractPropertyAndMessage(failures)));
}
//保存
try{
jformOrderMain2Service.save(jformOrderCustomer2);
} catch (Exception e) {
e.printStackTrace();
return Result.error("订单客户信息信息保存失败");
}
return Result.success(jformOrderCustomer2);
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
@ApiOperation(value="更新订单客户信息",notes="更新订单客户信息")
public ResponseMessage<?> update(@ApiParam(name="订单客户信息对象")@RequestBody JformOrderCustomer2Entity jformOrderCustomer2) {
//调用JSR303 Bean Validator进行校验如果出错返回含400错误码及json格式的错误信息.
Set<ConstraintViolation<JformOrderCustomer2Entity>> failures = validator.validate(jformOrderCustomer2);
if (!failures.isEmpty()) {
return Result.error(JSONArray.toJSONString(BeanValidators.extractPropertyAndMessage(failures)));
}
//保存
try{
jformOrderMain2Service.saveOrUpdate(jformOrderCustomer2);
} catch (Exception e) {
e.printStackTrace();
return Result.error("更新订单客户信息信息失败");
}
//按Restful约定返回204状态码, 无内容. 也可以返回200状态码.
return Result.success("更新订单客户信息信息成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseStatus(HttpStatus.NO_CONTENT)
@ApiOperation(value="删除订单客户信息")
public ResponseMessage<?> delete(@ApiParam(name="id",value="ID",required=true)@PathVariable("id") String id) {
logger.info("delete[{}]" + id);
// 验证
if (StringUtils.isEmpty(id)) {
return Result.error("ID不能为空");
}
try {
jformOrderMain2Service.deleteEntityById(JformOrderCustomer2Entity.class, id);
} catch (Exception e) {
e.printStackTrace();
return Result.error("订单客户信息删除失败");
}
return Result.success();
}
}

@ -0,0 +1,548 @@
package com.jeecg.demo.controller;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.ConstraintViolation;
import javax.validation.Validator;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.hibernate.criterion.Restrictions;
import org.jeecgframework.core.beanvalidator.BeanValidators;
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.core.util.oConvertUtils;
import org.jeecgframework.jwt.util.ResponseMessage;
import org.jeecgframework.jwt.util.Result;
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.system.service.SystemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
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.bind.annotation.ResponseStatus;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.util.UriComponentsBuilder;
import com.alibaba.fastjson.JSONArray;
import com.jeecg.demo.entity.JformOrderCustomer2Entity;
import com.jeecg.demo.entity.JformOrderMain2Entity;
import com.jeecg.demo.entity.JformOrderTicket2Entity;
import com.jeecg.demo.page.JformOrderMain2Page;
import com.jeecg.demo.service.JformOrderMain2ServiceI;
import com.jeecg.superquery.util.SuperQueryUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
/**
* @Title: Controller
* @Description:
* @author onlineGenerator
* @date 2018-03-27 16:21:58
* @version V1.0
*
*/
@Api(value="JformOrderMain2",description="订单主信息",tags="jformOrderMain2Controller")
@Controller
@RequestMapping("/jformOrderMain2Controller")
public class JformOrderMain2Controller extends BaseController {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(JformOrderMain2Controller.class);
@Autowired
private JformOrderMain2ServiceI jformOrderMain2Service;
@Autowired
private SystemService systemService;
@Autowired
private Validator validator;
/**
*
* @return
*/
@RequestMapping(params = "index")
public ModelAndView index(HttpServletRequest request) {
return new ModelAndView("com/jeecg/demo/jformOrderMain2/jformOrderMain2Index");
}
/**
*
*
* @return
*/
@RequestMapping(params = "list")
public ModelAndView list(HttpServletRequest request) {
return new ModelAndView("com/jeecg/demo/jformOrderMain2/main/list");
}
/**
* easyui AJAX
*
* @param request
* @param response
* @param dataGrid
* @param user
*/
@RequestMapping(params = "datagrid")
public void datagrid(JformOrderMain2Entity jformOrderMain2,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
CriteriaQuery cq = new CriteriaQuery(JformOrderMain2Entity.class, dataGrid);
//查询条件组装器
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, jformOrderMain2);
try{
//自定义追加查询条件
String sql = SuperQueryUtil.getComplxSuperQuerySQL(request);
if(oConvertUtils.isNotEmpty(sql)) {
cq.add(Restrictions.sqlRestriction(" id in ("+sql+")"));
}
}catch (Exception e) {
throw new BusinessException(e.getMessage());
}
cq.add();
this.jformOrderMain2Service.getDataGridReturn(cq, true);
TagUtil.datagrid(response, dataGrid);
}
/**
*
*
* @return
*/
@RequestMapping(params = "doDel")
@ResponseBody
public AjaxJson doDel(JformOrderMain2Entity jformOrderMain2, HttpServletRequest request) {
AjaxJson j = new AjaxJson();
jformOrderMain2 = systemService.getEntity(JformOrderMain2Entity.class, jformOrderMain2.getId());
String message = "订单主信息删除成功";
try{
if(jformOrderMain2!=null){
jformOrderMain2Service.delMain(jformOrderMain2);
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();
String message = "订单主信息删除成功";
try{
for(String id:ids.split(",")){
JformOrderMain2Entity jformOrderMain2 = systemService.getEntity(JformOrderMain2Entity.class,
id
);
if(jformOrderMain2!=null){
jformOrderMain2Service.delMain(jformOrderMain2);
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(JformOrderMain2Entity jformOrderMain2,JformOrderMain2Page jformOrderMain2Page, HttpServletRequest request) {
List<JformOrderTicket2Entity> jformOrderTicket2List = jformOrderMain2Page.getJformOrderTicket2List();
List<JformOrderCustomer2Entity> jformOrderCustomer2List = jformOrderMain2Page.getJformOrderCustomer2List();
AjaxJson j = new AjaxJson();
String message = "添加成功";
try{
jformOrderMain2Service.addMain(jformOrderMain2, jformOrderTicket2List,jformOrderCustomer2List);
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(JformOrderMain2Entity jformOrderMain2,JformOrderMain2Page jformOrderMain2Page, HttpServletRequest request) {
List<JformOrderTicket2Entity> jformOrderTicket2List = jformOrderMain2Page.getJformOrderTicket2List();
List<JformOrderCustomer2Entity> jformOrderCustomer2List = jformOrderMain2Page.getJformOrderCustomer2List();
AjaxJson j = new AjaxJson();
String message = "更新成功";
try{
jformOrderMain2Service.updateMain(jformOrderMain2, jformOrderTicket2List,jformOrderCustomer2List);
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;
}
@RequestMapping(params = "goAdd")
public ModelAndView goAdd(HttpServletRequest req) {
//跳转主页面
return new ModelAndView("com/jeecg/demo/jformOrderMain2/main/addOrUpdate");
}
@RequestMapping(params = "goUpdate")
public ModelAndView goUpdate(HttpServletRequest req) {
//跳转主页面
String id = req.getParameter("id");
req.setAttribute("mainId",id);
req.setAttribute("load", req.getParameter("load"));
return new ModelAndView("com/jeecg/demo/jformOrderMain2/main/addOrUpdate");
}
/**
*
*
* @return
*/
@RequestMapping(params = "mainPage")
public ModelAndView mainPage(JformOrderMain2Entity jformOrderMain2, HttpServletRequest req) {
if (StringUtil.isNotEmpty(jformOrderMain2.getId())) {
jformOrderMain2 = jformOrderMain2Service.getEntity(JformOrderMain2Entity.class, jformOrderMain2.getId());
req.setAttribute("jformOrderMain2Page", jformOrderMain2);
}
return new ModelAndView("com/jeecg/demo/jformOrderMain2/main/jformOrderMain2");
}
/**
* []
*
* @return
*/
@RequestMapping(params = "jformOrderTicket2List")
public ModelAndView jformOrderTicket2List(JformOrderMain2Entity jformOrderMain2, HttpServletRequest req) {
//===================================================================================
//获取参数
Object id0 = jformOrderMain2.getId();
//===================================================================================
//查询-订单机票信息
String hql0 = "from JformOrderTicket2Entity where 1 = 1 AND fCK_ID = ? ";
try{
List<JformOrderTicket2Entity> jformOrderTicket2EntityList = systemService.findHql(hql0,id0);
req.setAttribute("jformOrderTicket2List", jformOrderTicket2EntityList);
}catch(Exception e){
logger.info(e.getMessage());
}
return new ModelAndView("com/jeecg/demo/jformOrderMain2/main/jformOrderTicket2");
}
/**
* []
*
* @return
*/
@RequestMapping(params = "jformOrderCustomer2List")
public ModelAndView jformOrderCustomer2List(JformOrderMain2Entity jformOrderMain2, HttpServletRequest req) {
//===================================================================================
//获取参数
Object id1 = jformOrderMain2.getId();
//===================================================================================
//查询-订单客户信息
String hql1 = "from JformOrderCustomer2Entity where 1 = 1 AND fK_ID = ? ";
try{
List<JformOrderCustomer2Entity> jformOrderCustomer2EntityList = systemService.findHql(hql1,id1);
req.setAttribute("jformOrderCustomer2List", jformOrderCustomer2EntityList);
}catch(Exception e){
logger.info(e.getMessage());
}
return new ModelAndView("com/jeecg/demo/jformOrderMain2/main/jformOrderCustomer2");
}
/**
* excel
*
* @param request
* @param response
*/
@RequestMapping(params = "exportXls")
public String exportXls(JformOrderMain2Entity jformOrderMain2,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid,ModelMap map) {
CriteriaQuery cq = new CriteriaQuery(JformOrderMain2Entity.class, dataGrid);
//查询条件组装器
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, jformOrderMain2);
try{
//自定义追加查询条件
}catch (Exception e) {
throw new BusinessException(e.getMessage());
}
cq.add();
List<JformOrderMain2Entity> list=this.jformOrderMain2Service.getListByCriteriaQuery(cq, false);
List<JformOrderMain2Page> pageList=new ArrayList<JformOrderMain2Page>();
if(list!=null&&list.size()>0){
for(JformOrderMain2Entity entity:list){
try{
JformOrderMain2Page page=new JformOrderMain2Page();
MyBeanUtils.copyBeanNotNull2Bean(entity,page);
Object id0 = entity.getId();
String hql0 = "from JformOrderTicket2Entity where 1 = 1 AND fCK_ID = ? ";
List<JformOrderTicket2Entity> jformOrderTicket2EntityList = systemService.findHql(hql0,id0);
page.setJformOrderTicket2List(jformOrderTicket2EntityList);
Object id1 = entity.getId();
String hql1 = "from JformOrderCustomer2Entity where 1 = 1 AND fK_ID = ? ";
List<JformOrderCustomer2Entity> jformOrderCustomer2EntityList = systemService.findHql(hql1,id1);
page.setJformOrderCustomer2List(jformOrderCustomer2EntityList);
pageList.add(page);
}catch(Exception e){
logger.info(e.getMessage());
}
}
}
map.put(NormalExcelConstants.FILE_NAME,"订单主信息");
map.put(NormalExcelConstants.CLASS,JformOrderMain2Page.class);
map.put(NormalExcelConstants.PARAMS,new ExportParams("订单主信息列表", "导出人:Jeecg",
"导出信息"));
map.put(NormalExcelConstants.DATA_LIST,pageList);
return NormalExcelConstants.JEECG_EXCEL_VIEW;
}
/**
* excel
* @param request
* @param
* @return
*/
@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(2);
params.setNeedSave(true);
try {
List<JformOrderMain2Page> list = ExcelImportUtil.importExcel(file.getInputStream(), JformOrderMain2Page.class, params);
JformOrderMain2Entity entity1=null;
for (JformOrderMain2Page page : list) {
entity1=new JformOrderMain2Entity();
MyBeanUtils.copyBeanNotNull2Bean(page,entity1);
jformOrderMain2Service.addMain(entity1, page.getJformOrderTicket2List(),page.getJformOrderCustomer2List());
}
j.setMsg("文件导入成功!");
} catch (Exception e) {
j.setMsg("文件导入失败!");
logger.error(ExceptionUtil.getExceptionMessage(e));
}finally{
try {
file.getInputStream().close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return j;
}
/**
* excel 使
*/
@RequestMapping(params = "exportXlsByT")
public String exportXlsByT(ModelMap map) {
map.put(NormalExcelConstants.FILE_NAME,"订单主信息");
map.put(NormalExcelConstants.CLASS,JformOrderMain2Page.class);
map.put(NormalExcelConstants.PARAMS,new ExportParams("订单主信息列表", "导出人:"+ ResourceUtil.getSessionUser().getRealName(),
"导出信息"));
map.put(NormalExcelConstants.DATA_LIST,new ArrayList());
return NormalExcelConstants.JEECG_EXCEL_VIEW;
}
/**
*
*
* @return
*/
@RequestMapping(params = "upload")
public ModelAndView upload(HttpServletRequest req) {
req.setAttribute("controller_name", "jformOrderMain2Controller");
return new ModelAndView("common/upload/pub_excel_upload");
}
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value="订单主信息列表信息",produces="application/json",httpMethod="GET")
public ResponseMessage<List<JformOrderMain2Page>> list() {
List<JformOrderMain2Entity> list= jformOrderMain2Service.getList(JformOrderMain2Entity.class);
List<JformOrderMain2Page> pageList=new ArrayList<JformOrderMain2Page>();
if(list!=null&&list.size()>0){
for(JformOrderMain2Entity entity:list){
try{
JformOrderMain2Page page=new JformOrderMain2Page();
MyBeanUtils.copyBeanNotNull2Bean(entity,page);
Object id0 = entity.getId();
Object id1 = entity.getId();
String hql0 = "from JformOrderTicket2Entity where 1 = 1 AND fCK_ID = ? ";
List<JformOrderTicket2Entity> jformOrderTicket2OldList = this.jformOrderMain2Service.findHql(hql0,id0);
page.setJformOrderTicket2List(jformOrderTicket2OldList);
String hql1 = "from JformOrderCustomer2Entity where 1 = 1 AND fK_ID = ? ";
List<JformOrderCustomer2Entity> jformOrderCustomer2OldList = this.jformOrderMain2Service.findHql(hql1,id1);
page.setJformOrderCustomer2List(jformOrderCustomer2OldList);
pageList.add(page);
}catch(Exception e){
logger.info(e.getMessage());
}
}
}
return Result.success(pageList);
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value="根据ID获取订单主信息信息",notes="根据ID获取订单主信息信息",httpMethod="GET",produces="application/json")
public ResponseMessage<?> get(@ApiParam(required=true,name="id",value="ID")@PathVariable("id") String id) {
JformOrderMain2Entity task = jformOrderMain2Service.get(JformOrderMain2Entity.class, id);
if (task == null) {
return Result.error("根据ID获取订单主信息信息为空");
}
JformOrderMain2Page page = new JformOrderMain2Page();
try {
MyBeanUtils.copyBeanNotNull2Bean(task, page);
Object id0 = task.getId();
Object id1 = task.getId();
String hql0 = "from JformOrderTicket2Entity where 1 = 1 AND fCK_ID = ? ";
List<JformOrderTicket2Entity> jformOrderTicket2OldList = this.jformOrderMain2Service.findHql(hql0,id0);
page.setJformOrderTicket2List(jformOrderTicket2OldList);
String hql1 = "from JformOrderCustomer2Entity where 1 = 1 AND fK_ID = ? ";
List<JformOrderCustomer2Entity> jformOrderCustomer2OldList = this.jformOrderMain2Service.findHql(hql1,id1);
page.setJformOrderCustomer2List(jformOrderCustomer2OldList);
} catch (Exception e) {
e.printStackTrace();
}
return Result.success(page);
}
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
@ApiOperation(value="创建订单主信息")
public ResponseMessage<?> create(@ApiParam(name="订单主信息对象")@RequestBody JformOrderMain2Page jformOrderMain2Page, UriComponentsBuilder uriBuilder) {
//调用JSR303 Bean Validator进行校验如果出错返回含400错误码及json格式的错误信息.
Set<ConstraintViolation<JformOrderMain2Page>> failures = validator.validate(jformOrderMain2Page);
if (!failures.isEmpty()) {
return Result.error(JSONArray.toJSONString(BeanValidators.extractPropertyAndMessage(failures)));
}
//保存
List<JformOrderTicket2Entity> jformOrderTicket2List = jformOrderMain2Page.getJformOrderTicket2List();
List<JformOrderCustomer2Entity> jformOrderCustomer2List = jformOrderMain2Page.getJformOrderCustomer2List();
JformOrderMain2Entity jformOrderMain2 = new JformOrderMain2Entity();
try{
MyBeanUtils.copyBeanNotNull2Bean(jformOrderMain2Page,jformOrderMain2);
}catch(Exception e){
logger.info(e.getMessage());
return Result.error("保存订单主信息失败");
}
jformOrderMain2Service.addMain(jformOrderMain2, jformOrderTicket2List,jformOrderCustomer2List);
return Result.success(jformOrderMain2);
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
@ApiOperation(value="更新订单主信息",notes="更新订单主信息")
public ResponseMessage<?> update(@RequestBody JformOrderMain2Page jformOrderMain2Page) {
//调用JSR303 Bean Validator进行校验如果出错返回含400错误码及json格式的错误信息.
Set<ConstraintViolation<JformOrderMain2Page>> failures = validator.validate(jformOrderMain2Page);
if (!failures.isEmpty()) {
return Result.error(JSONArray.toJSONString(BeanValidators.extractPropertyAndMessage(failures)));
}
//保存
List<JformOrderTicket2Entity> jformOrderTicket2List = jformOrderMain2Page.getJformOrderTicket2List();
List<JformOrderCustomer2Entity> jformOrderCustomer2List = jformOrderMain2Page.getJformOrderCustomer2List();
JformOrderMain2Entity jformOrderMain2 = new JformOrderMain2Entity();
try{
MyBeanUtils.copyBeanNotNull2Bean(jformOrderMain2Page,jformOrderMain2);
}catch(Exception e){
logger.info(e.getMessage());
return Result.error("订单主信息更新失败");
}
jformOrderMain2Service.updateMain(jformOrderMain2, jformOrderTicket2List,jformOrderCustomer2List);
//按Restful约定返回204状态码, 无内容. 也可以返回200状态码.
return Result.success();
}
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseStatus(HttpStatus.NO_CONTENT)
@ApiOperation(value="删除订单主信息")
public ResponseMessage<?> delete(@ApiParam(name="id",value="ID",required=true)@PathVariable("id") String id) {
logger.info("delete[{}]" + id);
// 验证
if (StringUtils.isEmpty(id)) {
return Result.error("ID不能为空");
}
try {
JformOrderMain2Entity jformOrderMain2 = jformOrderMain2Service.get(JformOrderMain2Entity.class, id);
jformOrderMain2Service.delMain(jformOrderMain2);
} catch (Exception e) {
e.printStackTrace();
return Result.error("订单主信息删除失败");
}
return Result.success();
}
}

@ -602,218 +602,6 @@ public class JformOrderMainController extends BaseController {
return j;
}
/**
* URL
* @param request
* @return
*/
@RequestMapping(params = "orderList")
public ModelAndView orderList(HttpServletRequest request) {
return new ModelAndView("com/jeecg/demo/orderDemo/jform-order-list");
}
/**
* URL
* @param request
* @return
*/
@RequestMapping(params = "goAddOrder")
public ModelAndView addOrder(HttpServletRequest request) {
return new ModelAndView("com/jeecg/demo/orderDemo/jform-order-add");
}
/**
* URL
* @param jformOrderMain
* @param request
* @return
*/
@RequestMapping(params = "goEditOrder")
public ModelAndView editOrder(JformOrderMainEntity jformOrderMain,HttpServletRequest request) {
if (StringUtil.isNotEmpty(jformOrderMain.getId())) {
//获取参数
String fkId = jformOrderMain.getId();
jformOrderMain = jformOrderMainService.getEntity(JformOrderMainEntity.class, fkId);
request.setAttribute("order", jformOrderMain);
}
return new ModelAndView("com/jeecg/demo/orderDemo/jform-order-edit");
}
/**
*
* @param jformOrderCustomerEntity
* @param req
* @return
*/
@ResponseBody
@RequestMapping(params = "customerList")
public JSONObject customerList(JformOrderCustomerEntity jformOrderCustomerEntity) {
String id0 = jformOrderCustomerEntity.getFkId();
String hql0 = "from JformOrderCustomerEntity where 1 = 1 AND fK_ID = ? ";
return dataFactory(hql0,id0,jformOrderCustomerEntity);
}
/**
*
* @param jformOrderTicketEntity
* @param req
* @return
*/
@ResponseBody
@RequestMapping(params = "ticketList")
public JSONObject ticketList(JformOrderTicketEntity jformOrderTicketEntity) {
String id1 = jformOrderTicketEntity.getFckId();
String hql1 = "from JformOrderTicketEntity where 1 = 1 AND fCK_ID = ? ";
return dataFactory(hql1,id1,jformOrderTicketEntity);
}
/**
*
* @param jformOrderMain
* @param request
* @param dataGrid
* @return
*/
@ResponseBody
@RequestMapping(params = "orderDataGrid")
public JSONObject fgrid(JformOrderMainEntity jformOrderMain,HttpServletRequest request, DataGrid dataGrid) {
return dataFatory(JformOrderMainEntity.class, jformOrderMain, request, dataGrid);
}
/**
*
* @param jformCustomer
* @param request
* @param dataGrid
* @return
*/
@ResponseBody
@RequestMapping(params = "customerDataGrid")
public JSONObject customerFGrid(JformOrderCustomerEntity jformCustomer,HttpServletRequest request, DataGrid dataGrid) {
JSONObject jo = null;
if(jformCustomer.getFkId() == null || "".equals(jformCustomer.getFkId())){
}else{
jo = dataFatory(JformOrderCustomerEntity.class, jformCustomer, request, dataGrid);
}
return jo;
}
/**
* FineUI
* @param clazz
* @param object
* @param request
* @param response
* @param dataGrid
* @return
* json
*/
public JSONObject dataFatory(Class<?> clazz,Object object,HttpServletRequest request, DataGrid dataGrid){
String pageIndex = request.getParameter("pageIndex");
if (StringUtil.isNotEmpty(pageIndex)) {
dataGrid.setPage(Integer.valueOf(pageIndex)+1);
}
String pageSize = request.getParameter("pageSize");
if (StringUtil.isNotEmpty(pageSize)) {
dataGrid.setRows(Integer.valueOf(pageSize));
}
String databaseSorting = request.getParameter("databaseSorting");
if (null != databaseSorting && Boolean.valueOf(databaseSorting)) {
String sortField = request.getParameter("sortField");
if (StringUtil.isNotEmpty(sortField)) {
dataGrid.setField(sortField);
}
String sortDirection = request.getParameter("sortDirection");
if (StringUtil.isNotEmpty(sortDirection)) {
dataGrid.setSort(sortDirection);
}
}
CriteriaQuery cq = new CriteriaQuery(clazz, dataGrid);
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, object);
JSONObject jo = null;
try{
//自定义追加查询条件
cq.add();
this.jformOrderMainService.getDataGridReturn(cq, true);
String[] fieldNames = ReflectHelper.getFiledName(object);
jo = new JSONObject();
jo.put("recordCount", dataGrid.getTotal());
jo.put("fields", fieldNames);
List<String[]> data = new ArrayList<String[]>();
for(Object entity:dataGrid.getResults()){
String[] values = new String[fieldNames.length];
for(int i=0;i<fieldNames.length;i++){
Object o = ReflectHelper.getFieldValueByName(fieldNames[i], entity);
values[i] = o == null ? "" : o.toString();
}
data.add(values);
}
jo.put("data", data);
}catch (Exception e) {
e.printStackTrace();
}
return jo;
}
/**
* FineUI
* @param hql
* @param id
* @param object
* @return
* json
*/
public JSONObject dataFactory(String hql,Object id,Object object){
JSONObject jo = null;
try{
List<T> ticketList = systemService.findHql(hql,id);
String[] fieldNames = ReflectHelper.getFiledName(object);
jo = new JSONObject();
jo.put("recordCount", ticketList.size());
jo.put("fields", fieldNames);
List<String[]> data = new ArrayList<String[]>();
for(Object entity: ticketList){
String[] values = new String[fieldNames.length];
for(int i=0;i<fieldNames.length;i++){
Object o = ReflectHelper.getFieldValueByName(fieldNames[i], entity);
values[i] = o == null ? "" : o.toString();
}
data.add(values);
}
jo.put("data", data);
//System.out.println(JSON.toJSONString(jo,true));
}catch(Exception e){
logger.info(e.getMessage());
}
return jo;
}
/**
*
* @return
*/
@ResponseBody
@RequestMapping(params = "doUpdateCustomer")
public AjaxJson doUpdateCustomer(JformOrderMainEntity jformOrderMain,JformOrderMainPage jformOrderMainPage, HttpServletRequest request) {
List<JformOrderCustomerEntity> jformOrderCustomerList = jformOrderMainPage.getJformOrderCustomerList();
AjaxJson j = new AjaxJson();
String message = "更新成功";
try{
jformOrderMainService.updateCustomers(jformOrderCustomerList);
systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
}catch(Exception e){
e.printStackTrace();
j.setSuccess(false);
message = "更新失败";
throw new BusinessException(e.getMessage());
}
j.setMsg(message);
return j;
}
/**
*
* @param page

@ -0,0 +1,419 @@
package com.jeecg.demo.controller;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.ConstraintViolation;
import javax.validation.Validator;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.jeecgframework.core.beanvalidator.BeanValidators;
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.core.util.oConvertUtils;
import org.jeecgframework.jwt.util.ResponseMessage;
import org.jeecgframework.jwt.util.Result;
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.system.service.SystemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
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.bind.annotation.ResponseStatus;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.util.UriComponentsBuilder;
import com.alibaba.fastjson.JSONArray;
import com.jeecg.demo.entity.JformOrderTicket2Entity;
import com.jeecg.demo.service.JformOrderMain2ServiceI;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
/**
* @Title: Controller
* @Description:
* @author onlineGenerator
* @date 2018-03-27 17:03:29
* @version V1.0
*
*/
@Controller
@RequestMapping("/jformOrderTicket2Controller")
@Api(value="JformOrderTicket2",description="订单机票信息",tags="jformOrderTicket2Controller")
public class JformOrderTicket2Controller extends BaseController {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(JformOrderTicket2Controller.class);
@Autowired
private JformOrderMain2ServiceI jformOrderMain2Service;
@Autowired
private SystemService systemService;
@Autowired
private Validator validator;
/**
*
*
* @return
*/
@RequestMapping(params = "list")
public ModelAndView list(HttpServletRequest request) {
return new ModelAndView("com/jeecg/demo/jformOrderMain2/jformOrderTicket2/list");
}
/**
* easyui AJAX
*
* @param request
* @param response
* @param dataGrid
* @param user
*/
@RequestMapping(params = "datagrid")
public void datagrid(JformOrderTicket2Entity jformOrderTicket2,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
CriteriaQuery cq = new CriteriaQuery(JformOrderTicket2Entity.class, dataGrid);
String mainId = request.getParameter("mainId");
if(oConvertUtils.isNotEmpty(mainId)){
//查询条件组装器
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, jformOrderTicket2, request.getParameterMap());
try{
//自定义追加查询条件
cq.eq("fckId", mainId);
}catch (Exception e) {
throw new BusinessException(e.getMessage());
}
cq.add();
this.jformOrderMain2Service.getDataGridReturn(cq, true);
}
TagUtil.datagrid(response, dataGrid);
}
/**
*
*
* @return
*/
@RequestMapping(params = "doDel")
@ResponseBody
public AjaxJson doDel(JformOrderTicket2Entity jformOrderTicket2, HttpServletRequest request) {
String message = null;
AjaxJson j = new AjaxJson();
jformOrderTicket2 = systemService.getEntity(JformOrderTicket2Entity.class, jformOrderTicket2.getId());
message = "订单机票信息删除成功";
try{
if(jformOrderTicket2!=null){
jformOrderMain2Service.delete(jformOrderTicket2);
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){
String message = null;
AjaxJson j = new AjaxJson();
message = "订单机票信息删除成功";
try{
for(String id:ids.split(",")){
JformOrderTicket2Entity jformOrderTicket2 = systemService.getEntity(JformOrderTicket2Entity.class,
id
);
if(jformOrderTicket2!=null){
jformOrderMain2Service.delete(jformOrderTicket2);
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(JformOrderTicket2Entity jformOrderTicket2, HttpServletRequest request) {
String message = null;
AjaxJson j = new AjaxJson();
message = "订单机票信息添加成功";
try{
jformOrderMain2Service.save(jformOrderTicket2);
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(JformOrderTicket2Entity jformOrderTicket2, HttpServletRequest request) {
String message = null;
AjaxJson j = new AjaxJson();
message = "订单机票信息更新成功";
JformOrderTicket2Entity t = jformOrderMain2Service.get(JformOrderTicket2Entity.class, jformOrderTicket2.getId());
try {
MyBeanUtils.copyBeanNotNull2Bean(jformOrderTicket2, t);
jformOrderMain2Service.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(JformOrderTicket2Entity jformOrderTicket2, HttpServletRequest req) {
if (StringUtil.isNotEmpty(jformOrderTicket2.getId())) {
jformOrderTicket2 = jformOrderMain2Service.getEntity(JformOrderTicket2Entity.class, jformOrderTicket2.getId());
req.setAttribute("jformOrderTicket2Page", jformOrderTicket2);
}
req.setAttribute("mainId", req.getParameter("mainId"));
return new ModelAndView("com/jeecg/demo/jformOrderMain2/jformOrderTicket2/add");
}
/**
*
*
* @return
*/
@RequestMapping(params = "goUpdate")
public ModelAndView goUpdate(JformOrderTicket2Entity jformOrderTicket2, HttpServletRequest req) {
if (StringUtil.isNotEmpty(jformOrderTicket2.getId())) {
jformOrderTicket2 = jformOrderMain2Service.getEntity(JformOrderTicket2Entity.class, jformOrderTicket2.getId());
req.setAttribute("jformOrderTicket2Page", jformOrderTicket2);
}
return new ModelAndView("com/jeecg/demo/jformOrderMain2/jformOrderTicket2/update");
}
/**
*
*
* @return
*/
@RequestMapping(params = "upload")
public ModelAndView upload(HttpServletRequest req) {
req.setAttribute("controller_name","jformOrderTicket2Controller");
return new ModelAndView("common/upload/pub_excel_upload");
}
/**
* excel
*
* @param request
* @param response
*/
@RequestMapping(params = "exportXls")
public String exportXls(JformOrderTicket2Entity jformOrderTicket2,HttpServletRequest request,HttpServletResponse response
, DataGrid dataGrid,ModelMap modelMap) {
CriteriaQuery cq = new CriteriaQuery(JformOrderTicket2Entity.class, dataGrid);
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, jformOrderTicket2, request.getParameterMap());
List<JformOrderTicket2Entity> jformOrderTicket2s = this.jformOrderMain2Service.getListByCriteriaQuery(cq,false);
modelMap.put(NormalExcelConstants.FILE_NAME,"订单机票信息");
modelMap.put(NormalExcelConstants.CLASS,JformOrderTicket2Entity.class);
modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("订单机票信息列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
"导出信息"));
modelMap.put(NormalExcelConstants.DATA_LIST,jformOrderTicket2s);
return NormalExcelConstants.JEECG_EXCEL_VIEW;
}
/**
* excel 使
*
* @param request
* @param response
*/
@RequestMapping(params = "exportXlsByT")
public String exportXlsByT(JformOrderTicket2Entity jformOrderTicket2,HttpServletRequest request,HttpServletResponse response
, DataGrid dataGrid,ModelMap modelMap) {
modelMap.put(NormalExcelConstants.FILE_NAME,"订单机票信息");
modelMap.put(NormalExcelConstants.CLASS,JformOrderTicket2Entity.class);
modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("订单机票信息列表", "导出人:"+ResourceUtil.getSessionUser().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<JformOrderTicket2Entity> listJformOrderTicket2Entitys = ExcelImportUtil.importExcel(file.getInputStream(),JformOrderTicket2Entity.class,params);
for (JformOrderTicket2Entity jformOrderTicket2 : listJformOrderTicket2Entitys) {
jformOrderMain2Service.save(jformOrderTicket2);
}
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(method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value="订单机票信息列表信息",produces="application/json",httpMethod="GET")
public ResponseMessage<List<JformOrderTicket2Entity>> list() {
List<JformOrderTicket2Entity> listJformOrderTicket2s=jformOrderMain2Service.getList(JformOrderTicket2Entity.class);
return Result.success(listJformOrderTicket2s);
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value="根据ID获取订单机票信息信息",notes="根据ID获取订单机票信息信息",httpMethod="GET",produces="application/json")
public ResponseMessage<?> get(@ApiParam(required=true,name="id",value="ID")@PathVariable("id") String id) {
JformOrderTicket2Entity task = jformOrderMain2Service.get(JformOrderTicket2Entity.class, id);
if (task == null) {
return Result.error("根据ID获取订单机票信息信息为空");
}
return Result.success(task);
}
@RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
@ApiOperation(value="创建订单机票信息")
public ResponseMessage<?> create(@ApiParam(name="订单机票信息对象")@RequestBody JformOrderTicket2Entity jformOrderTicket2, UriComponentsBuilder uriBuilder) {
//调用JSR303 Bean Validator进行校验如果出错返回含400错误码及json格式的错误信息.
Set<ConstraintViolation<JformOrderTicket2Entity>> failures = validator.validate(jformOrderTicket2);
if (!failures.isEmpty()) {
return Result.error(JSONArray.toJSONString(BeanValidators.extractPropertyAndMessage(failures)));
}
//保存
try{
jformOrderMain2Service.save(jformOrderTicket2);
} catch (Exception e) {
e.printStackTrace();
return Result.error("订单机票信息信息保存失败");
}
return Result.success(jformOrderTicket2);
}
@RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
@ApiOperation(value="更新订单机票信息",notes="更新订单机票信息")
public ResponseMessage<?> update(@ApiParam(name="订单机票信息对象")@RequestBody JformOrderTicket2Entity jformOrderTicket2) {
//调用JSR303 Bean Validator进行校验如果出错返回含400错误码及json格式的错误信息.
Set<ConstraintViolation<JformOrderTicket2Entity>> failures = validator.validate(jformOrderTicket2);
if (!failures.isEmpty()) {
return Result.error(JSONArray.toJSONString(BeanValidators.extractPropertyAndMessage(failures)));
}
//保存
try{
jformOrderMain2Service.saveOrUpdate(jformOrderTicket2);
} catch (Exception e) {
e.printStackTrace();
return Result.error("更新订单机票信息信息失败");
}
//按Restful约定返回204状态码, 无内容. 也可以返回200状态码.
return Result.success("更新订单机票信息信息成功");
}
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
@ResponseStatus(HttpStatus.NO_CONTENT)
@ApiOperation(value="删除订单机票信息")
public ResponseMessage<?> delete(@ApiParam(name="id",value="ID",required=true)@PathVariable("id") String id) {
logger.info("delete[{}]" + id);
// 验证
if (StringUtils.isEmpty(id)) {
return Result.error("ID不能为空");
}
try {
jformOrderMain2Service.deleteEntityById(JformOrderTicket2Entity.class, id);
} catch (Exception e) {
e.printStackTrace();
return Result.error("订单机票信息删除失败");
}
return Result.success();
}
}

@ -28,9 +28,9 @@ 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.core.util.oConvertUtils;
import org.jeecgframework.jwt.util.ResponseMessage;
import org.jeecgframework.jwt.util.Result;
import org.jeecgframework.p3.core.util.oConvertUtils;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;

@ -3,9 +3,7 @@ package com.jeecg.demo.dao;
import java.util.List;
import java.util.Map;
import com.jeecg.chat.entity.ChatMessageHistory;
import org.jeecgframework.minidao.annotation.*;
import com.jeecg.demo.entity.JeecgDemoEntity;
import com.jeecg.demo.entity.JeecgLogReport;
import org.jeecgframework.minidao.pojo.MiniDaoPage;

@ -6,7 +6,9 @@ import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.codehaus.jackson.map.annotate.JsonDeserialize;
import org.hibernate.annotations.GenericGenerator;
import org.jeecgframework.core.common.controller.CustomJsonDateDeserializer;
import org.jeecgframework.poi.excel.annotation.Excel;
/**
@ -139,6 +141,7 @@ public class JeecgDemoEntity implements java.io.Serializable {
*: java.util.Date
*@param: java.util.Date
*/
@JsonDeserialize(using = CustomJsonDateDeserializer.class)
public void setBirthday(java.util.Date birthday){
this.birthday = birthday;
}
@ -267,6 +270,7 @@ public class JeecgDemoEntity implements java.io.Serializable {
*: java.util.Date
*@param: java.util.Date createDate
*/
@JsonDeserialize(using = CustomJsonDateDeserializer.class)
public void setCreateDate(java.util.Date createDate){
this.createDate = createDate;
}

@ -0,0 +1,160 @@
package com.jeecg.demo.entity;
import java.math.BigDecimal;
import java.util.Date;
import java.lang.String;
import java.lang.Double;
import java.lang.Integer;
import java.math.BigDecimal;
import javax.xml.soap.Text;
import java.sql.Blob;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.SequenceGenerator;
import org.jeecgframework.poi.excel.annotation.Excel;
/**
* @Title: Entity
* @Description:
* @author onlineGenerator
* @date 2018-03-27 16:21:58
* @version V1.0
*
*/
@Entity
@Table(name = "jform_order_customer", schema = "")
@SuppressWarnings("serial")
public class JformOrderCustomer2Entity implements java.io.Serializable {
/**主键*/
private java.lang.String id;
/**客户名*/
@Excel(name="客户名",width=15)
private java.lang.String name;
/**单价*/
@Excel(name="单价",width=15)
private java.lang.Double money;
/**性别*/
@Excel(name="性别",width=15,dicCode="sex")
private java.lang.String sex;
/**电话*/
@Excel(name="电话",width=15)
private java.lang.String telphone;
/**外键*/
private java.lang.String fkId;
/**
*: 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 ="NAME",nullable=true,length=32)
public java.lang.String getName(){
return this.name;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setName(java.lang.String name){
this.name = name;
}
/**
*: java.lang.Double
*@return: java.lang.Double
*/
@Column(name ="MONEY",nullable=true,scale=2,length=10)
public java.lang.Double getMoney(){
return this.money;
}
/**
*: java.lang.Double
*@param: java.lang.Double
*/
public void setMoney(java.lang.Double money){
this.money = money;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="SEX",nullable=true,length=4)
public java.lang.String getSex(){
return this.sex;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setSex(java.lang.String sex){
this.sex = sex;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="TELPHONE",nullable=true,length=32)
public java.lang.String getTelphone(){
return this.telphone;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setTelphone(java.lang.String telphone){
this.telphone = telphone;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="FK_ID",nullable=false,length=36)
public java.lang.String getFkId(){
return this.fkId;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setFkId(java.lang.String fkId){
this.fkId = fkId;
}
}

@ -0,0 +1,140 @@
package com.jeecg.demo.entity;
import java.math.BigDecimal;
import java.util.Date;
import java.lang.String;
import java.lang.Double;
import java.lang.Integer;
import java.math.BigDecimal;
import javax.xml.soap.Text;
import java.sql.Blob;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.SequenceGenerator;
import org.jeecgframework.poi.excel.annotation.Excel;
/**
* @Title: Entity
* @Description:
* @author onlineGenerator
* @date 2018-03-27 16:21:58
* @version V1.0
*
*/
@Entity
@Table(name = "jform_order_main", schema = "")
@SuppressWarnings("serial")
public class JformOrderMain2Entity implements java.io.Serializable {
/**主键*/
private java.lang.String id;
/**订单号*/
@Excel(name="订单号",width=15)
private java.lang.String orderCode;
/**订单日期*/
@Excel(name="订单日期",width=15,format = "yyyy-MM-dd")
private java.util.Date orderDate;
/**订单金额*/
@Excel(name="订单金额",width=15)
private java.lang.Double orderMoney;
/**备注*/
@Excel(name="备注",width=15)
private java.lang.String content;
/**
*: 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 ="ORDER_CODE",nullable=true,length=50)
public java.lang.String getOrderCode(){
return this.orderCode;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setOrderCode(java.lang.String orderCode){
this.orderCode = orderCode;
}
/**
*: java.util.Date
*@return: java.util.Date
*/
@Column(name ="ORDER_DATE",nullable=true,length=20)
public java.util.Date getOrderDate(){
return this.orderDate;
}
/**
*: java.util.Date
*@param: java.util.Date
*/
public void setOrderDate(java.util.Date orderDate){
this.orderDate = orderDate;
}
/**
*: java.lang.Double
*@return: java.lang.Double
*/
@Column(name ="ORDER_MONEY",nullable=true,scale=3,length=10)
public java.lang.Double getOrderMoney(){
return this.orderMoney;
}
/**
*: java.lang.Double
*@param: java.lang.Double
*/
public void setOrderMoney(java.lang.Double orderMoney){
this.orderMoney = orderMoney;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="CONTENT",nullable=true,length=255)
public java.lang.String getContent(){
return this.content;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setContent(java.lang.String content){
this.content = content;
}
}

@ -0,0 +1,118 @@
package com.jeecg.demo.entity;
import java.math.BigDecimal;
import java.util.Date;
import java.lang.String;
import java.lang.Double;
import java.lang.Integer;
import java.math.BigDecimal;
import javax.xml.soap.Text;
import java.sql.Blob;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.SequenceGenerator;
import org.jeecgframework.poi.excel.annotation.Excel;
/**
* @Title: Entity
* @Description:
* @author onlineGenerator
* @date 2018-03-27 16:21:58
* @version V1.0
*
*/
@Entity
@Table(name = "jform_order_ticket", schema = "")
@SuppressWarnings("serial")
public class JformOrderTicket2Entity implements java.io.Serializable {
/**主键*/
private java.lang.String id;
/**航班号*/
@Excel(name="航班号",width=15)
private java.lang.String ticketCode;
/**航班时间*/
@Excel(name="航班时间",width=15,format = "yyyy-MM-dd")
private java.util.Date tickectDate;
/**外键*/
private java.lang.String fckId;
/**
*: 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 ="TICKET_CODE",nullable=false,length=100)
public java.lang.String getTicketCode(){
return this.ticketCode;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setTicketCode(java.lang.String ticketCode){
this.ticketCode = ticketCode;
}
/**
*: java.util.Date
*@return: java.util.Date
*/
@Column(name ="TICKECT_DATE",nullable=false,length=10)
public java.util.Date getTickectDate(){
return this.tickectDate;
}
/**
*: java.util.Date
*@param: java.util.Date
*/
public void setTickectDate(java.util.Date tickectDate){
this.tickectDate = tickectDate;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="FCK_ID",nullable=false,length=36)
public java.lang.String getFckId(){
return this.fckId;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setFckId(java.lang.String fckId){
this.fckId = fckId;
}
}

@ -0,0 +1,141 @@
package com.jeecg.demo.page;
import com.jeecg.demo.entity.JformOrderMain2Entity;
import com.jeecg.demo.entity.JformOrderTicket2Entity;
import com.jeecg.demo.entity.JformOrderCustomer2Entity;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.SequenceGenerator;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecgframework.poi.excel.annotation.ExcelCollection;
/**
* @Title: Entity
* @Description:
* @author onlineGenerator
* @date 2018-03-27 16:21:58
* @version V1.0
*
*/
public class JformOrderMain2Page implements java.io.Serializable {
/**主键*/
private java.lang.String id;
/**订单号*/
@Excel(name="订单号")
private java.lang.String orderCode;
/**订单日期*/
@Excel(name="订单日期",format = "yyyy-MM-dd")
private java.util.Date orderDate;
/**订单金额*/
@Excel(name="订单金额")
private java.lang.Double orderMoney;
/**备注*/
@Excel(name="备注")
private java.lang.String content;
/**
*: java.lang.String
*@return: java.lang.String
*/
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
*/
public java.lang.String getOrderCode(){
return this.orderCode;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setOrderCode(java.lang.String orderCode){
this.orderCode = orderCode;
}
/**
*: java.util.Date
*@return: java.util.Date
*/
public java.util.Date getOrderDate(){
return this.orderDate;
}
/**
*: java.util.Date
*@param: java.util.Date
*/
public void setOrderDate(java.util.Date orderDate){
this.orderDate = orderDate;
}
/**
*: java.lang.Double
*@return: java.lang.Double
*/
public java.lang.Double getOrderMoney(){
return this.orderMoney;
}
/**
*: java.lang.Double
*@param: java.lang.Double
*/
public void setOrderMoney(java.lang.Double orderMoney){
this.orderMoney = orderMoney;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
public java.lang.String getContent(){
return this.content;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setContent(java.lang.String content){
this.content = content;
}
/**保存-订单机票信息*/
@ExcelCollection(name="订单机票信息")
private List<JformOrderTicket2Entity> jformOrderTicket2List = new ArrayList<JformOrderTicket2Entity>();
public List<JformOrderTicket2Entity> getJformOrderTicket2List() {
return jformOrderTicket2List;
}
public void setJformOrderTicket2List(List<JformOrderTicket2Entity> jformOrderTicket2List) {
this.jformOrderTicket2List = jformOrderTicket2List;
}
/**保存-订单客户信息*/
@ExcelCollection(name="订单客户信息")
private List<JformOrderCustomer2Entity> jformOrderCustomer2List = new ArrayList<JformOrderCustomer2Entity>();
public List<JformOrderCustomer2Entity> getJformOrderCustomer2List() {
return jformOrderCustomer2List;
}
public void setJformOrderCustomer2List(List<JformOrderCustomer2Entity> jformOrderCustomer2List) {
this.jformOrderCustomer2List = jformOrderCustomer2List;
}
}

@ -11,8 +11,9 @@ public interface JeecgDemoServiceI extends CommonService{
public Serializable save(JeecgDemoEntity entity) throws Exception;
public void saveOrUpdate(JeecgDemoEntity entity) throws Exception;
public void jdbcBatchSave() throws Exception;
public void jdbcBatchSave() throws Exception;
public void jdbcProcedure() throws Exception;
}

@ -0,0 +1,49 @@
package com.jeecg.demo.service;
import com.jeecg.demo.entity.JformOrderMain2Entity;
import com.jeecg.demo.entity.JformOrderTicket2Entity;
import com.jeecg.demo.entity.JformOrderCustomer2Entity;
import java.util.List;
import org.jeecgframework.core.common.service.CommonService;
import java.io.Serializable;
public interface JformOrderMain2ServiceI extends CommonService{
public <T> void delete(T entity);
/*public <T> void add(T entity);
public <T> void addOrUpdate(T entity);*/
/**
*
*
*/
public void addMain(JformOrderMain2Entity jformOrderMain2,
List<JformOrderTicket2Entity> jformOrderTicket2List,List<JformOrderCustomer2Entity> jformOrderCustomer2List) ;
/**
*
*
*/
public void updateMain(JformOrderMain2Entity jformOrderMain2,
List<JformOrderTicket2Entity> jformOrderTicket2List,List<JformOrderCustomer2Entity> jformOrderCustomer2List);
public void delMain (JformOrderMain2Entity jformOrderMain2);
/**
* -sql-
* @param id
* @return
*/
public boolean doAddSql(JformOrderMain2Entity t);
/**
* -sql-
* @param id
* @return
*/
public boolean doUpdateSql(JformOrderMain2Entity t);
/**
* -sql-
* @param id
* @return
*/
public boolean doDelSql(JformOrderMain2Entity t);
}

@ -29,10 +29,12 @@ import com.jeecg.demo.service.JeecgDemoServiceI;
@Transactional
public class JeecgDemoServiceImpl extends CommonServiceImpl implements JeecgDemoServiceI {
private static final Logger logger = Logger.getLogger(JeecgDemoServiceImpl.class);
@Autowired
private JdbcDao jdbcDao;
public void delete(JeecgDemoEntity entity) throws Exception{
super.delete(entity);
//执行删除操作增强业务
@ -58,21 +60,33 @@ public class JeecgDemoServiceImpl extends CommonServiceImpl implements JeecgDemo
* @return
*/
private void doAddBus(JeecgDemoEntity t) throws Exception{
}
//-----------------sql增强 start----------------------------
//-----------------sql增强 end------------------------------
//-----------------java增强 start---------------------------
}
/**
*
* @param t
* @return
*/
private void doUpdateBus(JeecgDemoEntity t) throws Exception{
}
//-----------------sql增强 start----------------------------
//-----------------sql增强 end------------------------------
//-----------------java增强 start---------------------------
}
/**
*
* @param id
* @return
*/
private void doDelBus(JeecgDemoEntity t) throws Exception{
}
//-----------------sql增强 start----------------------------
//-----------------sql增强 end------------------------------
//-----------------java增强 start---------------------------
}
private Map<String,Object> populationMap(JeecgDemoEntity t){
Map<String,Object> map = new HashMap<String,Object>();
@ -147,7 +161,7 @@ public class JeecgDemoServiceImpl extends CommonServiceImpl implements JeecgDemo
}
}
}
/**
/**
* JDBC
*/
@Override
@ -192,4 +206,5 @@ public class JeecgDemoServiceImpl extends CommonServiceImpl implements JeecgDemo
}
}

@ -0,0 +1,205 @@
package com.jeecg.demo.service.impl;
import java.util.List;
import java.util.UUID;
import org.jeecgframework.core.common.exception.BusinessException;
import org.jeecgframework.core.common.service.impl.CommonServiceImpl;
import org.jeecgframework.core.util.MyBeanUtils;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.core.util.oConvertUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.jeecg.demo.entity.JformOrderCustomer2Entity;
import com.jeecg.demo.entity.JformOrderMain2Entity;
import com.jeecg.demo.entity.JformOrderTicket2Entity;
import com.jeecg.demo.service.JformOrderMain2ServiceI;
@Service("jformOrderMain2Service")
@Transactional
public class JformOrderMain2ServiceImpl extends CommonServiceImpl implements JformOrderMain2ServiceI {
public <T> void delete(T entity) {
super.delete(entity);
}
public void addMain(JformOrderMain2Entity jformOrderMain2,
List<JformOrderTicket2Entity> jformOrderTicket2List,List<JformOrderCustomer2Entity> jformOrderCustomer2List){
//保存主信息
this.save(jformOrderMain2);
/**保存-订单机票信息*/
for(JformOrderTicket2Entity jformOrderTicket2:jformOrderTicket2List){
//外键设置
jformOrderTicket2.setFckId(jformOrderMain2.getId());
this.save(jformOrderTicket2);
}
/**保存-订单客户信息*/
for(JformOrderCustomer2Entity jformOrderCustomer2:jformOrderCustomer2List){
//外键设置
jformOrderCustomer2.setFkId(jformOrderMain2.getId());
this.save(jformOrderCustomer2);
}
//执行新增操作配置的sql增强
this.doAddSql(jformOrderMain2);
}
public void updateMain(JformOrderMain2Entity jformOrderMain2,
List<JformOrderTicket2Entity> jformOrderTicket2List,List<JformOrderCustomer2Entity> jformOrderCustomer2List) {
//保存主表信息
if(StringUtil.isNotEmpty(jformOrderMain2.getId())){
try {
JformOrderMain2Entity temp = findUniqueByProperty(JformOrderMain2Entity.class, "id", jformOrderMain2.getId());
MyBeanUtils.copyBeanNotNull2Bean(jformOrderMain2, temp);
this.saveOrUpdate(temp);
} catch (Exception e) {
e.printStackTrace();
}
}else{
this.saveOrUpdate(jformOrderMain2);
}
//===================================================================================
//获取参数
Object id0 = jformOrderMain2.getId();
Object id1 = jformOrderMain2.getId();
//===================================================================================
//1.查询出数据库的明细数据-订单机票信息
String hql0 = "from JformOrderTicket2Entity where 1 = 1 AND fCK_ID = ? ";
List<JformOrderTicket2Entity> jformOrderTicket2OldList = this.findHql(hql0,id0);
//2.筛选更新明细数据-订单机票信息
if(jformOrderTicket2List!=null&&jformOrderTicket2List.size()>0){
for(JformOrderTicket2Entity oldE:jformOrderTicket2OldList){
boolean isUpdate = false;
for(JformOrderTicket2Entity sendE:jformOrderTicket2List){
//需要更新的明细数据-订单机票信息
if(oldE.getId().equals(sendE.getId())){
try {
MyBeanUtils.copyBeanNotNull2Bean(sendE,oldE);
this.saveOrUpdate(oldE);
} catch (Exception e) {
e.printStackTrace();
throw new BusinessException(e.getMessage());
}
isUpdate= true;
break;
}
}
if(!isUpdate){
//如果数据库存在的明细,前台没有传递过来则是删除-订单机票信息
super.delete(oldE);
}
}
//3.持久化新增的数据-订单机票信息
for(JformOrderTicket2Entity jformOrderTicket2:jformOrderTicket2List){
if(oConvertUtils.isEmpty(jformOrderTicket2.getId())){
//外键设置
jformOrderTicket2.setFckId(jformOrderMain2.getId());
this.save(jformOrderTicket2);
}
}
}
//===================================================================================
//1.查询出数据库的明细数据-订单客户信息
String hql1 = "from JformOrderCustomer2Entity where 1 = 1 AND fK_ID = ? ";
List<JformOrderCustomer2Entity> jformOrderCustomer2OldList = this.findHql(hql1,id1);
//2.筛选更新明细数据-订单客户信息
if(jformOrderCustomer2List!=null&&jformOrderCustomer2List.size()>0){
for(JformOrderCustomer2Entity oldE:jformOrderCustomer2OldList){
boolean isUpdate = false;
for(JformOrderCustomer2Entity sendE:jformOrderCustomer2List){
//需要更新的明细数据-订单客户信息
if(oldE.getId().equals(sendE.getId())){
try {
MyBeanUtils.copyBeanNotNull2Bean(sendE,oldE);
this.saveOrUpdate(oldE);
} catch (Exception e) {
e.printStackTrace();
throw new BusinessException(e.getMessage());
}
isUpdate= true;
break;
}
}
if(!isUpdate){
//如果数据库存在的明细,前台没有传递过来则是删除-订单客户信息
super.delete(oldE);
}
}
//3.持久化新增的数据-订单客户信息
for(JformOrderCustomer2Entity jformOrderCustomer2:jformOrderCustomer2List){
if(oConvertUtils.isEmpty(jformOrderCustomer2.getId())){
//外键设置
jformOrderCustomer2.setFkId(jformOrderMain2.getId());
this.save(jformOrderCustomer2);
}
}
}
//执行更新操作配置的sql增强
this.doUpdateSql(jformOrderMain2);
}
public void delMain(JformOrderMain2Entity jformOrderMain2) {
//删除主表信息
this.delete(jformOrderMain2);
//===================================================================================
//获取参数
Object id0 = jformOrderMain2.getId();
Object id1 = jformOrderMain2.getId();
//===================================================================================
//删除-订单机票信息
String hql0 = "from JformOrderTicket2Entity where 1 = 1 AND fCK_ID = ? ";
List<JformOrderTicket2Entity> jformOrderTicket2OldList = this.findHql(hql0,id0);
this.deleteAllEntitie(jformOrderTicket2OldList);
//===================================================================================
//删除-订单客户信息
String hql1 = "from JformOrderCustomer2Entity where 1 = 1 AND fK_ID = ? ";
List<JformOrderCustomer2Entity> jformOrderCustomer2OldList = this.findHql(hql1,id1);
this.deleteAllEntitie(jformOrderCustomer2OldList);
}
/**
* -sql-
* @param id
* @return
*/
public boolean doAddSql(JformOrderMain2Entity t){
return true;
}
/**
* -sql-
* @param id
* @return
*/
public boolean doUpdateSql(JformOrderMain2Entity t){
return true;
}
/**
* -sql-
* @param id
* @return
*/
public boolean doDelSql(JformOrderMain2Entity t){
return true;
}
/**
* sql
* @param sql
* @return
*/
public String replaceVal(String sql,JformOrderMain2Entity t){
sql = sql.replace("#{id}",String.valueOf(t.getId()));
sql = sql.replace("#{order_code}",String.valueOf(t.getOrderCode()));
sql = sql.replace("#{order_date}",String.valueOf(t.getOrderDate()));
sql = sql.replace("#{order_money}",String.valueOf(t.getOrderMoney()));
sql = sql.replace("#{content}",String.valueOf(t.getContent()));
sql = sql.replace("#{UUID}",UUID.randomUUID().toString());
return sql;
}
}

@ -44,21 +44,33 @@ public class MultiUploadServiceImpl extends CommonServiceImpl implements MultiUp
* @return
*/
private void doAddBus(MultiUploadEntity t) throws Exception{
}
//-----------------sql增强 start----------------------------
//-----------------sql增强 end------------------------------
//-----------------java增强 start---------------------------
}
/**
*
* @param t
* @return
*/
private void doUpdateBus(MultiUploadEntity t) throws Exception{
}
//-----------------sql增强 start----------------------------
//-----------------sql增强 end------------------------------
//-----------------java增强 start---------------------------
}
/**
*
* @param id
* @return
*/
private void doDelBus(MultiUploadEntity t) throws Exception{
}
//-----------------sql增强 start----------------------------
//-----------------sql增强 end------------------------------
//-----------------java增强 start---------------------------
}
private Map<String,Object> populationMap(MultiUploadEntity t){
Map<String,Object> map = new HashMap<String,Object>();

@ -1,57 +0,0 @@
package com.jeecg.p3.demo.dao;
import org.jeecgframework.minidao.annotation.Param;
import org.jeecgframework.minidao.annotation.ResultType;
import org.jeecgframework.minidao.annotation.Sql;
import org.jeecgframework.minidao.pojo.MiniDaoPage;
import org.springframework.stereotype.Repository;
import com.jeecg.p3.demo.entity.JeecgP3demoEntity;
/**
* P3
* @authorwww.jeecg.org
* @since20170515 200737
* @version:1.0
*/
@Repository
public interface JeecgP3demoDao{
/**
* Java
* @param id
* @return
*/
@Sql("SELECT * FROM jeecg_p3demo WHERE ID = :id")
JeecgP3demoEntity get(@Param("id") String id);
/**
*
* @param jeecgP3demo
* @return
*/
int update(@Param("jeecgP3demo") JeecgP3demoEntity jeecgP3demo);
/**
*
* @param act
*/
void insert(@Param("jeecgP3demo") JeecgP3demoEntity jeecgP3demo);
/**
* oraclemysqlSqlServerpostgresql
* @param jeecgP3demo
* @param page
* @param rows
* @return
*/
@ResultType(JeecgP3demoEntity.class)
public MiniDaoPage<JeecgP3demoEntity> getAll(@Param("jeecgP3demo") JeecgP3demoEntity jeecgP3demo,@Param("page") int page,@Param("rows") int rows);
@Sql("DELETE from jeecg_p3demo WHERE ID = :jeecgP3demo.id")
public void delete(@Param("jeecgP3demo") JeecgP3demoEntity jeecgP3demo);
@ResultType(JeecgP3demoEntity.class)
MiniDaoPage<JeecgP3demoEntity> getAllByOrder(@Param("jeecgP3demo")JeecgP3demoEntity query,@Param("page") int page,@Param("rows") int rows,@Param("sortName") String sort,@Param("sortOrder") String order);
}

@ -1,17 +0,0 @@
package com.jeecg.p3.demo.entity;
import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;
/**
* P3
* @author: www.jeecg.org
* @since20170515 200737
* @version:1.0
*/
public class JeecgP3demoEntity implements Serializable{
private static final long serialVersionUID = 1L;
/** *id */ private String id; /** *创建人名称 */ private String createName; /** *创建人登录名称 */ private String createBy; /** *创建日期 */ private Date createDate; /** *更新人名称 */ private String updateName; /** *更新人登录名称 */ private String updateBy; /** *更新日期 */ private Date updateDate; /** *所属部门 */ private String sysOrgCode; /** *所属公司 */ private String sysCompanyCode; /** *流程状态 */ private String bpmStatus; /** *姓名 */ private String name; /** *性别 */ private Integer sex; /** *年龄 */ private Integer age; /** *地址 */ private String address; /** *电话 */ private String phone; /** *备注 */ private String memo; public String getId() { return this.id; } public void setId(String id) { this.id=id; } public String getCreateName() { return this.createName; } public void setCreateName(String createName) { this.createName=createName; } public String getCreateBy() { return this.createBy; } public void setCreateBy(String createBy) { this.createBy=createBy; } public Date getCreateDate() { return this.createDate; } public void setCreateDate(Date createDate) { this.createDate=createDate; } public String getUpdateName() { return this.updateName; } public void setUpdateName(String updateName) { this.updateName=updateName; } public String getUpdateBy() { return this.updateBy; } public void setUpdateBy(String updateBy) { this.updateBy=updateBy; } public Date getUpdateDate() { return this.updateDate; } public void setUpdateDate(Date updateDate) { this.updateDate=updateDate; } public String getSysOrgCode() { return this.sysOrgCode; } public void setSysOrgCode(String sysOrgCode) { this.sysOrgCode=sysOrgCode; } public String getSysCompanyCode() { return this.sysCompanyCode; } public void setSysCompanyCode(String sysCompanyCode) { this.sysCompanyCode=sysCompanyCode; } public String getBpmStatus() { return this.bpmStatus; } public void setBpmStatus(String bpmStatus) { this.bpmStatus=bpmStatus; } public String getName() { return this.name; } public void setName(String name) { this.name=name; } public Integer getSex() { return this.sex; } public void setSex(Integer sex) { this.sex=sex; } public Integer getAge() { return this.age; } public void setAge(Integer age) { this.age=age; } public String getAddress() { return this.address; } public void setAddress(String address) { this.address=address; } public String getPhone() { return this.phone; } public void setPhone(String phone) { this.phone=phone; } public String getMemo() { return this.memo; } public void setMemo(String memo) { this.memo=memo; }
}

@ -1,27 +0,0 @@
package com.jeecg.p3.demo.service;
import org.jeecgframework.minidao.pojo.MiniDaoPage;
import com.jeecg.p3.demo.entity.JeecgP3demoEntity;
/**
* P3
* @author: www.jeecg.org
* @since20170515 200737
* @version:1.0
*/
public interface JeecgP3demoService {
public JeecgP3demoEntity get(String id);
public int update(JeecgP3demoEntity jeecgP3demo);
public void insert(JeecgP3demoEntity jeecgP3demo);
public MiniDaoPage<JeecgP3demoEntity> getAll(JeecgP3demoEntity jeecgP3demo,int page,int rows);
public void delete(JeecgP3demoEntity jeecgP3demo);
public MiniDaoPage<JeecgP3demoEntity> getAllByOrder(JeecgP3demoEntity query, int offset, int limit, String sort,String order);
}

@ -1,57 +0,0 @@
package com.jeecg.p3.demo.service.impl;
import javax.annotation.Resource;
import org.jeecgframework.minidao.pojo.MiniDaoPage;
import org.springframework.stereotype.Service;
import com.jeecg.p3.demo.dao.JeecgP3demoDao;
import com.jeecg.p3.demo.entity.JeecgP3demoEntity;
import com.jeecg.p3.demo.service.JeecgP3demoService;
/**
* P3
* @author: www.jeecg.org
* @since20170515 200737
* @version:1.0
*/
@Service("jeecgP3demoService")
public class JeecgP3demoServiceImpl implements JeecgP3demoService {
@Resource
private JeecgP3demoDao jeecgP3demoDao;
@Override
public JeecgP3demoEntity get(String id) {
return jeecgP3demoDao.get(id);
}
@Override
public int update(JeecgP3demoEntity jeecgP3demo) {
return jeecgP3demoDao.update(jeecgP3demo);
}
@Override
public void insert(JeecgP3demoEntity jeecgP3demo) {
jeecgP3demoDao.insert(jeecgP3demo);
}
@Override
public MiniDaoPage<JeecgP3demoEntity> getAll(JeecgP3demoEntity jeecgP3demo, int page, int rows) {
return jeecgP3demoDao.getAll(jeecgP3demo, page, rows);
}
@Override
public void delete(JeecgP3demoEntity jeecgP3demo) {
jeecgP3demoDao.delete(jeecgP3demo);
}
@Override
public MiniDaoPage<JeecgP3demoEntity> getAllByOrder(JeecgP3demoEntity query, int page, int rows, String sort,
String order) {
return jeecgP3demoDao.getAllByOrder(query,page,rows,sort,order);
}
}

@ -1,60 +0,0 @@
<#if ( jeecgP3demo.createName )?? && jeecgP3demo.createName ?length gt 0>
/* 创建人名称 */
and jp.create_name = :jeecgP3demo.createName
</#if>
<#if ( jeecgP3demo.createBy )?? && jeecgP3demo.createBy ?length gt 0>
/* 创建人登录名称 */
and jp.create_by = :jeecgP3demo.createBy
</#if>
<#if ( jeecgP3demo.createDate )??>
/* 创建日期 */
and jp.create_date = :jeecgP3demo.createDate
</#if>
<#if ( jeecgP3demo.updateName )?? && jeecgP3demo.updateName ?length gt 0>
/* 更新人名称 */
and jp.update_name = :jeecgP3demo.updateName
</#if>
<#if ( jeecgP3demo.updateBy )?? && jeecgP3demo.updateBy ?length gt 0>
/* 更新人登录名称 */
and jp.update_by = :jeecgP3demo.updateBy
</#if>
<#if ( jeecgP3demo.updateDate )??>
/* 更新日期 */
and jp.update_date = :jeecgP3demo.updateDate
</#if>
<#if ( jeecgP3demo.sysOrgCode )?? && jeecgP3demo.sysOrgCode ?length gt 0>
/* 所属部门 */
and jp.sys_org_code = :jeecgP3demo.sysOrgCode
</#if>
<#if ( jeecgP3demo.sysCompanyCode )?? && jeecgP3demo.sysCompanyCode ?length gt 0>
/* 所属公司 */
and jp.sys_company_code = :jeecgP3demo.sysCompanyCode
</#if>
<#if ( jeecgP3demo.bpmStatus )?? && jeecgP3demo.bpmStatus ?length gt 0>
/* 流程状态 */
and jp.bpm_status = :jeecgP3demo.bpmStatus
</#if>
<#if ( jeecgP3demo.name )?? && jeecgP3demo.name ?length gt 0>
/* 姓名 */
and jp.name = :jeecgP3demo.name
</#if>
<#if ( jeecgP3demo.sex )?? && jeecgP3demo.sex ?length gt 0>
/* 性别 */
and jp.sex = :jeecgP3demo.sex
</#if>
<#if ( jeecgP3demo.age )?? && jeecgP3demo.age ?length gt 0>
/* 年龄 */
and jp.age = :jeecgP3demo.age
</#if>
<#if ( jeecgP3demo.address )?? && jeecgP3demo.address ?length gt 0>
/* 地址 */
and jp.address = :jeecgP3demo.address
</#if>
<#if ( jeecgP3demo.phone )?? && jeecgP3demo.phone ?length gt 0>
/* 电话 */
and jp.phone = :jeecgP3demo.phone
</#if>
<#if ( jeecgP3demo.memo )?? && jeecgP3demo.memo ?length gt 0>
/* 备注 */
and jp.memo = :jeecgP3demo.memo
</#if>

@ -1,2 +0,0 @@
SELECT * FROM jeecg_p3demo jp where 1=1
<#include "JeecgP3demoDao_condition.sql">

@ -1,3 +0,0 @@
SELECT * FROM jeecg_p3demo jp where 1=1
<#include "JeecgP3demoDao_condition.sql">
ORDER BY ${sortName} ${sortOrder}

@ -1,39 +0,0 @@
INSERT INTO
jeecg_p3demo
(
id
,create_name
,create_by
,create_date
,update_name
,update_by
,update_date
,sys_org_code
,sys_company_code
,bpm_status
,name
,sex
,age
,address
,phone
,memo
)
values
(
:jeecgP3demo.id
,:jeecgP3demo.createName
,:jeecgP3demo.createBy
,:jeecgP3demo.createDate
,:jeecgP3demo.updateName
,:jeecgP3demo.updateBy
,:jeecgP3demo.updateDate
,:jeecgP3demo.sysOrgCode
,:jeecgP3demo.sysCompanyCode
,:jeecgP3demo.bpmStatus
,:jeecgP3demo.name
,:jeecgP3demo.sex
,:jeecgP3demo.age
,:jeecgP3demo.address
,:jeecgP3demo.phone
,:jeecgP3demo.memo
)

@ -1,48 +0,0 @@
UPDATE jeecg_p3demo
SET
<#if jeecgP3demo.createName ?exists>
create_name = :jeecgP3demo.createName,
</#if>
<#if jeecgP3demo.createBy ?exists>
create_by = :jeecgP3demo.createBy,
</#if>
<#if jeecgP3demo.createDate ?exists>
create_date = :jeecgP3demo.createDate,
</#if>
<#if jeecgP3demo.updateName ?exists>
update_name = :jeecgP3demo.updateName,
</#if>
<#if jeecgP3demo.updateBy ?exists>
update_by = :jeecgP3demo.updateBy,
</#if>
<#if jeecgP3demo.updateDate ?exists>
update_date = :jeecgP3demo.updateDate,
</#if>
<#if jeecgP3demo.sysOrgCode ?exists>
sys_org_code = :jeecgP3demo.sysOrgCode,
</#if>
<#if jeecgP3demo.sysCompanyCode ?exists>
sys_company_code = :jeecgP3demo.sysCompanyCode,
</#if>
<#if jeecgP3demo.bpmStatus ?exists>
bpm_status = :jeecgP3demo.bpmStatus,
</#if>
<#if jeecgP3demo.name ?exists>
name = :jeecgP3demo.name,
</#if>
<#if jeecgP3demo.sex ?exists>
sex = :jeecgP3demo.sex,
</#if>
<#if jeecgP3demo.age ?exists>
age = :jeecgP3demo.age,
</#if>
<#if jeecgP3demo.address ?exists>
address = :jeecgP3demo.address,
</#if>
<#if jeecgP3demo.phone ?exists>
phone = :jeecgP3demo.phone,
</#if>
<#if jeecgP3demo.memo ?exists>
memo = :jeecgP3demo.memo,
</#if>
WHERE id = :jeecgP3demo.id

@ -1,197 +0,0 @@
package com.jeecg.p3.demo.web;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.velocity.VelocityContext;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.minidao.pojo.MiniDaoPage;
import org.jeecgframework.p3.core.common.utils.AjaxJson;
import org.jeecgframework.p3.core.page.SystemTools;
import org.jeecgframework.p3.core.util.plugin.ViewVelocity;
import org.jeecgframework.p3.core.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.jeecg.p3.demo.entity.JeecgP3demoEntity;
import com.jeecg.p3.demo.service.JeecgP3demoService;
/**
* P3
* @author: www.jeecg.org
* @since20170515 200737
* @version:1.0
*/
@Controller
@RequestMapping("/demo/jeecgP3demo")
public class JeecgP3demoController extends BaseController{
@Autowired
private JeecgP3demoService jeecgP3demoService;
@RequestMapping(params="dataList")
@ResponseBody
public MiniDaoPage<JeecgP3demoEntity> dataList(JeecgP3demoEntity query,
@RequestParam(required = false, value = "offset", defaultValue = "1") int offset,
@RequestParam(required = false, value = "limit", defaultValue = "10") int limit,
String sort,String order){
MiniDaoPage<JeecgP3demoEntity> list = null;
if(StringUtil.isNotEmpty(sort)){
list = jeecgP3demoService.getAllByOrder(query,offset,limit,sort,order);
}else{
//分页数据
list = jeecgP3demoService.getAll(query,offset,limit);
}
return list;
}
/**
*
* @return
*/
@RequestMapping(params = "bootstrapList",method = {RequestMethod.GET,RequestMethod.POST})
public void bootstrapList(@ModelAttribute JeecgP3demoEntity query,HttpServletRequest request,HttpServletResponse response,
@RequestParam(required = false, value = "pageNo", defaultValue = "1") int pageNo,
@RequestParam(required = false, value = "pageSize", defaultValue = "10") int pageSize) throws Exception{
try {
LOG.info(request, " back list");
VelocityContext velocityContext = new VelocityContext();
velocityContext.put("jeecgP3demo",query);
String viewName = "demo/p3/jeecgP3demo-bootstrap-list.vm";
ViewVelocity.view(request,response,viewName,velocityContext);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
* @return
*/
@RequestMapping(params = "list",method = {RequestMethod.GET,RequestMethod.POST})
public void list(@ModelAttribute JeecgP3demoEntity query,HttpServletRequest request,HttpServletResponse response,
@RequestParam(required = false, value = "pageNo", defaultValue = "1") int pageNo,
@RequestParam(required = false, value = "pageSize", defaultValue = "10") int pageSize) throws Exception{
try {
LOG.info(request, " back list");
//分页数据
MiniDaoPage<JeecgP3demoEntity> list = jeecgP3demoService.getAll(query,pageNo,pageSize);
VelocityContext velocityContext = new VelocityContext();
velocityContext.put("jeecgP3demo",query);
velocityContext.put("pageInfos",SystemTools.convertPaginatedList(list));
String viewName = "demo/p3/jeecgP3demo-list.vm";
ViewVelocity.view(request,response,viewName,velocityContext);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
* @return
*/
@RequestMapping(params="toDetail",method = RequestMethod.GET)
public void jeecgP3demoDetail(@RequestParam(required = true, value = "id" ) String id,HttpServletResponse response,HttpServletRequest request)throws Exception{
VelocityContext velocityContext = new VelocityContext();
String viewName = "demo/p3/jeecgP3demo-detail.vm";
JeecgP3demoEntity jeecgP3demo = jeecgP3demoService.get(id);
velocityContext.put("jeecgP3demo",jeecgP3demo);
ViewVelocity.view(request,response,viewName,velocityContext);
}
/**
*
* @return
*/
@RequestMapping(params = "toAdd",method ={RequestMethod.GET, RequestMethod.POST})
public void toAddDialog(HttpServletRequest request,HttpServletResponse response)throws Exception{
VelocityContext velocityContext = new VelocityContext();
String viewName = "demo/p3/jeecgP3demo-add.vm";
ViewVelocity.view(request,response,viewName,velocityContext);
}
/**
*
* @return
*/
@RequestMapping(params = "doAdd",method ={RequestMethod.GET, RequestMethod.POST})
@ResponseBody
public AjaxJson doAdd(@ModelAttribute JeecgP3demoEntity jeecgP3demo){
AjaxJson j = new AjaxJson();
try {
String randomSeed = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
jeecgP3demo.setId(randomSeed);
jeecgP3demoService.insert(jeecgP3demo);
j.setMsg("保存成功");
} catch (Exception e) {
log.info(e.getMessage());
j.setSuccess(false);
j.setMsg("保存失败");
}
return j;
}
/**
*
* @return
*/
@RequestMapping(params="toEdit",method = RequestMethod.GET)
public void toEdit(@RequestParam(required = true, value = "id" ) String id,HttpServletResponse response,HttpServletRequest request) throws Exception{
VelocityContext velocityContext = new VelocityContext();
JeecgP3demoEntity jeecgP3demo = jeecgP3demoService.get(id);
velocityContext.put("jeecgP3demo",jeecgP3demo);
String viewName = "demo/p3/jeecgP3demo-edit.vm";
ViewVelocity.view(request,response,viewName,velocityContext);
}
/**
*
* @return
*/
@RequestMapping(params = "doEdit",method ={RequestMethod.GET, RequestMethod.POST})
@ResponseBody
public AjaxJson doEdit(@ModelAttribute JeecgP3demoEntity jeecgP3demo){
AjaxJson j = new AjaxJson();
try {
jeecgP3demoService.update(jeecgP3demo);
j.setMsg("编辑成功");
} catch (Exception e) {
log.info(e.getMessage());
j.setSuccess(false);
j.setMsg("编辑失败");
}
return j;
}
/**
*
* @return
*/
@RequestMapping(params="doDelete",method = RequestMethod.GET)
@ResponseBody
public AjaxJson doDelete(@RequestParam(required = true, value = "id" ) String id){
AjaxJson j = new AjaxJson();
try {
JeecgP3demoEntity jeecgP3demo = new JeecgP3demoEntity();
jeecgP3demo.setId(id);
jeecgP3demoService.delete(jeecgP3demo);
j.setMsg("删除成功");
} catch (Exception e) {
log.info(e.getMessage());
j.setSuccess(false);
j.setMsg("删除失败");
}
return j;
}
}

@ -31,9 +31,9 @@ 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.core.util.oConvertUtils;
import org.jeecgframework.jwt.util.ResponseMessage;
import org.jeecgframework.jwt.util.Result;
import org.jeecgframework.p3.core.util.oConvertUtils;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;

@ -8,7 +8,7 @@ import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.jeecgframework.core.util.ApplicationContextUtil;
import org.jeecgframework.p3.core.util.oConvertUtils;
import org.jeecgframework.core.util.oConvertUtils;
import org.jeecgframework.web.system.service.SystemService;
import com.alibaba.fastjson.JSON;

@ -295,20 +295,21 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
String ctxPath = request.getSession().getServletContext().getRealPath("/");
String downLoadPath = "";
long fileLength = 0;
if (uploadFile.getRealPath() != null&&uploadFile.getContent() == null) {
downLoadPath = ctxPath + uploadFile.getRealPath();
fileLength = new File(downLoadPath).length();
try {
bis = new BufferedInputStream(new FileInputStream(downLoadPath));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
} else {
if (uploadFile.getContent() != null)
bis = new ByteArrayInputStream(uploadFile.getContent());
fileLength = uploadFile.getContent().length;
}
try {
if (uploadFile.getRealPath() != null&&uploadFile.getContent() == null) {
downLoadPath = ctxPath + uploadFile.getRealPath();
fileLength = new File(downLoadPath).length();
try {
bis = new BufferedInputStream(new FileInputStream(downLoadPath));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
} else {
if (uploadFile.getContent() != null)
bis = new ByteArrayInputStream(uploadFile.getContent());
fileLength = uploadFile.getContent().length;
}
if (!uploadFile.isView() && uploadFile.getExtend() != null) {
if (uploadFile.getExtend().equals("text")) {
response.setContentType("text/plain;");
@ -545,9 +546,10 @@ 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()));
if (inId.equals(id)) {
if (inId.equals(id)) {
tree.setChecked(true);
}
}
}
}
@ -666,7 +668,7 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
tg.getFieldMap().put(entry.getKey(), fieldValue);
}
}
if (treeGridModel.getFunctionType() != null) {
if (treeGridModel.getFunctionType() != null) {
String functionType = oConvertUtils.getString(reflectHelper.getMethodValue(treeGridModel.getFunctionType()));
tg.setFunctionType(functionType);
}

@ -941,6 +941,7 @@ public abstract class GenericBaseCommonDao<T, PK extends Serializable>
Object keyValue = null;
KeyHolder keyHolder = null;
SqlParameterSource sqlp = new MapSqlParameterSource(param);
if (StringUtil.isNotEmpty(param.get("id"))) {//表示已经生成过id(UUID),则表示是非序列或数据库自增的形式
this.namedParameterJdbcTemplate.update(sql,sqlp);
//--authorzhoujf---start------date:20170216--------for:自定义表单保存数据格sqlserver报错问题
@ -954,6 +955,7 @@ public abstract class GenericBaseCommonDao<T, PK extends Serializable>
keyValue = keyHolder.getKey().longValue();
}
}
return keyValue;
}

@ -19,8 +19,10 @@ import org.springframework.util.Assert;
*
*/
@SuppressWarnings("unchecked")
public class SimpleJdbcTemplate extends JdbcTemplate{
protected final Log logger = LogFactory.getLog(getClass());
protected JdbcTemplate jdbcTemplate;

@ -40,8 +40,8 @@ public class CriteriaQuery {
private CriterionList jqcriterionList=new CriterionList();//jquery datatable控件生成查询条件集合
private int isUseimage = 0;// 翻页工具条样式
private DetachedCriteria detachedCriteria;
private static Map<String, Object> map;
private static Map<String, Object> ordermap;//排序字段
private Map<String, Object> map;
private Map<String, Object> ordermap;//排序字段
private boolean flag = true;// 对同一字段进行第二次重命名查询时值设置FASLE不保存重命名查询条件
private String field="";//查询需要显示的字段
private Class<?> entityClass;//POJO
@ -405,12 +405,12 @@ public class CriteriaQuery {
}
}
public static Map<String, Object> getOrdermap() {
public Map<String, Object> getOrdermap() {
return ordermap;
}
public static void setOrdermap(Map<String, Object> ordermap) {
CriteriaQuery.ordermap = ordermap;
public void setOrdermap(Map<String, Object> ordermap) {
this.ordermap = ordermap;
}
/**

@ -2,8 +2,6 @@ package org.jeecgframework.core.common.model.common;
import java.io.Serializable;
import java.util.List;
import com.thoughtworks.xstream.annotations.XStreamAlias;
/**
*
* @author Hank

@ -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-字段值
private String functionType;// 其他参数
private String functionType;// 其他参数
private String iconStyle;//菜单图表样式
@ -29,6 +29,7 @@ public class TreeGrid implements java.io.Serializable {
public void setFunctionType(String functionType) {
this.functionType = functionType;
}
public String getOrder() {
return order;
}

@ -8,7 +8,6 @@ import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import org.jeecgframework.web.system.pojo.base.TSDepart;
import org.hibernate.Session;
import org.hibernate.criterion.DetachedCriteria;
import org.jeecgframework.core.common.dao.ICommonDao;
@ -18,7 +17,6 @@ import org.jeecgframework.core.common.hibernate.qbc.PageList;
import org.jeecgframework.core.common.model.common.DBTable;
import org.jeecgframework.core.common.model.common.UploadFile;
import org.jeecgframework.core.common.model.json.ComboTree;
import org.jeecgframework.core.common.model.json.DataGridReturn;
import org.jeecgframework.core.common.model.json.ImportFile;
import org.jeecgframework.core.common.model.json.TreeGrid;
import org.jeecgframework.core.common.service.CommonService;
@ -26,6 +24,7 @@ import org.jeecgframework.tag.vo.datatable.DataTableReturn;
import org.jeecgframework.tag.vo.easyui.Autocomplete;
import org.jeecgframework.tag.vo.easyui.ComboTreeModel;
import org.jeecgframework.tag.vo.easyui.TreeGridModel;
import org.jeecgframework.web.system.pojo.base.TSDepart;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -39,10 +38,12 @@ public class CommonServiceImpl implements CommonService {
*
* @return
*/
@Transactional(readOnly = true)
public List<DBTable> getAllDbTableName() {
return commonDao.getAllDbTableName();
}
@Transactional(readOnly = true)
public Integer getAllDbTableSize() {
return commonDao.getAllDbTableSize();
}
@ -82,6 +83,7 @@ public class CommonServiceImpl implements CommonService {
/**
*
*/
@Transactional(readOnly = true)
public <T> T get(Class<T> class1, Serializable id) {
return commonDao.get(class1, id);
}
@ -94,6 +96,7 @@ public class CommonServiceImpl implements CommonService {
* @param size
* @return
*/
@Transactional(readOnly = true)
public <T> List<T> getList(Class clas) {
return commonDao.loadAll(clas);
}
@ -101,6 +104,7 @@ public class CommonServiceImpl implements CommonService {
/**
*
*/
@Transactional(readOnly = true)
public <T> T getEntity(Class entityName, Serializable id) {
return commonDao.getEntity(entityName, id);
}
@ -114,6 +118,7 @@ public class CommonServiceImpl implements CommonService {
* @param value
* @return
*/
@Transactional(readOnly = true)
public <T> T findUniqueByProperty(Class<T> entityClass,
String propertyName, Object value) {
return commonDao.findUniqueByProperty(entityClass, propertyName, value);
@ -122,6 +127,7 @@ public class CommonServiceImpl implements CommonService {
/**
* .
*/
@Transactional(readOnly = true)
public <T> List<T> findByProperty(Class<T> entityClass,
String propertyName, Object value) {
@ -135,10 +141,12 @@ public class CommonServiceImpl implements CommonService {
* @param entityClass
* @return
*/
@Transactional(readOnly = true)
public <T> List<T> loadAll(final Class<T> entityClass) {
return commonDao.loadAll(entityClass);
}
@Transactional(readOnly = true)
public <T> T singleResult(String hql) {
return commonDao.singleResult(hql);
}
@ -171,6 +179,7 @@ public class CommonServiceImpl implements CommonService {
* @param query
* @return
*/
@Transactional(readOnly = true)
public <T> List<T> findByQueryString(String hql) {
return commonDao.findByQueryString(hql);
}
@ -192,6 +201,7 @@ public class CommonServiceImpl implements CommonService {
* @param query
* @return
*/
@Transactional(readOnly = true)
public <T> List<T> findListbySql(String query) {
return commonDao.findListbySql(query);
}
@ -203,6 +213,7 @@ public class CommonServiceImpl implements CommonService {
* @param clas
* @return
*/
@Transactional(readOnly = true)
public <T> List<T> findByPropertyisOrder(Class<T> entityClass,
String propertyName, Object value, boolean isAsc) {
return commonDao.findByPropertyisOrder(entityClass, propertyName,
@ -217,6 +228,7 @@ public class CommonServiceImpl implements CommonService {
* @param isOffset
* @return
*/
@Transactional(readOnly = true)
public PageList getPageList(final CriteriaQuery cq, final boolean isOffset) {
return commonDao.getPageList(cq, isOffset);
}
@ -228,6 +240,7 @@ public class CommonServiceImpl implements CommonService {
* @param isOffset
* @return
*/
@Transactional(readOnly = true)
public DataTableReturn getDataTableReturn(final CriteriaQuery cq,
final boolean isOffset) {
return commonDao.getDataTableReturn(cq, isOffset);
@ -241,6 +254,7 @@ public class CommonServiceImpl implements CommonService {
* @return
*/
@Transactional(readOnly = true)
public void getDataGridReturn(final CriteriaQuery cq,
final boolean isOffset) {
commonDao.getDataGridReturn(cq, isOffset);
@ -255,6 +269,7 @@ public class CommonServiceImpl implements CommonService {
* @param isOffset
* @return
*/
@Transactional(readOnly = true)
public PageList getPageList(final HqlQuery hqlQuery,
final boolean needParameter) {
return commonDao.getPageList(hqlQuery, needParameter);
@ -268,6 +283,7 @@ public class CommonServiceImpl implements CommonService {
* @param isOffset
* @return
*/
@Transactional(readOnly = true)
public PageList getPageListBySql(final HqlQuery hqlQuery,
final boolean isToEntity) {
return commonDao.getPageListBySql(hqlQuery, isToEntity);
@ -279,6 +295,7 @@ public class CommonServiceImpl implements CommonService {
return commonDao.getSession();
}
@Transactional(readOnly = true)
public List findByExample(final String entityName,
final Object exampleEntity) {
return commonDao.findByExample(entityName, exampleEntity);
@ -291,6 +308,7 @@ public class CommonServiceImpl implements CommonService {
* @param cq
* @return
*/
@Transactional(readOnly = true)
public <T> List<T> getListByCriteriaQuery(final CriteriaQuery cq,
Boolean ispage) {
return commonDao.getListByCriteriaQuery(cq, ispage);
@ -305,6 +323,7 @@ public class CommonServiceImpl implements CommonService {
return commonDao.uploadFile(uploadFile);
}
@Transactional(readOnly = true)
public HttpServletResponse viewOrDownloadFile(UploadFile uploadFile)
{
@ -332,10 +351,12 @@ public class CommonServiceImpl implements CommonService {
commonDao.parserXml(fileName);
}
@Transactional(readOnly = true)
public List<ComboTree> comTree(List<TSDepart> all, ComboTree comboTree) {
return commonDao.comTree(all, comboTree);
}
@Transactional(readOnly = true)
public List<ComboTree> ComboTree(List all, ComboTreeModel comboTreeModel, List in, boolean recursive) {
return commonDao.ComboTree(all, comboTreeModel, in, recursive);
}
@ -343,6 +364,7 @@ public class CommonServiceImpl implements CommonService {
/**
*
*/
@Transactional(readOnly = true)
public List<TreeGrid> treegrid(List all, TreeGridModel treeGridModel) {
return commonDao.treegrid(all, treeGridModel);
}
@ -353,6 +375,7 @@ public class CommonServiceImpl implements CommonService {
* @param <T>
* @return
*/
@Transactional(readOnly = true)
public <T> List<T> getAutoList(Autocomplete autocomplete) {
StringBuffer sb = new StringBuffer("");
for (String searchField : autocomplete.getSearchField().split(",")) {
@ -381,40 +404,44 @@ public class CommonServiceImpl implements CommonService {
return commonDao.executeSqlReturnKey(sql, param);
}
@Transactional(readOnly = true)
public List<Map<String, Object>> findForJdbc(String sql, int page, int rows) {
return commonDao.findForJdbc(sql, page, rows);
}
@Transactional(readOnly = true)
public List<Map<String, Object>> findForJdbc(String sql, Object... objs) {
return commonDao.findForJdbc(sql, objs);
}
@Transactional(readOnly = true)
public List<Map<String, Object>> findForJdbcParam(String sql, int page,
int rows, Object... objs) {
return commonDao.findForJdbcParam(sql, page, rows, objs);
}
@Transactional(readOnly = true)
public <T> List<T> findObjForJdbc(String sql, int page, int rows,
Class<T> clazz) {
return commonDao.findObjForJdbc(sql, page, rows, clazz);
}
@Transactional(readOnly = true)
public Map<String, Object> findOneForJdbc(String sql, Object... objs) {
return commonDao.findOneForJdbc(sql, objs);
}
@Transactional(readOnly = true)
public Long getCountForJdbc(String sql) {
return commonDao.getCountForJdbc(sql);
}
@Transactional(readOnly = true)
public Long getCountForJdbcParam(String sql, Object[] objs) {
return commonDao.getCountForJdbcParam(sql,objs);
}
public <T> void batchSave(List<T> entitys) {
this.commonDao.batchSave(entitys);
@ -427,15 +454,18 @@ public class CommonServiceImpl implements CommonService {
* @param query
* @return
*/
@Transactional(readOnly = true)
public <T> List<T> findHql(String hql, Object... param) {
return this.commonDao.findHql(hql, param);
}
@Transactional(readOnly = true)
public <T> List<T> pageList(DetachedCriteria dc, int firstResult,
int maxResult) {
return this.commonDao.pageList(dc, firstResult, maxResult);
}
@Transactional(readOnly = true)
public <T> List<T> findByDetached(DetachedCriteria dc) {
return this.commonDao.findByDetached(dc);
}

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

@ -0,0 +1,106 @@
package org.jeecgframework.core.enums;
import org.jeecgframework.core.util.oConvertUtils;
/**
* ,code (add addOne)
* @author taoYan
* @since 20171225
*/
public enum MenuButtonsEnum {
addgroup("addgroup","表单新增&word模式","iframeGoAdd&tempNoDo","fa fa-file-text-o&fa fa-file-word-o&fa fa-plus")
,editgroup("editgroup","表单编辑&word模式","iframeGoUpdate&tempNoDo","fa fa-file-text-o&fa fa-file-word-o&fa fa-pencil-square-o")
,batchDel("batchDel","批量删除","iframeDeleteAll","fa fa-trash-o")
;
String code;
String title;
String fun;
String icon;
MenuButtonsEnum(String code, String title, String fun, String icon) {
this.code = code;
this.title = title;
this.fun = fun;
this.icon = icon;
}
public static MenuButtonsEnum getMenuByCode(String code){
if(oConvertUtils.isNotEmpty(code)){
for (MenuButtonsEnum e : MenuButtonsEnum.values()) {
if(code.equals(e.code)){
return e;
}
}
}
return null;
}
/**
* @return the code
*/
public String getCode() {
return code;
}
/**
* @param code the code to set
*/
public void setCode(String code) {
this.code = code;
}
/**
* @return the title
*/
public String getTitle() {
return title;
}
/**
* @param title the title to set
*/
public void setTitle(String title) {
this.title = title;
}
/**
* @return the fun
*/
public String getFun() {
return fun;
}
/**
* @param fun the fun to set
*/
public void setFun(String fun) {
this.fun = fun;
}
/**
* @return the icon
*/
public String getIcon() {
return icon;
}
/**
* @param icon the icon to set
*/
public void setIcon(String icon) {
this.icon = icon;
}
/*,addone("addone","新增一行","iframeAddRow","iconfont icon-xinzengyihang")
/*,save("save","提交修改","iframeGoSaveRow","fa fa-share")
,save("save","保存","iframeGoSaveRow","fa fa-floppy-o")
,reject("reject","取消编辑","iframeRejectUpdate","fa fa-reply")
/*,addform("addform","表单新增","iframeGoAdd","fa fa-plus")
,template("template","模板下载","iframeExportXlsByT","fa fa-upload")
,importe("import","数据导入","iframeImportExcel","fa fa-download")
,export("export","数据导出","iframeExportXls","fa fa-share-square-o")
,filter("filter","过滤","iframeFilter","fa fa-filter")
,superQuery("superQuery","高级查询","superQuery","fa fa-search-plus")*/
}

@ -17,17 +17,33 @@ public enum OnlineGenerateEnum {
* code src/main/resources/jeecg/ext-template/{code:}
* code = default.single -> src/main/resources/jeecg/ext-template/default/single
*/
// ONLINE_COMMON_TABLE_SINGLE("table.single","可自定义TABLE风格模板","single","ext-common"),
// ONLINE_COMMON_TABLE_ONETOMANY("table.onetomany","可自定义TABLE风格模板","onetomany","ext-common"),
//***********{新一代代码生成器模板}**********************************************
ONLINE_COMMON_ELEMENT_SINGLE("element.single","VUE+ElementUI风格","single","ext-common"),
ONLINE_COMMON_ELEMENT_ONETOMANY("element.onetomany","VUE+ElementUI风格","onetomany","ext-common"),
ONLINE_COMMON_NATUREBT_SINGLE("naturebt.single","Bootstrap表单+EasyUI原生列表","single","ext-common"),
ONLINE_COMMON_NATUREBT_ONETOMANY("naturebt.onetomany","ElementUI表单+EasyUI原生列表","onetomany","ext-common"),
//船舶订制版本
ONLINE_MULTI_TABLE_ONETOMANY("multitable.onetomany","EasyUI标签列表上下布局(列表数据编辑)+Table风格表单","onetomany","ext-common"),
//***********{老版本代码生成器模板}**********************************************
ONLINE_TABLE_SINGLE("table.single","TABLE风格表单","single","ext"),
ONLINE_TABLE_ONETOMANY("table.onetomany","TABLE风格表单","onetomany","ext"),
ONLINE_ACE_SINGLE("ace.single","ACE风格表单","single","ext"),
ONLINE_ACE_ONETOMANY("ace.onetomany","ACE风格表单","onetomany","ext"),
ONLINE_DIV_SINGLE("div.single","DIV风格表单","single","ext"),
ONLINE_NOPOP_SINGLE("nopop.single","NOPOP风格表单","single","ext"),
ONLINE_ROW_SINGLE("rowedit.single","行编辑风格表单","single","ext"),
ONLINE_TAB_ONETOMANY("tab.onetomany","TAB风格表单","onetomany","ext");
ONLINE_TAB_ONETOMANY("tab.onetomany","TAB风格表单","onetomany","ext"),
ONLINE_VUEBT_SINGLE("vuebt.single","Bootstrap表单+VUE-Bootstrap-Table列表风格","single","ext");
// ONLINE_DEFAULT_SINGLE("default.single","用户扩展风格示例","single","ext"),
// ONLINE_DEFAULT_ONETOMANY("default.onetomany","用户扩展风格示例","onetomany","ext");
@ -115,4 +131,19 @@ public enum OnlineGenerateEnum {
return null;
}
public static OnlineGenerateEnum toEnum(String code, String version) {
if(StringUtil.isEmpty(code)){
return null;
}
if(StringUtil.isEmpty(version)){
return null;
}
for(OnlineGenerateEnum item : OnlineGenerateEnum.values()) {
if(item.getCode().equals(code)&&item.getVersion().equals(version)) {
return item;
}
}
return null;
}
}

@ -31,7 +31,7 @@ import org.jeecgframework.core.util.JeecgDataAutorUtils;
import org.jeecgframework.core.util.LogUtil;
import org.jeecgframework.core.util.ResourceUtil;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.p3.core.util.oConvertUtils;
import org.jeecgframework.core.util.oConvertUtils;
import org.jeecgframework.web.system.pojo.base.TSDataRule;
import org.springframework.util.NumberUtils;
@ -69,6 +69,7 @@ public class HqlGenerateUtil {
* @throws Exception
*/
public static void installHql(CriteriaQuery cq, Object searchObj) {
// --author龙金波 ------start---date20150519--------for统一函数处理sqlbuilder----------------------------------
installHql(cq,searchObj,null);
}
@ -83,6 +84,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())){
@ -100,6 +102,7 @@ public class HqlGenerateUtil {
}catch(Exception e){
e.printStackTrace();
}
// --author龙金波 ------start---date201504022--------for增加一个特殊sql参数处理----------------------------------
cq.add();
}
@ -216,6 +219,13 @@ public class HqlGenerateUtil {
beginValue_ = Float.parseFloat(beginValue);
if(!"".equals(endValue)&&null!=endValue)
endValue_ =Float.parseFloat(endValue);
}else if ("class java.lang.Double".equals(type)) {
if(!"".equals(beginValue)&&null!=beginValue)
beginValue_ = Double.parseDouble(beginValue);
if(!"".equals(endValue)&&null!=endValue)
endValue_ =Double.parseDouble(endValue);
}else{
beginValue_ = beginValue;
endValue_ = endValue;

@ -49,6 +49,7 @@ public class SysContextSqlConvert {
return sqlValue;
}
//-----------------------------------------------------------------------
//#{sys_user_code}%
String ValueTemp = dataRule.getRuleValue();
String moshi = "";
@ -62,6 +63,7 @@ public class SysContextSqlConvert {
} else {
ValueTemp = ValueTemp;
}
//-----------------------------------------------------------------------
String tempValue = null;
tempValue = ResourceUtil.converRuleValue(ValueTemp);

@ -21,7 +21,9 @@ public class ConStant {
public static final String SWFTOOLS_BASE_DIR = "swftools";
/**PDF-SWF*/
public static final String SWFTOOLS_PDF2SWF_PATH ="pdf2swf.exe";
public static final String SWFTOOLS_PDF2SWF="pdf2swf";
/**GIF-SWF*/
public static final String SWFTOOLS_GIF2SWF_PATH ="gif2swf.exe";
/**PNG-SWF*/
@ -66,6 +68,7 @@ public class ConStant {
}
return SWFTOOLS_HOME;
}
public static String getSWFToolsForLinux(String extend)
{
@ -92,4 +95,5 @@ public class ConStant {
}
return SWFTOOLS_HOME;
}
}

@ -54,7 +54,9 @@ public class SWFToolsSWFConverter implements SWFConverter {
} else {
//如果是linux系统,路径不能有空格,而且一定不能用双引号,否则无法创建进程
String[] command = new String[3];
command[0] = ConStant.getSWFToolsForLinux(extend);
command[1] = inputFile;
command[2] = swfFile;
//Runtime执行后返回创建的进程对象

@ -0,0 +1,37 @@
package org.jeecgframework.core.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
public class CORSFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) servletResponse;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "GET,POST,HEAD,PUT,DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Accept,Origin,X-Requested-With,Content-Type,X-Auth-Token");
response.setHeader("Access-Control-Allow-Credentials", "true");
chain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
}
}

@ -205,6 +205,7 @@ public class AuthInterceptor implements HandlerInterceptor {
//request.setAttribute(Globals.OPERATIONCODES, operationCodes);
//}
//if(!oConvertUtils.isEmpty(functionId)){
// List<TSOperation> allOperation=this.systemService.findByProperty(TSOperation.class, "TSFunction.id", functionId);
// List<TSOperation> newall = new ArrayList<TSOperation>();

@ -38,7 +38,9 @@ public class CgReportQueryParamUtil
String filedType = (String) item.get(CgReportConstant.ITEM_FIELDTYPE);
if("single".equals(queryMode)){
//单条件组装方式
String value =request.getParameter(filedName);
String value =request.getParameter(filedName.toLowerCase());
try {
if(StringUtil.isEmpty(value)){
return;

@ -36,6 +36,7 @@ public class DataBaseCronTriggerBean extends CronTriggerBean{
}
//DynamicTask.updateSpringMvcTaskXML(this,task.getCronExpression());
}
}

@ -13,7 +13,7 @@ import org.jeecgframework.core.constant.Globals;
import org.jeecgframework.core.util.HttpRequest;
import org.jeecgframework.core.util.IpUtil;
import org.jeecgframework.core.util.MyClassLoader;
import org.jeecgframework.p3.core.common.utils.StringUtil;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.web.system.pojo.base.TSTimeTaskEntity;
import org.jeecgframework.web.system.service.SystemService;
import org.jeecgframework.web.system.service.TimeTaskServiceI;
@ -274,4 +274,5 @@ public class DynamicTask {
}
}
}

@ -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();
}

@ -64,4 +64,5 @@ public class IpUtil {
}
return ipList;
}
}

@ -413,9 +413,7 @@ public class ListtoMenu {
}
menuString.append("<li iconCls=\"");
menuString.append(icon);
menuString.append("\"> <a onclick=\"addTab4MenuId(\'");
menuString.append("\"> <a onclick=\"addTab(\'");
menuString.append(getMutiLang(function.getFunctionName()));
menuString.append("\',\'");
menuString.append(function.getFunctionUrl());
@ -434,10 +432,6 @@ public class ListtoMenu {
menuString.append("\',\'");
menuString.append(icon);
menuString.append("\',\'");
menuString.append(function.getId());
menuString.append("\')\" title=\"");
menuString.append(getMutiLang(function.getFunctionName()));
menuString.append("\" url=\"");
@ -1007,15 +1001,18 @@ public class ListtoMenu {
String name = getMutiLang(function.getFunctionName()) ;
menuString.append("<li> <a class=\"J_menuItem\" href=\"").append(function.getFunctionUrl()).append("\">");
if(!function.hasSubFunction(map)){
if(function.getFunctionIconStyle()!=null&&!function.getFunctionIconStyle().trim().equals("")){
menuString.append("<i class=\"fa "+function.getFunctionIconStyle()+"\"></i>");
}
menuString.append("<span class=\"menu-text\">");
menuString.append(name);
menuString.append("</span>");
menuString.append("</a>");
menuString.append("</li>");
}else {
if(function.getFunctionIconStyle()!=null&&!function.getFunctionIconStyle().trim().equals("")){
menuString.append("<i class=\"fa "+function.getFunctionIconStyle()+"\"></i>");
}else{
@ -1024,6 +1021,7 @@ public class ListtoMenu {
menuString.append("<span class=\"menu-text\">");
menuString.append(name);
menuString.append("</span>");
menuString.append("<span class=\"fa arrow\">");
menuString.append("</span>");
menuString.append("</a>");
@ -1098,15 +1096,18 @@ public class ListtoMenu {
String name = getMutiLang(function.getFunctionName()) ;
menuString.append("<li> <a class=\"F_menuItem\" href=\"").append(function.getFunctionUrl()).append("\">");
if(!function.hasSubFunction(map)){
if(function.getFunctionIconStyle()!=null&&!function.getFunctionIconStyle().trim().equals("")){
menuString.append("<i class=\"fa "+function.getFunctionIconStyle()+"\"></i>");
}
menuString.append("<span>");
menuString.append(name);
menuString.append("</span>");
menuString.append("</a>");
menuString.append("</li>");
}else {
if(function.getFunctionIconStyle()!=null&&!function.getFunctionIconStyle().trim().equals("")){
menuString.append("<i class=\"fa "+function.getFunctionIconStyle()+"\"></i>");
}else{
@ -1115,6 +1116,7 @@ public class ListtoMenu {
menuString.append("<span>");
menuString.append(name);
menuString.append("</span>");
menuString.append("<i class=\"icon-font icon-right\"></i>");
menuString.append("</a>");
menuString.append("<ul class=\"menu-item-child\" >");

@ -0,0 +1,50 @@
package org.jeecgframework.core.util;
import java.security.MessageDigest;
/**
* @author zhoujf
*
*/
public class MD5Util {
private static String byteArrayToHexString(byte b[]) {
StringBuffer resultSb = new StringBuffer();
for (int i = 0; i < b.length; i++)
resultSb.append(byteToHexString(b[i]));
return resultSb.toString();
}
private static String byteToHexString(byte b) {
int n = b;
if (n < 0)
n += 256;
int d1 = n / 16;
int d2 = n % 16;
return hexDigits[d1] + hexDigits[d2];
}
public static String MD5Encode(String origin, String charsetname) {
String resultString = null;
try {
resultString = new String(origin);
MessageDigest md = MessageDigest.getInstance("MD5");
if (charsetname == null || "".equals(charsetname))
resultString = byteArrayToHexString(md.digest(resultString.getBytes()));
else
resultString = byteArrayToHexString(md.digest(resultString.getBytes(charsetname)));
} catch (Exception exception) {
}
return resultString;
}
private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d",
"e", "f" };
public static void main(String[] args){
String result = MD5Util.MD5Encode("捷微", "UTF-8");
System.out.println("result="+result);
}
}

@ -136,13 +136,13 @@ public class MutiLangUtil {
}
public static String doMutiLang(String title, String langArg){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long start = System.currentTimeMillis();
logger.info("================================ doMutiLang 开始时间:"+sdf.format(new Date())+"==============================");
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// long start = System.currentTimeMillis();
// logger.info("================================ doMutiLang 开始时间:"+sdf.format(new Date())+"==============================");
String context = getLang(title, langArg);
long end = System.currentTimeMillis();
logger.info("=============================== doMutiLang 结束时间:"+sdf.format(new Date())+"==============================");
logger.info("================================ doMutiLang 耗时:"+(end-start)+"ms==============================");
// long end = System.currentTimeMillis();
// logger.info("=============================== doMutiLang 结束时间:"+sdf.format(new Date())+"==============================");
// logger.info("================================ doMutiLang 耗时:"+(end-start)+"ms==============================");
return context;
}
/**

@ -12,6 +12,7 @@ import javax.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.jeecgframework.core.constant.DataBaseConstant;
import org.jeecgframework.web.cgform.common.CgAutoListConstant;
import org.jeecgframework.web.system.manager.ClientManager;
import org.jeecgframework.web.system.pojo.base.Client;
import org.jeecgframework.web.system.pojo.base.DynamicDataSourceEntity;
@ -257,6 +258,8 @@ public class ResourceUtil {
} else {
key = key;
}
//----------------------------------------------------------------
//替换为系统的登录用户账号
@ -280,6 +283,7 @@ public class ResourceUtil {
returnValue = getSessionUser().getRealName();
}
//----------------------------------------------------------------
//替换为系统登录用户的公司编码
if (key.equals(DataBaseConstant.SYS_COMPANY_CODE)|| key.equals(DataBaseConstant.SYS_COMPANY_CODE_TABLE)) {
@ -359,4 +363,56 @@ public class ResourceUtil {
// return "1".equals(bundle.getString("fuzzySearch"));
// }
/**
* Minidao
* Sql
* @param sql
* @return
*/
public static Map<String, Object> minidaoReplaceExtendSqlSysVar(Map<String, Object> data){
data.put("sys."+DataBaseConstant.SYS_USER_CODE_TABLE, getUserSystemData(DataBaseConstant.SYS_USER_CODE));
data.put("sys."+DataBaseConstant.SYS_USER_NAME_TABLE, getUserSystemData(DataBaseConstant.SYS_USER_NAME));
data.put("sys."+DataBaseConstant.SYS_ORG_CODE_TABLE, getUserSystemData(DataBaseConstant.SYS_ORG_CODE));
data.put("sys."+DataBaseConstant.SYS_COMPANY_CODE_TABLE, getUserSystemData(DataBaseConstant.SYS_COMPANY_CODE));
data.put("sys."+DataBaseConstant.SYS_DATE_TABLE, DateUtils.formatDate());
data.put("sys."+DataBaseConstant.SYS_TIME_TABLE, DateUtils.formatTime());
return data;
}
/**
* sql
* @param sql
* @param params
* @return
*/
public static String formateSQl(String sql, Map<String, Object> params) {
sql = replaceExtendSqlSysVar(sql);
if (params == null) {
return sql;
}
if(sql.toLowerCase().indexOf(CgAutoListConstant.SQL_INSERT)!=-1){
sql = sql.replace("#{UUID}", UUIDGenerator.generate());
}
for (String key : params.keySet()) {
sql = sql.replace("#{" + key + "}",String.valueOf(params.get(key)));
}
return sql;
}
/**
*
* Sql
* @param sql
* @return
*/
private static String replaceExtendSqlSysVar(String sql){
sql = sql.replace("#{sys."+DataBaseConstant.SYS_USER_CODE_TABLE+"}", ResourceUtil.getUserSystemData(DataBaseConstant.SYS_USER_CODE))
.replace("#{sys."+DataBaseConstant.SYS_USER_NAME_TABLE+"}", ResourceUtil.getUserSystemData(DataBaseConstant.SYS_USER_NAME))
.replace("#{sys."+DataBaseConstant.SYS_ORG_CODE_TABLE+"}", ResourceUtil.getUserSystemData(DataBaseConstant.SYS_ORG_CODE))
.replace("#{sys."+DataBaseConstant.SYS_COMPANY_CODE_TABLE+"}", ResourceUtil.getUserSystemData(DataBaseConstant.SYS_COMPANY_CODE))
.replace("#{sys."+DataBaseConstant.SYS_DATE_TABLE+"}", DateUtils.formatDate())
.replace("#{sys."+DataBaseConstant.SYS_TIME_TABLE+"}", DateUtils.formatTime());
return sql;
}
}

@ -120,6 +120,9 @@ public class SqlUtil {
*/
@SuppressWarnings("rawtypes")
public static String jeecgCreatePageSql(String dbKey,String sql,Map params, int page, int rows){
sql = getFullSql(sql,params);
int beginNum = (page - 1) * rows;
String[] sqlParam = new String[3];
sqlParam[0] = sql;

@ -408,7 +408,9 @@ public class oConvertUtils {
return "";
} else if (!name.contains("_")) {
// 不含下划线,仅将首字母小写
return name.substring(0, 1).toLowerCase() + name.substring(1);
return name.substring(0, 1).toLowerCase() + name.substring(1).toLowerCase();
}
// 用下划线将原始字符串分割
String camels[] = name.split("_");
@ -453,4 +455,37 @@ public class oConvertUtils {
return result.substring(0, result.length() - 1);
}
/**
* 线()
* 线</br>
* hello_world->HelloWorld
*
* @param name
* 线
* @return
*/
public static String camelNameCapFirst(String name) {
StringBuilder result = new StringBuilder();
// 快速检查
if (name == null || name.isEmpty()) {
// 没必要转换
return "";
} else if (!name.contains("_")) {
// 不含下划线,仅将首字母小写
return name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase();
}
// 用下划线将原始字符串分割
String camels[] = name.split("_");
for (String camel : camels) {
// 跳过原始字符串中开头、结尾的下换线或双重下划线
if (camel.isEmpty()) {
continue;
}
// 其他的驼峰片段,首字母大写
result.append(camel.substring(0, 1).toUpperCase());
result.append(camel.substring(1).toLowerCase());
}
return result.toString();
}
}

@ -33,6 +33,7 @@ public class AuthFilterTag extends TagSupport{
public int doEndTag() throws JspException {
JspWriter out = null;
try {
out = this.pageContext.getOut();
systemService = ApplicationContextUtil.getContext().getBean(SystemService.class);
@ -50,6 +51,7 @@ public class AuthFilterTag extends TagSupport{
}
}
return EVAL_PAGE;
}
public String getName() {

@ -1,8 +1,6 @@
package org.jeecgframework.tag.core.easyui;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
@ -26,7 +24,6 @@ public class BaseTag extends JeecgTag {
private Logger log = Logger.getLogger(BaseTag.class);
private static final long serialVersionUID = 1L;
protected String type = "default";// 加载类型
protected String cssTheme ;
public String getCssTheme() {
@ -38,7 +35,6 @@ public class BaseTag extends JeecgTag {
this.cssTheme = cssTheme;
}
public void setType(String type) {
this.type = type;
}
@ -50,9 +46,6 @@ public class BaseTag extends JeecgTag {
public int doEndTag() throws JspException {
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// long start = System.currentTimeMillis();
// log.info("================================ BaseTag 开始时间:"+sdf.format(new Date())+"==============================");
JspWriter out = null;
try {
out = this.pageContext.getOut();
@ -63,46 +56,22 @@ public class BaseTag extends JeecgTag {
}finally{
if(out!=null){
try {
out.clearBuffer();
} catch (Exception e) {
e.printStackTrace();
}
}
}
// long end = System.currentTimeMillis();
// log.info("=============================== BaseTag 结束时间:"+sdf.format(new Date())+"==============================");
// log.info("================================ BaseTag 耗时:"+(end-start)+"ms==============================");
return EVAL_PAGE;
}
public StringBuffer end(){
StringBuffer sb = this.getTagCache();
if(sb != null){
return sb;
}
sb = new StringBuffer();
String types[] = type.split(",");
/*// update-start--Author:longjb Date:20150408 for手动设置指定属性主题优先
//if (cssTheme == null) {//
Cookie[] cookies = ((HttpServletRequest) super.pageContext
.getRequest()).getCookies();
for (Cookie cookie : cookies) {
if (cookie == null || StringUtils.isEmpty(cookie.getName())) {
continue;
}
if (cookie.getName().equalsIgnoreCase("JEECGCSSTHEME")) {
cssTheme = cookie.getValue();
}
}
//}
if(cssTheme==null||"".equals(cssTheme)){
cssTheme="default";
}*/
SysThemesEnum sysThemesEnum = null;
if(StringUtil.isEmpty(cssTheme)||"null".equals(cssTheme)){
sysThemesEnum = SysThemesUtil.getSysTheme((HttpServletRequest) super.pageContext.getRequest());
@ -115,38 +84,27 @@ public class BaseTag extends JeecgTag {
if(lang==null){lang="zh-cn";}
String langjs = StringUtil.replace("<script type=\"text/javascript\" src=\"plug-in/mutiLang/{0}.js\"></script>", "{0}", lang);
sb.append(langjs);
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>");
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>");
}
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>");
}
if (oConvertUtils.isIn("easyui", types)) {
sb.append("<script type=\"text/javascript\" src=\"plug-in/tools/dataformat.js\"></script>");
// sb.append("<link id=\"easyuiTheme\" rel=\"stylesheet\" href=\"plug-in/easyui/themes/"+cssTheme+"/easyui.css\" type=\"text/css\"></link>");
sb.append(SysThemesUtil.getEasyUiTheme(sysThemesEnum));
sb.append(SysThemesUtil.getEasyUiMainTheme(sysThemesEnum));
sb.append(SysThemesUtil.getEasyUiIconTheme(sysThemesEnum));
// sb.append("<link rel=\"stylesheet\" href=\"plug-in/easyui/themes/icon.css\" type=\"text/css\"></link>");
sb.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"plug-in/accordion/css/accordion.css\">");
sb.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"plug-in/accordion/css/icons.css\">");
sb.append("<script type=\"text/javascript\" src=\"plug-in/easyui/jquery.easyui.min.1.3.2.js\"></script>");
// sb.append("<script type=\"text/javascript\" src=\"plug-in/easyui/locale/zh-cn.js\"></script>");
sb.append(StringUtil.replace("<script type=\"text/javascript\" src=\"plug-in/easyui/locale/{0}.js\"></script>", "{0}", lang));
sb.append("<script type=\"text/javascript\" src=\"plug-in/tools/syUtil.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/easyui/extends/datagrid-scrollview.js\"></script>");
}
@ -167,16 +125,11 @@ public class BaseTag extends JeecgTag {
if (oConvertUtils.isIn("prohibit", types)) {
sb.append("<script type=\"text/javascript\" src=\"plug-in/tools/prohibitutil.js\"></script>"); }
if (oConvertUtils.isIn("tools", types)) {
// sb.append("<link rel=\"stylesheet\" href=\"plug-in/tools/css/"+("metro".equals(cssTheme)?"metro/":"")+"common.css\" type=\"text/css\"></link>");
sb.append(SysThemesUtil.getCommonTheme(sysThemesEnum));
// 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));
sb.append("<script type=\"text/javascript\" src=\"plug-in/layer/layer.js\"></script>");
sb.append(StringUtil.replace("<script type=\"text/javascript\" src=\"plug-in/tools/curdtools_{0}.js\"></script>", "{0}", lang));
sb.append("<script type=\"text/javascript\" src=\"plug-in/tools/easyuiextend.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/jquery-plugs/hftable/jquery-hftable.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/tools/json2.js\" ></script>");
@ -206,13 +159,33 @@ public class BaseTag extends JeecgTag {
sb.append("<script type=\"text/javascript\" src=\"plug-in/ztree/js/jquery.ztree.core-3.5.min.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/ztree/js/jquery.ztree.excheck-3.5.min.js\"></script>");
}
types = null;
this.putTagCache(sb);
if (oConvertUtils.isIn("bootstrap", types)) {
sb.append("<script type=\"text/javascript\" src=\"plug-in/jquery/jquery-1.9.1.js\"></script>");
sb.append("<link rel=\"stylesheet\" href=\"plug-in/bootstrap3.3.5/css/bootstrap.min.css\" type=\"text/css\"></link>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/bootstrap3.3.5/js/bootstrap.min.js\"></script>");
sb.append("<link rel=\"stylesheet\" href=\"plug-in/bootstrap3.3.5/css/default.css\" type=\"text/css\"></link>");
}
if (oConvertUtils.isIn("bootstrap-table", types)) {
sb.append("<link rel=\"stylesheet\" href=\"plug-in/bootstrap-table/bootstrap-table.min.css\" type=\"text/css\"></link>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/bootstrap-table/bootstrap-table.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/bootstrap-table/locale/bootstrap-table-zh-CN.min.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/themes/bootstrap-ext/js/common.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/tools/dataformat.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/lhgDialog/lhgdialog.min.js?skin=metrole\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/themes/bootstrap-ext/js/bootstrap-lhgdialog-curdtools_zh-cn.js\"></script>");
}
if (oConvertUtils.isIn("layer", types)) {
sb.append("<script type=\"text/javascript\" src=\"plug-in/layer/layer.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/laydate/laydate.js\"></script>");
}
types = null;
this.putTagCache(sb);
return sb;
}
public String toString() {
return new StringBuffer().append("BaseTag [type=").append(type)
.append(",sysTheme=").append(SysThemesUtil.getSysTheme(ContextHolderUtils.getRequest()).getStyle())
@ -220,6 +193,5 @@ public class BaseTag extends JeecgTag {
.append(",cssTheme=").append(cssTheme)
.append("]").toString();
}
}

@ -21,6 +21,9 @@ public class ComboTreeTag extends TagSupport {
protected String width;// 宽度
protected String value;// 控件值
private boolean multiple=false;//是否多选
private boolean onlyLeafCheck=false;//是否只选择子节点(默认为false)
public int doStartTag() throws JspTagException {
return EVAL_PAGE;
}
@ -50,7 +53,12 @@ public class ComboTreeTag extends TagSupport {
+ "$(function() { " + "$(\'#"+id+"\').combotree({ "
+ "url :\'"+url+"\',"
+ "width :\'"+width+"\',"
+ "multiple:"+multiple+""
+ "multiple:"+multiple+","
+"onlyLeafCheck:"+onlyLeafCheck+","
+"onLoadSuccess:function(){$(\'#"+id+"\').combotree('tree').tree('expandAll')}"
+ "}); "
+ "}); "
+ "</script>");
@ -85,4 +93,9 @@ public class ComboTreeTag extends TagSupport {
public void setMultiple(boolean multiple) {
this.multiple = multiple;
}
public void setOnlyLeafCheck(boolean onlyLeafCheck) {
this.onlyLeafCheck = onlyLeafCheck;
}
}

@ -61,6 +61,9 @@ public class DataGridColumnTag extends TagSupport {
protected String showMode;//表单元素,查询表单中显示样式,默认样式select
protected boolean newColumn = false;//是否新起一行
protected String dictCondition; //自定义字典表的显示文本-字典查询条件
public boolean isNewColumn() {
return newColumn;
@ -78,6 +81,7 @@ public class DataGridColumnTag extends TagSupport {
this.showMode = showMode;
}
public String getEditor() {
return editor;
}
@ -91,7 +95,7 @@ public class DataGridColumnTag extends TagSupport {
Tag t = findAncestorWithClass(this, DataGridTag.class);
DataGridTag parent = (DataGridTag) t;
parent.setColumn(title,field,width,showLen,rowspan,colspan,align,sortable,checkbox,formatter,formatterjs,hidden,replace,treefield,image,imageSize,query,url,funname,arg,queryMode, dictionary,popup,frozenColumn,extend,style,downloadName,autocomplete,extendParams,editor,defaultVal,showMode,newColumn);
parent.setColumn(title,field,width,showLen,rowspan,colspan,align,sortable,checkbox,formatter,formatterjs,hidden,replace,treefield,image,imageSize,query,url,funname,arg,queryMode, dictionary,popup,frozenColumn,extend,style,downloadName,autocomplete,extendParams,editor,defaultVal,showMode,newColumn,dictCondition);
return EVAL_PAGE;
}
@ -184,6 +188,11 @@ public class DataGridColumnTag extends TagSupport {
public void setDictionary(String dictionary) {
this.dictionary = dictionary;
}
public void setdictCondition(String dictCondition) {
this.dictCondition = dictCondition;
}
public String getQueryMode() {
return queryMode;
}

@ -16,6 +16,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import net.sf.json.JSONObject;
@ -30,12 +31,13 @@ import org.jeecgframework.core.util.ResourceUtil;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.core.util.SysThemesUtil;
import org.jeecgframework.core.util.oConvertUtils;
import org.jeecgframework.tag.core.JeecgTag;
import org.jeecgframework.tag.core.factory.BootstrapTableComponent;
import org.jeecgframework.tag.core.factory.ComponentFactory;
import org.jeecgframework.tag.vo.easyui.ColumnValue;
import org.jeecgframework.tag.vo.easyui.DataGridColumn;
import org.jeecgframework.tag.vo.easyui.DataGridUrl;
import org.jeecgframework.tag.vo.easyui.OptTypeDirection;
import org.jeecgframework.web.cgform.common.CgAutoListConstant;
import org.jeecgframework.web.cgform.entity.config.CgFormFieldEntity;
import org.jeecgframework.web.cgform.entity.config.CgFormHeadEntity;
import org.jeecgframework.web.cgform.entity.config.CgSubTableVO;
import org.jeecgframework.web.cgform.service.config.CgFormFieldServiceI;
@ -57,7 +59,7 @@ import com.google.gson.Gson;
* @version 1.0
*/
@SuppressWarnings({"serial","rawtypes","unchecked","static-access"})
public class DataGridTag extends JeecgTag {
public class DataGridTag extends TagSupport {
private Logger log = Logger.getLogger(DataGridTag.class);
private final String DATE_FORMATTER = "yyyy-MM-dd";
private final String DATETIME_FORMATTER = "yyyy-MM-dd hh:mm:ss";
@ -121,6 +123,20 @@ public class DataGridTag extends JeecgTag {
private String configId = "";
private boolean isShowSubGrid=false;//是否显示表体数据 值为true 或者false
private String component;//列表组件名称默认easyui,bootstrap-table
private boolean query=true;//是否显示查询条件默认true,显示为true,不显示为false
public boolean isQuery() {
return query;
}
public void setQuery(boolean query) {
this.query = query;
}
public void setComponent(String component) {
this.component = component;
}
public String getConfigId() {
return configId;
}
@ -148,6 +164,7 @@ public class DataGridTag extends JeecgTag {
}
}
public String getCssTheme() {
return cssTheme;
}
@ -457,7 +474,7 @@ public class DataGridTag extends JeecgTag {
String arg,String queryMode, String dictionary,boolean popup,
boolean frozenColumn,String extend,
String style,String downloadName,boolean isAuto,String extendParams,String editor,String defaultVal,String showMode, boolean newColumn) {
String style,String downloadName,boolean isAuto,String extendParams,String editor,String defaultVal,String showMode, boolean newColumn,String dictCondition) {
DataGridColumn dataGridColumn = new DataGridColumn();
dataGridColumn.setAlign(align);
@ -497,7 +514,11 @@ public class DataGridTag extends JeecgTag {
dataGridColumn.setDefaultVal(defaultVal);
dataGridColumn.setShowMode(showMode);
dataGridColumn.setDictCondition(dictCondition);
columnList.add(dataGridColumn);
Set<String> operationCodes = (Set<String>) super.pageContext.getRequest().getAttribute(Globals.OPERATIONCODES);
if (null!=operationCodes) {
for (String MyoperationCode : operationCodes) {
@ -511,6 +532,7 @@ public class DataGridTag extends JeecgTag {
}
}
}
if (field != "opt") {
fields += field + ",";
if ("group".equals(queryMode)) {
@ -541,6 +563,11 @@ public class DataGridTag extends JeecgTag {
String value = "";
String sql = "select " + dic[1] + " as field," + dic[2]
+ " as text from " + dic[0];
if(!StringUtil.isEmpty(dictCondition)){
sql += " "+dictCondition;
}
systemService = ApplicationContextUtil.getContext().getBean(
SystemService.class);
List<Map<String, Object>> list = systemService.findForJdbc(sql);
@ -624,7 +651,14 @@ public class DataGridTag extends JeecgTag {
out = this.pageContext.getOut();
out.print(end().toString());
if("bootstrap-table".equals(component)){
ComponentFactory componentFactory = new BootstrapTableComponent();
String content = componentFactory.invoke("/org/jeecgframework/tag/core/factory/ftl/component/bootstrapTable.ftl", getDataGridTag());
out.print(content);
}else{
out.print(end().toString());
}
out.flush();
// String indexStyle =null;
@ -658,6 +692,8 @@ public class DataGridTag extends JeecgTag {
// }
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}finally{
if(out!=null){
try {
@ -691,15 +727,17 @@ public class DataGridTag extends JeecgTag {
*/
public StringBuffer jqGrid(){
StringBuffer sb = new StringBuffer();
sb.append("<link href=\"plug-in-ui/hplus/css/bootstrap.min.css?v=3.3.6\" rel=\"stylesheet\">");
sb.append("<link type=\"text/css\" rel=\"stylesheet\" href=\"plug-in-ui/hplus/css/plugins/jqgrid/ui.jqgrid.css\">");
sb.append("<script src=\"plug-in-ui/hplus/js/jquery.min.js\"></script>");
sb.append("<link href=\"plug-in/hplus/css/bootstrap.min.css?v=3.3.6\" rel=\"stylesheet\">");
sb.append("<link type=\"text/css\" rel=\"stylesheet\" href=\"plug-in/hplus/css/plugins/jqgrid/ui.jqgrid.css\">");
sb.append("<script src=\"plug-in/hplus/js/jquery.min.js\"></script>");
sb.append("<link rel=\"stylesheet\" href=\"plug-in/jquery-ui/css/ui-lightness/jquery-ui-1.9.2.custom.min.css\" type=\"text/css\"></link>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/lhgDialog/lhgdialog.min.js\"></script>");
sb.append("<script src=\"plug-in-ui/hplus/js/bootstrap.min.js\"></script>");
sb.append("<script src=\"plug-in-ui/hplus/js/plugins/peity/jquery.peity.min.js\"></script>");
sb.append("<script src=\"plug-in-ui/hplus/js/plugins/jqgrid/i18n/grid.locale-cn.js\"></script>");
sb.append("<script src=\"plug-in-ui/hplus/js/plugins/jqgrid/jquery.jqGrid.min.js\"></script>");
sb.append("<script src=\"plug-in/hplus/js/bootstrap.min.js\"></script>");
sb.append("<script src=\"plug-in/hplus/js/plugins/peity/jquery.peity.min.js\"></script>");
sb.append("<script src=\"plug-in/hplus/js/plugins/jqgrid/i18n/grid.locale-cn.js\"></script>");
sb.append("<script src=\"plug-in/hplus/js/plugins/jqgrid/jquery.jqGrid.min.js\"></script>");
sb.append("<script src=\"plug-in/tools/datagrid_2_jqgrid.js\"></script>");
sb.append("<style>");
sb.append("#t_"+name+"{border-bottom:1px solid #ddd;}");
@ -828,6 +866,7 @@ public class DataGridTag extends JeecgTag {
}
sb.append("<div class=\"tool_bar_div bg-info\"></div>");
sb.append("');");
//表格顶部查询
if(hasQueryColum(columnList) && !columnList.isEmpty()){
for (DataGridColumn column : columnList) {
@ -1036,6 +1075,7 @@ public class DataGridTag extends JeecgTag {
}
}
}
//工具栏的处理方式
if(toolBarList.size() > 0){
@ -1166,8 +1206,10 @@ public class DataGridTag extends JeecgTag {
*/
public StringBuffer datatables() {
StringBuffer sb = new StringBuffer();
sb.append("<link href=\"plug-in-ui/hplus/css/plugins/dataTables/dataTables.bootstrap.css\" rel=\"stylesheet\">");
sb.append("<script src=\"plug-in-ui/hplus/js/plugins/dataTables/jquery.dataTables.js\"></script>");
sb.append("<link href=\"plug-in/hplus/css/plugins/dataTables/dataTables.bootstrap.css\" rel=\"stylesheet\">");
sb.append("<script src=\"plug-in/hplus/js/plugins/dataTables/jquery.dataTables.js\"></script>");
sb.append("<script type=\"text/javascript\">");
sb.append("$(document).ready(function() {");
sb.append("var oTable = $(\'#userList\').dataTable({");
@ -1286,10 +1328,7 @@ public class DataGridTag extends JeecgTag {
*/
public StringBuffer end() {
StringBuffer sb = this.getTagCache();
if(sb != null){
return sb;
}
StringBuffer sb = null;
if (style.equals("easyui")) {
sb = null;
}else if("jqgrid".equals(style)){
@ -1297,10 +1336,6 @@ public class DataGridTag extends JeecgTag {
}else{
sb = datatables();
}
if(sb != null){
this.putTagCache(sb);
return sb;
}
String grid = "";
sb = new StringBuffer();
@ -1308,6 +1343,7 @@ public class DataGridTag extends JeecgTag {
if(btnCls!=null && btnCls.indexOf("bootstrap")==0){
sb.append("<link rel=\"stylesheet\" href=\"plug-in/bootstrap/css/bootstrap-btn.css\" type=\"text/css\"></link>");
}
width = (width == null) ? "auto" : width;
height = (height == null) ? "auto" : height;
@ -1321,16 +1357,20 @@ public class DataGridTag extends JeecgTag {
loadSubData(configId);
sb.append("function detailFormatterFun(){");
sb.append("var s = '<div class=\"orderInfoHidden\" style=\"padding:2px;\">'+");
sb.append("'<div class=\"easyui-tabs\" style=\"height:230px;width:1850px\">'+");
sb.append("'<div class=\"easyui-tabs\" style=\"height:230px;width:800px;\">'+");
String subtableids[] = null;
if(head.getSubTableStr()!=null && head.getSubTableStr().length()>=0){
subtableids = head.getSubTableStr().split(",");
for (String subtable : subtableids) {
sb.append("'<div title=\""+((CgSubTableVO)tableData.get(subtable)).getHead().getContent()+"\" style=\"padding:2px;\">'+");
sb.append("'<table class=\""+((CgSubTableVO)tableData.get(subtable)).getHead().getTableName()+"tablelines\" ></table>'+");
sb.append("'</div>'+");
}
}
sb.append("'</div>'+");
sb.append("'</div>'+");
sb.append("'</div>'; return s;}");
sb.append("function onExpandRowFun(index,row){");
@ -1345,11 +1385,23 @@ public class DataGridTag extends JeecgTag {
List<Map<String, Object>> subfieldlist = submap.getFieldList();
for (Map<String, Object> map : subfieldlist) {
subfield+=map.get("field_name")+",";
if(map.get("main_field")!=null && map.get("main_field").toString().length()>0 && "".equals(linkid)){
linkid = (String)map.get("field_name");
// if(map.get("main_field")!=null && map.get("main_field").toString().length()>0 && "".equals(linkid)){
// linkid = (String)map.get("field_name");
// }
columns += "{title:'"+map.get("content")+"',field:'"+map.get("field_name")+"',align:'left',width:50},";
}
List<CgFormFieldEntity> subFields = submap.getHead().getColumns();
for (CgFormFieldEntity subField : subFields) {
if(StringUtils.isNotBlank(subField.getMainField())) {
linkid=subField.getFieldName();
break;
}
columns += "{title:'"+map.get("content")+"',field:'"+map.get("field_name")+"',align:'left'},";
}
sb.append("var "+submap.getHead().getTableName()+"durl = 'cgAutoListController.do?datagrid&configId="+submap.getHead().getTableName()+"&"+linkid+"='+row.id+'&field="+subfield+"&page=1&rows=100';");
sb.append("var "+submap.getHead().getTableName()+"tablelines = $(this).datagrid('getRowDetail',index).find('table."+submap.getHead().getTableName()+"tablelines');");
sb.append(""+submap.getHead().getTableName()+"tablelines.datagrid({");
@ -1386,17 +1438,21 @@ public class DataGridTag extends JeecgTag {
}else{
sb.append("treeField:'text',");
}
sb.append(" onBeforeLoad: function(row,param){\n" +
" if (!row) { \n" +
" delete param.id; \n" +
" }\n" +
" },");
} else {
grid = "datagrid";
sb.append("$(\'#" + name + "\').datagrid({");
if (this.isFilter()) {
sb.append("onHeaderContextMenu: function(e, field){headerMenu(e, field);},");
}
sb.append("idField: '" + idField + "',");
}
if (title != null) {
@ -1646,6 +1702,9 @@ public class DataGridTag extends JeecgTag {
boolean blink = false;
sb.append("<input id=\"_complexSqlbuilder\" name=\"complexSqlbuilder\" type=\"hidden\" />");
if(hasQueryColum(columnList) && "group".equals(getQueryMode())){
blink = true;
@ -1658,8 +1717,6 @@ public class DataGridTag extends JeecgTag {
//-----longjb1 增加用于高级查询的参数项
sb.append("<input id=\"_sqlbuilder\" name=\"sqlbuilder\" type=\"hidden\" />");
sb.append("<input id=\"_complexSqlbuilder\" name=\"complexSqlbuilder\" type=\"hidden\" />");
//update by jg_renjie at 2016/1/11 for:TASK #823 增加form实现Form表单验证
@ -1678,8 +1735,24 @@ public class DataGridTag extends JeecgTag {
sb.append("</span>");
sb.append("</form></div>");
}else if(hasQueryColum(columnList) && "advanced".equals(getQueryMode())){
blink = true;
String searchColumStyle = toolBarList!=null&&toolBarList.size()!=0?"":"style='border-bottom: 0px'";
sb.append("<div name=\"searchColums\" style=\"display:none;\" id=\"searchColums\" "+searchColumStyle+">");
sb.append("<input id=\"isShowSearchId\" type=\"hidden\" value=\""+isShowSearch+"\"/>");
//-----longjb1 增加用于高级查询的参数项
sb.append("<input id=\"_sqlbuilder\" name=\"sqlbuilder\" type=\"hidden\" />");
sb.append("<form onkeydown='if(event.keyCode==13){" + name + "search();return false;}' id='"+name+"Form'>");
sb.append("<span style=\"max-width: 79%;display: inline-block;\">");
getSearchFormInfo(sb);
sb.append("</span>");
sb.append("<span>");
getSearchButton(sb);
sb.append("</span>");
sb.append("</form></div>");
}
if(toolBarList==null || toolBarList.size()==0){
@ -1789,11 +1862,48 @@ public class DataGridTag extends JeecgTag {
sb.append("<div id=\""+name+"mm\" style=\"width:120px\">");
for (DataGridColumn col : columnList) {
if (col.isQuery()) {
sb.append("<div data-options=\"name:\'"+col.getField().replaceAll("_","\\.")+"\',iconCls:\'icon-ok\' "+extendAttribute(col.getExtend())+" \">"+col.getTitle()+"</div> ");
sb.append("<div data-options=\"name:\'"+col.getField().replaceAll("_","\\.")+"\',iconCls:\'icon-ok\' \">"+col.getTitle()+"</div> ");
}
}
sb.append("</div>");
sb.append("</span>");
}else if ("advanced".equals(getQueryMode()) && hasQueryColum(columnList)) {// 如果表单是高级查询
sb.append("<span style=\"float:right\">");
if (btnCls != null && !btnCls.equals("easyui")) {// 自定以样式 bootstrap按钮样式
if (btnCls.indexOf("bootstrap") == 0) {
String defalutCls = "btn btn-info btn-xs";
if (btnCls.replace("bootstrap", "").trim().length() > 0) {
defalutCls = btnCls.replace("bootstrap", "").trim();
}
if (superQuery) {
sb.append("<button class=\"" + defalutCls + "\" type=\"button\" onclick=\"queryBuilder()\">");
sb.append("<i class=\"fa fa-search\"></i>");
sb.append("<span class=\"bigger-110 no-text-shadow\">"
+ MutiLangUtil.getLang("common.superquery") + "</span>");
sb.append("</button>");
sb.append("</span>");
}
} else {// 自定以样式
if (superQuery) {
sb.append("<a href=\"#\" class=\"" + btnCls + "\" onclick=\"queryBuilder('" + StringUtil
.replaceAll("')\">{0}</a>", "{0}", MutiLangUtil.getLang("common.superquery")));
}
}
} else {// 默认使用easyUI按钮样式
if (superQuery) {
sb.append(
"<a href=\"#\" class=\"easyui-linkbutton\" iconCls=\"icon-search\" onclick=\"queryBuilder('"
+ StringUtil.replaceAll("')\">{0}</a>", "{0}",
MutiLangUtil.getLang("common.superquery")));
}
}
sb.append("</span>");
}
sb.append("<div style=\"clear:both\"></div>");
@ -1819,6 +1929,7 @@ public class DataGridTag extends JeecgTag {
addQueryBuilder(sb,"easyui-linkbutton");
}
}
if(superQuery) {
@ -1839,7 +1950,6 @@ public class DataGridTag extends JeecgTag {
this.getFilter(sb);
this.putTagCache(sb);
return sb;
}
@ -1945,6 +2055,7 @@ public class DataGridTag extends JeecgTag {
* @param sb
*/
private void getSearchFormInfo(StringBuffer sb) {
//如果表单是组合查询
if("group".equals(getQueryMode())){
for (DataGridColumn col : columnList) {
@ -1978,24 +2089,36 @@ public class DataGridTag extends JeecgTag {
}
sb.append("</select>");
}else if(!StringUtil.isEmpty(col.getDictionary())){
if(col.getDictionary().contains(",")&&col.isPopup()){
String[] dic = col.getDictionary().split(",");
String sql = "select " + dic[1] + " as field," + dic[2]
+ " as text from " + dic[0];
// String sql;
// if(!StringUtil.isEmpty(col.getDictCondition())){
// sql = "select " + dic[1] + " as field," + dic[2]+ " as text from " + dic[0]+" "+col.getDictCondition();
// }else{
// sql = "select " + dic[1] + " as field," + dic[2]+ " as text from " + dic[0];
// }
//System.out.println(dic[0]+"--"+dic[1]+"--"+dic[2]);
// <input type="text" name="order_code" style="width: 100px" class="searchbox-inputtext" value="" onClick="inputClick(this,'account','user_msg');" />
if(col.getDefaultVal()!=null&&!col.getDefaultVal().trim().equals("")){
sb.append("<input type=\"text\" name=\""+col.getField().replaceAll("_","\\.")+"\" style=\"width: 120px\" class=\"searchbox-inputtext\" value=\"\" onClick=\"inputClick(this,'"+dic[1]+"','"+dic[0]+"');\" value=\""+col.getDefaultVal()+"\"/> ");
sb.append("<input type=\"text\" name=\""+col.getField().replaceAll("_","\\.")+"\" style=\"width: 120px\" class=\"searchbox-inputtext\" value=\"\" onClick=\"popupClick(this,'"+dic[2].replaceAll("@", ",")+"','"+dic[1].replaceAll("@", ",")+"','"+dic[0]+"');\" value=\""+col.getDefaultVal()+"\"/> ");
}else{
sb.append("<input type=\"text\" name=\""+col.getField().replaceAll("_","\\.")+"\" style=\"width: 120px\" class=\"searchbox-inputtext\" value=\"\" onClick=\"inputClick(this,'"+dic[1]+"','"+dic[0]+"');\" /> ");
sb.append("<input type=\"text\" name=\""+col.getField().replaceAll("_","\\.")+"\" style=\"width: 120px\" class=\"searchbox-inputtext\" value=\"\" onClick=\"popupClick(this,'"+dic[2].replaceAll("@", ",")+"','"+dic[1].replaceAll("@", ",")+"','"+dic[0]+"');\" /> ");
}
}else if(col.getDictionary().contains(",")&&(!col.isPopup())){
String[] dic = col.getDictionary().split(",");
String sql = "select " + dic[1] + " as field," + dic[2]
+ " as text from " + dic[0];
String sql;
if(!StringUtil.isEmpty(col.getDictCondition())){
sql = "select " + dic[1] + " as field," + dic[2]+ " as text from " + dic[0]+" "+col.getDictCondition();
}else{
sql = "select " + dic[1] + " as field," + dic[2]+ " as text from " + dic[0];
}
systemService = ApplicationContextUtil.getContext().getBean(
SystemService.class);
List<Map<String, Object>> list = systemService.findForJdbc(sql);
@ -2157,6 +2280,7 @@ public class DataGridTag extends JeecgTag {
}
}
}
}
@ -2543,16 +2667,22 @@ public class DataGridTag extends JeecgTag {
}
if(StringUtils.isNotEmpty(column.getExtendParams())){
StringBuffer comboboxStr =new StringBuffer();//声明一个替换扩展参数中的editor:'combobox'的变量
if(column.getExtendParams().indexOf("editor:'combobox'")>-1){//倘若扩展参数中包含editor:'combobox'
StringBuffer comboboxStr =new StringBuffer();//声明一个替换扩展参数中的editor:'combobox'的变量
if(!StringUtil.isEmpty(column.getDictionary())){//根据数据字典生成editor:'combobox'
if(column.getDictionary().contains(",")){
String[] dic = column.getDictionary().split(",");
String sql = "select " + dic[1] + " as field," + dic[2]+ " as text from " + dic[0];
if(!StringUtil.isEmpty(column.getDictCondition())){
sql += " "+column.getDictCondition();
}
systemService = ApplicationContextUtil.getContext().getBean(SystemService.class);
List<Map<String, Object>> list = systemService.findForJdbc(sql);
comboboxStr.append("editor:{type:'combobox',options:{valueField:'typecode',textField:'typename',data:[");
for (Map<String, Object> map : list){
comboboxStr.append("{'typecode':'"+map.get("field")+"','typename':'"+map.get("text")+"'},");
}
@ -2565,7 +2695,8 @@ public class DataGridTag extends JeecgTag {
comboboxStr.append("return '"+map.get("text")+"';");
comboboxStr.append("}");
}
comboboxStr.append("return row."+map.get("field")+";");
comboboxStr.append("return value;");
comboboxStr.append("}");
}else{
Map<String, List<TSType>> typedatas = ResourceUtil.allTypes;
@ -2588,15 +2719,26 @@ public class DataGridTag extends JeecgTag {
}
}
}
if(StringUtils.isEmpty(comboboxStr.toString())){
comboboxStr.append("editor:'text'");
}
column.setExtendParams(column.getExtendParams().replaceAll("editor:'combobox'", comboboxStr.toString()));//替换扩展参数
//System.out.println("column.getExtendParams()=="+column.getExtendParams());
}
//sb.append(","+column.getExtendParams().substring(0,column.getExtendParams().length()-1));
String extendParm = "";
if(column.getExtendParams().endsWith(",") || column.getExtendParams().endsWith("''")){
sb.append(","+column.getExtendParams().substring(0,column.getExtendParams().length()-1));
extendParm = column.getExtendParams().substring(0,column.getExtendParams().length()-1);
}else{
sb.append(","+column.getExtendParams());
extendParm = column.getExtendParams();
}
extendParm = extendParm.trim();
if(StringUtils.isNotEmpty(extendParm)){
sb.append(","+extendParm);
}
@ -2795,6 +2937,7 @@ public class DataGridTag extends JeecgTag {
}
public String getNoAuthOperButton(){
StringBuffer sb = new StringBuffer();
if(ResourceUtil.getSessionUser().getUserName().equals("admin")|| !Globals.BUTTON_AUTHORITY_CHECK){
}else{
@ -2820,6 +2963,7 @@ public class DataGridTag extends JeecgTag {
}
}
//org.jeecgframework.core.util.LogUtil.info("----getNoAuthOperButton-------"+sb.toString());
return sb.toString();
}
@ -2968,6 +3112,7 @@ public class DataGridTag extends JeecgTag {
sb.append("<link rel=\"stylesheet\" href=\"plug-in/bootstrap/css/bootstrap-btn.css\" type=\"text/css\"></link>");
}
width = (width == null) ? "auto" : width;
height = (height == null) ? "auto" : height;
// sb.append("<link rel=\"stylesheet\" href=\"plug-in/easyui/themes/metro/main.css\" />");
@ -2982,9 +3127,11 @@ public class DataGridTag extends JeecgTag {
} else {
grid = "datagrid";
sb.append("$(\'#" + name + "\').datagrid({");
if (this.isFilter()) {
sb.append("onHeaderContextMenu: function(e, field){headerMenu(e, field);},");
}
sb.append("idField: '" + idField + "',");
}
if (title != null) {
@ -3178,6 +3325,11 @@ public class DataGridTag extends JeecgTag {
String[] dic = col.getDictionary().split(",");
String sql = "select " + dic[1] + " as field," + dic[2]
+ " as text from " + dic[0];
if(!StringUtil.isEmpty(col.getDictCondition())){
sql += " "+col.getDictCondition();
}
systemService = ApplicationContextUtil.getContext().getBean(
SystemService.class);
List<Map<String, Object>> list = systemService.findForJdbc(sql);
@ -3593,6 +3745,7 @@ appendLine(sb," }}\">关系</th>");
appendLine(sb," </table>");
appendLine(sb,"</div>");
appendLine(sb,"<div data-options=\"region:'south',border:false\" style=\"text-align:right;padding:5px 0 3px;\">");
if (btnCls != null && !btnCls.equals("easyui")) {
String defalutCls = "btn btn-default btn-xs";
if (btnCls.replace("bootstrap", "").trim().length() > 0) {
@ -3605,6 +3758,7 @@ appendLine(sb," }}\">关系</th>");
appendLine(sb,"<a class=\""+buttonSytle+"\" data-options=\"iconCls:'icon-ok'\" href=\"javascript:void(0)\" onclick=\"javascript:queryBuilderSearch()\">确定</a>");
appendLine(sb,"<a class=\""+buttonSytle+"\" data-options=\"iconCls:'icon-cancel'\" href=\"javascript:void(0)\" onclick=\"javascript:$('#"+name+"_qbwin').window('close')\">取消</a>");
}
appendLine(sb," </div>");
appendLine(sb," </div> ");
@ -3633,12 +3787,14 @@ appendLine(sb," }}\">关系</th>");
if (btnCls.replace("bootstrap", "").trim().length() > 0) {
defalutCls = btnCls.replace("bootstrap", "").trim();
}
sb.append("var toolbar = '<div>");
sb.append("<button class=\""+defalutCls+"\" onclick=\"append()\">&nbsp;<i class=\"fa fa-plus\"></i>&nbsp;</button>");
sb.append("<button class=\""+defalutCls+"\" onclick=\"edit()\">&nbsp;<i class=\"fa fa-pencil-square-o\"></i></button>");
sb.append("<button class=\""+defalutCls+"\" onclick=\"removeIt()\">&nbsp;<i class=\"fa fa-trash\"></i></button>");
sb.append("<button class=\""+defalutCls+"\" onclick=\"save()\">&nbsp;<i class=\"fa fa-save\"></i></button>");
sb.append("</div>';");
}else{
appendLine(sb,"var toolbar = [{");
@ -3889,4 +4045,160 @@ appendLine(sb," }}\">关系</th>");
}
return false;
}
public String getFields() {
return fields;
}
public void setFields(String fields) {
this.fields = fields;
}
public String getSearchFields() {
return searchFields;
}
public void setSearchFields(String searchFields) {
this.searchFields = searchFields;
}
public List<DataGridUrl> getUrlList() {
return urlList;
}
public void setUrlList(List<DataGridUrl> urlList) {
this.urlList = urlList;
}
public List<DataGridUrl> getToolBarList() {
return toolBarList;
}
public void setToolBarList(List<DataGridUrl> toolBarList) {
this.toolBarList = toolBarList;
}
public List<DataGridColumn> getColumnList() {
return columnList;
}
public void setColumnList(List<DataGridColumn> columnList) {
this.columnList = columnList;
}
public List<ColumnValue> getColumnValueList() {
return columnValueList;
}
public void setColumnValueList(List<ColumnValue> columnValueList) {
this.columnValueList = columnValueList;
}
public List<ColumnValue> getColumnStyleList() {
return columnStyleList;
}
public void setColumnStyleList(List<ColumnValue> columnStyleList) {
this.columnStyleList = columnStyleList;
}
public Map<String, Object> getMap() {
return map;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
public int getCurPageNo() {
return curPageNo;
}
public void setCurPageNo(int curPageNo) {
this.curPageNo = curPageNo;
}
public Map<String, Object> getTableData() {
return tableData;
}
public void setTableData(Map<String, Object> tableData) {
this.tableData = tableData;
}
public String getName() {
return name;
}
public String getTitle() {
return title;
}
public String getIdField() {
return idField;
}
public boolean isTreegrid() {
return treegrid;
}
public String getActionUrl() {
return actionUrl;
}
public int getPageSize() {
return pageSize;
}
public boolean isPagination() {
return pagination;
}
public String getWidth() {
return width;
}
public String getHeight() {
return height;
}
public boolean isCheckbox() {
return checkbox;
}
public boolean isShowPageList() {
return showPageList;
}
public boolean isOpenFirstNode() {
return openFirstNode;
}
public boolean isFit() {
return fit;
}
public boolean isShowRefresh() {
return showRefresh;
}
public boolean isShowText() {
return showText;
}
public String getStyle() {
return style;
}
public String getOnLoadSuccess() {
return onLoadSuccess;
}
public String getOnClick() {
return onClick;
}
public String getOnDblClick() {
return onDblClick;
}
public String getRowStyler() {
return rowStyler;
}
public String getExtendParams() {
return extendParams;
}
public String getLangArg() {
return langArg;
}
public boolean isNowrap() {
return nowrap;
}
public Boolean getSingleSelect() {
return singleSelect;
}
public String getTreeField() {
return treeField;
}
public String getComponent() {
return component;
}
public void setShowSearch(boolean isShowSearch) {
this.isShowSearch = isShowSearch;
}
public void setShowSubGrid(boolean isShowSubGrid) {
this.isShowSubGrid = isShowSubGrid;
}
public int getAllCount() {
return allCount;
}
public void setAllCount(int allCount) {
this.allCount = allCount;
}
public DataGridTag getDataGridTag(){
return this;
}
}

@ -156,6 +156,7 @@ public class DepartSelectTag extends TagSupport {
sb.append(" value=\""+departNamesDefalutVal+"\"");
}
sb.append(" />");
String orgIds = "";
sb.append("<input class=\"inuptxt\" id=\"" + selectedIdsInputId + "\" name=\"" + selectedIdsInputId + "\" type=\"hidden\" ");
if(StringUtils.isNotBlank(departIdsDefalutVal)){
@ -176,6 +177,7 @@ public class DepartSelectTag extends TagSupport {
sb.append(" {name: '" + commonCancel + "', callback: function (){}}");
sb.append(" ]}).zindex();");
sb.append("}");
sb.append("function callbackDepartmentSelect() {");
sb.append(" var iframe = this.iframe.contentWindow;");
sb.append(" var treeObj = iframe.$.fn.zTree.getZTreeObj(\"departSelect\");");

@ -123,23 +123,25 @@ public class DictSelectTag extends TagSupport {
}else {
sb.append("<select name=\"" + field + "\"");
this.readonly(sb);
//增加扩展属性
if (!StringUtils.isBlank(this.extendJson)) {
Gson gson = new Gson();
Map<String, String> mp = gson.fromJson(extendJson, Map.class);
for(Map.Entry<String, String> entry: mp.entrySet()) {
sb.append(entry.getKey()+"=\"" + entry.getValue() + "\"");
}
sb.append(this.getExtendJsonCommon(extendJson));
}
this.readonly(sb);
if (!StringUtils.isBlank(this.id)) {
sb.append(" id=\"" + id + "\"");
}
this.datatype(sb);
sb.append(">");
select("common.please.select", "", sb);
for (Map<String, Object> map : list) {
select(map.get("text").toString(), map.get("field").toString(), sb);
}
@ -175,23 +177,21 @@ public class DictSelectTag extends TagSupport {
} else {
sb.append("<select name=\"" + field + "\"");
this.readonly(sb);
//增加扩展属性
if (!StringUtils.isBlank(this.extendJson)) {
Gson gson = new Gson();
Map<String, String> mp = gson.fromJson(extendJson, Map.class);
for(Map.Entry<String, String> entry: mp.entrySet()) {
sb.append(" "+entry.getKey()+"=\"" + entry.getValue() + "\"");
}
sb.append(this.getExtendJsonCommon(extendJson));
}
this.readonly(sb);
if (!StringUtils.isBlank(this.id)) {
sb.append(" id=\"" + id + "\"");
}
this.datatype(sb);
sb.append(">");
select("common.please.select", "", sb);
for (TSType type : types) {
select(type.getTypename(), type.getTypecode(), sb);
}
@ -205,6 +205,32 @@ public class DictSelectTag extends TagSupport {
return sb;
}
private StringBuffer getExtendJsonCommon(String extendJson){
Gson gson = new Gson();
Map<String, String> mp = gson.fromJson(extendJson, Map.class);
StringBuffer sb=new StringBuffer();
for(Map.Entry<String, String> entry: mp.entrySet()) {
//判断select标签中是否含有style属性
if(entry.getKey().equals("style")){
//并且readonly属性不为空
if(StringUtils.isNotBlank(readonly) &&readonly.equals("readonly")){
//拼接Style属性
String entryValue = entry.getValue() + ";background-color:#eee;cursor:no-drop;";
//把拼接好的属性加入到sb字符串中
sb.append(entry.getKey()+"=\"" + entryValue + "\"");
}else{
//如果readonly属性为空走原来的样式
sb.append(entry.getKey()+"=\"" + entry.getValue() + "\"");
}
}else{
//如果没有Style属性的话走原来的方法readonly属性在下边readonly方法中已经默认添加了样式
sb.append(entry.getKey()+"=\"" + entry.getValue() + "\"");
}
}
return sb;
}
/**
*
* @param name
@ -229,31 +255,25 @@ public class DictSelectTag extends TagSupport {
* @param sb
*/
private void radio(String name, String code, StringBuffer sb) {
if (code.equals(this.defaultVal)) {
sb.append("<input type=\"radio\" name=\"" + field
+ "\" checked=\"checked\" value=\"" + code + "\"");
if (!StringUtils.isBlank(this.id)) {
sb.append(" id=\"" + id + "\"");
}
this.readonly(sb);
this.datatype(sb);
sb.append(" />");
if (code.equals(this.defaultVal)) {
sb.append("<input type=\"radio\" name=\"" + field + "\" checked=\"checked\" value=\"" + code + "\"");
} else {
sb.append("<input type=\"radio\" name=\"" + field + "\" value=\""
+ code + "\"");
if (!StringUtils.isBlank(this.id)) {
sb.append(" id=\"" + id + "\"");
}
sb.append("<input type=\"radio\" name=\"" + field + "\" value=\""+ code + "\"");
}
if (!StringUtils.isBlank(this.id)) {
sb.append(" id=\"" + id + "\"");
}
this.readonly(sb);
this.readonly(sb);
this.datatype(sb);
sb.append(" />");
this.datatype(sb);
if (!StringUtils.isBlank(this.extendJson)) {
sb.append(this.getExtendJsonCommon(extendJson));
}
sb.append(MutiLangUtil.getLang(name));
sb.append(" />");
sb.append(MutiLangUtil.getLang(name)+"&nbsp;&nbsp;");
}
/**
@ -281,30 +301,27 @@ public class DictSelectTag extends TagSupport {
}
checked = false;
}
if(checked){
sb.append("<input type=\"checkbox\" name=\"" + field
+ "\" checked=\"checked\" value=\"" + code + "\"");
if (!StringUtils.isBlank(this.id)) {
sb.append(" id=\"" + id + "\"");
}
this.readonly(sb);
this.datatype(sb);
sb.append(" />");
} else {
sb.append("<input type=\"checkbox\" name=\"" + field
+ "\" value=\"" + code + "\"");
if (!StringUtils.isBlank(this.id)) {
sb.append(" id=\"" + id + "\"");
}
}
if (!StringUtils.isBlank(this.id)) {
sb.append(" id=\"" + id + "\"");
}
this.readonly(sb);
this.readonly(sb);
this.datatype(sb);
sb.append(" />");
this.datatype(sb);
if (!StringUtils.isBlank(this.extendJson)) {
sb.append(" "+this.getExtendJsonCommon(extendJson));
}
sb.append(MutiLangUtil.getLang(name));
sb.append(" />");
sb.append(MutiLangUtil.getLang(name)+"&nbsp;&nbsp;");
}
/**
@ -317,11 +334,21 @@ public class DictSelectTag extends TagSupport {
* @param sb
*/
private void select(String name, String code, StringBuffer sb) {
if (code.equals(this.defaultVal)) {
sb.append(" <option value=\"" + code + "\" selected=\"selected\">");
if(StringUtils.isNotBlank(readonly) &&readonly.equals("readonly")){
sb.append(" <option style=\"display: none;\" value=\"" + code + "\" selected=\"selected\">");
}else{
sb.append(" <option value=\"" + code + "\" selected=\"selected\">");
}
} else {
sb.append(" <option value=\"" + code + "\">");
if(StringUtils.isNotBlank(readonly) &&readonly.equals("readonly")){
sb.append(" <option style=\"display: none;\" value=\"" + code + "\">");
}else{
sb.append(" <option value=\"" + code + "\">");
}
}
sb.append(MutiLangUtil.getLang(name));
sb.append(" </option>");
}
@ -364,20 +391,25 @@ public class DictSelectTag extends TagSupport {
* @return sb
*/
private StringBuffer readonly(StringBuffer sb){
if(!StringUtils.isBlank(readonly) &&readonly.equals("readonly")){
if(StringUtils.isNotBlank(readonly) &&readonly.equals("readonly")){
if ("radio".equals(type)) {
sb.append(" disable= \"disabled\" disabled=\"disabled\" ");
sb.append(" readonly=\"readonly\" style=\"background-color:#eee;cursor:no-drop;\" disabled=\"true\" ");
}
else if ("checkbox".equals(type)) {
sb.append(" disable= \"disabled\" disabled=\"disabled\" ");
sb.append(" readonly=\"readonly\" style=\"background-color:#eee;cursor:no-drop;\" disabled=\"true\" ");
}
else if ("text".equals(type)) {
}
else {
sb.append(" disable= \"disabled\" disabled=\"disabled\" ");
else if("list".equals(type)){
sb.append(" readonly=\"readonly\" style=\"background-color:#eee;cursor:no-drop;\" ");
}else{
sb.append(" readonly=\"readonly\" style=\"background-color:#eee;cursor:no-drop;\" ");
}
}
return sb;
}

@ -5,20 +5,19 @@ import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import org.jeecgframework.core.enums.SysThemesEnum;
import org.jeecgframework.core.util.ContextHolderUtils;
import org.jeecgframework.core.util.EhcacheUtil;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.core.util.SysThemesUtil;
import org.jeecgframework.tag.core.JeecgTag;
/**
*
* @author
*
*/
public class FormValidationTag extends JeecgTag {
public class FormValidationTag extends TagSupport {
private static final long serialVersionUID = 8360534826228271024L;
protected String formid = "formobj";// 表单FORM ID
protected Boolean refresh = true;
@ -80,38 +79,12 @@ public class FormValidationTag extends JeecgTag {
public void setAction(String action) {
this.action = action;
}
/**
* key
* @param key
* @return
*/
public StringBuffer getTagCache(String key){
return (StringBuffer) EhcacheUtil.get(EhcacheUtil.TagCache, key);
}
/**
*
* @param key
* @param tagCache
*/
public void putTagCache(String key, StringBuffer tagCache){
EhcacheUtil.put(EhcacheUtil.TagCache, key, tagCache);
}
public int doStartTag() throws JspException {
JspWriter out = null;
StringBuffer sb = this.getTagCache("doStartTag"+"_"+toString());
try {
out = this.pageContext.getOut();
if(sb != null){
out.print(sb.toString());
out.flush();
return EVAL_PAGE;
}
sb = new StringBuffer();
StringBuffer sb = new StringBuffer();
/*// if(cssTheme==null){//手工设置值优先
Cookie[] cookies = ((HttpServletRequest) super.pageContext
.getRequest()).getCookies();
@ -139,9 +112,7 @@ public class FormValidationTag extends JeecgTag {
sb.append(" action=\"" + action + "\" name=\"" + formid + "\" method=\"post\">");
if ("btn_sub".equals(btnsub) && dialog)
sb.append("<input type=\"hidden\" id=\"" + btnsub + "\" class=\"" + btnsub + "\"/>");
this.putTagCache("doStartTag"+"_"+toString(), sb);
out.print(sb.toString());
out.flush();
} catch (IOException e) {
@ -158,18 +129,12 @@ public class FormValidationTag extends JeecgTag {
public int doEndTag() throws JspException {
StringBuffer sb = null;
String lang = (String)((HttpServletRequest) this.pageContext.getRequest()).getSession().getAttribute("lang");
StringBuffer sb = this.getTagCache("doEndTag"+"_"+lang+"_"+toString());
JspWriter out = null;
try {
out = this.pageContext.getOut();
if(sb != null){
out.print(sb.toString());
out.flush();
return EVAL_PAGE;
}
SysThemesEnum sysThemesEnum = null;
if(StringUtil.isEmpty(cssTheme)||"null".equals(cssTheme)){
sysThemesEnum = SysThemesUtil.getSysTheme((HttpServletRequest) super.pageContext.getRequest());
@ -378,20 +343,17 @@ public class FormValidationTag extends JeecgTag {
}
sb.append("</div></div>");
}
this.putTagCache("doEndTag"+"_"+lang+"_"+toString(), sb);
out.print(sb.toString());
out.flush();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
// sb.setLength(0);
// sb = null;
out.clearBuffer();
if(sb!=null){
sb.setLength(0);
sb=null;
}
} catch (Exception e2) {
}
}

@ -52,6 +52,11 @@ public class HasPermissionTag extends TagSupport{
return true;
}
}
}else{
//包含权限规则修改,查询不到配置则不显示;
return true;
}
}
return false;

@ -0,0 +1,327 @@
package org.jeecgframework.tag.core.easyui;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import org.jeecgframework.core.constant.Globals;
import org.jeecgframework.core.enums.MenuButtonsEnum;
import org.jeecgframework.core.online.util.FreemarkerHelper;
import org.jeecgframework.core.util.ApplicationContextUtil;
import org.jeecgframework.core.util.ResourceUtil;
import org.jeecgframework.core.util.oConvertUtils;
import org.jeecgframework.web.system.pojo.base.TSOperation;
import org.jeecgframework.web.system.service.SystemService;
/**
*
* @Title:MenuButtonTag
* @description:JSP
* @version V1.0
* name-code
* 1.
* 2.
* 3.
*/
public class MenuButtonsTag extends TagSupport{
private static final long serialVersionUID = 1L;
/**控件name-唯一标识*/
private String name;
/**
* ALL
*/
private String codes;
/**
*
*/
private boolean notIn = false;
/**
* mainMenu
*/
private boolean mm = false;
private boolean group = false;
private boolean superQuery = false;
private SystemService systemService;
public int doStartTag() throws JspException {
return super.doStartTag();
}
public int doEndTag() throws JspTagException {
JspWriter out = null;
try {
out = this.pageContext.getOut();
out.print(end());
out.flush();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(out!=null){
try {
out.clear();
out.close();
} catch (Exception e) {
}
}
}
return EVAL_PAGE;
}
private String end(){
if(oConvertUtils.isEmpty(codes)){
return "";
}
StringBuffer sb = new StringBuffer();
List<String> optcodes = null;
boolean flag = false;
if(ResourceUtil.getSessionUser().getUserName().equals("admin")|| !Globals.BUTTON_AUTHORITY_CHECK){
flag = true;
}else{
optcodes= getOperationcodes();
if(optcodes==null || optcodes.size()<=0){
flag = true;
}
}
if(superQuery){
addAdvancedQuery(sb, codes, name);
}
if(codes.equals("ALL")){
//所有菜单均加载
MenuButtonsEnum[] menuArr = MenuButtonsEnum.values();
for (int k = menuArr.length;k>0;k--) {
MenuButtonsEnum menu = menuArr[k-1];
if(flag){
initMenu(sb, menu);
}else{
if(hasAuth(menu.getCode(), optcodes)){
initMenu(sb, menu);
}
}
}
}else{
if(isNotIn()){
//加载非
MenuButtonsEnum[] menuArr = MenuButtonsEnum.values();
for (int k = menuArr.length;k>0;k--) {
MenuButtonsEnum menu = menuArr[k-1];
//TODO 用的是indexOf有隐患
if(codes.indexOf(menu.getCode())<0){
if(flag){
initMenu(sb, menu);
}else{
if(hasAuth(menu.getCode(), optcodes)){
initMenu(sb, menu);
}
}
}
}
}else{
String[] codeArr = codes.split(",");
for (int i = codeArr.length;i>0;i--) {
String c = codeArr[i-1];
MenuButtonsEnum menu = MenuButtonsEnum.getMenuByCode(c);
if(menu==null){
continue;
}
if(flag){
initMenu(sb, menu);
}else{
if(hasAuth(c , optcodes)){
initMenu(sb, menu);
}
}
}
}
}
//System.out.println(name+"--"+sb.toString());
if(this.group){
loadGroupJs(sb);
}
return sb.toString();
}
/**
* HTML
* @param sb
* @param menu
*/
private void initMenu(StringBuffer sb,MenuButtonsEnum menu){
if(!"superQuery".equals(menu.getFun())){
String arg = mm?"1":"";
if(menu.getCode().contains("group")){
this.group=true;
String funs[] = menu.getFun().split("&");
String titles[] = menu.getTitle().split("&");
String icons[] = menu.getIcon().split("&");
sb.append("<div class='awesome-group'>");
sb.append("<a onclick='"+funs[0]+"("+arg+")' href='####' class='withicon group-btn lefticon "+icons[icons.length-1]+"'></a>");
//<a onclick='showTabDorpdownMenuty(this)' href='####' class='withicon group-btn righticon fa fa-caret-down'></a>
sb.append("<ul class='awe-group-dropdown'>");
for (int i=0;i<funs.length;i++) {
sb.append("<li><a onclick='"+funs[i]+"("+arg+")' href='####' title='"+titles[i]+"' class='withmenu group-btn "+icons[i]+"'></a></li>");
}
sb.append("</ul></div>");
}else{
sb.append("<a onclick=\""+menu.getFun()+"("+arg+")\" href=\"####\" class=\"btn-menu "+menu.getIcon()+" menu-more\" title=\""+menu.getTitle()+"\"></a>");
}
}
}
/**
* js
* @param sb
*/
private void loadGroupJs(StringBuffer sb){
//sb.append("<script>function showTabDorpdownMenuty(obj){$(obj).parent('.awesome-group').addClass('dropdown');}$('.awesome-group .righticon').hover(function(){$(this).parent('.awesome-group').addClass('dropdown');");
sb.append("<script>$('.awesome-group .lefticon').hover(function(){$(this).parent('.awesome-group').addClass('dropdown');");
sb.append("},function(){});$('.awesome-group').hover(function(){$(this).addClass('active');},function(){$(this).removeClass('active');$(this).removeClass('dropdown');});</script>");
}
/**
* code
* @param code
* @param optcodes
* @return
*/
public boolean hasAuth(String code,List<String> optcodes) {
//该request中获取的code list是配置了但未经授权的 所以这里要取反
return !optcodes.contains(name+"-"+code);
}
/**
* code
* @return
*/
private List<String> getOperationcodes(){
//权限判断
List<String> list = new ArrayList<String>();
Set<String> operationCodeIds = (Set<String>) super.pageContext.getRequest().getAttribute(Globals.OPERATIONCODES);
systemService = ApplicationContextUtil.getContext().getBean(SystemService.class);
if (null!=operationCodeIds) {
for (String operationCodeId : operationCodeIds) {
if (oConvertUtils.isEmpty(operationCodeId))
continue;
TSOperation operation = systemService.getEntity(TSOperation.class, operationCodeId);
if(operation!=null){
list.add(operation.getOperationcode());
}
}
}
return list;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the codes
*/
public String getCodes() {
return codes;
}
/**
* @param codes the codes to set
*/
public void setCodes(String codes) {
this.codes = codes;
}
/**
* @return the notIn
*/
public boolean isNotIn() {
return notIn;
}
/**
* @param notIn the notIn to set
*/
public void setNotIn(boolean notIn) {
this.notIn = notIn;
}
/**
* @return the mm
*/
public boolean isMm() {
return mm;
}
/**
* @param mm the mm to set
*/
public void setMm(boolean mm) {
this.mm = mm;
}
/**
* @return the group
*/
public boolean isGroup() {
return group;
}
/**
* @param group the group to set
*/
public void setGroup(boolean group) {
this.group = group;
}
/**
* @return the superQuery
*/
public boolean isSuperQuery() {
return superQuery;
}
/**
* @param superQuery the superQuery to set
*/
public void setSuperQuery(boolean superQuery) {
this.superQuery = superQuery;
}
/**
*
* @param sb
*/
private void addAdvancedQuery(StringBuffer sb,String queryCode,String tableName) {
MenuButtonsEnum menu = MenuButtonsEnum.getMenuByCode("superQuery");
sb.append("<a title=\""+menu.getTitle()+"\" onclick=\"superQuery('"+codes+"')\" href=\"####\" class=\"btn-menu "+menu.getIcon()+" menu-more\" ></a>");
FreemarkerHelper free = new FreemarkerHelper();
Map<String, Object> mainConfig = new HashMap<String, Object>();
mainConfig.put("queryCode", queryCode);
mainConfig.put("tableName", tableName);
String complexSuperQuery = free.parseTemplate("/org/jeecgframework/tag/ftl/complexSuperQueryForPage.ftl", mainConfig);
appendLine(sb,complexSuperQuery);
}
private void appendLine(StringBuffer sb,String str) {
String format = "\r\n"; //调试 格式化
sb.append(str).append(format);
}
}

@ -66,11 +66,13 @@ public class MenuTag extends JeecgTag {
}finally{
try {
out.clearBuffer();
//添加缓存后,不需要清空,并且清空后会对缓存造成影响
// if(endString != null){
// endString.setLength(0);
// }
//end().setLength(0);
} catch (Exception e2) {
}
}

@ -139,9 +139,11 @@ public class OrgSelectTag extends TagSupport {
if(StringUtils.isBlank(inputWidth)){
inputWidth = "150px";
}
if(StringUtils.isBlank(windowWidth)){
windowWidth = "660px";
}
if(StringUtils.isBlank(windowHeight)){
windowHeight = "350px";

@ -24,6 +24,12 @@ public class SelectZTreeTag extends TagSupport {
private String url;
private String windowWidth; //窗口宽度
private String windowHeight; //窗口高度
private boolean selectCascadeParent = false; //勾选时选择父节点
private boolean selectCascadeChildren = false; //勾选时选择子节点
private boolean cancelCascadeParent = false; //取消勾选时选择父节点
private boolean cancelCascadeChildren = false; //取消勾选时选择子节点
public String getUrl() {
return url;
}
@ -55,7 +61,39 @@ public class SelectZTreeTag extends TagSupport {
public void setWindowHeight(String windowHeight) {
this.windowHeight = windowHeight;
}
public boolean getSelectCascadeParent() {
return selectCascadeParent;
}
public void setSelectCascadeParent(boolean selectCascadeParent) {
this.selectCascadeParent = selectCascadeParent;
}
public boolean getSelectCascadeChildren() {
return selectCascadeChildren;
}
public void setSelectCascadeChildren(boolean selectCascadeChildren) {
this.selectCascadeChildren = selectCascadeChildren;
}
public boolean getCancelCascadeParent() {
return cancelCascadeParent;
}
public void setCancelCascadeParent(boolean cancelCascadeParent) {
this.cancelCascadeParent = cancelCascadeParent;
}
public boolean getCancelCascadeChildren() {
return cancelCascadeChildren;
}
public void setCancelCascadeChildren(boolean cancelCascadeChildren) {
this.cancelCascadeChildren = cancelCascadeChildren;
}
public int doStartTag() throws JspTagException {
return EVAL_PAGE;
}
@ -136,9 +174,25 @@ public class SelectZTreeTag extends TagSupport {
+ " enable: true,"
+ "}, "
+ " check: {"
+ " enable: true,"
+ " chkboxType: {'Y':'', 'N':''}"
+ " },"
+ " enable: true,");
sb.append("chkboxType: {'Y':'");
if(selectCascadeParent) {
sb.append("p");
}
if(selectCascadeChildren) {
sb.append("s");
}
sb.append("','N':'");
if(cancelCascadeParent) {
sb.append("p");
}
if(cancelCascadeChildren) {
sb.append("s");
}
sb.append("'}");
sb.append("},"
+ " view: {"
+ " dblClickExpand: false"
+ " },"

@ -167,6 +167,7 @@ public class TabsTag extends JeecgTag {
sb.append("</script>");
}
if (tabs) {
//增加width属性fit属性之前写死改为由页面设定不填默认true
sb.append("<div id=\"" + id + "\" tabPosition=\"" + tabPosition + "\" border=flase style=\"margin:0px;padding:0px;overflow-x:hidden;width:"+oConvertUtils.getString(width, "auto")+";\" class=\"easyui-tabs\" fit=\""+fit+"\">");
if (!iframe) {
@ -184,6 +185,7 @@ public class TabsTag extends JeecgTag {
}
}
sb.append("</div>");
}
this.putTagCache(sb);

@ -3,11 +3,13 @@ package org.jeecgframework.tag.core.easyui;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.Field;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.apache.fop.layout.Page;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;

@ -35,6 +35,8 @@ public class TreeSelectTag extends TagSupport {
private String code;
private String formStyle;//表单风格 ace default
@Autowired
private SystemService systemService;
@ -72,7 +74,9 @@ public class TreeSelectTag extends TagSupport {
* @param resultSb
*/
private void textInput(StringBuffer resultSb) {
resultSb.append("<input type=\"text\" style=\"width: 150px\" ");
resultSb.append("<input type=\"text\" ");
if(StringUtil.isNotEmpty(inputClass)){
resultSb.append("class=\""+inputClass+"\" ");
}else{
@ -186,8 +190,16 @@ public class TreeSelectTag extends TagSupport {
resultSb.append("var deptObj = $(\"#" + field + "Text\"); ");
resultSb.append("var deptOffset = $(\"#"+field+"Text\").offset();");
}
resultSb.append(" $(\"#show"+StringUtil.firstUpperCase(field)+"TreeContent\").css({left:deptOffset.left + \"px\", top:deptOffset.top + deptObj.outerHeight() + \"px\"}).slideDown(\"fast\"); ");
resultSb.append("$('#show"+StringUtil.firstUpperCase(field)+"Tree').css({width:deptObj.outerWidth() - 12 + \"px\"}); ");
if("ace".equals(formStyle)){
resultSb.append(" $(\"#show"+StringUtil.firstUpperCase(field)+"TreeContent\").css({top:(deptObj[0].offsetTop + deptObj.outerHeight()) + \"px\"}).slideDown(\"fast\"); ");
resultSb.append("$('#show"+StringUtil.firstUpperCase(field)+"Tree').css({width:deptObj.outerWidth() - 2 + \"px\"}); ");
}else{
resultSb.append(" $(\"#show"+StringUtil.firstUpperCase(field)+"TreeContent\").css({left:deptOffset.left + 'px', top:deptOffset.top + deptObj.outerHeight() + 'px'}).slideDown(\"fast\"); ");
resultSb.append("$('#show"+StringUtil.firstUpperCase(field)+"Tree').css({width:deptObj.outerWidth() - 12 + \"px\"}); ");
}
resultSb.append(" var zTree = $.fn.zTree.getZTreeObj(\"show"+StringUtil.firstUpperCase(field)+"Tree\"); ");
if(StringUtil.isNotEmpty(id)){
resultSb.append("var idVal = $(\"#"+id+"\").val();");
@ -212,8 +224,25 @@ public class TreeSelectTag extends TagSupport {
}
private void getCheckFunction(StringBuffer resultSb) {
resultSb.append("function " + field + "OnCheck(e, treeId, treeNode) {");
if(StringUtil.isNotEmpty(id)){
resultSb.append(" var myTree = $.fn.zTree.getZTreeObj(\"show"+StringUtil.firstUpperCase(field)+"Tree\"); ");
resultSb.append("var nodes = myTree.getCheckedNodes(true);var tempId='',tempText='';");
resultSb.append("if(nodes && nodes.length>0){for(var a in nodes){tempId+=nodes[a].id+',';tempText+=nodes[a].text+',';}}");
resultSb.append("if(tempId ==''){");
if(StringUtil.isEmpty(id)){
resultSb.append("$('#"+field+"').val(''); }else{$('#"+field+"').val(tempId.substring(0,tempId.length - 1));}");
}else{
resultSb.append("$('#"+id+"').val(''); }else{$('#"+id+"').val(tempId.substring(0,tempId.length - 1));}");
}
resultSb.append("if(tempText ==''){");
if(StringUtil.isEmpty(id)){
resultSb.append("$('#"+field+"Text').val(''); }else{$('#"+field+"Text').val(tempText.substring(0,tempText.length - 1));}");
}else{
resultSb.append("$('#"+id+"Text').val(''); }else{$('#"+id+"Text').val(tempText.substring(0,tempText.length - 1));}");
}
/*if(StringUtil.isNotEmpty(id)){
resultSb.append("var idVal = $(\"#"+id+"\").val();");
resultSb.append(" var textVal = $(\"#"+id+"Text\").val();");
}else{
@ -271,7 +300,8 @@ public class TreeSelectTag extends TagSupport {
resultSb.append("$(\"#"+field+"Text\").val(textVal);");
resultSb.append(" $(\"#"+field+"\").val(idVal);");
}
resultSb.append("}");
resultSb.append("}");*/
resultSb.append(" e.stopPropagation();");
resultSb.append("}");
}
@ -288,6 +318,10 @@ public class TreeSelectTag extends TagSupport {
resultSb.append("var "+field+"Setting = {");
resultSb.append("check: {");
resultSb.append("enable: true");
resultSb.append(",chkStyle:'checkbox',chkboxType: { 'Y': '', 'N': '' }");
resultSb.append("},");
resultSb.append("view: {dblClickExpand: false},");
resultSb.append("data: {simpleData: { enable: true }, key:{name:'text' }},");
@ -404,7 +438,13 @@ public class TreeSelectTag extends TagSupport {
public void setCode(String code) {
this.code = code;
}
public String getFormStyle() {
return formStyle;
}
public void setFormStyle(String formStyle) {
this.formStyle = formStyle;
}
}

@ -39,7 +39,9 @@ public class UploadTag extends JeecgTag {
protected String formId;//参数名称
private boolean outhtml = true;
private String onUploadStart;//上传开始处理函数
public boolean isOuthtml() {
return outhtml;
}
@ -94,6 +96,13 @@ public class UploadTag extends JeecgTag {
public void setName(String name) {
this.name = name;
}
public String getOnUploadStart() {
return onUploadStart;
}
public void setOnUploadStart(String onUploadStart) {
this.onUploadStart = onUploadStart;
}
@SuppressWarnings("unchecked")
public int doStartTag() throws JspTagException {
@ -144,9 +153,10 @@ public class UploadTag extends JeecgTag {
if(outhtml){
sb.append("<link rel=\"stylesheet\" href=\"plug-in/uploadify/css/uploadify.css\" type=\"text/css\"></link>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/uploadify/jquery.uploadify-3.1.js\"></script>");
}
sb.append("<script type=\"text/javascript\" src=\"plug-in/tools/Map.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/tools/Map.js\"></script>");
}
sb.append("<script type=\"text/javascript\">"
+"var flag = false;"
@ -169,49 +179,53 @@ public class UploadTag extends JeecgTag {
+"swf:\'plug-in/uploadify/uploadify.swf\', "
+"uploader:\'"+getUploader()
+"onUploadStart : function(file) { ");
if (formData!=null) {
String[] paramnames=formData.split(",");
for (int i = 0; i < paramnames.length; i++) {
String paramname=paramnames[i];
String fieldName = paramname;
if(paramname.indexOf("_")> -1 ){
fieldName = paramname.substring(0, paramname.indexOf("_"));
}
sb.append("var "+fieldName+"=$(\'#"+paramname+"\').val();");
}
sb.append("$(\'#"+id+"\').uploadify(\"settings\", \"formData\", {");
for (int i = 0; i < paramnames.length; i++) {
String paramname=paramnames[i];
if(paramname.indexOf("_")> -1 ){
paramname = paramname.substring(0, paramname.indexOf("_"));
}
if (i==paramnames.length-1) {
sb.append("'"+paramname+"':"+paramname+"");
}else{
sb.append("'"+paramname+"':"+paramname+",");
if(onUploadStart==null || "".equals(onUploadStart)){
if (formData!=null) {
String[] paramnames=formData.split(",");
for (int i = 0; i < paramnames.length; i++) {
String paramname=paramnames[i];
String fieldName = paramname;
if(paramname.indexOf("_")> -1 ){
fieldName = paramname.substring(0, paramname.indexOf("_"));
}
sb.append("var "+fieldName+"=$(\'#"+paramname+"\').val();");
}
sb.append("$(\'#"+id+"\').uploadify(\"settings\", \"formData\", {");
for (int i = 0; i < paramnames.length; i++) {
String paramname=paramnames[i];
if(paramname.indexOf("_")> -1 ){
paramname = paramname.substring(0, paramname.indexOf("_"));
}
if (i==paramnames.length-1) {
sb.append("'"+paramname+"':"+paramname+"");
}else{
sb.append("'"+paramname+"':"+paramname+",");
}
}
sb.append("});");
}else if (formId!=null) {
sb.append(" var o = {};");
sb.append(" var _array = $('#"+formId+"').serializeArray();");
sb.append(" $.each(_array, function() {");
sb.append(" if (o[this.name]) {");
sb.append(" if (!o[this.name].push) {");
sb.append(" o[this.name] = [ o[this.name] ];");
sb.append(" }");
sb.append(" o[this.name].push(this.value || '');");
sb.append(" } else {");
sb.append(" o[this.name] = this.value || '';");
sb.append(" }");
sb.append(" });");
sb.append("$(\'#"+id+"\').uploadify(\"settings\", \"formData\", o);");
}
sb.append("});");
}else if (formId!=null) {
sb.append(" var o = {};");
sb.append(" var _array = $('#"+formId+"').serializeArray();");
sb.append(" $.each(_array, function() {");
sb.append(" if (o[this.name]) {");
sb.append(" if (!o[this.name].push) {");
sb.append(" o[this.name] = [ o[this.name] ];");
sb.append(" }");
sb.append(" o[this.name].push(this.value || '');");
sb.append(" } else {");
sb.append(" o[this.name] = this.value || '';");
sb.append(" }");
sb.append(" });");
sb.append("$(\'#"+id+"\').uploadify(\"settings\", \"formData\", o);");
};
}else{
sb.append(this.onUploadStart+"(file);");
}
sb.append("} ,"
+"onQueueComplete : function(queueData) { ");

@ -158,15 +158,56 @@ public class WebUploaderTag extends TagSupport {
sb.append("\r\nvar imgDelReq=function(delpath,spanobj){$.post('"+url+"',{path:delpath,isdel:\"1\"},function(aj){var data=JSON.parse(aj);if(data.success){reset_"+name+"_dataTypeInpVal(0);exsitPathArr_"+name+".removeItem(delpath);$list.children('.fordel').children('input').val(exsitPathArr_"+name+".join(','));var myimgli=$(spanobj).closest('li');myimgli.off().find('.hidetitle').off().end().remove();}});}\r\n");
sb.append("var "+name+"addFile=function(file,filepath){\r\nuploader.makeThumb(file, function(error,src) {\r\nif(error){return false;}\r\nif(isSupportBase64()){if(filepath==''){"+name+"addImgli(src,file.id,0,0);}\r\n}else if(filepath!=''){\r\nvar actSrc=\""+showAndDownUrl+"\"+filepath;\r\n"+name+"addImgli(actSrc,file.id,0,0);}}, thumbnailWidth, thumbnailHeight );}");
sb.append("\r\nvar updatetdState=function(id,content){$list.children('table').find('#"+name+"'+id).find('.state').text('--'+content+'--');}\r\n");
if(fileNumLimit==1){
if(auto){
sb.append("var "+name+"_oneLimit = 0;");
}
if("image".equals(type)){
sb.append("uploader.on('beforeFileQueued',function(file){");
if(auto){
//限制一次性多选图片
sb.append("if("+name+"_oneLimit>=1){return false;}else{"+name+"_oneLimit++;};");
}
//图片类型,先隐藏预览区之前的图片
sb.append("var currLi=$('#"+showImgDiv+">ul').find('li:last');if(currLi.length>0){currLi.addClass('wait-remove');var abcfile=currLi.find('img').attr('name');if(abcfile.indexOf('name')==0){}else{abcfile=abcfile.substring(0,abcfile.length-3);uploader.removeFile(abcfile)}}});");
}else{
sb.append("uploader.on('beforeFileQueued',function(file){");
if(auto){
//限制一次性多选图片
sb.append("if("+name+"_oneLimit>=1){return false;}else{"+name+"_oneLimit++;};");
}
//文件类型,先隐藏列表区之前的图片
sb.append("var currLi=$('#"+name+"thelist>table').find('tr.item:last');if(currLi.length>0){currLi.addClass('wait-remove');var abcfile=currLi[0].id;if(abcfile.indexOf('id')==0){}else{abcfile=abcfile.substring("+name.length()+");uploader.removeFile(abcfile)}}});");
}
}
//当文件被加入队列以后触发。
sb.append("uploader.on( 'fileQueued', function( file ) {"//'+file.name+'---等待上传---</span>
+"var id='"+name+"'+file.id;var name=file.name;var text='--等待上传--';addtrFile(id,name,text,0,0);"+name+"addFile(file,'');\r\n"
+"});");
//上传过程中触发,携带上传进度。
sb.append(" uploader.on( 'uploadProgress', function( file, percentage ) {var $li = $('#"+name+"'+file.id+' td:last'),$percent = $li.find('.progress .progress-bar');if ( !$percent.length ) {$percent = $('<div class=\"progress progress-striped active\"><div class=\"progress-bar\" role=\"progressbar\" style=\"width: 0%\"></div></div>').appendTo($li).find('.progress-bar');}updatetdState(file.id,'上传中');$percent.css( 'width', percentage * 100 + '%' );});");
//当文件上传成功时触发会给表单增加一个input赋值 filePath
sb.append("uploader.on( 'uploadSuccess', function(file,response) {if(response.success){updatetdState(file.id,'上传成功');reset_"+name+"_dataTypeInpVal(1);"
+"var filepath=response['"+name+"']||response.obj;$('#"+name+"'+file.id+' td:first').append('<input type=\"hidden\" name=\""+name+"\" value=\"'+filepath+'\" />');"+name+"addFile(file, filepath);}else{updatetdState(file.id,'上传出错'+response.msg);}});\r\n");
+"var filepath=response['"+name+"']||response.obj;$('#"+name+"'+file.id+' td:first').append('<input type=\"hidden\" name=\""+name+"\" value=\"'+filepath+'\" />');"+name+"addFile(file, filepath);");
if(fileNumLimit==1){
if(auto){
//上传完成 限制放开
sb.append(name+"_oneLimit = 0;");
}
//上传完成,删除旧的文件
if("image".equals(type)){
sb.append("$('#"+showImgDiv+">ul').find('li.wait-remove').find('.titledel').click()");
}else{
sb.append("$('#"+name+"thelist>table').find('tr.wait-remove').find('.del').click()");
}
}
sb.append("}else{updatetdState(file.id,'上传出错'+response.msg);}});\r\n");
//上传失败
sb.append("uploader.on( 'uploadError', function( file,reason ) {updatetdState(file.id,'上传出错-code:'+reason);});");
//当validate不通过时会以派送错误事件的形式通知调用者。

@ -0,0 +1,21 @@
package org.jeecgframework.tag.core.factory;
import java.util.HashMap;
import java.util.Map;
import org.jeecgframework.core.util.MutiLangUtil;
import org.jeecgframework.tag.core.easyui.DataGridTag;
import org.jeecgframework.tag.core.factory.util.ComponentTools;
public class BootstrapTableComponent extends ComponentFactory{
@Override
protected Map<String, Object> getData(DataGridTag dataGridTag) {
Map<String, Object> data = new HashMap<String, Object>();
data.put("dataGrid", dataGridTag);
data.put("ComponentTools", new ComponentTools());
data.put("MutiLangUtil", new MutiLangUtil());
return data;
}
}

@ -0,0 +1,26 @@
package org.jeecgframework.tag.core.factory;
import java.util.Map;
import org.jeecgframework.core.online.util.FreemarkerHelper;
import org.jeecgframework.tag.core.easyui.DataGridTag;
/**
*
* @author zhoujf
* @version V1.0
*/
public abstract class ComponentFactory {
public String invoke(String templatePath,DataGridTag dataGridTag) throws Exception {
FreemarkerHelper free = new FreemarkerHelper();
Map<String, Object> data = getData(dataGridTag);
String content = free.parseTemplate(templatePath, data);
return content;
}
protected abstract Map<String, Object> getData(DataGridTag dataGridTag);
}

@ -0,0 +1,99 @@
<#if po.field??>
,{field:'${po.field}'
,title:'${po.title}'
<#if po.hidden>
,visible:false,cardVisible:false
</#if>
,valign: 'middle'
<#if po.width??>
,width:${po.width}
</#if>
<#if po.align??>
,align:'${po.align}'
</#if>
<#if po.rowspan??>
,rowspan:'${po.rowspan}'
</#if>
<#if po.sortable>
,sortable:${po.sortable}
</#if>
<#if po.formatterjs??>
,formatter:function(value,row,index){
return ${po.formatterjs}(value,row,index);
}
<#else>
<#if po.popup>
<#elseif po.replace??>
,formatter:function(value,row,index){
<#list po.replace?split(",") as str>
if(value =='${str?split("_")[1]}'){
return '${MutiLangUtil.getLang(str?split("_")[0])}';
}
</#list>
return value;
}
<#elseif po.dictionary??>
<#if po.dictionary?index_of(",")!=-1>
,formatter:function(value,row,index){
<#list ComponentTools.getTableDictData(po) as dict>
if(value =='${dict.field}'){
return '${MutiLangUtil.getLang(dict.text)}';
}
</#list>
return value;
}
<#else>
,formatter:function(value,row,index){
<#list ComponentTools.getDictData(po) as dict>
if(value =='${dict.typecode}'){
return '${MutiLangUtil.getLang(dict.typename)}';
}
</#list>
return value;
}
</#if>
<#elseif po.image>
<#if po.imageSize??>
,formatter:function(value,row,index){
return '<img width="${po.imageSize?split(",")[0]}" '
+'height="${po.imageSize?split(",")[1]}" '
+'border="0" '
+'onclick="tipImg(this)" '
+'src="'+value+'"/>';
}
<#else>
,formatter:function(value,row,index){
return '<img border="0" src="'+value+'"/>';}
}
</#if>
<#elseif po.downloadName??>
<#elseif po.url??>
,formatter:function(value,row,index){
var href="<a style='color:red' href='#' onclick=${po.funname}('${po.title}','${ComponentTools.formatUrlPlus(po.url)}')>\";
}
<#elseif po.formatter??>
,formatter:function(value,row,index){
return new Date().format('${po.formatter}',value);
}
<#elseif po.showLen??>
,formatter:function(value,row,index){
if(value==undefined) {return ''}
if(value.length<=${po.showLen}) {
return value
}else{
return '<span title= \"'+value+'\">'+ value.substring(0,${po.showLen})+'...</span>';}
}
<#elseif dataGrid.columnValueList?size gt 0>
<#list dataGrid.columnValueList as columnValue>
<#if columnValue.name == po.field>
${ComponentTools.getCellStyle(columnValue)}
</#if>
</#list>
</#if>
</#if>
}
</#if>

@ -0,0 +1,114 @@
<#if dataGrid.queryMode=='group'>
<#if po.query>
<#if po.queryMode=='single'>
<#if po.replace??>
<div class="col-xs-12 col-sm-6 col-md-4">
<label for="${po.field?replace("_","\\.")}">${po.title}</label>
<div class="input-group" style="width:100%">
<select class="form-control input-sm" id="${po.field?replace("_","\\.")}" name="${po.field?replace("_","\\.")}">
<option value ="" >${MutiLangUtil.getLang("common.please.select")}</option>
<#list po.replace?split(",") as str>
<option value ="${str?split("_")[1]}" >${MutiLangUtil.getLang(str?split("_")[0])}</option>
</#list>
</select>
</div>
</div>
<#elseif po.dictionary??>
<#if po.dictionary?index_of(",")!=-1&&po.popup>
<div class="col-xs-12 col-sm-6 col-md-4">
<label for="${po.field}">${po.title}</label>
<div class="input-group" style="width:100%">
<input type="text" class="form-control input-sm" id="${po.field}" name="${po.field}">
</div>
</div>
<#elseif po.dictionary?index_of(",")!=-1&&!po.popup>
<div class="col-xs-12 col-sm-6 col-md-4">
<label for="${po.field?replace("_","\\.")}">${po.title}</label>
<div class="input-group" style="width:100%">
<select class="form-control input-sm" id="${po.field?replace("_","\\.")}" name="${po.field?replace("_","\\.")}">
<option value ="" >${MutiLangUtil.getLang("common.please.select")}</option>
<#list ComponentTools.getTableDictData(po) as dict>
<option value ="${dict.field}" >${dict.text}</option>
</#list>
</select>
</div>
</div>
<#else>
<div class="col-xs-12 col-sm-6 col-md-4">
<label for="${po.field?replace("_","\\.")}">${po.title}</label>
<div class="input-group" style="width:100%">
<select class="form-control input-sm" id="${po.field?replace("_","\\.")}" name="${po.field?replace("_","\\.")}">
<option value ="" >${MutiLangUtil.getLang("common.please.select")}</option>
<#list ComponentTools.getDictData(po) as dict>
<option value ="${dict.typecode}" >${MutiLangUtil.getLang(dict.typename)}</option>
</#list>
</select>
</div>
</div>
</#if>
<#else>
<div class="col-xs-12 col-sm-6 col-md-4">
<label for="${po.field}">${po.title}</label>
<div class="input-group" style="width:100%">
<input type="text" class="form-control input-sm" id="${po.field}" name="${po.field}">
</div>
</div>
<#if po.formatter??>
<script type="text/javascript">
laydate.render({
elem: '#${po.field}',
<#if po.formatter=='yyyy-MM-dd'>
type: 'date',
<#else>
type: 'datetime',
</#if>
trigger: 'click',
ready: function(date){
$("#${po.field}").val(DateJsonFormat(date,this.format));
}
});
</script>
</#if>
</#if>
<#elseif po.queryMode=='group'>
<div class="col-xs-12 col-sm-6 col-md-4">
<label for="${po.field}_begin">${po.title}</label>
<div class="input-group" style="width:100%">
<input type="text" class="form-control input-sm" id="${po.field}_begin" name="${po.field}_begin">
<span class="input-group-addon input-sm" >~</span>
<input type="text" class="form-control input-sm" id="${po.field}_end" name="${po.field}_end">
</div>
</div>
<#if po.formatter??>
<script type="text/javascript">
laydate.render({
elem: '#${po.field}_begin',
<#if po.formatter=='yyyy-MM-dd'>
type: 'date',
<#else>
type: 'datetime',
</#if>
trigger: 'click',
ready: function(date){
$("#${po.field}_begin").val(DateJsonFormat(date,this.format));
}
});
laydate.render({
elem: '#${po.field}_end',
<#if po.formatter=='yyyy-MM-dd'>
type: 'date',
<#else>
type: 'datetime',
</#if>
trigger: 'click',
ready: function(date){
$("#${po.field}_end").val(DateJsonFormat(date,this.format));
}
});
</script>
</#if>
</#if>
</#if>
</#if>

@ -0,0 +1,189 @@
<#if dataGrid.query==true>
<div class="panel-body" style="padding-bottom:0px;">
<!-- 搜索 -->
<div class="accordion-group">
<div id="collapse_search" class="accordion-body collapse">
<div class="accordion-inner">
<div class="panel panel-default" style="margin-bottom: 0px;">
<div class="panel-body" >
<form id="searchForm" class="form form-horizontal" action="" method="post">
<#list dataGrid.columnList as po>
<#if po.query==true>
<#include "bootstrapTable-search.ftl">
</#if>
</#list>
<div class="col-xs-12 col-sm-6 col-md-4">
<div class="input-group col-md-12" style="margin-top:20px">
<a type="button" onclick="searchList();" class="btn btn-primary btn-rounded btn-bordered btn-sm"><span class="glyphicon glyphicon-search" aria-hidden="true"></span> 查询</a>
<a type="button" onclick="searchRest();" class="btn btn-primary btn-rounded btn-bordered btn-sm"><span class="glyphicon glyphicon-repeat" aria-hidden="true"></span> 重置</a>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</#if>
<div class="panel-body" style="padding-top:0px;padding-bottom:0px;">
<!-- toolbar -->
<div id="toolbar">
<#list dataGrid.toolBarList as po>
<button onclick="${po.funname}('${po.title}','${po.url}','${dataGrid.name}',600,400)"
<#if po.icon=="icon-add">
id="btn_add" class="btn btn-primary btn-sm" >
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span>
<#elseif po.icon=="icon-edit">
id="btn_edit" class="btn btn-success btn-sm" >
<span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
<#elseif po.icon=="icon-put">
id="btn_download" class="btn btn-info btn-sm" >
<span class="glyphicon glyphicon-cloud-download" aria-hidden="true"></span>
<#elseif po.icon=="icon-putout">
id="btn_upload" class="btn btn-info btn-sm" >
<span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span>
<#elseif po.icon=="icon-remove">
id="btn_delete" class="btn btn-danger btn-sm" >
<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
<#elseif po.icon=="icon-search">
class="btn btn-info btn-sm" >
<span class="glyphicon glyphicon-search" aria-hidden="true"></span>
<#else>
class="btn btn-info btn-sm" >
<i class="${po.icon}"></i>
</#if>
${po.title}</button>
</#list>
<a class="btn btn-default btn-sm" data-toggle="collapse" href="#collapse_search" id="btn_collapse_search" >
<span class="glyphicon glyphicon-search" aria-hidden="true"></span> 检索 </a>
</div>
<!-- data table -->
<div class="table-responsive">
<!-- class="text-nowrap" 强制不换行 -->
<table id="${dataGrid.name}"></table>
</div>
</div>
<script type="text/javascript">
$(function () {
//1.初始化Table
var oTable = new TableInit();
oTable.Init();
//判断是否选中表格中的数据,选中后可编辑或删除
$('#${dataGrid.name}').on('check.bs.table uncheck.bs.table load-success.bs.table ' +
'check-all.bs.table uncheck-all.bs.table', function () {
$('#btn_delete').prop('disabled', ! $('#${dataGrid.name}').bootstrapTable('getSelections').length);
$('#btn_edit').prop('disabled', $('#${dataGrid.name}').bootstrapTable('getSelections').length!=1);
});
});
var TableInit = function () {
var oTableInit = new Object();
//初始化Table
oTableInit.Init = function () {
$('#${dataGrid.name}').bootstrapTable({
url: '${dataGrid.actionUrl}', //请求后台的URL*
method: 'get', //请求方式(*
toolbar: '#toolbar', //工具按钮用哪个容器
striped: true, //是否显示行间隔色
cache: false, //是否使用缓存默认为true所以一般情况下需要设置一下这个属性*
pagination: true, //是否显示分页(*
sortable: true, //是否启用排序
sortOrder: "asc", //排序方式
queryParams: oTableInit.queryParams,//传递参数(*
sidePagination: "server", //分页方式client客户端分页server服务端分页*
pageNumber:1, //初始化加载第一页,默认第一页
pageSize: 10, //每页的记录行数(*
pageList: [10, 25, 50, 100], //可供选择的每页的行数(*
strictSearch: true,
showColumns: true, //是否显示所有的列
showRefresh: true, //是否显示刷新按钮
minimumCountColumns: 2, //最少允许的列数
clickToSelect: true, //是否启用点击选中行
height : $(window).height()-35, //行高如果没有设置height属性表格自动根据记录条数觉得表格高度
uniqueId: "id", //每一行的唯一标识,一般为主键列
showToggle:true, //是否显示详细视图和列表视图的切换按钮
cardView: false, //是否显示详细视图
detailView: false, //是否显示父子表
showExport: true, //显示到处按钮
columns: [
// 复选框
<#if dataGrid.checkbox==true>
{checkbox: true,align: 'center'},
</#if>
{
title: '序号',
width:5 ,
align:'center',
switchable:false,
formatter:function(value,row,index){
//return index+1; //序号正序排序从1开始
var pageSize=$('#${dataGrid.name}').bootstrapTable('getOptions').pageSize;
var pageNumber=$('#${dataGrid.name}').bootstrapTable('getOptions').pageNumber;
return pageSize * (pageNumber - 1) + index + 1;
}
}
<#list dataGrid.columnList as po>
<#if po.field!="opt">
<#include "bootstrapTable-column.ftl">
<#else>
,{
title: "操作",align: 'center',valign: 'middle',width: ${po.width},
formatter: function (value, row, index) {
<#include "bootstrapTable-opt.ftl">
}
}
</#if>
</#list>
],
onLoadSuccess: function(){ //加载成功时执行
console.info("加载成功");
},
onLoadError: function(){ //加载失败时执行
console.info("加载数据失败");
}
});
};
//得到查询的参数
oTableInit.queryParams = function (params) {
var temp = { //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的
pageSize: params.limit, // 每页要显示的数据条数
offset: params.offset, // 每页显示数据的开始行号
sort: params.sort, // 排序规则
order: params.order,
rows: params.limit, //页面大小
page: (params.offset / params.limit) + 1, //页码
pageIndex:params.pageNumber,//请求第几页
field:'${dataGrid.fields}'
};
var params = $("#searchForm").serializeArray();
for( x in params ){
temp[params[x].name] = params[x].value;
}
return temp;
};
return oTableInit;
};
function searchList(){
reloadTable();
}
function reloadTable(){
$('#${dataGrid.name}').bootstrapTable('refresh');
}
function searchRest(){
$("#searchForm input").val("");
$("#searchForm select").val("");
$("#searchForm .select-item").html("");
reloadTable();
}
</script>

@ -0,0 +1,261 @@
package org.jeecgframework.tag.core.factory.util;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang.StringUtils;
import org.jeecgframework.core.util.ApplicationContextUtil;
import org.jeecgframework.core.util.ResourceUtil;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.tag.core.easyui.DataGridTag;
import org.jeecgframework.tag.core.easyui.TagUtil;
import org.jeecgframework.tag.vo.easyui.ColumnValue;
import org.jeecgframework.tag.vo.easyui.DataGridColumn;
import org.jeecgframework.tag.vo.easyui.DataGridUrl;
import org.jeecgframework.tag.vo.easyui.OptTypeDirection;
import org.jeecgframework.web.system.pojo.base.TSType;
import org.jeecgframework.web.system.service.SystemService;
public class ComponentTools {
private static SystemService systemService;
/**
*
*
* @param sb
*/
public String getOptUrl(DataGridTag dataGridTag) {
StringBuffer sb = new StringBuffer("");
sb.append("if(!row.id){return '';}");
sb.append("var href='';");
List<DataGridUrl> list = dataGridTag.getUrlList();
for (DataGridUrl dataGridUrl : list) {
String url = dataGridUrl.getUrl();
MessageFormat formatter = new MessageFormat("");
if (dataGridUrl.getValue() != null) {
String[] testvalue = dataGridUrl.getValue().split(",");
List value = new ArrayList<Object>();
for (String string : testvalue) {
value.add("\"+row." + string + " +\"");
}
url = formatter.format(url, value.toArray());
}
if (url != null && dataGridUrl.getValue() == null) {
url = formatUrlPlus(url);
}
String exp = dataGridUrl.getExp();// 判断显示表达式
if (StringUtil.isNotEmpty(exp)) {
String[] ShowbyFields = exp.split("&&");
for (String ShowbyField : ShowbyFields) {
int beginIndex = ShowbyField.indexOf("#");
int endIndex = ShowbyField.lastIndexOf("#");
String exptype = ShowbyField.substring(beginIndex + 1, endIndex);// 表达式类型
String field = ShowbyField.substring(0, beginIndex);// 判断显示依据字段
String[] values = ShowbyField.substring(endIndex + 1, ShowbyField.length()).split(",");// 传入字段值
String value = "";
for (int i = 0; i < values.length; i++) {
value += "'" + "" + values[i] + "" + "'";
if (i < values.length - 1) {
value += ",";
}
}
if ("eq".equals(exptype)) {
sb.append("if($.inArray(row." + field + ",[" + value + "])>=0){");
}
if ("ne".equals(exptype)) {
sb.append("if($.inArray(row." + field + ",[" + value + "])<0){");
}
if ("empty".equals(exptype) && value.equals("'true'")) {
sb.append("if(row." + field + "==''){");
}
if ("empty".equals(exptype) && value.equals("'false'")) {
sb.append("if(row." + field + "!=''){");
}
}
}
StringBuffer style = new StringBuffer();
if (!StringUtil.isEmpty(dataGridUrl.getUrlStyle())) {
style.append(" style=\'");
style.append(dataGridUrl.getUrlStyle());
style.append("\' ");
}
StringBuffer urlclass = new StringBuffer();
if(!StringUtil.isEmpty(dataGridUrl.getUrlclass())){
urlclass.append(" class=\'");
urlclass.append(dataGridUrl.getUrlclass());
urlclass.append("\'");
}
StringBuffer urlfont = new StringBuffer();
if(!StringUtil.isEmpty(dataGridUrl.getUrlfont())){
urlfont.append(" <span class=\'");
urlfont.append(dataGridUrl.getUrlfont());
urlfont.append("\' aria-hidden=\'true\'></span>");
}
if (OptTypeDirection.Confirm.equals(dataGridUrl.getType())) {
if(!StringUtil.isEmpty(dataGridUrl.getUrlclass())){
sb.append("href+=\"<button "+urlclass.toString()+" onclick=confirm(\'" + url + "\',\'" + dataGridUrl.getMessage() + "\',\'"+dataGridTag.getName()+"\')" + style.toString() + "> "+urlfont.toString()+" \";");
}else{
sb.append("href+=\"<button class='btn btn-primary btn-xs' onclick=confirm(\'" + url + "\',\'" + dataGridUrl.getMessage() + "\',\'"+dataGridTag.getName()+"\')" + style.toString() + "> \";");
}
}
if (OptTypeDirection.Del.equals(dataGridUrl.getType())) {
if(!StringUtil.isEmpty(dataGridUrl.getUrlclass())){//倘若urlclass不为空则去掉链接前面的"[";
sb.append("href+=\"<button "+urlclass.toString()+" onclick=delObj(\'" + url + "\',\'"+dataGridTag.getName()+"\')" + style.toString() + "> "+urlfont.toString()+" \";");
}else{
sb.append("href+=\"<button class='btn btn-danger btn-xs' onclick=delObj(\'" + url + "\',\'"+dataGridTag.getName()+"\')" + style.toString() + ">\";");
}
}
if (OptTypeDirection.Fun.equals(dataGridUrl.getType())) {
String name = TagUtil.getFunction(dataGridUrl.getFunname());
String parmars = getFunParams(dataGridUrl.getFunname());
if(!StringUtil.isEmpty(dataGridUrl.getUrlclass())){//倘若urlclass不为空则去掉链接前面的"[";
sb.append("href+=\"<button "+urlclass.toString()+" onclick=" + name + "(" + parmars + ")" + style.toString() + "> "+urlfont.toString()+" \";");
}else{
sb.append("href+=\"<button class='btn btn-info btn-xs' onclick=" + name + "(" + parmars + ")" + style.toString() + ">\";");
}
}
if (OptTypeDirection.OpenWin.equals(dataGridUrl.getType())) {
if(!StringUtil.isEmpty(dataGridUrl.getUrlclass())){//倘若urlclass不为空则去掉链接前面的"[";
sb.append("href+=\"<button "+urlclass.toString()+" onclick=openwindow('" + dataGridUrl.getTitle() + "','" + url + "','"+dataGridTag.getName()+"'," + dataGridUrl.getWidth() + "," + dataGridUrl.getHeight() + ")" + style.toString() + "> "+urlfont.toString()+" \";");
}else{
sb.append("href+=\"<button class='btn btn-success btn-xs' onclick=openwindow('" + dataGridUrl.getTitle() + "','" + url + "','"+dataGridTag.getName()+"'," + dataGridUrl.getWidth() + "," + dataGridUrl.getHeight() + ")" + style.toString() + ">\";");
}
} //update-end--Author:liuht Date:20130228 for弹出窗口设置参数不生效
if (OptTypeDirection.Deff.equals(dataGridUrl.getType())) {
if(!StringUtil.isEmpty(dataGridUrl.getUrlclass())){
sb.append("href+=\"<button onclick=\'location.href=" + url + "' "+urlclass.toString()+" title=\'"+dataGridUrl.getTitle()+"\'" + style.toString() + "> "+urlfont.toString()+" \";");
}else{
sb.append("href+=\"<button class='btn btn-default btn-xs' onclick=\'location.href=" + url + "' title=\'"+dataGridUrl.getTitle()+"\'" + style.toString() + ">\";");
}
}
if (OptTypeDirection.OpenTab.equals(dataGridUrl.getType())) {
sb.append("href+=\"<button class='btn btn-primary btn-xs' onclick=addOneTab('" + dataGridUrl.getTitle() + "','" + url + "')>\";");
}
sb.append("href+=\"" + dataGridUrl.getTitle() + "</button>&nbsp;\";");
if (StringUtil.isNotEmpty(exp)) {
for (int i = 0; i < exp.split("&&").length; i++) {
sb.append("}");
}
}
}
sb.append("return href;");
return sb.toString();
}
/**
*
*
* @param functionname
* @return
*/
public String getFunParams(String functionname) {
int index = functionname.indexOf("(");
String param = "";
if (index != -1) {
String testparam = functionname.substring(
functionname.indexOf("(") + 1, functionname.length() - 1);
if (StringUtil.isNotEmpty(testparam)) {
String[] params = testparam.split(",");
for (String string : params) {
param += (string.indexOf("{") != -1) ? ("'\"+"
+ string.substring(1, string.length() - 1) + "+\"',")
: ("'\"+row." + string + "+\"',");
}
}
}
param += "'\"+index+\"'";// 传出行索引号参数
return param;
}
/**
* formatUrl
* #{}{}##
* @param url
* @return
*/
public String formatUrlPlus(String url) {
boolean isTrans = false;
if(url.indexOf("#{") >= 0){
isTrans = true;
url = url.replace("#{", "\"+row.");
url = url.replace("}", "+\"");
}
if(url.indexOf("{") >= 0 && !isTrans){
url = url.replace("{", "\"+row.");
url = url.replace("}", "+\"");
}
if(url.indexOf("#") > 0 && !isTrans){
Pattern p = Pattern.compile("#", Pattern.CASE_INSENSITIVE);
StringBuffer sb = new StringBuffer();
Matcher m = p.matcher(url);
int i = 0;
while(m.find()) {
i++;
if(i %2 == 0){
m.appendReplacement(sb, "+\"");
} else {
m.appendReplacement(sb, "\"+row.");
}
}
m.appendTail(sb);
url = sb.toString();
}
return url;
}
public String getCellStyle(ColumnValue columnValue) {
StringBuffer sb = new StringBuffer("");
String testString = "";
String[] value = columnValue.getValue().split(",");
String[] text = columnValue.getText().split(",");
sb.append(",cellStyle:function(value,row,index){");
if((value.length == 0||StringUtils.isEmpty(value[0]))&&text.length==1){
if(text[0].indexOf("(")>-1){
testString = " return \'" + text[0].replace("(", "(value,row,index") + "\'";
}else{
testString = " return \'" + text[0] + "\'";
}
}else{
for (int j = 0; j < value.length; j++) {
testString += "if(value=='" + value[j] + "'){return \'" + text[j] + "\'}";
}
}
sb.append(testString);
sb.append("}");
return sb.toString();
}
public List<TSType> getDictData(DataGridColumn col){
Map<String, List<TSType>> typedatas = ResourceUtil.allTypes;
List<TSType> types = typedatas.get(col.getDictionary().toLowerCase());
return types;
}
public List<Map<String, Object>> getTableDictData(DataGridColumn col){
String[] dic = col.getDictionary().split(",");
String sql;
if(!StringUtil.isEmpty(col.getDictCondition())){
sql = "select " + dic[1] + " as field," + dic[2]+ " as text from " + dic[0]+" "+col.getDictCondition();
}else{
sql = "select " + dic[1] + " as field," + dic[2]+ " as text from " + dic[0];
}
systemService = ApplicationContextUtil.getContext().getBean(
SystemService.class);
List<Map<String, Object>> list = systemService.findForJdbc(sql);
return list;
}
}

@ -1,4 +1,21 @@
<script type="text/javascript" src="plug-in/tools/curdtools_zh-cn.js"></script>
<style>
.conditionValue {
width:130px;
}
.easyui-linkbutton {
position: relative;
bottom: 2px;
}
.window{
padding :0px;
border: 1px solid #7b7b7b4d;
}
.layout-body {
border-left: 0px;
border-right: 0px;
}
</style>
<div style="position: relative; overflow: auto;">
<div id="w" class="easyui-window" data-options="closed:true,title:'高级查询构造器'" style="width: 780px; height: 370px; padding: 0px">
<div class="easyui-layout" data-options="fit:true">
@ -78,7 +95,7 @@
</span>
<#-- update-begin-Author:xuelin Date:20171211 forTASK #2441 【改造】高级查询目前只支持输入框,不支持下拉和时间控件 -->
<span style="position: relative; z-index: 2000;" class="conVal">
<input id="conValue" name="cons[0].val" type="text" class="text conditionValue" title="" style="width:130px;height:27px;">
<input id="conValue" name="cons[0].val" type="text" class="text conditionValue" title="" style="width:130px;">
</span>
<#-- update-end-Author:xuelin Date:20171211 forTASK #2441 【改造】高级查询目前只支持输入框,不支持下拉和时间控件 -->
<span>
@ -132,7 +149,7 @@
</span>
<#-- update-begin-Author:xuelin Date:20171211 forTASK #2441 【改造】高级查询目前只支持输入框,不支持下拉和时间控件 -->
<span style="position: relative; z-index: 2000;" class="conVal">
<input id="conValue1" name="cons[#index#].val" type="text" class="text conditionValue" title="" style="width:130px;height:27px;">
<input id="conValue1" name="cons[#index#].val" type="text" class="text conditionValue" title="" style="width:130px;">
</span>
<#-- update-end-Author:xuelin Date:20171211 forTASK #2441 【改造】高级查询目前只支持输入框,不支持下拉和时间控件 -->
<span>
@ -152,7 +169,7 @@
<#list fields as column>
<#if column.formatter??>
<span id="field_${column.field}">
<input id="conValue1" name="cons[#index#].val" type="text" style="width:130px;height:27px;" onclick="WdatePicker({dateFmt:'${column.formatter}'})" class="Wdate text conditionValue" title="">
<input id="conValue1" name="cons[#index#].val" type="text" style="width:130px;" onclick="WdatePicker({dateFmt:'${column.formatter}'})" class="Wdate text conditionValue" title="">
</span>
<#elseif column.dictionary??>
<#list valueList as val>
@ -169,7 +186,7 @@
</#if>
</#list>
<#else>
<span id="field_${column.field}"><input id="conValue1" name="cons[#index#].val" type="text" class="text conditionValue" title="" style="width:130px;height:27px;"></span>
<span id="field_${column.field}"><input id="conValue1" name="cons[#index#].val" type="text" class="text conditionValue" title="" style="width:130px;"></span>
</#if>
</#list>
</span>

@ -33,6 +33,9 @@ public class DataGridColumn {
protected String funname="openwindow";//自定义函数名称
protected String arg;
protected String dictionary;
protected String dictCondition;
protected boolean popup=false; //是否启用popup模式选择 默认不启用
protected String replace;
protected String extend;
@ -65,6 +68,7 @@ public class DataGridColumn {
this.showMode = showMode;
}
public String getEditor() {
return editor;
}
@ -229,6 +233,15 @@ public class DataGridColumn {
public void setDictionary(String dictionary) {
this.dictionary = dictionary;
}
public String getDictCondition() {
return dictCondition;
}
public void setDictCondition(String dictCondition) {
this.dictCondition = dictCondition;
}
public boolean isPopup() {
return popup;
}

@ -27,6 +27,7 @@ public class DataGridUrl {
private String id;
private String operationCode;//按钮的操作Code
public String getOnclick() {
return onclick;
}

@ -5,7 +5,6 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.apache.velocity.VelocityContext;
import org.jeecgframework.core.common.controller.BaseController;
import org.jeecgframework.core.common.exception.BusinessException;
import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
@ -14,15 +13,12 @@ import org.jeecgframework.core.common.model.json.DataGrid;
import org.jeecgframework.core.constant.Globals;
import org.jeecgframework.core.util.IpUtil;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.p3.core.util.plugin.ViewVelocity;
import org.jeecgframework.tag.core.easyui.TagUtil;
import org.jeecgframework.web.cgdynamgraph.entity.core.CgDynamGraphConfigHeadEntity;
import org.jeecgframework.web.cgdynamgraph.entity.core.CgDynamGraphConfigItemEntity;
import org.jeecgframework.web.cgdynamgraph.entity.core.CgDynamGraphConfigParamEntity;
import org.jeecgframework.web.cgdynamgraph.page.core.CgDynamGraphConfigHeadPage;
import org.jeecgframework.web.cgdynamgraph.service.core.CgDynamGraphConfigHeadServiceI;
import org.jeecgframework.web.cgreport.entity.core.CgreportConfigHeadEntity;
import org.jeecgframework.web.cgreport.entity.core.CgreportConfigParamEntity;
import org.jeecgframework.web.system.service.SystemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@ -65,13 +61,6 @@ public class CgDynamGraphConfigHeadController extends BaseController {
return new ModelAndView("jeecg/cgdynamgraph/core/cgDynamGraphConfigHeadList");
}
@RequestMapping(params = "cgDynamGraphConfigHeadVM")
public void CgDynamGraphConfigHeadVM(HttpServletResponse response, HttpServletRequest request) throws Exception{
VelocityContext velocityContext = new VelocityContext();
String viewName = "cgdynamgraph/cgDynamGraphConfigHeadList.vm";
ViewVelocity.view(request, response, viewName, velocityContext);
}
/**
* easyui AJAX
*
@ -214,15 +203,7 @@ public class CgDynamGraphConfigHeadController extends BaseController {
}
return new ModelAndView("jeecg/cgdynamgraph/core/cgDynamGraphConfigHead-add");
}
@RequestMapping(params = "goAdd_vm")
public void goAddVM(HttpServletResponse response, HttpServletRequest request) throws Exception {
VelocityContext velocityContext = new VelocityContext();
String viewName = "cgdynamgraph/cgDynamGraphConfigHead-add.vm";
ViewVelocity.view(request,response,viewName,velocityContext);
}
/**
*
*
@ -236,20 +217,7 @@ public class CgDynamGraphConfigHeadController extends BaseController {
}
return new ModelAndView("jeecg/cgdynamgraph/core/cgDynamGraphConfigHead-update");
}
@RequestMapping(params = "goUpdate_vm")
public void goUpdateVM(@RequestParam(required = true, value = "id" ) String id, HttpServletResponse response, HttpServletRequest request) throws Exception {
VelocityContext velocityContext = new VelocityContext();
String viewName = "cgdynamgraph/cgDynamGraphConfigHead-update.vm";
CgDynamGraphConfigHeadEntity cgDynamGraphConfigHead = cgDynamGraphConfigHeadService.getEntity(CgDynamGraphConfigHeadEntity.class, id);
velocityContext.put("cgDynamGraphConfigHeadPage",cgDynamGraphConfigHead);
ViewVelocity.view(request,response,viewName,velocityContext);
}
/**
* []
*
@ -272,27 +240,7 @@ public class CgDynamGraphConfigHeadController extends BaseController {
}
return new ModelAndView("jeecg/cgdynamgraph/core/cgDynamGraphConfigItemList");
}
@RequestMapping(params = "cgDynamGraphConfigItemList_vm")
public void cgDynamGraphConfigItemListVM(@RequestParam(required = true, value = "id" ) String id, HttpServletResponse response, HttpServletRequest request) throws Exception {
VelocityContext velocityContext = new VelocityContext();
String viewName = "cgdynamgraph/cgDynamGraphConfigItemList.vm";
//===================================================================================
//获取参数
Object id0 = id;
//===================================================================================
//查询-动态报表配置明细
String hql0 = "from CgDynamGraphConfigItemEntity where 1 = 1 AND cgrheadId = ? ";
try{
List<CgDynamGraphConfigItemEntity> cgDynamGraphConfigItemEntityList = systemService.findHql(hql0,id0);
velocityContext.put("cgDynamGraphConfigItemList", cgDynamGraphConfigItemEntityList);
}catch(Exception e){
logger.info(e.getMessage());
}
ViewVelocity.view(request,response,viewName,velocityContext);
}
/**
* []
*
@ -316,25 +264,6 @@ public class CgDynamGraphConfigHeadController extends BaseController {
return new ModelAndView("jeecg/cgdynamgraph/core/cgDynamGraphConfigParamList");
}
@RequestMapping(params = "cgDynamGraphConfigParamList_vm")
public void cgDynamGraphConfigParamListVM(@RequestParam(required = true, value = "id" ) String id, HttpServletResponse response, HttpServletRequest request) throws Exception {
VelocityContext velocityContext = new VelocityContext();
String viewName = "cgdynamgraph/cgDynamGraphConfigParamList.vm";
//===================================================================================
//获取参数
Object id0 = id;
//===================================================================================
//查询-动态报表配置明细
String hql0 = "from CgDynamGraphConfigParamEntity where 1 = 1 AND cgrheadId = ? ";
try{
List<CgDynamGraphConfigParamEntity> cgDynamGraphConfigParamEntityList = systemService.findHql(hql0,id0);
velocityContext.put("cgDynamGraphConfigParamList",cgDynamGraphConfigParamEntityList);
}catch(Exception e){
logger.info(e.getMessage());
}
ViewVelocity.view(request,response,viewName,velocityContext);
}
@RequestMapping(params = "popmenulink")
public ModelAndView popmenulink(ModelMap modelMap,
@RequestParam String url,
@ -362,32 +291,4 @@ public class CgDynamGraphConfigHeadController extends BaseController {
return new ModelAndView("jeecg/cgreport/core/popmenulink");
}
@RequestMapping(params = "popmenulink_vm")
public void popmenulinkVM(@RequestParam String url, @RequestParam String title, HttpServletResponse response, HttpServletRequest request) throws Exception {
VelocityContext velocityContext = new VelocityContext();
String viewName = "cgdynamgraph/popmenulink.vm";
StringBuilder sb = new StringBuilder("");
try{
CgreportConfigHeadEntity cgreportConfigHead = systemService.findUniqueByProperty(CgreportConfigHeadEntity.class, "code", title);
String hql0 = "from CgreportConfigParamEntity where 1 = 1 AND cgrheadId = ? ";
List<CgreportConfigParamEntity> cgreportConfigParamList = systemService.findHql(hql0,cgreportConfigHead.getId());
if(cgreportConfigParamList!=null&cgreportConfigParamList.size()>0){
for(CgreportConfigParamEntity cgreportConfigParam :cgreportConfigParamList){
sb.append("&").append(cgreportConfigParam.getParamName()).append("=");
if(StringUtil.isNotEmpty(cgreportConfigParam.getParamValue())){
sb.append(cgreportConfigParam.getParamValue());
}else{
sb.append("${"+cgreportConfigParam.getParamName()+"}");
}
}
}
}catch(Exception e){
logger.info(e.getMessage());
}
velocityContext.put("title",title);
velocityContext.put("url",url);
velocityContext.put("params",sb.toString());
ViewVelocity.view(request,response,viewName,velocityContext);
}
}

@ -70,6 +70,10 @@ public class CgAutoListConstant {
public static final String FIELD_DICTTABLE = "field_dictTable";
/** 字典code */
public static final String FIELD_DICTFIELD = "field_dictField";
/** 字典Text */
public static final String FIELD_DICTTEXT = "field_dictText";
/** 字典数据 */
public static final String FIELD_DICTLIST = "field_dictlist";
@ -163,6 +167,8 @@ public class CgAutoListConstant {
/** online配置表单版本分隔符 */
public static final String ONLINE_TABLE_SPLIT_STR = "__";
public static final String BASEPATH = "basePath";
}

@ -50,11 +50,11 @@ public class FormHtmlUtil {
private static String getTextAreaFormHtml(
CgFormFieldEntity cgFormFieldEntity) {
StringBuilder html = new StringBuilder("");
html.append("<textarea rows=\"6\" ");
html.append("<textarea rows=\"6\" ");
if(cgFormFieldEntity.getFieldLength()!=null&&cgFormFieldEntity.getFieldLength()>0){
html.append("style=\"width:").append(cgFormFieldEntity.getFieldLength()).append("px\" ");
}
html.append("id=\"").append(cgFormFieldEntity.getFieldName()).append("\" ");
html.append("id=\"").append(cgFormFieldEntity.getFieldName()).append("\" ");
html.append("name=\"").append(cgFormFieldEntity.getFieldName()).append("\" ");
if("Y".equals(cgFormFieldEntity.getIsNull())){
html.append("ignore=\"ignore\" ");
@ -343,7 +343,9 @@ public class FormHtmlUtil {
html.append("style=\"width:").append(cgFormFieldEntity.getFieldLength()).append("px\" ");
}
html.append("value=\"\\${").append(cgFormFieldEntity.getFieldName()).append("?if_exists?html}\" ");
html.append("onclick=\"inputClick(this,'"+cgFormFieldEntity.getDictText()+"','"+cgFormFieldEntity.getDictTable()+"');\" ");
html.append("onclick=\"popupClick(this,'"+cgFormFieldEntity.getDictText()+"','"+cgFormFieldEntity.getDictField()+"','"+cgFormFieldEntity.getDictTable()+"');\" ");
if("Y".equals(cgFormFieldEntity.getIsNull())){
html.append("ignore=\"ignore\" ");
}

@ -346,7 +346,9 @@ public class CgAutoListController extends BaseController{
// }
for(DictEntity dictEntity:dicDataList){
if(value.equalsIgnoreCase(dictEntity.getTypecode())){
r.put(bean.getFieldName(),MutiLangUtil.getLang(dictEntity.getTypename()));
break;
}
}
@ -473,6 +475,9 @@ public class CgAutoListController extends BaseController{
fmq.put(CgAutoListConstant.FIELD_SHOWTYPE, bean.getShowType());
fmq.put(CgAutoListConstant.FIELD_DICTFIELD, bean.getDictField());
fmq.put(CgAutoListConstant.FIELD_DICTTABLE, bean.getDictTable());
fmq.put(CgAutoListConstant.FIELD_DICTTEXT, bean.getDictText());
fmq.put(CgAutoListConstant.FIELD_ISQUERY,"Y");
loadDefaultValue(fmq,bean,request);
loadDic(fmq,bean);

@ -105,7 +105,9 @@ public class CgFormBuildController extends BaseController {
request.setAttribute("olstylecode", mp.get("form_template_mobile").toString().trim());
}
}
ftlForm(tableName,"",request,response);
}
@ -120,6 +122,7 @@ public class CgFormBuildController extends BaseController {
}
}
/**
* form
*/
@ -138,26 +141,27 @@ public class CgFormBuildController extends BaseController {
String templateName=tablename+"_";
//String templateName=tableName+"_";
Map<String, Object> dataForm = new HashMap<String, Object>();
if(StringUtils.isNotEmpty(id)){
dataForm = dataBaseService.findOneForJdbc(tablename, id);
//dataForm = dataBaseService.findOneForJdbc(tableName, id);
if(dataForm!=null){
Iterator it=dataForm.entrySet().iterator();
while(it.hasNext()){
Map.Entry entry=(Map.Entry)it.next();
String ok=(String)entry.getKey();
Object ov=entry.getValue();
data.put(ok, ov);
}
}else{
logger.info("online表单【"+tablename+"】【"+id+"】不存在");
id = null;
dataForm = new HashMap<String, Object>();
}
}
// Map<String, Object> dataForm = new HashMap<String, Object>();
// if(StringUtils.isNotEmpty(id)){
// dataForm = dataBaseService.findOneForJdbc(tablename, id);
// //dataForm = dataBaseService.findOneForJdbc(tableName, id);
// if(dataForm!=null){
// Iterator it=dataForm.entrySet().iterator();
// while(it.hasNext()){
// Map.Entry entry=(Map.Entry)it.next();
// String ok=(String)entry.getKey();
// Object ov=entry.getValue();
// data.put(ok, ov);
// }
// }else{
// logger.info("online表单【"+tablename+"】【"+id+"】不存在");
// id = null;
// dataForm = new HashMap<String, Object>();
// }
// }
TemplateUtil.TemplateType templateType=TemplateUtil.TemplateType.LIST;
if(StringUtils.isBlank(id)){
@ -175,6 +179,25 @@ public class CgFormBuildController extends BaseController {
//装载表单配置
Map configData = cgFormFieldService.getFtlFormConfig(tableName,version);
data = new HashMap(configData);
Map<String, Object> dataForm = new HashMap<String, Object>();
if(StringUtils.isNotEmpty(id)){
dataForm = dataBaseService.findOneForJdbc(tablename, id);
if(dataForm!=null){
Iterator it=dataForm.entrySet().iterator();
while(it.hasNext()){
Map.Entry entry=(Map.Entry)it.next();
String ok=(String)entry.getKey();
Object ov=entry.getValue();
data.put(ok, ov);
}
}else{
logger.info("online表单【"+tablename+"】【"+id+"】不存在");
id = null;
dataForm = new HashMap<String, Object>();
}
}
//如果该表是主表查出关联的附表
CgFormHeadEntity head = (CgFormHeadEntity)data.get("head");
@ -232,7 +255,9 @@ public class CgFormBuildController extends BaseController {
//装载单表/(主表和附表)表单数据
data.put("data", tableData);
data.put("id", id);
data.put("head", head);
//页面样式js引用
data.put(CgAutoListConstant.CONFIG_IFRAME, getHtmlHead(request));

@ -105,7 +105,9 @@ public class CgformSqlController extends BaseController {
//update by duanqilu 2013-12-05 增加多表单导出功能
//MigrateForm.createFile(request,cgFormHeadEntity.getTableName())
String ls_filename = cgFormHeadEntity.getTableName();// 创建文件
String destFileDir = ResourceUtil.getSystempPath()+File.separator+ls_filename;
MigrateForm.generateXmlDataOutFlieContent(dbTables, destFileDir);
ls_filename = MigrateForm.zip(null, "", destFileDir); // 压缩文件
// 文件下载
@ -171,9 +173,11 @@ public class CgformSqlController extends BaseController {
if (uploadbasepath == null) {
uploadbasepath = ResourceUtil.getConfigByName("uploadpath");
}
String path = uploadbasepath + File.separator;// 文件保存在硬盘的相对路径
String realPath = uploadFile.getMultipartRequest().getSession()
.getServletContext().getRealPath(File.separator)
+ path;// 文件的硬盘真实路径
message = null;
try {
@ -199,7 +203,9 @@ public class CgformSqlController extends BaseController {
MigrateForm.unzip(savePath, "");
String sqlFileDir = realPath + ls_tmp.substring(0, ls_tmp.lastIndexOf("."));
File sqlDirFile = new File(sqlFileDir);
String sqlfilename = sqlDirFile.getPath() + File.separator;
if(sqlDirFile.isDirectory()){
sqlfilename += sqlDirFile.list()[0];
}

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

Loading…
Cancel
Save