CarDataStatisticsAction.java 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  1. package com.runzhixing.action;
  2. import java.io.PrintWriter;
  3. import java.sql.Date;
  4. import java.util.ArrayList;
  5. import java.util.HashMap;
  6. import java.util.HashSet;
  7. import java.util.List;
  8. import java.util.Map;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11. import org.apache.struts2.ServletActionContext;
  12. import com.opensymphony.xwork2.ActionSupport;
  13. import com.runzhixing.bean.AuthorityRegionPlace;
  14. import com.runzhixing.bean.StatData1;
  15. import com.runzhixing.bean.User;
  16. import com.runzhixing.constant.Constant;
  17. import com.runzhixing.packageProcedure.CarsDataStatisticsProcedure;
  18. import com.runzhixing.tool.JsonUtil;
  19. import com.runzhixing.tool.Util;
  20. /**
  21. * 告警参数设置
  22. * @author 小黄
  23. *
  24. */
  25. @SuppressWarnings("serial")
  26. public class CarDataStatisticsAction extends ActionSupport {
  27. //设置新的告警参数
  28. @SuppressWarnings({ "unchecked" })
  29. public void CarDataStatistics() throws Exception{
  30. HttpServletResponse response = ServletActionContext.getResponse();
  31. HttpServletRequest req = ServletActionContext.getRequest();
  32. User user = (User)req.getSession().getAttribute(Constant.userMark);
  33. String privilegeCode =user.getPrivilegeCode();
  34. if(privilegeCode.length()>6) {
  35. privilegeCode = privilegeCode.substring(0, 6);
  36. privilegeCode = privilegeCode.replaceAll("(00)*$", "");// 一直过滤到最高行政地域(删去尾部的 00 )
  37. }
  38. //获取地址,默认全部
  39. String province = req.getParameter("province");
  40. String city = req.getParameter("city");
  41. String country = req.getParameter("country");
  42. String checkText = req.getParameter("checkText").replace(" ", "");
  43. if(province==null){
  44. province = "";
  45. }
  46. if(city==null){
  47. city = "";
  48. }
  49. if(country==null){
  50. country = "";
  51. }
  52. String regionNo = province+city+country;//地区编号
  53. regionNo = regionNo.replaceAll("(00)*$", "");
  54. //根据地址获取地址编号
  55. int searchType = Integer.parseInt(req.getParameter("searchType"));
  56. String est = req.getParameter("startTime");
  57. String eet = req.getParameter("endTime");
  58. //开始日期
  59. Date startTime = null;
  60. //结束日期
  61. Date endTime =null;
  62. if(est!=null&&!est.equals("")){
  63. startTime = Util.dateChange(est);
  64. }
  65. if(eet!=null&&!eet.equals("")){
  66. endTime = Util.dateChange(eet);
  67. }
  68. int isEffi = Util.calculateFlag(startTime, endTime);
  69. List<StatData1> list1 = new ArrayList<StatData1>();
  70. if(regionNo.equals("51")||regionNo.equals("5101")){
  71. StatData1 st = new StatData1();
  72. st.setCateName("出租");
  73. st.setSeriesName("成都市");
  74. st.setValue(8766.0f);
  75. list1.add(st);
  76. st = new StatData1();
  77. st.setCateName("公交");
  78. st.setSeriesName("成都市");
  79. st.setValue(2980.0f);
  80. list1.add(st);
  81. st = new StatData1();
  82. st.setCateName("私用");
  83. st.setSeriesName("成都市");
  84. st.setValue(72187.0f);
  85. list1.add(st);
  86. st = new StatData1();
  87. st.setCateName("货运");
  88. st.setSeriesName("成都市");
  89. st.setValue(1378.0f);
  90. list1.add(st);
  91. st = new StatData1();
  92. st.setCateName("客运");
  93. st.setSeriesName("成都市");
  94. st.setValue(3132.0f);
  95. list1.add(st);
  96. st = new StatData1();
  97. st.setCateName("营转非");
  98. st.setSeriesName("成都市");
  99. st.setValue(2317.0f);
  100. list1.add(st);
  101. st = new StatData1();
  102. st.setCateName("其他");
  103. st.setSeriesName("成都市");
  104. st.setValue(7981.0f);
  105. list1.add(st);
  106. }
  107. int CancelFlag=0;
  108. CancelFlag = Integer.parseInt(req.getParameter("CancelFlag"));
  109. // list1.addAll( new CarsDataStatisticsProcedure().queryCarStatList(privilegeCode, regionNo, searchType, startTime, endTime,isEffi));
  110. list1.addAll( new CarsDataStatisticsProcedure().queryCarStatList0111(privilegeCode, regionNo, searchType, startTime, endTime,isEffi,CancelFlag));
  111. float sum=0.0f;
  112. if(list1!=null&&list1.size()>0){
  113. for(int i=0;i<list1.size();i++){
  114. StatData1 st = list1.get(i);
  115. sum+=list1.get(i).getValue();
  116. if(st.getSeriesName()!=null&&st.getSeriesName().contains("四川省")){
  117. list1.get(i).setSeriesName(st.getSeriesName().substring(st.getSeriesName().indexOf("四川省")+3, st.getSeriesName().length()));
  118. }
  119. }
  120. //成都的数量
  121. sum+=0f;
  122. }
  123. String pName = (String)req.getParameter("cylinderpName")+".png";
  124. if(searchType==0){//按所选地区应用类型统计
  125. for ( int i = 0 ; i < list1.size(); i ++ ) {
  126. for ( int j = list1.size() - 1 ; j > i; j -- ) {
  127. if(list1.get(i).getCateName().equals(list1.get(j).getCateName())){
  128. list1.get(i).setValue(list1.get(i).getValue()+list1.get(j).getValue());
  129. list1.remove(j);
  130. }
  131. }
  132. }
  133. int lsize = list1.size();
  134. double[][] data = new double[1][lsize];
  135. String[] rowKeys = new String[1];
  136. String[] columnKeys = new String[lsize];
  137. if(list1.size()>0){
  138. int i =0;
  139. for(StatData1 sd:list1){
  140. data[0][i]=Double.parseDouble(String.valueOf(sd.getValue()));
  141. rowKeys[0]="车辆";
  142. columnKeys[i]=sd.getCateName();
  143. i++;
  144. }
  145. }
  146. new CreateChartServiceImpl().makeBarGroupChart1(data, rowKeys, columnKeys, pName);
  147. }else if(searchType==1){
  148. List<String> ls = new ArrayList<String>();
  149. List<String> ls1 = new ArrayList<String>();
  150. for(StatData1 sd:list1){
  151. ls.add(sd.getSeriesName());
  152. ls1.add(sd.getCateName());
  153. }
  154. ls = quchong(ls);//列数
  155. ls1 = quchong(ls1);//行数
  156. double[][] data = new double[ls1.size()][ls.size()];
  157. String[] rowKeys = new String[ls.size()];
  158. String[] columnKeys = new String[ls1.size()];
  159. int f=0;
  160. for(String s:ls){
  161. if(f<ls.size()){
  162. // if(s.length()>8){
  163. // s=s.substring(s.length()-8, s.length());
  164. // }
  165. rowKeys[f] = s;
  166. if(s.contains(checkText)){
  167. rowKeys[f] = s.substring(s.indexOf(checkText)+checkText.length(), s.length());
  168. if(rowKeys[f]==null||rowKeys[f].equals("")||rowKeys[f].trim().length()==0){
  169. rowKeys[f] = checkText;
  170. }
  171. }
  172. }
  173. f++;
  174. }
  175. int ff=0;
  176. for(String s:ls1){
  177. if(ff<ls1.size())
  178. columnKeys[ff]=s;
  179. ff++;
  180. }
  181. for(int i=0;i<ls1.size();i++){//这是一列
  182. for(int j=0;j<ls.size();j++){//这是一行
  183. for(StatData1 sd:list1){
  184. if(sd.getCateName().equals(ls1.get(i))){
  185. // System.out.println("首先是:"+ls1.get(i));
  186. if(sd.getSeriesName().equals(ls.get(j))){
  187. data[i][j]+=Double.parseDouble(String.valueOf(sd.getValue()));
  188. }
  189. }
  190. }
  191. }
  192. }
  193. System.out.println(data);
  194. System.out.println(rowKeys);
  195. System.out.println(columnKeys);
  196. new CreateChartServiceImpl().makeBarGroupChart1(data, columnKeys, rowKeys, pName);
  197. }else if(searchType==2){
  198. if(list1.size()>0){
  199. for(int i =0;i<list1.size();i++){
  200. for(int j=list1.size()-1;j>i;j--){
  201. if(list1.get(i).getSeriesName().equals(list1.get(j).getSeriesName())){
  202. list1.get(i).setValue(list1.get(i).getValue()+list1.get(j).getValue());
  203. list1.remove(j);
  204. }
  205. }
  206. }
  207. }
  208. checkText = checkText.replace(" ", "");
  209. checkText = checkText.replace("无", "");
  210. checkText = checkText.replace("全部", "");
  211. System.out.println(checkText);
  212. int le = list1.size();
  213. double[][] data = new double[1][le];
  214. String[] rowKeys = new String[le];
  215. String[] columnKeys = {"车辆"};
  216. int k=0;
  217. for(StatData1 sd:list1){
  218. data[0][k] = Double.parseDouble(String.valueOf(sd.getValue()));
  219. rowKeys[k] = sd.getSeriesName();
  220. String s=sd.getSeriesName();
  221. if(s.contains(checkText)){
  222. rowKeys[k] = s.substring(s.indexOf(checkText)+checkText.length(), s.length());
  223. if(rowKeys[k]==null||rowKeys[k].equals("")||rowKeys[k].trim().length()==0){
  224. rowKeys[k] = checkText;
  225. }
  226. }
  227. k++;
  228. }
  229. new CreateChartServiceImpl().makeBarGroupChart1(data, columnKeys, rowKeys, pName);
  230. }
  231. // response.setContentType("text/html;charset=utf-8");
  232. // PrintWriter out = response.getWriter();
  233. // out.write("");
  234. Map<String,Object> map=new HashMap<String, Object>();
  235. map.put("status",sum);
  236. JsonUtil.outjson(map, response, null, JsonUtil.df, "");
  237. }
  238. @SuppressWarnings("unchecked")
  239. public static List quchong(List list){
  240. HashSet h = new HashSet(list);
  241. list.clear();
  242. list.addAll(h);
  243. return list;
  244. }
  245. public static List quchong1(List list){
  246. if(list.size()>0){
  247. for(int i=0;i<list.size();i++){
  248. for(int j=list.size()-1;j>i;j++){
  249. if(list.get(i)==list.get(j)){
  250. list.remove(j);
  251. }
  252. }
  253. }
  254. }
  255. return list;
  256. }
  257. }