469f93151ed5149ed276fd2d69c8036ed64d8d47.svn-base 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. package org.jeecg.modules.online.cgreport.util;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import java.io.UnsupportedEncodingException;
  5. import java.sql.SQLException;
  6. import java.text.SimpleDateFormat;
  7. import java.util.Date;
  8. import java.util.Iterator;
  9. import java.util.List;
  10. import java.util.Map;
  11. import javax.servlet.http.HttpServletRequest;
  12. import org.jeecg.common.system.query.QueryGenerator;
  13. import org.jeecg.common.util.DateUtils;
  14. import org.jeecg.common.util.oConvertUtils;
  15. //import org.jeecg.modules.online.cgform.util.SqlSymbolUtil;
  16. import org.jeecg.modules.online.cgreport.def.CgReportConstant;
  17. import org.jeecg.modules.online.cgreport.entity.OnlCgreportItem;
  18. import org.jeecg.modules.online.config.exception.DBException;
  19. import org.jeecg.modules.online.config.util.TableUtil;
  20. public class CgReportQueryParamUtil {
  21. /**
  22. * 组装查询参数
  23. * @param request 请求(查询值从此处取)
  24. * @param item 动态报表字段配置
  25. * @param pageSearchFields 页面参数查询字段(占位符的条件语句)
  26. * @param paramData 占位符对应的数据
  27. */
  28. public static void loadQueryParams(HttpServletRequest request, Map<String,Object> item, Map<String,Object> pageSearchFields,Map<String,Object> paramData) {
  29. String filedName = (String) item.get(CgReportConstant.ITEM_FIELDNAME);
  30. String queryMode = (String) item.get(CgReportConstant.ITEM_QUERYMODE);
  31. String filedType = (String) item.get(CgReportConstant.ITEM_FIELDTYPE);
  32. if("single".equals(queryMode)){
  33. //单条件组装方式
  34. String value =request.getParameter(filedName.toLowerCase());
  35. try {
  36. if(oConvertUtils.isEmpty(value)){
  37. return;
  38. }
  39. String uri = request.getQueryString();
  40. if(uri.contains(filedName+"=")){
  41. String contiansChinesevalue = new String(value.getBytes("ISO-8859-1"), "UTF-8");
  42. value = contiansChinesevalue;
  43. }
  44. } catch (UnsupportedEncodingException e) {
  45. e.printStackTrace();
  46. return;
  47. }
  48. if(oConvertUtils.isNotEmpty(value)){
  49. if(value.contains("*")){
  50. //模糊查询
  51. value = value.replaceAll("\\*", "%");
  52. pageSearchFields.put(filedName, CgReportConstant.OP_LIKE+":"+filedName);
  53. }else{
  54. pageSearchFields.put(filedName, CgReportConstant.OP_EQ+":"+filedName);
  55. }
  56. }
  57. paramData.put(filedName, covertData(filedType,value,true));
  58. }else if("group".equals(queryMode)){
  59. //范围查询组装
  60. String begin = request.getParameter(filedName.toLowerCase()+"_begin");
  61. String end = request.getParameter(filedName.toLowerCase()+"_end");
  62. if(oConvertUtils.isNotEmpty(begin)){
  63. String re = CgReportConstant.OP_RQ+":"+filedName+"_begin";
  64. pageSearchFields.put(filedName, re);
  65. paramData.put(filedName+"_begin", covertData(filedType,begin,true));
  66. }
  67. if(oConvertUtils.isNotEmpty(end)){
  68. String re = CgReportConstant.OP_LQ+":"+filedName+"_end";
  69. pageSearchFields.put(new String(filedName), re);
  70. paramData.put(filedName+"_end", covertData(filedType,end,false));
  71. }
  72. }
  73. }
  74. private static Object covertData(String fieldType,String value,boolean isBegin){
  75. Object obj = null;
  76. if(oConvertUtils.isNotEmpty(value)){
  77. if(CgReportConstant.TYPE_STRING.equalsIgnoreCase(fieldType)){
  78. obj = value;
  79. }else if(CgReportConstant.TYPE_DATE.equalsIgnoreCase(fieldType)){
  80. if (value.length() == 19) {
  81. } else if (value.length() == 10) {
  82. if(isBegin){
  83. value +=" 00:00:00";
  84. }else{
  85. value +=" 23:59:59";
  86. }
  87. }
  88. SimpleDateFormat datetimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  89. obj = DateUtils.str2Date(value, datetimeFormat);
  90. }else if(CgReportConstant.TYPE_DOUBLE.equalsIgnoreCase(fieldType)){
  91. obj = value;
  92. }else if(CgReportConstant.TYPE_INTEGER.equalsIgnoreCase(fieldType)){
  93. obj = value;
  94. }else{
  95. obj = value;
  96. }
  97. }
  98. return obj;
  99. }
  100. /**
  101. * 将结果集转化为列表json格式
  102. * @param result 结果集
  103. * @param size 总大小
  104. * @return 处理好的json格式
  105. */
  106. public static String getJson(List<Map<String, Object>> result,Long size){
  107. JSONObject main = new JSONObject();
  108. JSONArray rows = new JSONArray();
  109. main.put("total",size );
  110. if(result!=null){
  111. for(Map m:result){
  112. JSONObject item = new JSONObject();
  113. Iterator it =m.keySet().iterator();
  114. while(it.hasNext()){
  115. String key = (String) it.next();
  116. String value =String.valueOf(m.get(key));
  117. key = key.toLowerCase();
  118. if(key.contains("time")||key.contains("date")){
  119. value = datatimeFormat(value);
  120. }
  121. item.put(key,value );
  122. }
  123. rows.add(item);
  124. }
  125. }
  126. main.put("rows", rows);
  127. return main.toString();
  128. }
  129. /**
  130. * 将结果集转化为列表json格式(不含分页信息)
  131. * @param result 结果集
  132. * @param size 总大小
  133. * @return 处理好的json格式
  134. */
  135. public static String getJson(List<Map<String, Object>> result){
  136. JSONArray rows = new JSONArray();
  137. for(Map m:result){
  138. JSONObject item = new JSONObject();
  139. Iterator it =m.keySet().iterator();
  140. while(it.hasNext()){
  141. String key = (String) it.next();
  142. String value =String.valueOf(m.get(key));
  143. key = key.toLowerCase();
  144. if(key.contains("time")||key.contains("date")){
  145. value = datatimeFormat(value);
  146. }
  147. item.put(key,value );
  148. }
  149. rows.add(item);
  150. }
  151. return rows.toString();
  152. }
  153. /**
  154. * 将毫秒数去掉
  155. * @param datetime
  156. * @return
  157. */
  158. public static String datatimeFormat(String datetime){
  159. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
  160. SimpleDateFormat dateFormatTo = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  161. Date d = null;
  162. try{
  163. d = dateFormat.parse(datetime);
  164. return dateFormatTo.format(d);
  165. }catch (Exception e) {
  166. return datetime;
  167. }
  168. }
  169. public static String a(List<OnlCgreportItem> var0, Map<String, Object> var1, String var2) {
  170. StringBuffer var3 = new StringBuffer();
  171. String var4 = "";
  172. try {
  173. var4 = TableUtil.getDatabaseType();
  174. } catch (SQLException var11) {
  175. var11.printStackTrace();
  176. } catch (DBException var12) {
  177. var12.printStackTrace();
  178. }
  179. Iterator var5 = var0.iterator();
  180. while(true) {
  181. while(true) {
  182. String var7;
  183. String var8;
  184. Object var13;
  185. do {
  186. while(true) {
  187. OnlCgreportItem var6;
  188. do {
  189. if (!var5.hasNext()) {
  190. return var3.toString();
  191. }
  192. var6 = (OnlCgreportItem)var5.next();
  193. var7 = var6.getFieldName();
  194. var8 = var6.getFieldType();
  195. } while(1 != var6.getIsSearch());
  196. Object var9;
  197. if ("group".equals(var6.getSearchMode())) {
  198. var9 = var1.get(var7 + "_begin");
  199. if (var9 != null) {
  200. var3.append(" and " + var2 + var7 + " >= ");
  201. if (!"Long".equals(var8) && !"Integer".equals(var8)) {
  202. // if ("ORACLE".equals(var4)) {
  203. // if (var8.toLowerCase().equals("datetime")) {
  204. // var3.append(SqlSymbolUtil.toDateyMdHms(var9.toString()));
  205. // } else if (var8.toLowerCase().equals("date")) {
  206. // var3.append(SqlSymbolUtil.toDateyMd(var9.toString()));
  207. // }
  208. // } else {
  209. var3.append("'" + var9.toString() + "'");
  210. // }
  211. } else {
  212. var3.append(var9.toString());
  213. }
  214. }
  215. var13 = var1.get(var7 + "_end");
  216. break;
  217. }
  218. var9 = var1.get(var7);
  219. if (var9 != null) {
  220. String var10 = QueryGenerator.getSingleQueryConditionSql(var7, var2, var9, !"Long".equals(var8) && !"Integer".equals(var8));
  221. var3.append(" and " + var10);
  222. }
  223. }
  224. } while(var13 == null);
  225. var3.append(" and " + var2 + var7 + " <= ");
  226. if (!"Long".equals(var8) && !"Integer".equals(var8)) {
  227. /* if ("ORACLE".equals(var4)) {
  228. if (var8.toLowerCase().equals("datetime")) {
  229. var3.append(SqlSymbolUtil.toDateyMdHms(var13.toString()));
  230. } else if (var8.toLowerCase().equals("date")) {
  231. var3.append(SqlSymbolUtil.toDateyMd(var13.toString()));
  232. }
  233. } else {*/
  234. var3.append("'" + var13.toString() + "'");
  235. //}
  236. } else {
  237. var3.append(var13.toString());
  238. }
  239. }
  240. }
  241. }
  242. }