2025-03-28 09:49:56 +08:00

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("&nbsp;", "");
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
}
}