private void btn计算工作情况_Click(object sender, EventArgs e) { var _List原始数据 = new List <_库位明细信息>(); var _List统计时间内的数据 = new List <_库位明细信息>(); var settime = dtp截至时间.Value; #region 读取数据 var actReadData = new Action(() => { var strError = string.Empty; ShowMsg("开始读取紧急单数据"); FormHelper.ReadCSVFile(txt紧急单.Text, ref _List原始数据, ref strError); #region 过滤截至时间之后的数据 if (_List原始数据.Count > 0) { for (int idx = _List原始数据.Count - 1; idx >= 0; idx--) { var curData = _List原始数据[idx]; if (!string.IsNullOrWhiteSpace(curData._内部标签)) { var strArr = curData._内部标签.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); if (strArr.Length >= 3) { var strTime = strArr[2].Substring(0, 8); var cTime = Convert.ToDateTime(string.Format("{0} {1}", DateTime.Now.ToString("yyyy-MM-dd"), strTime)); if (cTime <= settime) { _List统计时间内的数据.Add(curData); } } } } } #endregion }); #endregion #region 处理数据 actReadData.BeginInvoke((obj) => { ShowMsg("紧急单数据读取完毕,即将开始计算"); var _采购员姓名List = _List原始数据.Where(x => !string.IsNullOrWhiteSpace(x._采购员)).Select(x => x._采购员).Distinct().ToList(); var _list统计结果 = new List <_统计结果>(); if (_采购员姓名List.Count > 0) { _采购员姓名List.ForEach(name => { //if (name == "唐汉成") //{ //} var referAllDatas = _List原始数据.Where(x => x._采购员 == name).ToList(); var referInTimeDatas = _List统计时间内的数据.Where(x => x._采购员 == name).ToList(); var list统计时间内的紧急订单 = referInTimeDatas.Where(x => x._备注.Contains("紧急")).ToList(); var list统计时间内的完成订单 = referInTimeDatas.Where(x => x._内部标签.Contains("付")).ToList(); var mode = new _统计结果(); mode._采购员 = name; mode._紧急订单数 = referAllDatas.Select(x => x._采购订单号).Distinct().Count(); mode._完成订单数 = list统计时间内的完成订单.Select(x => x._采购订单号).Distinct().Count(); mode._异常订单 = referInTimeDatas.Where(x => x._备注.Contains("标") || x._备注.Contains("缺")).Select(x => x._采购订单号).Distinct().Count(); mode._紧急单SKU个数 = referAllDatas.Select(x => x.SKU).Distinct().Count(); mode._完成SKU个数 = list统计时间内的完成订单.Select(x => x.SKU).Distinct().Count(); var d订单完成占比 = mode._紧急订单数 - mode._异常订单 > 0 ? Math.Round(mode._完成订单数 * 1.0m / (mode._紧急订单数 - mode._异常订单), 4) : 0; mode._订单完成占比 = d订单完成占比; mode._SKU完成占比 = mode._紧急单SKU个数 > 0 ? Math.Round(mode._完成SKU个数 * 1.0m / mode._紧急单SKU个数, 4) : 0; _list统计结果.Add(mode); }); } ExportExcel(_list统计结果); }, null); #endregion }
private void btn合并_Click(object sender, EventArgs e) { var pathStr = txtPath.Text; if (!string.IsNullOrWhiteSpace(pathStr)) { btn浏览.Enabled = false; btn合并.Enabled = false; var paths = pathStr.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); var list = new List <_退款数据>(); var result = new List <_统计结果>(); #region 读取数据 var actReadData = new Action(() => { ShowMsg("正在读取数据,请稍等"); foreach (var path in paths) { using (var excel = new ExcelQueryFactory(path)) { var qs = from c in excel.Worksheet <_退款数据>() select c; list.AddRange(qs); } } }); #endregion #region 处理数据 actReadData.BeginInvoke((obj) => { ShowMsg("正在处理数据,请稍等"); foreach (var item in list) { var bExist = false; for (int idx = result.Count - 1; idx >= 0; idx--) { var rsItem = result[idx]; if (rsItem._卖家简称 == item._卖家简称 && rsItem._物流方式 == item._物流方式 && rsItem._月份 == item._月份 && rsItem._交易国家 == item._交易国家) { rsItem._发货++; if (item._已退款) { rsItem._退款++; } bExist = true; break; } } if (!bExist) { var mode = new _统计结果(); mode._卖家简称 = item._卖家简称; mode._物流方式 = item._物流方式; mode._月份 = item._月份; mode._交易国家 = item._交易国家; mode._发货 = 1; mode._退款 = item._已退款 ? 1 : 0; result.Add(mode); } } ShowMsg("即将导出表格"); Export_合并汇总(result); }, null); #endregion } }