1256 lines
78 KiB
C#
1256 lines
78 KiB
C#
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
|
|
{
|
|
/// <summary>
|
|
/// 营收信息接口【驿行畅旅】
|
|
/// </summary>
|
|
public class RevenueController : BaseController
|
|
{
|
|
/// <summary>
|
|
/// 合作商户平台Url,用于上传的图片线上url用
|
|
/// </summary>
|
|
protected static string _CoopMerchantUrl = ConfigurationManager.AppSettings["CoopMerchantUrls"].ToString();
|
|
|
|
#region 方法 -> 获取营收趋势数据
|
|
/// <summary>
|
|
/// 获取营收趋势数据
|
|
/// </summary>
|
|
/// <param name="Serverpart_Id">服务区内码</param>
|
|
/// <param name="Statictics_Type">统计类型(Year:年报表,Month:月报表,Week:周报表)</param>
|
|
/// <param name="Report_Type">报表类型(Revenue:营收金额,Ticke:订单数,Average:客单均价)</param>
|
|
/// <param name="groupType">服务区类型(1000:全部,1010:服务区,1020:区域)</param>
|
|
/// <param name="Statistics_Date">统计时间</param>
|
|
/// <param name="pushProvinceCode">省份编号</param>
|
|
/// <returns></returns>
|
|
[AcceptVerbs("GET", "POST")]
|
|
[Route("WeChat/GetRevenueTrends")]
|
|
[ResponseType(typeof(JsonMsg<ESCM.RevenueModel>))]
|
|
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<ESCM.RevenueDetils> listRevenueDetils = new List<ESCM.RevenueDetils>();
|
|
//客单详情列表
|
|
List<ESCM.TickeDetils> listTickeDetils = new List<ESCM.TickeDetils>();
|
|
//平均价详情列表
|
|
List<ESCM.AverageDetils> listAverageDetils = new List<ESCM.AverageDetils>();
|
|
//当前周(月)的营收合计信息
|
|
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<ESCM.RevenueModel>.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 方法 -> 通过会员内码获取营收趋势数据
|
|
/// <summary>
|
|
/// 通过会员内码获取营收趋势数据
|
|
/// </summary>
|
|
/// <param name="memberShipId">会员内码</param>
|
|
/// <param name="Statictics_Type">统计类型(Year:年报表,Month:月报表,Week:周报表)</param>
|
|
/// <param name="Report_Type">报表类型(Revenue:营收金额,Ticke:订单数,Average:客单均价)</param>
|
|
/// <param name="Statistics_Date">统计时间</param>
|
|
/// <param name="pushProvinceCode">省份编号</param>
|
|
/// <returns></returns>
|
|
[AcceptVerbs("GET", "POST")]
|
|
[Route("WeChat/GetRevenueTrendsById")]
|
|
[ResponseType(typeof(JsonMsg<ESCM.RevenueModel>))]
|
|
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<ESCM.RevenueDetils> listRevenueDetils = new List<ESCM.RevenueDetils>();
|
|
//客单详情列表
|
|
List<ESCM.TickeDetils> listTickeDetils = new List<ESCM.TickeDetils>();
|
|
//平均价详情列表
|
|
List<ESCM.AverageDetils> listAverageDetils = new List<ESCM.AverageDetils>();
|
|
//当前周(月)的营收合计信息
|
|
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<ESCM.RevenueModel>.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 方法 -> 获取营收统计报表
|
|
/// <summary>
|
|
/// 获取营收统计报表
|
|
/// </summary>
|
|
/// <param name="memberShipId">会员内码</param>
|
|
/// <param name="provinceCode">用户省份编码</param>
|
|
/// <param name="additionalCode">省外省份编号</param>
|
|
/// <param name="startTime">开始时间</param>
|
|
/// <param name="endTime">结束时间</param>
|
|
/// <returns></returns>
|
|
[AcceptVerbs("GET", "POST")]
|
|
[Route("WeChat/GetRevenueReport")]
|
|
[ResponseType(typeof(JsonMsg<ESCM.RevenueReportModel>))]
|
|
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<ESCM.RevenueRegionModel> listRevenueRegionModels = new List<ESCM.RevenueRegionModel>();
|
|
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<string>("SPREGIONTYPE_ID"),
|
|
t2 = t.Field<string>("SPREGIONTYPE_NAME")
|
|
} into m
|
|
select new
|
|
{
|
|
SPREGIONTYPE_ID = m.Key.t1,
|
|
SPREGIONTYPE_NAME = m.Key.t2,
|
|
CASHPAY = m.Sum(n => n.Field<decimal>("CASHPAY")),
|
|
VIPPERSON = m.Sum(n => n.Field<decimal>("VIPPERSON")),
|
|
COSTBILL = m.Sum(n => n.Field<decimal>("COSTBILL")),
|
|
CREDITCARD = m.Sum(n => n.Field<decimal>("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<ESCM.RevenueServerModel> listRevenueServerModels = new List<ESCM.RevenueServerModel>();
|
|
var query2 = from t in RevenueTable.AsEnumerable().Where(p => p.Field<string>("SPREGIONTYPE_ID") == q.SPREGIONTYPE_ID)
|
|
group t by new
|
|
{
|
|
t1 = t.Field<decimal>("SERVERPART_ID"),
|
|
t2 = t.Field<string>("SERVERPART_NAME"),
|
|
t3 = t.Field<string>("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<decimal>("CASHPAY")),
|
|
VIPPERSON = m.Sum(n => n.Field<decimal>("VIPPERSON")),
|
|
COSTBILL = m.Sum(n => n.Field<decimal>("COSTBILL")),
|
|
CREDITCARD = m.Sum(n => n.Field<decimal>("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<ESCM.RevenueRegionModel> listInsideRegionModels = new List<ESCM.RevenueRegionModel>();
|
|
|
|
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<string>("SPREGIONTYPE_ID"),
|
|
t2 = t.Field<string>("SPREGIONTYPE_NAME")
|
|
} into m
|
|
select new
|
|
{
|
|
SPREGIONTYPE_ID = m.Key.t1,
|
|
SPREGIONTYPE_NAME = m.Key.t2,
|
|
CASHPAY = m.Sum(n => n.Field<decimal>("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<ESCM.RevenueServerModel> listRevenueServerModels = new List<ESCM.RevenueServerModel>();
|
|
var query2 = from t in RevenueAdditionalTable.AsEnumerable().Where(p => p.Field<string>("SPREGIONTYPE_ID") == q.SPREGIONTYPE_ID)
|
|
group t by new
|
|
{
|
|
t1 = t.Field<decimal>("SERVERPART_ID"),
|
|
t2 = t.Field<string>("SERVERPART_NAME"),
|
|
t3 = t.Field<string>("SERVERPART_CODE"),
|
|
t4 = t.Field<string>("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<decimal>("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<ESCM.RevenueReportModel>.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 方法 -> 获取营收统计详情
|
|
/// <summary>
|
|
/// 获取营收统计详情
|
|
/// </summary>
|
|
/// <param name="Serverpart_Id">服务区内码</param>
|
|
/// <param name="startTime">开始时间</param>
|
|
/// <param name="endTime">结束时间</param>
|
|
/// <param name="pushProvinceCode">省份编号</param>
|
|
/// <returns></returns>
|
|
[AcceptVerbs("GET", "POST")]
|
|
[Route("WeChat/GetRevenueReportDetils")]
|
|
[ResponseType(typeof(JsonMsg<ESCM.RevenueReportDetilsModel>))]
|
|
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<ESCM.RevenueReportDetilsDate> listRevenueReportDetilsDates = new List<ESCM.RevenueReportDetilsDate>();
|
|
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<DateTime>("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<ESCM.RevenueReportDetils> listRevenueReportDetils = new List<ESCM.RevenueReportDetils>();
|
|
//获取统计日期下的所有门店和上传方式分组数据
|
|
var query2 = from t in RevenueDetilsTable.AsEnumerable().Where(p => p.Field<DateTime>("ENDACCOUNT_DATE") == q.ENDACCOUNT_DATE)
|
|
group t by new
|
|
{
|
|
t1 = t.Field<string>("WORKER_NAME"),
|
|
t2 = t.Field<string>("SHOPSHORTNAME"),
|
|
t3 = t.Field<string>("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<decimal>("CASHPAY"))
|
|
};
|
|
//循环赋值对象
|
|
query2.ToList().ForEach(m =>
|
|
{
|
|
List<ESCM.RevenueReportDetils> _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<ESCM.RevenueReportDetilsModel>.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 方法 -> 获取单品统计报表数据
|
|
/// <summary>
|
|
/// 获取单品统计详细商品排名数据
|
|
/// </summary>
|
|
/// <param name="membershipId">会员内码</param>
|
|
/// <param name="startDate">开始时间</param>
|
|
/// <param name="endDate">结束时间</param>
|
|
/// <param name="serverpart_Code">服务区编号</param>
|
|
/// <param name="brand_Id">品牌内码</param>
|
|
/// <param name="ReportType">统计类型(All:全部,NORTH:西(北),SOUTH:东(南),不传默认全部)</param>
|
|
/// <param name="orderByFactor">排序条件(TOTALCOUNT:销售数量,TOTALSELLAMOUNT:销售金额,默认按销售数量)</param>
|
|
/// <param name="DataType">数据类型:<br/>1【按日查询】<br/>2【按月查询】</param>
|
|
/// <returns></returns>
|
|
[AcceptVerbs("GET", "POST")]
|
|
[Route("WeChat/GetProductSellDetils")]
|
|
[ResponseType(typeof(JsonMsg<ESCM.ProductSellByRegion>))]
|
|
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<ESCM.ProductSellRankingModel> _listProductSellRankingModel = new List<ESCM.ProductSellRankingModel>();
|
|
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<ESCM.ProductSellByRegion>.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));
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取单品按服务区品牌统计列表
|
|
/// </summary>
|
|
/// <param name="membershipId">会员内码</param>
|
|
/// <param name="startDate">开始时间</param>
|
|
/// <param name="endDate">结束时间</param>
|
|
/// <param name="orderByFactor">排序条件(TOTALCOUNT:销售数量,TOTALSELLAMOUNT:销售金额,TICKETCOUNT:客单数量,默认按销售数量)</param>
|
|
/// <param name="DataType">数据类型:<br/>1【按日查询】<br/>2【按月查询】</param>
|
|
/// <returns></returns>
|
|
[AcceptVerbs("GET", "POST")]
|
|
[Route("WeChat/GetProductSellByBrand")]
|
|
[ResponseType(typeof(JsonMsg<JsonList<ESCM.ProductSellModel>>))]
|
|
public IHttpActionResult GetProductSellByBrand(int membershipId, DateTime startDate,
|
|
DateTime endDate, string orderByFactor = "TOTALCOUNT", int DataType = 1)
|
|
{
|
|
try
|
|
{
|
|
//定义返回的数据对象
|
|
List<ESCM.ProductSellModel> listProductSellModel = new List<ESCM.ProductSellModel>();
|
|
//判断会员信息是否存在
|
|
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<string>("SERVERPART_CODE"),
|
|
t2 = t.Field<string>("SERVERPART_NAME")
|
|
} into m
|
|
select new
|
|
{
|
|
SERVERPART_CODE = m.Key.t1,
|
|
SERVERPART_NAME = m.Key.t2,
|
|
TOTALCOUNT = m.Sum(n => n.Field<decimal>("TOTALCOUNT")),
|
|
TOTALSELLAMOUNT = m.Sum(n => n.Field<decimal>("TOTALSELLAMOUNT")),
|
|
TICKETCOUNT = m.Sum(n => n.Field<decimal>("TICKETCOUNT"))
|
|
};
|
|
if (orderByFactor == "TOTALCOUNT")
|
|
{
|
|
//生成返回的数据对象
|
|
query.OrderByDescending(p => p.TOTALCOUNT).ToList().ForEach(q =>
|
|
{
|
|
//定义详情对象
|
|
List<ESCM.ProductSellDetilsModel> listProductSellDetils = new List<ESCM.ProductSellDetilsModel>();
|
|
ESCM.ProductSellModel productSellModel = new ESCM.ProductSellModel();
|
|
//绑定服务区名数据
|
|
productSellModel.Serverpart_Name = q.SERVERPART_NAME;
|
|
//绑定详情数据
|
|
var query2 = from t in ProductSellTable.AsEnumerable().Where(p =>
|
|
p.Field<string>("SERVERPART_CODE") == q.SERVERPART_CODE)
|
|
group t by new
|
|
{
|
|
t1 = t.Field<string>("SERVERPART_CODE"),
|
|
t2 = t.Field<decimal>("BUSINESS_BRAND")
|
|
} into m
|
|
select new
|
|
{
|
|
SERVERPART_CODE = m.Key.t1,
|
|
BUSINESS_BRAND = m.Key.t2,
|
|
TOTALCOUNT = m.Sum(n => n.Field<decimal>("TOTALCOUNT")),
|
|
TOTALSELLAMOUNT = m.Sum(n => n.Field<decimal>("TOTALSELLAMOUNT")),
|
|
TICKETCOUNT = m.Sum(n => n.Field<decimal>("TICKETCOUNT"))
|
|
};
|
|
query2.OrderByDescending(p => p.TOTALCOUNT).ToList().ForEach(n =>
|
|
{
|
|
//生成对象
|
|
List<ESCM.ProductSellRankingModel> listProductSellRanking = new List<ESCM.ProductSellRankingModel>();
|
|
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<ESCM.ProductSellDetilsModel> listProductSellDetilsModel = new List<ESCM.ProductSellDetilsModel>();
|
|
ESCM.ProductSellModel productSellModel = new ESCM.ProductSellModel();
|
|
//绑定服务区名数据
|
|
productSellModel.Serverpart_Name = q.SERVERPART_NAME;
|
|
//绑定详情数据
|
|
var query2 = from t in ProductSellTable.AsEnumerable().Where(p =>
|
|
p.Field<string>("SERVERPART_CODE") == q.SERVERPART_CODE)
|
|
group t by new
|
|
{
|
|
t1 = t.Field<string>("SERVERPART_CODE"),
|
|
t2 = t.Field<decimal>("BUSINESS_BRAND")
|
|
} into m
|
|
select new
|
|
{
|
|
SERVERPART_CODE = m.Key.t1,
|
|
BUSINESS_BRAND = m.Key.t2,
|
|
TOTALCOUNT = m.Sum(n => n.Field<decimal>("TOTALCOUNT")),
|
|
TOTALSELLAMOUNT = m.Sum(n => n.Field<decimal>("TOTALSELLAMOUNT")),
|
|
TICKETCOUNT = m.Sum(n => n.Field<decimal>("TICKETCOUNT"))
|
|
};
|
|
query2.OrderByDescending(p => p.TOTALCOUNT).ToList().ForEach(n =>
|
|
{
|
|
//生成对象
|
|
List<ESCM.ProductSellRankingModel> listProductSellRanking = new List<ESCM.ProductSellRankingModel>();
|
|
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<ESCM.ProductSellDetilsModel> listProductSellDetilsModel = new List<ESCM.ProductSellDetilsModel>();
|
|
ESCM.ProductSellModel productSellModel = new ESCM.ProductSellModel();
|
|
//绑定服务区名数据
|
|
productSellModel.Serverpart_Name = q.SERVERPART_NAME;
|
|
//绑定详情数据
|
|
var query2 = from t in ProductSellTable.AsEnumerable().Where(p =>
|
|
p.Field<string>("SERVERPART_CODE") == q.SERVERPART_CODE)
|
|
group t by new
|
|
{
|
|
t1 = t.Field<string>("SERVERPART_CODE"),
|
|
t2 = t.Field<decimal>("BUSINESS_BRAND")
|
|
} into m
|
|
select new
|
|
{
|
|
SERVERPART_CODE = m.Key.t1,
|
|
BUSINESS_BRAND = m.Key.t2,
|
|
TOTALCOUNT = m.Sum(n => n.Field<decimal>("TOTALCOUNT")),
|
|
TOTALSELLAMOUNT = m.Sum(n => n.Field<decimal>("TOTALSELLAMOUNT")),
|
|
TICKETCOUNT = m.Sum(n => n.Field<decimal>("TICKETCOUNT"))
|
|
};
|
|
query2.OrderByDescending(p => p.TOTALCOUNT).ToList().ForEach(n =>
|
|
{
|
|
//生成对象
|
|
List<ESCM.ProductSellRankingModel> listProductSellRanking = new List<ESCM.ProductSellRankingModel>();
|
|
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<ESCM.ProductSellModel> jsonList = JsonList<ESCM.ProductSellModel>.Success(listProductSellModel);
|
|
//返回数据
|
|
return Ok(JsonMsg<JsonList<ESCM.ProductSellModel>>.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));
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取单品品牌统计合计
|
|
/// </summary>
|
|
/// <param name="membershipId">会员内码</param>
|
|
/// <param name="startDate">开始时间</param>
|
|
/// <param name="endDate">结束时间</param>
|
|
/// <param name="serverpart_Code">服务区编号</param>
|
|
/// <param name="brand_Id">品牌内码</param>
|
|
/// <param name="DataType">数据类型:<br/>1【按日查询】<br/>2【按月查询】</param>
|
|
/// <returns></returns>
|
|
[AcceptVerbs("GET", "POST")]
|
|
[Route("WeChat/GetBrandSell")]
|
|
[ResponseType(typeof(JsonMsg<ESCM.ProductSellDetilsModel>))]
|
|
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<ESCM.ProductSellDetilsModel>.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 方法 -> 获取商家门店营收金额
|
|
/// <summary>
|
|
/// 获取商家门店营收金额
|
|
/// </summary>
|
|
/// <param name="MembershipId">商家会员内码</param>
|
|
/// <param name="endaccountDate">统计日期,默认昨日</param>
|
|
/// <returns></returns>
|
|
[AcceptVerbs("GET", "POST")]
|
|
[Route("Revenue/GetMerchantRevenue")]
|
|
[ResponseType(typeof(JsonMsg<MerchantRevenueModel>))]
|
|
public IHttpActionResult GetMerchantRevenue(int MembershipId, string endaccountDate = "")
|
|
{
|
|
try
|
|
{
|
|
//查询商家汇总数据
|
|
MerchantRevenueModel merchantRevenueModel = Helper.RevenueHelper.GetMerchantRevenue(
|
|
transaction, MembershipId, endaccountDate);
|
|
//返回最终结果
|
|
return base.Ok(JsonMsg<MerchantRevenueModel>.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 方法 -> 获取商家门店营收数据详情
|
|
/// <summary>
|
|
/// 获取商家门店营收数据详情
|
|
/// </summary>
|
|
/// <param name="MembershipId">商家会员内码</param>
|
|
/// <param name="endaccountDate">统计日期,默认昨日</param>
|
|
/// <returns></returns>
|
|
[AcceptVerbs("GET", "POST")]
|
|
[Route("Revenue/GetMerchantRevenueList")]
|
|
[ResponseType(typeof(JsonMsg<MerchantRevenueModel>))]
|
|
public IHttpActionResult GetMerchantRevenueList(int MembershipId, string endaccountDate = "")
|
|
{
|
|
try
|
|
{
|
|
//查询商家汇总数据
|
|
MerchantRevenueModel merchantRevenueModel = Helper.RevenueHelper.GetMerchantRevenueList(
|
|
transaction, MembershipId, endaccountDate);
|
|
//返回最终结果
|
|
return base.Ok(JsonMsg<MerchantRevenueModel>.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
|
|
}
|
|
}
|