drychart.jsp 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476
  1. <%@ page contentType="text/html; charset=utf-8" session="false" %>
  2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <title>我的工作台</title>
  6. <%@ include file="../common/header.jsp" %>
  7. <script type="text/javascript" src="${contextPath }/js/calendar/WdatePicker.js"></script>
  8. <link type="text/css" rel="stylesheet" href="${contextPath}/css/themes/easyui.css" />
  9. <script type="text/javascript" src="${contextPath }/js/jquery.easyui.min.js"></script>
  10. <script type="text/javascript" src="${contextPath}/js/highcharts.js"></script>
  11. <script type="text/javascript" src="${contextPath}/js/exporting.js"></script>
  12. <script type="text/javascript">
  13. var mydata,selId,typeId=0,chartWidth,chartHeight,Mydatelist,
  14. tpricelist,CCOUNTlist,beginSumActualWeightMinuslist,SumActualWeightMinuslist,
  15. YesterdayRemainlist,Remainlist,RemainRatiolist,tdrylist,sjDryCSLlist,dryWEIGHTlist,
  16. csllist,lpricelist,pricelist,sumlpricelist,sumpricelist,productlist,milkratiolist,FeedPriceMilklist,
  17. options;
  18. $(document).ready( function() {
  19. setTimeout(function(){
  20. $('body').layout('collapse','north');
  21. },0);
  22. $("input.datebox").bind("click", function() {WdatePicker();});
  23. setNowDate();
  24. $("#feeddiv").height(document.body.clientHeight-320);
  25. //默认选中牲畜类别
  26. $("#CattleSelDiv").show();
  27. $("#TempletSelDiv").hide();
  28. $("#FeedpSelDiv").hide();
  29. //默认选中前5条记录
  30. var feedId=document.getElementsByName("feedId");
  31. for(var i=0;i<feedId.length;i++){
  32. if(i==5){
  33. break;
  34. }else{
  35. feedId[i].checked=true;
  36. }
  37. }
  38. chartWidth = document.body.clientWidth-210;
  39. chartHeight = document.body.clientHeight-60;
  40. });
  41. $(window).resize(function(){
  42. $("#feeddiv").height(document.body.clientHeight-320);
  43. $("#Result").width(document.body.clientWidth-190);
  44. $("#Result").height(document.body.clientHeight-30);
  45. });
  46. //初始化日期
  47. function setNowDate(){
  48. var myDate = new Date();
  49. var year = myDate.getFullYear();
  50. var month = myDate.getMonth()+1;
  51. var day = myDate.getDate();
  52. var nowdate = year + "-" + month + "-" + day;
  53. $("#endDate").val(nowdate);
  54. var lastmonth = myDate.getMonth();
  55. var lastdate = year + "-" + lastmonth + "-" + day;
  56. $("#beginDate").val(lastdate);
  57. }
  58. //查询数据
  59. function queryDate(){
  60. if(typeId == 0){
  61. selId = $("#CattleSelId").val();
  62. }else if(typeId == 1){
  63. selId = $("#TempletSelId").val();
  64. }else{
  65. selId = $("#FeedpSelId").val();
  66. }
  67. var feedIds = selectfeedId();
  68. if(feedIds != ""){
  69. var feed = feedIds.split(",");
  70. if(feed.length > 5){
  71. alert("统计类别、最多选5个!!!");
  72. }else{
  73. var beginDate = $("#beginDate").val();
  74. var endDate = $("#endDate").val();
  75. var tjType = selecttjType();
  76. //获取点线图的数据
  77. $.ajax({
  78. async: false,
  79. type: "POST",
  80. dataType: "json", //返回类型json
  81. data: "beginDate="+beginDate+"&endDate="+endDate+"&tjType="+tjType+"&selId="+selId+"&feedIds="+feedIds,
  82. url: "${contextPath }/admin/statistics/drychartlist.html",
  83. error: function(){alert("系统错误");},
  84. success: function(json){
  85. if(json.status == "success"){
  86. Mydatelist = json.Mydatelist;
  87. tpricelist = json.tpricelist;
  88. CCOUNTlist = json.CCOUNTlist;
  89. beginSumActualWeightMinuslist = json.beginSumActualWeightMinuslist;
  90. SumActualWeightMinuslist = json.SumActualWeightMinuslist;
  91. YesterdayRemainlist = json.YesterdayRemainlist;
  92. Remainlist = json.Remainlist;
  93. RemainRatiolist = json.RemainRatiolist;
  94. tdrylist = json.tdrylist;
  95. sjDryCSLlist = json.sjDryCSLlist;
  96. dryWEIGHTlist = json.dryWEIGHTlist;
  97. csllist = json.csllist;
  98. lpricelist = json.lpricelist;
  99. pricelist = json.pricelist;
  100. sumlpricelist = json.sumlpricelist;
  101. sumpricelist = json.sumpricelist;
  102. productlist = json.productlist;
  103. milkratiolist = json.milkratiolist;
  104. FeedPriceMilklist = json.FeedPriceMilklist;
  105. }
  106. }
  107. });
  108. options = {
  109. chart: {
  110. backgroundColor:"#FFFFEF",
  111. shadow: true,
  112. renderTo: "container",
  113. type: "line",
  114. zoomType: "x,y",
  115. height: chartHeight,
  116. width: chartWidth
  117. },
  118. navigation: {
  119. buttonOptions: {
  120. enabled: false
  121. }
  122. },
  123. lang: {
  124. loading: "请稍等……",
  125. printButtonTitle: "打印",
  126. resetZoom: "缩放比例",
  127. resetZoomTitle: "缩放比例",
  128. exportButtonTitle: "导出",
  129. downloadPNG: "PNG格式导出",
  130. downloadJPEG: "JPEG格式导出",
  131. downloadPDF: "PDF格式导出",
  132. downloadSVG: "SVG格式导出"
  133. },
  134. title: {
  135. text: ""
  136. },
  137. xAxis: {
  138. categories: Mydatelist,
  139. labels: {
  140. step: 5
  141. }
  142. },
  143. yAxis: {
  144. title: {
  145. text: ""
  146. },
  147. min: 0,
  148. tickInterval: 200 //坐标轴刻度间距:tickPixelInterval像素距离、tickInterval数值距离
  149. },
  150. tooltip: {
  151. crosshairs: true, //鼠标移动x轴显示虚线
  152. formatter: function() {
  153. return "<b>"+ this.series.name +"</b><br/>"+
  154. this.x +" "+ this.y;
  155. }
  156. },
  157. legend: {
  158. align: "top",
  159. verticalAlign: "top",
  160. x: 100,
  161. y: 1,
  162. borderWidth: 1,
  163. itemMarginBottom: 5
  164. },
  165. plotOptions: {
  166. series: {
  167. animation: false
  168. },
  169. line: {
  170. lineWidth: 1,
  171. states: {
  172. hover: {
  173. lineWidth: 1
  174. }
  175. },
  176. marker: {
  177. enabled: false,
  178. states: {
  179. hover: {
  180. enabled: false,
  181. radius: 1,
  182. lineWidth: 1
  183. }
  184. }
  185. }
  186. }
  187. },
  188. series: [{}]
  189. };
  190. loadChart(feedIds); //加载点线图
  191. $("#Result").load("${contextPath }/admin/statistics/drycharttable.html?beginDate="+beginDate+"&endDate="+endDate+"&tjType="+tjType+"&selId="+selId);
  192. }
  193. }else{
  194. alert("请选择统计类别、最多选5个!!!");
  195. }
  196. }
  197. //取得统计类型
  198. function selecttjType(){
  199. var tjType=document.getElementsByName("tjType");
  200. var tjtype = "";
  201. for(var i=0;i<tjType.length;i++){
  202. if(tjType[i].checked){
  203. if(tjtype=="")
  204. tjtype = tjType[i].value;
  205. else
  206. tjtype += "," + tjType[i].value;
  207. }
  208. }
  209. return tjtype;
  210. }
  211. //取得勾选的饲料
  212. function selectfeedId(){
  213. var feedId=document.getElementsByName("feedId");
  214. var feedIds = "";
  215. for(var i=0;i<feedId.length;i++){
  216. if(feedId[i].checked){
  217. if(feedIds=="")
  218. feedIds = feedId[i].value;
  219. else
  220. feedIds += "," + feedId[i].value;
  221. }
  222. }
  223. return feedIds;
  224. }
  225. //反选
  226. function not_Click(){
  227. var feedId=document.getElementsByName("feedId");
  228. for(var i=0;i<feedId.length;i++){
  229. if(feedId[i].checked)
  230. feedId[i].checked=false;
  231. }
  232. }
  233. function leftDate(){
  234. var beginDate = $("#beginDate").val();
  235. var endDate = $("#endDate").val();
  236. var newbDate = checkDate(beginDate,"left");
  237. var neweDate = checkDate(endDate,"left");
  238. $("#beginDate").val(newbDate);
  239. $("#endDate").val(neweDate);
  240. queryDate();
  241. }
  242. function rightDate(){
  243. var beginDate = $("#beginDate").val();
  244. var endDate = $("#endDate").val();
  245. var newbDate = checkDate(beginDate,"");
  246. var neweDate = checkDate(endDate,"");
  247. $("#beginDate").val(newbDate);
  248. $("#endDate").val(neweDate);
  249. queryDate();
  250. }
  251. //点击统计类型
  252. function tjTypeOnClick(value){
  253. if(value == 0){
  254. $("#CattleSelDiv").show();
  255. $("#TempletSelDiv").hide();
  256. $("#FeedpSelDiv").hide();
  257. typeId = 0;
  258. }else if(value == 1){
  259. $("#CattleSelDiv").hide();
  260. $("#TempletSelDiv").show();
  261. $("#FeedpSelDiv").hide();
  262. typeId = 1;
  263. }else{
  264. $("#CattleSelDiv").hide();
  265. $("#TempletSelDiv").hide();
  266. $("#FeedpSelDiv").show();
  267. typeId = 2;
  268. }
  269. }
  270. //Chart初始化
  271. function loadChart(feedIds){
  272. var c = 0;
  273. var feed = feedIds.split(",");
  274. //根据选择的个数设置线的默认条数
  275. if(feed.length == 5){
  276. options.series.push({name:""},{name:""},{name:""},{name:""});
  277. }else if(feed.length == 4){
  278. options.series.push({name:""},{name:""},{name:""});
  279. }else if(feed.length == 3){
  280. options.series.push({name:""},{name:""});
  281. }else if(feed.length == 2){
  282. options.series.push({name:""});
  283. }
  284. //根据选择的类别为默认线加载数据
  285. for(var i=0;i<feed.length;i++){
  286. if(feed[i] == 0){
  287. options.series[c].name = "配方价格";
  288. options.series[c].data = tpricelist;
  289. }else if(feed[i] == 1){
  290. options.yAxis.tickInterval = 10000;
  291. options.series[c].name = "应上料量(kg)";
  292. options.series[c].data = beginSumActualWeightMinuslist;
  293. }else if(feed[i] == 2){
  294. options.yAxis.tickInterval = 10000;
  295. options.series[c].name = "总上料量(kg)";
  296. options.series[c].data = SumActualWeightMinuslist;
  297. }else if(feed[i] == 3){
  298. options.series[c].name = "配方干物质采食量(kg/头)";
  299. options.series[c].data = dryWEIGHTlist;
  300. }else if(feed[i] == 4){
  301. options.series[c].name = "实际干物质采食量(kg/头)";
  302. options.series[c].data = sjDryCSLlist;
  303. }else if(feed[i] == 5){
  304. options.series[c].name = "实际牛头数";
  305. options.series[c].data = CCOUNTlist;
  306. }else if(feed[i] == 6){
  307. options.series[c].name = "今日剩料量(kg)";
  308. options.series[c].data = Remainlist;
  309. }else if(feed[i] == 7){
  310. options.series[c].name = "剩料率(kg)";
  311. options.series[c].data = RemainRatiolist;
  312. }else if(feed[i] == 8){
  313. options.series[c].name = "TMR干物质";
  314. options.series[c].data = tdrylist;
  315. }else if(feed[i] == 9){
  316. options.series[c].name = "采食率(%)";
  317. options.series[c].data = csllist;
  318. }else if(feed[i] == 10){
  319. options.series[c].name = "配方成本(元/头)";
  320. options.series[c].data = lpricelist;
  321. }else if(feed[i] == 11){
  322. options.yAxis.tickInterval = 10000;
  323. options.series[c].name = "配方总成本(元)";
  324. options.series[c].data = sumlpricelist;
  325. }else if(feed[i] == 12){
  326. options.series[c].name = "实际成本(元/头)";
  327. options.series[c].data = pricelist;
  328. }else if(feed[i] == 13){
  329. options.yAxis.tickInterval = 10000;
  330. options.series[c].name = "实际总成本(元)";
  331. options.series[c].data = sumpricelist;
  332. }else if(feed[i] == 14){
  333. options.series[c].name = "产量(kg)";
  334. options.series[c].data = productlist;
  335. }else if(feed[i] == 15){
  336. options.series[c].name = "产奶效率(奶料比)";
  337. options.series[c].data = milkratiolist;
  338. }else if(feed[i] == 16){
  339. options.series[c].name = "饲料成本(元/公斤奶)";
  340. options.series[c].data = FeedPriceMilklist;
  341. }
  342. c++;
  343. }
  344. chart = new Highcharts.Chart(options);
  345. }
  346. //查询数据
  347. function excelDate(){
  348. if(typeId == 0){
  349. selId = $("#CattleSelId").val();
  350. }else if(typeId == 1){
  351. selId = $("#TempletSelId").val();
  352. }else{
  353. selId = $("#FeedpSelId").val();
  354. }
  355. var feedIds = selectfeedId();
  356. if(feedIds != ""){
  357. var feed = feedIds.split(",");
  358. if(feed.length > 5){
  359. alert("统计类别、最多选5个!!!");
  360. }else{
  361. var beginDate = $("#beginDate").val();
  362. var endDate = $("#endDate").val();
  363. var tjType = selecttjType();
  364. document.location.href="${contextPath }/admin/statistics/drychartExcel.html?beginDate="+beginDate+"&endDate="+endDate+"&tjType="+tjType+"&selId="+selId;
  365. }
  366. }else{
  367. alert("请选择统计类别、最多选5个!!!");
  368. }
  369. }
  370. </script>
  371. </head>
  372. <body class="easyui-layout">
  373. <div region="north" title="效率统计" style="height:500px;">
  374. <table cellspacing="1" cellpadding="0" border="0" width="99%">
  375. <tr>
  376. <td width="90%" style="vertical-align:top;">
  377. <div id="Result" style="overflow-x: auto; overflow-y: auto; width:100%;"></div>
  378. </td>
  379. </tr>
  380. </table>
  381. </div>
  382. <div region="center" title="效率统计" style="padding:5px;background:#eee;">
  383. <table cellspacing="1" cellpadding="0" border="0" style="width: 99%;">
  384. <tr>
  385. <td width="10%" height="20"><input id="beginDate" name="beginDate" style="width:100px;" class="datebox" value=""/></td>
  386. <td width="5%"><input type="button" value="统计" onclick="queryDate()" class="sysub" /></td>
  387. <td width="80%" rowspan="7" style="vertical-align:top;"><div id="container"></div></td>
  388. </tr>
  389. <tr>
  390. <td height="20"><input id="endDate" name="endDate" style="width:100px;" class="datebox" value=""/></td>
  391. <td><input type="button" value="导出" onclick="excelDate()" class="sysub" /></td>
  392. </tr>
  393. <tr>
  394. <td height="20" colspan="2">
  395. <input type="button" value="<" onclick="leftDate();" /><input type="button" value=">" onclick="rightDate();" />
  396. <fieldset>
  397. <legend>统计类型</legend>
  398. <table cellspacing="1" cellpadding="0" border="0" style="width: 99%;">
  399. <tr><td algin="left"><input name="tjType" id="sllb" type="radio" value="0" checked="checked" onclick="tjTypeOnClick(0)" /><label for="sllb">牲畜类别</label></td></tr>
  400. <tr><td algin="left"><input name="tjType" id="rq" type="radio" value="1" onclick="tjTypeOnClick(1)" /><label for="rq">配方模版</label></td></tr>
  401. <tr><td algin="left"><input name="tjType" id="sl" type="radio" value="2" onclick="tjTypeOnClick(2)" /><label for="sl">舍栏</label></td></tr>
  402. </table>
  403. </fieldset>
  404. </td>
  405. </tr>
  406. <tr>
  407. <td height="20" colspan="2">
  408. <fieldset>
  409. <legend>统计目标</legend>
  410. <div id="CattleSelDiv">
  411. <table cellspacing="1" cellpadding="0" border="0" style="width: 99%;">
  412. <tr>
  413. <td>
  414. <select id="CattleSelId">
  415. <c:forEach items="${CattleList }" var="Cattle">
  416. <option value="${Cattle.ID }"><c:out value="${Cattle.CLASSNAME }" /></option>
  417. </c:forEach>
  418. </select>
  419. </td>
  420. </tr>
  421. </table>
  422. </div>
  423. <div id="TempletSelDiv">
  424. <table cellspacing="1" cellpadding="0" border="0" style="width: 99%;">
  425. <tr>
  426. <td>
  427. <select id="TempletSelId">
  428. <c:forEach items="${Templet1List }" var="Templet">
  429. <option value="${Templet.ID }"><c:out value="${Templet.TNAME }" /></option>
  430. </c:forEach>
  431. </select>
  432. </td>
  433. </tr>
  434. </table>
  435. </div>
  436. <div id="FeedpSelDiv">
  437. <table cellspacing="1" cellpadding="0" border="0" style="width: 99%;">
  438. <tr>
  439. <td>
  440. <select id="FeedpSelId">
  441. <c:forEach items="${Feedps }" var="Feedp">
  442. <option value="${Feedp.ID }"><c:out value="${Feedp.BNAME }" /></option>
  443. </c:forEach>
  444. </select>
  445. </td>
  446. </tr>
  447. </table>
  448. </div>
  449. </fieldset>
  450. </td>
  451. </tr>
  452. <tr>
  453. <td height="20">勾选统计类别</td>
  454. <td height="20"><input type="button" style="height:25px;" value="取消选择" onclick="not_Click()" /></td>
  455. </tr>
  456. <tr>
  457. <td style="vertical-align:top;" colspan="2">
  458. <div id="feeddiv" style="overflow-x: auto; overflow-y: auto; height:100px; width:99%;">
  459. <table cellspacing="1" cellpadding="0" border="0" style="width: 99%;">
  460. <c:forEach items="${list }" var="list">
  461. <tr><td algin="left"><input name="feedId" id="s${list.ID}" type="checkbox" value="${list.ID}"><label for="s${list.ID}"><c:out value="${list.NAME}" /></label></input></td></tr>
  462. </c:forEach>
  463. </table>
  464. </div>
  465. </td>
  466. </tr>
  467. </table>
  468. </div>
  469. </body>
  470. </html>