图表

前台

 

@{
    ViewBag.Title = "";
    Layout = "~/Views/Shared/ExtJs_Layout.cshtml";
}
@section script{




<script type="text/javascript">

    Ext.require('Ext.chart.*');
    Ext.require(['Ext.Window', 'Ext.fx.target.Sprite', 'Ext.layout.container.Fit', 'Ext.window.MessageBox']);

    Ext.onReady(function () {
        var textArea;



       
        Ext.define('User', {
            extend: 'Ext.data.Model',
            fields: [
                { name: 'name', type: 'string' },
                { name: 'data1', type: 'int' }
            ]
        });

        window.store1 = Ext.create('Ext.data.Store', {
            model: 'User',
            proxy: {
                type: 'ajax',
                url: '/api/Anm/DeathStatistics/GetEnable',
                reader: {
                    type: 'json'
                }
            },
            autoLoad: true
        });




        Ext.define('Ext.chart.theme.CustomBlue', {
            extend: 'Ext.chart.theme.Base',

            constructor: function (config) {
                var titleLabel = {
                    font: 'bold 18px Arial'
                }, axisLabel = {
                    fill: 'rgb(8,69,148)',
                    font: '12px Arial',
                    spacing: 2,
                    padding: 5
                };

                this.callParent([Ext.apply({
                    axis: {
                        stroke: '#084594'
                    },
                    axisLabelLeft: axisLabel,
                    axisLabelBottom: axisLabel,
                    axisTitleLeft: titleLabel,
                    axisTitleBottom: titleLabel
                }, config)]);
            }
        });

        var chart = Ext.create('Ext.chart.Chart', {
            animate: true,
            shadow: true,
            store: store1,
            axes: [{
                type: 'Numeric',
                position: 'bottom',
                fields: ['data1'],
                label: {
                    renderer: Ext.util.Format.numberRenderer('0,0')
                },
                title: 'Number of Hits',
                grid: true,
                minimum: 0
            }, {
                type: 'Category',
                position: 'left',
                fields: ['name'],
                title: 'Month of the Year'
            }],
            theme: 'CustomBlue',
            background: {
                gradient: {
                    id: 'backgroundGradient',
                    angle: 45,
                    stops: {
                        0: {
                            color: '#ffffff'
                        },
                        100: {
                            color: '#eaf1f8'
                        }
                    }
                }
            },
            series: [{
                type: 'bar',
                axis: 'bottom',
                highlight: true,
                tips: {
                    trackMouse: true,
                    width: 140,
                    height: 28,
                    renderer: function (storeItem, item) {
                        this.setTitle(storeItem.get('name') + ': ' + storeItem.get('data1') + ' views');
                    }
                },
                label: {
                    display: 'insideEnd',
                    field: 'data1',
                    renderer: Ext.util.Format.numberRenderer('0'),
                    orientation: 'horizontal',
                    color: '#333',
                    'text-anchor': 'middle'
                },
                xField: 'name',
                yField: ['data1']
            }]
        });

        var win = Ext.create('Ext.window.Window', {
            width: 800,
            height: 600,
            minHeight: 400,
            minWidth: 550,
            hidden: false,
            maximizable: true,
            title: 'Bar Chart',
            autoShow: true,
            layout: 'fit',
            tbar: [{
                text: 'Save Chart',
                handler: function () {
                    Ext.MessageBox.confirm('Confirm Download', 'Would you like to download the chart as an image?', function (choice) {
                        if (choice == 'yes') {
                            chart.save({
                                type: 'image/png'
                            });
                        }
                    });
                }
            }, {
                text: 'Reload Data',
                handler: function () {
                    // Add a short delay to prevent fast sequential clicks
                    window.loadTask.delay(100, function () {
                        store1.loadData(generateData());
                    });
                }
            }],
            items: chart
        });
    });

</script>


}

    
    
    
    

控制器

using System.Collections.Generic;
using System.Web.Mvc;
using NXT.Models;
using System.Text;
using System.Net.Http;
using System.Web.Script.Serialization;
using System.Web.Http;


namespace NXT.Areas.Anm.Controllers
{
    public class DeathStatisticsController : Controller//新建一个控制器类
    {            
        public ActionResult Index()//显示前台页面的方法
        {           
            return View();//显示前台页面
        }    
}

    public class DeathStatisticsApiController : ApiController//新建一个api类
    {

        [System.Web.Http.HttpGet]//打开网络
        public HttpResponseMessage PostDeath()//封装一个方法
        {
            bus_RFIDService sysuser = new bus_RFIDService();//调用一个类
            List<DataMode> list = sysuser.GetDeath();//调用类里的方法,模型传来的数据
            JavaScriptSerializer serializer = new JavaScriptSerializer();//调用一个类
            string str = serializer.Serialize(list);//调用类里的方法,把模型传来的数据进行处理
            HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(str, Encoding.GetEncoding("UTF-8"), "application/json") };//新建一个类并调用其中的方法
            return result;//返回json,前台js请求这个控制器,控制器会返回给js一个json
        }

        public HttpResponseMessage GetEnable()//封装一个方法
        {
            bus_RFIDService sysuser = new bus_RFIDService();//调用一个类

            List<DataMode> list = sysuser.GetUse();//调用类里的方法,模型传来的数据,修改
            
            JavaScriptSerializer serializer = new JavaScriptSerializer();//调用一个类
            string str = serializer.Serialize(list);//调用类里的方法,把模型传来的数据进行处理
            HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(str, Encoding.GetEncoding("UTF-8"), "application/json") };//新建一个类并调用其中的方法
            return result;//返回json,前台js请求这个控制器,控制器会返回给js一个json
        }


        public HttpResponseMessage GetOuts()//封装一个方法
        {
            bus_RFIDService sysuser = new bus_RFIDService();//调用一个类

            List<DataMode> list = sysuser.GetOut();//调用类里的方法,模型传来的数据,修改

            JavaScriptSerializer serializer = new JavaScriptSerializer();//调用一个类
            string str = serializer.Serialize(list);//调用类里的方法,把模型传来的数据进行处理
            HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(str, Encoding.GetEncoding("UTF-8"), "application/json") };//新建一个类并调用其中的方法
            return result;//返回json,前台js请求这个控制器,控制器会返回给js一个json
        }


        public HttpResponseMessage GetWeeks()//封装一个方法
        {
            bus_RFIDService sysuser = new bus_RFIDService();//调用一个类

            List<DataMode> list = sysuser.GetWeek();//调用类里的方法,模型传来的数据,修改

            JavaScriptSerializer serializer = new JavaScriptSerializer();//调用一个类
            string str = serializer.Serialize(list);//调用类里的方法,把模型传来的数据进行处理
            HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(str, Encoding.GetEncoding("UTF-8"), "application/json") };//新建一个类并调用其中的方法
            return result;//返回json,前台js请求这个控制器,控制器会返回给js一个json
        }

        public HttpResponseMessage GetAlls()//封装一个方法
        {
            bus_RFIDService sysuser = new bus_RFIDService();//调用一个类

            List<DataMode> list = sysuser.GetAll();//调用类里的方法,模型传来的数据,修改

            JavaScriptSerializer serializer = new JavaScriptSerializer();//调用一个类
            string str = serializer.Serialize(list);//调用类里的方法,把模型传来的数据进行处理
            HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(str, Encoding.GetEncoding("UTF-8"), "application/json") };//新建一个类并调用其中的方法
            return result;//返回json,前台js请求这个控制器,控制器会返回给js一个json
        }

        public HttpResponseMessage GetSums()//封装一个方法
        {
            bus_RFIDService sysuser = new bus_RFIDService();//调用一个类

            List<DataMode> list = sysuser.GetSum();//调用类里的方法,模型传来的数据,修改

            JavaScriptSerializer serializer = new JavaScriptSerializer();//调用一个类
            string str = serializer.Serialize(list);//调用类里的方法,把模型传来的数据进行处理
            HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(str, Encoding.GetEncoding("UTF-8"), "application/json") };//新建一个类并调用其中的方法
            return result;//返回json,前台js请求这个控制器,控制器会返回给js一个json
        }


    }

}

后台

using System;
using System.Collections.Generic;
using System.Text;
using NXT.Core;

namespace NXT.Models
{
    [Module("Anm")]
    public class bus_RFIDService : ServiceBase<bus_RFID>
    {


        public dynamic GetAmountPen()
        {
            var result = db.Sql("select pen_name as name,count(R.RFID_id) as data1 from dbo.bus_RFID R join dbo.bas_pen P on R.bas_pen_id=P.bas_pen_id group by pen_name").QueryMany<DataMode>(); ;
            return result;
        }

        
        public dynamic GetDeath()
        {
            var data = db.Sql("select ' 死亡羊数' as name, COUNT(*) data1 from bus_RFID where isdead = 'True' union select '未死亡羊数' as name ,COUNT(*) data1 from bus_RFID where isdead = 'False'  ").QueryMany<DataMode>(); ;
            return data;
        }

        public dynamic GetUse()
        {
            var use = db.Sql(" select '1月份' as name, COUNT(*) as data1 from bus_RFID where MONTH(introduce_time) = '1' union select '2月份' as name,COUNT(*) as data2 from bus_RFID where MONTH(introduce_time) = '2' union select '3月份' as name,COUNT(*) as data3 from bus_RFID where MONTH(introduce_time) = '3' union select '4月份' as name,COUNT(*) as data4 from bus_RFID where MONTH(introduce_time) = '4' union select '5月份' as name,COUNT(*) as data5 from bus_RFID where MONTH(introduce_time) = '5' union select '6月份' as name,COUNT(*) as data6 from bus_RFID where MONTH(introduce_time) = '6' union select '7月份' as name,COUNT(*) as data7 from bus_RFID where MONTH(introduce_time) = '7' union select '8月份' as name,COUNT(*) as data8 from bus_RFID where MONTH(introduce_time) = '8' union select '9月份' as name,COUNT(*) as data9 from bus_RFID where MONTH(introduce_time) = '9' union  select '10月份' as name,COUNT(*) as data10 from bus_RFID where MONTH(introduce_time) = '10' union select '11月份' as name,COUNT(*) as data11 from bus_RFID where MONTH(introduce_time) = '11' union select '12月份' as name,COUNT(*) as data12 from bus_RFID where MONTH(introduce_time) = '12'").QueryMany<DataMode>();
            //var use = db.Sql("select ' 可用羊数' as name, COUNT(*) data1 from bus_RFID where isenable = 'True' union select '不可用羊数' as name ,COUNT(*) data1 from bus_RFID where isenable = 'False' ").QueryMany<DataMode>();
            return use;
        
        }

        public dynamic GetOut()
        { 
            var outs = db.Sql("select '出栏羊数' as name, COUNT(*) data1 from bus_RFID where isout = 'True' union select '未出栏羊数' as name ,COUNT(*) data1 from bus_RFID where isout = 'False' ").QueryMany<DataMode>();
            return outs;
        }


        public dynamic GetWeek()
        {
            var week = db.Sql("select '淘汰羊数' as name, COUNT(*) data1 from bus_RFID where isweekout = 'True' union select '未淘汰羊数' as name ,COUNT(*) data1 from bus_RFID where isweekout = 'False'  ").QueryMany<DataMode>();
            return week;
        }


        public dynamic GetAll()
        {
            var week = db.Sql("select ' 死亡羊数' as name, COUNT(*) data1 from bus_RFID where isdead = 'True' union select '不可用羊数' as name ,COUNT(*) data1 from bus_RFID where isenable = 'True' union select '出栏羊数' as name, COUNT(*) data1 from bus_RFID where isout = 'True' union select '淘汰羊数' as name, COUNT(*) data1 from bus_RFID where isweekout = 'True' ").QueryMany<DataMode>();
            return week;
        }

        public dynamic GetSum()
        {
            var sum = db.Sql("select ' 死亡羊数' as name, COUNT(*) data1 from bus_RFID where isdead = 'True' union select '不可用羊数' as name ,COUNT(*) data1 from bus_RFID where isenable = 'True' union select '出栏羊数' as name, COUNT(*) data1 from bus_RFID where isout = 'True' union select '淘汰羊数' as name, COUNT(*) data1 from bus_RFID where isweekout = 'True' union select '总数' as name,COUNT(*) data1 from bus_RFID  ").QueryMany<DataMode>();
            return sum;
        }



    }


    public class DataMode
    {
        public string name { get; set; }
        public int data1 { get; set; }
                    
    }
    public class bus_RFID : ModelBase
    {
        [PrimaryKey]   
        public string RFID_id { get; set; }
        public string male_RFID { get; set; }
        public string female_RFID { get; set; }
        public string bas_pen_id { get; set; }
        //public string FRID_note { get; set; }
        public string breed { get; set; }
        public string sex { get; set; }
        public string purpose { get; set; }
        public string introduce_source { get; set; }
        public DateTime introduce_time { get; set; }
        public DateTime birthday { get; set; }
        public string note { get; set; }
        public bool isdead { get; set; }
        public bool isenable { get; set; }
        public bool isout { get; set; }
        public bool isweekout { get; set; }
        public double introduce_weight { get; set; }
        public string grade { get; set; }

        public string ApproveState { get; set; }
        public string ApprovePerson { get; set; }
        public DateTime? ApproveDate { get; set; }
        public string ApproveRemark { get; set; }
    }
}

 

转载于:https://www.cnblogs.com/hellowzd/p/4355676.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值