jeecg 3.7 扩时代重构精华版本发布 20160420

jeecg_3.7.0
zhangdaihao 9 years ago
parent ce5df01692
commit d9a89d780a

@ -1,7 +1,7 @@
JEECG 微云快速开发平台
===============
当前最新版本: 3.6.6发布日期20170208
当前最新版本: 3.7发布日期20170420
前言:
-----------------------------------
@ -67,7 +67,7 @@ JEECG
* <b>技术点十七:</b>插件开发业务功能组件以插件方式集成平台也可以单独部署发发布有力支撑了SAAS云应用系统需求</br>
* JEECG V3.6.6, 经过了专业压力测试,性能测试,保证后台数据的准确性和页面访问速度</br>
* JEECG V3.7, 经过了专业压力测试,性能测试,保证后台数据的准确性和页面访问速度</br>
* 支持多种浏览器: IE, 火狐, Google 等</br>
* 支持数据库: Mysql,Oracle10g,Postgre,SqlServer等</br>
* 基础权限: 用户,角色,菜单权限,按钮权限,数据权限</br>
@ -102,7 +102,7 @@ JEECG
技术交流
-----------------------------------
* 作者:[张代浩](http://blog.csdn.net/zhangdaiscott)</br>
* QQ交流群 ④176031980、②106838471(满)、①106259349(满)、③289782002(满)</br>
* QQ交流群 ③289782002、②106838471(满)、①106259349(满)、④176031980(满)</br>
社区荣誉

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -2,8 +2,8 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.jeecgframework</groupId>
<artifactId>jeecgos</artifactId>
<version>3.6.6</version>
<artifactId>jeecg</artifactId>
<version>3.7</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@ -82,7 +82,6 @@
<junit.version>4.7</junit.version>
<hamcrest.version>1.3</hamcrest.version>
<CKFinder.version>2.4</CKFinder.version>
<!-- java生成缩略图 -->
<thumbnailator.version>0.4.6</thumbnailator.version>
<pinyin4j.version>2.5.0</pinyin4j.version>
@ -92,7 +91,7 @@
<xstream.version>1.4.4</xstream.version>
<groovy.version>2.3.3</groovy.version>
<!--poi 工具类 -->
<easypoi.version>2.1.4</easypoi.version>
<jeasypoi.version>2.1.4</jeasypoi.version>
<cxf.version>3.0.2</cxf.version>
<!--maven插件变量-->
<tomcat.version>2.2</tomcat.version>
@ -156,28 +155,6 @@
</exclusion>
</exclusions>
</dependency>
<!-- ckfinder start -->
<dependency>
<groupId>com.ckfinder</groupId>
<artifactId>CKFinder-updateByAlexander</artifactId>
<version>${CKFinder.version}</version>
</dependency>
<dependency>
<groupId>com.ckfinder</groupId>
<artifactId>CKFinderPlugin-FileEditor</artifactId>
<version>${CKFinder.version}</version>
</dependency>
<dependency>
<groupId>com.ckfinder</groupId>
<artifactId>CKFinderPlugin-ImageResize</artifactId>
<version>${CKFinder.version}</version>
</dependency>
<dependency>
<groupId>com.ckfinder</groupId>
<artifactId>CKFinderPlugin-Watermark</artifactId>
<version>${CKFinder.version}</version>
</dependency>
<!-- ckfinder end -->
<!-- java生成缩略图-->
<dependency>
<groupId>net.coobird</groupId>
@ -290,32 +267,6 @@
<version>${spring.version}</version>
</dependency>
<!--工作流依赖包 -->
<!--
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>${activiti.version}</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring</artifactId>
<version>${activiti.version}</version>
</dependency>
-->
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}</version>
</dependency>
<!-- 数据库相关依赖包 _start -->
<!--proxool start -->
<dependency>
@ -331,12 +282,11 @@
<artifactId>avalon-framework-api</artifactId>
<groupId>avalon-framework</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.cloudhopper.proxool</groupId>
<exclusion>
<artifactId>proxool-cglib</artifactId>
<version>${proxool.version}</version>
<groupId>com.cloudhopper.proxool</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- proxool end-->
<dependency>
@ -517,7 +467,7 @@
</exclusions>
</dependency>
<!-- slf4j -->
<!-- <dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
@ -526,51 +476,12 @@
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency> -->
<!-- log4j -->
<!-- <dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency> -->
<!--Logger Support -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.7</version>
</dependency>
<!-- log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.1</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.6.1</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<!-- <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.1</version>
<type>jar</type>
<scope>compile</scope>
</dependency> -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>1.6.1</version>
<version>${log4j.version}</version>
</dependency>
<!-- classmate -->
<dependency>
@ -674,10 +585,9 @@
<artifactId>ehcache-core</artifactId>
<version>${ehcache.version}</version>
</dependency>
<!-- freemarker -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<groupId>org.jeecgframework</groupId>
<artifactId>freemarker-null</artifactId>
<version>${freemarker.version}</version>
</dependency>
<!-- JSR303 Bean Validator -->
@ -714,30 +624,30 @@
</dependency>
<dependency>
<groupId>org.jeecgframework</groupId>
<artifactId>easypoi-base</artifactId>
<version>${easypoi.version}</version>
<artifactId>jeasypoi-base</artifactId>
<version>${jeasypoi.version}</version>
<exclusions>
<exclusion>
<groupId>org.jeecg</groupId>
<artifactId>easypoi-annotation</artifactId>
<groupId>org.jeecgframework</groupId>
<artifactId>jeasypoi-annotation</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.jeecgframework</groupId>
<artifactId>easypoi-web</artifactId>
<version>${easypoi.version}</version>
<artifactId>jeasypoi-web</artifactId>
<version>${jeasypoi.version}</version>
<exclusions>
<exclusion>
<groupId>org.jeecg</groupId>
<artifactId>easypoi-base</artifactId>
<groupId>org.jeecgframework</groupId>
<artifactId>jeasypoi-base</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.jeecgframework</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>${easypoi.version}</version>
<artifactId>jeasypoi-annotation</artifactId>
<version>${jeasypoi.version}</version>
</dependency>
<!-- poi end-->
<!-- openoffice start -->
@ -794,7 +704,6 @@
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
<!-- jacob -->
<dependency>
@ -886,18 +795,7 @@
<artifactId>guava</artifactId>
<version>${guava.version}</version>
</dependency>
<!-- huangzq add cxf webservice 20151231
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>${cxf.version}</version>
</dependency>
-->
<!-- jeecg plugin -->
<dependency>
<groupId>org.p3framework</groupId>
@ -929,14 +827,13 @@
<artifactId>jeecg-p3-biz-mail</artifactId>
<version>1.0.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<!-- 在线聊天工具-->
<dependency>
<groupId>org.p3framework</groupId>
<artifactId>jeecg-p3-biz-chat</artifactId>
<version>1.0.0</version>
<version>1.0.1</version>
</dependency>
</dependencies>
@ -964,8 +861,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>

@ -0,0 +1,213 @@
package com.jeecg.demo.controller;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.jeecgframework.core.common.controller.BaseController;
import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
import org.jeecgframework.core.common.model.json.AjaxJson;
import org.jeecgframework.core.common.model.json.ComboTree;
import org.jeecgframework.core.util.JSONHelper;
import org.jeecgframework.tag.vo.easyui.ComboTreeModel;
import org.jeecgframework.web.system.pojo.base.TSDepart;
import org.jeecgframework.web.system.service.SystemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
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.servlet.ModelAndView;
import com.jeecg.demo.dao.JeecgMinidaoDao;
import net.sf.json.JSONArray;
/**
* @ClassName: JeecgFormDemoController
* @Description: TODO()
* @author jeecg
*/
@Controller
@RequestMapping("/jeecgFormDemoController")
public class JeecgFormDemoController extends BaseController {
private static final Logger logger = Logger.getLogger(JeecgFormDemoController.class);
@Autowired
private SystemService systemService;
@Autowired
private JeecgMinidaoDao jeecgMinidaoDao;
@RequestMapping(params = "uitag")
public ModelAndView uitag(HttpServletRequest request) {
return new ModelAndView("com/jeecg/demo/form_uitag");
}
@RequestMapping(params = "formValidDemo")
public ModelAndView formValidDemo(HttpServletRequest request) {
return new ModelAndView("com/jeecg/demo/form_valid");
}
@RequestMapping(params = "testsubmit=1",method ={RequestMethod.GET, RequestMethod.POST})
public ModelAndView testsubmit(HttpServletRequest request) {
logger.info("请求成功byebye");
return new ModelAndView("com/jeecg/demo/form_valid");
}
@RequestMapping(params = "nature")
public ModelAndView easyDemo(HttpServletRequest request) {
logger.info("demo-nature");
//ztree同步加载
JSONArray jsonArray=JSONArray.fromObject(getZtreeData());
request.setAttribute("regions", jsonArray.toString().replaceAll("pid","pId"));
return new ModelAndView("com/jeecg/demo/form_nature");
}
@RequestMapping(params = "ueditor")
public ModelAndView ueditor(HttpServletRequest request) {
logger.info("ueditor");
return new ModelAndView("com/jeecg/demo/ueditor");
}
/**
*---
*/
@RequestMapping(params="regionSelect",method = RequestMethod.GET)
@ResponseBody
public List<Map<String, String>> cityselect(HttpServletRequest req) throws Exception{
logger.info("----省市区联动-----");
String pid=req.getParameter("pid");
List<Map<String, String>> list=jeecgMinidaoDao.getProCity(pid);
return jeecgMinidaoDao.getProCity(pid);
}
/**
* Ztree
*
* @return
*/
public List<Map<String, String>> getZtreeData(){
return jeecgMinidaoDao.getAllRegions();
}
/**
* DEMO
*/
@RequestMapping(params = "getComboTreeData")
@ResponseBody
public List<ComboTree> getComboTreeData(HttpServletRequest request, ComboTree comboTree) {
CriteriaQuery cq = new CriteriaQuery(TSDepart.class);
if (comboTree.getId() != null) {
cq.eq("TSPDepart.id", comboTree.getId());
}
if (comboTree.getId() == null) {
cq.isNull("TSPDepart");
}
cq.add();
List<TSDepart> demoList = systemService.getListByCriteriaQuery(cq, false);
List<ComboTree> comboTrees = new ArrayList<ComboTree>();
ComboTreeModel comboTreeModel = new ComboTreeModel("id", "departname", "TSDeparts");
comboTrees = systemService.ComboTree(demoList, comboTreeModel, null, false);
return comboTrees;
}
/**
* ztree
* @param response
* @param request
* @return
*/
@RequestMapping(params="getTreeData",method ={RequestMethod.GET, RequestMethod.POST})
@ResponseBody
public AjaxJson getTreeData(TSDepart depatr,HttpServletResponse response,HttpServletRequest request ){
AjaxJson j = new AjaxJson();
try{
List<TSDepart> depatrList = new ArrayList<TSDepart>();
StringBuffer hql = new StringBuffer(" from TSDepart t");
//hql.append(" and (parent.id is null or parent.id='')");
depatrList = this.systemService.findHql(hql.toString());
List<Map<String,Object>> dataList = new ArrayList<Map<String,Object>>();
Map<String,Object> map = null;
for (TSDepart tsdepart : depatrList) {
String sqls = null;
Object[] paramss = null;
map = new HashMap<String,Object>();
map.put("id", tsdepart.getId());
map.put("name", tsdepart.getDepartname());
if (tsdepart.getTSPDepart() != null) {
map.put("pId", tsdepart.getTSPDepart().getId());
map.put("open",false);
}else {
map.put("pId", "1");
map.put("open",false);
}
sqls = "select count(1) from t_s_depart t where t.parentdepartid = ?";
paramss = new Object[]{tsdepart.getId()};
long counts = this.systemService.getCountForJdbcParam(sqls, paramss);
if(counts>0){
dataList.add(map);
}else{
TSDepart de = this.systemService.get(TSDepart.class, tsdepart.getId());
if (de != null) {
map.put("id", de.getId());
map.put("name", de.getDepartname());
if(tsdepart.getTSPDepart()!=null){
map.put("pId", tsdepart.getTSPDepart().getId());
map.put("open",false);
}else{
map.put("pId", "1");
map.put("open",false);
}
dataList.add(map);
}else{
map.put("open",false);
dataList.add(map);
}
}
}
j.setObj(dataList);
}catch(Exception e){
e.printStackTrace();
}
return j;
}
/**
*
* @param request
* @param responss
*/
@RequestMapping(params = "getAutocompleteData",method ={RequestMethod.GET, RequestMethod.POST})
public void getAutocompleteData(HttpServletRequest request, HttpServletResponse response) {
String searchVal = request.getParameter("searchVal");
String hql = "from TSUser where userName like '%"+searchVal+"%'";
List autoList = systemService.findHql(hql);
try {
response.setContentType("application/json;charset=UTF-8");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.getWriter().write(JSONHelper.listtojson(new String[]{"userName"},1,autoList));
response.getWriter().flush();
} catch (Exception e1) {
e1.printStackTrace();
}finally{
try {
response.getWriter().close();
} catch (IOException e) {
}
}
}
}

@ -0,0 +1,560 @@
package com.jeecg.demo.controller;
import java.io.IOException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.collections.CollectionUtils;
import org.apache.log4j.Logger;
import org.jeecgframework.core.common.controller.BaseController;
import org.jeecgframework.core.common.exception.BusinessException;
import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
import org.jeecgframework.core.common.model.json.AjaxJson;
import org.jeecgframework.core.common.model.json.DataGrid;
import org.jeecgframework.core.constant.Globals;
import org.jeecgframework.core.util.DateUtils;
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.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.web.system.pojo.base.TSDepart;
import org.jeecgframework.web.system.pojo.base.TSLog;
import org.jeecgframework.web.system.service.SystemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
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;
/**
* @Title: Controller
* @Description: jeecg_demo
* @author onlineGenerator
* @date 2017-03-22 20:11:23
* @version V1.0
*
*/
@Controller
@RequestMapping("/jeecgListDemoController")
public class JeecgListDemoController extends BaseController {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(JeecgListDemoController.class);
@Autowired
private JeecgDemoServiceI jeecgDemoService;
@Autowired
private SystemService systemService;
@Autowired
private JeecgMinidaoDao jeecgMinidaoDao;
/**
* minidao
* @param request
* @return
*/
//JeecgListDemoController.do?minidaoListDemo
@RequestMapping(params = "minidaoListDemo")
public ModelAndView minidaoListDemo(HttpServletRequest request) {
return new ModelAndView("com/jeecg/demo/taglist_minidao");
}
/**
*
*/
//JeecgListDemoController.do?rowListDemo
@RequestMapping(params = "rowListDemo")
public ModelAndView rowListDemo(HttpServletRequest request) {
return new ModelAndView("com/jeecg/demo/list_rowedtior");
}
/**
* jeecg_demo
*
* @return
*/
@RequestMapping(params = "list")
public ModelAndView list(HttpServletRequest request) {
return new ModelAndView("com/jeecg/demo/jeecgDemoList");
}
/**
*
*/
//JeecgListDemoController.do?mysearchListDemo
@RequestMapping(params = "mysearchListDemo")
public ModelAndView mysearchListDemo(HttpServletRequest request) {
return new ModelAndView("com/jeecg/demo/taglist_mysearch");
}
@RequestMapping(params = "minidaoDatagrid")
public void minidaoDatagrid(JeecgDemoEntity jeecgDemo,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
/**
* minidaospringjdbc线
* {USER_NAME}
* {userName}
*/
List<JeecgDemoEntity> list = jeecgMinidaoDao.getAllEntities(jeecgDemo, dataGrid.getPage(), dataGrid.getRows());
Integer count = jeecgMinidaoDao.getCount();
dataGrid.setTotal(count);
dataGrid.setResults(list);
String total_salary = String.valueOf(jeecgMinidaoDao.getSumSalary());
/*
* :() ,
*/
dataGrid.setFooter("salary:"+(total_salary.equalsIgnoreCase("null")?"0.0":total_salary)+",age,email:合计");
TagUtil.datagrid(response, dataGrid);
}
/**
* easyui AJAX
*
* @param request
* @param response
* @param dataGrid
* @param user
*/
@RequestMapping(params = "datagrid")
public void datagrid(JeecgDemoEntity jeecgDemo,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
CriteriaQuery cq = new CriteriaQuery(JeecgDemoEntity.class, dataGrid);
//查询条件组装器
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, jeecgDemo, request.getParameterMap());
try{
//自定义追加查询条件
}catch (Exception e) {
throw new BusinessException(e.getMessage());
}
cq.add();
this.jeecgDemoService.getDataGridReturn(cq, true);
//String total_salary = String.valueOf(jeecgMinidaoDao.getSumSalary());
/*
* :() ,
*/
//dataGrid.setFooter("salary:"+(total_salary.equalsIgnoreCase("null")?"0.0":total_salary)+",age,email:合计");
List<JeecgDemoEntity> list=dataGrid.getResults();
Map<String,Map<String,Object>> extMap = new HashMap<String, Map<String,Object>>();
for(JeecgDemoEntity temp:list){
//此为针对原来的行数据,拓展的新字段
Map m = new HashMap();
m.put("extField",this.jeecgMinidaoDao.getOrgCode(temp.getDepId()));
extMap.put(temp.getId(), m);
}
//dataGrid.setFooter("extField,salary,age,name:合计");
TagUtil.datagrid(response, dataGrid,extMap);
dataGrid.setFooter("salary,age,name:合计");
TagUtil.datagrid(response, dataGrid);
}
@RequestMapping(params = "addTab")
public ModelAndView addTab(HttpServletRequest request) {
String type = oConvertUtils.getString(request.getParameter("type"));
return new ModelAndView("com/jeecg/demo/demoTab");
}
@RequestMapping(params = "goCheck")
public ModelAndView goCheck( HttpServletRequest request) {
logger.info("----审核-----");
String id=request.getParameter("id");
if (StringUtil.isNotEmpty(id)) {
JeecgDemoEntity jeecgDemo = jeecgDemoService.getEntity(JeecgDemoEntity.class, id);
request.setAttribute("jeecgDemoPage", jeecgDemo);
}
return new ModelAndView("com/jeecg/demo/jeecgDemo-check");
}
@RequestMapping(params = "doCheck")
@ResponseBody
public AjaxJson doCheck(String content,String id,String status) {
logger.info("-------审核意见:"+content);//demo简单作打印,实际项目可酌情处理
String message = null;
AjaxJson j = new AjaxJson();
JeecgDemoEntity jeecgDemo = systemService.getEntity(JeecgDemoEntity.class, id);
message = "审核成功";
try{
jeecgDemo.setStatus(status);
this.jeecgDemoService.updateEntitie(jeecgDemo);
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 = "addWithbtn")
public ModelAndView addWithbtn(HttpServletRequest request) {
return new ModelAndView("com/jeecg/demo/jeecgDemo-add-btn");
}
/**
* JeecgDemo
* @param jeecgDemo
* @param req
* @return
*/
@RequestMapping(params = "print")
public ModelAndView print(JeecgDemoEntity jeecgDemo, HttpServletRequest req) {
// 获取部门信息
List<TSDepart> departList = systemService.getList(TSDepart.class);
req.setAttribute("departList", departList);
if (StringUtil.isNotEmpty(jeecgDemo.getId())) {
jeecgDemo = jeecgDemoService.getEntity(JeecgDemoEntity.class, jeecgDemo.getId());
req.setAttribute("jgDemo", jeecgDemo);
if ("0".equals(jeecgDemo.getSex()))
req.setAttribute("sex", "男");
if ("1".equals(jeecgDemo.getSex()))
req.setAttribute("sex", "女");
}
return new ModelAndView("com/jeecg/demo/jeecgDemo-print");
}
/**
* jeecg_demo
*
* @return
*/
@RequestMapping(params = "doDel")
@ResponseBody
public AjaxJson doDel(JeecgDemoEntity jeecgDemo, HttpServletRequest request) {
String message = null;
AjaxJson j = new AjaxJson();
jeecgDemo = systemService.getEntity(JeecgDemoEntity.class, jeecgDemo.getId());
message = "删除成功";
try{
jeecgDemoService.delete(jeecgDemo);
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;
}
/**
* jeecg_demo
*
* @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(",")){
JeecgDemoEntity jeecgDemo = systemService.getEntity(JeecgDemoEntity.class,
id
);
jeecgDemoService.delete(jeecgDemo);
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;
}
/**
* jeecg_demo
*
* @param ids
* @return
*/
@RequestMapping(params = "doAdd")
@ResponseBody
public AjaxJson doAdd(JeecgDemoEntity jeecgDemo, HttpServletRequest request) {
String message = null;
AjaxJson j = new AjaxJson();
message = "添加成功";
try{
jeecgDemoService.save(jeecgDemo);
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;
}
/**
* jeecg_demo
*
* @param ids
* @return
*/
@RequestMapping(params = "doUpdate")
@ResponseBody
public AjaxJson doUpdate(JeecgDemoEntity jeecgDemo, HttpServletRequest request) {
String message = null;
AjaxJson j = new AjaxJson();
message = "更新成功";
JeecgDemoEntity t = jeecgDemoService.get(JeecgDemoEntity.class, jeecgDemo.getId());
try {
MyBeanUtils.copyBeanNotNull2Bean(jeecgDemo, t);
jeecgDemoService.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;
}
/**
* jeecg_demo
*
* @return
*/
@RequestMapping(params = "goAdd")
public ModelAndView goAdd(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-add");
}
/**
* jeecg_demo
*
* @return
*/
@RequestMapping(params = "goUpdate")
public ModelAndView goUpdate(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-update");
}
/**
*
*
* @return
*/
@RequestMapping(params = "upload")
public ModelAndView upload(HttpServletRequest req) {
req.setAttribute("controller_name","JeecgListDemoController");
return new ModelAndView("common/upload/pub_excel_upload");
}
/**
* excel
*
* @param request
* @param response
*/
@RequestMapping(params = "exportXls")
public String exportXls(JeecgDemoEntity jeecgDemo,HttpServletRequest request,HttpServletResponse response
, DataGrid dataGrid,ModelMap modelMap) {
CriteriaQuery cq = new CriteriaQuery(JeecgDemoEntity.class, dataGrid);
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, jeecgDemo, request.getParameterMap());
List<JeecgDemoEntity> jeecgDemos = this.jeecgDemoService.getListByCriteriaQuery(cq,false);
modelMap.put(NormalExcelConstants.FILE_NAME,"jeecg_demo");
modelMap.put(NormalExcelConstants.CLASS,JeecgDemoEntity.class);
modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("jeecg_demo列表", "导出人:"+ResourceUtil.getSessionUserName().getRealName(),"导出信息"));
modelMap.put(NormalExcelConstants.DATA_LIST,jeecgDemos);
return NormalExcelConstants.JEECG_EXCEL_VIEW;
}
/**
* excel 使
*
* @param request
* @param response
*/
@RequestMapping(params = "exportXlsByT")
public String exportXlsByT(JeecgDemoEntity jeecgDemo,HttpServletRequest request,HttpServletResponse response
, DataGrid dataGrid,ModelMap modelMap) {
modelMap.put(NormalExcelConstants.FILE_NAME,"jeecg_demo");
modelMap.put(NormalExcelConstants.CLASS,JeecgDemoEntity.class);
modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("jeecg_demo列表", "导出人:"+ResourceUtil.getSessionUserName().getRealName(),
"导出信息"));
modelMap.put(NormalExcelConstants.DATA_LIST,new ArrayList());
return NormalExcelConstants.JEECG_EXCEL_VIEW;
}
@SuppressWarnings("unchecked")
@RequestMapping(params = "importExcel", method = RequestMethod.POST)
@ResponseBody
public AjaxJson importExcel(HttpServletRequest request, HttpServletResponse response) {
AjaxJson j = new AjaxJson();
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
MultipartFile file = entity.getValue();// 获取上传文件对象
ImportParams params = new ImportParams();
params.setTitleRows(2);
params.setHeadRows(1);
params.setNeedSave(true);
try {
List<JeecgDemoEntity> listJeecgDemoEntitys = ExcelImportUtil.importExcel(file.getInputStream(),JeecgDemoEntity.class,params);
for (JeecgDemoEntity jeecgDemo : listJeecgDemoEntitys) {
jeecgDemoService.save(jeecgDemo);
}
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
public List<JeecgDemoEntity> list() {
List<JeecgDemoEntity> listJeecgDemos=jeecgDemoService.getList(JeecgDemoEntity.class);
return listJeecgDemos;
}
/**
* /
* @param page
* @return
*/
@RequestMapping(params = "saveRows")
@ResponseBody
public AjaxJson saveRows(JeecgDemoPage page){
String message = null;
List<JeecgDemoEntity> demos=page.getDemos();
AjaxJson j = new AjaxJson();
if(CollectionUtils.isNotEmpty(demos)){
for(JeecgDemoEntity jeecgDemo:demos){
if (StringUtil.isNotEmpty(jeecgDemo.getId())) {
JeecgDemoEntity t =jeecgDemoService.get(JeecgDemoEntity.class, jeecgDemo.getId());
try {
message = "JeecgDemo例子: " + jeecgDemo.getName() + "被更新成功";
MyBeanUtils.copyBeanNotNull2Bean(jeecgDemo, t);
jeecgDemoService.saveOrUpdate(t);
systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
} catch (Exception e) {
e.printStackTrace();
}
} else {
try {
message = "JeecgDemo例子: " + jeecgDemo.getName() + "被添加成功";
//jeecgDemo.setStatus("0");
jeecgDemoService.save(jeecgDemo);
systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
return j;
}
//jeecgListDemoController.do?log
@RequestMapping(params = "log")
public ModelAndView log() {
return new ModelAndView("com/jeecg/demo/logList");
}
//jeecgListDemoController.do?logDatagrid
@RequestMapping(params = "logDatagrid")
public void logDatagrid(HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
CriteriaQuery cq = new CriteriaQuery(TSLog.class, dataGrid);
//日志级别查询条件
String loglevel = request.getParameter("loglevel");
if (loglevel != null && !"0".equals(loglevel)) {
cq.eq("loglevel", org.jeecgframework.core.util.oConvertUtils.getShort(loglevel));
cq.add();
}
//时间范围查询条件
String operatetime_begin = request.getParameter("operatetime_begin");
String operatetime_end = request.getParameter("operatetime_end");
if(oConvertUtils.isNotEmpty(operatetime_begin)){
try {
cq.ge("operatetime", DateUtils.parseDate(operatetime_begin, "yyyy-MM-dd hh:mm:ss"));
} catch (ParseException e) {
logger.error(e);
}
cq.add();
}
if(oConvertUtils.isNotEmpty(operatetime_end)){
try {
cq.le("operatetime", DateUtils.parseDate(operatetime_end, "yyyy-MM-dd hh:mm:ss"));
} catch (ParseException e) {
logger.error(e);
}
cq.add();
}
this.systemService.getDataGridReturn(cq, true);
TagUtil.datagrid(response, dataGrid);
}
@RequestMapping(params = "goOnlyData")
public ModelAndView goOnlyData(HttpServletRequest req,JeecgLogReport log) {
return new ModelAndView("com/jeecg/demo/logrp-onlyData");
}
@RequestMapping(params = "logrpDatagrid")
public void logrpDatagrid(HttpServletResponse response,JeecgLogReport log, DataGrid dataGrid) {
CriteriaQuery cq = new CriteriaQuery(JeecgLogReport.class, dataGrid);
List<JeecgLogReport> list=this.jeecgMinidaoDao.getLogReportData(log);
dataGrid.setResults(list);
TagUtil.datagrid(response, dataGrid);
}
@RequestMapping(params = "goChart")
public ModelAndView goChart(HttpServletRequest req,JeecgLogReport log) {
List<Map<String, Object>> list=this.jeecgMinidaoDao.getLogChartData(log);
net.sf.json.JSONArray arr=net.sf.json.JSONArray.fromObject(list);
req.setAttribute("logs",arr);
return new ModelAndView("com/jeecg/demo/logrp-chart");
}
}

@ -0,0 +1,72 @@
package com.jeecg.demo.dao;
import java.util.List;
import java.util.Map;
import org.jeecgframework.minidao.annotation.Arguments;
import org.jeecgframework.minidao.annotation.MiniDao;
import org.jeecgframework.minidao.annotation.ResultType;
import org.jeecgframework.minidao.annotation.Sql;
import com.jeecg.demo.entity.JeecgDemoEntity;
import com.jeecg.demo.entity.JeecgLogReport;
/**
* Minidao
*
*/
@MiniDao
public interface JeecgMinidaoDao {
@Arguments("pid")
@Sql("select ID,NAME,PID from t_s_region where pid=:pid order by name_en")
List<Map<String, String>> getProCity(String pid);
@Sql("select ID,NAME,PID from t_s_region order by name_en")
List<Map<String, String>> getAllRegions();
@Arguments({"jeecgDemo", "page", "rows"})
@ResultType(JeecgDemoEntity.class)
public List<JeecgDemoEntity> getAllEntities(JeecgDemoEntity jeecgDemo, int page, int rows);
@Sql("SELECT count(*) FROM jeecg_demo")
Integer getCount();
@Sql("SELECT SUM(salary) FROM jeecg_demo")
Integer getSumSalary();
@Arguments("id")
@ResultType(String.class)
@Sql("SELECT org_code FROM t_s_depart where id=:id")
public java.lang.String getOrgCode(String id);
/*@Arguments({"jeecgMinidao", "page", "rows"})
public List<Map> getAllEntities(JeecgMinidaoEntity jeecgMinidao, int page, int rows);
@Arguments({"jeecgMinidao", "page", "rows"})
@ResultType(JeecgMinidaoEntity.class)
public List<JeecgMinidaoEntity> getAllEntities2(JeecgMinidaoEntity jeecgMinidao, int page, int rows);*/
//@Arguments("id")
//JeecgMinidaoEntity getJeecgMinidao(String id);
/*
*/
/*@Arguments("jeecgMinidao")
int update(JeecgMinidaoEntity jeecgMinidao);
@Arguments("jeecgMinidao")
void insert(JeecgMinidaoEntity jeecgMinidao);
@Arguments("jeecgMinidao")
void delete(JeecgMinidaoEntity jeecgMinidao);*/
@Arguments("log")
@ResultType(JeecgLogReport.class)
List<JeecgLogReport> getLogReportData(JeecgLogReport log);
@Arguments("log")
List<Map<String, Object>> getLogChartData(JeecgLogReport log);
}

@ -0,0 +1,390 @@
package com.jeecg.demo.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
import org.jeecgframework.poi.excel.annotation.Excel;
/**
* @Title: Entity
* @Description: jeecg_demo
* @author onlineGenerator
* @date 2017-03-22 20:11:23
* @version V1.0
*
*/
@Entity
@Table(name = "jeecg_demo", schema = "")
@SuppressWarnings("serial")
public class JeecgDemoEntity implements java.io.Serializable {
/**id*/
private java.lang.String id;
/**名称*/
@Excel(name="名称",width=32)
private java.lang.String name;
/**年龄*/
@Excel(name="年龄")
private java.lang.Integer age;
/**生日*/
@Excel(name="生日",format = "yyyy-MM-dd")
private java.util.Date birthday;
/**个人介绍*/
@Excel(name="个人介绍")
private java.lang.String content;
/**部门*/
@Excel(name="部门",dictTable="t_s_depart",dicCode="id",dicText="departname")
private java.lang.String depId;
/**邮箱*/
@Excel(name="邮箱",width=32)
private java.lang.String email;
/**电话*/
@Excel(name="电话",width=12)
private java.lang.String phone;
/**工资*/
@Excel(name="工资")
private java.lang.String salary;
/**性别*/
@Excel(name="性别",dicCode="sex")
private java.lang.String sex;
/**入职状态*/
@Excel(name="入职状态",dicCode="sf_yn")
private java.lang.String status;
/**createDate*/
private java.util.Date createDate;
/**创建人id*/
private java.lang.String createBy;
/**创建人*/
private java.lang.String createName;
/**修改人id*/
private java.lang.String updateBy;
/**修改时间*/
private java.util.Date updateDate;
/**修改人*/
private java.lang.String updateName;
/** 组织 */
@Excel(name="部门编码",width=200)
private java.lang.String sysOrgCode;
/** 公司 */
private java.lang.String sysCompanyCode;
private java.lang.String touxiang;
private java.lang.String fujian;
/**
*: java.lang.String
*@return: java.lang.String id
*/
@Id
@GeneratedValue(generator = "paymentableGenerator")
@GenericGenerator(name = "paymentableGenerator", strategy = "uuid")
@Column(name ="ID",nullable=false,length=32)
public java.lang.String getId(){
return this.id;
}
/**
*: java.lang.String
*@param: java.lang.String id
*/
public void setId(java.lang.String id){
this.id = id;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="NAME",nullable=false,length=255)
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.Integer
*@return: java.lang.Integer
*/
@Column(name ="AGE",nullable=true,length=10)
public java.lang.Integer getAge(){
return this.age;
}
/**
*: java.lang.Integer
*@param: java.lang.Integer
*/
public void setAge(java.lang.Integer age){
this.age = age;
}
/**
*: java.util.Date
*@return: java.util.Date
*/
@Column(name ="BIRTHDAY",nullable=true)
public java.util.Date getBirthday(){
return this.birthday;
}
/**
*: java.util.Date
*@param: java.util.Date
*/
public void setBirthday(java.util.Date birthday){
this.birthday = birthday;
}
/**
*: 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;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="DEP_ID",nullable=true,length=255)
public java.lang.String getDepId(){
return this.depId;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setDepId(java.lang.String depId){
this.depId = depId;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="EMAIL",nullable=true,length=255)
public java.lang.String getEmail(){
return this.email;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setEmail(java.lang.String email){
this.email = email;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="PHONE",nullable=true,length=255)
public java.lang.String getPhone(){
return this.phone;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setPhone(java.lang.String phone){
this.phone = phone;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="SALARY",nullable=true,scale=2,length=19)
public java.lang.String getSalary(){
return this.salary;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setSalary(java.lang.String salary){
this.salary = salary;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="SEX",nullable=true,length=255)
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 ="STATUS",nullable=true,length=255)
public java.lang.String getStatus(){
return this.status;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setStatus(java.lang.String status){
this.status = status;
}
/**
*: java.util.Date
*@return: java.util.Date createDate
*/
@Column(name ="CREATE_DATE",nullable=true)
public java.util.Date getCreateDate(){
return this.createDate;
}
/**
*: java.util.Date
*@param: java.util.Date createDate
*/
public void setCreateDate(java.util.Date createDate){
this.createDate = createDate;
}
/**
*: java.lang.String
*@return: java.lang.String id
*/
@Column(name ="CREATE_BY",nullable=true,length=32)
public java.lang.String getCreateBy(){
return this.createBy;
}
/**
*: java.lang.String
*@param: java.lang.String id
*/
public void setCreateBy(java.lang.String createBy){
this.createBy = createBy;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="CREATE_NAME",nullable=true,length=32)
public java.lang.String getCreateName(){
return this.createName;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setCreateName(java.lang.String createName){
this.createName = createName;
}
/**
*: java.lang.String
*@return: java.lang.String id
*/
@Column(name ="UPDATE_BY",nullable=true,length=32)
public java.lang.String getUpdateBy(){
return this.updateBy;
}
/**
*: java.lang.String
*@param: java.lang.String id
*/
public void setUpdateBy(java.lang.String updateBy){
this.updateBy = updateBy;
}
/**
*: java.util.Date
*@return: java.util.Date
*/
@Column(name ="UPDATE_DATE",nullable=true)
public java.util.Date getUpdateDate(){
return this.updateDate;
}
/**
*: java.util.Date
*@param: java.util.Date
*/
public void setUpdateDate(java.util.Date updateDate){
this.updateDate = updateDate;
}
/**
*: java.lang.String
*@return: java.lang.String
*/
@Column(name ="UPDATE_NAME",nullable=true,length=32)
public java.lang.String getUpdateName(){
return this.updateName;
}
/**
*: java.lang.String
*@param: java.lang.String
*/
public void setUpdateName(java.lang.String updateName){
this.updateName = updateName;
}
@Column(name = "sys_org_code", nullable = true, length = 15)
public java.lang.String getSysOrgCode() {
return sysOrgCode;
}
public void setSysOrgCode(java.lang.String sysOrgCode) {
this.sysOrgCode = sysOrgCode;
}
@Column(name = "sys_company_code", nullable = true, length = 15)
public java.lang.String getSysCompanyCode() {
return sysCompanyCode;
}
public void setSysCompanyCode(java.lang.String sysCompanyCode) {
this.sysCompanyCode = sysCompanyCode;
}
@Column(name = "touxiang", nullable = true, length = 255)
public java.lang.String getTouxiang() {
return touxiang;
}
public void setTouxiang(java.lang.String touxiang) {
this.touxiang = touxiang;
}
@Column(name = "fujian", nullable = true, length = 255)
public java.lang.String getFujian() {
return fujian;
}
public void setFujian(java.lang.String fujian) {
this.fujian = fujian;
}
}

@ -0,0 +1,17 @@
package com.jeecg.demo.entity;
import java.util.List;
/**
*/
public class JeecgDemoPage {
private List<JeecgDemoEntity> demos;
public List<JeecgDemoEntity> getDemos() {
return demos;
}
public void setDemos(List<JeecgDemoEntity> demos) {
this.demos = demos;
}
}

@ -0,0 +1,84 @@
package com.jeecg.demo.entity;
import java.util.Date;
public class JeecgLogReport {
private String id;
private String name;
private int ct;
private int loginct;
private int outct;
private int xgct;
public int getOutct() {
return outct;
}
public void setOutct(int outct) {
this.outct = outct;
}
public int getXgct() {
return xgct;
}
public void setXgct(int xgct) {
this.xgct = xgct;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getCt() {
return ct;
}
public void setCt(int ct) {
this.ct = ct;
}
public int getLoginct() {
return loginct;
}
public void setLoginct(int loginct) {
this.loginct = loginct;
}
private Date beginDate;
private Date endDate;
public Date getBeginDate() {
return beginDate;
}
public void setBeginDate(Date beginDate) {
this.beginDate = beginDate;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
private int value;
private String color;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}

@ -0,0 +1,17 @@
package com.jeecg.demo.service;
import com.jeecg.demo.entity.JeecgDemoEntity;
import org.jeecgframework.core.common.service.CommonService;
import java.io.Serializable;
public interface JeecgDemoServiceI extends CommonService{
public void delete(JeecgDemoEntity entity) throws Exception;
public Serializable save(JeecgDemoEntity entity) throws Exception;
public void saveOrUpdate(JeecgDemoEntity entity) throws Exception;
}

@ -0,0 +1,137 @@
package com.jeecg.demo.service.impl;
import com.jeecg.demo.service.JeecgDemoServiceI;
import org.jeecgframework.core.common.service.impl.CommonServiceImpl;
import com.jeecg.demo.entity.JeecgDemoEntity;
import org.springframework.dao.support.DaoSupport;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import java.io.Serializable;
import org.jeecgframework.core.util.ApplicationContextUtil;
import org.jeecgframework.core.util.MyClassLoader;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.web.cgform.enhance.CgformEnhanceJavaInter;
@Service("jeecgDemoService")
@Transactional
public class JeecgDemoServiceImpl extends CommonServiceImpl implements JeecgDemoServiceI {
public void delete(JeecgDemoEntity entity) throws Exception{
super.delete(entity);
//执行删除操作增强业务
this.doDelBus(entity);
}
public Serializable save(JeecgDemoEntity entity) throws Exception{
Serializable t = super.save(entity);
//执行新增操作增强业务
this.doAddBus(entity);
return t;
}
public void saveOrUpdate(JeecgDemoEntity entity) throws Exception{
super.saveOrUpdate(entity);
//执行更新操作增强业务
this.doUpdateBus(entity);
}
/**
*
* @param t
* @return
*/
private void doAddBus(JeecgDemoEntity t) throws Exception{
}
/**
*
* @param t
* @return
*/
private void doUpdateBus(JeecgDemoEntity t) throws Exception{
}
/**
*
* @param id
* @return
*/
private void doDelBus(JeecgDemoEntity t) throws Exception{
}
private Map<String,Object> populationMap(JeecgDemoEntity t){
Map<String,Object> map = new HashMap<String,Object>();
map.put("id", t.getId());
map.put("name", t.getName());
map.put("age", t.getAge());
map.put("birthday", t.getBirthday());
map.put("content", t.getContent());
map.put("dep_id", t.getDepId());
map.put("email", t.getEmail());
map.put("phone", t.getPhone());
map.put("salary", t.getSalary());
map.put("sex", t.getSex());
map.put("status", t.getStatus());
map.put("create_date", t.getCreateDate());
map.put("create_by", t.getCreateBy());
map.put("create_name", t.getCreateName());
map.put("update_by", t.getUpdateBy());
map.put("update_date", t.getUpdateDate());
map.put("update_name", t.getUpdateName());
return map;
}
/**
* sql
* @param sql
* @param t
* @return
*/
public String replaceVal(String sql,JeecgDemoEntity t){
sql = sql.replace("#{id}",String.valueOf(t.getId()));
sql = sql.replace("#{name}",String.valueOf(t.getName()));
sql = sql.replace("#{age}",String.valueOf(t.getAge()));
sql = sql.replace("#{birthday}",String.valueOf(t.getBirthday()));
sql = sql.replace("#{content}",String.valueOf(t.getContent()));
sql = sql.replace("#{dep_id}",String.valueOf(t.getDepId()));
sql = sql.replace("#{email}",String.valueOf(t.getEmail()));
sql = sql.replace("#{phone}",String.valueOf(t.getPhone()));
sql = sql.replace("#{salary}",String.valueOf(t.getSalary()));
sql = sql.replace("#{sex}",String.valueOf(t.getSex()));
sql = sql.replace("#{status}",String.valueOf(t.getStatus()));
sql = sql.replace("#{create_date}",String.valueOf(t.getCreateDate()));
sql = sql.replace("#{create_by}",String.valueOf(t.getCreateBy()));
sql = sql.replace("#{create_name}",String.valueOf(t.getCreateName()));
sql = sql.replace("#{update_by}",String.valueOf(t.getUpdateBy()));
sql = sql.replace("#{update_date}",String.valueOf(t.getUpdateDate()));
sql = sql.replace("#{update_name}",String.valueOf(t.getUpdateName()));
sql = sql.replace("#{UUID}",UUID.randomUUID().toString());
return sql;
}
/**
* JAVA
*/
private void executeJavaExtend(String cgJavaType,String cgJavaValue,Map<String,Object> data) throws Exception {
if(StringUtil.isNotEmpty(cgJavaValue)){
Object obj = null;
try {
if("class".equals(cgJavaType)){
//因新增时已经校验了实例化是否可以成功,所以这块就不需要再做一次判断
obj = MyClassLoader.getClassByScn(cgJavaValue).newInstance();
}else if("spring".equals(cgJavaType)){
obj = ApplicationContextUtil.getContext().getBean(cgJavaValue);
}
if(obj instanceof CgformEnhanceJavaInter){
CgformEnhanceJavaInter javaInter = (CgformEnhanceJavaInter) obj;
javaInter.execute("jeecg_demo",data);
}
} catch (Exception e) {
e.printStackTrace();
throw new Exception("执行JAVA增强出现异常");
}
}
}
}

@ -0,0 +1,25 @@
SELECT * FROM jeecg_demo WHERE 1=1
<#if jeecgDemo.name ?exists && jeecgDemo.name ?length gt 0>
and name = :jeecgDemo.name
</#if>
<#if jeecgDemo.age ?exists && jeecgDemo.age ?length gt 0>
and age = :jeecgDemo.age
</#if>
<#if jeecgDemo.depId ?exists && jeecgDemo.depId ?length gt 0>
and dep_id = :jeecgDemo.depId
</#if>
<#if jeecgDemo.email ?exists && jeecgDemo.email ?length gt 0>
and email = :jeecgDemo.email
</#if>
<#if jeecgDemo.phone ?exists && jeecgDemo.phone ?length gt 0>
and phone = :jeecgDemo.phone
</#if>
<#if jeecgDemo.salary ?exists && jeecgDemo.salary ?length gt 0>
and salary = :jeecgDemo.salary
</#if>
<#if jeecgDemo.sex ?exists && jeecgDemo.sex ?length gt 0>
and sex = :jeecgDemo.sex
</#if>
<#if jeecgDemo.status ?exists && jeecgDemo.status ?length gt 0>
and status = :jeecgDemo.status
</#if>

@ -0,0 +1,15 @@
SELECT
broswer as name,
count(1) as 'value',
CASE
WHEN broswer = 'Firefox' THEN
'#FF00FF'
WHEN broswer = 'IE' THEN
'#FFFF00'
ELSE
'#43CD80'
END as color
FROM
t_s_log
GROUP BY
broswer;

@ -0,0 +1,34 @@
SELECT
a.userid as id,
b.username as name,
count(*) as ct,
sum(
CASE
WHEN RIGHT (logcontent, 4) IN ('登录成功', 'cess') THEN
1
ELSE
0
END
) as loginct,
sum(
CASE
WHEN RIGHT (logcontent, 2) = '退出' THEN
1
ELSE
0
END
) as outct,
sum(
CASE
WHEN RIGHT (logcontent, 4) IN ('删除成功', '更新成功','录入成功') THEN
1
ELSE
0
END
) as xgct
FROM
t_s_log a join t_s_base_user b on b.id=a.userid
GROUP BY
a.userid
ORDER BY
ct DESC

@ -25,17 +25,17 @@ import com.alibaba.fastjson.JSON;
@Component
@Aspect
public class EhcacheAspect {
private static Cache dictCache;
private static Cache eternalCache;
static {
if (eternalCache == null) {
eternalCache = CacheManager.getInstance().getCache("eternalCache");
}
if (dictCache == null) {
dictCache = CacheManager.getInstance().getCache("dictCache");
}
}
// private static Cache dictCache;
// private static Cache eternalCache;
//
// static {
// if (eternalCache == null) {
// eternalCache = CacheManager.getInstance().getCache("eternalCache");
// }
// if (dictCache == null) {
// dictCache = CacheManager.getInstance().getCache("dictCache");
// }
// }
@Pointcut("@annotation(org.jeecgframework.core.annotation.Ehcache)")
public void simplePointcut() {
@ -48,6 +48,10 @@ public class EhcacheAspect {
@Around("simplePointcut()")
public Object aroundLogCalls(ProceedingJoinPoint joinPoint)
throws Throwable {
Cache eternalCache = CacheManager.getInstance().getCache("eternalCache");
Cache dictCache = CacheManager.getInstance().getCache("eternalCache");
String targetName = joinPoint.getTarget().getClass().toString();
String methodName = joinPoint.getSignature().getName();
Object[] arguments = joinPoint.getArgs();

@ -65,6 +65,7 @@ public interface ICommonDao extends IGenericBaseCommonDao{
* @return List<ComboTree>
*/
public List<ComboTree> ComboTree(List all, ComboTreeModel comboTreeModel, List in, boolean recursive);
public List<TreeGrid> treegrid(List all,TreeGridModel treeGridModel);
}

@ -328,4 +328,5 @@ public interface IGenericBaseCommonDao {
* @param execute
*/
public <T> List<T> executeProcedure(String procedureSql,Object... params);
}

@ -65,6 +65,7 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
return users.get(0);
}
}
return null;
}
@ -181,7 +182,9 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
}
if (uploadFile.getByteField() != null) {
// 二进制文件保存在数据库中
// reflectHelper.setMethodValue(uploadFile.getByteField(), StreamUtils.InputStreamTOByte(mf.getInputStream()));
}
File savefile = new File(savePath);
if (uploadFile.getRealPath() != null) {
@ -190,6 +193,7 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
}
saveOrUpdate(object);
// 文件拷贝到指定硬盘目录
if("txt".equals(extend)){
//利用utf-8字符集的固定首行隐藏编码原理
//Unicode:FF FE UTF-8:EF BB
@ -208,11 +212,13 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
out.close();
}
} else {
//GBK
String contents = new String(mf.getBytes(),"GBK");
OutputStream out = new FileOutputStream(savePath);
out.write(contents.getBytes());
out.close();
}
} catch(Exception e){
String contents = new String(mf.getBytes(),"UTF-8");
@ -226,6 +232,7 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
FileCopyUtils.copy(mf.getBytes(), savefile);
}
// if (uploadFile.getSwfpath() != null) {
// // 转SWF
// reflectHelper.setMethodValue(uploadFile.getSwfpath(), path + swfName + ".swf");
@ -489,7 +496,9 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
for (Object obj : all) {
trees.add(comboTree(obj, comboTreeModel, in, recursive));
}
all.clear();
return trees;
}
@ -545,6 +554,7 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
if(curChildList!=null){
curChildList.clear();
}
return tree;
}
/**
@ -648,6 +658,7 @@ public class CommonDao extends GenericBaseCommonDao implements ICommonDao, IGene
String iconStyle = oConvertUtils.getString(reflectHelper.getMethodValue(treeGridModel.getIconStyle()));
tg.setIconStyle(iconStyle);
}
treegrid.add(tg);
}
return treegrid;

@ -44,6 +44,7 @@ import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.core.util.ToEntityUtil;
import org.jeecgframework.core.util.oConvertUtils;
import org.jeecgframework.tag.vo.datatable.DataTableReturn;
import org.jeecgframework.tag.vo.datatable.SortDirection;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.dao.DataAccessException;
@ -681,10 +682,8 @@ public abstract class GenericBaseCommonDao<T, PK extends Serializable>
} else {
pageSize = allCounts;
}
DetachedCriteriaUtil.selectColumn(cq.getDetachedCriteria(), cq
.getField().split(","), cq.getEntityClass(), false);
return new DataTableReturn(allCounts, allCounts, cq.getDataTables()
.getEcho(), criteria.list());
DetachedCriteriaUtil.selectColumn(cq.getDetachedCriteria(), cq.getField().split(","), cq.getEntityClass(), false);
return new DataTableReturn(allCounts, allCounts, cq.getDataTables().getEcho(), criteria.list());
}
/**
@ -692,28 +691,47 @@ public abstract class GenericBaseCommonDao<T, PK extends Serializable>
*/
public DataGridReturn getDataGridReturn(final CriteriaQuery cq,
final boolean isOffset) {
Criteria criteria = cq.getDetachedCriteria().getExecutableCriteria(
getSession());
Criteria criteria = cq.getDetachedCriteria().getExecutableCriteria(getSession());
CriteriaImpl impl = (CriteriaImpl) criteria;
// 先把Projection和OrderBy条件取出来,清空两者来执行Count操作
Projection projection = impl.getProjection();
final int allCounts = ((Long) criteria.setProjection(
Projections.rowCount()).uniqueResult()).intValue();
final int allCounts = ((Long) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();
criteria.setProjection(projection);
if (projection == null) {
criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
}
if (StringUtils.isNotBlank(cq.getDataGrid().getSort())) {
cq.addOrder(cq.getDataGrid().getSort(), cq.getDataGrid().getOrder());
String []sortArr = cq.getDataGrid().getSort().split(",");
String []orderArr = cq.getDataGrid().getOrder().split(",");
if(sortArr.length==orderArr.length){
for(int i=0;i<sortArr.length;i++){
// cq.addOrder(sortArr[i], SortDirection.toEnum(orderArr[i]));
if (SortDirection.asc.equals(SortDirection.toEnum(orderArr[i]))) {
cq.getDetachedCriteria().addOrder(Order.asc(sortArr[i]));
} else {
cq.getDetachedCriteria().addOrder(Order.desc(sortArr[i]));
}
}
}else if(orderArr.length>0){
for(int i=0;i<sortArr.length;i++){
// cq.addOrder(sortArr[i], SortDirection.toEnum(orderArr[0]));
if (SortDirection.asc.equals(SortDirection.toEnum(orderArr[0]))) {
cq.getDetachedCriteria().addOrder(Order.asc(sortArr[i]));
} else {
cq.getDetachedCriteria().addOrder(Order.desc(sortArr[i]));
}
}
}
}
// 判断是否有排序字段
if (!cq.getOrdermap().isEmpty()) {
cq.setOrder(cq.getOrdermap());
}
// if (!cq.getOrdermap().isEmpty()) {
// cq.setOrder(cq.getOrdermap());
// }
int pageSize = cq.getPageSize();// 每页显示数
int curPageNO = PagerUtil.getcurPageNo(allCounts, cq.getCurPage(),
pageSize);// 当前页
int curPageNO = PagerUtil.getcurPageNo(allCounts, cq.getCurPage(),pageSize);// 当前页
int offset = PagerUtil.getOffset(allCounts, curPageNO, pageSize);
if (isOffset) {// 是否分页
criteria.setFirstResult(offset);
@ -882,9 +900,9 @@ public abstract class GenericBaseCommonDao<T, PK extends Serializable>
*
*/
public Long getCountForJdbcParam(String sql, Object[] objs) {
//-- update-begin author xugj date:20160103 for: #851 controller 单元测试升级spring 版本 -->
return this.jdbcTemplate.queryForObject(sql, objs,Long.class);
//-- update-end author xugj date:20160103 for: #851 controller 单元测试升级spring 版本 -->
}
@ -907,14 +925,11 @@ public abstract class GenericBaseCommonDao<T, PK extends Serializable>
Object keyValue = null;
KeyHolder keyHolder = null;
SqlParameterSource sqlp = new MapSqlParameterSource(param);
//update-begin--Author: jg_huangxg Date: 20150625 for[bugfree号]oc时,录入数据在Oracle下 数据写入错误--------------------
if (StringUtil.isNotEmpty(param.get("id"))) {//表示已经生成过id(UUID),则表示是非序列或数据库自增的形式
this.namedParameterJdbcTemplate.update(sql,sqlp);
//--authorzhoujf---start------date:20170216--------for:自定义表单保存数据格sqlserver报错问题
}else if (StringUtil.isNotEmpty(param.get("ID"))) {//表示已经生成过id(UUID),则表示是非序列或数据库自增的形式
this.namedParameterJdbcTemplate.update(sql,sqlp);
//--authorzhoujf---end------date:20170216--------for:自定义表单保存数据格sqlserver报错问题
}else{//NATIVE or SEQUENCE
keyHolder = new GeneratedKeyHolder();
this.namedParameterJdbcTemplate.update(sql,sqlp, keyHolder, new String[]{"id"});
@ -923,14 +938,13 @@ public abstract class GenericBaseCommonDao<T, PK extends Serializable>
keyValue = keyHolder.getKey().longValue();
}
}
//update-end--Author: jg_huangxg Date: 20150625 for[bugfree号]oc时,录入数据在Oracle下 数据写入错误----------------------
return keyValue;
}
public Integer countByJdbc(String sql, Object... param) {
//-- update-begin author xugj date:20160103 for: #851 controller 单元测试升级spring 版本 -->
return this.jdbcTemplate.queryForObject(sql, param,Integer.class);
//-- update-end author xugj date:20160103 for: #851 controller 单元测试升级spring 版本 -->
}
@ -986,7 +1000,6 @@ public abstract class GenericBaseCommonDao<T, PK extends Serializable>
return dc.getExecutableCriteria(getSession()).list();
}
//update-begin--Author:luobaoli Date:20150710 for增加执行存储过程方法
/**
*
*/
@ -1000,5 +1013,5 @@ public abstract class GenericBaseCommonDao<T, PK extends Serializable>
return sqlQuery.list();
}
//update-end--Author:luobaoli Date:20150710 for增加执行存储过程方法
}

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

@ -33,6 +33,7 @@ public class SimpleJdbcTemplate {
simpleJdbcInsert=new SimpleJdbcInsert(dataSource);
}
/**
* sql
* @param sql(select * from tb where id=:id)
@ -68,8 +69,10 @@ public class SimpleJdbcTemplate {
if(parameters!=null){
return jdbcTemplate.queryForObject(sql, resultBeanMapper(clazz), parameters);
}else{
return jdbcTemplate.queryForObject(sql, resultBeanMapper(clazz),Long.class);
}
}catch (Exception e) {
return null;
@ -85,11 +88,13 @@ public class SimpleJdbcTemplate {
public long findForLong(final String sql,Map parameters){
try{
Assert.hasText(sql,"sql语句不正确!");
if(parameters!=null){
return namedJdbcTemplate.queryForObject(sql, parameters,Long.class);
}else{
return jdbcTemplate.queryForObject(sql,Long.class);
}
}catch (Exception e) {
return 0;
}
@ -189,6 +194,7 @@ public class SimpleJdbcTemplate {
return BeanPropertyRowMapper.newInstance(clazz);
}
protected BeanPropertySqlParameterSource paramBeanMapper(Object object) {
return new BeanPropertySqlParameterSource(object);
}

@ -1,6 +1,5 @@
package org.jeecgframework.core.common.hibernate.qbc;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@ -26,8 +25,7 @@ import org.jeecgframework.tag.vo.datatable.SortInfo;
*@date 2012-12-7 10:22:15
*@version 1.0
*/
@SuppressWarnings({"rawtypes","static-access"})
public class CriteriaQuery implements Serializable {
public class CriteriaQuery {
public CriteriaQuery() {
}
@ -45,15 +43,18 @@ public class CriteriaQuery implements Serializable {
private static Map<String, Object> ordermap;//排序字段
private boolean flag = true;// 对同一字段进行第二次重命名查询时值设置FASLE不保存重命名查询条件
private String field="";//查询需要显示的字段
private Class entityClass;//POJO
private List results;// 结果集
private Class<?> entityClass;//POJO
private List<?> results;// 结果集
private int total;
private List<String> alias = new ArrayList<String>();//保存创建的aliasName 防止重复创建
public List getResults() {
private DataGrid dataGrid;
private DataTables dataTables;
public List<?> getResults() {
return results;
}
public void setResults(List results) {
public void setResults(List<?> results) {
this.results = results;
}
@ -65,9 +66,6 @@ public class CriteriaQuery implements Serializable {
this.total = total;
}
private DataGrid dataGrid;
private DataTables dataTables;
public DataTables getDataTables() {
return dataTables;
}
@ -84,11 +82,11 @@ public class CriteriaQuery implements Serializable {
this.dataGrid = dataGrid;
}
public Class getEntityClass() {
public Class<?> getEntityClass() {
return entityClass;
}
public void setEntityClass(Class entityClass) {
public void setEntityClass(Class<?> entityClass) {
this.entityClass = entityClass;
}
public CriterionList getJqcriterionList() {
@ -99,20 +97,20 @@ public class CriteriaQuery implements Serializable {
this.jqcriterionList = jqcriterionList;
}
public CriteriaQuery(Class c) {
public CriteriaQuery(Class<?> c) {
this.detachedCriteria = DetachedCriteria.forClass(c);
this.map = new HashMap<String, Object>();
this.ordermap = new HashMap<String, Object>();
}
public CriteriaQuery(Class c, int curPage, String myAction, String myForm) {
public CriteriaQuery(Class<?> c, int curPage, String myAction, String myForm) {
this.curPage = curPage;
this.myAction = myAction;
this.myForm = myForm;
this.detachedCriteria = DetachedCriteria.forClass(c);
}
public CriteriaQuery(Class c, int curPage, String myAction) {
public CriteriaQuery(Class<?> c, int curPage, String myAction) {
this.myAction = myAction;
this.curPage = curPage;
this.detachedCriteria = DetachedCriteria.forClass(c);
@ -120,12 +118,12 @@ public class CriteriaQuery implements Serializable {
this.ordermap = new HashMap<String, Object>();
}
public CriteriaQuery(Class entityClass, int curPage) {
public CriteriaQuery(Class<?> entityClass, int curPage) {
this.curPage = curPage;
this.detachedCriteria = DetachedCriteria.forClass(entityClass);
this.map = new HashMap<String, Object>();
}
public CriteriaQuery(Class entityClass,DataGrid dg) {
public CriteriaQuery(Class<?> entityClass,DataGrid dg) {
this.curPage = dg.getPage();
//String[] fieldstring=dg.getField().split(",");
//this.detachedCriteria = DetachedCriteriaUtil
@ -235,7 +233,7 @@ public class CriteriaQuery implements Serializable {
}
}
public void setResultTransformer(Class class1) {
public void setResultTransformer(Class<?> class1) {
detachedCriteria.setResultTransformer(Transformers.aliasToBean(class1));
}
@ -702,4 +700,21 @@ public class CriteriaQuery implements Serializable {
this.flag = flag;
}
public void clear(){
criterionList.clear();
jqcriterionList.clear();
jqcriterionList.clear();
map.clear();
ordermap.clear();
entityClass=null;
alias.clear();
dataGrid.clear();
criterionList = null;
jqcriterionList = null;
jqcriterionList = null;
map = null;
ordermap = null;
alias = null;
dataGrid = null;
}
}

@ -49,7 +49,9 @@ public class PagerUtil {
int offset = 0;
try {
if (curPageNO > (int) Math.ceil((double) rowCounts / pageSize))
curPageNO = (int) Math.ceil((double) rowCounts / pageSize);
curPageNO = (int) Math.ceil((double) rowCounts / pageSize) + 1;
// 得到第几页
if (curPageNO <= 1)
curPageNO = 1;
@ -65,7 +67,9 @@ public class PagerUtil {
try {
// 得到第几页
if (curPageNO > (int) Math.ceil((double) rowCounts / pageSize))
curPageNO = (int) Math.ceil((double) rowCounts / pageSize);
curPageNO = (int) Math.ceil((double) rowCounts / pageSize) + 1;
if (curPageNO <= 1)
curPageNO = 1;
} catch (Exception e) {

@ -0,0 +1,34 @@
package org.jeecgframework.core.common.model.common;
/**
*
*
* @authorzhoujf
* @since2017-3-15 04:29:56
* @version:1.0
*/
public class TreeChildCount {
private String parentId;
private Long count;
public TreeChildCount(String parentId, Long count) {
this.parentId = parentId;
this.count = count;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public Long getCount() {
return count;
}
public void setCount(Long count) {
this.count = count;
}
}

@ -4,7 +4,6 @@ import java.util.List;
import org.jeecgframework.core.util.ContextHolderUtils;
import org.jeecgframework.core.util.ResourceUtil;
import org.jeecgframework.tag.vo.datatable.SortDirection;
/**
@ -18,7 +17,9 @@ public class DataGrid {
private int page = 1;// 当前页
private int rows = 10;// 每页显示记录数
private String sort = null;// 排序字段名
private SortDirection order = SortDirection.asc;// 按什么排序(asc,desc)
private String order = "asc";// 按什么排序(asc,desc)
private String field;//字段
private String treefield;//树形数据表文本字段
private List results;// 结果集
@ -26,6 +27,19 @@ public class DataGrid {
private String footer;//合计列
private String sqlbuilder;//合计列
//数据格式
private String dataStyle = "easyui";
public String getDataStyle() {
return dataStyle;
}
public void setDataStyle(String dataStyle) {
this.dataStyle = dataStyle;
}
public String getSqlbuilder() {
return sqlbuilder;
}
@ -85,13 +99,22 @@ public class DataGrid {
this.sort = sort;
}
public SortDirection getOrder() {
// public SortDirection getOrder() {
// return order;
// }
//
// public void setOrder(SortDirection order) {
// this.order = order;
// }
public String getOrder() {
return order;
}
public void setOrder(SortDirection order) {
public void setOrder(String order) {
this.order = order;
}
public String getTreefield() {
return treefield;
}
@ -108,4 +131,10 @@ public class DataGrid {
this.footer = footer;
}
public void clear(){
if(results!=null){
results.clear();
results = null;
}
}
}

@ -10,15 +10,15 @@ import java.util.List;
*/
public class DataGridReturn {
private Integer total;// 总记录数
private List rows;// 每行记录
private List footer;
public DataGridReturn(Integer total, List rows) {
this.total = total;
this.rows = rows;
}
private Integer total;// 总记录数
private List rows;// 每行记录
private List footer;
public Integer getTotal() {
return total;
}

@ -19,8 +19,10 @@ public class TreeGrid implements java.io.Serializable {
private String order;//排序
private Map<String, Object> fieldMap; // 存储实体字段信息容器: key-字段名称value-字段值
private String functionType;// 其他参数
private String iconStyle;//菜单图表样式
public String getFunctionType() {
return functionType;
}
@ -117,7 +119,9 @@ public class TreeGrid implements java.io.Serializable {
", 'operations':'" + operations + '\'' +
", 'state':'" + state + '\'' +
", 'order':'" + order + '\'' +
", 'iconStyle':'" + iconStyle + '\'' +
assembleFieldsJson() +
'}';
}
@ -133,6 +137,7 @@ public class TreeGrid implements java.io.Serializable {
}
return fieldsJson;
}
public String getIconStyle() {
return iconStyle;
}
@ -140,4 +145,5 @@ public class TreeGrid implements java.io.Serializable {
this.iconStyle = iconStyle;
}
}

@ -258,6 +258,7 @@ public interface CommonService {
*/
public List<ComboTree> ComboTree(List all, ComboTreeModel comboTreeModel, List in, boolean recursive);
/**
*
*
@ -358,4 +359,5 @@ public interface CommonService {
* @return
*/
public <T> List<T> executeProcedure(String procedureSql,Object... params);
}

@ -354,14 +354,10 @@ public class CommonServiceImpl implements CommonService {
public <T> List<T> getAutoList(Autocomplete autocomplete) {
StringBuffer sb = new StringBuffer("");
for (String searchField : autocomplete.getSearchField().split(",")) {
sb.append(" or " + searchField + " like '%"
+ autocomplete.getTrem() + "%' ");
sb.append(" or " + searchField + " like '%"+ autocomplete.getTrem() + "%' ");
}
String hql = "from " + autocomplete.getEntityName() + " where 1!=1 "
+ sb.toString();
return commonDao.getSession().createQuery(hql)
.setFirstResult(autocomplete.getCurPage() - 1)
.setMaxResults(autocomplete.getMaxRows()).list();
String hql = "from " + autocomplete.getEntityName() + " where 1!=1 "+ sb.toString();
return commonDao.getSession().createQuery(hql).setFirstResult(autocomplete.getCurPage() - 1).setMaxResults(autocomplete.getMaxRows()).list();
}
@ -413,7 +409,6 @@ public class CommonServiceImpl implements CommonService {
public Long getCountForJdbc(String sql) {
return commonDao.getCountForJdbc(sql);
}
public Long getCountForJdbcParam(String sql, Object[] objs) {
return commonDao.getCountForJdbcParam(sql,objs);
}
@ -449,4 +444,5 @@ public class CommonServiceImpl implements CommonService {
public <T> List<T> executeProcedure(String procedureSql,Object... params) {
return this.commonDao.executeProcedure(procedureSql, params);
}
}

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

@ -10,19 +10,33 @@ import org.jeecgframework.core.util.StringUtil;
*/
public enum OnlineGenerateEnum {
//
ONLINE_03("03","Table风格(form)","onetomany", "system"),
ONLINE_06("06","bootstrap风格(form)","onetomany","system"),
ONLINE_01("01","Table风格(form)","single", "system"),
ONLINE_02("02","Div风格(form)","single", "system"),
ONLINE_04("04","自定义word(form)","single", "system"),
ONLINE_05("05","bootstrap风格(form)","single", "system"),
/*ONLINE_07("07","nopopform风格","single","system"),*/
ONLINE_NOPOP_SINGLE("nopop.single","nopopform风格","single","ext"),
ONLINE_DEFAULT_SINGLE("default.single","用户扩展风格示例","single","ext"),
ONLINE_DEFAULT_ONETOMANY("default.onetomany","用户扩展风格示例","onetomany","ext");
/**
* ext
* code src/main/resources/jeecg/ext-template/{code:}
* code = default.single -> src/main/resources/jeecg/ext-template/default/single
*/
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_DEFAULT_SINGLE("default.single","用户扩展风格示例","single","ext"),
// ONLINE_DEFAULT_ONETOMANY("default.onetomany","用户扩展风格示例","onetomany","ext");
/**
* system:
*/
// ONLINE_03("03","TABLE风格(form)","onetomany", "system"),
// ONLINE_01("01","TABLE风格(form)","single", "system"),
// ONLINE_02("02","DIV风格(form)","single", "system"),
// ONLINE_05("05","BootStrap风格(form)","single", "system"),
// ONLINE_06("06","BootStrap风格(form)","onetomany","system");
// ONLINE_04("04","自定义模板(form)","single", "system"),
/*ONLINE_07("07","nopopform风格","single","system"),*/
/**
@ -39,7 +53,7 @@ public enum OnlineGenerateEnum {
*/
private String formType;
/**
* system , ext
* system , ext
*/
private String version;

@ -42,8 +42,7 @@ public class HqlGenerateUtil {
private static final String END = "_end";
private static final String BEGIN = "_begin";
private static final SimpleDateFormat time = new SimpleDateFormat(
"yyyy-MM-dd hh:mm:ss");
private static final SimpleDateFormat time = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
/**
* HQL
@ -65,21 +64,17 @@ public class HqlGenerateUtil {
* @param parameterMap
* request
*/
public static void installHql(CriteriaQuery cq, Object searchObj,
Map<String, String[]> parameterMap) {
public static void installHql(CriteriaQuery cq, Object searchObj,Map<String, String[]> parameterMap) {
installHqlJoinAlias(cq, searchObj, getRuleMap(), parameterMap, "");
try{
String json= null;
if(StringUtil.isNotEmpty(cq.getDataGrid().getSqlbuilder())){
json =cq.getDataGrid().getSqlbuilder();
}else if(parameterMap!=null
&&StringUtil.isNotEmpty(parameterMap.get("sqlbuilder"))){
}else if(parameterMap!=null&&StringUtil.isNotEmpty(parameterMap.get("sqlbuilder"))){
json = parameterMap.get("sqlbuilder")[0];
}
if(StringUtil.isNotEmpty(json)){
List<QueryCondition> list = JSONHelper.toList(
json
, QueryCondition.class);
List<QueryCondition> list = JSONHelper.toList(json , QueryCondition.class);
String sql=getSql(list,"",searchObj.getClass());
LogUtil.debug("DEBUG sqlbuilder:"+sql);
cq.add(Restrictions.sqlRestriction(sql));
@ -103,34 +98,28 @@ public class HqlGenerateUtil {
private static void installHqlJoinAlias(CriteriaQuery cq, Object searchObj,
Map<String, TSDataRule> ruleMap,
Map<String, String[]> parameterMap, String alias) {
PropertyDescriptor origDescriptors[] = PropertyUtils
.getPropertyDescriptors(searchObj);
PropertyDescriptor origDescriptors[] = PropertyUtils.getPropertyDescriptors(searchObj);
String aliasName, name, type;
for (int i = 0; i < origDescriptors.length; i++) {
aliasName = (alias.equals("") ? "" : alias + ".")
+ origDescriptors[i].getName();
aliasName = (alias.equals("") ? "" : alias + ".")+ origDescriptors[i].getName();
name = origDescriptors[i].getName();
type = origDescriptors[i].getPropertyType().toString();
try {
if (judgedIsUselessField(name)
|| !PropertyUtils.isReadable(searchObj, name)) {
if (judgedIsUselessField(name)|| !PropertyUtils.isReadable(searchObj, name)) {
continue;
}
// 如果规则包含这个属性
if (ruleMap.containsKey(aliasName)) {
addRuleToCriteria(ruleMap.get(aliasName), aliasName,
origDescriptors[i].getPropertyType(), cq);
addRuleToCriteria(ruleMap.get(aliasName), aliasName,origDescriptors[i].getPropertyType(), cq);
}
// 添加 判断是否有区间值
String beginValue = null;
String endValue = null;
if (parameterMap != null
&& parameterMap.containsKey(name + BEGIN)) {
if (parameterMap != null&& parameterMap.containsKey(name + BEGIN)) {
beginValue = parameterMap.get(name + BEGIN)[0].trim();
}
if (parameterMap != null
&& parameterMap.containsKey(name + END)) {
if (parameterMap != null&& parameterMap.containsKey(name + END)) {
endValue = parameterMap.get(name + END)[0].trim();
}
@ -149,10 +138,12 @@ public class HqlGenerateUtil {
// rule = HqlRuleEnum.EQ;
// }
value = PageValueConvertRuleEnum.replaceValue(rule,
value);
ObjectParseUtil.addCriteria(cq, aliasName, rule, value);
} else if (parameterMap != null) {
Object beginValue_=null , endValue_ =null;
if ("class java.lang.Integer".equals(type)) {
if(!"".equals(beginValue)&&null!=beginValue)
@ -191,8 +182,7 @@ public class HqlGenerateUtil {
// for查询拼装的替换
} else if ("class java.util.Date".equals(type)) {
QueryTimeFormat format = origDescriptors[i].getReadMethod()
.getAnnotation(QueryTimeFormat.class);
QueryTimeFormat format = origDescriptors[i].getReadMethod().getAnnotation(QueryTimeFormat.class);
SimpleDateFormat userDefined = null;
if (format != null) {
userDefined = new SimpleDateFormat(format.format());
@ -203,8 +193,7 @@ public class HqlGenerateUtil {
} else if (beginValue.length() == 19) {
cq.ge(aliasName, time.parse(beginValue));
} else if (beginValue.length() == 10) {
cq.ge(aliasName,
time.parse(beginValue + " 00:00:00"));
cq.ge(aliasName,time.parse(beginValue + " 00:00:00"));
}
}
if (StringUtils.isNotBlank(endValue)) {
@ -213,27 +202,22 @@ public class HqlGenerateUtil {
} else if (endValue.length() == 19) {
cq.le(aliasName, time.parse(endValue));
} else if (endValue.length() == 10) {
// 对于"yyyy-MM-dd"格式日期因时间默认为0故此添加" 23:23:59"并使用time解析以方便查询日期时间数据
cq.le(aliasName, time.parse(endValue + " 23:23:59"));
// 对于"yyyy-MM-dd"格式日期因时间默认为0故此添加" 23:59:59"并使用time解析以方便查询日期时间数据
cq.le(aliasName, time.parse(endValue + " 23:59:59"));
}
}
if (isNotEmpty(value)) {
cq.eq(aliasName, value);
}
} else if (!StringUtil.isJavaClass(origDescriptors[i]
.getPropertyType())) {
Object param = PropertyUtils.getSimpleProperty(searchObj,
name);
if (isHaveRuleData(ruleMap, aliasName) ||( isNotEmpty(param)
&& itIsNotAllEmpty(param))) {
} else if (!StringUtil.isJavaClass(origDescriptors[i].getPropertyType())) {
Object param = PropertyUtils.getSimpleProperty(searchObj,name);
if (isHaveRuleData(ruleMap, aliasName) ||( isNotEmpty(param)&& itIsNotAllEmpty(param))) {
// 如果是实体类,创建别名,继续创建查询条件
// for用户反馈
cq.createAlias(aliasName,
aliasName.replaceAll("\\.", "_"));
cq.createAlias(aliasName,aliasName.replaceAll("\\.", "_"));
installHqlJoinAlias(cq, param, ruleMap, parameterMap,
aliasName);
installHqlJoinAlias(cq, param, ruleMap, parameterMap,aliasName);
}
}
} catch (Exception e) {
@ -261,15 +245,13 @@ public class HqlGenerateUtil {
private static void addRuleToCriteria(TSDataRule tsDataRule,
String aliasName, Class propertyType, CriteriaQuery cq) {
HqlRuleEnum rule = HqlRuleEnum.getByValue(tsDataRule
.getRuleConditions());
HqlRuleEnum rule = HqlRuleEnum.getByValue(tsDataRule.getRuleConditions());
if (rule.equals(HqlRuleEnum.IN)) {
String[] values = tsDataRule.getRuleValue().split(",");
Object[] objs = new Object[values.length];
if (! propertyType.equals(String.class)) {
for (int i = 0; i < values.length; i++) {
objs[i] = NumberUtils
.parseNumber(values[i], propertyType);
objs[i] = NumberUtils.parseNumber(values[i], propertyType);
}
}else {
objs = values;
@ -277,11 +259,9 @@ public class HqlGenerateUtil {
ObjectParseUtil.addCriteria(cq, aliasName, rule, objs);
} else {
if (propertyType.equals(String.class)) {
ObjectParseUtil.addCriteria(cq, aliasName, rule,
converRuleValue(tsDataRule.getRuleValue()));
ObjectParseUtil.addCriteria(cq, aliasName, rule,converRuleValue(tsDataRule.getRuleValue()));
} else {
ObjectParseUtil.addCriteria(cq, aliasName, rule, NumberUtils
.parseNumber(tsDataRule.getRuleValue(), propertyType));
ObjectParseUtil.addCriteria(cq, aliasName, rule, NumberUtils.parseNumber(tsDataRule.getRuleValue(), propertyType));
}
}
}

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

@ -18,8 +18,6 @@ public class SqlGenerateUtil {
private static final String END = "_end";
private static final String BEGIN = "_begin";
private static final SimpleDateFormat time = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
/**
* OBJtable
* @param searchObj
@ -152,6 +150,7 @@ public class SqlGenerateUtil {
* @return
*/
public static String getValueForType(String name,Object value,String type){
SimpleDateFormat time = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
if("class java.lang.Integer".equals(type)
||"class java.lang.Double".equals(type)
||"class java.lang.Long".equals(type)
@ -173,7 +172,7 @@ public class SqlGenerateUtil {
if (endValue.length() == 19) {
return "'date"+endValue+"'";
}else{
return "'date"+endValue+" 23:23:59'";
return "'date"+endValue+" 23:59:59'";
}
}else{
return "date'"+time.format(value)+"'";
@ -191,7 +190,7 @@ public class SqlGenerateUtil {
if(endValue.length() == 19) {
return "'"+endValue+"'";
}else{
return "'"+endValue+" 23:23:59'";
return "'"+endValue+" 23:59:59'";
}
}else{
return "'"+time.format(value)+"'";

@ -42,6 +42,7 @@ public class OpenOfficePDFConverter implements PDFConverter {
//
// }
startService();
//pdfFile = pdfFile.replaceAll(" ", "").replaceAll(" ", "");
org.jeecgframework.core.util.LogUtil.info("进行文档转换转换:" + inputFile + " --> " + pdfFile);

@ -20,6 +20,7 @@ public class SWFToolsSWFConverter implements SWFConverter {
String p = System.getProperty("os.name");
return p.toLowerCase().indexOf("windows") >= 0 ? true : false;
}
public void convert2SWF(String inputFile, String swfFile, String extend) {
File pdfFile = new File(inputFile);
File outFile = new File(swfFile);
@ -61,6 +62,7 @@ public class SWFToolsSWFConverter implements SWFConverter {
}
StreamGobbler errorGobbler = new StreamGobbler(
process.getErrorStream(), "Error");
StreamGobbler outputGobbler = new StreamGobbler(
@ -92,4 +94,5 @@ public class SWFToolsSWFConverter implements SWFConverter {
String exePath = "D:/SWFTools/pdf2swf.exe";
new SWFToolsSWFConverter().convert2SWF("C:/Users/chenj/Desktop/jeecg/陈劲任务.pdf", exePath);
}
}

@ -42,8 +42,6 @@ public class AuthInterceptor implements HandlerInterceptor {
private static final Logger logger = Logger.getLogger(AuthInterceptor.class);
private SystemService systemService;
private List<String> excludeUrls;
private static List<TSFunction> functionList;
public List<String> getExcludeUrls() {
return excludeUrls;
@ -78,25 +76,20 @@ public class AuthInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) throws Exception {
String requestPath = ResourceUtil.getRequestPath(request);// 用户访问的资源地址
//logger.info("-----authInterceptor----requestPath------"+requestPath);
HttpSession session = ContextHolderUtils.getSession();
Client client = ClientManager.getInstance().getClient(session.getId());
if(client == null){
client = ClientManager.getInstance().getClient(
request.getParameter("sessionId"));
//步骤一: 判断是否是排除拦截请求直接返回TRUE
if (requestPath.length()>3&&"api/".equals(requestPath.substring(0,4))) {
return true;
}
if (excludeUrls.contains(requestPath)) {
//如果该请求不在拦截范围内直接返回true
return true;
} else {
if (client != null && client.getUser()!=null ) {
if((!hasMenuAuth(request)) && !client.getUser().getUserName().equals("admin")){
response.sendRedirect("loginController.do?noAuth");
//request.getRequestDispatcher("webpage/common/noAuth.jsp").forward(request, response);
return false;
}
//String functionId=oConvertUtils.getString(request.getParameter("clickFunctionId"));
String functionId="";
//update-begin--Author:JueYue Date:20140831 foronlinecodeing 的URL判断--------------------
//步骤二: 权限控制优先重组请求URL(考虑online请求前缀一致问题)
String clickFunctionId = request.getParameter("clickFunctionId");
Client client = ClientManager.getInstance().getClient(ContextHolderUtils.getSession().getId());
TSUser currLoginUser = client!=null?client.getUser():null;
if (client != null && currLoginUser!=null ) {
//onlinecoding的访问地址有规律可循数据权限链接篡改
if(requestPath.equals("cgAutoListController.do?datagrid")) {
requestPath += "&configId=" + request.getParameter("configId");
@ -104,26 +97,20 @@ public class AuthInterceptor implements HandlerInterceptor {
if(requestPath.equals("cgAutoListController.do?list")) {
requestPath += "&id=" + request.getParameter("id");
}
if(requestPath.equals("cgFormBuildController.do?ftlForm")) {
requestPath += "&tableName=" + request.getParameter("tableName");
}
//update-begin--Author:许国杰 Date:20151219 for#813 【online表单】扩展出三个请求独立的添加、查看、编辑请求原来的保留
if(requestPath.equals("cgFormBuildController.do?goAddFtlForm")) {
requestPath += "&tableName=" + request.getParameter("tableName");
}
if(requestPath.equals("cgFormBuildController.do?goUpdateFtlForm")) {
requestPath += "&tableName=" + request.getParameter("tableName");
if(requestPath.endsWith("?olstylecode=")) {
requestPath = requestPath.replace("?olstylecode=", "");
}
if(requestPath.equals("cgFormBuildController.do?goDatilFtlForm")) {
requestPath += "&tableName=" + request.getParameter("tableName");
//步骤三: 根据重组请求URL,进行权限授权判断
if((!hasMenuAuth(requestPath,clickFunctionId,currLoginUser)) && !currLoginUser.getUserName().equals("admin")){
response.sendRedirect(request.getSession().getServletContext().getContextPath()+"/loginController.do?noAuth");
return false;
}
//update-end--Author:许国杰 Date:20151219 for#813 【online表单】扩展出三个请求独立的添加、查看、编辑请求原来的保留
//update-end--Author:JueYue Date:20140831 foronlinecodeing 的URL判断--------------------
//这个地方用全匹配?应该是模糊查询吧
//TODO
//update-begin--Author:张忠亮 Date:20150717 for解决rest风格下 权限失效问题
//解决rest风格下 权限失效问题
String functionId="";
String uri= request.getRequestURI().substring(request.getContextPath().length() + 1);
String realRequestPath = null;
if(uri.endsWith(".do")||uri.endsWith(".action")){
@ -131,55 +118,73 @@ public class AuthInterceptor implements HandlerInterceptor {
}else {
realRequestPath=uri;
}
// if(!oConvertUtils.isEmpty(clickFunctionId)){
// functionId = clickFunctionId;
// }else{
if(realRequestPath.indexOf("autoFormController/af/")>-1 && realRequestPath.indexOf("?")!=-1){
realRequestPath = realRequestPath.substring(0, realRequestPath.indexOf("?"));
}
List<TSFunction> functions = systemService.findByProperty(TSFunction.class, "functionUrl", realRequestPath);
//update-end--Author:张忠亮 Date:20150717 for解决rest风格下 权限失效问题
if (functions.size()>0){
functionId = functions.get(0).getId();
}
// }
//Step.1 第一部分处理页面表单和列表的页面控件权限(页面表单字段+页面按钮等控件)
if(!oConvertUtils.isEmpty(functionId)){
//获取菜单对应的页面控制权限(包括表单字段和操作按钮)
Set<String> operationCodes = systemService.getOperationCodesByUserIdAndFunctionId(client.getUser().getId(), functionId);
Set<String> operationCodes = systemService.getOperationCodesByUserIdAndFunctionId(currLoginUser.getId(), functionId);
request.setAttribute(Globals.OPERATIONCODES, operationCodes);
}
if(!oConvertUtils.isEmpty(functionId)){
//update-begin--Author:anchao Date:20140822 for[bugfree号]字段级权限(表单,列表)--------------------
//List<String> allOperation=this.systemService.findListbySql("SELECT operationcode FROM t_s_operation WHERE functionid='"+functionId+"'");
List<TSOperation> allOperation=this.systemService.findByProperty(TSOperation.class, "TSFunction.id", functionId);
// List<TSOperation> allOperation=this.systemService.findByProperty(TSOperation.class, "TSFunction.id", functionId);
// List<TSOperation> newall = new ArrayList<TSOperation>();
// if(allOperation.size()>0){
// for(TSOperation s:allOperation){
// //s=s.replaceAll(" ", "");
// newall.add(s);
// }
// String hasOperSql="SELECT operation FROM t_s_role_function fun, t_s_role_user role WHERE " +
// "fun.functionid='"+functionId+"' AND fun.operation is not null AND fun.roleid=role.roleid AND role.userid='"+currLoginUser.getId()+"' ";
// List<String> hasOperList = this.systemService.findListbySql(hasOperSql);
// for(String operationIds:hasOperList){
// for(String operationId:operationIds.split(",")){
// operationId=operationId.replaceAll(" ", "");
// TSOperation operation = new TSOperation();
// operation.setId(operationId);
// newall.remove(operation);
// }
// }
// }
List<TSOperation> newall = new ArrayList<TSOperation>();
if(allOperation.size()>0){
for(TSOperation s:allOperation){
//s=s.replaceAll(" ", "");
newall.add(s);
}
//---author:jg_xugj----start-----date:20151210--------for#781 【oracle兼容】兼容问题fun.operation!='' 在oracle 数据下不正确
String hasOperSql="SELECT operation FROM t_s_role_function fun, t_s_role_user role WHERE " +
"fun.functionid='"+functionId+"' AND fun.operation is not null AND fun.roleid=role.roleid AND role.userid='"+client.getUser().getId()+"' ";
//---author:jg_xugj----end-----date:20151210--------for#781 【oracle兼容】兼容问题fun.operation!='' 在oracle 数据下不正确
"fun.functionid='"+functionId+"' AND fun.operation is not null AND fun.roleid=role.roleid AND role.userid='"+currLoginUser.getId()+"' ";
List<String> hasOperList = this.systemService.findListbySql(hasOperSql);
for(String operationIds:hasOperList){
for(String operationId:operationIds.split(",")){
operationId=operationId.replaceAll(" ", "");
TSOperation operation = new TSOperation();
operation.setId(operationId);
newall.remove(operation);
TSOperation operation = systemService.get(TSOperation.class, operationId);
if(operation!=null && operation.getOperationcode()!=null &&
(operation.getOperationcode().startsWith("#")|| operation.getOperationcode().startsWith("."))){
newall.add(operation);
}
}
}
request.setAttribute(Globals.NOAUTO_OPERATIONCODES, newall);
//Step.2 第二部分处理列表数据级权限
//小川 -- 菜单数据规则集合(数据权限)
//Step.2 第二部分处理列表数据级权限 (菜单数据规则集合)
List<TSDataRule> MENU_DATA_AUTHOR_RULES = new ArrayList<TSDataRule>();
//小川 -- 菜单数据规则sql(数据权限)
String MENU_DATA_AUTHOR_RULE_SQL="";
//数据权限规则的查询
//查询所有的当前这个用户所对应的角色和菜单的datarule的数据规则id
Set<String> dataruleCodes = systemService.getOperationCodesByUserIdAndDataId(client.getUser().getId(), functionId);
Set<String> dataruleCodes = systemService.getOperationCodesByUserIdAndDataId(currLoginUser.getId(), functionId);
request.setAttribute("dataRulecodes", dataruleCodes);
for (String dataRuleId : dataruleCodes) {
TSDataRule dataRule = systemService.getEntity(TSDataRule.class, dataRuleId);
@ -203,55 +208,43 @@ public class AuthInterceptor implements HandlerInterceptor {
/**
* 访
* @param request
* @param requestPath
* @param clickFunctionId
* @param currLoginUser
* @return
*/
private boolean hasMenuAuth(HttpServletRequest request){
String requestPath = ResourceUtil.getRequestPath(request);// 用户访问的资源地址
// 是否是功能表中管理的url
boolean bMgrUrl = false;
if (functionList == null) {
// functionList = systemService.loadAll(TSFunction.class);
// update-start--Author:zhoujf Date:20150521 for只查询菜单类型的权限
functionList = systemService.findHql("from TSFunction where functionType = ? ", (short)0);
// update---end--Author:zhoujf Date:20150521 for只查询菜单类型的权限
}
for (TSFunction function : functionList) {
if (function.getFunctionUrl() != null && function.getFunctionUrl().startsWith(requestPath)) {
bMgrUrl = true;
break;
}
}
if (!bMgrUrl) {
return true;
}
private boolean hasMenuAuth(String requestPath,String clickFunctionId,TSUser currLoginUser){
String userid = currLoginUser.getId();
String funcid=oConvertUtils.getString(request.getParameter("clickFunctionId"));
if(!bMgrUrl && (requestPath.indexOf("loginController.do")!=-1||funcid.length()==0)){
//step.1 先判断请求是否配置菜单,没有配置菜单默认不作权限控制
String hasMenuSql = "select count(*) from t_s_function where functiontype = 0 and functionurl = '"+requestPath+"'";
Long hasMenuCount = systemService.getCountForJdbc(hasMenuSql);
if(hasMenuCount<=0){
return true;
}
TSUser currLoginUser = ClientManager.getInstance().getClient(ContextHolderUtils.getSession().getId()).getUser();
String userid = currLoginUser.getId();
//requestPath=requestPath.substring(0, requestPath.indexOf("?")+1);
String sql = "SELECT DISTINCT f.id FROM t_s_function f,t_s_role_function rf,t_s_role_user ru " +
//step.2 判断菜单是否有角色权限
Long authSize = Long.valueOf(0);
String sql = "SELECT count(*) FROM t_s_function f,t_s_role_function rf,t_s_role_user ru " +
" WHERE f.id=rf.functionid AND rf.roleid=ru.roleid AND " +
"ru.userid='"+userid+"' AND f.functionurl like '"+requestPath+"%'";
List list = this.systemService.findListbySql(sql);
if(list.size()==0){
// update-start--Author:zhangguoming Date:20140821 for判断当前用户组织机构下角色所拥有的权限
// update-start--Author:zhangguoming Date:20140825 for获取当前用户登录时选择的组织机构代码
"ru.userid='"+userid+"' AND f.functionurl = '"+requestPath+"'";
authSize = this.systemService.getCountForJdbc(sql);
if(authSize <=0){
//step.3 判断菜单是否有组织机构角色权限
String orgId = currLoginUser.getCurrentDepart().getId();
// update-end--Author:zhangguoming Date:20140825 for获取当前用户登录时选择的组织机构代码
String functionOfOrgSql = "SELECT DISTINCT f.id from t_s_function f, t_s_role_function rf, t_s_role_org ro " +
Long orgAuthSize = Long.valueOf(0);
String functionOfOrgSql = "SELECT count(*) from t_s_function f, t_s_role_function rf, t_s_role_org ro " +
"WHERE f.ID=rf.functionid AND rf.roleid=ro.role_id " +
"AND ro.org_id='" +orgId+ "' AND f.functionurl like '"+requestPath+"%'";
List functionOfOrgList = this.systemService.findListbySql(functionOfOrgSql);
return functionOfOrgList.size() > 0;
// update-end--Author:zhangguoming Date:20140821 for判断当前用户组织机构下角色所拥有的权限
"AND ro.org_id='" +orgId+ "' AND f.functionurl = '"+requestPath+"'";
orgAuthSize = this.systemService.getCountForJdbc(functionOfOrgSql);
return orgAuthSize > 0;
}else{
return true;
}
}
/**
*
*
@ -265,14 +258,14 @@ public class AuthInterceptor implements HandlerInterceptor {
}
private void forward(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//update-start--Author:scott Date:20160803 for无登陆情况跳转登陆页
//超时,未登陆页面跳转
//response.sendRedirect(request.getServletContext().getContextPath()+"/loginController.do?login");
// update-start--Author:chenjin Date:20160828 forTASK #1324 【bug】Session超时后重新登录页面显示在标签里,让它重新显示登录页面
response.sendRedirect(request.getSession().getServletContext().getContextPath()+"/webpage/login/timeout.jsp");
// update-end--Author:chenjin Date:20160828 forTASK #1324 【bug】Session超时后重新登录页面显示在标签里,让它重新显示登录页面
//request.getRequestDispatcher("loginController.do?login").forward(request, response);
//update-start--Author:scott Date:20160803 for无登陆情况跳转登陆页
}
}

@ -12,14 +12,14 @@ import org.jeecgframework.core.common.model.json.LogAnnotation;
import org.springframework.stereotype.Component;
/**
*
*
* @author
*
*/
@Component
@Aspect
//@Component
//@Aspect
public class LogInterceptor {
@Before("execution(* com.renfang.controller.*.*(..))")
//@Before("execution(* com.renfang.controller.*.*(..))")
public void beforeMethod(JoinPoint joinPoint) throws Exception {
String temp = joinPoint.getStaticPart().toShortString();
String longTemp = joinPoint.getStaticPart().toLongString();

@ -0,0 +1,60 @@
package org.jeecgframework.core.interceptors;
import com.alibaba.fastjson.JSONObject;
import org.jeecgframework.core.common.exception.BusinessException;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.web.cgform.util.SignatureUtil;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
/**
* Created by dangzhenghui on 2017-4-1.
*/
public class SignInterceptor implements HandlerInterceptor {
private static final String SIGN_KEY = "26F72780372E84B6CFAED6F7B19139CC47B1912B6CAED753";
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {
JSONObject j=new JSONObject();
try {
String sign= request.getHeader("X-JEECG-SIGN");
String body=request.getParameter("body");
if (StringUtil.isEmpty(sign)) {
throw new BusinessException("sign不能为空");
}
if (StringUtil.isEmpty(body)){
throw new BusinessException("body不能为空");
}
Map paramMap =new HashMap();
paramMap.put("body",body);
if(!SignatureUtil.checkSign(paramMap, SIGN_KEY, sign)){
throw new BusinessException("签名验证失败");
}
} catch (BusinessException e) {
j.put("success","false");
j.put("msg",e.getMessage());
response.getWriter().print(j.toJSONString());
return false;
}
return true;
}
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
}
}

@ -193,9 +193,11 @@ public class CgReportQueryParamUtil
if(!StringUtil.isEmpty(value)){
String result = "";
if(CgReportConstant.TYPE_STRING.equalsIgnoreCase(fieldType)){
//if(ResourceUtil.fuzzySearch&&(!value.contains("*"))){
// value="*"+value+"*";
//}
result = "'" +value+ "'";
}else if(CgReportConstant.TYPE_DATE.equalsIgnoreCase(fieldType)){
result = getDateFunction(value, "yyyy-MM-dd");

@ -27,12 +27,14 @@ public class DataBaseCronTriggerBean extends CronTriggerBean{
(TSTimeTaskEntity.class,"taskId",this.getName());
if(task!=null&&task.getIsEffect().equals("1")
&&!task.getCronExpression().equals(this.getCronExpression())){
try {
this.setCronExpression(task.getCronExpression());
} catch (ParseException e) {
// TODO 异常必须被处理
e.printStackTrace();
}
DynamicTask.updateSpringMvcTaskXML(this,task.getCronExpression());
}
}

@ -30,6 +30,7 @@ public class DynamicDBUtil {
//String dbPassword = dynamicSourceEntity.getDbPassword();
String dbPassword = PasswordUtil.decrypt(dynamicSourceEntity.getDbPassword(), dynamicSourceEntity.getDbUser(), PasswordUtil.getStaticSalt());//解密字符串;
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl(url);
dataSource.setUsername(dbUser);

@ -7,20 +7,18 @@ import org.apache.commons.lang.StringUtils;
import org.jeecgframework.core.enums.SysACEIconEnum;
import org.jeecgframework.web.system.pojo.base.TSFunction;
import org.jeecgframework.web.system.service.MutiLangServiceI;
import org.springframework.beans.factory.annotation.Autowired;
/**
*
*
* @author
* update-begin--Author:jg_longjb Date:20150313 for.getTSFunctions().size().getSubFunctionSize();
* update-begin--Author:jg_gudongli Date:20150516 for.getSubFunctionSize()hasSubFunction()
* ;
*/
public class ListtoMenu {
@Autowired
private static MutiLangServiceI mutiLangService;
/**
* easyuiJSON
*
@ -199,10 +197,15 @@ public class ListtoMenu {
if (function.getTSIcon() != null) {
icon = ResourceUtil.allTSIcons.get(function.getTSIcon().getId()).getIconClas();
}
String funUrl = function.getFunctionUrl();
if(funUrl.indexOf("?") > -1){
funUrl += "&clickFunctionId="+ function.getId();
}else{
funUrl += "?clickFunctionId="+ function.getId();
}
menuString.append("<li><div onclick=\"addTab(\'"
+ getMutiLang(function.getFunctionName()) + "\',\'"
+ function.getFunctionUrl() + "&clickFunctionId="
+ function.getId() + "\',\'" + icon
+ funUrl + "\',\'" + icon
+ "\')\" title=\"" + getMutiLang(function.getFunctionName())
+ "\" url=\"" + function.getFunctionUrl()
+ "\" iconCls=\"" + icon + "\"> <a class=\""
@ -308,6 +311,7 @@ public class ListtoMenu {
return menuString.toString();
}
/**
* -----
* @param parent
@ -375,7 +379,11 @@ public class ListtoMenu {
menuString.append(getMutiLang(function.getFunctionName()));
menuString.append("\',\'");
menuString.append(function.getFunctionUrl());
if(function.getFunctionUrl().indexOf("?") > -1){
menuString.append("&clickFunctionId=");
}else{
menuString.append("?clickFunctionId=");
}
menuString.append(function.getId());
menuString.append("\',\'");
menuString.append(icon);
@ -411,15 +419,19 @@ public class ListtoMenu {
menuString.append(getMutiLang(function.getFunctionName()));
menuString.append("\',\'");
menuString.append(function.getFunctionUrl());
//如果是外部链接则不加菜单ID
if(function.getFunctionUrl().indexOf("http:")==-1){
if(function.getFunctionUrl().indexOf("?") == -1){
menuString.append("?clickFunctionId=");
} else {
menuString.append("&clickFunctionId=");
}
menuString.append(function.getId());
}
menuString.append("\',\'");
menuString.append(icon);
menuString.append("\')\" title=\"");
@ -486,7 +498,12 @@ public class ListtoMenu {
boolean hasSub = function.hasSubFunction(map);
String menu_url = function.getFunctionUrl();
if(StringUtils.isNotEmpty(menu_url)){
if(function.getFunctionUrl().indexOf("?") > -1){
menu_url += "&clickFunctionId="+function.getId();
}else{
menu_url += "?clickFunctionId="+function.getId();
}
}
menuString.append(" <li onclick=\"showContent(\'"+ getMutiLang(function.getFunctionName()) +"\',\'"+menu_url+"\')\" title=\""+ getMutiLang(function.getFunctionName()) +"\" url=\""+function.getFunctionUrl()+"\" ");
if(hasSub){
@ -635,8 +652,10 @@ public class ListtoMenu {
dataString.append("'"+function.getId()+"':{ ");
dataString.append("appid:'"+function.getId()+"',");
dataString.append("url:'"+function.getFunctionUrl()+"',");
// dataString.append(getIconandName(function.getFunctionName()));
dataString.append(getIconAndNameForDesk(function));
dataString.append("asc :"+function.getFunctionOrder());
dataString.append(" },");
}
@ -716,11 +735,8 @@ public class ListtoMenu {
* @throws
*/
private static String getMutiLang(String functionName){
//add by Rocky, 处理多语言
if(mutiLangService == null)
{
mutiLangService = ApplicationContextUtil.getContext().getBean(MutiLangServiceI.class);
}
MutiLangServiceI mutiLangService = ApplicationContextUtil.getContext().getBean(MutiLangServiceI.class);
String lang_context = mutiLangService.getLang(functionName);
return lang_context;
@ -734,11 +750,13 @@ public class ListtoMenu {
int curIndex = 0;
for (TSFunction function : list) {
menuString.append("<li>");
if(function.getFunctionIconStyle()!=null&&!function.getFunctionIconStyle().trim().equals("")){
menuString.append("<a href=\"#\" class=\"dropdown-toggle\" ><i class=\"menu-icon fa "+function.getFunctionIconStyle()+"\"></i>");
}else{
menuString.append("<a href=\"#\" class=\"dropdown-toggle\" ><i class=\"menu-icon fa fa-desktop\"></i>");
}
menuString.append(getMutiLang(function.getFunctionName()));
/* int submenusize = function.getSubFunctionSize();
if (submenusize == 0) {
@ -799,6 +817,7 @@ public class ListtoMenu {
int curIndex = 0;
for (TSFunction function : list) {
menuString.append("<li>");
if(function.getFunctionIconStyle()!=null&&!function.getFunctionIconStyle().trim().equals("")){
menuString.append("<a href=\"#\" class=\"dropdown-toggle\" ><i class=\""+function.getFunctionIconStyle()+"\"></i>");
}else{
@ -806,6 +825,7 @@ public class ListtoMenu {
}
menuString.append("<span class=\"menu-text\">");
menuString.append(getMutiLang(function.getFunctionName()));
menuString.append("</span>");
@ -843,6 +863,7 @@ public class ListtoMenu {
}else {
/* 20160830 wangkun TASK #1330 【改造】ace首页风格菜单不支持三级菜单改造支持三级*/
menuString.append("<li>");
if(function.getFunctionIconStyle()!=null&&!function.getFunctionIconStyle().trim().equals("")){
menuString.append("<a href=\"#\" class=\"dropdown-toggle\" ><i class=\""+function.getFunctionIconStyle()+"\"></i>");
}else{
@ -871,7 +892,11 @@ public class ListtoMenu {
menuString.append("<li> <a href=\"javascript:addTabs({id:\'").append(function.getId());
menuString.append("\',title:\'").append(name).append("\',close: true,url:\'");
menuString.append(function.getFunctionUrl());
if(function.getFunctionUrl().indexOf("?")>-1){
menuString.append("&clickFunctionId=");
}else{
menuString.append("?clickFunctionId=");
}
menuString.append(function.getId());
// menuString.append("\',\'");
// menuString.append(icon);
@ -903,7 +928,11 @@ public class ListtoMenu {
menuString.append(name);
menuString.append("\',\'");
menuString.append(function.getFunctionUrl());
if(function.getFunctionUrl().indexOf("?") > -1){
menuString.append("&clickFunctionId=");
}else{
menuString.append("?clickFunctionId=");
}
menuString.append(function.getId());
menuString.append("\',\'");
menuString.append(icon);
@ -924,11 +953,13 @@ public class ListtoMenu {
int curIndex = 0;
for (TSFunction function : list) {
menuString.append("<li>");
if(function.getFunctionIconStyle()!=null&&!function.getFunctionIconStyle().trim().equals("")){
menuString.append("<a href=\"#\" class=\"\" ><i class=\"fa "+function.getFunctionIconStyle()+"\"></i>");
}else{
menuString.append("<a href=\"#\" class=\"\" ><i class=\"fa fa-columns\"></i>");
}
menuString.append("<span class=\"menu-text\">");
menuString.append(getMutiLang(function.getFunctionName()));
menuString.append("</span>");

@ -17,8 +17,6 @@ import java.util.List;
public class MutiLangUtil {
private static Log logger = LogFactory.getLog(StringUtil.class);
private static MutiLangServiceI mutiLangService;
/**
*
*
@ -166,10 +164,9 @@ public class MutiLangUtil {
*/
public static MutiLangServiceI getMutiLangInstance()
{
if(mutiLangService == null)
{
mutiLangService = ApplicationContextUtil.getContext().getBean(MutiLangServiceI.class);
}
MutiLangServiceI mutiLangService = ApplicationContextUtil.getContext().getBean(MutiLangServiceI.class);
return mutiLangService;
}

@ -10,6 +10,7 @@ import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang.StringUtils;
import org.jeecgframework.core.constant.DataBaseConstant;
import org.jeecgframework.web.system.manager.ClientManager;
import org.jeecgframework.web.system.pojo.base.Client;
@ -56,8 +57,10 @@ public class ResourceUtil {
* # 1 *[]
* fuzzySearch=0
*/
// public final static boolean fuzzySearch= ResourceUtil.isFuzzySearch();
/**
* session
*
@ -70,6 +73,7 @@ public class ResourceUtil {
HttpSession session = ContextHolderUtils.getSession();
if(ClientManager.getInstance().getClient(session.getId())!=null){
return ClientManager.getInstance().getClient(session.getId()).getUser();
}else{
TSUser u = (TSUser) session.getAttribute(ResourceUtil.LOCAL_CLINET_USER);
Client client = new Client();
@ -78,6 +82,7 @@ public class ResourceUtil {
client.setUser(u);
ClientManager.getInstance().addClinet(session.getId(), client);
}
return null;
}
@Deprecated
@ -102,7 +107,14 @@ public class ResourceUtil {
* @return
*/
public static String getRequestPath(HttpServletRequest request) {
String requestPath = request.getRequestURI() + "?" + request.getQueryString();
// String requestPath = request.getRequestURI() + "?" + request.getQueryString();
String queryString = request.getQueryString();
String requestPath = request.getRequestURI();
if(StringUtils.isNotEmpty(queryString)){
requestPath += "?" + queryString;
}
if (requestPath.indexOf("&") > -1) {// 去掉其他参数
requestPath = requestPath.substring(0, requestPath.indexOf("&"));
}
@ -206,6 +218,7 @@ public class ResourceUtil {
return bundle.getString("randCodeType");
}
/**
*
*
@ -234,6 +247,7 @@ public class ResourceUtil {
key = key;
}
//替换为系统的登录用户账号
// if (key.equals(DataBaseConstant.CREATE_BY)
// || key.equals(DataBaseConstant.CREATE_BY_TABLE)
@ -254,10 +268,13 @@ public class ResourceUtil {
) {
returnValue = getSessionUserName().getRealName();
}
//替换为系统登录用户的公司编码
if (key.equals(DataBaseConstant.SYS_COMPANY_CODE)|| key.equals(DataBaseConstant.SYS_COMPANY_CODE_TABLE)) {
returnValue = getSessionUserName().getCurrentDepart().getOrgCode()
.substring(0, Integer.valueOf(getOrgCodeLengthType()) + 1);
}
//替换为系统用户登录所使用的机构编码
if (key.equals(DataBaseConstant.SYS_ORG_CODE)|| key.equals(DataBaseConstant.SYS_ORG_CODE_TABLE)) {
@ -322,7 +339,9 @@ public class ResourceUtil {
org.jeecgframework.core.util.LogUtil.info(getPorjectPath());
org.jeecgframework.core.util.LogUtil.info(getSysPath());
}
// public static boolean isFuzzySearch(){
// return "1".equals(bundle.getString("fuzzySearch"));
// }
}

@ -47,6 +47,18 @@ public class SysThemesUtil {
return sb.toString();
}
/**
* easyui.css
* @param sysThemesEnum
* @return
*/
public static String getEasyUiTheme(SysThemesEnum sysThemesEnum,String basePath){
StringBuffer sb = new StringBuffer("");
sb.append("<link id=\"easyuiTheme\" rel=\"stylesheet\" href=\""+basePath+"/plug-in/easyui/themes/"+sysThemesEnum.getThemes()+"/easyui.css\" type=\"text/css\"></link>");
return sb.toString();
}
/**
* easyui main.css
* @param sysThemesEnum
@ -62,6 +74,23 @@ public class SysThemesUtil {
return sb.toString();
}
/**
* easyui main.css
* @param sysThemesEnum
* @return
*/
public static String getEasyUiMainTheme(SysThemesEnum sysThemesEnum,String basePath){
StringBuffer sb = new StringBuffer("");
if("metro".equals(sysThemesEnum.getThemes())){
sb.append("<link id=\"easyuiTheme\" rel=\"stylesheet\" href=\""+basePath+"/plug-in/easyui/themes/metro/main.css\" type=\"text/css\"></link>");
}else if("metrole".equals(sysThemesEnum.getThemes())){
sb.append("<link id=\"easyuiTheme\" rel=\"stylesheet\" href=\""+basePath+"/plug-in/easyui/themes/metrole/main.css\" type=\"text/css\"></link>");
}
return sb.toString();
}
/**
* easyui main.css
* @param sysThemesEnum
@ -97,6 +126,27 @@ public class SysThemesUtil {
return sb.toString();
}
/**
* tools common.css
* @param sysThemesEnum
* @return
*/
public static String getCommonTheme(SysThemesEnum sysThemesEnum,String basePath){
StringBuffer sb = new StringBuffer("");
if("metro".equals(sysThemesEnum.getThemes())){
sb.append("<link rel=\"stylesheet\" href=\""+basePath+"/plug-in/tools/css/metro/common.css\" type=\"text/css\"></link>");
}else if("metrole".equals(sysThemesEnum.getThemes())){
sb.append("<link rel=\"stylesheet\" href=\""+basePath+"/plug-in/tools/css/metrole/common.css\" type=\"text/css\"></link>");
}else{
sb.append("<link rel=\"stylesheet\" href=\""+basePath+"/plug-in/tools/css/common.css\" type=\"text/css\"></link>");
}
sb.append("<link rel=\"stylesheet\" href=\""+basePath+"/plug-in/ace/css/font-awesome.css\" type=\"text/css\"></link>");
return sb.toString();
}
/**
* lhgdialog
* @param sysThemesEnum
@ -114,6 +164,24 @@ public class SysThemesUtil {
return sb.toString();
}
/**
* lhgdialog
* @param sysThemesEnum
* @return
*/
public static String getLhgdialogTheme(SysThemesEnum sysThemesEnum,String basePath){
StringBuffer sb = new StringBuffer("");
if("metro".equals(sysThemesEnum.getThemes())){
sb.append("<script type=\"text/javascript\" src=\""+basePath+"/plug-in/lhgDialog/lhgdialog.min.js?skin=metro\"></script>");
}else if("metrole".equals(sysThemesEnum.getThemes())){
sb.append("<script type=\"text/javascript\" src=\""+basePath+"/plug-in/lhgDialog/lhgdialog.min.js?skin=metrole\"></script>");
}else{
sb.append("<script type=\"text/javascript\" src=\""+basePath+"/plug-in/lhgDialog/lhgdialog.min.js\"></script>");
}
return sb.toString();
}
/**
* lhgdialog
* @param sysThemesEnum
@ -181,6 +249,24 @@ public class SysThemesUtil {
return sb.toString();
}
/**
* Validform style.css
* @param sysThemesEnum
* @return
*/
public static String getValidformStyleTheme(SysThemesEnum sysThemesEnum,String basePath){
StringBuffer sb = new StringBuffer("");
if("metro".equals(sysThemesEnum.getThemes())){
sb.append("<link rel=\"stylesheet\" href=\""+basePath+"/plug-in/Validform/css/metro/style.css\" type=\"text/css\"/>");
}else if("metrole".equals(sysThemesEnum.getThemes())){
sb.append("<link rel=\"stylesheet\" href=\""+basePath+"/plug-in/Validform/css/metrole/style.css\" type=\"text/css\"/>");
}else{
sb.append("<link rel=\"stylesheet\" href=\""+basePath+"/plug-in/Validform/css/style.css\" type=\"text/css\"/>");
}
return sb.toString();
}
/**
* Validform tablefrom.css
* @param sysThemesEnum
@ -197,4 +283,22 @@ public class SysThemesUtil {
}
return sb.toString();
}
/**
* Validform tablefrom.css
* @param sysThemesEnum
* @return
*/
public static String getValidformTablefrom(SysThemesEnum sysThemesEnum,String basePath){
StringBuffer sb = new StringBuffer("");
if("metro".equals(sysThemesEnum.getThemes())){
sb.append("<link rel=\"stylesheet\" href=\""+basePath+"/plug-in/Validform/css/metro/tablefrom.css\" type=\"text/css\"/>");
}else if("metrole".equals(sysThemesEnum.getThemes())){
sb.append("<link rel=\"stylesheet\" href=\""+basePath+"/plug-in/Validform/css/metrole/tablefrom.css\" type=\"text/css\"/>");
}else{
sb.append("<link rel=\"stylesheet\" href=\""+basePath+"/plug-in/Validform/css/tablefrom.css\" type=\"text/css\"/>");
}
return sb.toString();
}
}

@ -1,374 +0,0 @@
package org.jeecgframework.core.util;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.IOUtils;
/**
* UEditor
*
*/
public class Uploader {
// 文件大小常量, 单位kb
private static final int MAX_SIZE = 500 * 1024;
// 输出文件地址
private String url = "";
// 上传文件名
private String fileName = "";
// 状态
private String state = "";
// 文件类型
private String type = "";
// 原始文件名
private String originalName = "";
// 文件大小
private String size = "";
private HttpServletRequest request = null;
private String title = "";
// 保存路径
private String savePath = "upload";
// 文件允许格式
private String[] allowFiles = { ".rar", ".doc", ".docx", ".zip", ".pdf",
".txt", ".swf", ".wmv", ".gif", ".png", ".jpg", ".jpeg", ".bmp" };
// 文件大小限制单位Byte
private long maxSize = 0;
private HashMap<String, String> errorInfo = new HashMap<String, String>();
private Map<String, String> params = null;
// 上传的文件数据
private InputStream inputStream = null;
public static final String ENCODEING = System.getProperties().getProperty(
"file.encoding");
public Uploader(HttpServletRequest request) {
this.request = request;
this.params = new HashMap<String, String>();
this.setMaxSize(Uploader.MAX_SIZE);
HashMap<String, String> tmp = this.errorInfo;
tmp.put("SUCCESS", "SUCCESS"); // 默认成功
// 未包含文件上传域
tmp.put("NOFILE",
"\\u672a\\u5305\\u542b\\u6587\\u4ef6\\u4e0a\\u4f20\\u57df");
// 不允许的文件格式
tmp.put("TYPE",
"\\u4e0d\\u5141\\u8bb8\\u7684\\u6587\\u4ef6\\u683c\\u5f0f");
// 文件大小超出限制
tmp.put("SIZE",
"\\u6587\\u4ef6\\u5927\\u5c0f\\u8d85\\u51fa\\u9650\\u5236");
// 请求类型错误
tmp.put("ENTYPE", "\\u8bf7\\u6c42\\u7c7b\\u578b\\u9519\\u8bef");
// 上传请求异常
tmp.put("REQUEST", "\\u4e0a\\u4f20\\u8bf7\\u6c42\\u5f02\\u5e38");
// 未找到上传文件
tmp.put("FILE", "\\u672a\\u627e\\u5230\\u4e0a\\u4f20\\u6587\\u4ef6");
// IO异常
tmp.put("IO", "IO\\u5f02\\u5e38");
// 目录创建失败
tmp.put("DIR", "\\u76ee\\u5f55\\u521b\\u5efa\\u5931\\u8d25");
// 未知错误
tmp.put("UNKNOWN", "\\u672a\\u77e5\\u9519\\u8bef");
this.parseParams();
}
public void upload() throws Exception {
boolean isMultipart = ServletFileUpload
.isMultipartContent(this.request);
if (!isMultipart) {
this.state = this.errorInfo.get("NOFILE");
return;
}
if (this.inputStream == null) {
this.state = this.errorInfo.get("FILE");
return;
}
// 存储title
this.title = this.getParameter("pictitle");
try {
String savePath = this.getFolder(this.savePath);
if (!this.checkFileType(this.originalName)) {
this.state = this.errorInfo.get("TYPE");
return;
}
this.fileName = this.getName(this.originalName);
this.type = this.getFileExt(this.fileName);
this.url = savePath + "/" + this.fileName;
FileOutputStream fos = new FileOutputStream(
this.getPhysicalPath(this.url));
BufferedInputStream bis = new BufferedInputStream(this.inputStream);
byte[] buff = new byte[128];
int count = -1;
while ((count = bis.read(buff)) != -1) {
fos.write(buff, 0, count);
}
bis.close();
fos.close();
this.state = this.errorInfo.get("SUCCESS");
} catch (Exception e) {
e.printStackTrace();
this.state = this.errorInfo.get("IO");
}
}
/**
* base64
*
* @param fieldName
*/
public void uploadBase64(String fieldName) {
String savePath = this.getFolder(this.savePath);
String base64Data = this.request.getParameter(fieldName);
this.fileName = this.getName("test.png");
this.url = savePath + "/" + this.fileName;
Base64 decoder=new Base64();
try {
File outFile = new File(this.getPhysicalPath(this.url));
OutputStream ro = new FileOutputStream(outFile);
byte[] b = decoder.encode(base64Data.getBytes());
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {
b[i] += 256;
}
}
ro.write(b);
ro.flush();
ro.close();
this.state = this.errorInfo.get("SUCCESS");
} catch (Exception e) {
this.state = this.errorInfo.get("IO");
}
}
public String getParameter(String name) {
return this.params.get(name);
}
/**
*
*
* @param fileName
* @return
*/
private boolean checkFileType(String fileName) {
Iterator<String> type = Arrays.asList(this.allowFiles).iterator();
while (type.hasNext()) {
String ext = type.next();
if (fileName.toLowerCase().endsWith(ext)) {
return true;
}
}
return false;
}
/**
*
*
* @return string
*/
private String getFileExt(String fileName) {
return fileName.substring(fileName.lastIndexOf("."));
}
private void parseParams() {
DiskFileItemFactory dff = new DiskFileItemFactory();
try {
ServletFileUpload sfu = new ServletFileUpload(dff);
sfu.setSizeMax(this.maxSize);
sfu.setHeaderEncoding(Uploader.ENCODEING);
FileItemIterator fii = sfu.getItemIterator(this.request);
while (fii.hasNext()) {
FileItemStream item = fii.next();
// 普通参数存储
if (item.isFormField()) {
this.params.put(item.getFieldName(),
this.getParameterValue(item.openStream()));
} else {
// 只保留一个
if (this.inputStream == null) {
this.inputStream = item.openStream();
this.originalName = item.getName();
return;
}
}
}
} catch (Exception e) {
this.state = this.errorInfo.get("UNKNOWN");
}
}
/**
*
*
* @return
*/
private String getName(String fileName) {
Random random = new Random();
return this.fileName = "" + random.nextInt(10000)
+ System.currentTimeMillis() + this.getFileExt(fileName);
}
/**
*
*
* @param path
* @return
*/
private String getFolder(String path) {
SimpleDateFormat formater = new SimpleDateFormat("yyyyMMdd");
path += "/" + formater.format(new Date());
File dir = new File(this.getPhysicalPath(path));
if (!dir.exists()) {
try {
dir.mkdirs();
} catch (Exception e) {
this.state = this.errorInfo.get("DIR");
return "";
}
}
return path;
}
/**
*
*
* @param path
* @return
*/
private String getPhysicalPath(String path) {
String servletPath = this.request.getServletPath();
String realPath = this.request.getSession().getServletContext()
.getRealPath(servletPath);
return new File(realPath).getParent() + "/" + path;
}
/**
*
*
* @param in
*
* @return
*/
private String getParameterValue(InputStream in) {
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String result = "";
String tmpString = null;
try {
while ((tmpString = reader.readLine()) != null) {
result += tmpString;
}
} catch (Exception e) {
// do nothing
}
return result;
}
private byte[] getFileOutputStream(InputStream in) {
try {
return IOUtils.toByteArray(in);
} catch (IOException e) {
return null;
}
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
public void setAllowFiles(String[] allowFiles) {
this.allowFiles = allowFiles;
}
public void setMaxSize(long size) {
this.maxSize = size * 1024;
}
public String getSize() {
return this.size;
}
public String getUrl() {
return this.url;
}
public String getFileName() {
return this.fileName;
}
public String getState() {
return this.state;
}
public String getTitle() {
return this.title;
}
public String getType() {
return this.type;
}
public String getOriginalName() {
return this.originalName;
}
}

@ -12,6 +12,7 @@ public class YouBianCodeUtil {
// 数字位数(默认生成3位的数字)
private static final int numLength = 2;//代表数字位数
public static final int zhanweiLength = 1+numLength;
/**
@ -78,6 +79,7 @@ public class YouBianCodeUtil {
// return parentCode + getNextYouBianCode(localCode);
return getNextYouBianCode(localCode);
}else{
parentCode = parentCode + "A"+ getNextStrNum(0);
}

@ -0,0 +1,52 @@
package org.jeecgframework.easypoi.service;
import java.util.ArrayList;
import java.util.List;
import org.jeecgframework.core.util.ApplicationContextUtil;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.web.system.dao.JeecgDictDao;
import org.jeecgframework.web.system.pojo.base.DictEntity;
import org.jeecgframework.web.system.service.MutiLangServiceI;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
*
* @authorscott
* @since2017-4-12 05:15:04
* @version:1.0
*/
@Service("easypoiDictService")
public class EasypoiDictService implements EasypoiDictServiceI {
@Autowired
private JeecgDictDao jeecgDictDao;
@Autowired
private MutiLangServiceI mutiLangService;
/**
* easypoi
* @param
* @return
* @authorqinfeng
* @since2017-4-12 06:10:22
*/
public String[] queryDict(String dicTable, String dicCode,String dicText){
List<String> dictReplace = new ArrayList<String>();;
List<DictEntity> dictList = null;
//step.1 如果没有字典表则使用系统字典表
if(StringUtil.isEmpty(dicTable)){
dictList = jeecgDictDao.querySystemDict(dicCode);
}else {
dicText = StringUtil.isEmpty(dicText, dicCode);
dictList = jeecgDictDao.queryCustomDict(dicTable, dicCode, dicText);
}
for(DictEntity t:dictList){
dictReplace.add(mutiLangService.getLang(t.getTypename())+"_"+t.getTypecode());
}
if(dictReplace!=null && dictReplace.size()!=0){
return dictReplace.toArray(new String[dictReplace.size()]);
}
return null;
}
}

@ -1,17 +1,12 @@
package org.jeecgframework.tag.core.easyui;
import java.io.IOException;
import java.util.Set;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import org.jeecgframework.core.constant.Globals;
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;
import org.springframework.beans.factory.annotation.Autowired;
/**
@ -31,6 +26,7 @@ public class AuthFilterTag extends TagSupport{
protected String name;
@Autowired
private SystemService systemService;
public int doStartTag() throws JspException {
return super.doStartTag();
}
@ -39,53 +35,23 @@ public class AuthFilterTag extends TagSupport{
JspWriter out = null;
try {
out = this.pageContext.getOut();
out.print(end().toString());
systemService = ApplicationContextUtil.getContext().getBean(SystemService.class);
out.print(systemService.getAuthFilterJS());
out.flush();
} catch (IOException e) {
e.printStackTrace();
}
return EVAL_PAGE;
}
protected Object end() {
StringBuilder out = new StringBuilder();
getAuthFilter(out);
return out;
}
/**
* JS
* @param out
*/
@SuppressWarnings("unchecked")
protected void getAuthFilter(StringBuilder out) {
out.append("<script type=\"text/javascript\">");
out.append("$(document).ready(function(){");
if(ResourceUtil.getSessionUserName().getUserName().equals("admin")|| !Globals.BUTTON_AUTHORITY_CHECK){
}else{
Set<String> operationCodes = (Set<String>) super.pageContext.getRequest().getAttribute(Globals.OPERATIONCODES);
if (null!=operationCodes) {
for (String MyoperationCode : operationCodes) {
if (oConvertUtils.isEmpty(MyoperationCode))
break;
systemService = ApplicationContextUtil.getContext().getBean(SystemService.class);
TSOperation operation = systemService.getEntity(TSOperation.class, MyoperationCode);
if (operation.getOperationcode().startsWith(".") || operation.getOperationcode().startsWith("#")){
if (operation.getOperationType().intValue()==Globals.OPERATION_TYPE_HIDE){
//out.append("$(\""+name+"\").find(\"#"+operation.getOperationcode().replaceAll(" ", "")+"\").hide();");
out.append("$(\""+operation.getOperationcode().replaceAll(" ", "")+"\").hide();");
}else {
//out.append("$(\""+name+"\").find(\"#"+operation.getOperationcode().replaceAll(" ", "")+"\").find(\":input\").attr(\"disabled\",\"disabled\");");
out.append("$(\""+operation.getOperationcode().replaceAll(" ", "")+"\").attr(\"disabled\",\"disabled\");");
out.append("$(\""+operation.getOperationcode().replaceAll(" ", "")+"\").find(\":input\").attr(\"disabled\",\"disabled\");");
}finally{
if(out!=null){
try {
out.clearBuffer();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return EVAL_PAGE;
}
}
out.append("});");
out.append("</script>");
}
public String getName() {
return name;
}

@ -7,6 +7,7 @@ import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.core.util.oConvertUtils;
/**
@ -19,27 +20,28 @@ import org.jeecgframework.core.util.StringUtil;
*/
public class AutocompleteTag extends TagSupport {
private static final long serialVersionUID = 1L;
private String name;//控件名称
private String dataSource = "commonController.do?getAutoList";//数据源
private Integer minLength=2;//触发提示文字长度
private String labelField;//提示显示的字段
private String searchField;//查询关键字字段
private String valueField;//传递后台的字段
private String entityName;//实体名称
private String selectfun;//选中后调用的函数
private String label;//传入显示值
private String value;//传入隐藏域值
private String datatype = "*";//数据验证类型
private String name; //input控件name
private String entityName; //查询Hiber实体名
private String searchField; //查询字段
private String defValue; //默认值
private String dataSource = "commonController.do?getAutoList";//数据源URL
private Integer minLength=1; //触发提示文字长度
private String datatype; //数据验证类型
private String nullmsg = ""; //数据为空时验证
private String errormsg = "输入格式不对"; //数据格式不对时验证
private String closefun;//没有选择下拉项目的处理函数
private String parse;
private String formatItem;
private String result;
private String parse; //转换数据JS方法名
private String formatItem; //格式化要显示的数据JS方法名
private String result; //选择后回调JS方法名
private Integer maxRows = 10;//显示的最多的条数
public void setClosefun(String closefun) {
this.closefun = closefun;
public String getDefValue() {
return defValue;
}
public void setDefValue(String defValue) {
this.defValue = defValue;
}
public void setDatatype(String datatype) {
this.datatype = datatype;
@ -50,12 +52,7 @@ public class AutocompleteTag extends TagSupport {
public void setErrormsg(String errormsg) {
this.errormsg = errormsg;
}
public void setLabel(String label) {
this.label = label;
}
public void setValue(String value) {
this.value = value;
}
public int doStartTag() throws JspTagException {
return EVAL_PAGE;
@ -77,26 +74,35 @@ public class AutocompleteTag extends TagSupport {
nsb.append("$(document).ready(function() {")
.append("$(\"#"+name+"\").autocomplete(\""+dataSource+"\",{")
.append("max: 5,minChars: "+minLength+",width: 200,scrollHeight: 100,matchContains: true,autoFill: false,extraParams:{")
.append("featureClass : \"P\",style : \"full\", maxRows : "+maxRows+",labelField : \""+labelField+"\",valueField : \""+valueField+"\",")
.append("featureClass : \"P\",style : \"full\", maxRows : "+maxRows+",labelField : \""+searchField+"\",valueField : \""+searchField+"\",")
.append("searchField : \""+searchField+"\",entityName : \""+entityName+"\",trem: getTremValue"+name+"}");
if(StringUtil.isNotEmpty(parse)){
nsb.append(",parse:function(data){return "+parse+".call(this,data);}");
}else{
nsb.append(",parse:function(data){return jeecgAutoParse.call(this,data);}");
}
if(StringUtil.isNotEmpty(formatItem)){
nsb.append(",formatItem:function(row, i, max){return "+formatItem+".call(this,row, i, max);} ");
}else{
nsb.append(",formatItem:function(row, i, max){return row['"+searchField+"'];}");
}
nsb.append("}).result(function (event, row, formatted) {");
if(StringUtil.isNotEmpty(result)){
nsb.append(result+".call(this,row); ");
}else{
nsb.append("$(\"#"+name+"\").val(row['"+searchField+"']);");
}
nsb.append("}); });")
.append("function getTremValue"+name+"(){return $(\"#"+name+"\").val();}")
.append("</script>")
.append("<input type=\"text\" id=\""+name+"\" datatype=\""+datatype+"\" nullmsg=\""+nullmsg+"\" errormsg=\""+errormsg+"\"/>");
if(StringUtil.isNotEmpty(label)){
nsb.append(" value="+label+" readonly=true");
.append("<input type=\"text\" id=\""+name+"\" name=\""+name+"\" ");
if(oConvertUtils.isNotEmpty(datatype)){
nsb.append("datatype=\""+datatype+"\" nullmsg=\""+nullmsg+"\" errormsg=\""+errormsg+"\" ");
}
nsb.append("/>");
if(StringUtil.isNotEmpty(defValue)){
nsb.append(" value="+defValue+" readonly=true");
}
nsb.append("<input type=\"hidden\" id=\""+valueField+"\" name=\""+valueField+"\"/>");
return nsb;
}
public void setName(String name) {
@ -117,21 +123,12 @@ public class AutocompleteTag extends TagSupport {
public void setMinLength(Integer minLength) {
this.minLength = minLength;
}
public void setLabelField(String labelField) {
this.labelField = labelField;
}
public void setValueField(String valueField) {
this.valueField = valueField;
}
public void setEntityName(String entityName) {
this.entityName = entityName;
}
public void setSearchField(String searchField) {
this.searchField = searchField;
}
public void setSelectfun(String selectfun) {
this.selectfun = selectfun;
}
public void setMaxRows(Integer maxRows){
if(maxRows==null){
maxRows = 10;

@ -34,6 +34,7 @@ public class BaseTag extends TagSupport {
this.cssTheme = cssTheme;
}
public void setType(String type) {
this.type = type;
}
@ -81,25 +82,26 @@ public class BaseTag extends TagSupport {
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("ckfinder", types)) {
sb.append("<script type=\"text/javascript\" src=\"plug-in/ckfinder/ckfinder.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/tools/ckfinderTool.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\">");
@ -108,6 +110,7 @@ public class BaseTag extends TagSupport {
// 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>");
}
@ -173,9 +176,11 @@ public class BaseTag extends TagSupport {
// 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>");
@ -202,6 +207,11 @@ public class BaseTag extends TagSupport {
sb.append("<script src=\"plug-in/jquery-extensions/jeasyui-extensions/jeasyui.extensions.dialog.js\" type=\"text/javascript\"></script>");
sb.append("<script src=\"plug-in/jquery-extensions/jeasyui-extensions/jeasyui.extensions.datagrid.js\" type=\"text/javascript\"></script>");
}
if (oConvertUtils.isIn("ztree", types)) {
sb.append("<link rel=\"stylesheet\" href=\"plug-in/ztree/css/zTreeStyle.css\" type=\"text/css\"></link>");
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>");
}
out.print(sb.toString());
out.flush();
} catch (IOException e) {
@ -209,8 +219,12 @@ public class BaseTag extends TagSupport {
}finally{
if(out!=null){
try {
out.clearBuffer();
sb.setLength(0);
sb = null;
types = null;
} catch (Exception e) {
e.printStackTrace();
}

@ -64,7 +64,11 @@ public class ChooseTag extends TagSupport {
sb.append("<a href=\"#\" class=\"easyui-linkbutton\" plain=\"true\" icon=\"icon-redo\" onClick=\"clearAll_"+methodname+ StringUtil.replace("();\">{0}</a>", "{0}", MutiLangUtil.getMutiLangInstance().getLang("common.clear", langArg)));
}
sb.append("<script type=\"text/javascript\">");
sb.append("var windowapi = frameElement.api, W = windowapi.opener;");
//--authorscott-----start----date:20170407--------for: 异常捕获避免js报错-------------
sb.append("var windowapi;");
sb.append("try{");
sb.append("windowapi = frameElement.api, W = windowapi.opener;");
sb.append("}catch(e){}");
sb.append("function choose_"+methodname+"(){");
//--authorzhoujf-----start----date:20150531--------for: 编辑用户,选择角色,弹出的角色列表页面,默认没选中 标签扩展
sb.append("var url = ").append("'").append(url).append("';");
@ -75,7 +79,9 @@ public class ChooseTag extends TagSupport {
sb.append("if(typeof(windowapi) == 'undefined'){");
sb.append("$.dialog({");
sb.append("content: \'url:\'+url,");
sb.append("zIndex: 2100,");
sb.append("zIndex: getzIndex(),");
if (title != null) {
sb.append("title: \'" + title + "\',");
}
@ -114,7 +120,9 @@ public class ChooseTag extends TagSupport {
sb.append("}else{");
sb.append("$.dialog({");
sb.append("content: \'url:\'+url,");
sb.append("zIndex: 2100,");
sb.append("zIndex: getzIndex(),");
if (title != null) {
sb.append("title: \'" + title + "\',");
}
@ -165,9 +173,11 @@ public class ChooseTag extends TagSupport {
private void clearAll(StringBuffer sb,String methodname) {
String[] textnames=null;
String[] inputTextnames=null;
if (!StringUtil.isEmpty(this.textname)) {
textnames = textname.split(",");
}
if(StringUtil.isNotEmpty(inputTextname)){
inputTextnames = inputTextname.split(",");
}else{

@ -6,7 +6,6 @@ import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import org.jeecgframework.core.util.PropertiesUtil;
import org.jeecgframework.core.util.StringUtil;
/**
@ -19,17 +18,8 @@ public class CkeditorTag extends TagSupport {
private static final long serialVersionUID = 1L;
protected String name;// 属性名称
protected String value;// 默认值
protected boolean isfinder;// 是否加载ckfinder(默认true)
protected String type;// 其它属性(用法:height:400,uiColor:'#9AB8F3' 用,分割)
public boolean isIsfinder() {
return isfinder;
}
public void setIsfinder(boolean isfinder) {
this.isfinder = isfinder;
}
public String getName() {
return name;
}
@ -83,29 +73,9 @@ public class CkeditorTag extends TagSupport {
+ value + "</textarea>");
sb.append("<script type=\"text/javascript\">var ckeditor_" + name
+ "=CKEDITOR.replace(\"" + name + "_text\",{");
if (isfinder) {
PropertiesUtil util = new PropertiesUtil("sysConfig.properties");
sb.append("filebrowserBrowseUrl:"
+ util.readProperty("filebrowserBrowseUrl") + ",");
sb.append("filebrowserImageBrowseUrl:"
+ util.readProperty("filebrowserImageBrowseUrl") + ",");
sb.append("filebrowserFlashBrowseUrl:"
+ util.readProperty("filebrowserFlashBrowseUrl") + ",");
sb.append("filebrowserUploadUrl:"
+ util.readProperty("filebrowserUploadUrl") + ",");
sb.append("filebrowserImageUploadUrl:"
+ util.readProperty("filebrowserImageUploadUrl") + ",");
sb.append("filebrowserFlashUploadUrl:"
+ util.readProperty("filebrowserFlashUploadUrl") + "");
}
if (isfinder && StringUtil.isNotEmpty(type))
sb.append(",");
if (StringUtil.isNotEmpty(type))
sb.append(type);
sb.append("});");
if (isfinder) {
sb.append("CKFinder.SetupCKEditor(ckeditor_" + name + ");");
}
sb.append("</script>");
return sb;
}

@ -1,127 +0,0 @@
package org.jeecgframework.tag.core.easyui;
import java.io.IOException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import org.jeecgframework.core.util.StringUtil;
/**
* ckfinder
*
* @author Alexander
*
*/
public class CkfinderTag extends TagSupport {
private static final long serialVersionUID = 1L;
protected String name;// 属性名称
protected String value;// 默认值
protected String width;// 显示图片宽(上传类型为Images时)
protected String height;// 显示图片高(上传类型为Images时)
protected String buttonClass;// 按钮样式
protected String buttonValue;// 按钮名称
protected String uploadType;// 上传类型(Images,Files,Flash)
public String getButtonValue() {
return buttonValue;
}
public void setButtonValue(String buttonValue) {
this.buttonValue = buttonValue;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getWidth() {
return width;
}
public void setWidth(String width) {
this.width = width;
}
public String getHeight() {
return height;
}
public void setHeight(String height) {
this.height = height;
}
public String getButtonClass() {
return buttonClass;
}
public void setButtonClass(String buttonClass) {
this.buttonClass = buttonClass;
}
public String getUploadType() {
return uploadType;
}
public void setUploadType(String uploadType) {
this.uploadType = uploadType;
}
public int doStartTag() throws JspTagException {
return EVAL_PAGE;
}
public int doEndTag() throws JspTagException {
JspWriter out = null;
try {
out = this.pageContext.getOut();
out.print(end().toString());
out.flush();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
out.clear();
out.close();
} catch (Exception e2) {
}
}
return EVAL_PAGE;
}
public StringBuffer end() {
StringBuffer sb = new StringBuffer();
if ("Images".equals(uploadType)) {
sb.append("<img src=\"" + value + "\" width=\"" + width
+ "\" height=\"" + height + "\" id=\"" + name + "_herf\" ");
if (StringUtil.isEmpty(value))
sb.append("hidden=\"hidden\"");
sb.append(" />");
} else {
sb.append("<a href=\"" + value + "\" id=\"" + name + "_herf\"></a>");
sb.append("<script type=\"text/javascript\">decode(\"" + value
+ "\", \"" + name + "_herf\")</script>");
}
sb.append("<input type=\"hidden\" id=\"" + name + "_input\" name=\""
+ name + "\" value=\"" + value + "\">");
sb.append("<input class=\"" + buttonClass
+ "\" type=\"button\" value=\"" + buttonValue
+ "\" onclick=\"browse('" + name + "_input','" + name
+ "_herf','" + uploadType + "')\">");
return sb;
}
}

@ -16,7 +16,7 @@ import javax.servlet.jsp.tagext.TagSupport;
*/
public class ComboTreeTag extends TagSupport {
protected String id;// ID
protected String url;// 远程数据
protected String url;// 远程数据URL
protected String name;// 控件名称
protected String width;// 宽度
protected String value;// 控件值

@ -31,6 +31,7 @@ public class DataGridColumnTag extends TagSupport {
protected String formatterjs;//自定义函数名称(调用页面自定义js方法 参数为(value,row,index)
protected boolean hidden=false;
protected String replace;
protected String treefield;
protected boolean image;
@ -55,6 +56,7 @@ public class DataGridColumnTag extends TagSupport {
protected String editor;//高级查询用的编辑器
private String defaultVal = "";//列默认值
public String getEditor() {
return editor;
}

@ -21,15 +21,19 @@ public class DataGridConfOptTag extends TagSupport {
private String exp;//判断链接是否显示的表达式
private String operationCode;//按钮的操作Code
private String urlStyle;//样式
private String urlclass;//自定义按钮样式
private String urlfont;//自定义按钮图标样式
public int doStartTag() throws JspTagException {
return EVAL_PAGE;
}
public int doEndTag() throws JspTagException {
Tag t = findAncestorWithClass(this, DataGridTag.class);
DataGridTag parent = (DataGridTag) t;
parent.setConfUrl(url,MutiLangUtil.getMutiLangInstance().getLang(title),MutiLangUtil.getMutiLangInstance().getLang(message),exp,operationCode,urlStyle,urlclass,urlfont);
return EVAL_PAGE;
}
public void setExp(String exp) {
@ -53,6 +57,7 @@ public class DataGridConfOptTag extends TagSupport {
public String getUrlStyle() {
return urlStyle;
}
public String getUrlclass() {
return urlclass;
}
@ -66,4 +71,5 @@ public class DataGridConfOptTag extends TagSupport {
this.urlfont = urlfont;
}
}

@ -18,13 +18,18 @@ public class DataGridDefOptTag extends TagSupport {
private String exp;//判断链接是否显示的表达式
private String operationCode;//按钮的操作Code
private String urlStyle;//样式
private String urlclass;//按钮样式
private String urlfont;//按钮图标
public int doStartTag() throws JspTagException {
return EVAL_PAGE;
}
public int doEndTag() throws JspTagException {
Tag t = findAncestorWithClass(this, DataGridTag.class);
DataGridTag parent = (DataGridTag) t;
parent.setDefUrl(url, title, exp,operationCode,urlStyle);
parent.setDefUrl(url, title, exp,operationCode,urlStyle,urlclass,urlfont);
return EVAL_PAGE;
}
@ -46,5 +51,18 @@ public class DataGridDefOptTag extends TagSupport {
public String getUrlStyle() {
return urlStyle;
}
public String getUrlclass() {
return urlclass;
}
public void setUrlclass(String urlclass) {
this.urlclass = urlclass;
}
public String getUrlfont() {
return urlfont;
}
public void setUrlfont(String urlfont) {
this.urlfont = urlfont;
}
}

@ -21,6 +21,9 @@ public class DataGridOpenOptTag extends TagSupport {
private String operationCode;//按钮的操作Code
private String urlStyle;//样式
private String urlclass;//按钮样式
private String urlfont;//按钮图标
private String openModel = "OpenWin"; //弹出方式
public int doStartTag() throws JspTagException {
return EVAL_PAGE;
@ -28,7 +31,7 @@ public class DataGridOpenOptTag extends TagSupport {
public int doEndTag() throws JspTagException {
Tag t = findAncestorWithClass(this, DataGridTag.class);
DataGridTag parent = (DataGridTag) t;
parent.setOpenUrl(url,title,width,height,exp,operationCode,openModel,urlStyle);
parent.setOpenUrl(url,title,width,height,exp,operationCode,openModel,urlStyle,urlclass,urlfont);
return EVAL_PAGE;
}
public void setWidth(String width) {
@ -59,5 +62,17 @@ public class DataGridOpenOptTag extends TagSupport {
public String getUrlStyle() {
return urlStyle;
}
public String getUrlclass() {
return urlclass;
}
public void setUrlclass(String urlclass) {
this.urlclass = urlclass;
}
public String getUrlfont() {
return urlfont;
}
public void setUrlfont(String urlfont) {
this.urlfont = urlfont;
}
}

@ -1,8 +1,10 @@
package org.jeecgframework.tag.core.easyui;
import java.io.File;
import java.io.IOException;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@ -32,8 +34,15 @@ import org.jeecgframework.web.system.pojo.base.TSType;
import org.jeecgframework.web.system.service.SystemService;
import org.springframework.beans.factory.annotation.Autowired;
import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleIfStatement.Else;
import com.google.common.base.Function;
import com.google.gson.Gson;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;
/**
*
@ -45,6 +54,9 @@ import com.google.gson.Gson;
*/
@SuppressWarnings({"serial","rawtypes","unchecked","static-access"})
public class DataGridTag extends TagSupport {
private final String DATE_FORMATTER = "yyyy-MM-dd";
private final String DATETIME_FORMATTER = "yyyy-MM-dd hh:mm:ss";
protected String fields = "";// 显示字段
protected String searchFields = "";// 查询字段 Author:qiulu Date:20130618 for添加对区间查询的支持
protected String name;// 表格标示
@ -73,7 +85,7 @@ public class DataGridTag extends TagSupport {
private String sortOrder = "asc";//定义列的排序顺序,只能是"递增"或"降序".
private boolean showRefresh = true;// 定义是否显示刷新按钮
private boolean showText = true;// 定义是否显示刷新按钮
private String style = "easyui";// 列表样式easyui,datatables
private String style = "easyui";// 列表样式easyui,datatables,jqgrid
private String onLoadSuccess;// 数据加载完成调用方法
private String onClick;// 单击事件调用方法
private String onDblClick;// 双击事件调用方法
@ -91,6 +103,9 @@ public class DataGridTag extends TagSupport {
private boolean isShowSearch=false;//检索区域是否可收缩
private String treeField;//树形列表展示列
public String getCssTheme() {
return cssTheme;
}
@ -98,6 +113,7 @@ public class DataGridTag extends TagSupport {
this.cssTheme = cssTheme;
}
private boolean queryBuilder = false;// 高级查询器
public boolean isQueryBuilder() {
return queryBuilder;
@ -107,6 +123,10 @@ public class DataGridTag extends TagSupport {
this.queryBuilder = queryBulder;
}
public void setTreeField(String treeField) {
this.treeField = treeField;
}
//json转换中的系统保留字
protected static Map<String,String> syscode = new HashMap<String,String>();
static{
@ -207,8 +227,10 @@ public class DataGridTag extends TagSupport {
dataGridUrl.setMessage(message);
dataGridUrl.setExp(exp);
dataGridUrl.setUrlStyle(urlStyle);
dataGridUrl.setUrlclass(urlclass);
dataGridUrl.setUrlfont(urlfont);
installOperationCode(dataGridUrl, operationCode,urlList);
}
@ -233,13 +255,17 @@ public class DataGridTag extends TagSupport {
/**
* URL
*/
public void setDefUrl(String url, String title, String exp,String operationCode, String urlStyle) {
public void setDefUrl(String url, String title, String exp,String operationCode, String urlStyle,String urlclass,String urlfont) {
DataGridUrl dataGridUrl = new DataGridUrl();
dataGridUrl.setTitle(title);
dataGridUrl.setUrl(url);
dataGridUrl.setType(OptTypeDirection.Deff);
dataGridUrl.setExp(exp);
dataGridUrl.setUrlStyle(urlStyle);
dataGridUrl.setUrlclass(urlclass);
dataGridUrl.setUrlfont(urlfont);
installOperationCode(dataGridUrl, operationCode,urlList);
}
@ -283,8 +309,10 @@ public class DataGridTag extends TagSupport {
/**
* URL
* @param urlfont
* @param urlclass
*/
public void setOpenUrl(String url, String title, String width, String height, String exp,String operationCode, String openModel, String urlStyle) {
public void setOpenUrl(String url, String title, String width, String height, String exp,String operationCode, String openModel, String urlStyle, String urlclass, String urlfont) {
DataGridUrl dataGridUrl = new DataGridUrl();
dataGridUrl.setTitle(title);
dataGridUrl.setUrl(url);
@ -293,6 +321,10 @@ public class DataGridTag extends TagSupport {
dataGridUrl.setType(OptTypeDirection.valueOf(openModel));
dataGridUrl.setExp(exp);
dataGridUrl.setUrlStyle(urlStyle);
dataGridUrl.setUrlclass(urlclass);
dataGridUrl.setUrlfont(urlfont);
installOperationCode(dataGridUrl, operationCode,urlList);
}
@ -349,6 +381,7 @@ public class DataGridTag extends TagSupport {
dataGridColumn.setEditor(editor);
dataGridColumn.setDefaultVal(defaultVal);
columnList.add(dataGridColumn);
Set<String> operationCodes = (Set<String>) super.pageContext.getRequest().getAttribute(Globals.OPERATIONCODES);
if (null!=operationCodes) {
@ -363,9 +396,6 @@ public class DataGridTag extends TagSupport {
}
}
}
if (field != "opt") {
fields += field + ",";
if ("group".equals(queryMode)) {
@ -495,6 +525,11 @@ public class DataGridTag extends TagSupport {
out.print(end().toString());
out.flush();
// }
}else if("jqgrid".equals(style)){
out.print(jqGrid().toString());
out.flush();
}else{
out.print(datatables().toString());
out.flush();
@ -504,6 +539,7 @@ public class DataGridTag extends TagSupport {
}finally{
if(out!=null){
try {
out.clearBuffer();
end().setLength(0);
// 清空资源
@ -514,6 +550,7 @@ public class DataGridTag extends TagSupport {
columnList.clear();
fields = "";
searchFields = "";
} catch (Exception e) {
e.printStackTrace();
}
@ -523,6 +560,353 @@ public class DataGridTag extends TagSupport {
return EVAL_PAGE;
}
/**
* jqgriddatagrid
* @return
*/
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 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/tools/datagrid_2_jqgrid.js\"></script>");
sb.append("<style>");
sb.append("#t_"+name+"{border-bottom:1px solid #ddd;}");
sb.append("#t_"+name+" .btn{margin-right:10px;}");
sb.append(".search_div{padding:10px;}");
sb.append(".tool_bar_div{padding:10px;}");
sb.append("</style>");
sb.append("<table id=\""+name+"\"></table>");
sb.append("<div id=\"gridPager\"></div>");
sb.append("<script type=\"text/javascript\">");
sb.append("$(document).ready(function() {");
sb.append(" $.jgrid.defaults.styleUI=\"Bootstrap\";");
sb.append("$('#"+name+"').jqGrid({");
sb.append("url:'" + actionUrl + "&dataStyle=jqgrid&field=" + fields + "',");
sb.append("datatype:\"json\",");
sb.append("mtype:\"POST\",");
sb.append("height:'auto',");
sb.append("autowidth:true,");
sb.append("shrinkToFit: true,");
sb.append("multiselect: true,");
sb.append("toolbar:[true,'top'],");
StringBuffer colNameBuffer = new StringBuffer();
StringBuffer colModelBuffer = new StringBuffer();
for (DataGridColumn column : columnList) {
colNameBuffer.append("'");
colNameBuffer.append(column.getTitle());
colNameBuffer.append("',");
if("opt".equals(column.getField())){
colModelBuffer.append("{name:'");
colModelBuffer.append(column.getField());
colModelBuffer.append("',index:'");
colModelBuffer.append(column.getField());
colModelBuffer.append("',width:'");
colModelBuffer.append(column.getWidth());
colModelBuffer.append("',align:'");
colModelBuffer.append(column.getAlign());
colModelBuffer.append("' ");
colModelBuffer.append(",hidden:");
colModelBuffer.append(column.isHidden());
colModelBuffer.append(",formatter:currencyFormatter");
colModelBuffer.append("},");
}else{
colModelBuffer.append("{name:'");
colModelBuffer.append(column.getField());
colModelBuffer.append("',index:'");
colModelBuffer.append(column.getField());
colModelBuffer.append("',width:'");
colModelBuffer.append(column.getWidth());
colModelBuffer.append("',align:'");
colModelBuffer.append(column.getAlign());
colModelBuffer.append("' ");
if(oConvertUtils.isNotEmpty(column.getFormatter())){
if("yyyy-MM-dd".equals(column.getFormatter())){
colModelBuffer.append(",formatter:'date'");
}else{
colModelBuffer.append(",formatter:");
colModelBuffer.append(column.getFormatter());
}
// colModelBuffer.append(date);
// colModelBuffer.append("' ");
}
if(oConvertUtils.isNotEmpty(column.getReplace())){
colModelBuffer.append(",formatter:replaceFormatter");
colModelBuffer.append(",formatoptions:{replace:");
String[] replaceArray = column.getReplace().split(",");
StringBuffer replaceBuffer = new StringBuffer();
replaceBuffer.append("{");
if(replaceArray.length > 0){
String text = "";
String value = "";
for (String replaceOri : replaceArray) {
String lang_key = replaceOri.split("_")[0];
text = MutiLangUtil.getMutiLangInstance().getLang(lang_key);
value =replaceOri.split("_")[1];
replaceBuffer.append("'");
replaceBuffer.append(value);
replaceBuffer.append("':'");
replaceBuffer.append(text);
replaceBuffer.append("',");
}
}
replaceBuffer.append("}");
colModelBuffer.append(replaceBuffer.toString());
colModelBuffer.append("}");
}
if(oConvertUtils.isNotEmpty(column.getFormatterjs())){
colModelBuffer.append(",formatter:"+column.getFormatterjs());
}
colModelBuffer.append(",hidden:");
colModelBuffer.append(column.isHidden());
colModelBuffer.append("},");
}
}
String colNames = colNameBuffer.toString();
colNames = colNames.substring(0,colNames.length()-1);
String colModels = colModelBuffer.toString();
colModels = colModels.substring(0,colModels.length()-1);
sb.append("colNames:[");
sb.append(colNames);
sb.append("], colModel:[");
sb.append(colModels);
sb.append("],");
sb.append("rownumbers:true,");
sb.append("viewrecords: true,");
sb.append("rowNum:"+pageSize+",");
sb.append("rowList:["+pageSize+","+2*pageSize+","+3*pageSize+"],");
// sb.append("jsonReader:{");
// sb.append("id: \"blackId\",");
// sb.append("repeatitems : false},");
sb.append("pager:$('#gridPager')");
sb.append(",caption:'");
sb.append(title);
sb.append("'});");
//自适应表格宽度
// sb.append("$(\"#"+name+"\").setGridWidth($(window).width()*0.99);");
//表格顶部,查询、工具栏
sb.append("$('#t_"+name+"').append('");
if(hasQueryColum(columnList)){
sb.append("<div id=\""+name+"tb\" class=\"search_div row\">");
sb.append("<div name=\"searchColums\" class=\"search-content\"><form name=\""+name+"Form\" id=\""+name+"Form\"></form></div><div class=\"col-sm-1 pull-right\">");
sb.append("<button class=\"btn btn-success\" type=\"button\" onclick=\"javascript:"+name+"search();\"><span><i class=\"fa fa-search\"></i>查询</span></button>");
sb.append("</div></div>");
}
sb.append("<div class=\"tool_bar_div bg-info\"></div>");
sb.append("');");
//表格顶部查询
if(hasQueryColum(columnList) && !columnList.isEmpty()){
for (DataGridColumn column : columnList) {
if(column.isQuery()){
sb.append("$('#t_"+name+" .search-content form').append('");
sb.append("<label style=\"margin-right:10px;margin-left:10px;\">");
sb.append(column.getTitle());
sb.append("</label>");
String dictionary = column.getDictionary();
if(oConvertUtils.isNotEmpty(dictionary)){
//字典数据信息,存在两种处理方式,一种是表格元素数据,一种是字典表当中的数据
sb.append("<select name=\"");
sb.append(column.getField());
sb.append("\">");
sb.append("<option value=\"\">---请选择---</option>");
if(dictionary.indexOf(",")>-1){
//表格数据信息
try{
String[] dictionaryArray = dictionary.split(",");
if(dictionaryArray.length == 3){
String sql = "select " + dictionaryArray[1]+","+dictionaryArray[2]+" from "+dictionaryArray[0];
List<Map<String, Object>> dictionaryList = systemService.findForJdbc(sql);
if(dictionaryList != null && !dictionaryList.isEmpty()){
for (Map<String, Object> map : dictionaryList) {
if(map.containsKey(dictionaryArray[1]) && map.containsKey(dictionaryArray[2])){
sb.append("<option value=\"");
sb.append(map.get(dictionaryArray[1]));
sb.append(">");
sb.append(map.get(dictionaryArray[2]));
sb.append("</option>");
}
}
}
}
}catch (Exception e) {
// TODO: 字典数据异常
}
}else{
//字典表数据
List<TSType> typeList = ResourceUtil.allTypes.get(dictionary.toLowerCase());
if(typeList != null && !typeList.isEmpty()){
for (TSType type : typeList) {
sb.append("<option value=\"");
sb.append(type.getTypecode());
sb.append(">");
sb.append(type.getTypename());
sb.append("</option>");
}
}
}
sb.append("</select>");
}else if(oConvertUtils.isNotEmpty(column.getReplace())){
sb.append("<select name=\""+column.getField().replaceAll("_","\\.")+"\" WIDTH=\"100\" style=\"width: 104px\"> ");
sb.append(StringUtil.replaceAll("<option value =\"\" >{0}</option>", "{0}", MutiLangUtil.getMutiLangInstance().getLang("common.please.select")));
String[] test = column.getReplace().split(",");
String text = "";
String value = "";
for (String string : test) {
String lang_key = string.split("_")[0];
text = MutiLangUtil.getMutiLangInstance().getLang(lang_key);
value =string.split("_")[1];
if(column.getDefaultVal()!=null&&column.getDefaultVal().trim().equals(value)){
sb.append("<option value =\""+value+"\" selected=\"selected\">"+text+"</option>");
}else{
sb.append("<option value =\""+value+"\" >"+text+"</option>");
}
}
sb.append("</select>");
}else{
sb.append("<input onkeypress=\"EnterPress(event)\" onkeydown=\"EnterPress()\" type=\"text\" name=\""+column.getField().replaceAll("_","\\.")+"\" "+extendAttribute(column.getExtend())+" ");
if(this.DATE_FORMATTER.equals(column.getFormatter())){
sb.append(" style=\"width: 160px\" class=\"Wdate\" onClick=\"WdatePicker()\" ");
}else if(this.DATETIME_FORMATTER.equals(column.getFormatter())){
sb.append(" style=\"width: 160px\" class=\"Wdate\" onClick=\"WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})\" ");
}else{
sb.append(" style=\"width: 120px\" class=\"inuptxt\" ");
}
if(oConvertUtils.isNotEmpty(column.getDefaultVal())){
sb.append(" value=\""+column.getDefaultVal()+"\" ");
}
sb.append(" />");
}
sb.append("');");
}
}
}
//工具栏的处理方式
if(toolBarList.size() > 0){
for (DataGridUrl toolBar : toolBarList) {
sb.append("$('#t_"+name+" .tool_bar_div').append('");
sb.append("<button class=\"btn btn-success\"");
sb.append(" onclick=\"");
sb.append(toolBar.getFunname());
sb.append("(\\'");
sb.append(toolBar.getTitle());
sb.append("\\',\\'");
sb.append(toolBar.getUrl());
sb.append("\\',\\'");
sb.append(name);
sb.append("\\',");
String width = toolBar.getWidth().contains("%")?"'"+toolBar.getWidth()+"'":toolBar.getWidth();
String height = toolBar.getHeight().contains("%")?"'"+toolBar.getHeight()+"'":toolBar.getHeight();
sb.append(width+","+height+")");
sb.append("\" >");
//工具栏图标显示
String toolBarIcon = toolBar.getIcon();
if(oConvertUtils.isNotEmpty(toolBarIcon)){
if(toolBarIcon.equals("icon-add") ){
sb.append("<i class=\"fa fa-plus\"></i>");
}else if(toolBarIcon.equals("icon-edit") ){
sb.append("<i class=\"fa fa-edit\"></i>");
}else if (toolBarIcon.equals("icon-put") ) {
sb.append("<i class=\"fa fa-download\"></i>");
}else if (toolBarIcon.equals("icon-putout")) {
sb.append("<i class=\"fa fa-upload\"></i>");
}else if (toolBarIcon.equals("icon-remove") ) {
sb.append("<i class=\"fa fa-trash-o\"></i>");
}else if (toolBarIcon.equals("icon-search") ) {
sb.append("<i class=\"fa fa-search\"></i>");
}else{
sb.append("<i class=\"fa "+toolBarIcon+"\"></i>");
}
}
sb.append(toolBar.getTitle());
sb.append("</button>");
sb.append("');");
}
}
//添加在底部的按钮
// sb.append("$('#"+name+"').navGrid('#gridPager',{edit:false,add:false,del:false,search:false})");
// if(toolBarList.size() > 0){
// for (DataGridUrl toolBar : toolBarList) {
// sb.append(".navButtonAdd('#gridPager',{");
// sb.append("caption:'");
// sb.append(toolBar.getTitle());
// sb.append("'");
// sb.append(",buttonicon:'");
// sb.append(toolBar.getIcon());
// sb.append("'");
// sb.append(",onClickButton:");
// sb.append("function(){");
// if(oConvertUtils.isNotEmpty(toolBar.getOnclick())){
// sb.append(toolBar.getOnclick());
// }else{
// sb.append(toolBar.getFunname());
// sb.append("('");
// sb.append(toolBar.getTitle());
// sb.append("','");
// sb.append(toolBar.getUrl());
// sb.append("','");
// sb.append(name);
// sb.append("',");
// String width = toolBar.getWidth().contains("%")?"'"+toolBar.getWidth()+"'":toolBar.getWidth();
// String height = toolBar.getHeight().contains("%")?"'"+toolBar.getHeight()+"'":toolBar.getHeight();
// sb.append(width+","+height+")");
// }
// sb.append("}");
// sb.append(",position:'last'");
// sb.append("})");
// }
// }
sb.append("});");
sb.append("function currencyFormatter(cellvalue, options, rec){ ");
sb.append("var index = options.pos;");
StringBuffer optSb = new StringBuffer();
this.getOptUrl(optSb);
sb.append(optSb.toString());
sb.append("}");
sb.append("function reloadTable(){");
sb.append("try{");
sb.append(" $(\'#\'+gridname).trigger(\"reloadGrid\");" );
sb.append("}catch(ex){}");
sb.append("}");
//数据替换
sb.append("function replaceFormatter(cellvalue,options,rec){");
sb.append("var formatterOptions = options.colModel.formatoptions;");
sb.append("var replace = formatterOptions.replace;");
sb.append("return replace[cellvalue];");
sb.append("}");
//回车查询
sb.append("function EnterPress(e){");
sb.append("var e = e || window.event;");
sb.append("if(e.keyCode == 13){ ");
sb.append(name+"search();");
sb.append("}}");
//提交查询
sb.append("function " + name + "search(){");
sb.append("try { if(! $(\"#"+name+"Form\").Validform({tiptype:3}).check()){return false;} } catch (e){}");
sb.append("var queryParams = '';");
sb.append("$(\'#" + name + "tb\').find('*').each(function(){ if($(this).attr('name') != undefined && $(this).val() != ''){queryParams += \"&\" + $(this).attr('name') + \"=\" + $(this).val();}});");
sb.append("console.log(queryParams);");
sb.append("var url = '"+actionUrl+"&dataStyle=jqgrid&field="+searchFields+"' + queryParams;");
sb.append("console.log(url);");
sb.append("$(\'#" + name + "\').jqGrid('setGridParam',{url:url,page:1}).trigger(\"reloadGrid\");" + "}");
sb.append("</script>");
return sb;
}
/**
* datatables
*
@ -530,6 +914,8 @@ public class DataGridTag extends TagSupport {
*/
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("<script type=\"text/javascript\">");
sb.append("$(document).ready(function() {");
sb.append("var oTable = $(\'#userList\').dataTable({");
@ -543,7 +929,7 @@ public class DataGridTag extends TagSupport {
sb.append("\"bAutoWidth\" : true,");// 自动宽度"
sb.append("\"bLengthChange\" : true,");// 是否允许用户自定义每页显示条数"
sb.append("\"bInfo\" : true,");// 页脚信息"
sb.append("\"sAjaxSource\" : \"userController.do?test\",");
sb.append("\"sAjaxSource\" : \""+ actionUrl + "&field=" + fields+"\",");
sb.append("\"bServerSide\" : true,");// 指定从服务器端获取数据
sb.append("\"oLanguage\" : {" + "\"sLengthMenu\" : \" _MENU_ 条记录\"," + "\"sZeroRecords\" : \"没有检索到数据\"," + "\"sInfo\" : \"第 _START_ 至 _END_ 条数据 共 _TOTAL_ 条\"," + "\"sInfoEmtpy\" : \"没有数据\"," + "\"sProcessing\" : \"正在加载数据...\"," + "\"sSearch\" : \"搜索\"," + "\"oPaginate\" : {" + "\"sFirst\" : \"首页\"," + "\"sPrevious\" : \"前页\", " + "\"sNext\" : \"后页\"," + "\"sLast\" : \"尾页\"" + "}" + "},"); // 汉化
// 获取数据的处理函数 \"data\" : {_dt_json : JSON.stringify(aoData)},
@ -573,6 +959,7 @@ public class DataGridTag extends TagSupport {
sb.append(",\"bSortable\":" + column.isSortable() + "");
sb.append(",\"bVisible\":" + !column.isHidden() + "");
sb.append(",\"bSearchable\":" + column.isQuery() + "");
}
sb.append("}");
@ -607,7 +994,11 @@ public class DataGridTag extends TagSupport {
grid = "treegrid";
sb.append("$(\'#" + name + "\').treegrid({");
sb.append("idField:'id',");
if(StringUtils.isNotEmpty(treeField)){
sb.append("treeField:'"+treeField+"',");
}else{
sb.append("treeField:'text',");
}
} else {
grid = "datagrid";
sb.append("$(\'#" + name + "\').datagrid({");
@ -640,8 +1031,12 @@ public class DataGridTag extends TagSupport {
for (DataGridColumn col : columnList) {
if (col.isQuery()&&col.getDefaultVal()!=null&&!col.getDefaultVal().trim().equals("")) {
//sb.append("queryParams:{documentTitle:'woniu'},");
if(!"group".equals(col.getQueryMode())){
queryParams += col.getField()+":'"+col.getDefaultVal()+"',";
}
}
}
if(queryParams.indexOf(",")>-1){
queryParams = queryParams.substring(0, queryParams.length()-1);
@ -650,6 +1045,7 @@ public class DataGridTag extends TagSupport {
//System.out.println("queryParams===="+queryParams);
sb.append(queryParams);
}
sb.append(StringUtil.replaceAll("loadMsg: \'{0}\',", "{0}", MutiLangUtil.getMutiLangInstance().getLang("common.data.loading")));
sb.append("pageSize: " + pageSize + ",");
sb.append("pagination:" + pagination + ",");
@ -683,6 +1079,13 @@ public class DataGridTag extends TagSupport {
sb.append(" var firstNode = $(\'#" + name + "\').treegrid('getRoots')[0];");
sb.append(" $(\'#" + name + "\').treegrid('expand',firstNode.id)}");
}
sb.append("if(!"+treegrid+"){");
sb.append("if(data.total && data.rows.length==0) {");
sb.append("var grid = $(\'#"+name+"\');");
sb.append("var curr = grid.datagrid(\'getPager\').data(\"pagination\").options.pageNumber;");
sb.append("grid.datagrid({pageNumber:(curr-1)});}}");
if (StringUtil.isNotEmpty(onLoadSuccess)) {
sb.append(onLoadSuccess + "(data);");
}
@ -709,8 +1112,10 @@ public class DataGridTag extends TagSupport {
sb.append("}");
sb.append("});");
this.setPager(sb, grid);
sb.append("try{restoreheader();}catch(ex){}");
sb.append("});");
sb.append("function reloadTable(){");
sb.append("try{");
sb.append(" $(\'#\'+gridname).datagrid(\'reload\');" );
@ -724,6 +1129,7 @@ public class DataGridTag extends TagSupport {
sb.append("function getSelectRows(){");
sb.append(" return $(\'#"+name+"\').datagrid('getChecked');");
sb.append("}");
sb.append(" function saveHeader(){");
sb.append(" var columnsFields =null;var easyextends=false;try{columnsFields = $('#"+name+"').datagrid('getColumns');easyextends=true;");
sb.append("}catch(e){columnsFields =$('#"+name+"').datagrid('getColumnFields');}");
@ -774,6 +1180,7 @@ public class DataGridTag extends TagSupport {
sb.append( "}");
sb.append( "}");
sb.append( "}");
if (columnList.size() > 0) {
sb.append("function " + name + "search(){");
//update by jg_renjie at 2016/1/11 for:TASK #823 增加form实现Form表单验证
@ -791,6 +1198,7 @@ public class DataGridTag extends TagSupport {
//searchbox框执行方法
searchboxFun(sb,grid);
//生成重置按钮功能js
//回车事件
@ -800,6 +1208,7 @@ public class DataGridTag extends TagSupport {
sb.append(name+"search();");
sb.append("}}");
sb.append("function searchReset(name){");
sb.append(" $(\"#\"+name+\"tb\").find(\":input\").val(\"\");");
//update by jg_renjie at 2016/1/11 for:TASK #823 增加form实现Form表单验证,此处避免reset时走验证代码做了冗余
@ -827,19 +1236,85 @@ public class DataGridTag extends TagSupport {
//-----longjb1 增加用于高级查询的参数项
sb.append("<input id=\"_sqlbuilder\" name=\"sqlbuilder\" type=\"hidden\" />");
//update by jg_renjie at 2016/1/11 for:TASK #823 增加form实现Form表单验证
sb.append("<form onkeydown='if(event.keyCode==13){" + name + "search();return false;}' id='"+name+"Form'>");
sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/style.css\" type=\"text/css\">");
sb.append("<link rel=\"stylesheet\" href=\"plug-in/Validform/css/tablefrom.css\" type=\"text/css\">");
sb.append("<script type=\"text/javascript\" src=\"plug-in/Validform/js/Validform_v5.3.1_min_zh-cn.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/Validform/js/Validform_Datatype_zh-cn.js\"></script>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/Validform/js/datatype_zh-cn.js\"></script>");
//update by jg_renjie at 2016/1/11 for:TASK #823
getSearchFormInfo(sb);
sb.append("</form></div>");
}
if(toolBarList.size()==0 && !hasQueryColum(columnList)){
sb.append("<div style=\"height:0px;\" >");
}else{
sb.append("<div style=\"height:30px;\" class=\"datagrid-toolbar\">");
}
sb.append("<span style=\"float:left;\" >");
if(toolBarList.size()>0)
{
for (DataGridUrl toolBar : toolBarList) {
sb.append("<a href=\"#\" class=\"easyui-linkbutton\" plain=\"true\" icon=\""+toolBar.getIcon()+"\" ");
if(StringUtil.isNotEmpty(toolBar.getOnclick()))
{
sb.append("onclick="+toolBar.getOnclick()+"");
}
else {
sb.append("onclick=\""+toolBar.getFunname()+"(");
if(!toolBar.getFunname().equals("doSubmit"))
{
sb.append("\'"+toolBar.getTitle()+"\',");
}
String width = toolBar.getWidth().contains("%")?"'"+toolBar.getWidth()+"'":toolBar.getWidth();
String height = toolBar.getHeight().contains("%")?"'"+toolBar.getHeight()+"'":toolBar.getHeight();
sb.append("\'"+toolBar.getUrl()+"\',\'"+name+"\',"+width+","+height+")\"");
}
sb.append(">"+toolBar.getTitle()+"</a>");
}
}
sb.append("</span>");
if("group".equals(getQueryMode()) && hasQueryColum(columnList)){//如果表单是组合查询
sb.append("<span style=\"float:right\">");
sb.append("<a href=\"#\" class=\"easyui-linkbutton\" iconCls=\"icon-search\" onclick=\""+ name+ StringUtil.replaceAll("search()\">{0}</a>", "{0}", MutiLangUtil.getMutiLangInstance().getLang("common.query")));
sb.append("<a href=\"#\" class=\"easyui-linkbutton\" iconCls=\"icon-reload\" onclick=\"searchReset('"+name+ StringUtil.replaceAll("')\">{0}</a>", "{0}", MutiLangUtil.getMutiLangInstance().getLang("common.reset")) );
if(queryBuilder){
sb.append("<a href=\"#\" class=\"easyui-linkbutton\" iconCls=\"icon-search\" onclick=\"queryBuilder('"+ StringUtil.replaceAll("')\">{0}</a>", "{0}", MutiLangUtil.getMutiLangInstance().getLang("common.querybuilder")) );
}sb.append("</span>");
}else if("single".equals(getQueryMode())&& hasQueryColum(columnList)){//如果表单是单查询
sb.append("<span style=\"float:right\">");
sb.append("<input id=\""+name+"searchbox\" class=\"easyui-searchbox\" data-options=\"searcher:"+name+ StringUtil.replaceAll("searchbox,prompt:\'{0}\',menu:\'#", "{0}", MutiLangUtil.getMutiLangInstance().getLang("common.please.input.keyword")) +name+"mm\'\"></input>");
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>");
sb.append("</span>");
}
sb.append("</div>");
if(queryBuilder){
addQueryBuilder(sb,"easyui-linkbutton");
}
return sb;
}
/**
* form
* @param sb
*/
private void getSearchFormInfo(StringBuffer sb) {
//如果表单是组合查询
if("group".equals(getQueryMode())){
for (DataGridColumn col : columnList) {
if (col.isQuery()) {
sb.append("<span style=\"display:-moz-inline-box;display:inline-block;\">");
sb.append("<span style=\"vertical-align:middle;display:-moz-inline-box;display:inline-block;width: 80px;text-align:right;text-overflow:ellipsis;-o-text-overflow:ellipsis; overflow: hidden;white-space:nowrap; \" title=\""+col.getTitle()+"\">"+col.getTitle()+"</span>");
sb.append("<span style=\"vertical-align:middle;display:-moz-inline-box;display:inline-block;width: 90px;text-align:right;text-overflow:ellipsis;-o-text-overflow:ellipsis; overflow: hidden;white-space:nowrap; \" title=\""+col.getTitle()+"\">"+col.getTitle()+"</span>");
if("single".equals(col.getQueryMode())){
if(!StringUtil.isEmpty(col.getReplace())){
sb.append("<select name=\""+col.getField().replaceAll("_","\\.")+"\" WIDTH=\"100\" style=\"width: 104px\"> ");
@ -861,6 +1336,7 @@ public class DataGridTag extends TagSupport {
sb.append("<option value =\""+value+"\" >"+text+"</option>");
}
}
sb.append("</select>");
}else if(!StringUtil.isEmpty(col.getDictionary())){
@ -872,11 +1348,12 @@ public class DataGridTag extends TagSupport {
// <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: 100px\" 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=\"inputClick(this,'"+dic[1]+"','"+dic[0]+"');\" value=\""+col.getDefaultVal()+"\"/> ");
}else{
sb.append("<input type=\"text\" name=\""+col.getField().replaceAll("_","\\.")+"\" style=\"width: 100px\" 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=\"inputClick(this,'"+dic[1]+"','"+dic[0]+"');\" /> ");
}
}else if(col.getDictionary().contains(",")&&(!col.isPopup())){
String[] dic = col.getDictionary().split(",");
String sql = "select " + dic[1] + " as field," + dic[2]
@ -894,6 +1371,7 @@ public class DataGridTag extends TagSupport {
sb.append(" <option value=\""+map.get("field")+"\">");
}
sb.append(map.get("text"));
sb.append(" </option>");
}
@ -916,6 +1394,7 @@ public class DataGridTag extends TagSupport {
+ "\">");
}
sb.append(MutiLangUtil.getMutiLangInstance().getLang(type.getTypename()));
sb.append(" </option>");
}
@ -926,78 +1405,44 @@ public class DataGridTag extends TagSupport {
sb.append(getAutoSpan(col.getField().replaceAll("_","\\."),extendAttribute(col.getExtend())));
}else{
if(col.getDefaultVal()!=null&&!col.getDefaultVal().trim().equals("")){
sb.append("<input onkeypress=\"EnterPress(event)\" onkeydown=\"EnterPress()\" type=\"text\" name=\""+col.getField().replaceAll("_","\\.")+"\" "+extendAttribute(col.getExtend())+" class=\"inuptxt\" style=\"width: 100px\" value=\""+col.getDefaultVal()+"\" />");
sb.append("<input onkeypress=\"EnterPress(event)\" onkeydown=\"EnterPress()\" type=\"text\" name=\""+col.getField().replaceAll("_","\\.")+"\" "+extendAttribute(col.getExtend())+" ");
if(this.DATE_FORMATTER.equals(col.getFormatter())){
sb.append(" style=\"width: 160px\" class=\"Wdate\" onClick=\"WdatePicker()\" ");
}else if(this.DATETIME_FORMATTER.equals(col.getFormatter())){
sb.append(" style=\"width: 160px\" class=\"Wdate\" onClick=\"WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})\" ");
}else{
sb.append("<input onkeypress=\"EnterPress(event)\" onkeydown=\"EnterPress()\" type=\"text\" name=\""+col.getField().replaceAll("_","\\.")+"\" "+extendAttribute(col.getExtend())+" class=\"inuptxt\" style=\"width: 100px\" />");
sb.append(" style=\"width: 120px\" class=\"inuptxt\" ");
}
if(oConvertUtils.isNotEmpty(col.getDefaultVal())){
sb.append(" value=\""+col.getDefaultVal()+"\" ");
}
sb.append(" />");
//sb.append("<input onkeypress=\"EnterPress(event)\" onkeydown=\"EnterPress()\" type=\"text\" name=\""+col.getField().replaceAll("_","\\.")+"\" "+extendAttribute(col.getExtend())+" class=\"inuptxt\" style=\"width: 100px\" value="+col.getDefaultVal()==null?"":"\""+col.getDefaultVal()+"\""+"/>");
}
}else if("group".equals(col.getQueryMode())){
if(this.DATE_FORMATTER.equals(col.getFormatter())){
sb.append("<input type=\"text\" name=\""+col.getField()+"_begin\" style=\"width: 94px\" "+extendAttribute(col.getExtend())+" class=\"Wdate\" onClick=\"WdatePicker()\"/>");
sb.append("<span style=\"display:-moz-inline-box;display:inline-block;width: 8px;text-align:right;\">~</span>");
sb.append("<input type=\"text\" name=\""+col.getField()+"_end\" style=\"width: 94px\" "+extendAttribute(col.getExtend())+" class=\"Wdate\" onClick=\"WdatePicker()\"/>");
}else if(this.DATETIME_FORMATTER.equals(col.getFormatter())){
sb.append("<input type=\"text\" name=\""+col.getField()+"_begin1\" style=\"width: 140px\" "+extendAttribute(col.getExtend())+" class=\"Wdate\" onClick=\"WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})\"/>");
sb.append("<span style=\"display:-moz-inline-box;display:inline-block;width: 8px;text-align:right;\">~</span>");
sb.append("<input type=\"text\" name=\""+col.getField()+"_end2\" style=\"width: 140px\" "+extendAttribute(col.getExtend())+" class=\"Wdate\" onClick=\"WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})\"/>");
}else{
sb.append("<input type=\"text\" name=\""+col.getField()+"_begin\" style=\"width: 94px\" "+extendAttribute(col.getExtend())+" class=\"inuptxt\"/>");
sb.append("<span style=\"display:-moz-inline-box;display:inline-block;width: 8px;text-align:right;\">~</span>");
sb.append("<input type=\"text\" name=\""+col.getField()+"_end\" style=\"width: 94px\" "+extendAttribute(col.getExtend())+" class=\"inuptxt\"/>");
}
sb.append("</span>");
}
}
}
sb.append("</form></div>");
}
if(toolBarList.size()==0 && !hasQueryColum(columnList)){
sb.append("<div style=\"height:0px;\" >");
}else{
sb.append("<div style=\"height:30px;\" class=\"datagrid-toolbar\">");
}
sb.append("<span style=\"float:left;\" >");
if(toolBarList.size()>0)
{
for (DataGridUrl toolBar : toolBarList) {
sb.append("<a href=\"#\" class=\"easyui-linkbutton\" plain=\"true\" icon=\""+toolBar.getIcon()+"\" ");
if(StringUtil.isNotEmpty(toolBar.getOnclick()))
{
sb.append("onclick="+toolBar.getOnclick()+"");
}
else {
sb.append("onclick=\""+toolBar.getFunname()+"(");
if(!toolBar.getFunname().equals("doSubmit"))
{
sb.append("\'"+toolBar.getTitle()+"\',");
}
String width = toolBar.getWidth().contains("%")?"'"+toolBar.getWidth()+"'":toolBar.getWidth();
String height = toolBar.getHeight().contains("%")?"'"+toolBar.getHeight()+"'":toolBar.getHeight();
sb.append("\'"+toolBar.getUrl()+"\',\'"+name+"\',"+width+","+height+")\"");
}
sb.append(">"+toolBar.getTitle()+"</a>");
}
}
sb.append("</span>");
if("group".equals(getQueryMode()) && hasQueryColum(columnList)){//如果表单是组合查询
sb.append("<span style=\"float:right\">");
sb.append("<a href=\"#\" class=\"easyui-linkbutton\" iconCls=\"icon-search\" onclick=\""+ name+ StringUtil.replaceAll("search()\">{0}</a>", "{0}", MutiLangUtil.getMutiLangInstance().getLang("common.query")));
sb.append("<a href=\"#\" class=\"easyui-linkbutton\" iconCls=\"icon-reload\" onclick=\"searchReset('"+name+ StringUtil.replaceAll("')\">{0}</a>", "{0}", MutiLangUtil.getMutiLangInstance().getLang("common.reset")) );
if(queryBuilder){
sb.append("<a href=\"#\" class=\"easyui-linkbutton\" iconCls=\"icon-search\" onclick=\"queryBuilder('"+ StringUtil.replaceAll("')\">{0}</a>", "{0}", MutiLangUtil.getMutiLangInstance().getLang("common.querybuilder")) );
}sb.append("</span>");
}else if("single".equals(getQueryMode())&& hasQueryColum(columnList)){//如果表单是单查询
sb.append("<span style=\"float:right\">");
sb.append("<input id=\""+name+"searchbox\" class=\"easyui-searchbox\" data-options=\"searcher:"+name+ StringUtil.replaceAll("searchbox,prompt:\'{0}\',menu:\'#", "{0}", MutiLangUtil.getMutiLangInstance().getLang("common.please.input.keyword")) +name+"mm\'\"></input>");
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>");
sb.append("</span>");
}
sb.append("</div>");
if(queryBuilder){
addQueryBuilder(sb,"easyui-linkbutton");
}
return sb;
}
@ -1179,12 +1624,15 @@ public class DataGridTag extends TagSupport {
urlfont.append(dataGridUrl.getUrlfont());
urlfont.append("\'></i>");
}
if (OptTypeDirection.Confirm.equals(dataGridUrl.getType())) {
if(!StringUtil.isEmpty(dataGridUrl.getUrlclass())){
sb.append("href+=\"<a href=\'#\' "+urlclass.toString()+" onclick=confirm(\'" + url + "\',\'" + dataGridUrl.getMessage() + "\',\'"+name+"\')" + style.toString() + "> "+urlfont.toString()+" \";");
}else{
sb.append("href+=\"[<a href=\'#\' onclick=confirm(\'" + url + "\',\'" + dataGridUrl.getMessage() + "\',\'"+name+"\')" + style.toString() + "> \";");
}
}
if (OptTypeDirection.Del.equals(dataGridUrl.getType())) {
if(!StringUtil.isEmpty(dataGridUrl.getUrlclass())){//倘若urlclass不为空则去掉链接前面的"[";
@ -1205,11 +1653,24 @@ public class DataGridTag extends TagSupport {
}
if (OptTypeDirection.OpenWin.equals(dataGridUrl.getType())) {
if(!StringUtil.isEmpty(dataGridUrl.getUrlclass())){//倘若urlclass不为空则去掉链接前面的"[";
sb.append("href+=\"<a href=\'#\' "+urlclass.toString()+" onclick=openwindow('" + dataGridUrl.getTitle() + "','" + url + "','"+name+"'," + dataGridUrl.getWidth() + "," + dataGridUrl.getHeight() + ")" + style.toString() + ">"+urlfont.toString()+"\";");
}else{
sb.append("href+=\"[<a href=\'#\' onclick=openwindow('" + dataGridUrl.getTitle() + "','" + url + "','"+name+"'," + 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+=\"<a href=\'" + url + "' "+urlclass.toString()+" title=\'"+dataGridUrl.getTitle()+"\'" + style.toString() + ">"+urlfont.toString()+"\";");
}else{
sb.append("href+=\"[<a href=\'" + url + "' title=\'"+dataGridUrl.getTitle()+"\'" + style.toString() + ">\";");
}
}
if (OptTypeDirection.OpenTab.equals(dataGridUrl.getType())) {
sb.append("href+=\"[<a href=\'#\' onclick=addOneTab('" + dataGridUrl.getTitle() + "','" + url + "')>\";");
}
@ -1299,7 +1760,12 @@ public class DataGridTag extends TagSupport {
if((column.isFrozenColumn()&&frozen==0)||(!column.isFrozenColumn()&&frozen==1)){
String field;
if (treegrid) {
field = column.getTreefield();
if(StringUtils.isEmpty(field)){
field = column.getField();
}
} else {
field = column.getField();
}
@ -1368,12 +1834,14 @@ public class DataGridTag extends TagSupport {
sb.append(","+column.getExtendParams());
}
}
// 隐藏字段
if (column.isHidden()) {
sb.append(",hidden:true");
}
if (!treegrid) {
// 字段排序
if ((column.isSortable()) && (field.indexOf("_") <= 0 && field != "opt")) {
@ -1388,6 +1856,7 @@ public class DataGridTag extends TagSupport {
sb.append(",formatter:function(value,rec,index){");
sb.append(" return "+column.getFormatterjs()+"(value,rec,index);}");
}
}else {
// 显示图片
if (column.isImage()) {
@ -1795,6 +2264,7 @@ public class DataGridTag extends TagSupport {
sb.append("function get" + name + "Selections(field){" + "var ids = [];" + "var rows = $(\'#" + name + "\')." + grid + "(\'getSelections\');" + "for(var i=0;i<rows.length;i++){" + "ids.push(rows[i][field]);" + "}" + "ids.join(\',\');" + "return ids" + "};");
sb.append("function getSelectRows(){");
sb.append(" return $(\'#"+name+"\').datagrid('getChecked');}");
sb.append(" function saveHeader(){");
sb.append(" var columnsFields =null;var easyextends=false;try{columnsFields = $('#"+name+"').datagrid('getColumns');easyextends=true;");
sb.append("}catch(e){columnsFields =$('#"+name+"').datagrid('getColumnFields');}");
@ -1829,6 +2299,7 @@ public class DataGridTag extends TagSupport {
sb.append( "}");
sb.append( "}");
sb.append( "}");
if (columnList.size() > 0) {
sb.append("function " + name + "search(){");
sb.append("var queryParams=$(\'#" + name + "\').datagrid('options').queryParams;");
@ -1848,6 +2319,7 @@ public class DataGridTag extends TagSupport {
sb.append(name+"search();");
sb.append("}}");
sb.append("function searchReset(name){");
sb.append(" $(\"#"+name+"tb\").find(\":input\").val(\"\");");
String func = name.trim() + "search();";

@ -8,6 +8,7 @@ import javax.servlet.jsp.tagext.TagSupport;
import org.apache.commons.lang.StringUtils;
import org.jeecgframework.core.util.MutiLangUtil;
import org.jeecgframework.core.util.oConvertUtils;
/**
*
@ -20,8 +21,30 @@ import org.jeecgframework.core.util.MutiLangUtil;
public class DepartSelectTag extends TagSupport {
private static final long serialVersionUID = 1;
private String selectedIdsInputId; // 用于记录已选择部门编号的input的id
private String selectedNamesInputId; // 用于显示已选择部门名称的input的name
private String inputWidth; //输入框宽度
private String windowWidth; //弹出窗口宽度
private String windowHeight; //弹出窗口高度
private String departIdsDefalutVal; //部门ids 默认值
private String departNamesDefalutVal; //部门names 默认值
private String readonly = "readonly"; // 只读属性
private boolean hasLabel = false; //是否显示lable,默认不显示
private String title; // 标题
private String readonly;// 只读属性
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public boolean isHasLabel() {
return hasLabel;
}
public void setHasLabel(boolean hasLabel) {
this.hasLabel = hasLabel;
}
public String getReadonly() {
return readonly;
}
@ -29,7 +52,6 @@ public class DepartSelectTag extends TagSupport {
this.readonly = readonly;
}
private String selectedNamesInputId; // 用于记录已选择部门编号的input的id
public String getSelectedNamesInputId() {
return selectedNamesInputId;
}
@ -38,7 +60,6 @@ public class DepartSelectTag extends TagSupport {
this.selectedNamesInputId = _selectedNamesInputId;
}
private String selectedIdsInputId; // 用于显示已选择部门名称的input的id
public String getSelectedIdsInputId() {
return selectedIdsInputId;
}
@ -47,17 +68,12 @@ public class DepartSelectTag extends TagSupport {
this.selectedIdsInputId = _selectedIdsInputId;
}
private String departNameInputWidth; //已选择机构输入框宽度
public String getDepartNameInputWidth() {
return departNameInputWidth;
public String getInputWidth() {
return inputWidth;
}
public void setDepartNameInputWidth(String departNameInputWidth) {
this.departNameInputWidth = departNameInputWidth;
public void setInputWidth(String inputWidth) {
this.inputWidth = inputWidth;
}
private String windowWidth; //窗口宽度
public String getWindowWidth() {
return windowWidth;
}
@ -66,7 +82,6 @@ public class DepartSelectTag extends TagSupport {
this.windowWidth = windowWidth;
}
private String windowHeight; //窗口高度
public String getWindowHeight() {
return windowHeight;
}
@ -75,22 +90,18 @@ public class DepartSelectTag extends TagSupport {
this.windowHeight = windowHeight;
}
private String departId;
private String departName;
public String getDepartId() {
return departId;
public String getDepartIdsDefalutVal() {
return departIdsDefalutVal;
}
public void setDepartId(String departId) {
this.departId = departId;
public void setDepartIdsDefalutVal(String departIdsDefalutVal) {
this.departIdsDefalutVal = departIdsDefalutVal;
}
public String getDepartName() {
return departName;
public String getDepartNamesDefalutVal() {
return departNamesDefalutVal;
}
public void setDepartName(String departName) {
this.departName = departName;
public void setDepartNamesDefalutVal(String departNamesDefalutVal) {
this.departNamesDefalutVal = departNamesDefalutVal;
}
public int doStartTag() throws JspTagException {
return EVAL_PAGE;
}
@ -117,18 +128,17 @@ public class DepartSelectTag extends TagSupport {
StringBuffer sb = new StringBuffer();
if (StringUtils.isBlank(selectedNamesInputId)) {
selectedNamesInputId = "departname"; // 默认id
selectedNamesInputId = "orgNames"; // 默认id
}
if (StringUtils.isBlank(selectedIdsInputId)) {
selectedIdsInputId = "orgIds"; // 默认id
}
String lblDepartment = MutiLangUtil.getMutiLangInstance().getLang("common.department");
if(StringUtils.isBlank(lblDepartment)){
lblDepartment = "组织机构";
if(StringUtils.isBlank(title)){
title = "选择部门";
}
if(StringUtils.isBlank(departNameInputWidth)){
departNameInputWidth = "80px";
if(StringUtils.isBlank(inputWidth)){
inputWidth = "150px";
}
if(StringUtils.isBlank(windowWidth)){
@ -138,22 +148,21 @@ public class DepartSelectTag extends TagSupport {
if(StringUtils.isBlank(windowHeight)){
windowHeight = "350px";
}
sb.append("<span style=\"display:-moz-inline-box;display:inline-block;\">");
sb.append("<span style=\"vertical-align:middle;display:-moz-inline-box;display:inline-block;width: " + departNameInputWidth + ";text-align:right;\" title=\"" + lblDepartment + "\"/>");
sb.append(lblDepartment + "");
sb.append("</span>");
sb.append("<input readonly=\"true\" type=\"text\" id=\"" + selectedNamesInputId + "\" name=\"" + selectedNamesInputId + "\" style=\"width: 300px\" onclick=\"openDepartmentSelect()\" ");
if(StringUtils.isNotBlank(departId)){
sb.append(" value=\""+departName+"\"");
if(hasLabel && oConvertUtils.isNotEmpty(title)){
sb.append(title + "");
}
sb.append("<input readonly=\"true\" type=\"text\" id=\"" + selectedNamesInputId + "\" name=\"" + selectedNamesInputId + "\" style=\"width: "+inputWidth+"\" onclick=\"openDepartmentSelect()\" ");
if(StringUtils.isNotBlank(departNamesDefalutVal)){
sb.append(" value=\""+departNamesDefalutVal+"\"");
}
sb.append(" />");
String orgIds = "";
sb.append("<input id=\"" + selectedIdsInputId + "\" name=\"" + selectedIdsInputId + "\" type=\"hidden\" ");
if(StringUtils.isNotBlank(departName)){
sb.append(" value=\""+departId+"\"");
if(StringUtils.isNotBlank(departIdsDefalutVal)){
sb.append(" value=\""+departIdsDefalutVal+"\"");
orgIds = "&orgIds=" + departIdsDefalutVal;
}
sb.append(">");
sb.append("</span>");
sb.append("/>");
String commonDepartmentList = MutiLangUtil.getMutiLangInstance().getLang("common.department.list");
String commonConfirm = MutiLangUtil.getMutiLangInstance().getLang("common.confirm");
@ -162,16 +171,13 @@ public class DepartSelectTag extends TagSupport {
sb.append("<script type=\"text/javascript\">");
sb.append("function openDepartmentSelect() {");
sb.append(" $.dialog.setting.zIndex = 9999; ");
sb.append(" $.dialog({content: 'url:departController.do?departSelect', zIndex: 2100, title: '" + commonDepartmentList + "', lock: true, width: '" + windowWidth + "', height: '" + windowHeight + "', opacity: 0.4, button: [");
sb.append(" $.dialog({content: 'url:departController.do?departSelect" + orgIds + "', zIndex: 2100, title: '" + commonDepartmentList + "', lock: true, width: '" + windowWidth + "', height: '" + windowHeight + "', opacity: 0.4, button: [");
sb.append(" {name: '" + commonConfirm + "', callback: callbackDepartmentSelect, focus: true},");
sb.append(" {name: '" + commonCancel + "', callback: function (){}}");
sb.append(" ]}).zindex();");
sb.append("}");
sb.append("function callbackDepartmentSelect() {");
sb.append(" var iframe = this.iframe.contentWindow;");
//sb.append(" var departname = iframe.getdepartListSelections('text');");
sb.append(" var treeObj = iframe.$.fn.zTree.getZTreeObj(\"departSelect\");");
sb.append(" var nodes = treeObj.getCheckedNodes(true);");
sb.append(" if(nodes.length>0){");
@ -185,7 +191,6 @@ public class DepartSelectTag extends TagSupport {
sb.append(" $('#" + selectedNamesInputId + "').blur();");
sb.append(" $('#" + selectedIdsInputId + "').val(ids);");
sb.append("}");
sb.append("}");
sb.append("</script>");
return sb;

@ -31,21 +31,25 @@ public class DictSelectTag extends TagSupport {
private static final long serialVersionUID = 1;
private String typeGroupCode; // 数据字典类型
private String field; // 选择表单的Name EAMPLE:<select name="selectName" id = ""
// />
private String field; // 选择表单的Name EAMPLE:<select name="selectName" id = ""/>
private String id; // 选择表单ID EAMPLE:<select name="selectName" id = "" />
private String defaultVal; // 默认值
private String divClass; // DIV样式
private String labelClass; // Label样式
private String title; // label显示值
private boolean hasLabel = true; // 是否显示label
private boolean hasLabel = false; // 是否显示label
private String type;// 控件类型select|radio|checkbox
private String dictTable;// 自定义字典表
private String dictField;// 自定义字典表的匹配字段-字典的编码值
private String dictText;// 自定义字典表的显示文本-字典的显示值
private String extendJson;//扩展参数
private String readonly;// 只读属性
private String dictCondition;//查询条件属性
private String datatype;//校验类型 validform必须输入规则*
@Autowired
private static SystemService systemService;
public String getReadonly() {
return readonly;
}
@ -53,7 +57,6 @@ public class DictSelectTag extends TagSupport {
this.readonly = readonly;
}
private String dictCondition;
public String getDictCondition() {
return dictCondition;
}
@ -61,8 +64,6 @@ public class DictSelectTag extends TagSupport {
public void setDictCondition(String dicCondition) {
this.dictCondition = dicCondition;
}
private String datatype;
public String getDatatype() {
return datatype;
}
@ -70,9 +71,6 @@ public class DictSelectTag extends TagSupport {
public void setDatatype(String datatype) {
this.datatype = datatype;
}
@Autowired
private static SystemService systemService;
public int doStartTag() throws JspTagException {
return EVAL_PAGE;
}
@ -89,6 +87,7 @@ public class DictSelectTag extends TagSupport {
try {
out.clear();
out.close();
end().setLength(0);
} catch (Exception e2) {
}
}
@ -126,6 +125,7 @@ public class DictSelectTag extends TagSupport {
this.readonly(sb);
//增加扩展属性
if (!StringUtils.isBlank(this.extendJson)) {
Gson gson = new Gson();
@ -173,8 +173,10 @@ public class DictSelectTag extends TagSupport {
}
} else {
sb.append("<select name=\"" + field + "\"");
this.readonly(sb);
//增加扩展属性
if (!StringUtils.isBlank(this.extendJson)) {
Gson gson = new Gson();
@ -232,8 +234,10 @@ public class DictSelectTag extends TagSupport {
if (!StringUtils.isBlank(this.id)) {
sb.append(" id=\"" + id + "\"");
}
this.readonly(sb);
this.datatype(sb);
sb.append(" />");
} else {
@ -242,7 +246,9 @@ public class DictSelectTag extends TagSupport {
if (!StringUtils.isBlank(this.id)) {
sb.append(" id=\"" + id + "\"");
}
this.readonly(sb);
this.datatype(sb);
sb.append(" />");
}
@ -259,9 +265,11 @@ public class DictSelectTag extends TagSupport {
* @param sb
*/
private void checkbox(String name, String code, StringBuffer sb) {
if(this.defaultVal==null){
this.defaultVal="";
}
String[] values = this.defaultVal.split(",");
Boolean checked = false;
for (int i = 0; i < values.length; i++) {
@ -278,7 +286,9 @@ public class DictSelectTag extends TagSupport {
if (!StringUtils.isBlank(this.id)) {
sb.append(" id=\"" + id + "\"");
}
this.readonly(sb);
this.datatype(sb);
sb.append(" />");
} else {
@ -287,7 +297,9 @@ public class DictSelectTag extends TagSupport {
if (!StringUtils.isBlank(this.id)) {
sb.append(" id=\"" + id + "\"");
}
this.readonly(sb);
this.datatype(sb);
sb.append(" />");
}
@ -321,6 +333,7 @@ public class DictSelectTag extends TagSupport {
private List<Map<String, Object>> queryDic() {
String sql = "select " + dictField + " as field," + dictText
+ " as text from " + dictTable;
if(dictCondition!=null){
sql+=dictCondition;
}

@ -42,6 +42,7 @@ public class FormValidationTag extends TagSupport {
public void setCssTheme(String cssTheme) {
this.cssTheme = cssTheme;
}
public String getStyleClass() {
return styleClass;
}
@ -49,6 +50,7 @@ public class FormValidationTag extends TagSupport {
public void setStyleClass(String styleClass) {
this.styleClass = styleClass;
}
public void setTabtitle(String tabtitle) {
this.tabtitle = tabtitle;
}
@ -106,6 +108,7 @@ public class FormValidationTag extends TagSupport {
if(this.getStyleClass()!=null){
sb.append("class=\""+this.getStyleClass()+"\" ");
}
sb.append(" action=\"" + action + "\" name=\"" + formid + "\" method=\"post\">");
if ("btn_sub".equals(btnsub) && dialog)
sb.append("<input type=\"hidden\" id=\"" + btnsub + "\" class=\"" + btnsub + "\"/>");
@ -113,6 +116,14 @@ public class FormValidationTag extends TagSupport {
out.flush();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
out.clearBuffer();
sb.setLength(0);
sb = null;
} catch (Exception e2) {
e2.printStackTrace();
}
}
return EVAL_PAGE;
}
@ -153,6 +164,7 @@ public class FormValidationTag extends TagSupport {
sb.append(SysThemesUtil.getValidformStyleTheme(sysThemesEnum));
//tablefrom.css
sb.append(SysThemesUtil.getValidformTablefrom(sysThemesEnum));
sb.append(StringUtil.replace("<script type=\"text/javascript\" src=\"plug-in/Validform/js/Validform_v5.3.1_min_{0}.js\"></script>", "{0}", lang));
sb.append(StringUtil.replace("<script type=\"text/javascript\" src=\"plug-in/Validform/js/Validform_Datatype_{0}.js\"></script>", "{0}", lang));
sb.append(StringUtil.replace("<script type=\"text/javascript\" src=\"plug-in/Validform/js/datatype_{0}.js\"></script>", "{0}", lang));
@ -166,11 +178,30 @@ public class FormValidationTag extends TagSupport {
sb.append("<SCRIPT type=\"text/javascript\" src=\"plug-in/Validform/plugin/passwordStrength/passwordStrength-min.js\"></SCRIPT>");
}
}
sb.append("<script src=\"plug-in/layer/layer.js\"></script>");
sb.append("<script type=\"text/javascript\">");
sb.append("$(function(){");
sb.append("$(\"#" + formid + "\").Validform({");
if(this.getTiptype()!=null && !"".equals(this.getTiptype())){
if(tiptype.equals("1")){
sb.append("tiptype:function(msg,o,cssctl){");
sb.append("if(o.type == 3){");
sb.append("layer.open({");
sb.append("title:'提示信息',");
sb.append("content:msg,icon:5,shift:6,btn:false,shade:false,time:5000,");
sb.append("cancel:function(index){o.obj.focus();layer.close(index);},");
sb.append("yes:function(index){o.obj.focus();layer.close(index);},");
sb.append("})");
sb.append("}},");
}else{
sb.append("tiptype:"+this.getTiptype()+",");
}
}else{
sb.append("tiptype:1,");
}
@ -240,6 +271,7 @@ public class FormValidationTag extends TagSupport {
}
jqsb.append("jqtransform :{selector:\"select\"}");
}
if (usePlugin.indexOf("jqtransform") >= 0) {
sb.append(jqsb);
}
@ -292,7 +324,10 @@ public class FormValidationTag extends TagSupport {
e.printStackTrace();
}finally{
try {
sb.setLength(0);
sb = null;
out.clearBuffer();
} catch (Exception e2) {
}

@ -1,10 +1,8 @@
package org.jeecgframework.tag.core.easyui;
import java.io.IOException;
import java.util.Set;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import org.jeecgframework.core.constant.Globals;
@ -23,58 +21,46 @@ import org.springframework.beans.factory.annotation.Autowired;
* @version V1.0
*/
public class HasPermissionTag extends TagSupport{
/**
*
*/
private static final long serialVersionUID = 1L;
/**按钮code*/
private String name;
private String code;
@Autowired
private SystemService systemService;
public int doStartTag() throws JspException {
String p = getName();
boolean show = showTagBody(p);
public int doStartTag() throws JspException {
boolean show = showTagBody(code);
if (show) {
return TagSupport.EVAL_BODY_INCLUDE;
} else {
return TagSupport.SKIP_BODY;
} else {
return TagSupport.EVAL_BODY_INCLUDE;
}
}
public boolean showTagBody(String p) {
public boolean showTagBody(String code) {
if(ResourceUtil.getSessionUserName().getUserName().equals("admin")|| !Globals.BUTTON_AUTHORITY_CHECK){
return true;
return false;
}else{
//权限判断;
Set<String> operationCodes = (Set<String>) super.pageContext.getRequest().getAttribute(Globals.OPERATIONCODES);
if (null!=operationCodes) {
for (String MyoperationCode : operationCodes) {
if (oConvertUtils.isEmpty(MyoperationCode))
break;
Set<String> operationCodeIds = (Set<String>) super.pageContext.getRequest().getAttribute(Globals.OPERATIONCODES);
systemService = ApplicationContextUtil.getContext().getBean(SystemService.class);
TSOperation operation = systemService.getEntity(TSOperation.class, MyoperationCode);
if (operation.getOperationcode().equals(p)){
if (null!=operationCodeIds) {
for (String operationCodeId : operationCodeIds) {
if (oConvertUtils.isEmpty(operationCodeId))
break;
TSOperation operation = systemService.getEntity(TSOperation.class, operationCodeId);
if (operation!=null && operation.getOperationcode().equals(code)){
return true;
}
}
}
}
// if(p!=null&&p.trim().equals("show")){
// return true;
// }else if(p!=null&&p.trim().equals("hide")){
// return false;
// }
return false;
}
public String getName() {
return name;
public String getCode() {
return code;
}
public void setName(String name) {
this.name = name;
public void setCode(String code) {
this.code = code;
}
}

@ -44,6 +44,7 @@ public class MenuTag extends TagSupport {
public int doEndTag() throws JspTagException {
JspWriter out = null;
try {
out = this.pageContext.getOut();
out.print(end().toString());
out.flush();
@ -57,11 +58,13 @@ public class MenuTag extends TagSupport {
// out.print(menu);
// out.flush();
// }
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
out.clearBuffer();
end().setLength(0);
} catch (Exception e2) {
}
}
@ -70,18 +73,22 @@ public class MenuTag extends TagSupport {
public StringBuffer end() {
StringBuffer sb = new StringBuffer();
if (style.equals("easyui")) {
sb.append("<ul id=\"nav\" class=\"easyui-tree tree-lines\" fit=\"true\" border=\"false\">");
sb.append(ListtoMenu.getEasyuiMultistageTree(menuFun, style));
sb.append("</ul>");
}
if(style.equals("shortcut"))
// { sb.append("<div id=\"nav\" style=\"display:none;\" class=\"easyui-accordion\" fit=\"true\" border=\"false\">");
{
sb.append("<div id=\"nav\" style=\"display:block;\" class=\"easyui-accordion\" fit=\"true\" border=\"false\">");
sb.append(ListtoMenu.getEasyuiMultistageTree(menuFun, style));
sb.append("</div>");
}
if(style.equals("bootstrap"))
{
sb.append(ListtoMenu.getBootMenu(parentFun, childFun));

@ -23,9 +23,6 @@ public class MutiLangTag extends TagSupport {
protected String langKey;
protected String langArg;
@Autowired
private static MutiLangServiceI mutiLangService;
public int doStartTag() throws JspTagException {
return EVAL_PAGE;
}
@ -49,13 +46,10 @@ public class MutiLangTag extends TagSupport {
}
public String end() {
if (mutiLangService == null)
{
mutiLangService = ApplicationContextUtil.getContext().getBean(MutiLangServiceI.class);
}
String lang_context = mutiLangService.getLang(langKey, langArg);
MutiLangServiceI mutiLangService = ApplicationContextUtil.getContext().getBean(MutiLangServiceI.class);
String lang_context = mutiLangService.getLang(langKey, langArg);
return lang_context;
}

@ -0,0 +1,201 @@
package org.jeecgframework.tag.core.easyui;
import java.io.IOException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import org.apache.commons.lang.StringUtils;
import org.jeecgframework.core.util.MutiLangUtil;
import org.jeecgframework.core.util.oConvertUtils;
/**
*
*
*
* @author: lijun
* @date 2015-3-1
* @version 1.0
*/
public class OrgSelectTag extends TagSupport {
private static final long serialVersionUID = 1;
private String selectedIdsInputId; // 用于记录已选择部门编号的input的id
private String selectedNamesInputId; // 用于显示已选择部门名称的input的name
private String inputWidth; //输入框宽度
private String windowWidth; //弹出窗口宽度
private String windowHeight; //弹出窗口高度
private String departIdsDefalutVal; //部门ids 默认值
private String departNamesDefalutVal; //部门names 默认值
private String readonly = "readonly"; // 只读属性
private boolean hasLabel = false; //是否显示lable,默认不显示
private String title; // 标题
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public boolean isHasLabel() {
return hasLabel;
}
public void setHasLabel(boolean hasLabel) {
this.hasLabel = hasLabel;
}
public String getReadonly() {
return readonly;
}
public void setReadonly(String readonly) {
this.readonly = readonly;
}
public String getSelectedNamesInputId() {
return selectedNamesInputId;
}
public void setSelectedNamesInputId(String _selectedNamesInputId) {
this.selectedNamesInputId = _selectedNamesInputId;
}
public String getSelectedIdsInputId() {
return selectedIdsInputId;
}
public void setSelectedIdsInputId(String _selectedIdsInputId) {
this.selectedIdsInputId = _selectedIdsInputId;
}
public String getInputWidth() {
return inputWidth;
}
public void setInputWidth(String inputWidth) {
this.inputWidth = inputWidth;
}
public String getWindowWidth() {
return windowWidth;
}
public void setWindowWidth(String windowWidth) {
this.windowWidth = windowWidth;
}
public String getWindowHeight() {
return windowHeight;
}
public void setWindowHeight(String windowHeight) {
this.windowHeight = windowHeight;
}
public String getDepartIdsDefalutVal() {
return departIdsDefalutVal;
}
public void setDepartIdsDefalutVal(String departIdsDefalutVal) {
this.departIdsDefalutVal = departIdsDefalutVal;
}
public String getDepartNamesDefalutVal() {
return departNamesDefalutVal;
}
public void setDepartNamesDefalutVal(String departNamesDefalutVal) {
this.departNamesDefalutVal = departNamesDefalutVal;
}
public int doStartTag() throws JspTagException {
return EVAL_PAGE;
}
public int doEndTag() throws JspTagException {
JspWriter out = null;
try {
out = this.pageContext.getOut();
out.print(end().toString());
out.flush();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
out.clear();
out.close();
} catch (Exception e2) {
}
}
return EVAL_PAGE;
}
public StringBuffer end() {
StringBuffer sb = new StringBuffer();
if (StringUtils.isBlank(selectedNamesInputId)) {
selectedNamesInputId = "orgNames"; // 默认id
}
if (StringUtils.isBlank(selectedIdsInputId)) {
selectedIdsInputId = "orgIds"; // 默认id
}
if(StringUtils.isBlank(title)){
title = "选择部门";
}
if(StringUtils.isBlank(inputWidth)){
inputWidth = "150px";
}
if(StringUtils.isBlank(windowWidth)){
windowWidth = "660px";
}
if(StringUtils.isBlank(windowHeight)){
windowHeight = "350px";
}
if(hasLabel && oConvertUtils.isNotEmpty(title)){
sb.append(title + "");
}
sb.append("<input readonly=\"true\" type=\"text\" id=\"" + selectedNamesInputId + "\" name=\"" + selectedNamesInputId + "\" style=\"width: "+inputWidth+"\" onclick=\"openOrgSelect()\" ");
if(StringUtils.isNotBlank(departNamesDefalutVal)){
sb.append(" value=\""+departNamesDefalutVal+"\"");
}
sb.append(" />");
String orgIds = "";
sb.append("<input id=\"" + selectedIdsInputId + "\" name=\"" + selectedIdsInputId + "\" type=\"hidden\" ");
if(StringUtils.isNotBlank(departIdsDefalutVal)){
sb.append(" value=\""+departIdsDefalutVal+"\"");
orgIds = "&orgIds=" + departIdsDefalutVal;
}
sb.append("/>");
String commonDepartmentList = MutiLangUtil.getMutiLangInstance().getLang("common.department.list");
String commonConfirm = MutiLangUtil.getMutiLangInstance().getLang("common.confirm");
String commonCancel = MutiLangUtil.getMutiLangInstance().getLang("common.cancel");
sb.append("<script type=\"text/javascript\">");
sb.append("function openOrgSelect() {");
sb.append(" $.dialog.setting.zIndex = 9999; ");//TODO
sb.append(" $.dialog({content: 'url:departController.do?orgSelect" + orgIds + "', zIndex: 2100, title: '" + commonDepartmentList + "', lock: true, width: '" + windowWidth + "', height: '" + windowHeight + "', opacity: 0.4, button: [");
sb.append(" {name: '" + commonConfirm + "', callback: callbackOrgSelect, focus: true},");
sb.append(" {name: '" + commonCancel + "', callback: function (){}}");
sb.append(" ]}).zindex();");
sb.append("}");
sb.append("function callbackOrgSelect() {");
sb.append(" var iframe = this.iframe.contentWindow;");
sb.append("var nodes = iframe.document.getElementsByClassName(\"departId\");");
sb.append(" if(nodes.length>0){");
sb.append(" var ids='',names='';");
sb.append("for(i=0;i<nodes.length;i++){");
sb.append(" var node = nodes[i];");
sb.append(" if(node.checked){");
sb.append(" ids += node.value+',';");
sb.append(" names += node.name+',';");
sb.append(" }");
sb.append("}");
sb.append(" $('#" + selectedNamesInputId + "').val(names);");
sb.append(" $('#" + selectedNamesInputId + "').blur();");
sb.append(" $('#" + selectedIdsInputId + "').val(ids);");
sb.append("}");
sb.append("}");
sb.append("</script>");
return sb;
}
}

@ -164,7 +164,7 @@ public class SelectZTreeTag extends TagSupport {
+ " );"
+ "});"
+ "</script>");
sb.append(" <input id=\""+id+"\" type=\"text\" readonly value=\"\" style=\"width:"+windowWidth+";height:"+windowHeight+"\" class=\"form-control\" onclick=\"showMenu();\" />");
sb.append(" <input id=\""+id+"\" name=\""+id+"\" type=\"text\" readonly value=\"\" style=\"width:"+windowWidth+";height:"+windowHeight+"\" class=\"form-control\" onclick=\"showMenu();\" />");
sb.append("<div id=\"menuContent\" class=\"menuContent\" style=\"display:none; position: absolute;\" >");
sb.append(" <ul id=\"treeDemo\" class=\"ztree\" style=\"margin-top:0; width:100%;background-color:#f9f9f9\"></ul>");
sb.append("</div>");

@ -29,9 +29,6 @@ public class TabTag extends TagSupport {
private boolean closable=false;//是否带关闭按钮
private String langArg;
@Autowired
private static MutiLangServiceI mutiLangService;
public int doStartTag() throws JspTagException {
return EVAL_PAGE;
}
@ -48,11 +45,8 @@ public class TabTag extends TagSupport {
this.id = id;
}
public void setTitle(String title) {
//add by Rocky, 处理多语言
if(mutiLangService == null)
{
mutiLangService = ApplicationContextUtil.getContext().getBean(MutiLangServiceI.class);
}
MutiLangServiceI mutiLangService = ApplicationContextUtil.getContext().getBean(MutiLangServiceI.class);
String lang_context = mutiLangService.getLang(title, langArg);

@ -105,6 +105,7 @@ public class TabsTag extends TagSupport {
try {
out.clear();
out.close();
end().setLength(0);
} catch (Exception e2) {
}
}
@ -164,9 +165,9 @@ public class TabsTag extends TagSupport {
if (!iframe) {
for (Tab tab : tabList) {
if (tab.getHref() != null) {
sb.append("<div title=\"" + tab.getTitle() + "\" href=\"" + tab.getHref() + "\" style=\"margin:0px;padding:0px;overflow-x:hidden;\"></div>");
sb.append("<div title=\"" + tab.getTitle() + "\" href=\"" + tab.getHref() + "\" style=\"margin:0px;padding:0px;overflow-x:hidden;overflow-y:auto;width=auto;\"></div>");
} else {
sb.append("<div title=\"" + tab.getTitle() + "\" style=\"margin:0px;padding:0px;overflow-x:hidden;\">");
sb.append("<div title=\"" + tab.getTitle() + "\" style=\"margin:0px;padding:0px;overflow-x:hidden;overflow-y:auto;width=auto;\">");
sb.append("<iframe id=\""+tab.getId()+"\" scrolling=\"no\" frameborder=\"0\" src=\""+tab.getIframe()+"\" width=\""+oConvertUtils.getString(tab.getWidth(), "100%")+"\" height=\""+oConvertUtils.getString(tab.getHeigth(), "99.5%")+"\"></iframe>");

@ -7,6 +7,7 @@ import java.util.*;
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;
@ -84,8 +85,10 @@ public class TagUtil {
} else {
value = fieldNametoValues(childFieldName, value);
}
}
if(value != "" && value != null) {
value = converunicode(value.toString());
}
return value;
@ -95,6 +98,7 @@ public class TagUtil {
for (int i=0; i<jsonValue.length(); i++) {
char c = jsonValue.charAt(i);
switch (c){
// case '\"':
// sb.append("\\\"");
// break;
@ -107,6 +111,7 @@ public class TagUtil {
// case '/':
// sb.append("\\/");
// break;
case '\b':
sb.append("\\b");
break;
@ -129,6 +134,7 @@ public class TagUtil {
return sb.toString();
}
/**
*
* @param fields
@ -150,15 +156,29 @@ public class TagUtil {
* @param fields
* @param total
* @param list
* @param dataStyle
* @param page
*/
private static String listtojson(String[] fields, int total, List<?> list, String[] footers) throws Exception {
private static String listtojson(String[] fields, int total, List<?> list, String[] footers, String dataStyle, int pageSize) throws Exception {
//Object[] values = new Object[fields.length];
StringBuffer jsonTemp = new StringBuffer();
jsonTemp.append("{\"total\":" + total + ",\"rows\":[");
if("jqgrid".equals(dataStyle)){
int totalPage = total % pageSize > 0 ? total / pageSize + 1 : total / pageSize;
if(totalPage == 0) totalPage = 1;
jsonTemp.append("{\"total\":" + totalPage );
}else{
jsonTemp.append("{\"total\":" + total );
}
jsonTemp.append(",\"rows\":[");
int i;
String fieldName;
for (int j = 0; j < list.size(); ++j) {
//jsonTemp.append("{");
jsonTemp.append("{\"state\":\"closed\",");
Object fieldValue = null;
for (i = 0; i < fields.length; ++i) {
fieldName = fields[i].toString();
@ -167,7 +187,9 @@ public class TagUtil {
else {
fieldValue = fieldNametoValues(fieldName, list.get(j));
}
jsonTemp.append("\"" + fieldName + "\"" + ":\"" + String.valueOf(fieldValue).replace("\"", "\\\"") + "\"");
jsonTemp.append("\"" + fieldName + "\"" + ":\"" + getStringValue(fieldValue).replace("\"", "\\\"") + "\"");
if (i != fields.length - 1) {
jsonTemp.append(",");
}
@ -204,6 +226,13 @@ public class TagUtil {
jsonTemp.append("}");
return jsonTemp.toString();
}
//为空时返回空串
private static String getStringValue(Object obj){
return (obj == null) ? "" : obj.toString();
}
/**
*
* @param filed
@ -304,11 +333,13 @@ public class TagUtil {
private static JSONObject getJson(DataGrid dg) {
JSONObject jObject = null;
try {
if(!StringUtil.isEmpty(dg.getFooter())){
jObject = JSONObject.parseObject(listtojson(dg.getField().split(","), dg.getTotal(), dg.getResults(),dg.getFooter().split(",")));
jObject = JSONObject.parseObject(listtojson(dg.getField().split(","), dg.getTotal(), dg.getResults(),dg.getFooter().split(","),dg.getDataStyle(),dg.getRows()));
}else{
jObject = JSONObject.parseObject(listtojson(dg.getField().split(","), dg.getTotal(), dg.getResults(),null));
jObject = JSONObject.parseObject(listtojson(dg.getField().split(","), dg.getTotal(), dg.getResults(),null,dg.getDataStyle(),dg.getRows()));
}
} catch (Exception e) {
e.printStackTrace();
}
@ -449,7 +480,42 @@ public class TagUtil {
}finally{
try {
pw.close();
object.clear();
object = null;
dg.clear();
dg = null;
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* easyui
* treegrid JSON
* @param response
* @param dataGrid
*/
public static void treegrid(HttpServletResponse response,DataGrid dg) {
response.setContentType("application/json");
response.setHeader("Cache-Control", "no-store");
JSONObject object = TagUtil.getJson(dg);
JSONArray rows = object.getJSONArray("rows");
PrintWriter pw = null;
try {
pw=response.getWriter();
pw.write(rows.toString());
pw.flush();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
pw.close();
object.clear();
} catch (Exception e) {
e.printStackTrace();
}
@ -482,7 +548,9 @@ public class TagUtil {
}finally{
try {
pw.close();
object.clear();
} catch (Exception e2) {
// TODO: handle exception
}
@ -641,6 +709,7 @@ public class TagUtil {
}
}
public static String getJsonByMap(List fields,List<Map<String,Object>> datas){
if(datas!=null && datas.size()>0){
StringBuffer sb = new StringBuffer();

@ -31,6 +31,7 @@ public class UploadTag extends TagSupport {
protected boolean auto=false;//是否自动上传
protected String onUploadSuccess;//上传成功处理函数
protected boolean view=false;//生成查看删除链接
protected String formId;//参数名称
@ -50,6 +51,7 @@ public class UploadTag extends TagSupport {
}
public void setView(boolean view) {
this.view = view;
}
@ -150,6 +152,7 @@ public class UploadTag extends TagSupport {
}
}
sb.append("});");
}else if (formId!=null) {
sb.append(" var o = {};");
sb.append(" var _array = $('#"+formId+"').serializeArray();");
@ -165,6 +168,7 @@ public class UploadTag extends TagSupport {
sb.append(" });");
sb.append("$(\'#"+id+"\').uploadify(\"settings\", \"formData\", o);");
};
sb.append("} ,"
+"onQueueComplete : function(queueData) { ");
if(dialog)
@ -191,7 +195,9 @@ public class UploadTag extends TagSupport {
if(view)
{
sb.append("var fileitem=\"<span id=\'\"+d.attributes.id+\"\'><a href=\'#\' onclick=openwindow(\'文件查看\',\'\"+d.attributes.viewhref+\"\',\'70%\',\'80%\') title=\'查看\'>\"+d.attributes.name+\"</a><img border=\'0\' onclick=confuploadify(\'\"+d.attributes.delurl+\"\',\'\"+d.attributes.id+\"\') title=\'删除\' src=\'plug-in/uploadify/img/uploadify-cancel.png\' widht=\'15\' height=\'15\'>&nbsp;&nbsp;</span>\";");
sb.append(" m=new Map(); ");
sb.append("m.put(d.attributes.id,fileitem);");
sb.append("fileKey=d.attributes.fileKey;");
}

@ -2,6 +2,7 @@ package org.jeecgframework.tag.core.easyui;
import org.apache.commons.lang.StringUtils;
import org.jeecgframework.core.util.MutiLangUtil;
import org.jeecgframework.core.util.oConvertUtils;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
@ -20,7 +21,36 @@ public class UserSelectTag extends TagSupport {
private static final long serialVersionUID = 1;
private String readonly;// 只读属性
private String title; //标题
private String selectedNamesInputId; // 用于显示已选择用户的用户名 input的id
private String selectedIdsInputId; // 用于记录已选择用户的用户id input的id
private boolean hasLabel = false; //是否显示lable,默认不显示
private String userNamesDefalutVal; //用户名默认值
private String userIdsDefalutVal; //用户ID默认值
private String readonly = "readonly"; // 只读属性
private String inputWidth; //输入框宽度
private String windowWidth; //弹出窗口宽度
private String windowHeight; //弹出窗口高度
public String getUserIdsDefalutVal() {
return userIdsDefalutVal;
}
public void setUserIdsDefalutVal(String userIdsDefalutVal) {
this.userIdsDefalutVal = userIdsDefalutVal;
}
public String getSelectedIdsInputId() {
return selectedIdsInputId;
}
public void setSelectedIdsInputId(String selectedIdsInputId) {
this.selectedIdsInputId = selectedIdsInputId;
}
public boolean isHasLabel() {
return hasLabel;
}
public void setHasLabel(boolean hasLabel) {
this.hasLabel = hasLabel;
}
public String getReadonly() {
return readonly;
}
@ -28,8 +58,6 @@ public class UserSelectTag extends TagSupport {
this.readonly = readonly;
}
private String title;//弹出框标头
public String getTitle() {
return title;
}
@ -38,17 +66,6 @@ public class UserSelectTag extends TagSupport {
this.title = title;
}
private String lblName;//组件名称
public String getLblName() {
return lblName;
}
public void setLblName(String lblName) {
this.lblName = lblName;
}
private String selectedNamesInputId; // 用于记录已选择用户名称的input的id
public String getSelectedNamesInputId() {
return selectedNamesInputId;
}
@ -57,17 +74,12 @@ public class UserSelectTag extends TagSupport {
this.selectedNamesInputId = _selectedNamesInputId;
}
private String userNameInputWidth; //已选择机构输入框宽度
public String getUserNameInputWidth() {
return userNameInputWidth;
public String getInputWidth() {
return inputWidth;
}
public void setUserNameInputWidth(String userNameInputWidth) {
this.userNameInputWidth = userNameInputWidth;
public void setInputWidth(String inputWidth) {
this.inputWidth = inputWidth;
}
private String windowWidth; //窗口宽度
public String getWindowWidth() {
return windowWidth;
}
@ -76,7 +88,6 @@ public class UserSelectTag extends TagSupport {
this.windowWidth = windowWidth;
}
private String windowHeight; //窗口高度
public String getWindowHeight() {
return windowHeight;
}
@ -85,15 +96,12 @@ public class UserSelectTag extends TagSupport {
this.windowHeight = windowHeight;
}
private String userName;
public String getUserName() {
return userName;
public String getUserNamesDefalutVal() {
return userNamesDefalutVal;
}
public void setUserName(String userName) {
this.userName = userName;
public void setUserNamesDefalutVal(String userNamesDefalutVal) {
this.userNamesDefalutVal = userNamesDefalutVal;
}
public int doStartTag() throws JspTagException {
return EVAL_PAGE;
}
@ -120,15 +128,14 @@ public class UserSelectTag extends TagSupport {
StringBuffer sb = new StringBuffer();
if (StringUtils.isBlank(selectedNamesInputId)) {
selectedNamesInputId = "realName"; // 默认id
selectedNamesInputId = "userNames"; // 默认id
}
//String lblDepartment = MutiLangUtil.getMutiLangInstance().getLang("common.department");
if(StringUtils.isBlank(lblName)){
lblName = "真实姓名";
if(StringUtils.isBlank(title)){
title = "用户名称";
}
if(StringUtils.isBlank(userNameInputWidth)){
userNameInputWidth = "80px";
if(StringUtils.isBlank(inputWidth)){
inputWidth = "150px";
}
if(StringUtils.isBlank(windowWidth)){
@ -138,24 +145,23 @@ public class UserSelectTag extends TagSupport {
if(StringUtils.isBlank(windowHeight)){
windowHeight = "350px";
}
if(hasLabel && oConvertUtils.isNotEmpty(title)){
sb.append(title + "");
}
sb.append("<input readonly=\""+readonly+"\" type=\"text\" id=\"" + selectedNamesInputId + "\" name=\"" + selectedNamesInputId + "\" style=\"width: "+inputWidth+"\" onclick=\"openUserSelect()\" ");
if(StringUtils.isNotBlank(userNamesDefalutVal)){
sb.append(" value=\""+userNamesDefalutVal+"\"");
}
sb.append(" />");
if(oConvertUtils.isNotEmpty(selectedIdsInputId)){
sb.append("<input id=\"" + selectedIdsInputId + "\" name=\"" + selectedIdsInputId + "\" type=\"hidden\" ");
if(StringUtils.isNotBlank(userIdsDefalutVal)){
sb.append(" value=\""+userIdsDefalutVal+"\"");
}
sb.append("/>");
}
sb.append("<span style=\"display:-moz-inline-box;display:inline-block;\">");
sb.append("<span style=\"vertical-align:middle;display:-moz-inline-box;display:inline-block;width: " + userNameInputWidth + ";text-align:right;\" title=\"" + lblName + "\"/>");
sb.append(lblName + "");
sb.append("</span>");
sb.append("<input readonly=\"true\" type=\"text\" id=\"" + selectedNamesInputId + "\" name=\"" + selectedNamesInputId + "\" style=\"width: 200px\" onclick=\"openUserSelect()\" ");
/*if(StringUtils.isNotBlank(departId)){
sb.append(" value=\""+departName+"\"");
}*/
//sb.append(" />");
//sb.append("<input id=\"" + selectedIdsInputId + "\" name=\"" + selectedIdsInputId + "\" type=\"hidden\" ");
/*if(StringUtils.isNotBlank(departName)){
sb.append(" value=\""+departId+"\"");
}*/
//sb.append(">");
sb.append("</span>");
//String commonDepartmentList = MutiLangUtil.getMutiLangInstance().getLang("common.department.list");
String commonConfirm = MutiLangUtil.getMutiLangInstance().getLang("common.confirm");
String commonCancel = MutiLangUtil.getMutiLangInstance().getLang("common.cancel");
@ -170,16 +176,24 @@ public class UserSelectTag extends TagSupport {
sb.append("function callbackUserSelect() {");
sb.append("var iframe = this.iframe.contentWindow;");
//var treeObj = iframe.$.fn.zTree.getZTreeObj("departSelect");
sb.append("var rowsData = iframe.$('#userList1').datagrid('getSelections');");
sb.append("if (!rowsData || rowsData.length==0) {");
sb.append("tip('<t:mutiLang langKey=\"common.please.select.edit.item\"/>');");
sb.append("return;");
sb.append("}");
sb.append("var names=rowsData[0].realName;");
sb.append(" var ids='',names='';");
sb.append("for(i=0;i<rowsData.length;i++){");
sb.append(" var node = rowsData[i];");
sb.append(" ids += node.id+',';");
sb.append(" names += node.realName+',';");
sb.append("}");
sb.append("$('#" + selectedNamesInputId + "').val(names);");
sb.append("$('#" + selectedNamesInputId + "').blur();");
//sb.append(" $('#" + selectedIdsInputId + "').val(ids);");
if(oConvertUtils.isNotEmpty(selectedIdsInputId)){
sb.append("$('#" + selectedIdsInputId + "').val(ids);");
}
sb.append("}");
sb.append("</script>");
return sb;

@ -0,0 +1,318 @@
package org.jeecgframework.tag.core.easyui;
import java.io.IOException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import org.jeecgframework.core.util.ResourceUtil;
import org.jeecgframework.core.util.StringUtil;
/**
* WebUploader
*/
public class WebUploaderTag extends TagSupport {
private static final long serialVersionUID = 1L;
private String name;//①文件路径 input默认name、②action返回的文件路径的name
private boolean auto=false;//是否自动上传上传按钮风格
private String buttonStyle;//默认绿色小号按钮
private String url = "systemController/filedeal.do";//文件上传处理url
private int fileNumLimit =3;//fileNumLimit 最大文件数
private int fileSingleSizeLimit=5242880;//fileSingleSizeLimit单个文件最大5M[1024*1024*5]
private int size;//文件总大小
private String fileVal="file";//fileVal设置文件上传域的name,默认file
private boolean duplicate=false;//去重, 根据文件名字、文件大小和最后修改时间来生成hash Key.
private String showImgDiv;//显示图片的div,如果不给会默认在按钮下方添加div其id为'tempdiv_'+name
private String showAndDownUrl=ResourceUtil.getConfigByName("showAndDownUrl");//预览图片请求的url&文件下载url
private String pathValues;//默认值
private String type="file";
private String buttonText;//控件按钮显示文本
private String extensions;//允许的文件后缀,不带点,多个用逗号分割
private String extendParams;//类似css写法 这是文件上传时候需要传递的参数
private String readOnly="false";//保留字段
//private static String imgexts="gif,jpg,jpeg,bmp,png";
public int doStartTag() throws JspTagException {
return EVAL_PAGE;
}
public int doEndTag() throws JspTagException {
JspWriter out = null;
StringBuffer sb = new StringBuffer();
try {
out = this.pageContext.getOut();
end(sb);
out.print(sb.toString());
out.flush();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(out!=null){
try {
out.clearBuffer();
sb.setLength(0);
sb = null;
this.showImgDiv=null;
} catch (Exception e) {
e.printStackTrace();
}
}
}
return EVAL_PAGE;
}
public void end(StringBuffer sb) {
String btnCss=getButtonStyle();//获取按钮样式
//typeResetByext(this.extensions);//根据上传文件的后缀重置type
sb.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"plug-in/webuploader/custom.css\"></link>");
sb.append("<script type=\"text/javascript\" src=\"plug-in/webuploader/webuploader.min.js\"></script>");
sb.append("<div id='"+name+"uploader' class='wu-example'><div id='"+name+"thelist' class='uploader-list'></div><div class='btns'><div id='"+name+"picker'>"+getButtonText()+"</div>");
sb.append("</div></div>");
if("image".equals(type)&&(null==showImgDiv||"".equals(showImgDiv.trim()))){
showImgDiv="tempdiv_"+name;
sb.append("<div id='"+showImgDiv+"'></div>");
}
sb.append("<script type=\"text/javascript\">Array.prototype.removeItem = function(val){var index = this.indexOf(val);if (index > -1) {this.splice(index, 1);}};"
+ "var exsitPathArr_"+name+" =new Array();"
+"$(function() { var state = 'pending';var $list=$('#"+ name +"thelist');"
+"var uploader = WebUploader.create({"
+"swf: '<%=basePath%>/plug-in/webuploader/Uploader.swf',"
+"server :\'"+url+"\',"//getUrl()
+" pick: '#"+ name +"picker',duplicate: "+duplicate+",resize: false,"
+"auto:"+auto+","
+"fileVal:'"+fileVal+"',"
+"fileNumLimit:"+fileNumLimit+","
+"fileSingleSizeLimit:"+fileSingleSizeLimit);
if(null!=extensions&&!"".equals(extensions)){
sb.append(",accept:{extensions:'"+extensions+"'}");
}
if(null==extendParams||"".equals(extendParams)){
sb.append(",formData:{isup:'1'}});");
}else{
sb.append(",formData:{isup:'1',"+extendParams+"}});");
}
if(!auto){
sb.append("\r\nvar upbtnrdo4=\"<div id='"+name+"ctlBtn' class='upbtn btn-blue "+btnCss+"'>开始上传</div>\";$('#"+name+"picker').find('div:eq(0)').after(upbtnrdo4);upbtnrdo4='';\r\n");
if("true".equals(readOnly)||"readOnly".equals(readOnly)){
sb.append("$('#"+name+"ctlBtn').css('display','none');");
}
}
if("image".equals(type)){
sb.append("var imageAdd_"+name+" = true;");
}else{
sb.append("var imageAdd_"+name+" = false;");
}
sb.append("$('#"+name+"picker').find('div:eq(0)').addClass('webuploader-pick "+btnCss+"');");
//sb.append("$('#"+name+"picker').find('div:eq(0)').unbind(\"mouseenter\").unbind(\"mouseleave\");");
sb.append("$('#"+showImgDiv+"').addClass('tempIMGdiv').append('<ul></ul>');\r\n");
sb.append("$list.append('<table class=\"temptable\"></table>');\r\n");
//判断是否支持base64
sb.append(" var isSupportBase64 = function() {var data = new Image();var support = true;data.onload = data.onerror = function() {if( this.width != 1 || this.height != 1 ){support = false;}}//data['src'] = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==';\r\nreturn support;};");
//缩略图大小暂时写死,也可以修改css
sb.append("var ratio = window.devicePixelRatio || 1;var thumbnailWidth = 100 * ratio;var thumbnailHeight = 100 * ratio;");
//随机数
sb.append("var randomFor=function(n){var rnd='';for(var i=0;i<n;i++){rnd+=Math.floor(Math.random()*10);\r\n}\r\nreturn rnd;}\r\n");
//添加列表图片显示上传文件
sb.append("var "+name+"addImgli=function(src,name,xpath,flag){if(imageAdd_"+name+"){var titleclass='hidetitle';//if(flag==1){titleclass='hidetitle';}\r\nvar img = '<li><img name=\"' + name + 'img\" class=\"tempimg\" src=\"' + src + '\"><div class=\"' + titleclass + '\"><span';");
if("true".equals(readOnly)||"readOnly".equals(readOnly)){
sb.append("img+=' style=\"display:none;\"';");
}
sb.append("img+=' class=\"titledel\">'+xpath+'</span><span';");
sb.append("img+=xpath==0?' style=\"display:none;\"' :' ';");
sb.append("img+=' class=\"titledown\">'+xpath+'</span></div></li>';$('#"+showImgDiv+"').find('ul').append(img);}}\r\n");
//添加table文字显示上传文件
sb.append("var addtrFile=function(id,name,text,downsrc,delflag){var trhtml='<tr class=\"item\" id=\"'+id+'\"><td>'+name+'</td><td class=\"state\">'+text+'</td><td class=\"icontd\"><span';");
sb.append("trhtml+=downsrc==0?' style=\"display:none;\"' :' ';");
sb.append("trhtml+=' class=\"down icon-down\">'+downsrc+'</span></td><td class=\"icontd\"><span';");
if("true".equals(readOnly)||"readOnly".equals(readOnly)){
sb.append("trhtml+=' style=\"display:none;\"';");
}
sb.append("trhtml+=' class=\"del icon-cha\">'+delflag+'</span></td><td></td></tr>';$list.children('table').append(trhtml);}");
//获取文件名
sb.append("\r\nvar mygetFileName=function(filepath){if(filepath.lastIndexOf('\\\\')>0){return filepath.substring(filepath.lastIndexOf('\\\\')+1);\r\n}else if(filepath.lastIndexOf('/')>0){return filepath.substring(filepath.lastIndexOf('/')+1);}else{return filepath;}}");
//设置默认值
if(null!=pathValues&&!"".equals(pathValues)){
sb.append("\r\n$list.append( '<div class=\"fordel\"><input type=\"hidden\" name=\""+name+"\" value=\""+pathValues.replace("\\","\\\\")+"\" /></div>' );\r\n");
if("image".equals(type)){
sb.append("var pvs='"+pathValues.replace("\\","\\\\")+"';exsitPathArr_"+name+"=pvs.split(',');for(var a = 0; a< exsitPathArr_"+name+".length; a++){\r\nvar singlePath=exsitPathArr_"+name+"[a];\r\nif(''!=singlePath){var singleSrc=\""+showAndDownUrl+"\"+singlePath;"+name+"addImgli(singleSrc,'name'+a,singlePath,1);}}");
}else{
sb.append("var pvs='"+pathValues.replace("\\","\\\\")+"';exsitPathArr_"+name+"=pvs.split(',');for(var a = 0; a< exsitPathArr_"+name+".length; a++){\r\nvar singlePath=exsitPathArr_"+name+"[a];\r\nif(''!=singlePath){var rf6=randomFor(6);addtrFile('id'+a+rf6,mygetFileName(singlePath),'--历史上传文件--',singlePath,singlePath);}}");
}
}
//删除请求
sb.append("\r\nvar imgDelReq=function(delpath,spanobj){$.post('"+url+"',{path:delpath,isdel:\"1\"},function(aj){var data=JSON.parse(aj);if(data.success){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");
//当文件被加入队列以后触发。
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,'上传成功');"
+"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");
//上传失败
sb.append("uploader.on( 'uploadError', function( file,reason ) {updatetdState(file.id,'上传出错-code:'+reason);});");
//当validate不通过时会以派送错误事件的形式通知调用者。
sb.append("uploader.on( 'error', function(type) {if(type=='Q_TYPE_DENIED'){tip('文件类型不识别');}if(type=='Q_EXCEED_NUM_LIMIT'){tip('文件数量超标');}if(type=='F_DUPLICATE'){tip('相同文件请不要重复上传');}if(type=='F_EXCEED_SIZE'){tip('单个文件大小超标');}if(type=='Q_EXCEED_SIZE_LIMIT'){tip('文件大小超标');}});");
sb.append("uploader.on( 'uploadComplete', function( file ) {$( '#"+name+"'+file.id ).find('.progress').fadeOut('slow');});");
if(!auto){
sb.append("var $btn=$('#"+name+"ctlBtn');");
sb.append("uploader.on('all', function (type) {if (type === 'startUpload') {state = 'uploading';} else if (type === 'stopUpload'){state = 'paused';} else if (type === 'uploadFinished'){state = 'done';}if (state === 'uploading') {$btn.text('暂停上传');} else {$btn.text('开始上传');}});");
sb.append("\r\n$btn.on('click', function () {if (state === 'uploading') {uploader.stop();} else {uploader.upload();}});");
}
if("true".equals(readOnly)||"readOnly".equals(readOnly)){
sb.append("\r\n$('#"+name+"picker').find('div:eq(0)').css('display','none');");
}
sb.append("$('#"+showImgDiv+"').on('mouseenter','li',function(){$(this).find('.hidetitle').slideDown(500);});$('#"+showImgDiv+"').on('mouseleave','li',function(){$(this).find('.hidetitle').slideUp(500);});");
//图片的删除事件
sb.append("$('#"+showImgDiv+"').on('click', 'span',function() {var spanopt=$(this).attr('class');var optpath=$(this).text();\r\n");
//
sb.append("if(spanopt.indexOf('titledel')>=0){if(0==optpath){var optimgname=$(this).parent('.hidetitle').prev('img').attr('name');var img_file_div='"+name+"'+optimgname.substring(0,optimgname.indexOf('img'));$('#'+img_file_div).find('.del').trigger('click');}else{imgDelReq(optpath,this);}}\r\n");
sb.append("if(spanopt.indexOf('titledown')>=0){var downsrc=\""+showAndDownUrl+"\"+optpath+'&down=1';location.href=downsrc;//$(this).find('a').click(function(event){event.stopPropagation()});\r\n}});");
//下载
sb.append("$list.on(\"click\", \".down\",function(){var optpath=$(this).text();if(0!=optpath){var downsrc=\""+showAndDownUrl+"\"+optpath+'&down=1';location.href=downsrc;}});");
//删除
sb.append("$list.on(\"click\", \".del\", function () {var delspantext=$(this).text();var itemObj=$(this).closest(\".item\");var id=itemObj.attr(\"id\").substring("+name.length()+");var delpath=itemObj.find(\"input[name='"+name+"']\").val();if(undefined==delpath||null==delpath){delpath=delspantext;if(delspantext==0){itemObj.remove();uploader.removeFile(id);var myimgli=$('#"+showImgDiv+"').find(\"img[name='\"+id+\"img']\").closest('li');myimgli.off().find('.hidetitle').off().end().remove();\r\nreturn false;}}");
//sb.append("$list.on(\"click\", \".del\", function () {var delspantext=$(this).text();var itemObj=$(this).closest(\".item\");var id=itemObj.attr(\"id\").substring("+name.length()+");var delpath=itemObj.find(\"input[name='"+name+"']\").val();if((undefined==delpath||null==delpath) && delspantext==1){itemObj.remove();var fordelInput=$list.children('.fordel').children('input');if($(this).text()==0){uploader.removeFile(id);var myimgli=$('#"+showImgDiv+"').find(\"img[name='\"+id+\"img']\").closest('li');myimgli.off().find('.hidetitle').off().end().remove();}\r\nif(fordelInput.length>0){fordelInput.val(exsitPathArr_"+name+".join(','));}return false;}");
sb.append("$.post('"+url+"',{path:delpath,isdel:\"1\"},function(aj){var data=JSON.parse(aj);if(data.success){var fordelInput = $list.children('.fordel').children('input');itemObj.remove();if(delspantext==0){uploader.removeFile(id);var myimgli=$('#"+showImgDiv+"').find(\"img[name='\"+id+\"img']\").closest('li');\r\nmyimgli.off().find('.hidetitle').off().end().remove();}else if(fordelInput.length > 0) {exsitPathArr_"+name+".removeItem(delpath);fordelInput.val(exsitPathArr_"+name+".join(','));\r\n}\r\n}\r\n});\r\n});");
sb.append("if(location.href.indexOf('load=detail')!=-1){$('#"+name+"uploader').find('.btns').css('display','none');");
if("image".equals(type)){
sb.append("$('#"+showImgDiv+"').find('.titledel').css('display','none');");
}else{
sb.append("$('#"+name+"uploader').find('.del').closest('td').css('display','none');");
}
sb.append("}\r\n});");
sb.append("</script>");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isAuto() {
return auto;
}
public void setAuto(boolean auto) {
this.auto = auto;
}
public String getButtonStyle() {
if(null==buttonStyle||"".equals(buttonStyle)){
buttonStyle="btn-green btn-S";
}
return buttonStyle;
}
public void setButtonStyle(String buttonStyle) {
this.buttonStyle = buttonStyle;
}
public String getUrl() {
return url+"&sessionId="+pageContext.getSession().getId();
}
public void setUrl(String url) {
this.url = url;
}
public String getShowImgDiv() {
return showImgDiv;
}
public void setShowImgDiv(String showImgDiv) {
this.showImgDiv = showImgDiv;
}
public int getFileNumLimit() {
return fileNumLimit;
}
public int getFileSingleSizeLimit() {
return fileSingleSizeLimit;
}
public void setFileSingleSizeLimit(int fileSingleSizeLimit) {
if(fileSingleSizeLimit>0){
this.fileSingleSizeLimit = fileSingleSizeLimit*1024;
}
}
public void setFileNumLimit(int fileNumLimit) {
this.fileNumLimit = fileNumLimit;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public String getFileVal() {
return fileVal;
}
public void setFileVal(String fileVal) {
this.fileVal = fileVal;
}
public boolean isDuplicate() {
return duplicate;
}
public void setDuplicate(boolean duplicate) {
this.duplicate = duplicate;
}
public String getExtendParams() {
return extendParams;
}
public void setExtendParams(String extendParams) {
this.extendParams = extendParams;
}
public String getPathValues() {
return pathValues;
}
public void setPathValues(String pathValues) {
this.pathValues = pathValues;
}
public String getShowAndDownUrl() {
return showAndDownUrl;
}
public void setShowAndDownUrl(String showAndDownUrl) {
this.showAndDownUrl = showAndDownUrl;
}
public String getReadOnly() {
return readOnly;
}
public void setReadOnly(String readOnly) {
this.readOnly = readOnly;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getButtonText() {
if(null==buttonText||"".equals(buttonText)){
buttonText="选择文件";
}
return buttonText;
}
public void setButtonText(String buttonText) {
this.buttonText = buttonText;
}
public String getExtensions() {
return extensions;
}
public void setExtensions(String extensions) {
this.extensions = extensions;
}
//根据上传文件的后缀重置type
/*private void typeResetByext(String ext){
if(null!=ext&&!"".equals(ext)){
String[] arr=ext.split(",");
for (int i = 0; i < arr.length; i++) {
if(imgexts.indexOf(arr[i])>=0){
this.setType("image");
break;
}
}
}
}*/
}

@ -1,4 +1,8 @@
package org.jeecgframework.tag.vo.datatable;
import org.jeecgframework.core.enums.SysACEIconEnum;
import org.jeecgframework.core.util.StringUtil;
/**
* @Description: TODO()
* asc
@ -7,6 +11,20 @@ package org.jeecgframework.tag.vo.datatable;
*/
public enum SortDirection {
asc, // 升序
desc
desc;
// 降序
public static SortDirection toEnum(String order) {
if (StringUtil.isEmpty(order)) {
//默认排序
return asc;
}
for(SortDirection item : SortDirection.values()) {
if(item.toString().equals(order)) {
return item;
}
}
//默认排序
return asc;
}
}

@ -45,6 +45,7 @@ public class DataGridColumn {
private String defaultVal = "";//列默认值
public String getEditor() {
return editor;
}

@ -23,6 +23,7 @@ public class TreeGridModel implements java.io.Serializable {
private String order;
private String functionType;
private String iconStyle;//图标样式
private Map<String, Object> fieldMap; // 存储实体字段信息容器key-字段名称value-字段值
public String getFunctionType() {
return functionType;
@ -31,8 +32,6 @@ public class TreeGridModel implements java.io.Serializable {
this.functionType = functionType;
}
private Map<String, Object> fieldMap; // 存储实体字段信息容器key-字段名称value-字段值
public String getOrder() {
return order;
}
@ -102,6 +101,7 @@ public class TreeGridModel implements java.io.Serializable {
public void setFieldMap(Map<String, Object> fieldMap) {
this.fieldMap = fieldMap;
}
public String getIconStyle() {
return iconStyle;
}
@ -111,4 +111,5 @@ public class TreeGridModel implements java.io.Serializable {
}

@ -1,815 +0,0 @@
package org.jeecgframework.web.autoform.controller;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.apache.velocity.VelocityContext;
import org.jeecgframework.codegenerate.database.JeecgReadTable;
import org.jeecgframework.codegenerate.pojo.Columnt;
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.DynamicDBUtil;
import org.jeecgframework.core.util.ResourceUtil;
import org.jeecgframework.core.util.SqlUtil;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.core.util.oConvertUtils;
import org.jeecgframework.p3.core.util.plugin.ViewVelocity;
import org.jeecgframework.tag.core.easyui.TagUtil;
import org.jeecgframework.web.autoform.entity.AutoFormDbEntity;
import org.jeecgframework.web.autoform.entity.AutoFormDbFieldEntity;
import org.jeecgframework.web.autoform.entity.AutoFormDbPage;
import org.jeecgframework.web.autoform.entity.AutoFormParamEntity;
import org.jeecgframework.web.autoform.entity.AutoFormStyleEntity;
import org.jeecgframework.web.autoform.service.AutoFormDbServiceI;
import org.jeecgframework.web.cgform.common.CgAutoListConstant;
import org.jeecgframework.web.system.pojo.base.DynamicDataSourceEntity;
import org.jeecgframework.web.system.service.DynamicDataSourceServiceI;
import org.jeecgframework.web.system.service.SystemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSONObject;
/**
* @Title: Controller
* @Description:
* @author onlineGenerator
* @date 2015-06-17 19:36:59
* @version V1.0
*
*/
//@Scope("prototype")
@Controller
@RequestMapping("/autoFormDbController")
public class AutoFormDbController extends BaseController {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(AutoFormDbController.class);
@Autowired
private AutoFormDbServiceI autoFormDbService;
@Autowired
private SystemService systemService;
@Autowired
private DynamicDataSourceServiceI dynamicDataSourceServiceI;
/**
*
*
* @return
*/
@RequestMapping(params = "autoFormDb")
public ModelAndView autoFormDb(HttpServletRequest request) {
String autoFormId = request.getParameter("autoFormId");
if(oConvertUtils.isNotEmpty(autoFormId)){
request.setAttribute("autoFormId", autoFormId);
}
return new ModelAndView("jeecg/autoform/autoFormDbList");
}
/**
* easyui AJAX
*
* @param request
* @param response
* @param dataGrid
* @param user
*/
@RequestMapping(params = "datagrid")
public void datagrid(AutoFormDbEntity autoFormDb,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
CriteriaQuery cq = new CriteriaQuery(AutoFormDbEntity.class, dataGrid);
//查询条件组装器
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, autoFormDb);
try{
//自定义追加查询条件
}catch (Exception e) {
throw new BusinessException(e.getMessage());
}
cq.add();
this.autoFormDbService.getDataGridReturn(cq, true);
TagUtil.datagrid(response, dataGrid);
}
/**
*
*
* @return
*/
@RequestMapping(params = "doDel")
@ResponseBody
public AjaxJson doDel(AutoFormDbEntity autoFormDb, HttpServletRequest request) {
AjaxJson j = new AjaxJson();
autoFormDb = systemService.getEntity(AutoFormDbEntity.class, autoFormDb.getId());
String message = "表单数据源删除成功";
try{
autoFormDbService.delMain(autoFormDb);
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(",")){
AutoFormDbEntity autoFormDb = systemService.getEntity(AutoFormDbEntity.class,
id
);
autoFormDbService.delMain(autoFormDb);
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(AutoFormDbEntity autoFormDb,AutoFormDbPage autoFormDbPage, HttpServletRequest request) {
List<AutoFormDbFieldEntity> autoFormDbFieldList = autoFormDbPage.getAutoFormDbFieldList();
List<AutoFormParamEntity> autoFormParamList = autoFormDbPage.getAutoFormParamList();
AjaxJson j = new AjaxJson();
String message = "添加成功";
try{
autoFormDbService.addMain(autoFormDb, autoFormDbFieldList, autoFormParamList);
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(AutoFormDbEntity autoFormDb,AutoFormDbPage autoFormDbPage, HttpServletRequest request) {
List<AutoFormDbFieldEntity> autoFormDbFieldList = autoFormDbPage.getAutoFormDbFieldList();
List<AutoFormParamEntity> autoFormParamList = autoFormDbPage.getAutoFormParamList();
AjaxJson j = new AjaxJson();
String message = "更新成功";
try{
autoFormDbService.updateMain(autoFormDb, autoFormDbFieldList, autoFormParamList);
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(AutoFormDbEntity autoFormDb, HttpServletRequest req) {
if (StringUtil.isNotEmpty(autoFormDb.getId())) {
autoFormDb = autoFormDbService.getEntity(AutoFormDbEntity.class, autoFormDb.getId());
}
req.setAttribute("autoFormDbPage", autoFormDb);
Collection<DynamicDataSourceEntity> dynamicDataSourceEntitys = ResourceUtil.dynamicDataSourceMap.values();
req.setAttribute("dynamicDataSourceEntitys", dynamicDataSourceEntitys);
try {
List<String> tableNames = new JeecgReadTable().readAllTableNames();
req.setAttribute("tableNames", tableNames);
} catch (SQLException e) {
logger.info(e.getMessage());
}
return new ModelAndView("jeecg/autoform/autoFormDb-add");
}
/**
*
*
* @return
*/
@RequestMapping(params = "goUpdate")
public ModelAndView goUpdate(AutoFormDbEntity autoFormDb, HttpServletRequest req) {
if (StringUtil.isNotEmpty(autoFormDb.getId())) {
autoFormDb = autoFormDbService.getEntity(AutoFormDbEntity.class, autoFormDb.getId());
List<String> tableNames = null;
if(StringUtils.isNotBlank(autoFormDb.getDbKey()) && "table".equals(autoFormDb.getDbType())){
DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(autoFormDb.getDbKey());
if(dynamicDataSourceEntity!=null){
tableNames = DynamicDBUtil.findList(autoFormDb.getDbKey(),SqlUtil.getAllTableSql(dynamicDataSourceEntity.getDbType(), "'"+dynamicDataSourceEntity.getDbName()+"'"),String.class);
}
}
Collection<DynamicDataSourceEntity> dynamicDataSourceEntitys = ResourceUtil.dynamicDataSourceMap.values();
req.setAttribute("dynamicDataSourceEntitys", dynamicDataSourceEntitys);
//数据源类型
String dbKey = null;
if(CgAutoListConstant.DB_TYPE_TABLE.equals(autoFormDb.getDbType())){
dbKey = autoFormDb.getDbKey();
}else if(CgAutoListConstant.DB_TYPE_SQL.equals(autoFormDb.getDbType())){
//dbKey = autoFormDb.getTbDbKey();
dbKey = autoFormDb.getDbKey();
}
if(StringUtils.isBlank(dbKey)){
//默认当前平台数据源
try {
tableNames = new JeecgReadTable().readAllTableNames();
} catch (SQLException e) {
}
}else{
//个性化配置多数据源
DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(dbKey);
if(dynamicDataSourceEntity!=null){
tableNames = DynamicDBUtil.findList(dbKey,SqlUtil.getAllTableSql(dynamicDataSourceEntity.getDbType(), "'" + dynamicDataSourceEntity.getDbName() + "'"),String.class);
}
}
req.setAttribute("tableNames", tableNames);
req.setAttribute("autoFormDbPage", autoFormDb);
}
return new ModelAndView("jeecg/autoform/autoFormDb-update");
}
/**
* []
*
* @return
*/
@RequestMapping(params = "autoFormDbFieldList")
public ModelAndView autoFormDbFieldList(AutoFormDbEntity autoFormDb, HttpServletRequest req) {
if (StringUtil.isNotEmpty(autoFormDb.getId())) {
//===================================================================================
//查询-表单数据源属性
String hql0 = "from AutoFormDbFieldEntity where 1 = 1 AND aUTO_FORM_DB_ID = ? ";
try{
List<AutoFormDbFieldEntity> autoFormDbFieldEntityList = systemService.findHql(hql0,autoFormDb.getId());
req.setAttribute("autoFormDbFieldList", autoFormDbFieldEntityList);
}catch(Exception e){
logger.info(e.getMessage());
}
}
return new ModelAndView("jeecg/autoform/autoFormDbFieldList");
}
/**
* []
*
* @return
*/
@RequestMapping(params = "autoFormParamList")
public ModelAndView autoFormParamList(AutoFormDbEntity autoFormDb, HttpServletRequest req) {
if (StringUtil.isNotEmpty(autoFormDb.getId())) {
//===================================================================================
//查询-表单参数
String hql1 = "from AutoFormParamEntity where 1 = 1 AND aUTO_FORM_DB_ID = ? ";
try{
List<AutoFormParamEntity> autoFormParamEntityList = systemService.findHql(hql1,autoFormDb.getId());
req.setAttribute("autoFormParamList", autoFormParamEntityList);
}catch(Exception e){
logger.info(e.getMessage());
}
}
return new ModelAndView("jeecg/autoform/autoFormParamList");
}
/**
* SQL
* @param sql
* @return
*/
@SuppressWarnings("unchecked")
@RequestMapping(params = "getFields", method = RequestMethod.POST)
@ResponseBody
public Object getSqlFields(String sql,String dbKey){
List<String> files = null;
List<String> params = null;
Map reJson = new HashMap<String, Object>();
try{
//files = autoFormDbService.getSqlFields(sql);
//params = autoFormDbService.getSqlParams(sql);
files = autoFormDbService.getField(sql,dbKey);
params = autoFormDbService.getSqlParams(sql);
}catch (Exception e) {
e.printStackTrace();
String errorInfo = "解析失败!<br><br>失败原因:";
//无法直接捕捉到:java.net.ConnectException异常
int i = e.getMessage().indexOf("Connection refused: connect");
if (i != -1) {//非链接异常
errorInfo += "数据源连接失败.";
}else{
errorInfo += "当前数据源没有查到数据.";
}
reJson.put("status", "error");
reJson.put("datas", errorInfo);
return reJson;
}
reJson.put("status", "success");
reJson.put("files", files);
reJson.put("params", params);
return reJson;
}
/**
* []
*
* @return
*/
@RequestMapping(params = "autoFormDbFieldForTableList")
public ModelAndView autoFormDbFieldForTableList(AutoFormDbEntity autoFormDb, HttpServletRequest req) {
if (StringUtil.isNotEmpty(autoFormDb.getId())) {
//===================================================================================
//查询-表单数据源属性
String hql0 = "from AutoFormDbFieldEntity where 1 = 1 AND aUTO_FORM_DB_ID = ? ";
try{
List<AutoFormDbFieldEntity> autoFormDbFieldEntityList = systemService.findHql(hql0,autoFormDb.getId());
req.setAttribute("autoFormDbFieldList", autoFormDbFieldEntityList);
}catch(Exception e){
logger.info(e.getMessage());
}
}
return new ModelAndView("jeecg/autoform/autoFormDbFieldForTableList");
}
/**
*
* @param db_key
* @return
*/
@RequestMapping(params="getAllTableNames")
@ResponseBody
public Object getAllTableNames(String dbKey){
Map reJson = new HashMap<String, Object>();
List<String> tableNames = null;
try{
if(StringUtils.isNotBlank(dbKey)){
DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(dbKey);
if(dynamicDataSourceEntity!=null){
tableNames = DynamicDBUtil.findList(dbKey,SqlUtil.getAllTableSql(dynamicDataSourceEntity.getDbType(), "'" + dynamicDataSourceEntity.getDbName() + "'"),String.class);
}
}else{
tableNames = new JeecgReadTable().readAllTableNames();
}
}catch (Exception e){
reJson.put("status", "error");
reJson.put("datas", "表查询失败!");
reJson.put("tableNames", new ArrayList<String>());
}
reJson.put("status", "success");
reJson.put("tableNames", tableNames);
return reJson;
}
/**
*
* @param sql
* @return
*/
@SuppressWarnings("unchecked")
@RequestMapping(params = "getTableFields", method = RequestMethod.POST)
@ResponseBody
public Object getTableFields(String dbKey,String tableName){
Map reJson = new HashMap<String, Object>();
List<String> columnsNames = null;
if(StringUtils.isNotBlank(dbKey)){
DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(dbKey);
if(dynamicDataSourceEntity!=null){
columnsNames = DynamicDBUtil.findList(dbKey,SqlUtil.getAllCloumnSql(dynamicDataSourceEntity.getDbType(), "'" + tableName + "'", "'" + dynamicDataSourceEntity.getDbName() + "'"),String.class);
}
}else{
try {
List<Columnt> columns = new JeecgReadTable().readOriginalTableColumn(tableName);
columnsNames = new ArrayList<String>();
for(Columnt column:columns){
columnsNames.add(column.getFieldDbName());
}
} catch (Exception e) {
reJson.put("status", "error");
reJson.put("datas", "列查询失败!");
}
}
reJson.put("status", "success");
reJson.put("files", columnsNames);
return reJson;
}
/**
*
* @param id
* @return
*/
@RequestMapping(params="goView")
public ModelAndView goView(@RequestParam String id, HttpServletRequest req) {
if(StringUtil.isNotEmpty(id)){
AutoFormDbEntity autoFormDbEntity = autoFormDbService.getEntity(AutoFormDbEntity.class, id);
if(autoFormDbEntity!=null){
//查询-表单参数
String hql1 = "from AutoFormParamEntity where 1 = 1 AND aUTO_FORM_DB_ID = ? ";
try{
List<AutoFormParamEntity> autoFormParamEntityList = systemService.findHql(hql1,id);
req.setAttribute("autoFormParamList", autoFormParamEntityList);
}catch(Exception e){
logger.info(e.getMessage());
}
}
req.setAttribute("autoFormDbEntity", autoFormDbEntity);
}
return new ModelAndView("jeecg/autoform/autoFormDb-view");
}
/**
*
* @param id
* @return
*/
@RequestMapping(params="view",method=RequestMethod.POST)
@ResponseBody
public AjaxJson view(AutoFormDbEntity autoFormDb,HttpServletRequest req) {
AjaxJson j = new AjaxJson();
String msg = "";
Map<String,String[]> paramMap = req.getParameterMap();
List<Map<String, Object>> map = null;
String dbKey = autoFormDb.getDbKey();//数据源key
String dbType = autoFormDb.getDbType();//数据源类型
String dbTableName = autoFormDb.getDbTableName();//数据库表名
String dbDynSql = autoFormDb.getDbDynSql();
if("table".equals(dbType)){
//如果数据源类型为表类型通过属性表里面的属性拼出SQL
String hqlField = "from AutoFormDbFieldEntity where 1 = 1 AND aUTO_FORM_DB_ID = ? ";
try{
List<AutoFormDbFieldEntity> autoFormDbFieldEntityList = systemService.findHql(hqlField,autoFormDb.getId());
if(autoFormDbFieldEntityList.size()>0){
StringBuffer hqlTable = new StringBuffer().append("select ");
for(AutoFormDbFieldEntity autoFormDbFieldEntity:autoFormDbFieldEntityList){
hqlTable.append(autoFormDbFieldEntity.getFieldName()+",");
}
hqlTable.deleteCharAt(hqlTable.length()-1).append(" from "+dbTableName);
if("".equals(dbKey)){
//当前上下文中的DB环境获取数据库表中的所有数据
map = systemService.findForJdbc(hqlTable.toString());
}
else{
DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(dbKey);
if(dynamicDataSourceEntity!=null){
map = DynamicDBUtil.findList(dbKey,hqlTable.toString());
}
}
j.setObj(map);
msg = "表数据查询成功!";
}else{
j.setSuccess(false);
msg = "表属性配置有误!";
}
}catch(Exception e){
logger.info(e.getMessage());
}
}else if("sql".equals(dbType)){
//如果数据源类型为SQL类型直接通过替换SQL里面的参数变量解析出可执行的SQL
List<String> params = autoFormDbService.getSqlParams(dbDynSql);
for(String param:params){
String[] paramValue = paramMap.get("#"+param);
dbDynSql = dbDynSql.replaceAll("\\$\\{"+param+"\\}", paramValue[0]);
}
//判断sql中是否还有没有被替换的变量如果有抛出错误
if(dbDynSql.contains("\\$")){
j.setSuccess(false);
msg = "动态SQL数据查询失败";
}else{
try {
//map = systemService.findForJdbc(dbDynSql);
//DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(tbDbKey);
DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(dbKey);
if(dynamicDataSourceEntity!=null){
/*if (StringUtil.isNotEmpty(tbDbKey)) {
map = DynamicDBUtil.findList(tbDbKey,dbDynSql);*/
if (StringUtil.isNotEmpty(dbKey)) {
map = DynamicDBUtil.findList(dbKey,dbDynSql);
}else{
map = systemService.findForJdbc(dbDynSql);
}
}
msg = "动态SQL数据查询成功";
j.setObj(map);
} catch (Exception e) {
logger.info(e.getMessage());
j.setSuccess(false);
msg = "动态SQL数据查询失败";
}
}
}else{
//预留给CLAZZ类型
}
j.setMsg(msg);
return j;
}
/**
*
*/
@ResponseBody
@RequestMapping(params="checkDbName")
public JSONObject checkDbName(HttpServletRequest req,String cVal){
JSONObject jsonObject = new JSONObject();
String param = req.getParameter("param");
if(StringUtils.isNotBlank(cVal)&&cVal.equals(param)){
jsonObject.put("info", "验证通过!");
jsonObject.put("status", "y");
return jsonObject;
}
List<AutoFormStyleEntity> list = new ArrayList<AutoFormStyleEntity>();
String hql = "from AutoFormDbEntity t where t.dbName = ?";
list = this.systemService.findHql(hql, param);
if(list.size()>0){
jsonObject.put("status", "n");
jsonObject.put("info", "数据源名称重复,请重新输入!");
return jsonObject;
}
jsonObject.put("info", "验证通过!");
jsonObject.put("status", "y");
return jsonObject;
}
/**
*
*
* @return
*/
@RequestMapping(params = "autoFormDb_vm")
public void autoFormDbVM(HttpServletResponse response, HttpServletRequest request) throws Exception {
VelocityContext velocityContext = new VelocityContext();
String autoFormId = request.getParameter("autoFormId");
if(oConvertUtils.isNotEmpty(autoFormId)){
velocityContext.put("autoFormId", autoFormId);
}
String viewName = "autoform/autoFormDbList.vm";
ViewVelocity.view(request, response, viewName, velocityContext);
}
/**
*
*
* @return
*/
@RequestMapping(params = "goAdd_vm")
public void goAddVM(AutoFormDbEntity autoFormDb, HttpServletResponse response, HttpServletRequest request) throws Exception{
VelocityContext velocityContext = new VelocityContext();
if (StringUtil.isNotEmpty(autoFormDb.getId())) {
autoFormDb = autoFormDbService.getEntity(AutoFormDbEntity.class, autoFormDb.getId());
}
velocityContext.put("autoFormDbPage", autoFormDb);
Collection<DynamicDataSourceEntity> dynamicDataSourceEntitys = ResourceUtil.dynamicDataSourceMap.values();
velocityContext.put("dynamicDataSourceEntitys", dynamicDataSourceEntitys);
try {
List<String> tableNames = new JeecgReadTable().readAllTableNames();
velocityContext.put("tableNames", tableNames);
} catch (SQLException e) {
logger.info(e.getMessage());
}
String viewName = "autoform/autoFormDb-add.vm";
ViewVelocity.view(request, response, viewName, velocityContext);
}
/**
*
*
* @return
*/
@RequestMapping(params = "goUpdate_vm")
public void goUpdateVM(AutoFormDbEntity autoFormDb, HttpServletResponse response, HttpServletRequest request) throws Exception{
VelocityContext velocityContext = new VelocityContext();
if (StringUtil.isNotEmpty(autoFormDb.getId())) {
autoFormDb = autoFormDbService.getEntity(AutoFormDbEntity.class, autoFormDb.getId());
List<String> tableNames = null;
if(StringUtils.isNotBlank(autoFormDb.getDbKey()) && "table".equals(autoFormDb.getDbType())){
DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(autoFormDb.getDbKey());
if(dynamicDataSourceEntity!=null){
tableNames = DynamicDBUtil.findList(autoFormDb.getDbKey(),SqlUtil.getAllTableSql(dynamicDataSourceEntity.getDbType(), "'"+dynamicDataSourceEntity.getDbName()+"'"),String.class);
}
}
Collection<DynamicDataSourceEntity> dynamicDataSourceEntitys = ResourceUtil.dynamicDataSourceMap.values();
velocityContext.put("dynamicDataSourceEntitys", dynamicDataSourceEntitys);
//数据源类型
String dbKey = null;
if(CgAutoListConstant.DB_TYPE_TABLE.equals(autoFormDb.getDbType())){
dbKey = autoFormDb.getDbKey();
}else if(CgAutoListConstant.DB_TYPE_SQL.equals(autoFormDb.getDbType())){
//dbKey = autoFormDb.getTbDbKey();
dbKey = autoFormDb.getDbKey();
}
if(StringUtils.isBlank(dbKey)){
//默认当前平台数据源
try {
tableNames = new JeecgReadTable().readAllTableNames();
} catch (SQLException e) {
}
}else{
//个性化配置多数据源
DynamicDataSourceEntity dynamicDataSourceEntity = dynamicDataSourceServiceI.getDynamicDataSourceEntityForDbKey(dbKey);
if(dynamicDataSourceEntity!=null){
tableNames = DynamicDBUtil.findList(dbKey,SqlUtil.getAllTableSql(dynamicDataSourceEntity.getDbType(), "'" + dynamicDataSourceEntity.getDbName() + "'"),String.class);
}
}
velocityContext.put("tableNames", tableNames);
velocityContext.put("autoFormDbPage", autoFormDb);
}
String viewName = "autoform/autoFormDb-update.vm";
ViewVelocity.view(request, response, viewName, velocityContext);
}
/**
* []
*
* @return
*/
@RequestMapping(params = "autoFormDbFieldList_vm")
public void autoFormDbFieldListVM(AutoFormDbEntity autoFormDb, HttpServletResponse response, HttpServletRequest request) throws Exception{
VelocityContext velocityContext = new VelocityContext();
if (StringUtil.isNotEmpty(autoFormDb.getId())) {
//===================================================================================
//查询-表单数据源属性
String hql0 = "from AutoFormDbFieldEntity where 1 = 1 AND aUTO_FORM_DB_ID = ? ";
try{
List<AutoFormDbFieldEntity> autoFormDbFieldEntityList = systemService.findHql(hql0,autoFormDb.getId());
velocityContext.put("autoFormDbFieldList", autoFormDbFieldEntityList);
}catch(Exception e){
logger.info(e.getMessage());
}
}
String viewName = "autoform/autoFormDbFieldList.vm";
ViewVelocity.view(request, response, viewName, velocityContext);
}
/**
* []
*
* @return
*/
@RequestMapping(params = "autoFormParamList_vm")
public void autoFormParamListVM(AutoFormDbEntity autoFormDb, HttpServletResponse response, HttpServletRequest request) throws Exception{
VelocityContext velocityContext = new VelocityContext();
if (StringUtil.isNotEmpty(autoFormDb.getId())) {
//===================================================================================
//查询-表单参数
String hql1 = "from AutoFormParamEntity where 1 = 1 AND aUTO_FORM_DB_ID = ? ";
try{
List<AutoFormParamEntity> autoFormParamEntityList = systemService.findHql(hql1,autoFormDb.getId());
velocityContext.put("autoFormParamList", autoFormParamEntityList);
}catch(Exception e){
logger.info(e.getMessage());
}
}
String viewName = "autoform/autoFormParamList.vm";
ViewVelocity.view(request, response, viewName, velocityContext);
}
/**
*
* @param id
* @return
*/
@RequestMapping(params="goView_vm")
public void goViewVM(@RequestParam String id, HttpServletResponse response, HttpServletRequest request) throws Exception{
VelocityContext velocityContext = new VelocityContext();
if(StringUtil.isNotEmpty(id)){
AutoFormDbEntity autoFormDbEntity = autoFormDbService.getEntity(AutoFormDbEntity.class, id);
if(autoFormDbEntity!=null){
//查询-表单参数
String hql1 = "from AutoFormParamEntity where 1 = 1 AND aUTO_FORM_DB_ID = ? ";
try{
List<AutoFormParamEntity> autoFormParamEntityList = systemService.findHql(hql1,id);
velocityContext.put("autoFormParamList", autoFormParamEntityList);
}catch(Exception e){
logger.info(e.getMessage());
}
}
velocityContext.put("autoFormDbEntity", autoFormDbEntity);
}
String viewName = "autoform/autoFormDb-view.vm";
ViewVelocity.view(request, response, viewName, velocityContext);
}
/**
* []
*
* @return
*/
@RequestMapping(params = "autoFormDbFieldForTableList_vm")
public void autoFormDbFieldForTableListVM(AutoFormDbEntity autoFormDb, HttpServletResponse response, HttpServletRequest request) throws Exception{
VelocityContext velocityContext = new VelocityContext();
if (StringUtil.isNotEmpty(autoFormDb.getId())) {
//===================================================================================
//查询-表单数据源属性
String hql0 = "from AutoFormDbFieldEntity where 1 = 1 AND aUTO_FORM_DB_ID = ? ";
try{
List<AutoFormDbFieldEntity> autoFormDbFieldEntityList = systemService.findHql(hql0,autoFormDb.getId());
velocityContext.put("autoFormDbFieldList", autoFormDbFieldEntityList);
}catch(Exception e){
logger.info(e.getMessage());
}
}
String viewName = "autoform/autoFormDbFieldForTableList.vm";
ViewVelocity.view(request, response, viewName, velocityContext);
}
}

@ -1,376 +0,0 @@
package org.jeecgframework.web.autoform.controller;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
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;
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.MyBeanUtils;
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.autoform.entity.AutoFormStyleEntity;
import org.jeecgframework.web.autoform.service.AutoFormStyleServiceI;
import org.jeecgframework.web.system.service.SystemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSONObject;
/**
* @Title: Controller
* @Description:
* @author onlineGenerator
* @date 2015-06-15 20:58:08
* @version V1.0
*
*/
//@Scope("prototype")
@Controller
@RequestMapping("/autoFormStyleController")
public class AutoFormStyleController extends BaseController {
/**
* Logger for this class
*/
private static final Logger logger = Logger.getLogger(AutoFormStyleController.class);
@Autowired
private AutoFormStyleServiceI autoFormStyleService;
@Autowired
private SystemService systemService;
/**
*
*
* @return
*/
@RequestMapping(params = "autoFormStyle")
public ModelAndView autoFormStyle(HttpServletRequest request) {
return new ModelAndView("jeecg/autoform/autoFormStyleList");
}
/**
* easyui AJAX
*
* @param request
* @param response
* @param dataGrid
* @param user
*/
@RequestMapping(params = "datagrid")
public void datagrid(AutoFormStyleEntity autoFormStyle,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
CriteriaQuery cq = new CriteriaQuery(AutoFormStyleEntity.class, dataGrid);
//查询条件组装器
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, autoFormStyle, request.getParameterMap());
try{
//自定义追加查询条件
}catch (Exception e) {
throw new BusinessException(e.getMessage());
}
cq.add();
this.autoFormStyleService.getDataGridReturn(cq, true);
TagUtil.datagrid(response, dataGrid);
}
/**
*
*
* @return
*/
@RequestMapping(params = "doDel")
@ResponseBody
public AjaxJson doDel(AutoFormStyleEntity autoFormStyle, HttpServletRequest request) {
String message;
AjaxJson j = new AjaxJson();
autoFormStyle = systemService.getEntity(AutoFormStyleEntity.class, autoFormStyle.getId());
message = "表单样式表删除成功";
try{
autoFormStyleService.delete(autoFormStyle);
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;
AjaxJson j = new AjaxJson();
message = "表单样式表删除成功";
try{
for(String id:ids.split(",")){
AutoFormStyleEntity autoFormStyle = systemService.getEntity(AutoFormStyleEntity.class,
id
);
autoFormStyleService.delete(autoFormStyle);
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(AutoFormStyleEntity autoFormStyle, HttpServletRequest request) {
String message;
AjaxJson j = new AjaxJson();
message = "表单样式表添加成功";
try{
autoFormStyleService.save(autoFormStyle);
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(AutoFormStyleEntity autoFormStyle, HttpServletRequest request) {
String message;
AjaxJson j = new AjaxJson();
message = "表单样式表更新成功";
AutoFormStyleEntity t = autoFormStyleService.get(AutoFormStyleEntity.class, autoFormStyle.getId());
try {
MyBeanUtils.copyBeanNotNull2Bean(autoFormStyle, t);
autoFormStyleService.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(AutoFormStyleEntity autoFormStyle, HttpServletRequest req) {
if (StringUtil.isNotEmpty(autoFormStyle.getId())) {
autoFormStyle = autoFormStyleService.getEntity(AutoFormStyleEntity.class, autoFormStyle.getId());
req.setAttribute("autoFormStylePage", autoFormStyle);
}
return new ModelAndView("jeecg/autoform/autoFormStyle-add");
}
/**
*
*
* @return
*/
@RequestMapping(params = "goUpdate")
public ModelAndView goUpdate(AutoFormStyleEntity autoFormStyle, HttpServletRequest req) {
if (StringUtil.isNotEmpty(autoFormStyle.getId())) {
autoFormStyle = autoFormStyleService.getEntity(AutoFormStyleEntity.class, autoFormStyle.getId());
req.setAttribute("autoFormStylePage", autoFormStyle);
}
return new ModelAndView("jeecg/autoform/autoFormStyle-update");
}
@ResponseBody
@RequestMapping(params="checkStyleNm")
public JSONObject checkStyleNm(AutoFormStyleEntity autoFormStyle,HttpServletRequest req){
JSONObject jsonObject = new JSONObject();
String param = req.getParameter("param");
List<AutoFormStyleEntity> list = new ArrayList<AutoFormStyleEntity>();
String hql = "";
if(StringUtils.isNotBlank(autoFormStyle.getId())){
hql = "from AutoFormStyleEntity t where t.id != ? and t.styleDesc = ?";
list = this.systemService.findHql(hql, autoFormStyle.getId(),param);
} else {
hql = "from AutoFormStyleEntity t where t.styleDesc = ?";
list = this.systemService.findHql(hql, param);
}
if(list.size()>0){
jsonObject.put("status", "n");
jsonObject.put("info", "样式名称重复,请重新输入!");
return jsonObject;
}
jsonObject.put("status", "y");
return jsonObject;
}
/**
*
*
* @return
*
@RequestMapping(params = "upload")
public ModelAndView upload(HttpServletRequest req) {
req.setAttribute("controller_name","autoFormStyleController");
return new ModelAndView("common/upload/pub_excel_upload");
}
/**
* excel
*
* @param request
* @param response
*
@RequestMapping(params = "exportXls")
public String exportXls(AutoFormStyleEntity autoFormStyle,HttpServletRequest request,HttpServletResponse response
, DataGrid dataGrid,ModelMap modelMap) {
CriteriaQuery cq = new CriteriaQuery(AutoFormStyleEntity.class, dataGrid);
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, autoFormStyle, request.getParameterMap());
List<AutoFormStyleEntity> autoFormStyles = this.autoFormStyleService.getListByCriteriaQuery(cq,false);
modelMap.put(NormalExcelConstants.FILE_NAME,"表单样式表");
modelMap.put(NormalExcelConstants.CLASS,AutoFormStyleEntity.class);
modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("表单样式表列表", "导出人:"+ResourceUtil.getSessionUserName().getRealName(),
"导出信息"));
modelMap.put(NormalExcelConstants.DATA_LIST,autoFormStyles);
return NormalExcelConstants.JEECG_EXCEL_VIEW;
}
/**
* excel 使
*
* @param request
* @param response
*
@RequestMapping(params = "exportXlsByT")
public String exportXlsByT(AutoFormStyleEntity autoFormStyle,HttpServletRequest request,HttpServletResponse response
, DataGrid dataGrid,ModelMap modelMap) {
modelMap.put(TemplateExcelConstants.FILE_NAME, "表单样式表");
modelMap.put(TemplateExcelConstants.PARAMS,new TemplateExportParams("Excel模板地址"));
modelMap.put(TemplateExcelConstants.MAP_DATA,null);
modelMap.put(TemplateExcelConstants.CLASS,AutoFormStyleEntity.class);
modelMap.put(TemplateExcelConstants.LIST_DATA,null);
return TemplateExcelConstants.JEECG_TEMPLATE_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<AutoFormStyleEntity> listAutoFormStyleEntitys = ExcelImportUtil.importExcel(file.getInputStream(),AutoFormStyleEntity.class,params);
for (AutoFormStyleEntity autoFormStyle : listAutoFormStyleEntitys) {
autoFormStyleService.save(autoFormStyle);
}
j.setMsg("文件导入成功!");
} catch (Exception e) {
j.setMsg("文件导入失败!");
logger.error(ExceptionUtil.getExceptionMessage(e));
}finally{
try {
file.getInputStream().close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return j;
}*/
/**
*
*
* @return
*/
@RequestMapping(params = "goAdd_vm")
public void goAddVM(AutoFormStyleEntity autoFormStyle, HttpServletResponse response, HttpServletRequest request) throws Exception {
VelocityContext velocityContext = new VelocityContext();
if (StringUtil.isNotEmpty(autoFormStyle.getId())) {
autoFormStyle = autoFormStyleService.getEntity(AutoFormStyleEntity.class, autoFormStyle.getId());
velocityContext.put("autoFormStylePage", autoFormStyle);
}
String viewName = "autoform/autoFormStyle-add.vm";
ViewVelocity.view(request,response,viewName,velocityContext);
}
/**
*
*
* @return
*/
@RequestMapping(params = "goUpdate_vm")
public void goUpdateVM(AutoFormStyleEntity autoFormStyle, HttpServletResponse response, HttpServletRequest request) throws Exception {
VelocityContext velocityContext = new VelocityContext();
if (StringUtil.isNotEmpty(autoFormStyle.getId())) {
autoFormStyle = autoFormStyleService.getEntity(AutoFormStyleEntity.class, autoFormStyle.getId());
velocityContext.put("autoFormStylePage", autoFormStyle);
}
String viewName = "autoform/autoFormStyle-update.vm";
ViewVelocity.view(request,response,viewName,velocityContext);
}
/**
*
*
* @return
*/
@RequestMapping(params = "autoFormStyle_vm")
public void autoFormStyleVM(HttpServletResponse response, HttpServletRequest request) throws Exception {
VelocityContext velocityContext = new VelocityContext();
String viewName = "autoform/autoFormStyleList.vm";
ViewVelocity.view(request, response, viewName, velocityContext);
}
}

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

Loading…
Cancel
Save