钟表维修管理系统技术解析(六) 数据统计
                        钟表维修管理系统技术解析(六) 数据统计通过统计维修单据,销售单据,采购单据的金额数据,对每年,每月,每日的金额进行统计,以图表的形式显示出来 
 
   2.6.1图(1) 
   
  2.6.1图(2) 
  
营业额统计查询界面用到的控件有: 
 登陆功能的实现: 第一步:数据库
   2.6.1图(3) 
   
表1:工单录入表(pw_GongDianLuRu)用于存放钟表录入的信息 
 表2:采购单(pw_CaiGouDan)
 表3:采购退货单单(pw_CaIGouTuiHuoDan)
 表4:销售单(pw_XiaoShouDan)
 表5:销售售后单(pw_XiaoShouShouHouDan)
 第二步:控制器(Controllers)
   2.6.1图(4) 
   
 Linq语法: /// <summary>
        /// 营业额统计
        /// </summary>
        /// <param name="Year">查询的年份</param>
        /// <param name="Month">查询的月份</param>
        /// <returns></returns>
        public ActionResult YingYeETongJi(string Year,string Month)
        {
            var MarketMoney = 0;//销售金额
            var ServiceMoney = 0;//维修结账金额
            var PurchaseMoney = 0;//采购金额
            var PurchaseReturnOfGoodsMoney = 0;//采购退货金额
            var MarketReturnOfGoodsMoney = 0;//销售退货金额
            var MarketExChangeMoneyMoney = 0;//销售换货金额
            var MarketGuaranteeMoney = 0;//销售保修金额
            var DateTimeData = Year;
            var Count = "12";
            var dtData = "";
            var dateCount = "";
            DataTable dt = new DataTable();
            dt.Columns.Add("d",typeof(string));
            dt.Columns.Add("visits",typeof(string));
            //判断是否查询月份
            if (Month != "" && Convert.ToInt32(Month.ToString().Trim()) > 0)
            {
                if (Convert.ToInt32(Month) < 10)
                {
                    Month = "0" + Month;
                }
                DateTimeData = DateTimeData + "-" + Month;
                Count = DateTime.DaysInMonth(Convert.ToInt32(Year),Convert.ToInt32(Month)).ToString();
            }
            //销售
            var Market = (from dtMarket in myMdl.pw_XiaoShouDan
                          where dtMarket.YouXiaoFou == true && dtMarket.FuKuanZhuangTaiID == 44
                          select dtMarket).AsEnumerable().Select(n => new
                          {
                              n.ShiShouJinE,XiaoShouRiQi = n.XiaoShouRiQi.Value.ToString("yyyy-MM-dd")
                          });
            //维修结账
            var Service = (from dtService in myMdl.pw_JieZhangQuBiao
                           where dtService.YouXiaoFou == true
                           select dtService).AsEnumerable().Select(n => new
                           {
                               n.ShiShouJinE,FuKuanRiQi = n.FuKuanRiQi.Value.ToString("yyyy-MM-dd")
                           });
            //采购
            var Purchase = (from dtPurchase in myMdl.pw_CaiGouDan
                            where dtPurchase.YouXiaoFou == true
                            select dtPurchase).AsEnumerable().Select(n => new
                            {
                                n.JinE,DaoHuoRiQi = n.DaoHuoRiQi.Value.ToString("yyyy-MM-dd")
                            });
            //采购退货
            var PurchaseReturnOfGoods = (from dtPurchaseReturnOfGoods in myMdl.pw_CaiGouTuiHuoDan
                                         where dtPurchaseReturnOfGoods.TuiKuanZhuangTai == "已退款" && dtPurchaseReturnOfGoods.YouXiaoFou == true
                                         select dtPurchaseReturnOfGoods).AsEnumerable().Select(n => new
                                         {
                                             n.JinE,GengXinRiQi = n.GengXinRiQi.Value.ToString("yyyy-MM-dd")
                                         });
            //销售退货单
            var MarketReturnOfGoods = (from dtMarketReturnOfGoods in myMdl.pw_XiaoShouShouHouDan
                                       where dtMarketReturnOfGoods.XiaoShouShouHouLeiXingID == 48 && dtMarketReturnOfGoods.YouXiaoFou == true
                                       select dtMarketReturnOfGoods).AsEnumerable().Select(n => new
                                       {
                                           n.JinE,RiQi = n.RiQi.Value.ToString("yyyy-MM-dd")
                                       });
            //销售换货单
            var MarketExChangeMoney = (from dtMarketExChangeMoney in myMdl.pw_XiaoShouShouHouDan
                                       where dtMarketExChangeMoney.XiaoShouShouHouLeiXingID == 49 && dtMarketExChangeMoney.YouXiaoFou == true
                                       select dtMarketExChangeMoney).AsEnumerable().Select(n => new
                                       {
                                           n.JinE,RiQi = n.RiQi.Value.ToString("yyyy-MM-dd")
                                       });
            //销售保修 
            var MarketGuarantee = (from dtMarketGuarantee in myMdl.pw_XiaoShouShouHouDan
                                   where dtMarketGuarantee.XiaoShouShouHouLeiXingID == 50 && dtMarketGuarantee.YouXiaoFou == true
                                   select dtMarketGuarantee).AsEnumerable().Select(n => new
                                   {
                                       n.JinE,RiQi = n.RiQi.Value.ToString("yyyy-MM-dd")
                                   });
            for (int i = 0; i < Convert.ToInt32(Count) + 1; i++)
            {
                if (Convert.ToInt32(i) < 10)
                {
                    dateCount = "0" + (i + 1).ToString();
                }
                else
                {
                    dateCount = i.ToString();
                }
                dtData = (DateTimeData + "-" + dateCount).ToString().Trim();
                MarketMoney = 0;//销售金额
                ServiceMoney = 0;//维修结账金额
                PurchaseMoney = 0;//采购金额
                PurchaseReturnOfGoodsMoney = 0;//采购退货金额
                MarketReturnOfGoodsMoney = 0;//销售退货金额
                MarketExChangeMoneyMoney = 0;//销售换货金额
                MarketGuaranteeMoney = 0;//销售保修金额
                DataRow dtRow = dt.Rows.Add();
                //销售
                Market = Market.Where(n => n.XiaoShouRiQi.Contains(dtData));
                foreach (var item in Market)
                {
                    MarketMoney += Convert.ToInt32(item.ShiShouJinE);
                }
                //维修结账
                Service = Service.Where(n => n.FuKuanRiQi.Contains(dtData));
                foreach (var item in Service)
                {
                    ServiceMoney += Convert.ToInt32(item.ShiShouJinE);
                }
                //采购
                Purchase = Purchase.Where(n => n.DaoHuoRiQi.Contains(dtData));
                foreach (var item in Purchase)
                {
                    PurchaseMoney += Convert.ToInt32(item.JinE);
                }
                //采购退货
                PurchaseReturnOfGoods = PurchaseReturnOfGoods.Where(n => n.GengXinRiQi.Contains(dtData));
                foreach (var item in PurchaseReturnOfGoods)
                {
                    PurchaseReturnOfGoodsMoney += Convert.ToInt32(item.JinE);
                }
                //销售退货单
                MarketReturnOfGoods = MarketReturnOfGoods.Where(n => n.RiQi.Contains(dtData));
                foreach (var item in MarketReturnOfGoods)
                {
                    MarketReturnOfGoodsMoney += Convert.ToInt32(item.JinE);
                }
                //销售换货单
                MarketExChangeMoney = MarketExChangeMoney.Where(n => n.RiQi.Contains(dtData));
                foreach (var item in MarketExChangeMoney)
                {
                    MarketExChangeMoneyMoney += Convert.ToInt32(item.JinE);
                }
                //销售保修 
                MarketGuarantee = MarketGuarantee.Where(n => n.RiQi.Contains(dtData));
                foreach (var item in MarketGuarantee)
                {
                    MarketGuaranteeMoney += Convert.ToInt32(item.JinE);
                }
                var Money = ServiceMoney + MarketMoney - PurchaseMoney + PurchaseReturnOfGoodsMoney - MarketReturnOfGoodsMoney + MarketExChangeMoneyMoney + MarketGuaranteeMoney;
                dtRow["d"] = dtData;
                dtRow["visits"] = Money;
            }
            List<Dictionary<string,object>> Listreturn = ConvertHelper.DtToList(dt);
            return Json(Listreturn,JsonRequestBehavior.AllowGet);
        }
 
 第三步、视图层(views)
   2.6.1图(5) 
   
 HTML代码: 
<div id="_revealloading"  class="reveal-loadding" style="display:block">
    <span class="loading" style="display:block">
    </span>
</div>
<br />
<table>
    <tr>
        <td style="width:50px"></td>
        <td><input type="text" id="Year" maxlength="4" onkeyup="value=value.replace(/[^d]/g,''); inputFullYear(this);" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))"/></td>
        <td><input type="text" id="Month" maxlength="2" onkeyup="value=value.replace(/[^d]/g,''); inputMonth(this);" onbeforepaste="clipboardData.setData('text',''))"/></td>
        <td><input type="button" class="goodButton1" onclick="onClickLoadData()" style="width:100px;height:26px;border:0" value="查询" /></td>
    </tr>
</table>
<br />
    <center>
        <div style="width:1130px">
        <div class="row">
              <div class="col-lg-12">
                <div class="panel panel-primary">
                  <div class="panel-heading">
                    <h3 class="panel-title"><i class="fa fa-bar-chart-o"></i>营业额统计</h3>
                  </div>
                  <div class="panel-body">
                    <div id="morris-chart-area"></div>
                  </div>
                </div>
              </div>
        </div>
    </div>
    </center>
 
 jQuery代码: var data = undefined;
    var nowDate = new Date();//实例化date
    $(document).ready(function () {
        $("#Month").val(nowDate.getMonth() + 1)//绑定当前月份
        $("#Year").val(nowDate.getFullYear()); //绑定当前年份
        onClickLoadData();
        $('#Year').keydown(function (e) {
            if (e.keyCode == 13) {//键盘回车事件,触发查询功能
                onClickLoadData()
            }
        });
        $('#Month').keydown(function (e) {
            if (e.keyCode == 13) {//键盘回车事件,触发查询功能
                onClickLoadData()
            }
        });
    });
    function onClickLoadData() {
    //打开进度条
        $("#_revealloading").css("display","block");
        //通过ajax进行查询
        $.ajax({
            type: 'post',url: '/ShuJuBiaoGe/YingYeETongJi?Year=' + $("#Year").val() + '&Month=' + $("#Month").val(),success: function (requiredata) {
            //查询成功,返回数据
                data = requiredata;
                document.getElementById('morris-chart-area').innerHTML = ""; //清空插件的数据,否则数据会出现重复现象,图像重叠
                //为图表插件绑定数据
                Morris.Area({
                    element: 'morris-chart-area',data: data,xkey: 'd',ykeys: ['visits'],labels: ['金额(RMB)'],smooth: false
                });
                //关闭进度条
                $("#_revealloading").css("display","none");
            }
        });
    }
    function inputMonth(event) {
        if (event.value>12) {//限制月份不能输入超出12的数
            alert("月份数不能大于12!");
            $("#Month").val(nowDate.getMonth() + 1);
        }
    }
    function inputFullYear(event) {
        if (event.value > nowDate.getFullYear()) {//限制年份输入不能超出当前时间年份
            alert("年份数不能大于当前时间年份!");
            $("#Year").val(nowDate.getFullYear());
        }
    }
 
  
  该资料仅供学习,禁止用于商业用途 
     
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
