using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Web.Http; using System.Web.Http.Description; using SuperMap.RealEstate.CoreFrameWork; using SuperMap.RealEstate.CoreFrameWork.Dictionary.Business; using MSPB = SuperMap.RealEstate.MobileServicePlatform.Business; using ESCM = EShang.Common.Model; using ESCom = EShang.Common; using EShangApi.Models; using HZQR.Common; namespace EShangApi.Controllers { /// /// 营收信息接口【驿行畅旅】 /// public class RevenueController : BaseController { /// /// 合作商户平台Url,用于上传的图片线上url用 /// protected static string _CoopMerchantUrl = ConfigurationManager.AppSettings["CoopMerchantUrls"].ToString(); #region 方法 -> 获取营收趋势数据 /// /// 获取营收趋势数据 /// /// 服务区内码 /// 统计类型(Year:年报表,Month:月报表,Week:周报表) /// 报表类型(Revenue:营收金额,Ticke:订单数,Average:客单均价) /// 服务区类型(1000:全部,1010:服务区,1020:区域) /// 统计时间 /// 省份编号 /// [AcceptVerbs("GET", "POST")] [Route("WeChat/GetRevenueTrends")] [ResponseType(typeof(JsonMsg))] public IHttpActionResult GetRevenueTrends(int? Serverpart_Id, string Statictics_Type, string Report_Type, string groupType, DateTime? Statistics_Date, string pushProvinceCode) { try { DataTable RevenueTable = new DataTable(); ESCM.RevenueModel revenueModel = new ESCM.RevenueModel(); //通过统计类型获取营收合计信息 if (pushProvinceCode == "0") { RevenueTable = ESCom.Revenue.GetRevenueTrendsByCashe(transaction, Serverpart_Id, Statictics_Type, groupType, Statistics_Date.Value, pushProvinceCode); } else { RevenueTable = ESCom.Revenue.GetRevenueTrends(transaction, Serverpart_Id, Statictics_Type, groupType, Statistics_Date.Value, pushProvinceCode); } if (RevenueTable.Rows.Count > 0) { //获取营收按天统计详情 DataTable RevenueDetilsTable = new DataTable(); if (pushProvinceCode == "0") { RevenueDetilsTable = ESCom.Revenue.GetRevenueTrendsDetilsFromCashe(transaction, Serverpart_Id, Statictics_Type, groupType, Statistics_Date.Value, pushProvinceCode); } else { RevenueDetilsTable = ESCom.Revenue.GetRevenueTrendsDetils(transaction, Serverpart_Id, Statictics_Type, groupType, Statistics_Date.Value, pushProvinceCode); } //营收详情列表 List listRevenueDetils = new List(); //客单详情列表 List listTickeDetils = new List(); //平均价详情列表 List listAverageDetils = new List(); //当前周(月)的营收合计信息 double.TryParse(RevenueTable.Compute("SUM(TICKETCOUNT)", "").ToString(), out double TICKETCOUNT); double.TryParse(RevenueTable.Compute("SUM(TOTALSELLAMOUNT)", "").ToString(), out double TOTALSELLAMOUNT); //环比周(月)的营收合计信息 double.TryParse(RevenueTable.Compute("SUM(LASTTICKETCOUNT)", "").ToString(), out double LASTTICKETCOUNT); double.TryParse(RevenueTable.Compute("SUM(LASTTOTALSELLAMOUNT)", "").ToString(), out double LASTTOTALSELLAMOUNT); //四川省需要去掉大巴券和会员消费数据 if (pushProvinceCode == "510000") { double.TryParse(RevenueTable.Compute("SUM(VIPPERSON)", "").ToString(), out double VIPPERSON);//油非互动 double.TryParse(RevenueTable.Compute("SUM(COSTBILL)", "").ToString(), out double COSTBILL);//大巴券 double.TryParse(RevenueTable.Compute("SUM(CREDITCARD)", "").ToString(), out double CREDITCARD);//企业会员 double.TryParse(RevenueTable.Compute("SUM(LASTVIPPERSON)", "").ToString(), out double LASTVIPPERSON);//油非互动 double.TryParse(RevenueTable.Compute("SUM(LASTCOSTBILL)", "").ToString(), out double LASTCOSTBILL);//大巴券 double.TryParse(RevenueTable.Compute("SUM(LASTCREDITCARD)", "").ToString(), out double LASTCREDITCARD);//企业会员 TOTALSELLAMOUNT = (TOTALSELLAMOUNT - VIPPERSON - COSTBILL - CREDITCARD).Round(2); LASTTOTALSELLAMOUNT = (LASTTOTALSELLAMOUNT - LASTVIPPERSON - LASTCOSTBILL - LASTCREDITCARD).Round(2); } //计算客单均价 double LASTAVERAGE_AOMOUNT = (LASTTOTALSELLAMOUNT / LASTTICKETCOUNT).Round(2); double AVERAGE_AOMOUNT = (TOTALSELLAMOUNT / TICKETCOUNT).Round(2); //填入数据 revenueModel.Average_Amount = AVERAGE_AOMOUNT; revenueModel.Ticke_Count = TICKETCOUNT; revenueModel.Revenue_Amount = TOTALSELLAMOUNT; revenueModel.Ticke_Difference = (TICKETCOUNT - LASTTICKETCOUNT).Round(2); revenueModel.Revenue_Difference = (TOTALSELLAMOUNT - LASTTOTALSELLAMOUNT).Round(2); revenueModel.Average_Difference = (AVERAGE_AOMOUNT - LASTAVERAGE_AOMOUNT).Round(2); revenueModel.Revenue_Proportion = ((TOTALSELLAMOUNT - LASTTOTALSELLAMOUNT) / LASTTOTALSELLAMOUNT).ToString("P2"); revenueModel.Ticke_Proportion = ((TICKETCOUNT - LASTTICKETCOUNT).TryParseToDouble() / LASTTICKETCOUNT.TryParseToDouble()).ToString("P2"); revenueModel.Average_Proportion = ((AVERAGE_AOMOUNT - LASTAVERAGE_AOMOUNT) / LASTAVERAGE_AOMOUNT).ToString("P2"); //循环添加详情值 foreach (DataRow _DataRow in RevenueDetilsTable.Rows) { //下部客单交易列表 ESCM.TickeDetils tickeDetils = new ESCM.TickeDetils(); tickeDetils.Statictics_Amount = _DataRow["TICKETCOUNT"].TryParseToDouble(); tickeDetils.Statictics_Date = _DataRow["ENDACCOUNT_DATE"].ToString(); listTickeDetils.Add(tickeDetils); //营收列表 ESCM.RevenueDetils revenueDetils = new ESCM.RevenueDetils(); revenueDetils.Statictics_Date = _DataRow["ENDACCOUNT_DATE"].ToString(); revenueDetils.Statictics_Amount = _DataRow["TOTALSELLAMOUNT"].TryParseToDouble(); //四川省需要去掉大巴券和会员消费数据 if (pushProvinceCode == "510000") { revenueDetils.Statictics_Amount = (_DataRow["TOTALSELLAMOUNT"].TryParseToDouble() - _DataRow["VIPPERSON"].TryParseToDouble() - _DataRow["COSTBILL"].TryParseToDouble() - _DataRow["CREDITCARD"].TryParseToDouble()); } listRevenueDetils.Add(revenueDetils); //平均价列表 ESCM.AverageDetils averageDetils = new ESCM.AverageDetils(); averageDetils.Statictics_Date = _DataRow["ENDACCOUNT_DATE"].ToString(); averageDetils.Statictics_Amount = _DataRow["AVERAGE_AOMOUNT"].TryParseToDouble(); listAverageDetils.Add(averageDetils); } //绑定返回值 revenueModel.listRevenueDetils = listRevenueDetils; revenueModel.listTickeDetils = listTickeDetils; revenueModel.listAverageDetils = listAverageDetils; } else { return Ok(Helper.Common.ReturnJson(102, "未获取到相关营收信息!")); } return base.Ok(JsonMsg.Success(revenueModel, 100, "查询成功")); } catch (Exception ex) { SuperMap.RealEstate.Utility.ErrorLogHelper.Write(ex, "接口【GetRevenueTrends】", ""); transaction.Rollback(); string msg = "查询失败" + ex.Message; return Ok(Helper.Common.ReturnJson(999, msg)); } } #endregion #region 方法 -> 通过会员内码获取营收趋势数据 /// /// 通过会员内码获取营收趋势数据 /// /// 会员内码 /// 统计类型(Year:年报表,Month:月报表,Week:周报表) /// 报表类型(Revenue:营收金额,Ticke:订单数,Average:客单均价) /// 统计时间 /// 省份编号 /// [AcceptVerbs("GET", "POST")] [Route("WeChat/GetRevenueTrendsById")] [ResponseType(typeof(JsonMsg))] public IHttpActionResult GetRevenueTrendsById(int? memberShipId, string Statictics_Type, string Report_Type, DateTime? Statistics_Date, string pushProvinceCode) { try { //判断会员信息是否存在 MSPB.MEMBERSHIP _MEMBERSHIP = new MSPB.MEMBERSHIP(transaction); _MEMBERSHIP.AddSearchParameter("MEMBERSHIP_ID", memberShipId); if (!_MEMBERSHIP.Search()) { return Ok(Helper.Common.ReturnJson(102, "会员信息有误!")); } //判断是否关联后台账号 MSPB.RTPASSPORTINFO _RTPASSPORTINFO = ESCom.Member.GetMemberPassportInfo( transaction, memberShipId.Value, pushProvinceCode); if (_RTPASSPORTINFO == null) { return Ok(Helper.Common.ReturnJson(103, "未获取到关联的后台账号!")); } //判断后台账号信息是否存在 MSPB.USER _User = new MSPB.USER(transaction); _User.AddSearchParameter("USER_ID", _RTPASSPORTINFO.USER_ID); _User.AddSearchParameter("PROVINCE_CODE", pushProvinceCode); if (!_User.Search()) { return Ok(Helper.Common.ReturnJson(104, "未查询到后台账号信息!")); } //获取会员权限 string _UserJurisdiction = _User.USER_CITYAUTHORITY; ESCM.RevenueModel revenueModel = new ESCM.RevenueModel(); //通过统计类型获取营收合计信息 DataTable RevenueTable = ESCom.Revenue.GetRevenueTrends(transaction, _UserJurisdiction, Statictics_Type, Statistics_Date.Value, pushProvinceCode); if (RevenueTable.Rows.Count > 0) { //获取营收按天统计详情 DataTable RevenueDetilsTable = ESCom.Revenue.GetRevenueTrendsDetils(transaction, _UserJurisdiction, Statictics_Type, Statistics_Date.Value, pushProvinceCode); //营收详情列表 List listRevenueDetils = new List(); //客单详情列表 List listTickeDetils = new List(); //平均价详情列表 List listAverageDetils = new List(); //当前周(月)的营收合计信息 double.TryParse(RevenueTable.Compute("SUM(TICKETCOUNT)", "").ToString(), out double TICKETCOUNT); double.TryParse(RevenueTable.Compute("SUM(TOTALSELLAMOUNT)", "").ToString(), out double TOTALSELLAMOUNT); //环比周(月)的营收合计信息 double.TryParse(RevenueTable.Compute("SUM(LASTTICKETCOUNT)", "").ToString(), out double LASTTICKETCOUNT); double.TryParse(RevenueTable.Compute("SUM(LASTTOTALSELLAMOUNT)", "").ToString(), out double LASTTOTALSELLAMOUNT); //四川省需要去掉大巴券和会员消费数据 if (pushProvinceCode == "510000") { double.TryParse(RevenueTable.Compute("SUM(VIPPERSON)", "").ToString(), out double VIPPERSON);//油非互动 double.TryParse(RevenueTable.Compute("SUM(COSTBILL)", "").ToString(), out double COSTBILL);//大巴券 double.TryParse(RevenueTable.Compute("SUM(CREDITCARD)", "").ToString(), out double CREDITCARD);//企业会员 double.TryParse(RevenueTable.Compute("SUM(LASTVIPPERSON)", "").ToString(), out double LASTVIPPERSON);//油非互动 double.TryParse(RevenueTable.Compute("SUM(LASTCOSTBILL)", "").ToString(), out double LASTCOSTBILL);//大巴券 double.TryParse(RevenueTable.Compute("SUM(LASTCREDITCARD)", "").ToString(), out double LASTCREDITCARD);//企业会员 TOTALSELLAMOUNT = (TOTALSELLAMOUNT - VIPPERSON - COSTBILL - CREDITCARD).Round(2); LASTTOTALSELLAMOUNT = (LASTTOTALSELLAMOUNT - LASTVIPPERSON - LASTCOSTBILL - LASTCREDITCARD).Round(2); } //计算客单均价 double LASTAVERAGE_AOMOUNT = (LASTTOTALSELLAMOUNT / LASTTICKETCOUNT).Round(2); double AVERAGE_AOMOUNT = (TOTALSELLAMOUNT / TICKETCOUNT).Round(2); //填入数据 revenueModel.Average_Amount = AVERAGE_AOMOUNT; revenueModel.Ticke_Count = TICKETCOUNT; revenueModel.Revenue_Amount = TOTALSELLAMOUNT; revenueModel.Ticke_Difference = (TICKETCOUNT - LASTTICKETCOUNT).Round(2); revenueModel.Revenue_Difference = (TOTALSELLAMOUNT - LASTTOTALSELLAMOUNT).Round(2); revenueModel.Average_Difference = (AVERAGE_AOMOUNT - LASTAVERAGE_AOMOUNT).Round(2); revenueModel.Revenue_Proportion = ((TOTALSELLAMOUNT - LASTTOTALSELLAMOUNT) / LASTTOTALSELLAMOUNT).ToString("P2"); revenueModel.Ticke_Proportion = ((TICKETCOUNT - LASTTICKETCOUNT).TryParseToDouble() / LASTTICKETCOUNT.TryParseToDouble()).ToString("P2"); revenueModel.Average_Proportion = ((AVERAGE_AOMOUNT - LASTAVERAGE_AOMOUNT) / LASTAVERAGE_AOMOUNT).ToString("P2"); //循环添加详情值 foreach (DataRow _DataRow in RevenueDetilsTable.Rows) { //下部客单交易列表 ESCM.TickeDetils tickeDetils = new ESCM.TickeDetils(); tickeDetils.Statictics_Amount = _DataRow["TICKETCOUNT"].TryParseToDouble(); tickeDetils.Statictics_Date = _DataRow["ENDACCOUNT_DATE"].ToString(); listTickeDetils.Add(tickeDetils); //营收列表 ESCM.RevenueDetils revenueDetils = new ESCM.RevenueDetils(); revenueDetils.Statictics_Date = _DataRow["ENDACCOUNT_DATE"].ToString(); revenueDetils.Statictics_Amount = _DataRow["TOTALSELLAMOUNT"].TryParseToDouble(); //四川省需要去掉大巴券和会员消费数据 if (pushProvinceCode == "510000") { revenueDetils.Statictics_Amount = (_DataRow["TOTALSELLAMOUNT"].TryParseToDouble() - _DataRow["VIPPERSON"].TryParseToDouble() - _DataRow["COSTBILL"].TryParseToDouble() - _DataRow["CREDITCARD"].TryParseToDouble()); } listRevenueDetils.Add(revenueDetils); //平均价列表 ESCM.AverageDetils averageDetils = new ESCM.AverageDetils(); averageDetils.Statictics_Date = _DataRow["ENDACCOUNT_DATE"].ToString(); averageDetils.Statictics_Amount = _DataRow["AVERAGE_AOMOUNT"].TryParseToDouble(); listAverageDetils.Add(averageDetils); } //绑定返回值 revenueModel.listRevenueDetils = listRevenueDetils; revenueModel.listTickeDetils = listTickeDetils; revenueModel.listAverageDetils = listAverageDetils; } else { return Ok(Helper.Common.ReturnJson(102, "未获取到相关营收信息!")); } return base.Ok(JsonMsg.Success(revenueModel, 100, "查询成功")); } catch (Exception ex) { SuperMap.RealEstate.Utility.ErrorLogHelper.Write(ex, "接口【GetRevenueTrends】", ""); transaction.Rollback(); string msg = "查询失败" + ex.Message; return Ok(Helper.Common.ReturnJson(999, msg)); } } #endregion #region 方法 -> 获取营收统计报表 /// /// 获取营收统计报表 /// /// 会员内码 /// 用户省份编码 /// 省外省份编号 /// 开始时间 /// 结束时间 /// [AcceptVerbs("GET", "POST")] [Route("WeChat/GetRevenueReport")] [ResponseType(typeof(JsonMsg))] public IHttpActionResult GetRevenueReport(int memberShipId, string provinceCode, DateTime? startTime, DateTime? endTime, string additionalCode = "") { try { //判断会员信息是否存在 MSPB.MEMBERSHIP _MEMBERSHIP = new MSPB.MEMBERSHIP(transaction); _MEMBERSHIP.AddSearchParameter("MEMBERSHIP_ID", memberShipId); if (!_MEMBERSHIP.Search()) { return Ok(Helper.Common.ReturnJson(102, "会员信息有误!")); } //判断是否关联后台账号 MSPB.RTPASSPORTINFO _RTPASSPORTINFO = ESCom.Member.GetMemberPassportInfo(transaction, memberShipId, provinceCode); if (_RTPASSPORTINFO == null) { return Ok(Helper.Common.ReturnJson(103, "未获取到关联的后台账号!")); } //判断后台账号信息是否存在 MSPB.USER _User = new MSPB.USER(transaction); _User.AddSearchParameter("USER_ID", _RTPASSPORTINFO.USER_ID); _User.AddSearchParameter("PROVINCE_CODE", provinceCode); //_User.User_ID = _RTPASSPORTINFO.USER_ID; if (!_User.Search()) { return Ok(Helper.Common.ReturnJson(104, "未查询到后台账号信息!")); } //获取会员权限 string _UserJurisdiction = _User.USER_CITYAUTHORITY; //获取营收报表数据 DataTable RevenueTable = ESCom.Revenue.GetRevenueReport(transaction, _UserJurisdiction, startTime, endTime, provinceCode); DataTable RevenueAdditionalTable = new DataTable(); //当传入的有省外区域时获取省外区域营收数据 if (!string.IsNullOrEmpty(additionalCode)) { RevenueAdditionalTable = ESCom.Revenue.GetRevenueReport(transaction, _UserJurisdiction, startTime, endTime, additionalCode.Replace(",", "','")); } //绑定省内营收数据 ESCM.RevenueReportModel revenueReportModel = new ESCM.RevenueReportModel(); List listRevenueRegionModels = new List(); if (RevenueTable.Rows.Count > 0) { double.TryParse(RevenueTable.Compute("SUM(CASHPAY)", "").ToString(), out double Total_Revenue); double.TryParse(RevenueTable.Compute("SUM(CASHPAY)", "SHOPREGION < 30").ToString(), out double Revenue_AmountS); double.TryParse(RevenueTable.Compute("SUM(CASHPAY)", "SHOPREGION >= 30").ToString(), out double Revenue_AmountN); revenueReportModel.Revenue_AmountN = Revenue_AmountN; revenueReportModel.Revenue_AmountS = Revenue_AmountS; revenueReportModel.Total_Revenue = Total_Revenue; revenueReportModel.Province_InsideAmount = Total_Revenue; //四川省需要去掉大巴券和会员消费数据 if (provinceCode == "510000") { //油非互动 double.TryParse(RevenueTable.Compute("SUM(VIPPERSON)", "").ToString(), out double VIPPERSON);//营收合计 double.TryParse(RevenueTable.Compute("SUM(VIPPERSON)", "SHOPREGION < 30").ToString(), out double VIPPERSONS);//东(南)营收合计 double.TryParse(RevenueTable.Compute("SUM(VIPPERSON)", "SHOPREGION >= 30").ToString(), out double VIPPERSONN);//西(北)营收合计 //大巴券合计 double.TryParse(RevenueTable.Compute("SUM(COSTBILL)", "").ToString(), out double COSTBILL);//营收合计 double.TryParse(RevenueTable.Compute("SUM(COSTBILL)", "SHOPREGION < 30").ToString(), out double COSTBILLS);//东(南)营收合计 double.TryParse(RevenueTable.Compute("SUM(COSTBILL)", "SHOPREGION >= 30").ToString(), out double COSTBILLN);//西(北)营收合计 //会员消费合计 double.TryParse(RevenueTable.Compute("SUM(CREDITCARD)", "").ToString(), out double CREDITCARD);//营收合计 double.TryParse(RevenueTable.Compute("SUM(CREDITCARD)", "SHOPREGION < 30").ToString(), out double CREDITCARDS);//东(南)营收合计 double.TryParse(RevenueTable.Compute("SUM(CREDITCARD)", "SHOPREGION >= 30").ToString(), out double CREDITCARDN);//西(北)营收合计 revenueReportModel.Revenue_AmountN = (Revenue_AmountN - VIPPERSONN - COSTBILLN - CREDITCARDN); revenueReportModel.Revenue_AmountS = (Revenue_AmountS - VIPPERSONS - COSTBILLS - CREDITCARDS); revenueReportModel.Total_Revenue = (Total_Revenue - VIPPERSON - COSTBILL - CREDITCARD); Total_Revenue = (Total_Revenue - VIPPERSON - COSTBILL - CREDITCARD); } var query = from t in RevenueTable.AsEnumerable() group t by new { t1 = t.Field("SPREGIONTYPE_ID"), t2 = t.Field("SPREGIONTYPE_NAME") } into m select new { SPREGIONTYPE_ID = m.Key.t1, SPREGIONTYPE_NAME = m.Key.t2, CASHPAY = m.Sum(n => n.Field("CASHPAY")), VIPPERSON = m.Sum(n => n.Field("VIPPERSON")), COSTBILL = m.Sum(n => n.Field("COSTBILL")), CREDITCARD = m.Sum(n => n.Field("CREDITCARD")) }; query.ToList().ForEach(q => { ESCM.RevenueRegionModel revenueRegionModel = new ESCM.RevenueRegionModel(); revenueRegionModel.Region_Name = q.SPREGIONTYPE_NAME; revenueRegionModel.Total_Revenue = q.CASHPAY.TryParseToDouble(); revenueRegionModel.Revenue_Proportion = (q.CASHPAY.TryParseToDouble() / Total_Revenue).ToString("P2"); //四川省需要去掉大巴券和会员消费数据 if (provinceCode == "510000") { revenueRegionModel.Total_Revenue = (q.CASHPAY - q.COSTBILL - q.VIPPERSON - q.CREDITCARD).TryParseToDouble(); revenueRegionModel.Revenue_Proportion = ((q.CASHPAY - q.COSTBILL - q.VIPPERSON - q.CREDITCARD).TryParseToDouble() / Total_Revenue).ToString("P2"); } listRevenueRegionModels.Add(revenueRegionModel); List listRevenueServerModels = new List(); var query2 = from t in RevenueTable.AsEnumerable().Where(p => p.Field("SPREGIONTYPE_ID") == q.SPREGIONTYPE_ID) group t by new { t1 = t.Field("SERVERPART_ID"), t2 = t.Field("SERVERPART_NAME"), t3 = t.Field("SERVERPART_CODE") } into m select new { SERVERPART_ID = m.Key.t1, SERVERPART_NAME = m.Key.t2, SERVERPARTCODE = m.Key.t3, CASHPAY = m.Sum(n => n.Field("CASHPAY")), VIPPERSON = m.Sum(n => n.Field("VIPPERSON")), COSTBILL = m.Sum(n => n.Field("COSTBILL")), CREDITCARD = m.Sum(n => n.Field("CREDITCARD")) }; query2.ToList().ForEach(m => { ESCM.RevenueServerModel revenueServerModel = new ESCM.RevenueServerModel(); revenueServerModel.Serverpart_Name = m.SERVERPART_NAME; revenueServerModel.Serverpart_Id = m.SERVERPART_ID.ToString(); revenueServerModel.Revenue_Proportion = (m.CASHPAY.TryParseToDouble() / q.CASHPAY.TryParseToDouble()).ToString("P2"); revenueServerModel.Total_Revenue = m.CASHPAY.TryParseToDouble(); revenueServerModel.Province_Code = provinceCode; //四川省需要去掉大巴券和会员消费数据 if (provinceCode == "510000") { revenueServerModel.Total_Revenue = (m.CASHPAY - m.COSTBILL - m.VIPPERSON - m.CREDITCARD).TryParseToDouble(); revenueServerModel.Revenue_Proportion = ((m.CASHPAY - m.COSTBILL - m.VIPPERSON - m.CREDITCARD).TryParseToDouble() / (q.CASHPAY - q.COSTBILL - q.VIPPERSON - q.CREDITCARD).TryParseToDouble()).ToString("P2"); } listRevenueServerModels.Add(revenueServerModel); }); revenueRegionModel.revenueServerModels = listRevenueServerModels; }); revenueReportModel.revenueRegionModels = listRevenueRegionModels; } else { return Ok(Helper.Common.ReturnJson(102, "未获取到相关营收信息!")); } //绑定省外营收数据 if (RevenueAdditionalTable != null && RevenueAdditionalTable.Rows.Count > 0) { List listInsideRegionModels = new List(); double.TryParse(RevenueAdditionalTable.Compute("SUM(CASHPAY)", "").ToString(), out double Total_Revenue); revenueReportModel.Total_Revenue += Total_Revenue; revenueReportModel.Province_ExternalAmount = Total_Revenue; var query = from t in RevenueAdditionalTable.AsEnumerable() group t by new { t1 = t.Field("SPREGIONTYPE_ID"), t2 = t.Field("SPREGIONTYPE_NAME") } into m select new { SPREGIONTYPE_ID = m.Key.t1, SPREGIONTYPE_NAME = m.Key.t2, CASHPAY = m.Sum(n => n.Field("CASHPAY")) }; query.ToList().ForEach(q => { ESCM.RevenueRegionModel revenueRegionModel = new ESCM.RevenueRegionModel(); revenueRegionModel.Region_Name = q.SPREGIONTYPE_NAME; revenueRegionModel.Total_Revenue = q.CASHPAY.TryParseToDouble(); revenueRegionModel.Revenue_Proportion = (q.CASHPAY.TryParseToDouble() / Total_Revenue).ToString("P2"); listInsideRegionModels.Add(revenueRegionModel); List listRevenueServerModels = new List(); var query2 = from t in RevenueAdditionalTable.AsEnumerable().Where(p => p.Field("SPREGIONTYPE_ID") == q.SPREGIONTYPE_ID) group t by new { t1 = t.Field("SERVERPART_ID"), t2 = t.Field("SERVERPART_NAME"), t3 = t.Field("SERVERPART_CODE"), t4 = t.Field("PROVINCE_CODE") } into m select new { SERVERPART_ID = m.Key.t1, SERVERPART_NAME = m.Key.t2, SERVERPARTCODE = m.Key.t3, PROVINCE_CODE = m.Key.t4, CASHPAY = m.Sum(n => n.Field("CASHPAY")) }; query2.ToList().ForEach(m => { ESCM.RevenueServerModel revenueServerModel = new ESCM.RevenueServerModel(); revenueServerModel.Serverpart_Name = m.SERVERPART_NAME; revenueServerModel.Serverpart_Id = m.SERVERPART_ID.ToString(); revenueServerModel.Revenue_Proportion = (m.CASHPAY.TryParseToDouble() / q.CASHPAY.TryParseToDouble()).ToString("P2"); revenueServerModel.Total_Revenue = m.CASHPAY.TryParseToDouble(); revenueServerModel.Province_Code = m.PROVINCE_CODE; listRevenueServerModels.Add(revenueServerModel); }); revenueRegionModel.revenueServerModels = listRevenueServerModels; }); revenueReportModel.revenueInsideRegionModels = listInsideRegionModels; } return base.Ok(JsonMsg.Success(revenueReportModel, 100, "查询成功")); } catch (Exception ex) { SuperMap.RealEstate.Utility.ErrorLogHelper.Write(ex, "接口【GetRevenueReport】", ""); transaction.Rollback(); string msg = "查询失败" + ex.Message; return Ok(Helper.Common.ReturnJson(999, msg)); } } #endregion #region 方法 -> 获取营收统计详情 /// /// 获取营收统计详情 /// /// 服务区内码 /// 开始时间 /// 结束时间 /// 省份编号 /// [AcceptVerbs("GET", "POST")] [Route("WeChat/GetRevenueReportDetils")] [ResponseType(typeof(JsonMsg))] public IHttpActionResult GetRevenueReportDetils(int Serverpart_Id, DateTime? startTime, DateTime? endTime, string pushProvinceCode) { try { //获取营收报表数据 DataTable RevenueDetilsTable = ESCom.Revenue.GetRevenueReportDetils(transaction, Serverpart_Id, startTime, endTime, pushProvinceCode); //定义返回对象 ESCM.RevenueReportDetilsModel revenueReportDetilsModel = new ESCM.RevenueReportDetilsModel(); List listRevenueReportDetilsDates = new List(); if (RevenueDetilsTable.Rows.Count > 0) { //获取服务区区域名称 string Nname = ""; string Sname = ""; ESCom.Revenue.GetRegionName(transaction, Serverpart_Id, pushProvinceCode, ref Nname, ref Sname); //获取合计统计信息 double.TryParse(RevenueDetilsTable.Compute("SUM(CASHPAY)", "").ToString(), out double Total_Revenue);//营收合计 double.TryParse(RevenueDetilsTable.Compute("SUM(CASHPAY)", "SHOPREGION < 30").ToString(), out double Revenue_AmountS);//东(南)营收合计 double.TryParse(RevenueDetilsTable.Compute("SUM(CASHPAY)", "SHOPREGION >= 30").ToString(), out double Revenue_AmountN);//西(北)营收合计 //赋值返回对象 revenueReportDetilsModel.Serverpart_RevenueN = Revenue_AmountN; revenueReportDetilsModel.Serverpart_RevenueS = Revenue_AmountS; revenueReportDetilsModel.Serverpart_N = Nname; revenueReportDetilsModel.Serverpart_S = Sname; revenueReportDetilsModel.Serverpart_Revenue = Total_Revenue; revenueReportDetilsModel.Serverpart_Name = RevenueDetilsTable.Rows[0]["SERVERPART_NAME"].ToString(); //四川省需要去掉大巴券和会员消费数据 if (pushProvinceCode == "510000") { //油非互动 double.TryParse(RevenueDetilsTable.Compute("SUM(VIPPERSON)", "").ToString(), out double VIPPERSON);//营收合计 double.TryParse(RevenueDetilsTable.Compute("SUM(VIPPERSON)", "SHOPREGION < 30").ToString(), out double VIPPERSONS);//东(南)营收合计 double.TryParse(RevenueDetilsTable.Compute("SUM(VIPPERSON)", "SHOPREGION >= 30").ToString(), out double VIPPERSONN);//西(北)营收合计 //大巴券 double.TryParse(RevenueDetilsTable.Compute("SUM(COSTBILL)", "").ToString(), out double COSTBILL);//营收合计 double.TryParse(RevenueDetilsTable.Compute("SUM(COSTBILL)", "SHOPREGION < 30").ToString(), out double COSTBILLS);//东(南)营收合计 double.TryParse(RevenueDetilsTable.Compute("SUM(COSTBILL)", "SHOPREGION >= 30").ToString(), out double COSTBILLN);//西(北)营收合计 //会员消费合计 double.TryParse(RevenueDetilsTable.Compute("SUM(CREDITCARD)", "").ToString(), out double CREDITCARD);//营收合计 double.TryParse(RevenueDetilsTable.Compute("SUM(CREDITCARD)", "SHOPREGION < 30").ToString(), out double CREDITCARDS);//东(南)营收合计 double.TryParse(RevenueDetilsTable.Compute("SUM(CREDITCARD)", "SHOPREGION >= 30").ToString(), out double CREDITCARDN);//西(北)营收合计 revenueReportDetilsModel.Serverpart_RevenueN = (Revenue_AmountN - VIPPERSONN - COSTBILLN - CREDITCARDN); revenueReportDetilsModel.Serverpart_RevenueS = (Revenue_AmountS - VIPPERSONS - COSTBILLS - CREDITCARDS); revenueReportDetilsModel.Serverpart_Revenue = (Total_Revenue - VIPPERSON - COSTBILL - CREDITCARD); } //按统计时间分组 var query = from t in RevenueDetilsTable.AsEnumerable() group t by new { t1 = t.Field("ENDACCOUNT_DATE") } into m select new { ENDACCOUNT_DATE = m.Key.t1 }; query.ToList().ForEach(q => { //生成详情对象,赋值统计时间 ESCM.RevenueReportDetilsDate revenueReportDetilsDate = new ESCM.RevenueReportDetilsDate(); revenueReportDetilsDate.Statistics_Date = q.ENDACCOUNT_DATE; listRevenueReportDetilsDates.Add(revenueReportDetilsDate); List listRevenueReportDetils = new List(); //获取统计日期下的所有门店和上传方式分组数据 var query2 = from t in RevenueDetilsTable.AsEnumerable().Where(p => p.Field("ENDACCOUNT_DATE") == q.ENDACCOUNT_DATE) group t by new { t1 = t.Field("WORKER_NAME"), t2 = t.Field("SHOPSHORTNAME"), t3 = t.Field("IMAGE_PATH") } into m select new { WORKER_NAME = m.Key.t1, SHOPSHORTNAME = m.Key.t2, IMAGE_PATH = m.Key.t3, CASHPAY = m.Sum(n => n.Field("CASHPAY")) }; //循环赋值对象 query2.ToList().ForEach(m => { List _list = listRevenueReportDetils.FindAll(p => p.BusinessType_Name == m.SHOPSHORTNAME); if (_list.Count == 0) { ESCM.RevenueReportDetils revenueReportDetils = new ESCM.RevenueReportDetils(); //赋值返回值 revenueReportDetils.BusinessType_Name = m.SHOPSHORTNAME; //判断数据上传方式是接口还是扫码 if (m.WORKER_NAME.Contains("扫")) { revenueReportDetils.Upload_Type = "1"; } else if (m.WORKER_NAME.Contains("接口")) { revenueReportDetils.Upload_Type = "2"; } else { revenueReportDetils.Upload_Type = "0"; } if (!string.IsNullOrEmpty(m.IMAGE_PATH)) { revenueReportDetils.BusinessType_Logo = _CoopMerchantUrl + m.IMAGE_PATH; } revenueReportDetils.Serverpart_N = Nname; revenueReportDetils.Serverpart_S = Sname; //合计东西区各部分金额是多少 double.TryParse(RevenueDetilsTable.Compute("SUM(CASHPAY)", "SHOPREGION >= 30 AND SHOPSHORTNAME = '" + m.SHOPSHORTNAME + "' AND ENDACCOUNT_DATE = '" + q.ENDACCOUNT_DATE + "'").ToString(), out Revenue_AmountN);//西(北)区金额 double.TryParse(RevenueDetilsTable.Compute("SUM(CASHPAY)", "SHOPREGION < 30 AND SHOPSHORTNAME = '" + m.SHOPSHORTNAME + "' AND ENDACCOUNT_DATE = '" + q.ENDACCOUNT_DATE + "'").ToString(), out Revenue_AmountS);//东(南)区金额 double.TryParse(RevenueDetilsTable.Compute("SUM(CASHPAY)", "SHOPSHORTNAME = '" + m.SHOPSHORTNAME + "' AND ENDACCOUNT_DATE = '" + q.ENDACCOUNT_DATE + "'").ToString(), out double Revenue_Amount);//业态实收金额 revenueReportDetils.Serverpart_RevenueN = Revenue_AmountN; revenueReportDetils.Serverpart_RevenueS = Revenue_AmountS; revenueReportDetils.BusinessType_Revenue = Revenue_Amount; //四川省需要去掉大巴券和会员消费数据 if (pushProvinceCode == "510000") { //油非互动 double.TryParse(RevenueDetilsTable.Compute("SUM(VIPPERSON)", "SHOPSHORTNAME = '" + m.SHOPSHORTNAME + "' AND ENDACCOUNT_DATE = '" + q.ENDACCOUNT_DATE + "'").ToString(), out double VIPPERSON);//营收合计 double.TryParse(RevenueDetilsTable.Compute("SUM(VIPPERSON)", "SHOPREGION < 30 AND SHOPSHORTNAME = '" + m.SHOPSHORTNAME + "' AND ENDACCOUNT_DATE = '" + q.ENDACCOUNT_DATE + "'").ToString(), out double VIPPERSONS);//东(南)营收合计 double.TryParse(RevenueDetilsTable.Compute("SUM(VIPPERSON)", "SHOPREGION >= 30 AND SHOPSHORTNAME = '" + m.SHOPSHORTNAME + "' AND ENDACCOUNT_DATE = '" + q.ENDACCOUNT_DATE + "'").ToString(), out double VIPPERSONN);//西(北)营收合计 //大巴券合计 double.TryParse(RevenueDetilsTable.Compute("SUM(COSTBILL)", "SHOPSHORTNAME = '" + m.SHOPSHORTNAME + "' AND ENDACCOUNT_DATE = '" + q.ENDACCOUNT_DATE + "'").ToString(), out double COSTBILL);//营收合计 double.TryParse(RevenueDetilsTable.Compute("SUM(COSTBILL)", "SHOPREGION < 30 AND SHOPSHORTNAME = '" + m.SHOPSHORTNAME + "' AND ENDACCOUNT_DATE = '" + q.ENDACCOUNT_DATE + "'").ToString(), out double COSTBILLS);//东(南)营收合计 double.TryParse(RevenueDetilsTable.Compute("SUM(COSTBILL)", "SHOPREGION >= 30 AND SHOPSHORTNAME = '" + m.SHOPSHORTNAME + "' AND ENDACCOUNT_DATE = '" + q.ENDACCOUNT_DATE + "'").ToString(), out double COSTBILLN);//西(北)营收合计 //会员消费合计 double.TryParse(RevenueDetilsTable.Compute("SUM(CREDITCARD)", "SHOPSHORTNAME = '" + m.SHOPSHORTNAME + "' AND ENDACCOUNT_DATE = '" + q.ENDACCOUNT_DATE + "'").ToString(), out double CREDITCARD);//营收合计 double.TryParse(RevenueDetilsTable.Compute("SUM(CREDITCARD)", "SHOPREGION < 30 AND SHOPSHORTNAME = '" + m.SHOPSHORTNAME + "' AND ENDACCOUNT_DATE = '" + q.ENDACCOUNT_DATE + "'").ToString(), out double CREDITCARDS);//东(南)营收合计 double.TryParse(RevenueDetilsTable.Compute("SUM(CREDITCARD)", "SHOPREGION >= 30 AND SHOPSHORTNAME = '" + m.SHOPSHORTNAME + "' AND ENDACCOUNT_DATE = '" + q.ENDACCOUNT_DATE + "'").ToString(), out double CREDITCARDN);//西(北)营收合计 revenueReportDetils.Serverpart_RevenueN = (Revenue_AmountN - VIPPERSONN - COSTBILLN - CREDITCARDN); revenueReportDetils.Serverpart_RevenueS = (Revenue_AmountS - VIPPERSONS - COSTBILLS - CREDITCARDS); revenueReportDetils.BusinessType_Revenue = (Revenue_Amount - VIPPERSON - COSTBILL - CREDITCARD); } listRevenueReportDetils.Add(revenueReportDetils); } else { //当不同区上传方式不同时,自能存在一条,以(接口>扫码>普通)方式存在 int _Upload_Type = 0; if (m.WORKER_NAME.Contains("扫")) { _Upload_Type = 1; } else if (m.WORKER_NAME.Contains("接口")) { _Upload_Type = 2; } if (_list[0].Upload_Type.TryParseToInt() < _Upload_Type) { _list[0].Upload_Type = _Upload_Type.ToString(); } } }); revenueReportDetilsDate.revenueReportDetils = listRevenueReportDetils; }); revenueReportDetilsModel.revenueReportDetilsDates = listRevenueReportDetilsDates; } else { return Ok(Helper.Common.ReturnJson(102, "未获取到相关营收信息!")); } return base.Ok(JsonMsg.Success(revenueReportDetilsModel, 100, "查询成功")); } catch (Exception ex) { SuperMap.RealEstate.Utility.ErrorLogHelper.Write(ex, "接口【GetRevenueReportDetils】", ""); transaction.Rollback(); string msg = "查询失败" + ex.Message; return Ok(Helper.Common.ReturnJson(999, msg)); } } #endregion #region 方法 -> 获取单品统计报表数据 /// /// 获取单品统计详细商品排名数据 /// /// 会员内码 /// 开始时间 /// 结束时间 /// 服务区编号 /// 品牌内码 /// 统计类型(All:全部,NORTH:西(北),SOUTH:东(南),不传默认全部) /// 排序条件(TOTALCOUNT:销售数量,TOTALSELLAMOUNT:销售金额,默认按销售数量) /// 数据类型:
1【按日查询】
2【按月查询】 /// [AcceptVerbs("GET", "POST")] [Route("WeChat/GetProductSellDetils")] [ResponseType(typeof(JsonMsg))] public IHttpActionResult GetProductSellDetils(int membershipId, DateTime startDate, DateTime endDate, string serverpart_Code, string brand_Id, string ReportType = "All", string orderByFactor = "TOTALCOUNT", int DataType = 1) { LogUtil.WriteLog(null, "入参信息:会员内码【" + membershipId + "】,查询开始日期【" + startDate + "】," + "查询结束日期【" + endDate + "】,服务区编号【" + serverpart_Code + "】,品牌内码【" + brand_Id + "】," + "统计类型【" + ReportType + "】,排序条件【" + orderByFactor + "】,数据类型【" + DataType + "】", DateTime.Now.ToString() + "_GetProductSellDetils"); try { //生成区域信息 ESCM.ProductSellByRegion productSellByRegion = new ESCM.ProductSellByRegion(); //判断会员信息是否存在 MSPB.MEMBERSHIP _MEMBERSHIP = new MSPB.MEMBERSHIP(transaction); _MEMBERSHIP.AddSearchParameter("MEMBERSHIP_ID", membershipId); if (!_MEMBERSHIP.Search()) { return Ok(Helper.Common.ReturnJson(102, "会员信息有误!")); } //获取服务区区域名称 string Nname = ""; string Sname = ""; ESCom.Revenue.GetRegionName(transaction, serverpart_Code, ref Nname, ref Sname); //获取全部列表 DataTable RegionTable = ESCom.Revenue.GetProductRegionDetils(transaction, DataType, startDate, endDate, serverpart_Code, brand_Id, orderByFactor, ReportType); if (RegionTable.Rows.Count > 0) { switch (ReportType) { case "All": productSellByRegion.Region_Name = "全部"; break; case "NORTH": productSellByRegion.Region_Name = Nname; break; case "SOUTH": productSellByRegion.Region_Name = Sname; break; default: break; } productSellByRegion.TotalSell_Amount = RegionTable.Compute("SUM(TOTALSELLAMOUNT)", "").TryParseToDecimal(); productSellByRegion.Total_Count = RegionTable.Compute("SUM(TOTALCOUNT)", "").TryParseToDecimal(); //生成商品排行详情数据 List _listProductSellRankingModel = new List(); foreach (DataRow _DataRow in RegionTable.Rows) { ESCM.ProductSellRankingModel productSellRankingModel = new ESCM.ProductSellRankingModel(); productSellRankingModel.Commodity_Name = _DataRow["COMMODITY_NAME"].ToString(); productSellRankingModel.Total_Count = _DataRow["TOTALCOUNT"].TryParseToDecimal(); productSellRankingModel.TotalSell_Amount = _DataRow["TOTALSELLAMOUNT"].TryParseToDecimal(); productSellRankingModel.Unit_Price = _DataRow["COMMODITY_CURRPRICE"].TryParseToDecimal(); if (_listProductSellRankingModel.Count < 20) { _listProductSellRankingModel.Add(productSellRankingModel); } else { break; } } productSellByRegion.productSellRankingModels = _listProductSellRankingModel; } //返回数据 return Ok(JsonMsg.Success(productSellByRegion, 100, "查询成功")); } catch (Exception ex) { SuperMap.RealEstate.Utility.ErrorLogHelper.Write(ex, "接口【GetProductSellDetils】", ""); transaction.Rollback(); string msg = "查询失败" + ex.Message; return Ok(Helper.Common.ReturnJson(999, msg)); } } /// /// 获取单品按服务区品牌统计列表 /// /// 会员内码 /// 开始时间 /// 结束时间 /// 排序条件(TOTALCOUNT:销售数量,TOTALSELLAMOUNT:销售金额,TICKETCOUNT:客单数量,默认按销售数量) /// 数据类型:
1【按日查询】
2【按月查询】 /// [AcceptVerbs("GET", "POST")] [Route("WeChat/GetProductSellByBrand")] [ResponseType(typeof(JsonMsg>))] public IHttpActionResult GetProductSellByBrand(int membershipId, DateTime startDate, DateTime endDate, string orderByFactor = "TOTALCOUNT", int DataType = 1) { try { //定义返回的数据对象 List listProductSellModel = new List(); //判断会员信息是否存在 MSPB.MEMBERSHIP _MEMBERSHIP = new MSPB.MEMBERSHIP(transaction); _MEMBERSHIP.AddSearchParameter("MEMBERSHIP_ID", membershipId); if (!_MEMBERSHIP.Search()) { return Ok(Helper.Common.ReturnJson(102, "会员信息有误!")); } //定义获取人员权限的变量 string provinceCodes = string.Empty; string serverpartShopCodes = string.Empty; //调用方法获取会员门店权限 ESCom.Serverpart.GetServerpartShopCode(transaction, membershipId, ref provinceCodes, ref serverpartShopCodes); //获取服务区枚举对象 FieldEnum fieldEnum = DictionaryHelper.GetFieldEnum("DIVISION_CODE", provinceCodes, transaction); //获取品牌数据列表 DataTable brandTable = ESCom.Revenue.GetBrandTable(transaction); //通过权限获取单品销售数据 DataTable ProductSellTable = ESCom.Revenue.GetProductSell(transaction, DataType, serverpartShopCodes, startDate, endDate); DataTable ProductTicketTable = ESCom.Revenue.GetProductTickeCount(transaction, serverpartShopCodes, startDate, endDate); //判断是否存在单品数据 if (ProductSellTable.Rows.Count <= 0) { return Ok(Helper.Common.ReturnJson(103, "未查询到单品销售信息!")); } //获取服务区列表数据 var query = from t in ProductSellTable.AsEnumerable() group t by new { t1 = t.Field("SERVERPART_CODE"), t2 = t.Field("SERVERPART_NAME") } into m select new { SERVERPART_CODE = m.Key.t1, SERVERPART_NAME = m.Key.t2, TOTALCOUNT = m.Sum(n => n.Field("TOTALCOUNT")), TOTALSELLAMOUNT = m.Sum(n => n.Field("TOTALSELLAMOUNT")), TICKETCOUNT = m.Sum(n => n.Field("TICKETCOUNT")) }; if (orderByFactor == "TOTALCOUNT") { //生成返回的数据对象 query.OrderByDescending(p => p.TOTALCOUNT).ToList().ForEach(q => { //定义详情对象 List listProductSellDetils = new List(); ESCM.ProductSellModel productSellModel = new ESCM.ProductSellModel(); //绑定服务区名数据 productSellModel.Serverpart_Name = q.SERVERPART_NAME; //绑定详情数据 var query2 = from t in ProductSellTable.AsEnumerable().Where(p => p.Field("SERVERPART_CODE") == q.SERVERPART_CODE) group t by new { t1 = t.Field("SERVERPART_CODE"), t2 = t.Field("BUSINESS_BRAND") } into m select new { SERVERPART_CODE = m.Key.t1, BUSINESS_BRAND = m.Key.t2, TOTALCOUNT = m.Sum(n => n.Field("TOTALCOUNT")), TOTALSELLAMOUNT = m.Sum(n => n.Field("TOTALSELLAMOUNT")), TICKETCOUNT = m.Sum(n => n.Field("TICKETCOUNT")) }; query2.OrderByDescending(p => p.TOTALCOUNT).ToList().ForEach(n => { //生成对象 List listProductSellRanking = new List(); ESCM.ProductSellDetilsModel productSellDetilsModel = new ESCM.ProductSellDetilsModel(); //绑定品牌数据 DataRow[] _Rows = brandTable.Select("BRAND_ID = '" + n.BUSINESS_BRAND + "'"); if (_Rows.Length > 0) { productSellDetilsModel.Brand_Name = _Rows[0]["BRAND_NAME"].ToString(); if (!string.IsNullOrEmpty(_Rows[0]["BRAND_INTRO"].ToString())) productSellDetilsModel.Brand_ICO = _CoopMerchantUrl + _Rows[0]["BRAND_INTRO"].ToString(); } productSellDetilsModel.TotalSell_Amount = n.TOTALSELLAMOUNT; //查询客单数据 _Rows = ProductTicketTable.Select("SERVERPARTCODE = '" + n.SERVERPART_CODE + "' AND BUSINESS_BRAND= '" + n.BUSINESS_BRAND + "'"); if (_Rows.Length > 0) { productSellDetilsModel.Ticket_Count = _Rows[0]["TICKETCOUNT"].TryParseToDecimal(); productSellDetilsModel.Average_Price = decimal.Parse((n.TOTALSELLAMOUNT / _Rows[0]["TICKETCOUNT"].TryParseToDecimal()).ToString("0.00")); } else { productSellDetilsModel.Ticket_Count = n.TICKETCOUNT; productSellDetilsModel.Average_Price = decimal.Parse((n.TOTALSELLAMOUNT / n.TICKETCOUNT).ToString("0.00")); } productSellDetilsModel.Total_Count = n.TOTALCOUNT; productSellDetilsModel.Brand_Id = n.BUSINESS_BRAND.ToString(); productSellDetilsModel.Serverpart_Code = n.SERVERPART_CODE; listProductSellDetils.Add(productSellDetilsModel); }); //绑定数据 productSellModel.productSellDetilsModels = listProductSellDetils; listProductSellModel.Add(productSellModel); }); } else if (orderByFactor == "TOTALSELLAMOUNT") { //生成返回的数据对象 query.OrderByDescending(p => p.TOTALSELLAMOUNT).ToList().ForEach(q => { //定义详情对象 List listProductSellDetilsModel = new List(); ESCM.ProductSellModel productSellModel = new ESCM.ProductSellModel(); //绑定服务区名数据 productSellModel.Serverpart_Name = q.SERVERPART_NAME; //绑定详情数据 var query2 = from t in ProductSellTable.AsEnumerable().Where(p => p.Field("SERVERPART_CODE") == q.SERVERPART_CODE) group t by new { t1 = t.Field("SERVERPART_CODE"), t2 = t.Field("BUSINESS_BRAND") } into m select new { SERVERPART_CODE = m.Key.t1, BUSINESS_BRAND = m.Key.t2, TOTALCOUNT = m.Sum(n => n.Field("TOTALCOUNT")), TOTALSELLAMOUNT = m.Sum(n => n.Field("TOTALSELLAMOUNT")), TICKETCOUNT = m.Sum(n => n.Field("TICKETCOUNT")) }; query2.OrderByDescending(p => p.TOTALCOUNT).ToList().ForEach(n => { //生成对象 List listProductSellRanking = new List(); ESCM.ProductSellDetilsModel productSellDetilsModel = new ESCM.ProductSellDetilsModel(); //绑定品牌数据 DataRow[] _Rows = brandTable.Select("BRAND_ID = '" + n.BUSINESS_BRAND + "'"); if (_Rows.Length > 0) { productSellDetilsModel.Brand_Name = _Rows[0]["BRAND_NAME"].ToString(); if (!string.IsNullOrEmpty(_Rows[0]["BRAND_INTRO"].ToString())) productSellDetilsModel.Brand_ICO = _CoopMerchantUrl + _Rows[0]["BRAND_INTRO"].ToString(); } productSellDetilsModel.TotalSell_Amount = n.TOTALSELLAMOUNT; //查询客单数据 _Rows = ProductTicketTable.Select("SERVERPARTCODE = '" + n.SERVERPART_CODE + "' AND BUSINESS_BRAND= '" + n.BUSINESS_BRAND + "'"); if (_Rows.Length > 0) { productSellDetilsModel.Ticket_Count = _Rows[0]["TICKETCOUNT"].TryParseToDecimal(); productSellDetilsModel.Average_Price = decimal.Parse((n.TOTALSELLAMOUNT / _Rows[0]["TICKETCOUNT"].TryParseToDecimal()).ToString("0.00")); } else { productSellDetilsModel.Ticket_Count = n.TICKETCOUNT; productSellDetilsModel.Average_Price = decimal.Parse((n.TOTALSELLAMOUNT / n.TICKETCOUNT).ToString("0.00")); } productSellDetilsModel.Total_Count = n.TOTALCOUNT; productSellDetilsModel.Brand_Id = n.BUSINESS_BRAND.ToString(); productSellDetilsModel.Serverpart_Code = n.SERVERPART_CODE; listProductSellDetilsModel.Add(productSellDetilsModel); }); //绑定数据 productSellModel.productSellDetilsModels = listProductSellDetilsModel; listProductSellModel.Add(productSellModel); }); } else { //生成返回的数据对象 query.OrderByDescending(p => p.TICKETCOUNT).ToList().ForEach(q => { //定义详情对象 List listProductSellDetilsModel = new List(); ESCM.ProductSellModel productSellModel = new ESCM.ProductSellModel(); //绑定服务区名数据 productSellModel.Serverpart_Name = q.SERVERPART_NAME; //绑定详情数据 var query2 = from t in ProductSellTable.AsEnumerable().Where(p => p.Field("SERVERPART_CODE") == q.SERVERPART_CODE) group t by new { t1 = t.Field("SERVERPART_CODE"), t2 = t.Field("BUSINESS_BRAND") } into m select new { SERVERPART_CODE = m.Key.t1, BUSINESS_BRAND = m.Key.t2, TOTALCOUNT = m.Sum(n => n.Field("TOTALCOUNT")), TOTALSELLAMOUNT = m.Sum(n => n.Field("TOTALSELLAMOUNT")), TICKETCOUNT = m.Sum(n => n.Field("TICKETCOUNT")) }; query2.OrderByDescending(p => p.TOTALCOUNT).ToList().ForEach(n => { //生成对象 List listProductSellRanking = new List(); ESCM.ProductSellDetilsModel productSellDetilsModel = new ESCM.ProductSellDetilsModel(); //绑定品牌数据 DataRow[] _Rows = brandTable.Select("BRAND_ID = '" + n.BUSINESS_BRAND + "'"); if (_Rows.Length > 0) { productSellDetilsModel.Brand_Name = _Rows[0]["BRAND_NAME"].ToString(); if (!string.IsNullOrEmpty(_Rows[0]["BRAND_INTRO"].ToString())) productSellDetilsModel.Brand_ICO = _CoopMerchantUrl + _Rows[0]["BRAND_INTRO"].ToString(); } productSellDetilsModel.TotalSell_Amount = n.TOTALSELLAMOUNT; //查询客单数据 _Rows = ProductTicketTable.Select("SERVERPARTCODE = '" + n.SERVERPART_CODE + "' AND BUSINESS_BRAND= '" + n.BUSINESS_BRAND + "'"); if (_Rows.Length > 0) { productSellDetilsModel.Ticket_Count = _Rows[0]["TICKETCOUNT"].TryParseToDecimal(); productSellDetilsModel.Average_Price = decimal.Parse((n.TOTALSELLAMOUNT / _Rows[0]["TICKETCOUNT"].TryParseToDecimal()).ToString()); } else { productSellDetilsModel.Ticket_Count = n.TICKETCOUNT; productSellDetilsModel.Average_Price = decimal.Parse((n.TOTALSELLAMOUNT / n.TICKETCOUNT).ToString()); } productSellDetilsModel.Total_Count = n.TOTALCOUNT; productSellDetilsModel.Brand_Id = n.BUSINESS_BRAND.ToString(); productSellDetilsModel.Serverpart_Code = n.SERVERPART_CODE; listProductSellDetilsModel.Add(productSellDetilsModel); }); //绑定数据 productSellModel.productSellDetilsModels = listProductSellDetilsModel; listProductSellModel.Add(productSellModel); }); } //生成返回值 JsonList jsonList = JsonList.Success(listProductSellModel); //返回数据 return Ok(JsonMsg>.Success(jsonList, 100, "查询成功")); } catch (Exception ex) { SuperMap.RealEstate.Utility.ErrorLogHelper.Write(ex, "接口【GetProductSellByBrand】", ""); transaction.Rollback(); string msg = "查询失败" + ex.Message; return Ok(Helper.Common.ReturnJson(999, msg)); } } /// /// 获取单品品牌统计合计 /// /// 会员内码 /// 开始时间 /// 结束时间 /// 服务区编号 /// 品牌内码 /// 数据类型:
1【按日查询】
2【按月查询】 /// [AcceptVerbs("GET", "POST")] [Route("WeChat/GetBrandSell")] [ResponseType(typeof(JsonMsg))] public IHttpActionResult GetBrandSell(int membershipId, DateTime startDate, DateTime endDate, string serverpart_Code, string brand_Id, int DataType = 1) { try { //定义返回的数据对象 ESCM.ProductSellDetilsModel productSellDetilsModel = new ESCM.ProductSellDetilsModel(); //判断会员信息是否存在 MSPB.MEMBERSHIP _MEMBERSHIP = new MSPB.MEMBERSHIP(transaction); _MEMBERSHIP.AddSearchParameter("MEMBERSHIP_ID", membershipId); if (!_MEMBERSHIP.Search()) { return Ok(Helper.Common.ReturnJson(102, "会员信息有误!")); } //获取品牌数据列表 DataTable brandTable = ESCom.Revenue.GetBrandTable(transaction); //通过品牌内码获取单品销售数据 DataTable ProductSellTable = ESCom.Revenue.GetBrandSell(transaction, DataType, startDate, endDate, serverpart_Code, brand_Id); //通过品牌内码获取单品客单数据 DataTable ProductTicketTable = ESCom.Revenue.GetBrandTicketCount( transaction, startDate, endDate, serverpart_Code, brand_Id); //生成返回数据 if (ProductSellTable.Rows.Count > 0) { productSellDetilsModel.Brand_Id = ProductSellTable.Rows[0]["BUSINESS_BRAND"].ToString(); //绑定品牌名称 DataRow[] _Rows = brandTable.Select("BRAND_ID = '" + ProductSellTable.Rows[0]["BUSINESS_BRAND"] + "'"); if (_Rows.Length > 0) { productSellDetilsModel.Brand_Name = _Rows[0]["BRAND_NAME"].ToString(); if (!string.IsNullOrEmpty(_Rows[0]["BRAND_INTRO"].ToString())) productSellDetilsModel.Brand_ICO = _CoopMerchantUrl + _Rows[0]["BRAND_INTRO"].ToString(); } productSellDetilsModel.TotalSell_Amount = ProductSellTable.Rows[0]["TOTALSELLAMOUNT"].TryParseToDecimal(); //绑定客单数量 _Rows = ProductTicketTable.Select("BUSINESS_BRAND = '" + ProductSellTable.Rows[0]["BUSINESS_BRAND"] + "' AND SERVERPARTCODE = '" + ProductSellTable.Rows[0]["SERVERPART_CODE"] + "'"); if (_Rows.Length > 0) { productSellDetilsModel.Ticket_Count = _Rows[0]["TICKETCOUNT"].TryParseToDecimal(); productSellDetilsModel.Average_Price = decimal.Parse((productSellDetilsModel.TotalSell_Amount / _Rows[0]["TICKETCOUNT"].TryParseToDecimal()).ToString("0.00")); } else { productSellDetilsModel.Ticket_Count = ProductSellTable.Rows[0]["TICKETCOUNT"].TryParseToDecimal(); productSellDetilsModel.Average_Price = decimal.Parse((productSellDetilsModel.TotalSell_Amount / ProductSellTable.Rows[0]["TICKETCOUNT"].TryParseToDecimal()).ToString("0.00")); } productSellDetilsModel.Total_Count = ProductSellTable.Rows[0]["TOTALCOUNT"].TryParseToDecimal(); productSellDetilsModel.Serverpart_Code = ProductSellTable.Rows[0]["SERVERPART_CODE"].ToString(); productSellDetilsModel.Serverpart_Name = ProductSellTable.Rows[0]["SERVERPART_NAME"].ToString(); } //返回数据 return Ok(JsonMsg.Success(productSellDetilsModel, 100, "查询成功")); } catch (Exception ex) { SuperMap.RealEstate.Utility.ErrorLogHelper.Write(ex, "接口【GetBrandSell】", ""); transaction.Rollback(); string msg = "查询失败" + ex.Message; return Ok(Helper.Common.ReturnJson(999, msg)); } } #endregion #region 方法 -> 获取商家门店营收金额 /// /// 获取商家门店营收金额 /// /// 商家会员内码 /// 统计日期,默认昨日 /// [AcceptVerbs("GET", "POST")] [Route("Revenue/GetMerchantRevenue")] [ResponseType(typeof(JsonMsg))] public IHttpActionResult GetMerchantRevenue(int MembershipId, string endaccountDate = "") { try { //查询商家汇总数据 MerchantRevenueModel merchantRevenueModel = Helper.RevenueHelper.GetMerchantRevenue( transaction, MembershipId, endaccountDate); //返回最终结果 return base.Ok(JsonMsg.Success(merchantRevenueModel, 100, "查询成功")); } catch (Exception ex) { SuperMap.RealEstate.Utility.ErrorLogHelper.Write(ex, "接口【GetMerchantRevenue】", ""); transaction.Rollback(); string msg = "查询失败" + ex.Message; return Ok(Helper.Common.ReturnJson(999, msg)); } } #endregion #region 方法 -> 获取商家门店营收数据详情 /// /// 获取商家门店营收数据详情 /// /// 商家会员内码 /// 统计日期,默认昨日 /// [AcceptVerbs("GET", "POST")] [Route("Revenue/GetMerchantRevenueList")] [ResponseType(typeof(JsonMsg))] public IHttpActionResult GetMerchantRevenueList(int MembershipId, string endaccountDate = "") { try { //查询商家汇总数据 MerchantRevenueModel merchantRevenueModel = Helper.RevenueHelper.GetMerchantRevenueList( transaction, MembershipId, endaccountDate); //返回最终结果 return base.Ok(JsonMsg.Success(merchantRevenueModel, 100, "查询成功")); } catch (Exception ex) { SuperMap.RealEstate.Utility.ErrorLogHelper.Write(ex, "接口【GetMerchantRevenueList】", ""); transaction.Rollback(); string msg = "查询失败" + ex.Message; return Ok(Helper.Common.ReturnJson(999, msg)); } } #endregion } }