SQLeditController.java 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. package com.zhcs.dt.controller.fhdb.sqledit;
  2. import java.sql.SQLException;
  3. import java.text.DateFormat;
  4. import java.text.SimpleDateFormat;
  5. import java.util.ArrayList;
  6. import java.util.Date;
  7. import java.util.HashMap;
  8. import java.util.List;
  9. import java.util.Map;
  10. import org.springframework.beans.propertyeditors.CustomDateEditor;
  11. import org.springframework.stereotype.Controller;
  12. import org.springframework.web.bind.WebDataBinder;
  13. import org.springframework.web.bind.annotation.InitBinder;
  14. import org.springframework.web.bind.annotation.RequestMapping;
  15. import org.springframework.web.bind.annotation.ResponseBody;
  16. import org.springframework.web.servlet.ModelAndView;
  17. import com.zhcs.dt.controller.base.BaseController;
  18. import com.zhcs.dt.util.AppUtil;
  19. import com.zhcs.dt.util.DbFH;
  20. import com.zhcs.dt.util.Jurisdiction;
  21. import com.zhcs.dt.util.ObjectExcelView;
  22. import com.zhcs.dt.util.PageData;
  23. /**
  24. * 说明:SQL编辑器
  25. * 创建人:FH Q313596790
  26. * 创建时间:2016-03-30
  27. */
  28. @Controller
  29. @RequestMapping(value="/sqledit")
  30. public class SQLeditController extends BaseController {
  31. String menuUrl = "sqledit/view.do"; //菜单地址(权限用)
  32. /**进入页面
  33. * @param
  34. * @throws Exception
  35. */
  36. @RequestMapping(value="/view")
  37. public ModelAndView view()throws Exception{
  38. if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限
  39. logBefore(logger, Jurisdiction.getUsername()+"进入SQL编辑页面");
  40. if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
  41. ModelAndView mv = this.getModelAndView();
  42. mv.setViewName("fhdb/sqledit/sql_edit");
  43. mv.addObject("QX",Jurisdiction.getHC()); //按钮权限
  44. return mv;
  45. }
  46. /**执行查询语句
  47. * @param
  48. * @throws Exception
  49. */
  50. @SuppressWarnings("unchecked")
  51. @RequestMapping(value="/executeQuery")
  52. @ResponseBody
  53. public Object executeQuery(){
  54. logBefore(logger, Jurisdiction.getUsername()+"执行查询语句");
  55. if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限
  56. Map<String,Object> map = new HashMap<String,Object>();
  57. List<PageData> pdList = new ArrayList<PageData>();
  58. PageData pd = new PageData();
  59. pd = this.getPageData();
  60. String sql = pd.getString("sql"); //前台传过来的sql语句
  61. List<String> columnList = new ArrayList<String>(); //存放字段名
  62. List<List<Object>> dataList = new ArrayList<List<Object>>(); //存放数据(从数据库读出来的一条条的数据)
  63. long startTime = System.currentTimeMillis(); //请求起始时间_毫秒
  64. Object[] arrOb = null;
  65. try {
  66. arrOb = DbFH.executeQueryFH(sql);
  67. long endTime = System.currentTimeMillis(); //请求结束时间_毫秒
  68. pd.put("rTime", String.valueOf((endTime - startTime)/1000.000)); //存入数据库查询时间
  69. if(null != arrOb){
  70. columnList = (List<String>)arrOb[0];
  71. dataList = (List<List<Object>>)arrOb[1];
  72. pd.put("msg", "ok");
  73. }else{
  74. pd.put("msg", "no");
  75. }
  76. } catch (Exception e) {
  77. pd.put("msg", "no");
  78. logger.error("执行SQL报错", e);
  79. }
  80. pdList.add(pd);
  81. map.put("columnList", columnList); //存放字段名
  82. map.put("dataList", dataList); //存放数据(从数据库读出来的一条条的数据)
  83. map.put("list", pdList); //消息类型
  84. return AppUtil.returnObject(pd, map);
  85. }
  86. /**执行 INSERT、UPDATE 或 DELETE
  87. * @param
  88. * @throws Exception
  89. */
  90. @RequestMapping(value="/executeUpdate")
  91. @ResponseBody
  92. public Object executeUpdate(){
  93. logBefore(logger, Jurisdiction.getUsername()+"执行更新语句");
  94. if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
  95. Map<String,Object> map = new HashMap<String,Object>();
  96. List<PageData> pdList = new ArrayList<PageData>();
  97. PageData pd = new PageData();
  98. pd = this.getPageData();
  99. String sql = pd.getString("sql"); //前台传过来的sql语句
  100. long startTime = System.currentTimeMillis(); //请求起始时间_毫秒
  101. try {
  102. DbFH.executeUpdateFH(sql);
  103. pd.put("msg", "ok");
  104. } catch (ClassNotFoundException e) {
  105. pd.put("msg", "no");
  106. e.printStackTrace();
  107. } catch (SQLException e) {
  108. pd.put("msg", "no");
  109. e.printStackTrace();
  110. }
  111. long endTime = System.currentTimeMillis(); //请求结束时间_毫秒
  112. pd.put("rTime", String.valueOf((endTime - startTime)/1000.000)); //存入数据库查询时间
  113. pdList.add(pd);
  114. map.put("list", pdList); //消息类型
  115. return AppUtil.returnObject(pd, map);
  116. }
  117. /**导出数据到EXCEL
  118. * @return
  119. */
  120. @SuppressWarnings("unchecked")
  121. @RequestMapping(value="/excel")
  122. public ModelAndView exportExcel(){
  123. ModelAndView mv = this.getModelAndView();
  124. PageData pd = new PageData();
  125. pd = this.getPageData();
  126. try{
  127. if(Jurisdiction.buttonJurisdiction(menuUrl, "cha")){
  128. String sql = pd.getString("sql"); //前台传过来的sql语句
  129. List<String> columnList = new ArrayList<String>(); //存放字段名
  130. List<List<Object>> dataList = new ArrayList<List<Object>>(); //存放数据(从数据库读出来的一条条的数据)
  131. Object[] arrOb = null;
  132. try {
  133. arrOb = DbFH.executeQueryFH(sql);
  134. if(null != arrOb){
  135. columnList = (List<String>)arrOb[0];
  136. dataList = (List<List<Object>>)arrOb[1];
  137. }else{
  138. return null;
  139. }
  140. } catch (Exception e) {
  141. logger.error("导出excelSQL报错", e);
  142. return null;
  143. }
  144. Map<String,Object> dataMap = new HashMap<String,Object>();
  145. List<String> titles = new ArrayList<String>();
  146. for(int i=0;i<columnList.size();i++){
  147. titles.add(columnList.get(i).toString()); //字段名当标题
  148. }
  149. dataMap.put("titles", titles);
  150. List<PageData> varList = new ArrayList<PageData>();
  151. for(int i=0;i<dataList.size();i++){
  152. PageData vpd = new PageData();
  153. for(int j=0;j<dataList.get(i).size();j++){
  154. vpd.put("var"+(j+1), dataList.get(i).get(j).toString()); //赋值
  155. }
  156. varList.add(vpd);
  157. }
  158. dataMap.put("varList", varList);
  159. ObjectExcelView erv = new ObjectExcelView(); //执行excel操作
  160. mv = new ModelAndView(erv,dataMap);
  161. }
  162. } catch(Exception e){
  163. logger.error(e.toString(), e);
  164. }
  165. return mv;
  166. }
  167. @InitBinder
  168. public void initBinder(WebDataBinder binder){
  169. DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  170. binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
  171. }
  172. }