钟表维修管理系统技术解析(六) 数据统计
钟表维修管理系统技术解析(六) 数据统计通过统计维修单据,销售单据,采购单据的金额数据,对每年,每月,每日的金额进行统计,以图表的形式显示出来
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()); } }
该资料仅供学习,禁止用于商业用途
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |