/// <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")); }
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); }