Пример #1
0
        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;
            }
        }
Пример #2
0
        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("库位人员配置为空,请先上传库位人员配置", "温馨提示");
            }
        }