using System.Collections.Generic;
using System.Data;
using SuperMap.RealEstate.ServiceModel;
using MSPB = SuperMap.RealEstate.MobileServicePlatform.Business;
using ESCom = EShang.Common;
using HZQR.Common;
using RedisHelp;
namespace YFBusinessApi.Helper
{
///
/// 订单相关方法
///
public class OrderHelper
{
#region 方法 -> 商家订单列表
///
/// 商家订单列表
///
/// 事务管理器
/// 商家会员内码
/// 订单状态
/// 支付方式
/// 交易月份
/// 订单编号
/// 总数量
/// 页码数
/// 每页显示条数
///
public static List GetOrderList(Transaction transaction, int membershipId, string Order_Status,
string Order_Pay, string Order_Month, string Order_Code, ref int totalCount, int pageIndex = 1, int pageSize = 10)
{
List OrderList = new List();
//查询登录会员关联的商户
ESCom.Model.BusinessUserInfo redisUser = new ESCom.Model.BusinessUserInfo();
RedisHelper redisHelper = new RedisHelper(3);//从redis中取
if (redisHelper.KeyExists(membershipId.ToString()))
{
redisUser = redisHelper.StringGet(membershipId.ToString());
}
string sqlWhere = "";
switch (Order_Pay)
{
case "0":
sqlWhere = " AND A.CHANNEL_TYPE IN ('微信','支付宝')";//页面显示“现金”
break;
case "1":
sqlWhere = " AND A.CHANNEL_TYPE IN ('实业饭卡')";
break;
}
if (!string.IsNullOrWhiteSpace(Order_Month))
{
sqlWhere += " AND TO_CHAR(A.ORDER_DATE,'YYYYMM') = '" + Order_Month + "'";
}
if (!string.IsNullOrWhiteSpace(Order_Status))
{
sqlWhere += " AND A.SALEBILL_STATE IN (" + Order_Status + ")";
}
if (!string.IsNullOrEmpty(Order_Code))
{
sqlWhere += " AND A.SALEBILL_CODE LIKE '%" + Order_Code + "%'";
}
string sql = string.Format(@"
SELECT
A.SALEBILL_TYPE,A.CHANNEL_TYPE,A.SALEBILL_ID,A.SALEBILL_CHILD_ID,A.SALEBILL_CODE,
A.ORDER_DATE,A.ORDER_AMOUNT,A.CONSUME_POINT,A.PAY_AMOUNT,A.SALEBILL_STATE,
'' AS Order_StatusText,A.SALEBILL_DESC,A.ORDER_PERSON,A.ORDER_PERSONTEL,A.PACK_TYPE,
A.COMMODITY_NAME,A.RECORD_COUNT,A.TOTAL_COUNT
FROM MOBILESERVICE_PLATFORM.V_MALLBILLFB A
WHERE A.SALEBILL_STATE < 9000 AND A.OWNERUNIT_ID = {0} {1}", redisUser.UserOwnerUnitId, sqlWhere);
DataTable dtSaleBill = new MSPB.SALEBILL(transaction).ExecuteDataTable(sql);
dtSaleBill.DefaultView.Sort = "SALEBILL_STATE ASC,ORDER_DATE DESC";
dtSaleBill = dtSaleBill.DefaultView.ToTable();
//获取订单总数量
totalCount = dtSaleBill.Rows.Count;
for (int RowCount = 0; RowCount < pageSize; RowCount++)
{
int RowNum = pageSize * (pageIndex - 1) + RowCount;
if (RowNum >= dtSaleBill.Rows.Count)
{
break;
}
Models.OrderModel orderModel = new Models.OrderModel();
orderModel.Order_Id = dtSaleBill.Rows[RowNum]["SALEBILL_ID"].TryParseToInt();
if (!string.IsNullOrWhiteSpace(dtSaleBill.Rows[RowNum]["SALEBILL_CHILD_ID"].ToString()))
{
orderModel.SubOrder_Id = dtSaleBill.Rows[RowNum]["SALEBILL_CHILD_ID"].TryParseToInt();
}
orderModel.Order_Code = dtSaleBill.Rows[RowNum]["SALEBILL_CODE"].ToString();
orderModel.Order_Type = dtSaleBill.Rows[RowNum]["SALEBILL_TYPE"].TryParseToInt();
orderModel.Order_Pay = dtSaleBill.Rows[RowNum]["CHANNEL_TYPE"].ToString();
orderModel.Order_Date = dtSaleBill.Rows[RowNum]["ORDER_DATE"].ToString();
orderModel.Order_Amount = dtSaleBill.Rows[RowNum]["ORDER_AMOUNT"].TryParseToDecimal();
orderModel.Consume_Point = dtSaleBill.Rows[RowNum]["CONSUME_POINT"].TryParseToDecimal();
orderModel.Pay_Amount = dtSaleBill.Rows[RowNum]["PAY_AMOUNT"].TryParseToDecimal();
orderModel.Order_Status = dtSaleBill.Rows[RowNum]["SALEBILL_STATE"].TryParseToInt();
orderModel.Order_Remark = dtSaleBill.Rows[RowNum]["SALEBILL_DESC"].ToString();
orderModel.Order_Linkman = dtSaleBill.Rows[RowNum]["ORDER_PERSON"].ToString();
orderModel.Order_LinkmanTel = dtSaleBill.Rows[RowNum]["ORDER_PERSONTEL"].ToString();
orderModel.Order_PackType = dtSaleBill.Rows[RowNum]["PACK_TYPE"].TryParseToInt();
orderModel.Commodity_Name = dtSaleBill.Rows[RowNum]["COMMODITY_NAME"].ToString();
orderModel.Record_Count = dtSaleBill.Rows[RowNum]["RECORD_COUNT"].TryParseToInt();
orderModel.Total_Count = dtSaleBill.Rows[RowNum]["TOTAL_COUNT"].TryParseToDecimal();
//解析订单状态
orderModel.Order_StatusText = GetOrderStatusText(orderModel.Order_Type,
orderModel.Order_PackType, orderModel.Order_Status);
orderModel.Row_Number = RowNum + 1;
OrderList.Add(orderModel);
}
return OrderList;
}
///
/// 解析订单状态
///
/// 订单类型
/// 打包方式
/// 订单状态
///
public static string GetOrderStatusText(int Order_Type, int Order_PackType, int orderStatus)
{
string orderStatusText = "";
switch (orderStatus)
{
case 1005:
orderStatusText = "待支付";
break;
case 1010:
if (Order_Type == 6000)
{
if (Order_PackType == 2000)
{
orderStatusText = "待自提";
}
else
{
orderStatusText = "待就餐";
}
}
else
{
if (Order_PackType == 2000)
{
orderStatusText = "待自提";
}
else
{
orderStatusText = "待发货";
}
}
break;
case 2010:
orderStatusText = "已发货";
break;
case 3000:
orderStatusText = "已完成";
break;
case 9000:
orderStatusText = "已取消";
break;
default:
break;
}
return orderStatusText;
}
#endregion
#region 方法 -> 商家订单详情
///
/// 商家订单详情
///
/// 事务管理器
/// 商家会员内码
/// 订单id
/// 子订单id
/// 订单编码
///
public static Models.OrderDetailModel GetOrderDetail(Transaction _Transaction,
int membershipId, int? OrderId, int? SubOrder_Id, string Order_Code)
{
Models.OrderDetailModel orderDetailModel = new Models.OrderDetailModel();
//查询登录会员关联的商户
ESCom.Model.BusinessUserInfo redisUser = new ESCom.Model.BusinessUserInfo();
RedisHelper redisHelper = new RedisHelper(3);//从redis中取
if (redisHelper.KeyExists(membershipId.ToString()))
{
redisUser = redisHelper.StringGet(membershipId.ToString());
}
string sqlWhere = "A.OWNERUNIT_ID = " + redisUser.UserOwnerUnitId;
if (!string.IsNullOrEmpty(Order_Code))
{
sqlWhere += " AND A.SALEBILL_CODE = '" + Order_Code + "'";
}
if (SubOrder_Id.TryParseToInt() > 0)
{
sqlWhere += " AND A.SALEBILL_CHILD_ID = " + SubOrder_Id;
}
if (OrderId.TryParseToInt() > 0)
{
sqlWhere += " AND A.SALEBILL_ID = " + OrderId;
}
string sql = string.Format("SELECT * FROM MOBILESERVICE_PLATFORM.V_MALLBILLFB A WHERE {0}", sqlWhere);
DataTable dtSaleBill = new MSPB.SALEBILL(_Transaction).ExecuteDataTable(sql);
if (dtSaleBill.Rows.Count > 0)
{
DataRow dr = dtSaleBill.Rows[0];
orderDetailModel.Order_Id = dr["SALEBILL_ID"].TryParseToInt();
orderDetailModel.Order_Type = dr["SALEBILL_TYPE"].TryParseToInt();
if (orderDetailModel.Order_Type == 3010)
{
//积分兑换订单,不存在拆单现象,默认子订单就是自己,为兼容小程序端评价的BUG
orderDetailModel.SubOrder_Id = orderDetailModel.Order_Id;
}
else if (!string.IsNullOrWhiteSpace(dr["SALEBILL_CHILD_ID"].ToString()))
{
orderDetailModel.SubOrder_Id = dr["SALEBILL_CHILD_ID"].TryParseToInt();
}
orderDetailModel.Order_Code = dr["SALEBILL_CODE"].ToString();
orderDetailModel.Order_Status = dr["SALEBILL_STATE"].TryParseToInt();
if (!string.IsNullOrWhiteSpace(dr["COUPON_AMOUNT"].ToString()))
{
orderDetailModel.Order_CouponAmount = dr["COUPON_AMOUNT"].TryParseToDecimal();
}
if (!string.IsNullOrWhiteSpace(dr["ORDER_AMOUNT"].ToString()))
{
orderDetailModel.Order_Amount = dr["ORDER_AMOUNT"].TryParseToDecimal();
}
if (!string.IsNullOrWhiteSpace(dr["PAY_AMOUNT"].ToString()))
{
orderDetailModel.Order_PayAmount = dr["PAY_AMOUNT"].TryParseToDecimal();
}
if (!string.IsNullOrWhiteSpace(dr["CONSUME_POINT"].ToString()))
{
orderDetailModel.Order_ConsumePoint = dr["CONSUME_POINT"].TryParseToDecimal();
}
orderDetailModel.Order_Date = dr["ORDER_DATE"].ToString();
orderDetailModel.Order_Pay = dr["CHANNEL_TYPE"].ToString();
orderDetailModel.Order_Remark = dr["SALEBILL_DESC"].ToString();
orderDetailModel.Province = dr["ADDRESS"].ToString();
orderDetailModel.Address = dr["DOORPLATE"].ToString();
orderDetailModel.User_Name = dr["USER_NAME"].ToString();
orderDetailModel.User_Phone = dr["MOBILEPHONE"].ToString();
orderDetailModel.Reservation_Date = dr["RESERVATION_DATE"].ToString();
orderDetailModel.Reservation_EndDate = dr["RESERVATION_ENDDATE"].ToString();
orderDetailModel.Order_Linkman = dr["ORDER_PERSON"].ToString();
orderDetailModel.Order_LinkmanTel = dr["ORDER_PERSONTEL"].ToString();
if (!string.IsNullOrWhiteSpace(dr["PACK_TYPE"].ToString()))
{
orderDetailModel.Order_PackType = dr["PACK_TYPE"].TryParseToInt();
}
//浙江大酒店到店时间显示区间范围
if (orderDetailModel.Reservation_Date != "" && orderDetailModel.Reservation_EndDate != "")
{
orderDetailModel.Arrival_Date = orderDetailModel.Reservation_Date + " ~ " +
orderDetailModel.Reservation_EndDate.Split(' ')[1];
}
orderDetailModel.OrderCommodityList = new List();
//商品信息
string sql_Commodity = string.Format(@"SELECT
A.SALEDETAIL_ID,A.COMMODITY_NAME,A.ORDER_AMOUNT,A.ORDER_COUNT,A.CONSUME_POINT,
CASE WHEN I.IMAGE_PATH IS NOT NULL THEN '{0}' || I.IMAGE_PATH END AS COMMODITY_IMAGE
FROM
MOBILESERVICE_PLATFORM.T_SALEDETAIL A
LEFT JOIN
MOBILESERVICE_PLATFORM.V_IMAGE I
ON
I.TABLE_NAME = 'T_COMMODITY' AND
NVL(I.IMAGE_TYPE,1000) = 1000 AND TABLE_ID = A.COMMODITY_ID
WHERE
SALEBILL_ID = {1}", ESCom.Config.AppSettings.CoopMerchantUrls, OrderId);
DataTable dtCommodity = new MSPB.SALEDETAIL(_Transaction).ExecuteDataTable(sql_Commodity);
foreach (DataRow drCommodity in dtCommodity.Select("", "SALEDETAIL_ID"))
{
Models.OrderCommodityDetailModel orderCommodityDetailModel = new Models.OrderCommodityDetailModel();
orderCommodityDetailModel.Commodity_Name = drCommodity["COMMODITY_NAME"].ToString();
if (!string.IsNullOrWhiteSpace(drCommodity["ORDER_AMOUNT"].ToString()))
{
orderCommodityDetailModel.Commodity_Price = drCommodity["ORDER_AMOUNT"].TryParseToDecimal();
}
if (!string.IsNullOrWhiteSpace(drCommodity["ORDER_COUNT"].ToString()))
{
orderCommodityDetailModel.Commodity_Count = drCommodity["ORDER_COUNT"].TryParseToDecimal();
}
if (!string.IsNullOrWhiteSpace(drCommodity["CONSUME_POINT"].ToString()))
{
orderCommodityDetailModel.Commodity_ConsumePoint = drCommodity["CONSUME_POINT"].TryParseToDecimal();
}
orderCommodityDetailModel.Commodity_Image = drCommodity["COMMODITY_IMAGE"].ToString();
orderDetailModel.OrderCommodityList.Add(orderCommodityDetailModel);
}
}
return orderDetailModel;
}
#endregion
#region 方法 -> 商家订单发货
public static int DeliveryOrder(Transaction _Transaction,
string Membership_Id, string Order_Id, string SubOrder_Id, ref string Result_Desc)
{
int ResultCode = 100;
ESCom.Model.BusinessUserInfo redisUser = new ESCom.Model.BusinessUserInfo();
RedisHelper redisHelper = new RedisHelper(3);//从redis中取
if (redisHelper.KeyExists(Membership_Id))
{
redisUser = redisHelper.StringGet(Membership_Id);
}
if (!string.IsNullOrEmpty(SubOrder_Id))
{
MSPB.SALEBILL_CHILD _SALEBILL_CHILD = new MSPB.SALEBILL_CHILD(_Transaction);
_SALEBILL_CHILD.SALEBILL_CHILD_ID = SubOrder_Id.TryParseToInt();
if (_SALEBILL_CHILD.Select())
{
if (_SALEBILL_CHILD.OWNERUNIT_ID != redisUser.UserOwnerUnitId)
{
ResultCode = 305;
Result_Desc = "您没有该订单发货权限!";
}
else if (_SALEBILL_CHILD.SALEBILL_STATE < 3000)
{
_SALEBILL_CHILD.SALEBILL_STATE = 3000;
_SALEBILL_CHILD.Update();
WeChatPushHelper.PushWechatMessage(_Transaction, _SALEBILL_CHILD, null);
ResultCode = 100;
Result_Desc = "子订单核销成功";
}
else
{
ResultCode = 101;
Result_Desc = "订单已被核销";
}
}
}
else if (!string.IsNullOrWhiteSpace(Order_Id))
{
MSPB.SALEBILL _SALEBILL = new MSPB.SALEBILL(_Transaction);
_SALEBILL.SALEBILL_ID = Order_Id.TryParseToInt();
if (_SALEBILL.Select())
{
if (_SALEBILL.OWNERUNIT_ID != redisUser.UserOwnerUnitId)
{
ResultCode = 305;
Result_Desc = "您没有该订单发货权限!";
}
else if (_SALEBILL.SALEBILL_STATE < 3000)
{
_SALEBILL.SALEBILL_STATE = 3000;//发货完成订单
_SALEBILL.Update();
//订单核销推送
WeChatPushHelper.PushWechatMessage(_Transaction, null, _SALEBILL);
ResultCode = 100;
Result_Desc = "核销成功!";
}
else
{
ResultCode = 101;
Result_Desc = "订单已被核销";
}
}
else
{
ResultCode = 102;
Result_Desc = "订单不存在";
}
}
else
{
ResultCode = 201;
Result_Desc = "订单信息缺失";
}
return ResultCode;
}
#endregion
#region 方法 -> 获取在线订单列表
///
/// 获取在线订单列表
///
/// 事务管理器
/// 商家会员内码
/// 订单类型
/// 总数量
/// 页码数,默认1
/// 每页显示条数,默认10
///
public static List GetOnlineBillList(Transaction transaction,
int membershipId, string order_Type, ref int totalCount, int pageIndex = 1, int pageSize = 10)
{
List OnlineBillModelList = new List();
//将在线点餐订单和会员商城订单组合在一起
DataTable dtOnlineBill = new DataTable();
#region 定义表内容
dtOnlineBill.Columns.Add("Order_Id", typeof(int));
dtOnlineBill.Columns.Add("SubOrder_Id", typeof(int));
dtOnlineBill.Columns.Add("Order_Type", typeof(int));
dtOnlineBill.Columns.Add("Take_Type", typeof(int));
dtOnlineBill.Columns.Add("Order_Code", typeof(string));
dtOnlineBill.Columns.Add("Order_Date", typeof(string));
dtOnlineBill.Columns.Add("Order_Amount", typeof(decimal));
dtOnlineBill.Columns.Add("Consume_Point", typeof(decimal));
dtOnlineBill.Columns.Add("Order_PackType", typeof(decimal));
dtOnlineBill.Columns.Add("Order_Status", typeof(decimal));
dtOnlineBill.Columns.Add("Order_Remark", typeof(string));
dtOnlineBill.Columns.Add("Commodity_Name", typeof(string));
dtOnlineBill.Columns.Add("Record_Count", typeof(decimal));
dtOnlineBill.Columns.Add("Total_Count", typeof(decimal));
#endregion
if (string.IsNullOrWhiteSpace(order_Type) || order_Type == "0")
{
//获取该会员在线点餐订单数据
DataTable dtScanOrderBill = GetScanOrderList(transaction, membershipId);
foreach (DataRow drScanOrderBill in dtScanOrderBill.Rows)
{
DataRow drOnlineBill = dtOnlineBill.NewRow();
drOnlineBill["Order_Id"] = drScanOrderBill["SALEBILL_ID"];
drOnlineBill["Order_Type"] = 6000;
drOnlineBill["Take_Type"] = drScanOrderBill["TAKE_TYPE"];
drOnlineBill["Order_Code"] = drScanOrderBill["SALEBILL_CODE"];
drOnlineBill["Order_Date"] = drScanOrderBill["ORDER_DATE"].TryParseToString();
drOnlineBill["Order_Amount"] = drScanOrderBill["ORDER_AMOUNT"];
drOnlineBill["Order_Status"] = drScanOrderBill["SALEBILL_STATE"];
drOnlineBill["Order_Remark"] = drScanOrderBill["SALEBILL_DESC"];
drOnlineBill["Commodity_Name"] = drScanOrderBill["COMMODITY_NAME"];
drOnlineBill["Record_Count"] = drScanOrderBill["GOODS_COUNTS"];
drOnlineBill["Total_Count"] = drScanOrderBill["TOTALCOUNT"];
dtOnlineBill.Rows.Add(drOnlineBill);
}
}
if (string.IsNullOrWhiteSpace(order_Type) || order_Type == "1")
{
//获取该会员商城订单数据
DataTable dtSaleBill = GetMallOrderList(transaction, membershipId);
foreach (DataRow drSaleBill in dtSaleBill.Rows)
{
DataRow drOnlineBill = dtOnlineBill.NewRow();
drOnlineBill["Order_Id"] = drSaleBill["SALEBILL_ID"];
drOnlineBill["SubOrder_Id"] = drSaleBill["SALEBILL_CHILD_ID"];
drOnlineBill["Order_Type"] = drSaleBill["SALEBILL_TYPE"];
drOnlineBill["Order_Code"] = drSaleBill["SALEBILL_CODE"];
drOnlineBill["Order_Date"] = drSaleBill["ORDER_DATE"].TryParseToString();
drOnlineBill["Order_Amount"] = drSaleBill["ORDER_AMOUNT"];
drOnlineBill["Consume_Point"] = drSaleBill["CONSUME_POINT"];
drOnlineBill["Order_Status"] = drSaleBill["SALEBILL_STATE"];
drOnlineBill["Order_Remark"] = drSaleBill["SALEBILL_DESC"];
drOnlineBill["Commodity_Name"] = drSaleBill["COMMODITY_NAME"];
drOnlineBill["Record_Count"] = drSaleBill["RECORD_COUNT"];
drOnlineBill["Total_Count"] = drSaleBill["TOTAL_COUNT"];
dtOnlineBill.Rows.Add(drOnlineBill);
}
}
dtOnlineBill.DefaultView.Sort = "Order_Status,Order_Date desc";
dtOnlineBill = dtOnlineBill.DefaultView.ToTable();
totalCount = dtOnlineBill.Rows.Count;
for (int RowCount = 0; RowCount < pageSize; RowCount++)
{
int RN = pageSize * (pageIndex - 1) + RowCount;
if (RN >= dtOnlineBill.Rows.Count)
{
break;
}
DataRow _DataRow = dtOnlineBill.Rows[RN];
ESCom.Model.OnlineBillModel onlineBillModel = new ESCom.Model.OnlineBillModel();
onlineBillModel.Order_Id = _DataRow["Order_Id"].TryParseToInt();
if (!string.IsNullOrWhiteSpace(_DataRow["SubOrder_Id"].ToString()))
{
onlineBillModel.SubOrder_Id = _DataRow["SubOrder_Id"].TryParseToInt();
}
onlineBillModel.Order_Type = _DataRow["Order_Type"].TryParseToInt();
if (!string.IsNullOrWhiteSpace(_DataRow["Take_Type"].ToString()))
{
onlineBillModel.Take_Type = _DataRow["Take_Type"].TryParseToInt();
}
onlineBillModel.Order_Code = _DataRow["Order_Code"].ToString();
onlineBillModel.Order_Date = _DataRow["Order_Date"].ToString();
onlineBillModel.Order_Amount = _DataRow["Order_Amount"].TryParseToDecimal();
onlineBillModel.Consume_Point = _DataRow["Consume_Point"].TryParseToDecimal();
onlineBillModel.Order_Status = _DataRow["Order_Status"].TryParseToInt();
onlineBillModel.Order_Status_Text = GetOrderStatusText(_DataRow["Order_Type"].TryParseToInt(),
_DataRow["Order_PackType"].TryParseToInt(), _DataRow["Order_Status"].TryParseToInt());
onlineBillModel.Order_Remark = _DataRow["Order_Remark"].ToString();
onlineBillModel.Commodity_Name = _DataRow["Commodity_Name"].ToString();
onlineBillModel.Record_Count = _DataRow["Record_Count"].TryParseToDecimal();
onlineBillModel.Total_Count = _DataRow["Total_Count"].TryParseToDecimal();
onlineBillModel.RN = RN + 1;
OnlineBillModelList.Add(onlineBillModel);
}
return OnlineBillModelList;
}
#region 方法 -> 根据商家会员内码查询在线点餐订单列表
///
/// 根据商家会员内码查询在线点餐订单列表
///
/// 事务管理器
/// 商家会员内码
///
public static DataTable GetScanOrderList(Transaction _Transaction, int membershipId)
{
//获取商户门店权限集合
string provinceCode = "", serverpartShopCodes = "";
ESCom.BusinessMan.GetUserServerPartShop(membershipId, _Transaction, ref provinceCode, ref serverpartShopCodes);
#region 查询订单列表
string sqlWhere = "";
if (!string.IsNullOrEmpty(serverpartShopCodes))
{
sqlWhere += " AND A.SERVERPART_CODE || A.SHOPCODE IN ('" + serverpartShopCodes.Replace(",", "','") + "')";
}
else
{
sqlWhere += " AND 1 = 2";
}
string sql = string.Format(@"
SELECT
A.*,D.COMMODITY_NAME,D.GOODS_COUNTS,D.TOTALCOUNT,D.TOTAL_PRICE,D.COMMODITY_IDS
FROM
MOBILESERVICE_PLATFORM.T_SALEBILL A,
(
SELECT
MAX(COMMODITY_NAME) AS COMMODITY_NAME,WM_CONCAT(COMMODITY_ID) AS COMMODITY_IDS,
COUNT(SALEDETAIL_ID) AS GOODS_COUNTS,SALEBILL_ID,
SUM(ORDER_COUNT) AS TOTALCOUNT,SUM(ORDER_AMOUNT) AS TOTAL_PRICE
FROM
MOBILESERVICE_PLATFORM.T_SALEDETAIL
GROUP BY SALEBILL_ID
) D
WHERE
A.SALEBILL_ID = D.SALEBILL_ID AND A.SALEBILL_TYPE = 6000 AND
A.SALEBILL_STATE > 0 AND A.SALEBILL_STATE < 9000 {0}", sqlWhere);
#endregion
DataTable dtScanOrderBill = new MSPB.SALEBILL(_Transaction).ExecuteDataTable(sql);
return dtScanOrderBill;
}
#endregion
#region 方法 -> 根据商家会员内码查询商城订单列表
///
/// 根据商家会员内码查询商城订单列表
///
/// 事务管理器
/// 商家会员内码
///
public static DataTable GetMallOrderList(Transaction _Transaction, int membershipId)
{
//查询登录会员关联的商户
ESCom.Model.BusinessUserInfo redisUser = new ESCom.Model.BusinessUserInfo();
RedisHelper redisHelper = new RedisHelper(3);//从redis中取
if (redisHelper.KeyExists(membershipId.ToString()))
{
redisUser = redisHelper.StringGet(membershipId.ToString());
}
string sql = string.Format(@"
SELECT
A.SALEBILL_TYPE,A.CHANNEL_TYPE,A.SALEBILL_ID,A.SALEBILL_CHILD_ID,A.SALEBILL_CODE,
A.ORDER_DATE,A.ORDER_AMOUNT,A.CONSUME_POINT,A.PAY_AMOUNT,A.SALEBILL_STATE,
A.SALEBILL_DESC,A.ORDER_PERSON,A.ORDER_PERSONTEL,A.PACK_TYPE,
A.COMMODITY_NAME,A.RECORD_COUNT,A.TOTAL_COUNT
FROM MOBILESERVICE_PLATFORM.V_MALLBILLFB A
WHERE A.SALEBILL_STATE < 9000 AND A.OWNERUNIT_ID = {0}", redisUser.UserOwnerUnitId);
DataTable dtSaleBill = new MSPB.SALEBILL(_Transaction).ExecuteDataTable(sql);
return dtSaleBill;
}
#endregion
#endregion
#region 方法 -> 核账列表
///
/// 核账列表
///
/// 事务管理器
/// 商家会员内码
/// 统计开始时间
/// 统计结束时间
/// 总数量
/// 页码数
/// 每页行数
///
public static List GetAccountBillList(Transaction _Transaction,
string membershipId, string StartDate, string EndDate, ref int totalCount, int pageIndex = 1, int pageSize = 10)
{
List AccountBillList = new List();
//查询登录会员信息
ESCom.Model.BusinessUserInfo redisUser = new ESCom.Model.BusinessUserInfo();
RedisHelper redisHelper = new RedisHelper(3);//从redis中取
if (redisHelper.KeyExists(membershipId))
{
redisUser = redisHelper.StringGet(membershipId);
}
string sqlWhere = "";
if (!string.IsNullOrWhiteSpace(StartDate))
{
sqlWhere += " AND ORDER_DATE >= TO_DATE('" + StartDate.Split(' ')[0] + "','YYYY/MM/DD')";
}
if (!string.IsNullOrWhiteSpace(EndDate))
{
sqlWhere += " AND ORDER_DATE < TO_DATE('" + EndDate.Split(' ')[0] + "','YYYY/MM/DD') + 1";
}
string sql = string.Format(@"
SELECT
MIN(ORDER_DATE) AS ORDER_DATE,SUM(COST_AMOUNT) AS COST_AMOUNT,
SUM(CASE WHEN CHANNEL_TYPE IN ('微信','支付宝') THEN COST_AMOUNT ELSE 0 END) AS CASHPAY,
SUM(CASE WHEN CHANNEL_TYPE IN ('实业饭卡','余额支付') THEN COST_AMOUNT ELSE 0 END) AS MCARD,
CASE WHEN OWNERUNIT_ID = 55 THEN '浙江大酒店' ELSE '杭州驿商科技有限公司' END AS CASHPAY_SETTLE,
CASE WHEN OWNERUNIT_ID = 55 THEN '浙江大酒店' ELSE '浙江高速商贸经营管理有限公司' END AS MCARD_SETTLE
FROM MOBILESERVICE_PLATFORM.V_MALLSALEBILLLIST
WHERE SALEBILL_STATE >= 1010 AND SALEBILL_STATE < 9000 AND COST_AMOUNT > 0 AND OWNERUNIT_ID={1} {0}
GROUP BY OWNERUNIT_ID,TO_CHAR(ORDER_DATE,'YYYY/MM')", sqlWhere, redisUser.UserOwnerUnitId);
DataTable dtAccountBill = new MSPB.SALEBILL(_Transaction).ExecuteDataTable(sql);
//按照时间倒序显示
dtAccountBill.DefaultView.Sort = "ORDER_DATE DESC";
dtAccountBill = dtAccountBill.DefaultView.ToTable();
totalCount = dtAccountBill.Rows.Count;
for (int RowCount = 0; RowCount < pageSize; RowCount++)
{
int RN = pageSize * (pageIndex - 1) + RowCount;
if (RN >= dtAccountBill.Rows.Count)
{
break;
}
DataRow drSaleBill = dtAccountBill.Rows[RN];
Models.AccountBillModel accountBillModel = new Models.AccountBillModel();
accountBillModel.Date = drSaleBill["ORDER_DATE"].ToString();
accountBillModel.Amount = drSaleBill["COST_AMOUNT"].TryParseToDecimal();
accountBillModel.CashPay = drSaleBill["CASHPAY"].TryParseToDecimal();
accountBillModel.MCard = drSaleBill["MCARD"].TryParseToDecimal();
accountBillModel.CashPay_Settle = drSaleBill["CASHPAY_SETTLE"].ToString();
accountBillModel.MCard_Settle = drSaleBill["MCARD_SETTLE"].ToString();
accountBillModel.Rownum = RN + 1;
AccountBillList.Add(accountBillModel);
}
return AccountBillList;
}
#endregion
}
}