private void btn全月绩效_Click(object sender, EventArgs e) { var folder = Path.Combine(Folder拣货绩效, MonthFlag); var cacheFiles = Directory.EnumerateFiles(Path.Combine(Folder拣货绩效, MonthFlag)); if (cacheFiles != null && cacheFiles.Count() > 0) { btn全月绩效.Enabled = false; var list = new List <_配货绩效结果>(); foreach (var item in cacheFiles) { using (var fs = new StreamReader(item, Encoding.UTF8)) { var json = fs.ReadToEnd(); list.AddRange(JsonConvert.DeserializeObject <List <_配货绩效结果> >(json)); } } var datas = new List <_配货绩效结果>(); var expNames = list.Select(x => x._业绩归属人).Distinct().ToList(); expNames.ForEach(n => { if (!string.IsNullOrWhiteSpace(n)) { var md = new _配货绩效结果(); md._业绩归属人 = n; var defaultItem = list[0]; md._d张数占比 = defaultItem._d张数占比; md._d张数定值 = defaultItem._d张数定值; md._d数量占比 = defaultItem._d数量占比; md._d数量定值 = defaultItem._d数量定值; md._购买总数量_正常 = list.Where(x => x._业绩归属人 == n).Select(x => x._购买总数量_正常).Sum(); md._拣货单张数_正常 = list.Where(x => x._业绩归属人 == n).Select(x => x._拣货单张数_正常).Sum(); md._购买总数量_乱单 = list.Where(x => x._业绩归属人 == n).Select(x => x._购买总数量_乱单).Sum(); md._拣货单张数_乱单 = list.Where(x => x._业绩归属人 == n).Select(x => x._拣货单张数_乱单).Sum(); md._分钟 = list.Where(x => x._业绩归属人 == n).Select(x => x._分钟).Sum(); md._总时长 = list.Where(x => x._业绩归属人 == n).Select(x => x._小时).Sum().ToString(); md._帮忙总时长 = list.Where(x => x._业绩归属人 == n).Select(x => Convert.ToDecimal(x._帮忙总时长)).Sum().ToString(); //var mm = md._分钟 % 60; //var hh = (md._分钟 - mm) / 60; //md._总时长 = string.Format("{0}:{1}:00", hh > 9 ? "" + hh : "0" + hh, mm > 9 ? "" + mm : "0" + mm); datas.Add(md); } }); ExportExcel(datas); btn全月绩效.Enabled = true; } }
private void btn当天绩效_Click(object sender, EventArgs e) { if (_人员负责库位信息 != null && _人员负责库位信息.Count > 0) { try { double _d张数定值 = Convert.ToDouble(nup张数定值.Value); double _d张数占比 = Convert.ToDouble(nup张数占比.Value); double _d数量定值 = Convert.ToDouble(nup数量定值.Value); double _d数量占比 = Convert.ToDouble(nup数量占比.Value); CulcTime = dtp绩效时间.Value; btn当天绩效.Enabled = false; btn全月绩效.Enabled = false; var strError = string.Empty; var list拣货单 = new List <_拣货单>(); var list乱单 = new List <_乱单>(); var list最终绩效 = new List <_配货绩效结果>(); #region 读取数据 var actReadData = new Action(() => { ShowMsg("开始读取当天绩效相关信息"); FormHelper.ReadCSVFile(txt拣货单.Text, ref list拣货单, ref strError); FormHelper.ReadCSVFile(txt乱单.Text, ref list乱单, ref strError); //将乱单转换正常拣货单 foreach (var item乱单 in list乱单) { //var aaa = item乱单.ToData(); list拣货单.AddRange(item乱单.ToData()); } }); #endregion #region 处理数据 actReadData.BeginInvoke((obj) => { ShowMsg("绩效数据读取完毕,即将开始计算"); if (list拣货单.Count > 0) { var allEmpNames = _人员负责库位信息.Select(x => x._姓名).Distinct().ToList(); allEmpNames.ForEach(name => { if (!string.IsNullOrEmpty(name)) { //if (name.Trim()== "魏婷") //{ //} var md = new _配货绩效结果(); md._d张数占比 = _d张数占比; md._d张数定值 = _d张数定值; md._d数量定值 = _d数量定值; md._d数量占比 = _d数量占比; md._业绩归属人 = name; var _订单详情数据 = new List <_订单详情数据>(); #region 抽取详细信息 { //var aarrr = (from it in list拣货单 // join s in _人员负责库位信息 on it._库位号 equals s.管理库位 // where s._姓名 == name && it._乱单 == true // select it).ToList(); //if (aarrr.Count > 0) //{ //} var refLh = (from it in list拣货单 join s in _人员负责库位信息 on it._库位号 equals s.管理库位 where s._姓名 == name select it).ToList(); foreach (var deitem in refLh) { var item = deitem._拣货明细; foreach (var it in item) { var arr = it.Split(new string[] { "*" }, StringSplitOptions.RemoveEmptyEntries); if (arr.Length >= 2) { var detail = new _订单详情数据(); detail.SKU = arr[0].Trim(); detail.Amount = Convert.ToDouble(arr[1]); detail._乱单 = deitem._乱单; _订单详情数据.Add(detail); } } } //foreach (List<string> item in refLh) //{ // foreach (var it in item) // { // var arr = it.Split(new string[] { "*" }, StringSplitOptions.RemoveEmptyEntries); // if (arr.Length >= 2) // { // var detail = new _订单详情数据(); // detail.SKU = arr[0].Trim(); // detail.Amount = Convert.ToDouble(arr[1]); // //detail._乱单= // _订单详情数据.Add(detail); // } // } //} } #endregion var list订单详情数据_拣货单 = _订单详情数据.Where(x => x._乱单 == false).ToList(); var list订单详情数据_乱单 = _订单详情数据.Where(x => x._乱单 == true).ToList(); var str_帮忙总时长 = ""; var refTime = calc计算上班时间(CulcTime, name, ref str_帮忙总时长); md._拣货单张数_正常 = list订单详情数据_拣货单.Select(x => x.SKU).Distinct().Count(); md._购买总数量_正常 = list订单详情数据_拣货单.Select(x => x.Amount).Sum(); md._拣货单张数_乱单 = list订单详情数据_乱单.Select(x => x.SKU).Distinct().Count(); md._购买总数量_乱单 = list订单详情数据_乱单.Select(x => x.Amount).Sum(); //md._拣货单张数 = _订单详情数据.Select(x => x.SKU).Distinct().Count(); //md._购买总数量 = _订单详情数据.Select(x => x.Amount).Sum(); //if (refTime != null) //{ //refTime.CulcTime = CulcTime; //var mm = refTime._拣货总时间.TotalMinutes % 60; //var hh = (refTime._拣货总时间.TotalMinutes - mm) / 60; md._总时长 = refTime.ToString(); md._帮忙总时长 = str_帮忙总时长; md._分钟 = Convert.ToDouble(refTime * 60); //} list最终绩效.Add(md); } }); if (list最终绩效.Count > 0) { ShowMsg("开始存储当天绩效"); Cache当天绩效(list最终绩效); ShowMsg("当天绩效存储完毕"); ExportExcel(list最终绩效); } } ShowMsg(strError); }, null); #endregion } catch (Exception ex) { ShowMsg(ex.Message); } } else { MessageBox.Show("库位人员配置为空,请先上传库位人员配置", "温馨提示"); } }