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 } }