438 lines
25 KiB
C#
438 lines
25 KiB
C#
|
|
using MyCode.Project.Domain.Config;
|
|||
|
|
using MyCode.Project.Domain.Message.Request.Bfy;
|
|||
|
|
using MyCode.Project.Domain.Message.Request.LxmZHMDReport;
|
|||
|
|
using MyCode.Project.Domain.Message.Response.LxmZHMDReport;
|
|||
|
|
using MyCode.Project.Domain.Model;
|
|||
|
|
using MyCode.Project.Infrastructure.Common;
|
|||
|
|
using MyCode.Project.Infrastructure.Extensions;
|
|||
|
|
using MyCode.Project.OutSideService;
|
|||
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Text;
|
|||
|
|
using System.Threading.Tasks;
|
|||
|
|
|
|||
|
|
namespace MyCode.Project.Services.BLL
|
|||
|
|
{
|
|||
|
|
public class ReportBLL
|
|||
|
|
{
|
|||
|
|
#region 初始化
|
|||
|
|
private readonly IBfyService _bfyService;
|
|||
|
|
|
|||
|
|
|
|||
|
|
public ReportBLL(IBfyService bfyService)
|
|||
|
|
{
|
|||
|
|
_bfyService = bfyService;
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#region GetSingleShopOperate 单店运营核心指标数据转换
|
|||
|
|
/// <summary>
|
|||
|
|
/// 单店运营核心指标数据转换
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="model"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public SingleShopOperateResp GetSingleShopOperate(RpShopZhenduansibiaoYejiData model)
|
|||
|
|
{
|
|||
|
|
SingleShopOperateResp resp = new SingleShopOperateResp();
|
|||
|
|
if (model == null) { return resp; }
|
|||
|
|
resp.TotalCollection = model.ZongShouKuan.SafeValue();
|
|||
|
|
resp.TotalPerformance = model.ZongYeJi.SafeValue();
|
|||
|
|
resp.OrnamentsPercent = model.ShiPinBiLi.SafeValue().ToString()+"%";
|
|||
|
|
resp.CosmeticsPercent = model.HuaZhuangPinBiLi.SafeValue().ToString() + "%";
|
|||
|
|
resp.SkinCarePercent = model.HuFuPinBiLi.SafeValue().ToString() + "%";
|
|||
|
|
resp.ServicePerformancePercent = model.FuWuYeJiBiLi.SafeValue().ToString() + "%";
|
|||
|
|
resp.OtherPerformancePercent = model.QiTaYeJiBiLi.SafeValue().ToString() + "%";
|
|||
|
|
resp.MonthExpandCustomerQty = model.YueTuoKeTiYan.SafeValue();
|
|||
|
|
resp.MonthNewCustomerFirstQty = model.YueXinKeShouDan.SafeValue();
|
|||
|
|
resp.MonthNewCustomerFirstQty2 = model.YueXinKeShouDan2.SafeValue();
|
|||
|
|
resp.MonthNewCustomerFirstQty3 = model.YueXinKeShouDan3.SafeValue();
|
|||
|
|
resp.FirstOrderAvg = model.ShouDanKeDan.SafeValue();
|
|||
|
|
resp.MonthUpgradeRepurchaseQty = model.YueShengDanRenShu.SafeValue();
|
|||
|
|
resp.MonthUpgradeRepurchaseQty2 = model.YueShengDanRenShu2.SafeValue();
|
|||
|
|
resp.MonthUpgradeRepurchaseQty3 = model.YueShengDanRenShu3.SafeValue();
|
|||
|
|
resp.RepurchaseOrderAvg = model.FuGouKeDan.SafeValue();
|
|||
|
|
resp.Total = model.TaoCanZongRenShu.SafeValue();
|
|||
|
|
resp.OneSets = model.TaoCan1taoRenShu.SafeValue();
|
|||
|
|
resp.TwoSets = model.TaoCan2taoRenShu.SafeValue();
|
|||
|
|
resp.MoreThanTwoSets = model.TaoCan3taoRenShu.SafeValue();
|
|||
|
|
resp.SetMealTotal = model.TaoCanZongShu.SafeValue();
|
|||
|
|
resp.NewAddSetMeal = model.TaoCanXinZengShu.SafeValue();
|
|||
|
|
resp.MoreThanTwiceMonth = model.TaoCanHuoYue1m2.SafeValue();
|
|||
|
|
resp.OnceMonth = model.TaoCanHuoYue1m1.SafeValue();
|
|||
|
|
resp.OnceInFebruary = model.TaoCanHuoYue2m1;
|
|||
|
|
resp.OnceInMarch = model.TaoCanHuoYue3m2;
|
|||
|
|
resp.Personal = model.HeXiaoRenShu.SafeValue();
|
|||
|
|
resp.Frequency = model.HeXiaoCiShu.SafeValue();
|
|||
|
|
return resp;
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#region GetSingleShopOperateSummary 单店运营核心指标列表数据转换
|
|||
|
|
/// <summary>
|
|||
|
|
/// 单店运营核心指标列表数据转换
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="modelList"></param>
|
|||
|
|
/// <param name="searchList"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public List<SingleShopOperateSummaryResp> GetSingleShopOperateSummary(List<RpShopZhenduansibiaoYejiData> modelList,List<ShopDiagnosisSearchResp> searchList
|
|||
|
|
, List<SingleShopOperateSummaryResp> yangbangdianList, List<SingleShopOperateSummaryResp> tuoKeList)
|
|||
|
|
{
|
|||
|
|
List<SingleShopOperateSummaryResp> respList = new List<SingleShopOperateSummaryResp>();
|
|||
|
|
//searchList.ForEach(x => {
|
|||
|
|
// var model = modelList.Where(p => p.Id == x.Id).FirstOrDefault();
|
|||
|
|
// SingleShopOperateSummaryResp resp = new SingleShopOperateSummaryResp();
|
|||
|
|
// resp.Id = x.Id;
|
|||
|
|
// resp.ShopId = x.ShopId;
|
|||
|
|
// resp.DisplayTimeStr = x.DisplayTimeStr;
|
|||
|
|
// resp.UseDays = x.UseDays.SafeValue();
|
|||
|
|
// resp.Code = x.Code;
|
|||
|
|
// resp.ShopName = x.ShopName;
|
|||
|
|
// resp.CustomerName = x.CustomerName;
|
|||
|
|
// resp.ProvinceName = x.ProvinceName;
|
|||
|
|
// resp.CityName = x.CityName;
|
|||
|
|
// resp.ZoneName = x.ZoneName;
|
|||
|
|
// resp.TotalCollection = model.ZongShouKuan.SafeValue();
|
|||
|
|
// resp.TotalPerformance = model.ZongYeJi.SafeValue();
|
|||
|
|
// resp.OrnamentsPercent = model.ShiPinBiLi.SafeValue().ToString() + "%";
|
|||
|
|
// resp.CosmeticsPercent = model.HuaZhuangPinBiLi.SafeValue().ToString() + "%";
|
|||
|
|
// resp.SkinCarePercent = model.HuFuPinBiLi.SafeValue().ToString() + "%";
|
|||
|
|
// resp.ServicePerformancePercent = model.FuWuYeJiBiLi.SafeValue().ToString() + "%";
|
|||
|
|
// resp.OtherPerformancePercent = model.QiTaYeJiBiLi.SafeValue().ToString() + "%";
|
|||
|
|
// resp.MonthExpandCustomerQty = model.YueTuoKeTiYan.SafeValue();
|
|||
|
|
// resp.MonthNewCustomerFirstQty = model.YueXinKeShouDan.SafeValue();
|
|||
|
|
// resp.MonthNewCustomerFirstQty2 = model.YueXinKeShouDan2.SafeValue();
|
|||
|
|
// resp.MonthNewCustomerFirstQty3 = model.YueXinKeShouDan3.SafeValue();
|
|||
|
|
// resp.FirstOrderAvg = model.ShouDanKeDan.SafeValue();
|
|||
|
|
// resp.MonthUpgradeRepurchaseQty = model.YueShengDanRenShu.SafeValue();
|
|||
|
|
// resp.MonthUpgradeRepurchaseQty2 = model.YueShengDanRenShu2.SafeValue();
|
|||
|
|
// resp.MonthUpgradeRepurchaseQty3 = model.YueShengDanRenShu3.SafeValue();
|
|||
|
|
// resp.RepurchaseOrderAvg = model.FuGouKeDan.SafeValue();
|
|||
|
|
// resp.Total = model.TaoCanZongRenShu.SafeValue();
|
|||
|
|
// resp.OneSets = model.TaoCan1taoRenShu.SafeValue();
|
|||
|
|
// resp.TwoSets = model.TaoCan2taoRenShu.SafeValue();
|
|||
|
|
// resp.MoreThanTwoSets = model.TaoCan3taoRenShu.SafeValue();
|
|||
|
|
// resp.SetMealTotal = model.TaoCanZongShu.SafeValue();
|
|||
|
|
// resp.NewAddSetMeal = model.TaoCanXinZengShu.SafeValue();
|
|||
|
|
// resp.MoreThanTwiceMonth = model.TaoCanHuoYue1m2.SafeValue();
|
|||
|
|
// resp.OnceMonth = model.TaoCanHuoYue1m1.SafeValue();
|
|||
|
|
// resp.OnceInFebruary = model.TaoCanHuoYue2m1;
|
|||
|
|
// resp.OnceInMarch = model.TaoCanHuoYue3m2;
|
|||
|
|
// resp.Personal = model.HeXiaoRenShu.SafeValue();
|
|||
|
|
// resp.Frequency = model.HeXiaoCiShu.SafeValue();
|
|||
|
|
// respList.Add(resp);
|
|||
|
|
//});
|
|||
|
|
respList = (from x in searchList
|
|||
|
|
join model in modelList on x.Id equals model.Id
|
|||
|
|
join n in yangbangdianList.DefaultIfEmpty() on new { x.ShopId, x.Days } equals new { n?.ShopId, n?.Days } into ngroup
|
|||
|
|
from nitem in ngroup.DefaultIfEmpty()
|
|||
|
|
join k in tuoKeList.DefaultIfEmpty() on new { x.ShopId, x.Days } equals new { k?.ShopId, k?.Days } into kgroup
|
|||
|
|
from kItem in kgroup.DefaultIfEmpty()
|
|||
|
|
select new SingleShopOperateSummaryResp
|
|||
|
|
{
|
|||
|
|
Id = x.Id,
|
|||
|
|
ShopId = x.ShopId,
|
|||
|
|
DisplayTimeStr = x.DisplayTimeStr,
|
|||
|
|
UseDays = x.UseDays.SafeValue(),
|
|||
|
|
Code = x.Code,
|
|||
|
|
ShopName = x.ShopName,
|
|||
|
|
CustomerName = x.CustomerName,
|
|||
|
|
ProvinceName = x.ProvinceName,
|
|||
|
|
CityName = x.CityName,
|
|||
|
|
ZoneName = x.ZoneName,
|
|||
|
|
TotalCollection = model.ZongShouKuan.SafeValue(),
|
|||
|
|
TotalPerformance = model.ZongYeJi.SafeValue(),
|
|||
|
|
OrnamentsPercent = model.ShiPinBiLi.SafeValue().ToString() + "%",
|
|||
|
|
CosmeticsPercent = model.HuaZhuangPinBiLi.SafeValue().ToString() + "%",
|
|||
|
|
SkinCarePercent = model.HuFuPinBiLi.SafeValue().ToString() + "%",
|
|||
|
|
ServicePerformancePercent = model.FuWuYeJiBiLi.SafeValue().ToString() + "%",
|
|||
|
|
OtherPerformancePercent = model.QiTaYeJiBiLi.SafeValue().ToString() + "%",
|
|||
|
|
MonthExpandCustomerQty = model.YueTuoKeTiYan.SafeValue(),
|
|||
|
|
MonthNewCustomerFirstQty = model.YueXinKeShouDan.SafeValue(),
|
|||
|
|
MonthNewCustomerFirstQty2 = model.YueXinKeShouDan2.SafeValue(),
|
|||
|
|
MonthNewCustomerFirstQty3 = model.YueXinKeShouDan3.SafeValue(),
|
|||
|
|
FirstOrderAvg = model.ShouDanKeDan.SafeValue(),
|
|||
|
|
MonthUpgradeRepurchaseQty = model.YueShengDanRenShu.SafeValue(),
|
|||
|
|
MonthUpgradeRepurchaseQty2 = model.YueShengDanRenShu2.SafeValue(),
|
|||
|
|
MonthUpgradeRepurchaseQty3 = model.YueShengDanRenShu3.SafeValue(),
|
|||
|
|
RepurchaseOrderAvg = model.FuGouKeDan.SafeValue(),
|
|||
|
|
Total = model.TaoCanZongRenShu.SafeValue(),
|
|||
|
|
OneSets = model.TaoCan1taoRenShu.SafeValue(),
|
|||
|
|
TwoSets = model.TaoCan2taoRenShu.SafeValue(),
|
|||
|
|
MoreThanTwoSets = model.TaoCan3taoRenShu.SafeValue(),
|
|||
|
|
SetMealTotal = model.TaoCanZongShu.SafeValue(),
|
|||
|
|
NewAddSetMeal = model.TaoCanXinZengShu.SafeValue(),
|
|||
|
|
MoreThanTwiceMonth = model.TaoCanHuoYue1m2.SafeValue(),
|
|||
|
|
OnceMonth = model.TaoCanHuoYue1m1.SafeValue(),
|
|||
|
|
OnceInFebruary = model.TaoCanHuoYue2m1,
|
|||
|
|
OnceInMarch = model.TaoCanHuoYue3m2,
|
|||
|
|
Personal = model.HeXiaoRenShu.SafeValue(),
|
|||
|
|
Frequency = model.HeXiaoCiShu.SafeValue(),
|
|||
|
|
LaoKeYeJi = nitem?.LaoKeYeJi ?? 0,
|
|||
|
|
XinKeYeJi = nitem?.XinKeYeJi ?? 0,
|
|||
|
|
LaoKeZhanBi = nitem?.LaoKeZhanBi ?? "--%",
|
|||
|
|
XinKeZhanBi = nitem?.XinKeZhanBi ?? "--%",
|
|||
|
|
TuoKeRenShu = kItem?.TuoKeRenShu ?? 0,
|
|||
|
|
XinTuoKeRenShu = kItem?.XinTuoKeRenShu ?? 0,
|
|||
|
|
LaoTuoKeRenShu = kItem?.LaoTuoKeRenShu ?? 0,
|
|||
|
|
XinTuoKeZhanBi = kItem?.XinTuoKeZhanBi ?? "--%",
|
|||
|
|
LaoTuoKeZhanBi = kItem?.LaoTuoKeZhanBi ?? "--%",
|
|||
|
|
|
|||
|
|
TiYanRenShu = kItem?.TiYanRenShu ?? 0,
|
|||
|
|
LiuKeRenShu = kItem?.LiuKeRenShu ?? 0,
|
|||
|
|
SuoKeRenShu = kItem?.SuoKeRenShu ?? 0,
|
|||
|
|
TuoLiuZhuanHuaLv = kItem?.TuoLiuZhuanHuaLv ?? "--%",
|
|||
|
|
}).ToList();
|
|||
|
|
|
|||
|
|
|
|||
|
|
return respList;
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#region GetProductItemAnalysis 产品品项分析
|
|||
|
|
/// <summary>
|
|||
|
|
/// 产品品项分析数据转换
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="model"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public ProductItemAnalysisResp GetProductItemAnalysis(RpShopZhenduansibiaoKucunData model)
|
|||
|
|
{
|
|||
|
|
ProductItemAnalysisResp resp = new ProductItemAnalysisResp();
|
|||
|
|
if (model == null) { return resp; }
|
|||
|
|
resp.TotalStock = model.ZongKuCun.SafeValue();
|
|||
|
|
resp.ExpandCustomerSetsStock = model.TuoKeTaoShu.SafeValue();
|
|||
|
|
resp.FirstOrderSetsStock = model.ShouDanTaoShu.SafeValue();
|
|||
|
|
resp.OneDimensionSetsStock = model.YiWeiTaoShu.SafeValue();
|
|||
|
|
resp.TwoDimensionSetsStock = model.ErWeiTaoShu.SafeValue();
|
|||
|
|
resp.ThreeDimensionSetsStock = model.SanWeiTaoShu.SafeValue();
|
|||
|
|
resp.FourDimensionSetsStock = model.SiWeiTaoShu.SafeValue();
|
|||
|
|
resp.StackedSetsStock = model.DieJiaTaoShu.SafeValue();
|
|||
|
|
resp.OrnamentsStock = model.ShiPinKuCun.SafeValue();
|
|||
|
|
resp.CosmeticsStock = model.HuaZhuangPinKuCun.SafeValue();
|
|||
|
|
resp.HomeCareStock = model.JiaHuKuCun.SafeValue();
|
|||
|
|
resp.OtherStock = model.QiTaHuFuKuCun.SafeValue();
|
|||
|
|
resp.OneName = model.Top1Name;
|
|||
|
|
resp.OneQty = model.Top1Qty.SafeValue();
|
|||
|
|
resp.TwoName = model.Top2Name;
|
|||
|
|
resp.TwoQty = model.Top2Qty.SafeValue();
|
|||
|
|
resp.ThreeName = model.Top3Name;
|
|||
|
|
resp.ThreeQty = model.Top3Qty.SafeValue();
|
|||
|
|
resp.FourName = model.Top4Name;
|
|||
|
|
resp.FourQty = model.Top4Qty.SafeValue();
|
|||
|
|
resp.FiveName = model.Top5Name;
|
|||
|
|
resp.FiveQty = model.Top5Qty.SafeValue();
|
|||
|
|
resp.One = string.IsNullOrWhiteSpace(resp.OneName)? "" : (resp.OneName + ":" + resp.OneQty.ToString());
|
|||
|
|
resp.Two =string.IsNullOrWhiteSpace(resp.TwoName)? "" : (resp.TwoName + ":" + resp.TwoQty.ToString());
|
|||
|
|
resp.Three =string.IsNullOrWhiteSpace(resp.ThreeName)? "" : (resp.ThreeName + ":" + resp.ThreeQty.ToString());
|
|||
|
|
resp.Four = string.IsNullOrWhiteSpace(resp.FourName) ? "" : (resp.FourName + ":" + resp.FourQty.ToString());
|
|||
|
|
resp.Five =string.IsNullOrWhiteSpace(resp.FiveName)? "" : (resp.FiveName + ":" + resp.FiveQty.ToString());
|
|||
|
|
return resp;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public MonthProductItemAnalysisResp GetMonthProductItemAnalysis(RpShopZhenduansibiaoKucunData model)
|
|||
|
|
{
|
|||
|
|
MonthProductItemAnalysisResp resp = new MonthProductItemAnalysisResp();
|
|||
|
|
if (model == null) { return resp; }
|
|||
|
|
resp.TotalStock = model.ZongKuCun.SafeValue();
|
|||
|
|
resp.ExpandCustomerSetsStock = model.TuoKeTaoShu.SafeValue();
|
|||
|
|
resp.FirstOrderSetsStock = model.ShouDanTaoShu.SafeValue();
|
|||
|
|
resp.OneDimensionSetsStock = model.YiWeiTaoShu.SafeValue();
|
|||
|
|
resp.TwoDimensionSetsStock = model.ErWeiTaoShu.SafeValue();
|
|||
|
|
resp.ThreeDimensionSetsStock = model.SanWeiTaoShu.SafeValue();
|
|||
|
|
resp.FourDimensionSetsStock = model.SiWeiTaoShu.SafeValue();
|
|||
|
|
resp.StackedSetsStock = model.DieJiaTaoShu.SafeValue();
|
|||
|
|
resp.OrnamentsStock = model.ShiPinKuCun.SafeValue();
|
|||
|
|
resp.CosmeticsStock = model.HuaZhuangPinKuCun.SafeValue();
|
|||
|
|
resp.HomeCareStock = model.JiaHuKuCun.SafeValue();
|
|||
|
|
resp.OtherStock = model.QiTaHuFuKuCun.SafeValue();
|
|||
|
|
resp.OneName = model.Top1Name;
|
|||
|
|
resp.OneQty = model.Top1Qty.SafeValue();
|
|||
|
|
resp.TwoName = model.Top2Name;
|
|||
|
|
resp.TwoQty = model.Top2Qty.SafeValue();
|
|||
|
|
resp.ThreeName = model.Top3Name;
|
|||
|
|
resp.ThreeQty = model.Top3Qty.SafeValue();
|
|||
|
|
resp.FourName = model.Top4Name;
|
|||
|
|
resp.FourQty = model.Top4Qty.SafeValue();
|
|||
|
|
resp.FiveName = model.Top5Name;
|
|||
|
|
resp.FiveQty = model.Top5Qty.SafeValue();
|
|||
|
|
resp.One = resp.OneName + " " + resp.OneQty.ToString();
|
|||
|
|
resp.Two = resp.TwoName + " " + resp.TwoQty.ToString();
|
|||
|
|
resp.Three = resp.ThreeName + " " + resp.ThreeQty.ToString();
|
|||
|
|
resp.Four = resp.FourName + " " + resp.FourQty.ToString();
|
|||
|
|
resp.Five = resp.FiveName + " " + resp.FiveQty.ToString();
|
|||
|
|
return resp;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#region GetProductItemAnalysisSummary 产品品项分析列表数据转换
|
|||
|
|
/// <summary>
|
|||
|
|
/// 产品品项分析列表数据转换
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="model"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public List<ProductItemAnalysisSummaryResp> GetProductItemAnalysisSummary(List<RpShopZhenduansibiaoKucunData> modelList, List<ShopDiagnosisSearchResp> searchList)
|
|||
|
|
{
|
|||
|
|
List<ProductItemAnalysisSummaryResp> respList = new List<ProductItemAnalysisSummaryResp>();
|
|||
|
|
searchList.ForEach(x =>
|
|||
|
|
{
|
|||
|
|
var model = modelList.Where(p => p.Id == x.Id).FirstOrDefault();
|
|||
|
|
ProductItemAnalysisSummaryResp resp = new ProductItemAnalysisSummaryResp();
|
|||
|
|
resp.Id = x.Id;
|
|||
|
|
resp.ShopId = x.ShopId;
|
|||
|
|
resp.DisplayTimeStr = x.DisplayTimeStr;
|
|||
|
|
resp.UseDays = x.UseDays.SafeValue();
|
|||
|
|
resp.Code = x.Code;
|
|||
|
|
resp.ShopName = x.ShopName;
|
|||
|
|
resp.CustomerName = x.CustomerName;
|
|||
|
|
resp.ProvinceName = x.ProvinceName;
|
|||
|
|
resp.CityName = x.CityName;
|
|||
|
|
resp.ZoneName = x.ZoneName;
|
|||
|
|
resp.TotalStock = model.ZongKuCun.SafeValue();
|
|||
|
|
resp.ExpandCustomerSetsStock = model.TuoKeTaoShu.SafeValue();
|
|||
|
|
resp.FirstOrderSetsStock = model.ShouDanTaoShu.SafeValue();
|
|||
|
|
resp.OneDimensionSetsStock = model.YiWeiTaoShu.SafeValue();
|
|||
|
|
resp.TwoDimensionSetsStock = model.ErWeiTaoShu.SafeValue();
|
|||
|
|
resp.ThreeDimensionSetsStock = model.SanWeiTaoShu.SafeValue();
|
|||
|
|
resp.FourDimensionSetsStock = model.SiWeiTaoShu.SafeValue();
|
|||
|
|
resp.StackedSetsStock = model.DieJiaTaoShu.SafeValue();
|
|||
|
|
resp.OrnamentsStock = model.ShiPinKuCun.SafeValue();
|
|||
|
|
resp.CosmeticsStock = model.HuaZhuangPinKuCun.SafeValue();
|
|||
|
|
resp.HomeCareStock = model.JiaHuKuCun.SafeValue();
|
|||
|
|
resp.OtherStock = model.QiTaHuFuKuCun.SafeValue();
|
|||
|
|
resp.OneName = model.Top1Name;
|
|||
|
|
resp.OneQty = model.Top1Qty.SafeValue();
|
|||
|
|
resp.TwoName = model.Top2Name;
|
|||
|
|
resp.TwoQty = model.Top2Qty.SafeValue();
|
|||
|
|
resp.ThreeName = model.Top3Name;
|
|||
|
|
resp.ThreeQty = model.Top3Qty.SafeValue();
|
|||
|
|
resp.FourName = model.Top4Name;
|
|||
|
|
resp.FourQty = model.Top4Qty.SafeValue();
|
|||
|
|
resp.FiveName = model.Top5Name;
|
|||
|
|
resp.FiveQty = model.Top5Qty.SafeValue();
|
|||
|
|
resp.One = string.IsNullOrWhiteSpace(resp.OneName) ? "" : (resp.OneName + ":" + resp.OneQty.ToString());
|
|||
|
|
resp.Two = string.IsNullOrWhiteSpace(resp.TwoName) ? "" : (resp.TwoName + ":" + resp.TwoQty.ToString());
|
|||
|
|
resp.Three = string.IsNullOrWhiteSpace(resp.ThreeName) ? "" : (resp.ThreeName + ":" + resp.ThreeQty.ToString());
|
|||
|
|
resp.Four = string.IsNullOrWhiteSpace(resp.FourName) ? "" : (resp.FourName + ":" + resp.FourQty.ToString());
|
|||
|
|
resp.Five = string.IsNullOrWhiteSpace(resp.FiveName) ? "" : (resp.FiveName + ":" + resp.FiveQty.ToString());
|
|||
|
|
respList.Add(resp);
|
|||
|
|
});
|
|||
|
|
return respList;
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#region GetShopDiagnosisReportExport 门店诊断报表导出数据转换
|
|||
|
|
/// <summary>
|
|||
|
|
/// 门店诊断报表导出数据转换
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="shop"></param>
|
|||
|
|
/// <param name="model"></param>
|
|||
|
|
/// <param name="model2"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public ShopDiagnosisReportExportResp GetShopDiagnosisReportExport(ShopDiagnosisReportResp shop, RpShopZhenduansibiaoYejiData model, RpShopZhenduansibiaoKucunData model2)
|
|||
|
|
{
|
|||
|
|
ShopDiagnosisReportExportResp resp = new ShopDiagnosisReportExportResp();
|
|||
|
|
resp.Id = shop.Id;
|
|||
|
|
resp.DisplayTimeStr = shop.DisplayTimeStr;
|
|||
|
|
resp.DisplayTime = shop.DisplayTime;
|
|||
|
|
resp.ShopId = shop.ShopId;
|
|||
|
|
resp.Code = shop.Code;
|
|||
|
|
resp.ShopName = shop.ShopName;
|
|||
|
|
resp.CustomerName = shop.CustomerName;
|
|||
|
|
//单店运营核心指标
|
|||
|
|
if (model != null)
|
|||
|
|
{
|
|||
|
|
resp.TotalCollection = model.ZongShouKuan.SafeValue();
|
|||
|
|
resp.TotalPerformance = model.ZongYeJi.SafeValue();
|
|||
|
|
resp.OrnamentsPercent = model.ShiPinBiLi.SafeValue().ToString() + "%";
|
|||
|
|
resp.CosmeticsPercent = model.HuaZhuangPinBiLi.SafeValue().ToString() + "%";
|
|||
|
|
resp.SkinCarePercent = model.HuFuPinBiLi.SafeValue().ToString() + "%";
|
|||
|
|
resp.ServicePerformancePercent = model.FuWuYeJiBiLi.SafeValue().ToString() + "%";
|
|||
|
|
resp.OtherPerformancePercent = model.QiTaYeJiBiLi.SafeValue().ToString() + "%";
|
|||
|
|
resp.MonthExpandCustomerQty = model.YueTuoKeTiYan.SafeValue();
|
|||
|
|
resp.MonthNewCustomerFirstQty = model.YueXinKeShouDan.SafeValue();
|
|||
|
|
resp.MonthNewCustomerFirstQty2 = model.YueXinKeShouDan2.SafeValue();
|
|||
|
|
resp.MonthNewCustomerFirstQty3 = model.YueXinKeShouDan3.SafeValue();
|
|||
|
|
resp.FirstOrderAvg = model.ShouDanKeDan.SafeValue();
|
|||
|
|
resp.MonthUpgradeRepurchaseQty = model.YueShengDanRenShu.SafeValue();
|
|||
|
|
resp.MonthUpgradeRepurchaseQty2 = model.YueShengDanRenShu2.SafeValue();
|
|||
|
|
resp.MonthUpgradeRepurchaseQty3 = model.YueShengDanRenShu3.SafeValue();
|
|||
|
|
resp.RepurchaseOrderAvg = model.FuGouKeDan.SafeValue();
|
|||
|
|
resp.Total = model.TaoCanZongRenShu.SafeValue();
|
|||
|
|
resp.OneSets = model.TaoCan1taoRenShu.SafeValue();
|
|||
|
|
resp.TwoSets = model.TaoCan2taoRenShu.SafeValue();
|
|||
|
|
resp.MoreThanTwoSets = model.TaoCan3taoRenShu.SafeValue();
|
|||
|
|
resp.SetMealTotal = model.TaoCanZongShu.SafeValue();
|
|||
|
|
resp.NewAddSetMeal = model.TaoCanXinZengShu.SafeValue();
|
|||
|
|
resp.MoreThanTwiceMonth = model.TaoCanHuoYue1m2.SafeValue();
|
|||
|
|
resp.OnceMonth = model.TaoCanHuoYue1m1.SafeValue();
|
|||
|
|
resp.OnceInFebruary = model.TaoCanHuoYue2m1;
|
|||
|
|
resp.OnceInMarch = model.TaoCanHuoYue3m2;
|
|||
|
|
resp.Personal = model.HeXiaoRenShu.SafeValue();
|
|||
|
|
resp.Frequency = model.HeXiaoCiShu.SafeValue();
|
|||
|
|
}
|
|||
|
|
//产品品项分析
|
|||
|
|
if (model2 != null)
|
|||
|
|
{
|
|||
|
|
resp.TotalStock = model2.ZongKuCun.SafeValue();
|
|||
|
|
resp.ExpandCustomerSetsStock = model2.TuoKeTaoShu.SafeValue();
|
|||
|
|
resp.FirstOrderSetsStock = model2.ShouDanTaoShu.SafeValue();
|
|||
|
|
resp.OneDimensionSetsStock = model2.YiWeiTaoShu.SafeValue();
|
|||
|
|
resp.TwoDimensionSetsStock = model2.ErWeiTaoShu.SafeValue();
|
|||
|
|
resp.ThreeDimensionSetsStock = model2.SanWeiTaoShu.SafeValue();
|
|||
|
|
resp.FourDimensionSetsStock = model2.SiWeiTaoShu.SafeValue();
|
|||
|
|
resp.StackedSetsStock = model2.DieJiaTaoShu.SafeValue();
|
|||
|
|
resp.OrnamentsStock = model2.ShiPinKuCun.SafeValue();
|
|||
|
|
resp.CosmeticsStock = model2.HuaZhuangPinKuCun.SafeValue();
|
|||
|
|
resp.HomeCareStock = model2.JiaHuKuCun.SafeValue();
|
|||
|
|
resp.OtherStock = model2.QiTaHuFuKuCun.SafeValue();
|
|||
|
|
resp.OneName = model2.Top1Name;
|
|||
|
|
resp.OneQty = model2.Top1Qty.SafeValue();
|
|||
|
|
resp.TwoName = model2.Top2Name;
|
|||
|
|
resp.TwoQty = model2.Top2Qty.SafeValue();
|
|||
|
|
resp.ThreeName = model2.Top3Name;
|
|||
|
|
resp.ThreeQty = model2.Top3Qty.SafeValue();
|
|||
|
|
resp.FourName = model2.Top4Name;
|
|||
|
|
resp.FourQty = model2.Top4Qty.SafeValue();
|
|||
|
|
resp.FiveName = model2.Top5Name;
|
|||
|
|
resp.FiveQty = model2.Top5Qty.SafeValue();
|
|||
|
|
resp.One = string.IsNullOrWhiteSpace(resp.OneName) ? "" : (resp.OneName + ":" + resp.OneQty.ToString());
|
|||
|
|
resp.Two = string.IsNullOrWhiteSpace(resp.TwoName) ? "" : (resp.TwoName + ":" + resp.TwoQty.ToString());
|
|||
|
|
resp.Three = string.IsNullOrWhiteSpace(resp.ThreeName) ? "" : (resp.ThreeName + ":" + resp.ThreeQty.ToString());
|
|||
|
|
resp.Four = string.IsNullOrWhiteSpace(resp.FourName) ? "" : (resp.FourName + ":" + resp.FourQty.ToString());
|
|||
|
|
resp.Five = string.IsNullOrWhiteSpace(resp.FiveName) ? "" : (resp.FiveName + ":" + resp.FiveQty.ToString());
|
|||
|
|
}
|
|||
|
|
return resp;
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#region GetPowerShopIds(得到当前账号可以看到的店铺列表)
|
|||
|
|
/// <summary>
|
|||
|
|
/// 得到当前账号可以看到的店铺列表,为null是没有权限,而返回[]则为全部权限
|
|||
|
|
/// </summary>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public List<string> GetPowerShopIds(Guid userId)
|
|||
|
|
{
|
|||
|
|
return CacheHelper.GetCacheValue<List<string>>($"GetPowerShopIds{userId}",() => {
|
|||
|
|
|
|||
|
|
//获取当前用户的店铺id列表
|
|||
|
|
var bfyReq = new ShopListByLoginIdReq() { Json = userId, LxmZHMDReportKey = SystemConfig.LxmZHMDReportKey };
|
|||
|
|
|
|||
|
|
//用户可查看的店铺列表
|
|||
|
|
var powerIdList = _bfyService.GetShopListByLoginId(bfyReq,1);
|
|||
|
|
|
|||
|
|
//没有权限,直接返回空数据
|
|||
|
|
if (powerIdList == null) { return null; }
|
|||
|
|
|
|||
|
|
//店铺权限返回[]则为全部店铺权限
|
|||
|
|
if (powerIdList.Count == 0) { return new List<string>(); }
|
|||
|
|
|
|||
|
|
return powerIdList;
|
|||
|
|
|
|||
|
|
},60);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
}
|
|||
|
|
}
|