Beispiel #1
0
 /// <summary>
 /// Returns the concatenation of all of the statistics currently tracked
 /// </summary>
 /// <returns>
 /// A <see cref="System.String" /> that represents this instance.
 /// </returns>
 public override string ToString()
 {
     return(AllStatistics.ToDelimitedString("\n\n"));
 }
Beispiel #2
0
        public bool TryExportData(string userName, string mode = "json")
        {
            try
            {
                UserStatistiс userStatistiс = AllStatistics.Find(s => s.name == userName);
                if (userStatistiс == null)
                {
                    throw new Exception("Пользователь с таким именем не найден!");
                }

                string     ExportPath        = Path.Combine(Directory.GetCurrentDirectory(), "Export", userStatistiс.name);
                string     datasFileName     = Path.Combine(ExportPath, "Данные за все дни.");
                string     statisticFileName = Path.Combine(ExportPath, "Общая статистика.");
                UserData[] userDatas         = AllDatas.Select(u => u).Where(u => u.User == userStatistiс.name).ToArray();

                if (!Directory.Exists(ExportPath))
                {
                    Directory.CreateDirectory(ExportPath);
                }

                switch (mode)
                {
                case "json":
                    datasFileName     += "json";
                    statisticFileName += "json";

                    var options = new JsonSerializerOptions
                    {
                        WriteIndented = true
                    };

                    string datas = Encoding.UTF8.GetString(JsonSerializer.SerializeToUtf8Bytes(userDatas, options));
                    datas = Regex.Replace(datas, @"\\u([0-9A-Fa-f]{4})", m => "" + (char)Convert.ToInt32(m.Groups[1].Value, 16));
                    string statisticData = Encoding.UTF8.GetString(JsonSerializer.SerializeToUtf8Bytes(userStatistiс, options));
                    statisticData = Regex.Replace(statisticData, @"\\u([0-9A-Fa-f]{4})", m => "" + (char)Convert.ToInt32(m.Groups[1].Value, 16));
                    using (StreamWriter sw = new StreamWriter(datasFileName, false, System.Text.Encoding.UTF8))
                    {
                        sw.WriteLine(datas);
                    }
                    using (StreamWriter sw = new StreamWriter(statisticFileName, false, System.Text.Encoding.UTF8))
                    {
                        sw.WriteLine(statisticData);
                    }
                    break;

                case "xml":
                    datasFileName     += "xml";
                    statisticFileName += "xml";
                    XmlSerializer formatter = new XmlSerializer(typeof(UserData[]));
                    using (StreamWriter sw = new StreamWriter(datasFileName, false, Encoding.UTF8))
                    {
                        formatter.Serialize(sw, userDatas.ToArray());
                    }
                    formatter = new XmlSerializer(typeof(UserStatistiс));
                    using (StreamWriter sw = new StreamWriter(statisticFileName, false, Encoding.UTF8))
                    {
                        formatter.Serialize(sw, userStatistiс);
                    }
                    break;

                case "csv":
                    datasFileName     += "csv";
                    statisticFileName += "csv";
                    using (StreamWriter sw = new StreamWriter(datasFileName, false, Encoding.UTF8))
                    {
                        using (CsvWriter csvWriter = new CsvWriter(sw, CultureInfo.InvariantCulture))
                        {
                            csvWriter.Configuration.Delimiter = ",";
                            csvWriter.WriteRecords(userDatas.ToArray());
                        }
                    }
                    using (StreamWriter sw = new StreamWriter(statisticFileName, false, Encoding.UTF8))
                    {
                        using (CsvWriter csvWriter = new CsvWriter(sw, CultureInfo.InvariantCulture))
                        {
                            csvWriter.Configuration.Delimiter = ",";
                            csvWriter.WriteRecords(new List <UserStatistiс> {
                                userStatistiс
                            });
                        }
                    }
                    break;

                default:
                    break;
                }
                LastExportFolder = ExportPath;
                return(true);
            }
            catch (Exception ex)
            {
                ErrorMessage = ex.Message;
                return(false);
            }
        }
        /// <summary>
        /// 获取所有统计信息
        /// </summary>
        /// <param name="year"></param>
        /// <param name="mouth"></param>
        /// <returns></returns>
        public override AllStatistics GetAllStatistics(int year, int mouth)
        {
            string sql = @" ---网购
                            select SUM(CashPay) as CashPay,BsPaymentType.PaymentName from soorder Inner join BsPaymentType on soorder.PayTypeSysNo=BsPaymentType.SysNo
                            where (ShopWarehouseNo is null or ShopWarehouseNo=0) and soorder.Status>=30 and year(soorder.CreateDate)=" + year + @" and MONTH(soorder.CreateDate)=" + mouth + @"
                            group by BsPaymentType.PaymentName
                            union
                            ---实体店下单
                            select SUM(CashPay) as CashPay,'实体店进货' as PaymentName from soorder Inner join BsPaymentType on soorder.PayTypeSysNo=BsPaymentType.SysNo
                            where  ShopWarehouseNo>0  and soorder.Status>=30 and year(soorder.CreateDate)=" + year + @" and MONTH(soorder.CreateDate)=" + mouth + @"
                            union
                            ---保税商品
                            select SUM(CashPay) as CashPay,'保税商品收入' as PaymentName from soorder inner join WhWarehouse on soorder.DefaultWarehouseSysNo=WhWarehouse.SysNo
                            where  soorder.Status>=30 and WhWarehouse.WarehouseType=30 and year(soorder.CreateDate)=" + year + @" and MONTH(soorder.CreateDate)=" + mouth + @"
                            ---退货单 
                            union
                            select sum(RefundTotalAmount) as CashPay, '退货费用' as PaymentName from RcReturn
                            where [Status]=50 and year(RcReturn.CreateDate)=" + year + @" and MONTH(RcReturn.CreateDate)=" + mouth + @"
                            union
                            select sum(soorder.FreightAmount) as CashPay ,'德邦物流' as PaymentName
                            from soorder inner join LgDeliveryType on soorder.DeliveryTypeSysNo=LgDeliveryType.SysNo
                            where soorder.Status>=30 and LgDeliveryType.DeliveryTypeName like '%德邦%'
                             and year(soorder.CreateDate)=" + year + @" and MONTH(soorder.CreateDate)=" + mouth + @"
                            union
                            select sum(soorder.FreightAmount) as CashPay ,'顺丰物流' as PaymentName
                            from soorder inner join LgDeliveryType on soorder.DeliveryTypeSysNo=LgDeliveryType.SysNo
                            where soorder.Status>=30 and LgDeliveryType.DeliveryTypeName like '%顺丰%'
                             and year(soorder.CreateDate)=" + year + @" and MONTH(soorder.CreateDate)=" + mouth + @"
                            union
                            select sum(soorder.FreightAmount) as CashPay ,'心怡物流' as PaymentName
                            from soorder inner join LgDeliveryType on soorder.DeliveryTypeSysNo=LgDeliveryType.SysNo
                            where soorder.Status>=30 and LgDeliveryType.DeliveryTypeName like '%心怡%'
                             and year(soorder.CreateDate)=" + year + @" and MONTH(soorder.CreateDate)=" + mouth + @"
                            union
                            select sum(soorder.TaxFee) as CashPay ,'行邮税费' as PaymentName
                            from soorder inner join LgDeliveryType on soorder.DeliveryTypeSysNo=LgDeliveryType.SysNo
                            where soorder.Status>=30  and soorder.TaxFee>=0
                            and year(soorder.CreateDate)=" + year + @" and MONTH(soorder.CreateDate)=" + mouth + @"
                        ";
            ///获取金额
            List <StatisticsType> typeList = Context.Sql(sql).QueryMany <StatisticsType>();
            AllStatistics         mod      = new AllStatistics();

            mod.AliPay =
                typeList.Find(p => p.PaymentName == "支付宝") == null ? 0 :
                typeList.Find(p => p.PaymentName == "支付宝").CashPay;

            mod.Bank =
                typeList.Find(p => p.PaymentName == "网银") == null? 0:
                typeList.Find(p => p.PaymentName == "网银").CashPay;

            mod.BaoShui =
                typeList.Find(p => p.PaymentName == "保税商品收入") == null ? 0 :
                typeList.Find(p => p.PaymentName == "保税商品收入").CashPay;

            mod.Debang =
                typeList.Find(p => p.PaymentName == "德邦物流") == null ? 0 :
                typeList.Find(p => p.PaymentName == "德邦物流").CashPay;

            mod.HaiGuanPostTax =
                typeList.Find(p => p.PaymentName == "行邮税费") == null ? 0 :
                typeList.Find(p => p.PaymentName == "行邮税费").CashPay;

            mod.RetPrice =
                typeList.Find(p => p.PaymentName == "退货费用") == null ? 0 :
                typeList.Find(p => p.PaymentName == "退货费用").CashPay;

            mod.SF =
                typeList.Find(p => p.PaymentName == "顺丰物流") == null ? 0 :
                typeList.Find(p => p.PaymentName == "顺丰物流").CashPay;

            mod.StoreStock =
                typeList.Find(p => p.PaymentName == "实体店进货") == null ? 0 :
                typeList.Find(p => p.PaymentName == "实体店进货").CashPay;

            mod.WebXin =
                typeList.Find(p => p.PaymentName == "微信支付") == null ? 0 :
                typeList.Find(p => p.PaymentName == "微信支付").CashPay;

            mod.XinYiLogistics =
                typeList.Find(p => p.PaymentName == "心怡物流") == null ? 0 :
                typeList.Find(p => p.PaymentName == "心怡物流").CashPay;

            mod.Cash =
                typeList.Find(p => p.PaymentName == " 现金") == null ? 0 :
                typeList.Find(p => p.PaymentName == " 现金").CashPay;

            return(mod);
        }