analysis.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. 'use strict';
  2. app.controller('reportanalysisCtrl', ["$scope", "$rootScope", "$state", "$timeout", "$interval", "$http", "$cookieStore", "moment", "SweetAlert", "Restangular", "api_hkreport", "api_user_data", function($scope, $rootScope, $state, $timeout, $interval, $http, $cookieStore, moment, SweetAlert, Restangular, api_hkreport, api_user_data) {
  3. var ROWS = "ROWS";
  4. var COLUMNS = "COLUMNS";
  5. $scope.treeshow = true;
  6. $scope.searchstate = "";
  7. $scope.headers = "请选择事件树形列表!";
  8. var workspace = {};
  9. $scope.parameters = {};
  10. $scope.starttimes = {};
  11. $scope.endtimes = {};
  12. $scope.category = {};
  13. $scope.reportName = "报表";
  14. $scope.allheight = 100;
  15. $scope.isMaskground = false;
  16. $scope.yeardata = "year";
  17. $scope.quikly = [{ name: '自定义', value: 0 }, { name: '近3年', value: 1 }, { name: '近5年', value: 2 }, { name: '近10年', value: 3 }, { name: '近20年', value: 4 }];
  18. function startdata() {
  19. $scope.searchkeys = { 'area': {}, 'quikly': { name: '近5年', value: 2 } };
  20. $scope.starttimes = moment((new Date()).setFullYear((new Date()).getFullYear() - 4)).format("YYYY-MM-DD");
  21. $scope.endtimes = moment(new Date().getTime() - 86400000).format('YYYYMMDD');
  22. $scope.parameters.paramDateFrom = moment($scope.starttimes, "YYYYMMDD").format("YYYY-MM-DD");
  23. $scope.parameters.paramDateTo = moment($scope.endtimes, "YYYYMMDD").format("YYYY-MM-DD");
  24. }
  25. startdata();
  26. $scope.changeForm = function(paramDateFrom) {
  27. $scope.searchkeys.quikly = { name: '自定义', value: 0 };
  28. $scope.starttimes = moment(paramDateFrom).format('YYYY-MM--DD');
  29. }
  30. $scope.changeTo = function(paramDateTo) {
  31. $scope.searchkeys.quikly = { name: '自定义', value: 0 };
  32. $scope.endtimes = moment(paramDateTo).format('YYYY-MM-DD');
  33. }
  34. $scope.open = function($event) {
  35. $event.preventDefault();
  36. $event.stopPropagation();
  37. $scope.opened = !$scope.opened;
  38. };
  39. $scope.endOpen = function($event) {
  40. $event.preventDefault();
  41. $event.stopPropagation();
  42. $scope.startOpened = false;
  43. $scope.endOpened = !$scope.endOpened;
  44. };
  45. $scope.startOpen = function($event) {
  46. $event.preventDefault();
  47. $event.stopPropagation();
  48. $scope.endOpened = false;
  49. $scope.startOpened = !$scope.startOpened;
  50. };
  51. function ConvertDateParameter(parameters) {
  52. var result = undefined;
  53. if (angular.isArray(parameters)) {
  54. //
  55. } else {
  56. result = {};
  57. for (var k in parameters) {
  58. if (k.indexOf("Date") > 0) {
  59. if (angular.isDate(parameters[k])) {
  60. result[k] = moment(parameters[k]).format("YYYY-MM-DD");
  61. } else if (angular.isString(parameters[k])) {
  62. result[k] = parameters[k];
  63. }
  64. }
  65. }
  66. }
  67. return result;
  68. }
  69. $scope.restData = function() {
  70. startdata();
  71. $scope.mdxquery();
  72. }
  73. $scope.mdxquery = function(key) {
  74. var changedate = ConvertDateParameter($scope.parameters)
  75. var fildata = { "start": moment(changedate.paramDateFrom).format("YYYY"), "end": moment(changedate.paramDateTo).format("YYYY") }
  76. if (key && key.area && key.area.id) {
  77. fildata = { "start": moment(changedate.paramDateFrom).format("YYYY"), "end": moment(changedate.paramDateTo).format("YYYY"), "areaId": key.area.id }
  78. } else {
  79. fildata = { "start": moment(changedate.paramDateFrom).format("YYYY"), "end": moment(changedate.paramDateTo).format("YYYY") }
  80. }
  81. getdata(fildata)
  82. }
  83. $scope.onChangetime = function(key) {
  84. if (key.value == 1) {
  85. $scope.starttimes = moment((new Date(moment().startOf('year'))).setFullYear((new Date()).getFullYear() - 2)).format('YYYY-MM-DD');
  86. $scope.endtimes = moment().format('YYYY-MM-DD');;
  87. $scope.parameters.paramDateFrom = $scope.starttimes;
  88. $scope.parameters.paramDateTo = $scope.endtimes;
  89. } else if (key.value == 2) {
  90. $scope.starttimes = moment((new Date(moment().startOf('year'))).setFullYear((new Date()).getFullYear() - 4)).format('YYYY-MM-DD');
  91. $scope.endtimes = moment().format('YYYY-MM-DD');;
  92. $scope.parameters.paramDateFrom = $scope.starttimes;
  93. $scope.parameters.paramDateTo = $scope.endtimes;
  94. } else if (key.value == 3) {
  95. $scope.starttimes = moment((new Date(moment().startOf('year'))).setFullYear((new Date()).getFullYear() - 9)).format('YYYY-MM-DD');
  96. $scope.endtimes = moment().format('YYYY-MM-DD');;
  97. $scope.parameters.paramDateFrom = $scope.starttimes;
  98. $scope.parameters.paramDateTo = $scope.endtimes;
  99. } else if (key.value == 4) {
  100. $scope.starttimes = moment((new Date(moment().startOf('year'))).setFullYear((new Date()).getFullYear() - 19)).format('YYYY-MM-DD');
  101. $scope.endtimes = moment().format('YYYY-MM-DD');;
  102. $scope.parameters.paramDateFrom = $scope.starttimes;
  103. $scope.parameters.paramDateTo = $scope.endtimes;
  104. }
  105. }
  106. $scope.execute = function() {
  107. api_report.list($scope.token).then(function(response) {
  108. $scope.select_treedata = $scope.my_data = response;
  109. });
  110. }
  111. $scope.searchOptions = function() {
  112. if (angular.isDefined(workspace.query)) {
  113. var queryParameters = workspace.query.parameters;
  114. for (var parm in queryParameters) {
  115. if (parm == 'Week') {
  116. } else {
  117. }
  118. }
  119. }
  120. }
  121. //区域
  122. $scope.outarea = [];
  123. api_user_data.fetchDataList('area', { "idx": 0, "sum": 1000 }).then(function(response) {
  124. if (response) {
  125. if (response.status = 200) {
  126. $scope.outarea = response.list;
  127. }
  128. }
  129. })
  130. //数据
  131. var titledata = [];
  132. var datas = [
  133. []
  134. ];
  135. var serieslist = [];
  136. var colorlist = ['#005395', '#49a9ee', '#ffcd62', '#87c966', '#1ea58f'];
  137. var datetime = [];
  138. $scope.headerslist = [];
  139. $scope.listsum = [];
  140. $scope.rRows = [];
  141. //事件数量统计分析
  142. var domanalysis = document.getElementById("analysis");
  143. var myChartanalysis = echarts.init(domanalysis);
  144. var app = {};
  145. var optionanalysis = null;
  146. app.title = '事件数量统计分析';
  147. var XData = [];
  148. var yData = [];
  149. myChartanalysis.showLoading({  
  150. text: '数据加载中...',
  151. color: '#c23531',
  152. textColor: '#fff',
  153. maskColor: 'rgba(255,255,255,0)',
  154. zlevel: 0
  155. });
  156. myChartanalysis.hideLoading();
  157. app.title = '堆叠条形图';
  158. optionanalysis = {
  159. tooltip: {
  160. trigger: 'axis',
  161. axisPointer: { // 坐标轴指示器,坐标轴触发有效
  162. type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
  163. },
  164. formatter: function(datas) {
  165. var allsum = 0;
  166. angular.forEach(datas, function(item) {
  167. allsum += item.data;
  168. })
  169. var res = '';
  170. for (var i = 0; i < datas.length; i++) {
  171. res += datas[i].marker + " " + datas[i].seriesName + ' 总数:' +
  172. datas[i].data + ' 占比:' + (allsum > 0 ? datas[i].data * 100 / allsum : 0).toFixed(2) + '%' + '<br/>'
  173. }
  174. return res
  175. }
  176. },
  177. legend: {
  178. icon: "circle",
  179. bottom: '0%',
  180. data: titledata
  181. },
  182. grid: {
  183. left: '5%',
  184. right: '4%',
  185. bottom: '20%',
  186. top: '5%',
  187. containLabel: false
  188. },
  189. xAxis: {
  190. // axisTick: {
  191. // show: false
  192. // },
  193. splitLine: {
  194. show: false,
  195. },
  196. axisLine: {
  197. lineStyle: {
  198. color: '#ddd'
  199. }
  200. },
  201. splitArea: {
  202. show: false
  203. },
  204. axisLabel: {
  205. textStyle: {
  206. color: '#787878',
  207. fontSize: 12,
  208. }
  209. },
  210. type: 'value'
  211. },
  212. yAxis: {
  213. axisTick: {
  214. show: false
  215. },
  216. axisLabel: {
  217. show: true,
  218. textStyle: {
  219. color: '#6d6d6d',
  220. fontSize: 12,
  221. }
  222. },
  223. axisLine: {
  224. show: true,
  225. lineStyle: {
  226. color: '#ddd'
  227. }
  228. },
  229. splitArea: {
  230. show: false
  231. },
  232. type: 'category',
  233. data: datetime
  234. },
  235. series: serieslist
  236. }
  237. function getdata(time) {
  238. api_hkreport.incidentreport(time, 'incident_trend').then(function(data) {
  239. handledata(data);
  240. })
  241. }
  242. getdata({ "start": moment($scope.parameters.paramDateFrom, "YYYY-MM-DD").format("YYYY"), "end": moment($scope.parameters.paramDateTo, "YYYY-MM-DD").format("YYYY") })
  243. function handledata(data) {
  244. datetime = [];
  245. $scope.listsum = [];
  246. titledata = [];
  247. $scope.headerslist = data.quantityStatisticsTitle;
  248. $scope.rRows = data.quantityStatisticsList;
  249. angular.forEach($scope.rRows, function(item, index) {
  250. $scope.listsum[index] = { 'allzzl': '', 'sum': '', 'date': '', 'all': [] };
  251. var i = (Object.values($scope.rRows[0]).length - 3) / 2;
  252. for (var j = 0; j < i; j++) {
  253. // $scope.listsum[index].zzl[j] = $scope.rRows[index]['zzl' + j];
  254. $scope.listsum[index].all[j] = { 'category': $scope.rRows[index]['category' + j], 'zzl': $scope.rRows[index]['zzl' + j] };
  255. // $scope.listsum[index].allzzl = $scope.rRows[index].allzzl;
  256. $scope.listsum[index].allzzl = $scope.rRows[index].allzzl == '-' ? $scope.rRows[index].allzzl : Number($scope.rRows[index].allzzl);
  257. $scope.listsum[index].sum = $scope.rRows[index].sum;
  258. $scope.listsum[index].date = $scope.rRows[index].date;
  259. $scope.rRows[index].allzzl = $scope.rRows[index].allzzl == '-' ? $scope.rRows[index].allzzl : Number($scope.rRows[index].allzzl);
  260. $scope.rRows[index]['zzl' + j] = { 'category': $scope.rRows[index]['category' + j], 'zzl': $scope.rRows[index]['zzl' + j] == '-' ? $scope.rRows[index]['zzl' + j] : Number($scope.rRows[index]['zzl' + j]) };
  261. }
  262. })
  263. angular.forEach(data.quantityStatistics, function(item, index) {
  264. titledata.push(item.category);
  265. datas[index] = [];
  266. angular.forEach(item.data, function(itemtwo, indextwo) {
  267. datas[index][indextwo] = itemtwo.sum;
  268. })
  269. serieslist[index] = {
  270. name: item.category,
  271. type: 'bar',
  272. stack: '总量',
  273. "itemStyle": {
  274. "normal": {
  275. "barBorderRadius": 0,
  276. "color": colorlist[index],
  277. "label": {
  278. "show": false,
  279. "textStyle": {
  280. "color": "#87c966"
  281. },
  282. "position": "insideRight",
  283. formatter: function(p) {
  284. return p.value > 0 ? (p.value) : '';
  285. }
  286. }
  287. }
  288. },
  289. barWidth: 18,
  290. data: datas[index]
  291. }
  292. })
  293. angular.forEach(data.quantityStatistics[0].data, function(item, index) {
  294. datetime[index] = item.date;
  295. })
  296. optionanalysis.yAxis.data = datetime;
  297. optionanalysis.legend.data = titledata;
  298. myChartanalysis.setOption(optionanalysis);
  299. myChartanalysis.hideLoading();
  300. }
  301. }]);