Exemple #1
0
        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());
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        /// <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;
        }