private static string GetInterfaceString(TL_INTERFACE data) { const string sp = ","; var s = new StringBuilder(); s.Append(data.pQty > 01 ? (data.p01 + sp) : ""); s.Append(data.pQty > 02 ? (data.p02 + sp) : ""); s.Append(data.pQty > 03 ? (data.p03 + sp) : ""); s.Append(data.pQty > 04 ? (data.p04 + sp) : ""); s.Append(data.pQty > 05 ? (data.p05 + sp) : ""); s.Append(data.pQty > 06 ? (data.p06 + sp) : ""); s.Append(data.pQty > 07 ? (data.p07 + sp) : ""); s.Append(data.pQty > 08 ? (data.p08 + sp) : ""); s.Append(data.pQty > 09 ? (data.p09 + sp) : ""); s.Append(data.pQty > 10 ? (data.p10 + sp) : ""); s.Append(data.pQty > 11 ? (data.p11 + sp) : ""); s.Append(data.pQty > 12 ? (data.p12 + sp) : ""); s.Append(data.pQty > 13 ? (data.p13 + sp) : ""); s.Append(data.pQty > 14 ? (data.p14 + sp) : ""); s.Append(data.pQty > 15 ? (data.p15 + sp) : ""); s.Append(data.pQty > 16 ? (data.p16 + sp) : ""); s.Append(data.pQty > 17 ? (data.p17 + sp) : ""); s.Append(data.pQty > 18 ? (data.p18 + sp) : ""); s.Append(data.pQty > 19 ? (data.p19 + sp) : ""); s.Append(data.pQty > 20 ? (data.p20 + sp) : ""); return(s.ToString()); }
private void WriteErpFiles放弃() { string localPath = IoHelper.GetFullPath(_localRootPath, _localToErp); if (!Directory.Exists(localPath)) { Console.WriteLine(@"接口文件夹 " + localPath + @" 不存在,发送失败"); return; } Console.WriteLine(@"汇总接口数据开始"); using (SpareEntities db = EntitiesFactory.CreateSpareInstance()) { var list = ErpInterfaceController.GetNewList(db).ToList(); if (list.Count == 0) { Console.WriteLine(@"未发现需要汇总的接口数据"); return; } // var allList = list.DistinctBy(p => p.BillNum); var sumList = new List <TL_INTERFACE>(); foreach (var bill in list) { TL_INTERFACE erpInterface = null; switch (bill.InterfaceType) { case "StockMove": erpInterface = sumList.FirstOrDefault(p => p.BillType == bill.BillType.ToString() && p.BillNum == bill.BillNum && p.InterfaceType == bill.InterfaceType.ToString() && p.p01 == bill.p01 // && p.p02 == bill.p02 && p.p03 == bill.p03 && p.p04 == bill.p04 && p.p05 == bill.p05 && p.p06 == bill.p06 && p.p07 == bill.p07 && p.p08 == bill.p08 && p.p09 == bill.p09 && p.p10 == bill.p10 && p.p11 == bill.p11 && p.p12 == bill.p12 && p.p13 == bill.p13 && p.p14 == bill.p14 && p.p15 == bill.p15 && p.p16 == bill.p16 && p.p17 == bill.p17 && p.p18 == bill.p18 && p.p19 == bill.p19 && p.p20 == bill.p20 ); break; case "BackFlush": erpInterface = sumList.FirstOrDefault(p => p.BillType == bill.BillType.ToString() && p.BillNum == bill.BillNum && p.InterfaceType == bill.InterfaceType.ToString() && p.p01 == bill.p01 && p.p02 == bill.p02 && p.p03 == bill.p03 && p.p04 == bill.p04 && p.p05 == bill.p05 && p.p06 == bill.p06 && p.p07 == bill.p07 && p.p08 == bill.p08 && p.p09 == bill.p09 && p.p10 == bill.p10 && p.p11 == bill.p11 //&& p.p12 == bill.p12 && p.p13 == bill.p13 && p.p14 == bill.p14 && p.p15 == bill.p15 && p.p16 == bill.p16 && p.p17 == bill.p17 && p.p18 == bill.p18 && p.p19 == bill.p19 && p.p20 == bill.p20 ); break; case "StockSell": erpInterface = sumList.FirstOrDefault(p => p.BillType == bill.BillType.ToString() && p.BillNum == bill.BillNum && p.InterfaceType == bill.InterfaceType.ToString() && p.p01 == bill.p01 && p.p02 == bill.p02 && p.p03 == bill.p03 && p.p04 == bill.p04 && p.p05 == bill.p05 //&& p.p06 == bill.p06 && p.p07 == bill.p07 && p.p08 == bill.p08 && p.p09 == bill.p09 && p.p10 == bill.p10 && p.p11 == bill.p11 && p.p12 == bill.p12 && p.p13 == bill.p13 && p.p14 == bill.p14 && p.p15 == bill.p15 && p.p16 == bill.p16 && p.p17 == bill.p17 && p.p18 == bill.p18 && p.p19 == bill.p19 && p.p20 == bill.p20 ); break; } if (erpInterface == null) { erpInterface = new TL_INTERFACE { BillType = bill.BillType, BillNum = bill.BillNum, InterfaceType = bill.InterfaceType, State = (int)BillState.New, pQty = bill.pQty, p01 = bill.p01, p02 = bill.p02, p03 = bill.p03, p04 = bill.p04, p05 = bill.p05, p06 = bill.p06, p07 = bill.p07, p08 = bill.p08, p09 = bill.p09, p10 = bill.p10, p11 = bill.p11, p12 = bill.p12, p13 = bill.p13, p14 = bill.p14, p15 = bill.p15, p16 = bill.p16, p17 = bill.p17, p18 = bill.p18, p19 = bill.p19, p20 = bill.p20, }; sumList.Add(erpInterface); } else { switch (bill.InterfaceType) { case "StockMove": erpInterface.p02 = (Convert.ToDecimal(erpInterface.p02) + Convert.ToDecimal(bill.p02)).ToString(); break; case "BackFlush": erpInterface.p12 += (Convert.ToDecimal(erpInterface.p12) + Convert.ToDecimal(bill.p12)).ToString(); break; case "StockSell": erpInterface.p06 += (Convert.ToDecimal(erpInterface.p06) + Convert.ToDecimal(bill.p06)).ToString(); break; } } } var billNumList = (from c in sumList select c.BillNum).Distinct(); foreach (var billNum in billNumList) { var sb = new StringBuilder(); string prefix = string.Empty; foreach ( TL_INTERFACE f in sumList.Where(p => p.BillNum == billNum && p.InterfaceType == ErpInterfaceType.TR.ToString()) .OrderBy(p => p.p08)) { f.InterfaceString = GetInterfaceString(f); sb.AppendLine(f.InterfaceString); } prefix = "tr"; WriteErpFile(localPath, billNum, prefix, sb.ToString()); foreach ( TL_INTERFACE f in sumList.Where(p => p.BillNum == billNum && p.InterfaceType == ErpInterfaceType.BK.ToString()) .OrderBy(p => p.p04)) { f.InterfaceString = GetInterfaceString(f); sb.AppendLine(f.InterfaceString); } prefix = "bk"; WriteErpFile(localPath, billNum, prefix, sb.ToString()); foreach ( TL_INTERFACE f in sumList.Where(p => p.BillNum == billNum && p.InterfaceType == ErpInterfaceType.SH.ToString()) .OrderBy(p => p.p08)) { f.InterfaceString = GetInterfaceString(f); sb.AppendLine(f.InterfaceString); } prefix = "sh"; WriteErpFile(localPath, billNum, prefix, sb.ToString()); } try { ErpInterfaceController.RemoveList(db, list); EntitiesFactory.SaveDb(db); } catch (WmsException ex) { Console.WriteLine(ex.ToString()); } } Console.WriteLine(@"汇总接口数据结束"); Console.WriteLine(@"发送数据开始"); var fileList = Directory.GetFiles(localPath).ToList(); if (_isFtp) { try { Console.WriteLine(@"上传文件开始"); _ftp.GotoDirectory("//" + _ftpToErp, false); _ftp.UploadList(fileList); Console.WriteLine(@"上传文件完成"); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } foreach (string localFileName in fileList) { string txtName = Path.GetFileName(localFileName); string bakFileName = IoHelper.GetFullFilename(_localRootPath + _localBackup + "\\" + _localToErp, txtName, false); if (File.Exists(bakFileName)) { File.Delete(bakFileName); } File.Move(localFileName, bakFileName); // File.Delete(localFileName); } }
/// <summary> /// 更新接口记录 /// </summary> /// <param name="db"></param> /// <param name="interfaceType"></param> /// <param name="billNum"></param> /// <param name="billType"></param> /// <param name="pList"></param> private static void AddOrUpdateRecord(SpareEntities db, ErpInterfaceType interfaceType, string billNum, BillType billType, List <string> pList) { TL_INTERFACE erpInterface = null; string p01 = pList.Count > 00 ? pList[00] : ""; string p02 = pList.Count > 01 ? pList[01] : ""; string p03 = pList.Count > 02 ? pList[02] : ""; string p04 = pList.Count > 03 ? pList[03] : ""; string p05 = pList.Count > 04 ? pList[04] : ""; string p06 = pList.Count > 05 ? pList[05] : ""; string p07 = pList.Count > 06 ? pList[06] : ""; string p08 = pList.Count > 07 ? pList[07] : ""; string p09 = pList.Count > 08 ? pList[08] : ""; string p10 = pList.Count > 09 ? pList[09] : ""; string p11 = pList.Count > 10 ? pList[10] : ""; string p12 = pList.Count > 11 ? pList[11] : ""; string p13 = pList.Count > 12 ? pList[12] : ""; string p14 = pList.Count > 13 ? pList[13] : ""; string p15 = pList.Count > 14 ? pList[14] : ""; string p16 = pList.Count > 15 ? pList[15] : ""; string p17 = pList.Count > 16 ? pList[16] : ""; string p18 = pList.Count > 17 ? pList[17] : ""; string p19 = pList.Count > 18 ? pList[18] : ""; string p20 = pList.Count > 19 ? pList[19] : ""; switch (interfaceType) { case ErpInterfaceType.TR: erpInterface = db.TL_INTERFACE.FirstOrDefault(p => p.p01 == p01 // && p.p02 == p02 qty && p.p03 == p03 && p.p04 == p04 && p.p05 == p05 && p.p06 == p06 && p.p07 == p07 && p.p08 == p08 && p.p09 == p09 && p.p10 == p10 && p.p11 == p11 && p.p12 == p12 && p.p13 == p13 && p.p14 == p14 && p.p15 == p15 && p.p16 == p16 && p.p17 == p17 && p.p18 == p18 && p.p19 == p19 && p.p20 == p20 ); break; case ErpInterfaceType.BK: erpInterface = db.TL_INTERFACE.FirstOrDefault(p => p.p01 == p01 && p.p02 == p02 && p.p03 == p03 && p.p04 == p04 && p.p05 == p05 && p.p06 == p06 && p.p07 == p07 && p.p08 == p08 && p.p09 == p09 && p.p10 == p10 && p.p11 == p11 //&& p.p12 == p12 qty && p.p13 == p13 && p.p14 == p14 && p.p15 == p15 && p.p16 == p16 && p.p17 == p17 && p.p18 == p18 && p.p19 == p19 && p.p20 == p20 ); break; case ErpInterfaceType.SH: erpInterface = db.TL_INTERFACE.FirstOrDefault(p => p.p01 == p01 && p.p02 == p02 && p.p03 == p03 && p.p04 == p04 && p.p05 == p05 //&& p.p06 == p06 //qty && p.p07 == p07 && p.p08 == p08 && p.p09 == p09 && p.p10 == p10 && p.p11 == p11 && p.p12 == p12 && p.p13 == p13 && p.p14 == p14 && p.p15 == p15 && p.p16 == p16 && p.p17 == p17 && p.p18 == p18 && p.p19 == p19 && p.p20 == p20 ); break; } if (erpInterface == null) { erpInterface = new TL_INTERFACE { BillType = billType.ToString(), BillNum = billNum, InterfaceType = interfaceType.ToString(), State = (int)BillState.New, CreateTime = DateTime.Now, ProcessTime = DateTime.Now, pQty = pList.Count, p01 = pList.Count > 00 ? pList[00] : "", p02 = pList.Count > 01 ? pList[01] : "", p03 = pList.Count > 02 ? pList[02] : "", p04 = pList.Count > 03 ? pList[03] : "", p05 = pList.Count > 04 ? pList[04] : "", p06 = pList.Count > 05 ? pList[05] : "", p07 = pList.Count > 06 ? pList[06] : "", p08 = pList.Count > 07 ? pList[07] : "", p09 = pList.Count > 08 ? pList[08] : "", p10 = pList.Count > 09 ? pList[09] : "", p11 = pList.Count > 10 ? pList[10] : "", p12 = pList.Count > 11 ? pList[11] : "", p13 = pList.Count > 12 ? pList[12] : "", p14 = pList.Count > 13 ? pList[13] : "", p15 = pList.Count > 14 ? pList[14] : "", p16 = pList.Count > 15 ? pList[15] : "", p17 = pList.Count > 16 ? pList[16] : "", p18 = pList.Count > 17 ? pList[17] : "", p19 = pList.Count > 18 ? pList[18] : "", p20 = pList.Count > 19 ? pList[19] : "", }; db.TL_INTERFACE.Add(erpInterface); } else { switch (interfaceType) { case ErpInterfaceType.TR: pList[01] = (Convert.ToDecimal(erpInterface.p02) + Convert.ToDecimal(pList[01])).ToString(); erpInterface.p02 = pList[01]; break; case ErpInterfaceType.BK: pList[11] = (Convert.ToDecimal(erpInterface.p12) + Convert.ToDecimal(pList[11])).ToString(); erpInterface.p12 = pList[11]; break; case ErpInterfaceType.SH: pList[5] = (Convert.ToDecimal(erpInterface.p06) + Convert.ToDecimal(pList[5])).ToString(); erpInterface.p06 = pList[5]; break; } } var interfaceString = pList.Aggregate(string.Empty, (current, p) => current + (p + Sp)); erpInterface.InterfaceString = interfaceString; erpInterface.CreateTime = DateTime.Now; erpInterface.ProcessTime = DateTime.Now; }