private void btnAnalyze_Click(object sender, EventArgs e) { var d销量差 = nup上下半月销量差.Value; var list建议采购 = new List <_建议采购>(); //var list下半月流水 = new List<_下半月流水>(); //var list下半月流水详细 = new List<KeyValuePair<string, decimal>>(); #region 读取数据 var actReadData = new Action(() => { var strError = string.Empty; ShowMsg("开始读取建议采购数据"); FormHelper.ReadCSVFile <_建议采购>(txt建议采购.Text, ref list建议采购, ref strError); ShowMsg(strError); }); #endregion #region 处理数据 actReadData.BeginInvoke((obj) => { var list订单分配 = new List <_订单分配>(); var list分析详情 = new List <_分析详情>(); list建议采购.ForEach(_建议采购Item => { var model = new _订单分配(); model._SKU = _建议采购Item.SKU; model._供应商 = _建议采购Item._供应商; model._采购员 = _建议采购Item._采购员; model._制单人 = _建议采购Item._采购员; model._含税单价 = _建议采购Item._商品成本单价; //输入销量差,获取建议采购数量 _建议采购Item._销量差 = d销量差; model._Qty = _建议采购Item._建议采购数量; #region 销量分析详情 { var detailModel = new _分析详情(); detailModel._SKU = _建议采购Item.SKU; detailModel._建议采购数量 = _建议采购Item._建议采购数量; detailModel._如果按之前的算法建议采购数量 = _建议采购Item._如果按之前的算法建议采购数量; detailModel._普源_建议采购数量 = _建议采购Item._普源_建议采购数量; detailModel._销量是否上升 = _建议采购Item._销量是否上升; detailModel._以5天乘以3对比15天销量上升的量 = _建议采购Item._销量是否上升 ? _建议采购Item._5天销量 * 3 - _建议采购Item._15天销量 : 0; list分析详情.Add(detailModel); } #endregion if (model._Qty > 0) { list订单分配.Add(model); } }); ExportExcel(list订单分配.OrderByDescending(x => x._供应商).ToList(), list分析详情.OrderByDescending(x => x._普源_建议采购数量).ToList()); }, null); #endregion }
private void btnAnalyze_Click(object sender, EventArgs e) { var d销量差 = nup上下半月销量差.Value; var list建议采购 = new List <_建议采购>(); //var list下半月流水 = new List<_下半月流水>(); //var list下半月流水详细 = new List<KeyValuePair<string, decimal>>(); #region 读取数据 var actReadData = new Action(() => { var strError = string.Empty; ShowMsg("开始读取建议采购数据"); FormHelper.ReadCSVFile <_建议采购>(txt建议采购.Text, ref list建议采购, ref strError); ShowMsg(strError); }); #endregion #region 处理数据 actReadData.BeginInvoke((obj) => { var list销量差降详情 = new List <_销量差降详情>(); var list异常单详情 = new List <_异常单详情>(); var list订单分配 = new List <_订单分配>(); var list处理对比表 = new List <_处理对比表>(); list建议采购.ForEach(_建议采购Item => { var model = new _订单分配(); model._SKU = _建议采购Item.SKU; model._供应商 = _建议采购Item._供应商; model._采购员 = _建议采购Item._采购员; model._制单人 = _建议采购Item._采购员; model._含税单价 = _建议采购Item._商品成本单价; //输入销量差,获取建议采购数量 _建议采购Item._销量差 = d销量差; var _d异常单销量和 = 0m; if (_建议采购Item._上下半月销量差 >= d销量差) { var DifModel = new _销量差降详情(); //if (_建议采购Item.SKU=="MVPA1C47") //{ //} DifModel.SKU = _建议采购Item.SKU; DifModel._上半月销量 = _建议采购Item._上半月销量; DifModel._下半月销量 = _建议采购Item._下半月销量; list销量差降详情.Add(DifModel); var ComModel = new _处理对比表(); ComModel.SKU = _建议采购Item.SKU; ComModel._原建议采购数量 = _建议采购Item._如果按之前的算法建议采购数量; ComModel._处理后建议采购数量 = _建议采购Item._建议采购数量 - _d异常单销量和; if (ComModel._差值 != 0) { list处理对比表.Add(ComModel); } } model._Qty = _建议采购Item._建议采购数量 - _d异常单销量和; if (model._Qty > 0) { list订单分配.Add(model); } }); ExportExcel(list订单分配.OrderByDescending(x => x._供应商).ToList() , list销量差降详情.OrderByDescending(x => x._销量差).ToList() , list异常单详情, list处理对比表.OrderByDescending(x => x._差值).ToList()); }, null); #endregion }
private void btnAnalyze_Click(object sender, EventArgs e) { btnAnalyze.Enabled = false; var list备货信息 = new List <_备货信息>(); #region 读取数据 var actReadData = new Action(() => { ShowMsg("开始读取销量差明细数据"); #region 读取销量差明细 { var strCsvPath = txt销量差明细.Text; if (!string.IsNullOrEmpty(strCsvPath)) { using (var csv = new ExcelQueryFactory(strCsvPath)) { try { var tmp = from c in csv.Worksheet <_备货信息>() select c; list备货信息.AddRange(tmp); } catch (Exception ex) { ShowMsg(ex.Message); } } } } #endregion ShowMsg("开始读取建议备货数据"); #region 读取建议备货 { var strCsvPath = txt建议备货明细.Text; if (!string.IsNullOrEmpty(strCsvPath)) { using (var csv = new ExcelQueryFactory(strCsvPath)) { try { var tmp = from c in csv.Worksheet <_备货信息>() select c; list备货信息.AddRange(tmp); } catch (Exception ex) { ShowMsg(ex.Message); } } } } #endregion }); #endregion #region 处理数据 actReadData.BeginInvoke((obj) => { var list订单分配 = new List <_订单分配>(); list备货信息.ForEach(cur备货Item => { var model = new _订单分配(); model._SKU = cur备货Item.SKU; model._供应商 = cur备货Item._供应商; model._含税单价 = cur备货Item._含税单价; model._Qty = cur备货Item._建议备货数量; model._采购员 = cur备货Item._采购员; model._制单人 = cur备货Item._制单员; if (cur备货Item._建议备货数量 > 0) { list订单分配.Add(model); } }); ExportExcel(list订单分配); }, null); #endregion }
private void btn处理数据_Click(object sender, EventArgs e) { var list库存预警原表 = new List <_库存预警_原表>(); var list库存预警中位数 = new List <_库存预警_中位数>(); var list每月流水 = new List <_每月流水>(); var list两表都有的SKUs = new List <string>(); var list处理结果 = new List <_订单分配>(); var list7_9_11三段中位数 = new List <_库存预警_7_9_11_三段中位数>(); var list7_9_11三段平均数 = new List <_库存预警_7_9_11_三段平均数>(); #region 读取数据 var actReadData = new Action(() => { var strError = string.Empty; ShowMsg("开始读取预警原表数据"); FormHelper.ReadCSVFile(txt库存预警原表.Text, ref list库存预警原表, ref strError); ShowMsg("开始读取预警中位数表数据"); FormHelper.ReadCSVFile(txt库存预警中位数.Text, ref list库存预警中位数, ref strError); ShowMsg("开始读取每月流水数据"); FormHelper.ReadCSVFile(txt每月流水.Text, ref list每月流水, ref strError); ShowMsg("开始过滤每月流水中不需要的数据"); //过滤掉流水表里面不需要的sku数据,因为改表太大 var sku_yb = list库存预警原表.Select(x => x.SKU).ToList(); var sku_zw = list库存预警中位数.Select(x => x.SKU).ToList(); var q = from t1 in sku_yb join t2 in sku_zw on t1 equals t2 select t1; list两表都有的SKUs = q.ToList(); sku_yb.AddRange(sku_zw); var sku_all = sku_yb.Select(x => x).Distinct().ToList(); list每月流水 = list每月流水.Where(x => sku_all.Contains(x.SKU)).ToList(); }); #endregion #region 处理数据 actReadData.BeginInvoke((obj) => { #region 从库存流水里面统计库存预警中位数 for (int idx = list库存预警中位数.Count - 1; idx >= 0; idx--) { var curData = list库存预警中位数[idx]; var refer流水情况 = list每月流水.FirstOrDefault(x => x.SKU == curData.SKU); if (refer流水情况 != null) { //if (refer流水情况.SKU == "LGDC1C03-1B") //{ //} #region 近5-15-30天中位数 { curData._5天中位数 = Calcu中位数(refer流水情况._月销量流水.Take(5).ToList(), 2); curData._15天中位数 = Calcu中位数(refer流水情况._月销量流水.Take(15).ToList(), 7); var sorts = refer流水情况._月销量流水.OrderBy(x => x).ToList(); curData._30天中位数 = Math.Round((sorts[14] + sorts[15]) * 1m / 2, 2); } #endregion //#region 近7-9-11三段中位数 //{ // var model = new _库存预警_7_9_11_三段中位数(); // model.SKU = curData.SKU; // model._7天中位数 = Calcu中位数(refer流水情况._月销量流水.Take(7).ToList(), 3); // model._9天中位数 = Calcu中位数(refer流水情况._月销量流水.Take(9).ToList(), 4); // model._11天中位数 = Calcu中位数(refer流水情况._月销量流水.Take(11).ToList(), 5); // list7_9_11三段中位数.Add(model); //} //#endregion //#region 近7-9-11三段中日平均销量 //{ // var model = new _库存预警_7_9_11_三段平均数(); // model._7天总销量 = refer流水情况._月销量流水.Take(7).Sum(); // model._9天总销量 = refer流水情况._月销量流水.Take(9).Sum(); // model._11天总销量 = refer流水情况._月销量流水.Take(11).Sum(); // list7_9_11三段平均数.Add(model); //} //#endregion } } #endregion /* * 建议采购量以库存预警-中位数为主,但是需要修改以下条件: *(1)如果建议采购量 和 预计可用数量 一致或者差不多(建议采购量刚好够补缺货订单),那么建议采购最终数量= * (库存预警建议采购量+库存预警中位数建议采购量)/2 *(2)当库存预警建议采购量<库存预警中位数建议采购量,以库存预警建议采购量为主 *(3)当库存预警中位数 标记建议采购,但是建议采购量为0时,对应的SKU 以库存预警的建议采购量为主 * (这个是普源数据的问题,已经联系崔总做修改,待回复) *(4)当库存预警中位数建议采购量<库存预警建议采购量,商品成本单价小于1元的,最终建议采购量=(库存预警建议采购量+库存预警中位数建议采购量)/2 *(5)商品单价低于10元的,建议采购量小于5个的,最终建议采购量为 5个。(已经在建议采购做判断了) */ #region 先处理两表共有的,同时删除原始数据 { foreach (var cmSKU in list两表都有的SKUs) { //if (cmSKU == "TDPB8B15") //{ //} var model = new _订单分配(); model._SKU = cmSKU; model._数据来源 = _Enum数据来源._两表共有; var refer原预警表 = list库存预警原表.First(x => x.SKU == cmSKU); var refer预警中位数表 = list库存预警中位数.First(x => x.SKU == cmSKU); model._计算后的建议采购数量_原预警表 = refer原预警表._原始建议采购数量; model._计算后的建议采购数量_中位数表 = refer预警中位数表._原始建议采购数量; model._原来表格导出的建议采购数量_原预警表 = refer原预警表._表格导出的原始建议采购; model._原来表格导出的建议采购数量_中位数表 = refer预警中位数表._表格导出的原始建议采购; model._预警销售天数 = refer原预警表._预警销售天数; model._采购到货天数 = refer原预警表._采购到货天数; model._可用数量 = refer原预警表._可用数量; model._采购未入库 = refer原预警表._采购未入库; model._缺货及未派单数量 = refer原预警表._缺货及未派单数量; /* *(1)如果建议采购量 和 预计可用数量 一致或者差不多(建议采购量刚好够补缺货订单),那么建议采购最终数量 = * (库存预警建议采购量 + 库存预警中位数建议采购量)/ 2 */ //if (refer原预警表._可用数量 < 0) //{ // decimal culc = (refer原预警表._原始建议采购数量 + refer预警中位数表._原始建议采购数量) / 2; // //if (refer原预警表._商品成本单价 >= 10) // // model._Qty = Math.Round(culc, 0); // //else // // model._Qty = Helper.CalAmount(culc); // model._Qty = Math.Round(culc, 0); //} //else { /* * (2)当库存预警建议采购量<库存预警中位数建议采购量,以库存预警建议采购量为主 */ if (refer原预警表._原始建议采购数量 < refer预警中位数表._原始建议采购数量) { model._Qty = refer原预警表._建议采购数量; } else { if (refer原预警表._商品成本单价 < 1) { decimal culc = (refer原预警表._原始建议采购数量 + refer预警中位数表._原始建议采购数量) / 2; //if (refer原预警表._商品成本单价 >= 10) // model._Qty = Math.Round(culc, 0); //else // model._Qty = Helper.CalAmount(culc); model._Qty = Math.Round(culc, 0); } else { model._Qty = refer预警中位数表._建议采购数量; } } } model._是否紧急单 = refer原预警表._是否紧急单; model._预计可用库存 = refer原预警表._预计可用库存; model._供应商 = refer原预警表._供应商; model._采购员 = refer原预警表._采购员; model._含税单价 = refer原预警表._商品成本单价; model._制单人 = refer原预警表._采购员; //model._计算后的建议采购数量_7_9_11三段中位数建议采购= //{ // var refer= list7_9_11三段中位数.Where(s=>s.SKU=) //} list处理结果.Add(model); //已经用不上两种共有的sku数据,删除原数据 for (int idx = list库存预警原表.Count - 1; idx >= 0; idx--) { if (list库存预警原表[idx].SKU == cmSKU) { list库存预警原表.RemoveAt(idx); break; } } for (int idx = list库存预警中位数.Count - 1; idx >= 0; idx--) { if (list库存预警中位数[idx].SKU == cmSKU) { list库存预警中位数.RemoveAt(idx); break; } } } } #endregion #region 处理原预警表 foreach (var item in list库存预警原表) { var model = new _订单分配(); model._SKU = item.SKU; model._预计可用库存 = item._预计可用库存; model._Qty = item._建议采购数量; model._供应商 = item._供应商; model._采购员 = item._采购员; model._含税单价 = item._商品成本单价; model._制单人 = item._采购员; model._原来表格导出的建议采购数量_原预警表 = item._表格导出的原始建议采购; model._计算后的建议采购数量_原预警表 = item._原始建议采购数量; model._是否紧急单 = item._是否紧急单; model._数据来源 = _Enum数据来源._原建议采购表; model._预警销售天数 = item._预警销售天数; model._采购到货天数 = item._采购到货天数; model._可用数量 = item._可用数量; model._采购未入库 = item._采购未入库; model._缺货及未派单数量 = item._缺货及未派单数量; list处理结果.Add(model); } #endregion #region 处理中位数预警表 foreach (var item in list库存预警中位数) { var model = new _订单分配(); model._SKU = item.SKU; model._预计可用库存 = item._预计可用库存; model._Qty = item._建议采购数量; model._供应商 = item._供应商; model._采购员 = item._采购员; model._含税单价 = item._商品成本单价; model._制单人 = item._采购员; model._原来表格导出的建议采购数量_中位数表 = item._表格导出的原始建议采购; model._计算后的建议采购数量_中位数表 = item._原始建议采购数量; model._是否紧急单 = item._是否紧急单; model._数据来源 = _Enum数据来源._中位数建议采购; model._预警销售天数 = item._预警销售天数; model._采购到货天数 = item._采购到货天数; model._可用数量 = item._可用数量; model._采购未入库 = item._采购未入库; model._缺货及未派单数量 = item._缺货及未派单数量; list处理结果.Add(model); } #endregion for (int idx = list处理结果.Count - 1; idx >= 0; idx--) { var curData = list处理结果[idx]; var refer流水情况 = list每月流水.FirstOrDefault(x => x.SKU == curData._SKU); if (refer流水情况 != null) { #region 近7-9-11三段中位数 { var model = new _库存预警_7_9_11_三段中位数(); model._预警销售天数 = curData._预警销售天数; model._采购到货天数 = curData._采购到货天数; model._可用数量 = curData._可用数量; model._采购未入库 = curData._采购未入库; model._缺货及未派单数量 = curData._缺货及未派单数量; model._7天中位数 = Calcu中位数(refer流水情况._月销量流水.Take(7).ToList(), 3); model._9天中位数 = Calcu中位数(refer流水情况._月销量流水.Take(9).ToList(), 4); model._11天中位数 = Calcu中位数(refer流水情况._月销量流水.Take(11).ToList(), 5); curData._计算后的建议采购数量_7_9_11三段中位数建议采购 = model._原始建议采购数量; } #endregion #region 近7-9-11三段中日平均销量 { var model = new _库存预警_7_9_11_三段平均数(); model._预警销售天数 = curData._预警销售天数; model._采购到货天数 = curData._采购到货天数; model._可用数量 = curData._可用数量; model._采购未入库 = curData._采购未入库; model._缺货及未派单数量 = curData._缺货及未派单数量; model._7天总销量 = refer流水情况._月销量流水.Take(7).Sum(); model._9天总销量 = refer流水情况._月销量流水.Take(9).Sum(); model._11天总销量 = refer流水情况._月销量流水.Take(11).Sum(); curData._计算后的建议采购数量_7_9_11日平均建议采购 = model._原始建议采购数量; } #endregion // get //{ // var _库存上限 = _预警销售天数 * _日平均销量; // var _库存下限 = _采购到货天数 * _日平均销量; // return _库存上限 + _库存下限 - _可用数量 - _采购未入库 + _缺货及未派单数量; // } } } ExportExcel(list处理结果.OrderByDescending(x => x._供应商).ToList()); }, null); #endregion }
private void btn处理数据_Click(object sender, EventArgs e) { var list库存预警原表 = new List <_库存预警>(); var list库存预警中位数 = new List <_库存预警>(); var list每月流水 = new List <_每月流水>(); var list两表都有的SKUs = new List <string>(); var list缺货所有SKUs = new List <string>(); var list处理结果 = new List <_订单分配>(); var list计算详情 = new List <_计算详情>(); var list异常SKUs = new List <string>(); int iDay1 = Convert.ToInt32(nupDay1.Value); int iDay2 = Convert.ToInt32(nupDay2.Value); int iDay3 = Convert.ToInt32(nupDay3.Value); #region 读取数据 var actReadData = new Action(() => { var strError = string.Empty; ShowMsg("开始读取预警原表数据"); FormHelper.ReadCSVFile(txt库存预警原表.Text, ref list库存预警原表, ref strError); ShowMsg("开始读取预警中位数表数据"); FormHelper.ReadCSVFile(txt库存预警中位数.Text, ref list库存预警中位数, ref strError); ShowMsg("开始读取每月流水数据"); FormHelper.ReadCSVFile(txt每月流水.Text, ref list每月流水, ref strError); ShowMsg("开始过滤每月流水中不需要的数据"); //过滤掉流水表里面不需要的sku数据,因为该表太大 var sku_yb = list库存预警原表.Select(x => x.SKU).ToList(); var sku_zw = list库存预警中位数.Select(x => x.SKU).ToList(); var q = from t1 in sku_yb join t2 in sku_zw on t1 equals t2 select t1; list两表都有的SKUs = q.ToList(); sku_yb.AddRange(sku_zw); list缺货所有SKUs = sku_yb.Select(x => x).Distinct().ToList(); list每月流水 = list每月流水.Where(x => list缺货所有SKUs.Contains(x.SKU)).ToList(); }); #endregion #region 处理数据 actReadData.BeginInvoke((obj) => { ShowMsg("正在处理数据"); foreach (var sku in list缺货所有SKUs) { //if (sku== "AMKA1A03-WR") //{ //} var _计算详情Model = new _计算详情(); var model = new _订单分配(); model._SKU = sku; _计算详情Model._SKU = sku; var refer库存预警原表 = list库存预警原表.FirstOrDefault(x => x.SKU == sku); var refer库存预警中位数 = list库存预警中位数.FirstOrDefault(x => x.SKU == sku); var refer流水 = list每月流水.FirstOrDefault(x => x.SKU == sku); if (refer流水 == null) { list异常SKUs.Add(sku); continue; } bool bShareSKU = refer库存预警原表 != null && refer库存预警中位数 != null; //公共信息 var common = refer库存预警原表 != null ? refer库存预警原表 : refer库存预警中位数; model._预计可用库存 = common._预计可用库存; model._供应商 = common._供应商; model._采购员 = common._采购员; model._含税单价 = common._商品成本单价; model._制单人 = common._采购员; //详情基本信息 _计算详情Model._采购员 = common._采购员; _计算详情Model._含税单价 = common._商品成本单价; _计算详情Model._可用数量 = common._可用数量; _计算详情Model._采购未入库 = common._采购未入库; _计算详情Model._缺货及未派单数量 = common._缺货及未派单数量; _计算详情Model._预计可用库存 = common._预计可用库存; _计算详情Model._预警销售天数 = common._预警销售天数; _计算详情Model._采购到货天数 = common._采购到货天数; _计算详情Model._缺货占用数量 = common._缺货占用数量; //特有信息 model._原表格导出的建议采购数量_原预警表 = refer库存预警原表 != null ? refer库存预警原表._表格导出的原始建议采购 : 0; model._原表格导出的建议采购数量_中位数表 = refer库存预警中位数 != null ? refer库存预警中位数._表格导出的原始建议采购 : 0; #region 两种算法的结果 { var list1 = refer流水._月销量流水.Take(iDay1).ToList(); var list2 = refer流水._月销量流水.Take(iDay2).ToList(); var list3 = refer流水._月销量流水.Take(iDay3).ToList(); #region 记录销量详情 { _计算详情Model._参数1详情 = string.Join(",", list1); _计算详情Model._参数2详情 = string.Join(",", list2); _计算详情Model._参数3详情 = string.Join(",", list3); } #endregion #region 原先算法 { var detail = new _计算过程(); common._原先计算方式(list1, list2, list3, ref detail); model._计算后的建议采购数量_原先算法 = detail._建议采购; _计算详情Model._库存上限_原先算法 = detail._库存上限; _计算详情Model._库存下限_原先算法 = detail._库存下限; _计算详情Model._日平均销量_原先算法 = detail._日平均销量; _计算详情Model._计算后的建议采购数量_原先算法 = detail._建议采购; _计算详情Model._参数1_销量总和 = detail._参数1_销量总和; _计算详情Model._参数2_销量总和 = detail._参数2_销量总和; _计算详情Model._参数3_销量总和 = detail._参数3_销量总和; } #endregion #region 中位数算法 { var detail = new _计算过程(); common._中位数计算方式(list1, list2, list3, ref detail); model._计算后的建议采购数量_中位数算法 = detail._建议采购; _计算详情Model._库存上限_中位数 = detail._库存上限; _计算详情Model._库存下限_中位数 = detail._库存下限; _计算详情Model._日平均销量_中位数 = detail._日平均销量; _计算详情Model._计算后的建议采购数量_中位数 = detail._建议采购; _计算详情Model._参数1_中位数 = detail._参数1_中位数; _计算详情Model._参数2_中位数 = detail._参数2_中位数; _计算详情Model._参数3_中位数 = detail._参数3_中位数; } #endregion _计算详情Model._原表格导出的建议采购数量_原预警表 = model._原表格导出的建议采购数量_原预警表; _计算详情Model._原表格导出的建议采购数量_中位数表 = model._原表格导出的建议采购数量_中位数表; } #endregion /* * 建议采购量以库存预警-中位数为主,但是需要修改以下条件: *(1)如果建议采购量 和 预计可用数量 一致或者差不多(建议采购量刚好够补缺货订单),那么建议采购最终数量= * (库存预警建议采购量+库存预警中位数建议采购量)/2 *(2)当库存预警建议采购量<库存预警中位数建议采购量,以库存预警建议采购量为主 *(3)当库存预警中位数 标记建议采购,但是建议采购量为0时,对应的SKU 以库存预警的建议采购量为主 * (这个是普源数据的问题,已经联系崔总做修改,待回复) *(4)当库存预警中位数建议采购量<库存预警建议采购量,商品成本单价小于1元的,最终建议采购量=(库存预警建议采购量+库存预警中位数建议采购量)/2 *(5)商品单价低于10元的,建议采购量小于5个的,最终建议采购量为 5个。(已经在建议采购做判断了) */ //中位数算法为主 model._Qty = model._计算后的建议采购数量_中位数算法; if (bShareSKU) { /* * (2)当库存预警建议采购量<库存预警中位数建议采购量,以库存预警建议采购量为主 */ if (model._计算后的建议采购数量_原先算法 < model._计算后的建议采购数量_中位数算法) { model._Qty = model._计算后的建议采购数量_原先算法; } else { if (common._商品成本单价 < 1) { decimal culc = (model._计算后的建议采购数量_原先算法 + model._计算后的建议采购数量_中位数算法) / 2; model._Qty = Math.Round(culc, 0); } } } _计算详情Model.Qty = model._Qty; list处理结果.Add(model); list计算详情.Add(_计算详情Model); } ExportExcel(list处理结果, list计算详情, list异常SKUs, iDay1, iDay2, iDay3); }, null); #endregion }