using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using Lib = ESSupport.Lib; namespace PrintDemo { public class OrderOnline { /// /// 订单状态 /// public enum OrderState { /// /// 待支付 /// PendingPay = 1005, /// /// 已支付 /// AlreadyPaid = 1010, /// /// 已接收 /// Received = 1090, /// /// 制作中 /// Making = 2000, /// /// 待提取 /// Extract = 2010, /// /// 已完成 /// Completed = 3000 } #region 在线订单下载 /// /// 在线订单下载 /// /// 订单接口IP /// 订单接口端口 /// 服务区编码 /// 门店编码 /// 省份编码 public static void OrderDown(string serviceIP, string servicePort, string serverPartCode, string shopCode, string provinceCode = "330000") { long _MaxId = 0; string _Result = ""; string _selectSql = String.Format("SELECT MAX(SALEBILL_ID) from T_SALEBILL WHERE SERVERPART_CODE = '{0}' AND SHOPCODE = '{1}'", serverPartCode, shopCode); try { _MaxId = long.Parse(Lib.SyBaseHelper.QueryOdbc(_selectSql).Tables[0].Rows[0][0].ToString()); } catch { _MaxId = 0; } try { object[] _object = { serverPartCode, shopCode, _MaxId.ToString(), provinceCode }; _Result = Lib.WSHelper.InvokeWebService("http://" + serviceIP + ":" + servicePort + "/service.asmx", "getSaleBillList", _object).ToString(); } catch { _Result = ""; } if (_Result != "") { _Result = _Result.Replace(" ", ""); using (DataSet _DateSet = Lib.JsonHelper.JsonToDataSet(_Result)) { if (_DateSet.Tables.Count > 0) { List _InsertList = new List(); int _MinId = 0; foreach (DataTable _Table in _DateSet.Tables) { switch (_Table.TableName.ToUpper()) { case "T_SALEBILL": try { _MinId = int.Parse(_Table.Compute("MIN(SALEBILL_ID)", "").ToString()); } catch { _MinId = 0; } _selectSql = string.Format("SELECT SALEBILL_ID,SALEBILL_CODE,MEMBERSHIP_ID,SALEBILL_TYPE,TABLE_NUMBER," + "TAKE_TYPE,PROVINCE_CODE,SERVERPART_ID,SERVERPART_CODE,SERVERPART_NAME,SERVERPARTSHOP_ID," + "SHOPCODE,SHOPNAME,ORDER_PERSON,ORDER_PERSONTEL,ORDER_DATE,RESERVATION_DATE,RECORD_COUNT," + "TOTAL_COUNT,ORDER_AMOUNT,SALEBILL_STATE,SALEBILL_DESC FROM T_SALEBILL WHERE SALEBILL_ID >= {0} AND " + "SERVERPART_CODE = '{1}' AND SHOPCODE = '{2}'", _MinId, serverPartCode, shopCode); DataTable _SaleBill = Lib.SyBaseHelper.QueryOdbc(_selectSql).Tables[0]; string _strSaleBillInsert = "INSERT INTO T_SALEBILL (SALEBILL_ID,SALEBILL_CODE,MEMBERSHIP_ID,SALEBILL_TYPE," + "TABLE_NUMBER,TAKE_TYPE,PROVINCE_CODE,SERVERPART_ID,SERVERPART_CODE,SERVERPART_NAME," + "SERVERPARTSHOP_ID,SHOPCODE,SHOPNAME,ORDER_PERSON,ORDER_PERSONTEL,ORDER_DATE," + "RESERVATION_DATE,RECORD_COUNT,TOTAL_COUNT,ORDER_AMOUNT,SALEBILL_STATE,SALEBILL_DESC) VALUES "; string _strSaleBillValues = ""; if (_Table.Rows.Count > 0) { for (int i = 0; i < _Table.Rows.Count; i++) { if ((i + 1) % 50 == 0 && _strSaleBillValues != "") { _InsertList.Add(_strSaleBillInsert + _strSaleBillValues); _strSaleBillValues = ""; } if (_SaleBill.Select("SALEBILL_ID = " + _Table.Rows[i]["SALEBILL_ID"].ToString()).Count() == 0) { string SALEBILL_ID = _Table.Rows[i]["SALEBILL_ID"].ToString(); string SALEBILL_CODE = _Table.Rows[i]["SALEBILL_CODE"].ToString(); string MEMBERSHIP_ID = _Table.Rows[i]["MEMBERSHIP_ID"].ToString(); string SALEBILL_TYPE = _Table.Rows[i]["SALEBILL_TYPE"].ToString(); string TABLE_NUMBER = _Table.Rows[i]["TABLE_NUMBER"].ToString(); string TAKE_TYPE = _Table.Rows[i]["TAKE_TYPE"].ToString(); string PROVINCE_CODE = _Table.Rows[i]["PROVINCE_CODE"].ToString(); string SERVERPART_ID = _Table.Rows[i]["SERVERPART_ID"].ToString(); string SERVERPART_CODE = _Table.Rows[i]["SERVERPART_CODE"].ToString(); string SERVERPART_NAME = _Table.Rows[i]["SERVERPART_NAME"].ToString(); string SERVERPARTSHOP_ID = _Table.Rows[i]["SERVERPARTSHOP_ID"].ToString(); string SHOPCODE = _Table.Rows[i]["SHOPCODE"].ToString(); string SHOPNAME = _Table.Rows[i]["SHOPNAME"].ToString(); string ORDER_PERSON = _Table.Rows[i]["ORDER_PERSON"].ToString(); string ORDER_PERSONTEL = _Table.Rows[i]["ORDER_PERSONTEL"].ToString(); string ORDER_DATE = _Table.Rows[i]["ORDER_DATE"].ToString(); string RESERVATION_DATE = _Table.Rows[i]["RESERVATION_DATE"].ToString(); string RECORD_COUNT = _Table.Rows[i]["RECORD_COUNT"].ToString(); string TOTAL_COUNT = _Table.Rows[i]["TOTAL_COUNT"].ToString(); string ORDER_AMOUNT = _Table.Rows[i]["ORDER_AMOUNT"].ToString(); string SALEBILL_STATE = _Table.Rows[i]["SALEBILL_STATE"].ToString(); string SALEBILL_DESC = _Table.Rows[i]["SALEBILL_DESC"].ToString(); _strSaleBillValues += (_strSaleBillValues == "" ? "(" : ",(") + SALEBILL_ID + ",'" + SALEBILL_CODE + "'," + (MEMBERSHIP_ID == "" ? "NULL" : MEMBERSHIP_ID) + "," + (SALEBILL_TYPE == "" ? "NULL" : SALEBILL_TYPE) + ",'" + TABLE_NUMBER + "'," + (TAKE_TYPE == "" ? "NULL" : TAKE_TYPE) + "," + (PROVINCE_CODE == "" ? "NULL" : PROVINCE_CODE) + "," + (SERVERPART_ID == "" ? "NULL" : SERVERPART_ID) + ",'" + SERVERPART_CODE + "','" + SERVERPART_NAME + "'," + (SERVERPARTSHOP_ID == "" ? "NULL" : SERVERPARTSHOP_ID) + ",'" + SHOPCODE + "','" + SHOPNAME + "','" + ORDER_PERSON + "','" + ORDER_PERSONTEL + "'," + (ORDER_DATE == "" ? "NULL" : "DATETIME('" + ORDER_DATE + "')") + "," + (RESERVATION_DATE == "" ? "NULL" : "DATETIME('" + RESERVATION_DATE + "')") + "," + (RECORD_COUNT == "" ? "NULL" : RECORD_COUNT) + "," + (TOTAL_COUNT == "" ? "NULL" : TOTAL_COUNT) + "," + (ORDER_AMOUNT == "" ? "NULL" : ORDER_AMOUNT) + "," + SALEBILL_STATE + ",'" + SALEBILL_DESC + "')"; } } } break; case "T_SALEDETAIL": try { _MinId = int.Parse(_Table.Compute("MIN(SALEDETAIL_ID)", "").ToString()); } catch { _MinId = 0; } _selectSql = "SELECT SALEDETAIL_ID,SALEBILL_ID,PROVINCE_CODE,COMMODITY_ID,COMMODITY_CODE," + "COMMODITY_NAME,COMMODITY_BARCODE,COMMODITY_UNIT,COMMODITY_RULE,ORDER_COUNT," + "AVERAGE_PRICE,DISCOUNT_AMOUNT,ORDER_AMOUNT,SALEDETAIL_DESC FROM T_SALEDETAIL " + "WHERE SALEDETAIL_ID >= " + _MinId; DataTable _SaleDetail = Lib.SyBaseHelper.QueryOdbc(_selectSql).Tables[0]; string _strSaleDetailInsert = "INSERT INTO T_SALEDETAIL ( SALEDETAIL_ID,SALEBILL_ID,PROVINCE_CODE," + "COMMODITY_ID,COMMODITY_CODE,COMMODITY_NAME,COMMODITY_BARCODE,COMMODITY_UNIT," + "COMMODITY_RULE,ORDER_COUNT,AVERAGE_PRICE,DISCOUNT_AMOUNT,ORDER_AMOUNT,SALEDETAIL_DESC ) VALUES "; string _strSaleDetailValues = ""; if (_Table.Rows.Count > 0) { for (int i = 0; i < _Table.Rows.Count; i++) { if ((i + 1) % 50 == 0 && _strSaleDetailValues != "") { _InsertList.Add(_strSaleDetailInsert + _strSaleDetailValues); _strSaleDetailValues = ""; } if (_SaleDetail.Select("SALEDETAIL_ID = " + _Table.Rows[i]["SALEDETAIL_ID"].ToString() + " AND SALEBILL_ID = " + _Table.Rows[i]["SALEBILL_ID"].ToString()).Count() == 0) { string SALEDETAIL_ID = _Table.Rows[i]["SALEDETAIL_ID"].ToString(); string SALEBILL_ID = _Table.Rows[i]["SALEBILL_ID"].ToString(); string PROVINCE_CODE = _Table.Rows[i]["PROVINCE_CODE"].ToString(); string COMMODITY_ID = _Table.Rows[i]["COMMODITY_ID"].ToString(); string COMMODITY_CODE = _Table.Rows[i]["COMMODITY_CODE"].ToString(); string COMMODITY_NAME = _Table.Rows[i]["COMMODITY_NAME"].ToString(); string COMMODITY_BARCODE = _Table.Rows[i]["COMMODITY_BARCODE"].ToString(); string COMMODITY_UNIT = _Table.Rows[i]["COMMODITY_UNIT"].ToString(); string COMMODITY_RULE = _Table.Rows[i]["COMMODITY_RULE"].ToString(); string ORDER_COUNT = _Table.Rows[i]["ORDER_COUNT"].ToString(); string AVERAGE_PRICE = _Table.Rows[i]["AVERAGE_PRICE"].ToString(); string DISCOUNT_AMOUNT = _Table.Rows[i]["DISCOUNT_AMOUNT"].ToString(); string ORDER_AMOUNT = _Table.Rows[i]["ORDER_AMOUNT"].ToString(); string SALEDETAIL_DESC = _Table.Rows[i]["SALEDETAIL_DESC"].ToString(); _strSaleDetailValues += (_strSaleDetailValues == "" ? "(" : ",(") + SALEDETAIL_ID + "," + SALEBILL_ID + "," + (PROVINCE_CODE == "" ? "NULL" : PROVINCE_CODE) + "," + (COMMODITY_ID == "" ? "NULL" : COMMODITY_ID) + ",'" + COMMODITY_CODE + "','" + COMMODITY_NAME + "','" + COMMODITY_BARCODE + "','" + COMMODITY_UNIT + "','" + COMMODITY_RULE + "'," + (ORDER_COUNT == "" ? "0" : ORDER_COUNT) + "," + (AVERAGE_PRICE == "" ? "0" : AVERAGE_PRICE) + "," + (DISCOUNT_AMOUNT == "" ? "0" : DISCOUNT_AMOUNT) + "," + (ORDER_AMOUNT == "" ? "0" : ORDER_AMOUNT) + ",'" + SALEDETAIL_DESC + "')"; } } } break; } } try { if (_InsertList.Count > 0) { Lib.SyBaseHelper.ExecuteSqlTran(_InsertList); } } catch (Exception ex) { } } } } } #endregion #region 订单状态变更 public static bool OrderStateChange(string serviceIP, string servicePort, DataRow[] saleBill, int orderState) { string _strSaleBillID = ""; string _Result = ""; if (saleBill.Count() == 0) { return false; } for (int i = 0; i < saleBill.Count(); i++) { _strSaleBillID += _strSaleBillID == "" ? "" : "," + saleBill[i]["SALEBILL_ID"].ToString(); } try { object[] _object = { _strSaleBillID, orderState.ToString() }; _Result = Lib.WSHelper.InvokeWebService("http://" + serviceIP + ":" + servicePort + "/service.asmx", "UpdateSaleBillList", _object).ToString(); } catch { _Result = ""; } if (_Result != "") { } string _strUpdateSql = string.Format("UPDATE T_SALEBILL SET SALEBILL_STATE IN ( {0} ) WHERE SALEBILL_ID = {1} ", _strSaleBillID, orderState); try { Lib.SyBaseHelper.ExecuteSqlTran(_strUpdateSql); return true; } catch { return false; } } #endregion #region 读取订单信息 /// /// 读取主订单信息 /// /// 服务区编码 /// 门店编码 /// 订单状态 /// public static DataTable GetSaleBill(string serverPartCode, string shopCode, int orderState) { string _strSelect = string.Format("SELECT SALEBILL_ID,SALEBILL_CODE,MEMBERSHIP_ID,SALEBILL_TYPE,TABLE_NUMBER," + "TAKE_TYPE,PROVINCE_CODE,SERVERPART_ID,SERVERPART_CODE,SERVERPART_NAME,SERVERPARTSHOP_ID," + "SHOPCODE,SHOPNAME,ORDER_PERSON,ORDER_PERSONTEL,ORDER_DATE,RESERVATION_DATE,RECORD_COUNT,TOTAL_COUNT," + "ORDER_AMOUNT,SALEBILL_STATE,SALEBILL_DESC FROM T_SALEBILL WHERE SALEBILL_STATE = {0} AND " + "SERVERPART_CODE = '{1}' AND SHOPCODE = '{2}' ORDER BY ORDER_DATE ", orderState, serverPartCode, shopCode); try { return Lib.SyBaseHelper.QueryOdbc(_strSelect).Tables[0]; } catch { return null; } } #endregion #region 获取订单详情 /// /// 获取订单详情 /// /// 主订单ID /// public static DataTable GetSaleDetail(string saleBillID) { string _strSelect = string.Format("SELECT SALEDETAIL_ID,SALEBILL_ID,PROVINCE_CODE,COMMODITY_ID," + "COMMODITY_CODE,COMMODITY_NAME,COMMODITY_BARCODE,COMMODITY_UNIT,COMMODITY_RULE," + "ORDER_COUNT,AVERAGE_PRICE,DISCOUNT_AMOUNT,ORDER_AMOUNT,SALEDETAIL_DESC " + "FROM T_SALEDETAIL WHERE SALEBILL_ID = {0}", saleBillID); try { return Lib.SyBaseHelper.QueryOdbc(_strSelect).Tables[0]; } catch { return null; } } #endregion } }