323 lines
19 KiB
C#
323 lines
19 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using Lib = ESSupport.Lib;
|
|
|
|
namespace PrintDemo
|
|
{
|
|
public class OrderOnline
|
|
{
|
|
/// <summary>
|
|
/// 订单状态
|
|
/// </summary>
|
|
public enum OrderState
|
|
{
|
|
/// <summary>
|
|
/// 待支付
|
|
/// </summary>
|
|
PendingPay = 1005,
|
|
/// <summary>
|
|
/// 已支付
|
|
/// </summary>
|
|
AlreadyPaid = 1010,
|
|
/// <summary>
|
|
/// 已接收
|
|
/// </summary>
|
|
Received = 1090,
|
|
/// <summary>
|
|
/// 制作中
|
|
/// </summary>
|
|
Making = 2000,
|
|
/// <summary>
|
|
/// 待提取
|
|
/// </summary>
|
|
Extract = 2010,
|
|
/// <summary>
|
|
/// 已完成
|
|
/// </summary>
|
|
Completed = 3000
|
|
}
|
|
#region 在线订单下载
|
|
/// <summary>
|
|
/// 在线订单下载
|
|
/// </summary>
|
|
/// <param name="serviceIP">订单接口IP</param>
|
|
/// <param name="servicePort">订单接口端口</param>
|
|
/// <param name="serverPartCode">服务区编码</param>
|
|
/// <param name="shopCode">门店编码</param>
|
|
/// <param name="provinceCode">省份编码</param>
|
|
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<string> _InsertList = new List<string>();
|
|
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 读取订单信息
|
|
/// <summary>
|
|
/// 读取主订单信息
|
|
/// </summary>
|
|
/// <param name="serverPartCode">服务区编码</param>
|
|
/// <param name="shopCode">门店编码</param>
|
|
/// <param name="orderState">订单状态</param>
|
|
/// <returns></returns>
|
|
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 获取订单详情
|
|
/// <summary>
|
|
/// 获取订单详情
|
|
/// </summary>
|
|
/// <param name="saleBillID">主订单ID</param>
|
|
/// <returns></returns>
|
|
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
|
|
}
|
|
}
|