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