public SalesPersonRankInfo GetSalePersonRankInfo(int sPersonId) { SalesPersonRankInfo info = null; for (int i = 0; i < AllSalesPersonRankInfos.Count; i++) { if (AllSalesPersonRankInfos[i].SalePersonID == sPersonId) { info = AllSalesPersonRankInfos[i]; } } if (info == null) { info = new SalesPersonRankInfo(); info.SalePersonID = sPersonId; info.SalesPsersonName = SalesDataSystem.SystemDatas.SalesPersonData.GetSalesNameByPersonID(sPersonId); if (string.IsNullOrEmpty(info.SalesPsersonName)) { return(null); } info.LeastSales = SalesDataSystem.SystemDatas.SalesPersonData.GetLeastSalesByPersonID(sPersonId); info.TargetSales = SalesDataSystem.SystemDatas.SalesPersonData.GetTargetSalesByPersonID(sPersonId); info.Ranking = 0; info.PerformanceSales = 0; info.CompleteRate = 0; AllSalesPersonRankInfos.Add(info); } return(info); }
public void SetValue(SalesPersonRankInfo info) { Text_StoreName.text = info.StoreName; Text_SalePersonName.text = info.SalesPsersonName; Text_LeastSales.text = info.LeastSales.ToString(); Text_TargetSales.text = info.TargetSales.ToString(); Text_Ranking.text = info.Ranking.ToString(); Text_PerformanceaSales.text = info.PerformanceSales.ToString(); Text_completeRate.text = (info.CompleteRate * 100).ToString("f2"); }
private void CreateSalesPersonRankDailySaleDataPrefab(SalesPersonRankInfo info) { GameObject newGo = GameObject.Instantiate(SalePsersonRankinDataPrefab); newGo.transform.SetParent(SalesPersonRankingDataContent); newGo.transform.localScale = Vector3.one; newGo.transform.SetAsLastSibling(); SingleSalePersonRankPrefabInfo prefabInfo = newGo.GetComponent <SingleSalePersonRankPrefabInfo>(); prefabInfo.SetValue(info); salePersonRankingDataPrefabList.Add(prefabInfo); newGo.SetActive(true); }
private void InitAllSalePersonRankInfo() { foreach (var s in SalesDataSystem.SystemDatas.SalesPersonData.AllSalePersonInfos) { SalesPersonRankInfo salepersonRankinfo = new SalesPersonRankInfo(); salepersonRankinfo.StoreName = s.StoreName; salepersonRankinfo.SalePersonID = s.SalePsersonID; salepersonRankinfo.SalesPsersonName = s.Name; salepersonRankinfo.LeastSales = s.LeastSales; salepersonRankinfo.TargetSales = s.TargetSales; salepersonRankinfo.Ranking = 0; salepersonRankinfo.PerformanceSales = 0; salepersonRankinfo.CompleteRate = 0; AllSalesPersonRankInfos.Add(salepersonRankinfo); } }
/// <summary> /// 根据输入的数据计算每日销售信息 /// 门店销售信息,月销售信息 /// </summary> /// <param name="date"></param> public void CalculateData(string date) { string day = date.Substring(6, 2); DailySalesData thisDayData = LoadDailyData(date); if (int.Parse(day) == 1) { thisDayData.Reset(); } else { DailySalesData lastDayData = LoadLastDailyData(date); thisDayData.TotalSales = 0; thisDayData.MonthSaleDataToDate = lastDayData.MonthSaleDataToDate.Clone(); thisDayData.ProductTransactionInfos.Clear(); #region storeDailyDate for (int i = 0; i < lastDayData.AllStoreDailySaleData.Count; i++) { StoreDailyInfo lastStoreDayInfo = lastDayData.AllStoreDailySaleData[i]; StoreDailyInfo todaystoreDayinfo = thisDayData.GetStoreDailyInfo(lastStoreDayInfo.StoreID); todaystoreDayinfo.MonthEnterCustomerNubmer = lastStoreDayInfo.MonthEnterCustomerNubmer + todaystoreDayinfo.TodayEnterCustomerNumber; todaystoreDayinfo.MonthTransaction = lastStoreDayInfo.MonthTransaction; todaystoreDayinfo.MonthTotalSales = lastStoreDayInfo.MonthTotalSales; todaystoreDayinfo.OldCustomerCount = lastStoreDayInfo.OldCustomerCount;; todaystoreDayinfo.OldCustomerSales = lastStoreDayInfo.OldCustomerSales; todaystoreDayinfo.NewCustomerCount = lastStoreDayInfo.NewCustomerCount; todaystoreDayinfo.NewCustomerSales = lastStoreDayInfo.NewCustomerSales; todaystoreDayinfo.CompletionRate = lastStoreDayInfo.CompletionRate; } for (int i = 0; i < thisDayData.AllStoreDailySaleData.Count; i++) { StoreDailyInfo todayStoreDayInfo = thisDayData.AllStoreDailySaleData[i]; todayStoreDayInfo.TodaySales = 0; todayStoreDayInfo.TodyTransaction = 0; todayStoreDayInfo.TodayProductTransactions.Clear(); } #endregion #region RankingInfo for (int i = 0; i < lastDayData.AllSalesPersonRankInfos.Count; i++) { SalesPersonRankInfo lastRankingInfo = lastDayData.AllSalesPersonRankInfos[i]; SalesPersonRankInfo todayRankingInfo = thisDayData.GetSalePersonRankInfo(lastRankingInfo.SalePersonID); if (todayRankingInfo == null) { continue; } todayRankingInfo.Ranking = lastRankingInfo.Ranking; todayRankingInfo.PerformanceSales = lastRankingInfo.PerformanceSales; todayRankingInfo.CompleteRate = lastRankingInfo.CompleteRate; } for (int i = 0; i < thisDayData.AllSalesPersonRankInfos.Count; i++) { SalesPersonRankInfo todayRankinfo = thisDayData.AllSalesPersonRankInfos[i]; SalesPersonRankInfo lastRankingInfo = lastDayData.GetSalePersonRankInfo(todayRankinfo.SalePersonID); todayRankinfo.Ranking = lastRankingInfo.Ranking; todayRankinfo.PerformanceSales = lastRankingInfo.PerformanceSales; todayRankinfo.CompleteRate = lastRankingInfo.CompleteRate; } #endregion } for (int i = 0; i < thisDayData.AllSingleSalesData.Count; i++) { SingleSalesData singleSaleData = thisDayData.AllSingleSalesData[i]; thisDayData.TotalSales += singleSaleData.TotalPrice; ProductTransactionInfo trans = thisDayData.GetTransactionInfo(singleSaleData.ProductID, singleSaleData.ProductName); trans.TransactionCount += singleSaleData.SaleCount; #region 计算门店每日数据 StoreDailyInfo storeDayInfo = thisDayData.GetStoreDailyInfo(singleSaleData.StoreID); if (singleSaleData.TransactionPercent > 0) { storeDayInfo.TodyTransaction += 1; } if (singleSaleData.TransactionPercent > 0) { storeDayInfo.MonthTransaction += 1; } storeDayInfo.TodaySales += singleSaleData.TotalPrice; ProductTransactionInfo transaction = storeDayInfo.GetTransactionInfo(singleSaleData.ProductID, singleSaleData.ProductName); transaction.TransactionCount += singleSaleData.SaleCount; storeDayInfo.MonthTotalSales += singleSaleData.TotalPrice; storeDayInfo.CompletionRate = storeDayInfo.MonthTotalSales / storeDayInfo.TargetSales; if (singleSaleData.IsNewCustomer) { if (singleSaleData.TransactionPercent > 0) { storeDayInfo.NewCustomerCount += 1; } storeDayInfo.NewCustomerSales += singleSaleData.TotalPrice; } else { if (singleSaleData.TransactionPercent > 0) { storeDayInfo.OldCustomerCount += 1; } storeDayInfo.OldCustomerSales += singleSaleData.TotalPrice; } #endregion #region 计算本月数据 thisDayData.MonthSaleDataToDate.TotalSales += singleSaleData.TotalPrice; if (singleSaleData.IsNewCustomer) { thisDayData.MonthSaleDataToDate.NewCustomerTransactions += (1 * singleSaleData.TransactionPercent); thisDayData.MonthSaleDataToDate.NewCustomerSales += singleSaleData.TotalPrice; } else { thisDayData.MonthSaleDataToDate.OldCustomerTransactions += (1 * singleSaleData.TransactionPercent); thisDayData.MonthSaleDataToDate.OldCustomerSales += singleSaleData.TotalPrice; } #endregion #region int salesPersonId = SalesDataSystem.SystemDatas.SalesPersonData.GetSalesPersonIdByName(singleSaleData.SalesPerson1); SalesPersonRankInfo salesPersonRankingInfo = thisDayData.GetSalePersonRankInfo(salesPersonId); salesPersonRankingInfo.PerformanceSales += singleSaleData.TotalPrice; #endregion } for (int i = 0; i < thisDayData.AllStoreDailySaleData.Count; i++) { StoreDailyInfo todayStoreDayInfo = thisDayData.AllStoreDailySaleData[i]; todayStoreDayInfo.CompletionRate = todayStoreDayInfo.MonthTotalSales / todayStoreDayInfo.TargetSales; } thisDayData.AllSalesPersonRankInfos.Sort((a, b) => { if (a.PerformanceSales > b.PerformanceSales) { return(-1); } else if (a.PerformanceSales == b.PerformanceSales) { return(0); } else { return(1); } }); for (int i = 0; i < thisDayData.AllSalesPersonRankInfos.Count; i++) { SalesPersonRankInfo rankinginfo = thisDayData.AllSalesPersonRankInfos[i]; rankinginfo.Ranking = i + 1; rankinginfo.CompleteRate = rankinginfo.PerformanceSales / rankinginfo.TargetSales; } }
public static void ExportDailyData(string date, DailySalesData newinfo) { string year = date.Substring(0, 4); string month = date.Substring(4, 2); string day = date.Substring(6, 2); string persistPath = string.Format("{0}/{1}/{2}/{3}/{4}ExportData.txt", Application.persistentDataPath, "ExportData", year, month, day); string folder = Path.GetDirectoryName(persistPath); Utility.CreateDir(persistPath); string DailySalesDataMonthPart = (Resources.Load("Configs/DailySalesDataMonthPart") as TextAsset).text; string DailySalesDataStorePart = (Resources.Load("Configs/DailySalesDataStorePart") as TextAsset).text; string DailySalesDataCustomerServicePart = (Resources.Load("Configs/DailySalesDataCustomerServicePart") as TextAsset).text; string DailySalesDataDejiStorePart = (Resources.Load("Configs/DailySalesDataDejiStorePart") as TextAsset).text; string DailySalesDataCustomerServiceStorePart = (Resources.Load("Configs/DailySalesDataCustomersServiceStorePart") as TextAsset).text; string productTransactionInfo = GetMonthProductTransactionInfo(newinfo); MonthSalesData thisMonthData = newinfo.MonthSaleDataToDate; System.Text.StringBuilder strb = new System.Text.StringBuilder(500); string exportInfo = null; string exportmonthInfo = string.Format(DailySalesDataMonthPart, year, month, day, newinfo.TotalSales, productTransactionInfo, thisMonthData.TotalSales, thisMonthData.NewCustomerTransactions, thisMonthData.NewCustomerSales, thisMonthData.OldCustomerTransactions, thisMonthData.OldCustomerSales); strb.Append(exportmonthInfo); int index = 1; #region 一般的店面处理 for (int i = 0; i < newinfo.AllStoreDailySaleData.Count; i++) { StoreDailyInfo sdi = newinfo.AllStoreDailySaleData[i]; if (sdi.StoreName == "德基广场店" || sdi.StoreName == "德基BHG店" || sdi.StoreName == "广播进线" || sdi.StoreName == "售后维护") { continue; } string storeproductInfo = GetStoreProductTransactionInfo(sdi); string exportStoreDailyInfo = string.Format(DailySalesDataStorePart, index, sdi.StoreName, month, sdi.LeastSales / 10000f, sdi.TargetSales / 10000f, year, month, day, sdi.TodayEnterCustomerNumber, sdi.MonthEnterCustomerNubmer, sdi.TodyTransaction, sdi.MonthTransaction, sdi.TodaySales, storeproductInfo, sdi.MonthTotalSales, (sdi.CompletionRate * 100).ToString("F2"), sdi.OldCustomerSales, sdi.OldCustomerCount, sdi.NewCustomerSales, sdi.NewCustomerCount); strb.Append(exportStoreDailyInfo); index++; } #endregion #region 德基广场店处理 int dejistoreId = SalesDataSystem.SystemDatas.StoreSysData.GetStoreIDByName("德基广场店"); StoreDailyInfo dejiStoreInfo = newinfo.GetStoreDailyInfo(dejistoreId); string dejiStoreProductInfo = GetStoreProductTransactionInfo(dejiStoreInfo); int dejiBHGstoreId = SalesDataSystem.SystemDatas.StoreSysData.GetStoreIDByName("德基BHG店"); StoreDailyInfo dejiBhgStoreInfo = newinfo.GetStoreDailyInfo(dejiBHGstoreId); string dejiBhgProductInfo = GetStoreProductTransactionInfo(dejiBhgStoreInfo); string dejiStoreDailyInfo = string.Format(DailySalesDataDejiStorePart, index, month, dejiStoreInfo.LeastSales / 10000f, dejiStoreInfo.TargetSales / 10000f, year, month, day, (dejiStoreInfo.TodayEnterCustomerNumber + dejiBhgStoreInfo.TodayEnterCustomerNumber), (dejiBhgStoreInfo.MonthEnterCustomerNubmer + dejiBhgStoreInfo.MonthEnterCustomerNubmer), (dejiStoreInfo.TodyTransaction + dejiBhgStoreInfo.TodyTransaction), (dejiStoreInfo.MonthTransaction + dejiBhgStoreInfo.MonthTransaction) , (dejiStoreInfo.TodaySales + dejiBhgStoreInfo.TodaySales), dejiStoreProductInfo, dejiBhgProductInfo, (dejiStoreInfo.MonthTotalSales + dejiBhgStoreInfo.MonthTotalSales), ((dejiStoreInfo.CompletionRate + dejiBhgStoreInfo.CompletionRate) * 100).ToString("F2"), (dejiStoreInfo.OldCustomerSales), (dejiStoreInfo.OldCustomerCount), (dejiStoreInfo.NewCustomerSales), (dejiStoreInfo.NewCustomerCount), dejiBhgStoreInfo.MonthTotalSales, (dejiBhgStoreInfo.NewCustomerCount + dejiBhgStoreInfo.OldCustomerCount)); strb.Append(dejiStoreDailyInfo); index++; #endregion strb.Append(Environment.NewLine); #region 客服部处理 int broadcastStoreId = SalesDataSystem.SystemDatas.StoreSysData.GetStoreIDByName("广播进线"); StoreDailyInfo broadCastStoreInfo = newinfo.GetStoreDailyInfo(broadcastStoreId); string broadCastProductInfo = GetStoreProductTransactionInfo(broadCastStoreInfo); int afterSaleStoreId = SalesDataSystem.SystemDatas.StoreSysData.GetStoreIDByName("售后维护"); StoreDailyInfo afterSaleStoreInfo = newinfo.GetStoreDailyInfo(afterSaleStoreId); string afterSaleProductInfo = GetStoreProductTransactionInfo(afterSaleStoreInfo); string customerServiceDailyInfo = string.Format(DailySalesDataCustomerServiceStorePart, index, month, broadCastStoreInfo.LeastSales / 10000f, broadCastStoreInfo.TargetSales / 10000f, year, month, day, broadCastStoreInfo.TodyTransaction, broadCastStoreInfo.TodaySales, broadCastProductInfo, broadCastStoreInfo.MonthTotalSales, afterSaleStoreInfo.TodyTransaction, afterSaleStoreInfo.TodaySales, afterSaleProductInfo, afterSaleStoreInfo.MonthTotalSales, (broadCastStoreInfo.MonthTotalSales + afterSaleStoreInfo.MonthTotalSales), (broadCastStoreInfo.NewCustomerSales + afterSaleStoreInfo.NewCustomerSales), (broadCastStoreInfo.NewCustomerCount + afterSaleStoreInfo.NewCustomerCount), (broadCastStoreInfo.OldCustomerSales + afterSaleStoreInfo.OldCustomerSales), (broadCastStoreInfo.OldCustomerCount + afterSaleStoreInfo.OldCustomerCount), (((broadCastStoreInfo.CompletionRate + afterSaleStoreInfo.CompletionRate) * 100).ToString("F2"))); strb.Append(customerServiceDailyInfo); #endregion exportInfo = strb.ToString(); File.WriteAllText(persistPath, exportInfo); string rankingPersistPath = string.Format("{0}/{1}/{2}/{3}/{4}ExportData_Ranking.txt", Application.persistentDataPath, "ExportData", year, month, day); System.Text.StringBuilder rankstrb = new System.Text.StringBuilder(500); string rankingheadtitle = "门店,姓名,保底(万),目标(万),排名,业绩(元),完成率(100%)" + Environment.NewLine; rankstrb.Append(rankingheadtitle); string rankinfoformat = "{0},{1},{2},{3},{4},{5},{6}%" + Environment.NewLine; for (int i = 0; i < newinfo.AllSalesPersonRankInfos.Count; i++) { SalesPersonRankInfo rankinginfo = newinfo.AllSalesPersonRankInfos[i]; string singleinfo = string.Format(rankinfoformat, rankinginfo.StoreName, rankinginfo.SalesPsersonName, rankinginfo.LeastSales / 10000, rankinginfo.TargetSales / 10000, rankinginfo.Ranking, rankinginfo.PerformanceSales, (int)(rankinginfo.CompleteRate * 100)); rankstrb.Append(singleinfo); } exportInfo = rankstrb.ToString(); File.WriteAllText(rankingPersistPath, exportInfo); OpenFolder(folder); }