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

594 lines
29 KiB
C#

using System;
using System.Collections.Generic;
using System.Reflection;
using System.Collections;
using System.Diagnostics;
using System.Data;
using System.Linq;
using System.Text;
using System.IO;
using System.Configuration;
using SuperMap.RealEstate.Utility;
namespace SocketTransfer.SDK
{
public class EventsCommodity
{
#region
public static byte[] DoEvent(byte[] _Receive, int Type = 1)
{
try
{
switch (Type)
{
case 1:
using (SocketReceive _SocketReceive = new SocketReceive(_Receive))
{
if (!_SocketReceive.Valid())
{
throw new Exception("非法数据包!");
}
switch (_SocketReceive.ReceiveType)
{
case 0:
using (EndAccountReceive _EndAccountReceive = new EndAccountReceive(_Receive))
{
if (_EndAccountReceive.Valid())
{
_EndAccountReceive.ResetSize();
return DoEvent(_EndAccountReceive).ResetSize();
}
}
break;
case 1:
using (Transfer_SellDataReceive _Transfer_SellDataReceive = new Transfer_SellDataReceive(_Receive))
{
if (_Transfer_SellDataReceive.Valid())
{
_Transfer_SellDataReceive.ResetSize();
return DoEvent(_Transfer_SellDataReceive).ResetSize();
}
}
break;
case 2:
using (CommoditySaleReceive _CommoditySaleReceive = new CommoditySaleReceive(_Receive))
{
if (_CommoditySaleReceive.Valid())
{
_CommoditySaleReceive.ResetSize();
return DoEvent(_CommoditySaleReceive).ResetSize();
}
}
break;
case 3:
using (Transfer_SaleReceive _Transfer_SaleReceive = new Transfer_SaleReceive(_Receive))
{
if (_Transfer_SaleReceive.Valid())
{
_Transfer_SaleReceive.ResetSize();
return DoEvent(_Transfer_SaleReceive).ResetSize();
}
}
break;
case 6:
using (DataCollectionReceive _DataCollectionReceive = new DataCollectionReceive(_Receive))
{
if (_DataCollectionReceive.Valid())
{
_DataCollectionReceive.ResetSize();
return DoEvent(_DataCollectionReceive).ResetSize();
}
}
break;
}
}
break;
case 2:
using (WeChatPushReceive _WeChatPushReceive = new WeChatPushReceive(_Receive))
{
if (!_WeChatPushReceive.Valid())
{
throw new Exception("非法数据包!");
}
switch (_WeChatPushReceive.ReceiveType)
{
case 4:
using (WeChatPushDetailReceive _WeChatPushDetailReceive = new WeChatPushDetailReceive(_Receive))
{
if (_WeChatPushDetailReceive.Valid())
{
_WeChatPushDetailReceive.ResetSize();
return DoEvent(_WeChatPushDetailReceive).ResetSize();
}
}
break;
case 5:
using (WeChatPushSaleReceive _WeChatPushSaleReceive = new WeChatPushSaleReceive(_Receive))
{
if (_WeChatPushSaleReceive.Valid())
{
_WeChatPushSaleReceive.ResetSize();
return DoEvent(_WeChatPushSaleReceive).ResetSize();
}
}
break;
}
}
break;
}
throw new Exception("未定义接受方法或数据包不完整!");
}
catch (Exception ex)
{
LogHelper.WriteReceiveLog(ex.Message);
return null;
}
}
static void SaveRecord(EndAccountReceive receive, EndAccountSend send)
{
try
{
//using (SB.BankBusinessRecord bankBusinessRecord = new SB.BankBusinessRecord())
//{
// bankBusinessRecord.Bank_Code = receive.BankCode;
// bankBusinessRecord.Business_Code = receive.BusinessCode;
// bankBusinessRecord.Back_Code = send.BackCode;
// bankBusinessRecord.Operate_Date = System.DateTime.Now;
// bankBusinessRecord.Operate_Packet = send.Encoding.GetString(send.Source);
// bankBusinessRecord.Operate_Receive = receive.Source;
// string oo = receive.Encoding.GetString(receive.Source);
// //SuperMap.RealEstate.Utility.ObjectHelper.XmlSerialize<byte[]>(receive.Source);
// bankBusinessRecord.Insert();
//}
//using (SB.BankBusinessRecord bankBusinessRecordsend = new SB.BankBusinessRecord())
//{
// bankBusinessRecordsend.Bank_Code = receive.BankCode;
// bankBusinessRecordsend.Business_Code = receive.BusinessCode;
// bankBusinessRecordsend.Back_Code = send.BackCode;
// bankBusinessRecordsend.Operate_Date = System.DateTime.Now;
// bankBusinessRecordsend.Operate_Packet = send.Encoding.GetString(receive.Source);
// bankBusinessRecordsend.Operate_Receive = send.Source;//receive.Source;
// string oo = receive.Encoding.GetString(receive.Source);
// //SuperMap.RealEstate.Utility.ObjectHelper.XmlSerialize<byte[]>(receive.Source);
// bankBusinessRecordsend.Insert();
//}
}
catch (System.Exception ex)
{
ErrorRecord(ex, receive.Source);
//send.BackCode = "12";
}
}
#region BLOB
static byte[] ReadFileStream(string path)
{
FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
byte[] bytes = new byte[fileStream.Length];
fileStream.Read(bytes, 0, bytes.Length);
fileStream.Close();
Stream stream = new MemoryStream(bytes);
byte[] bytes2 = new byte[stream.Length];
stream.Read(bytes2, 0, bytes2.Length);
stream.Seek(0, SeekOrigin.Begin);
return bytes2;
}
#endregion
#region
static void ErrorRecord(Exception _Exception, byte[] _Receive)
{
System.IO.StreamWriter writer = null;
string _ErrorReceive = "";
try
{
if (ConfigurationManager.AppSettings["ErrorRecord"].ToString().ToLower() == "true")
{
using (SocketReceive socketCommodityReceive = new SocketReceive(_Receive))
{
if (!socketCommodityReceive.Valid())
{
_ErrorReceive = "非法数据包!";
}
else
{
#region
// switch (socketCommodityReceive.BusinessCode)
//{
// case "01":
// using (SocketCommodityReceive01 receive01 = new SocketCommodityReceive01(_Receive))
// {
// if (receive01.Valid())
// {
// receive01.ResetSize();
// }
// }
// break;
// case "02":
// using (SocketCommodityReceive02 receive02 = new SocketCommodityReceive02(_Receive))
// {
// if (receive02.Valid())
// {
// receive02.ResetSize();
// }
// }
// break;
// case "03":
// using (SocketCommodityReceive03 receive03 = new SocketCommodityReceive03(_Receive))
// {
// if (receive03.Valid())
// {
// receive03.ResetSize();
// }
// }
// break;
// case "04":
// using (SocketCommodityReceive04 receive04 = new SocketCommodityReceive04(_Receive))
// {
// if (receive04.Valid())
// {
// receive04.ResetSize();
// }
// }
// break;
// case "05":
// using (SocketCommodityReceive05 receive05 = new SocketCommodityReceive05(_Receive))
// {
// if (receive05.Valid())
// {
// receive05.ResetSize();
// }
// }
// break;
// case "06":
// using (SocketCommodityReceive06 receive06 = new SocketCommodityReceive06(_Receive))
// {
// receive06.ResetSize();
// if (receive06.Valid())
// }
// break;
// case "07":
// using (SocketCommodityReceive07 receive07 = new SocketCommodityReceive07(_Receive))
// {
// if (receive07.Valid())
// {
// receive07.ResetSize();
// }
// }
// break;
// case "08":
// using (SocketCommodityReceive08 receive08 = new SocketCommodityReceive08(_Receive))
// {
// if (receive08.Valid())
// {
// receive08.ResetSize();
// }
// }
// break;
// case "09":
// using (SocketCommodityReceive09 receive09 = new SocketCommodityReceive09(_Receive))
// {
// if (receive09.Valid())
// {
// receive09.ResetSize();
// }
// }
// break;
//}
#endregion
}
}
_ErrorReceive = _ErrorReceive + "";
string path = ConfigurationManager.AppSettings["ErrorLog"].ToString();
string filename = System.DateTime.Now.ToString("yyyyMMdd", System.Globalization.DateTimeFormatInfo.InvariantInfo) + ".txt";
if (!System.IO.Directory.Exists(path))
{
System.IO.Directory.CreateDirectory(path);
}
System.IO.FileInfo file = new System.IO.FileInfo(path + "/" + filename);
writer = new System.IO.StreamWriter(file.FullName, true, System.Text.Encoding.Default);//文件不存在就创建,true表示追加
writer.WriteLine("--------ERROR_START------");
writer.WriteLine(System.DateTime.Now.ToString());
writer.WriteLine("-------------------------");
writer.WriteLine("Message:" + _Exception.Message.ToString());
writer.WriteLine("StackTrace:" + _Exception.StackTrace.ToString());
writer.WriteLine("Source:" + _Exception.Source.ToString());
writer.WriteLine("TargetSite:" + _Exception.TargetSite.ToString());
writer.WriteLine("---------------------------ERROR_END-------------------------------------------");
writer.WriteLine("--------------------------------------------------------------------------------------");
}
}
catch (System.Exception ex)
{
Trace.Write(ex.Message.ToString());
}
finally
{
if (writer != null)
{
writer.Close();
}
}
}
#endregion
#region
///// <summary>
///// 对象的反射
///// </summary>
///// <typeparam name="O">源对象</typeparam>
///// <typeparam name="T">目标对象</typeparam>
///// <param name="o">传入的源对象</param>
///// <param name="t">传入的目标对象</param>
/// <param name="fieles">过滤的字段</param>
public static void Assignment<O, T>(O o, T t, params string[] fieles)
{
Type TType = typeof(T);
Type OType = typeof(O);
PropertyInfo[] tps = TType.GetProperties();
PropertyInfo[] ops = OType.GetProperties();
for (int i = 0; i < ops.Length; i++)
{
if (!fieles.Contains(ops[i].Name))
{
for (int j = 0; j < tps.Length; j++)
{
if (ops[i].Name == tps[j].Name)
{
string opsi = ops[i].PropertyType.ToString();
string tpsj = tps[j].PropertyType.ToString();
if (opsi == tpsj)
{
tps[j].SetValue(t, ops[i].GetValue(o, null), null);
break;
}
else
{
switch (tps[i].PropertyType.ToString())
{
case "System.Nullable`1[System.Int32]":
if (IsType(ops[j].PropertyType, "System.Nullable`1[System.Int64]"))
{
if (ops[i].GetValue(o, null) != null)
{
tps[j].SetValue(t, (Int32)ops[i].GetValue(o, null), null);
break;
}
}
else if (IsType(ops[j].PropertyType, "System.Nullable`1[System.Int16]"))
{
if (ops[i].GetValue(o, null) != null)
{
tps[j].SetValue(t, Int32.Parse(ops[i].GetValue(o, null).ToString()), null);
break;
}
break;
}
break;
case "System.Nullable`1[System.Int64]":
if (IsType(ops[j].PropertyType, "System.Nullable`1[System.Int32]"))
{
if (ops[i].GetValue(o, null) != null)
{
tps[j].SetValue(t, (Int64)ops[i].GetValue(o, null), null);
break;
}
}
else if (IsType(ops[j].PropertyType, "System.Nullable`1[System.Int16]"))
{
if (ops[i].GetValue(o, null) != null)
{
tps[j].SetValue(t, (Int64)ops[i].GetValue(o, null), null);
break;
}
}
break;
case "System.Nullable`1[System.Int16]":
if (IsType(ops[j].PropertyType, "System.Nullable`1[System.Int32]"))
{
if (ops[i].GetValue(o, null) != null)
{
tps[j].SetValue(t, Int16.Parse(ops[i].GetValue(o, null).ToString()), null);
break;
}
}
else if (IsType(ops[j].PropertyType, "System.Nullable`1[System.Int64]"))
{
if (!ops[i].GetValue(o, null).Equals(null))
{
tps[j].SetValue(t, (Int16)ops[i].GetValue(o, null), null);
break;
}
}
break;
}
}
}
}
}
}
}
public static T Parse<T>(object objValue, T defaultValue)
{
T returnValue = defaultValue;
if (objValue != null && objValue != DBNull.Value)
{
try
{
returnValue = (T)objValue;
}
catch
{
returnValue = defaultValue;
}
}
//返回值
return returnValue;
}
/// <summary>
/// 类型匹配
/// </summary>
/// <param name="type">类型</param>
/// <param name="typeName">类型名称</param>
/// <returns></returns>
public static bool IsType(Type type, string typeName)
{
if (type.ToString() == typeName)
return true;
if (type.ToString() == "System.Object")
return false;
return IsType(type.BaseType, typeName);
}
#endregion
#endregion
#region
#region EndAccountSend
static EndAccountSend DoEvent(EndAccountReceive _EndAccountReceive)
{
EndAccountSend _EndAccountSend = new EndAccountSend();
_EndAccountSend.ReceiveType = _EndAccountReceive.ReceiveType;
_EndAccountSend.SERVERPARTCODE = _EndAccountReceive.SERVERPARTCODE;
_EndAccountSend.SHOPCODE = _EndAccountReceive.SHOPCODE;
_EndAccountSend.MACHINECODE = _EndAccountReceive.MACHINECODE;
_EndAccountSend.ENDACCOUNT_DATE = _EndAccountReceive.ENDACCOUNT_DATE;
_EndAccountSend.ENDACCOUNT_STARTDATE = _EndAccountReceive.ENDACCOUNT_STARTDATE;
_EndAccountSend.TRANSFER_ID = _EndAccountReceive.TRANSFER_ID;
_EndAccountSend.FLAG = _EndAccountReceive.FLAG;
return _EndAccountSend;
}
#endregion
#region SellDataSend
static SellDataSend DoEvent(SellDataReceive _SellDataReceive)
{
SellDataSend _SellDataSend = new SellDataSend();
_SellDataSend.ReceiveType = _SellDataReceive.ReceiveType;
_SellDataSend.SERVERPARTCODE = _SellDataReceive.SERVERPARTCODE;
_SellDataSend.SHOPCODE = _SellDataReceive.SHOPCODE;
_SellDataSend.MACHINECODE = _SellDataReceive.MACHINECODE;
_SellDataSend.SELLDATA_DATE = _SellDataReceive.SELLDATA_DATE;
_SellDataSend.TICKETCODE = _SellDataReceive.TICKETCODE;
_SellDataSend.TRANSFER_ID = _SellDataReceive.TRANSFER_ID;
_SellDataSend.LINENUM = _SellDataReceive.LINENUM;
//SaveRecord(_SellDataReceive, _SellDataSend);
return _SellDataSend;
}
static Transfer_SellDataSend DoEvent(Transfer_SellDataReceive _Transfer_SellDataReceive)
{
Transfer_SellDataSend _Transfer_SellDataSend = new Transfer_SellDataSend();
_Transfer_SellDataSend.ReceiveType = _Transfer_SellDataReceive.ReceiveType;
_Transfer_SellDataSend.SERVERPARTCODE = _Transfer_SellDataReceive.SERVERPARTCODE;
_Transfer_SellDataSend.SHOPCODE = _Transfer_SellDataReceive.SHOPCODE;
_Transfer_SellDataSend.MACHINECODE = _Transfer_SellDataReceive.MACHINECODE;
_Transfer_SellDataSend.SELLDATA_DATE = _Transfer_SellDataReceive.SELLDATA_DATE;
_Transfer_SellDataSend.TICKETCODE = _Transfer_SellDataReceive.TICKETCODE;
_Transfer_SellDataSend.TRANSFER_ID = _Transfer_SellDataReceive.TRANSFER_ID;
//SaveRecord(_SellDataReceive, _SellDataSend);
return _Transfer_SellDataSend;
}
#endregion
#region CommoditySaleSend
static CommoditySaleSend DoEvent(CommoditySaleReceive _CommoditySaleReceive)
{
CommoditySaleSend _CommoditySaleSend = new CommoditySaleSend();
_CommoditySaleSend.ReceiveType = _CommoditySaleReceive.ReceiveType;
_CommoditySaleSend.SERVERPARTCODE = _CommoditySaleReceive.SERVERPARTCODE;
_CommoditySaleSend.SHOPCODE = _CommoditySaleReceive.SHOPCODE;
_CommoditySaleSend.STARTDATE = _CommoditySaleReceive.STARTDATE;
_CommoditySaleSend.ENDDATE = _CommoditySaleReceive.ENDDATE;
_CommoditySaleSend.TRANSFER_ID = _CommoditySaleReceive.TRANSFER_ID;
//SaveRecord(_SellDataReceive, _SellDataSend);
return _CommoditySaleSend;
}
#endregion
#region Transfer_SaleSend
static Transfer_SaleSend DoEvent(Transfer_SaleReceive _Transfer_SaleReceive)
{
Transfer_SaleSend _Transfer_SaleSend = new Transfer_SaleSend();
_Transfer_SaleSend.ReceiveType = _Transfer_SaleReceive.ReceiveType;
_Transfer_SaleSend.SERVERPARTCODE = _Transfer_SaleReceive.SERVERPARTCODE;
_Transfer_SaleSend.SHOPCODE = _Transfer_SaleReceive.SHOPCODE;
_Transfer_SaleSend.STARTDATE = _Transfer_SaleReceive.STARTDATE;
_Transfer_SaleSend.ENDDATE = _Transfer_SaleReceive.ENDDATE;
_Transfer_SaleSend.TRANSFER_ID = _Transfer_SaleReceive.TRANSFER_ID;
//SaveRecord(_SellDataReceive, _SellDataSend);
return _Transfer_SaleSend;
}
#endregion
#region WeChatPushDetailSend
static WeChatPushDetailSend DoEvent(WeChatPushDetailReceive _WeChatPushDetailReceive)
{
WeChatPushDetailSend _WeChatPushDetailSend = new WeChatPushDetailSend();
_WeChatPushDetailSend.ReceiveType = _WeChatPushDetailReceive.ReceiveType;
_WeChatPushDetailSend.GROUP_TYPE = _WeChatPushDetailReceive.GROUP_TYPE;
_WeChatPushDetailSend.PROVINCE_CODE = _WeChatPushDetailReceive.PROVINCE_CODE;
_WeChatPushDetailSend.WECHATPUSHDETAIL_ID = _WeChatPushDetailReceive.WECHATPUSHDETAIL_ID;
_WeChatPushDetailSend.RTWECHATPUSH_ID = _WeChatPushDetailReceive.RTWECHATPUSH_ID;
_WeChatPushDetailSend.DIRECTION_IDS = _WeChatPushDetailReceive.DIRECTION_IDS;
_WeChatPushDetailSend.USER_NAME = _WeChatPushDetailReceive.USER_NAME;
_WeChatPushDetailSend.STATISTICS_DATE = _WeChatPushDetailReceive.STATISTICS_DATE;
//SaveRecord(_SellDataReceive, _SellDataSend);
return _WeChatPushDetailSend;
}
#endregion
#region WeChatPushSaleSend
static WeChatPushSaleSend DoEvent(WeChatPushSaleReceive _WeChatPushSaleReceive)
{
WeChatPushSaleSend _WeChatPushSaleSend = new WeChatPushSaleSend();
_WeChatPushSaleSend.ReceiveType = _WeChatPushSaleReceive.ReceiveType;
_WeChatPushSaleSend.GROUP_TYPE = _WeChatPushSaleReceive.GROUP_TYPE;
_WeChatPushSaleSend.PROVINCE_CODE = _WeChatPushSaleReceive.PROVINCE_CODE;
_WeChatPushSaleSend.WECHATPUSHSALES_ID = _WeChatPushSaleReceive.WECHATPUSHSALES_ID;
_WeChatPushSaleSend.WECHATPUSHDETAIL_ID = _WeChatPushSaleReceive.WECHATPUSHDETAIL_ID;
_WeChatPushSaleSend.GROUP_TYPE = _WeChatPushSaleReceive.GROUP_TYPE;
_WeChatPushSaleSend.DATA_TYPE = _WeChatPushSaleReceive.DATA_TYPE;
//SaveRecord(_SellDataReceive, _SellDataSend);
return _WeChatPushSaleSend;
}
#endregion
#region DataCollectionSend
static DataCollectionSend DoEvent(DataCollectionReceive _DataCollectionReceive)
{
DataCollectionSend _DataCollectionSend = new DataCollectionSend();
_DataCollectionSend.ReceiveType = _DataCollectionReceive.ReceiveType;
_DataCollectionSend.SERVERPARTCODE = _DataCollectionReceive.SERVERPARTCODE;
_DataCollectionSend.SHOPCODE = _DataCollectionReceive.SHOPCODE;
_DataCollectionSend.MACHINECODE = _DataCollectionReceive.MACHINECODE;
_DataCollectionSend.MACADDRESS = _DataCollectionReceive.MACADDRESS;
_DataCollectionSend.DATACOLLECTION_DATE = _DataCollectionReceive.DATACOLLECTION_DATE;
_DataCollectionSend.DATACOLLECTION_TYPE = _DataCollectionReceive.DATACOLLECTION_TYPE;
_DataCollectionSend.DATACOLLECTION_ID = _DataCollectionReceive.DATACOLLECTION_ID;
_DataCollectionSend.TRANSFER_ID = _DataCollectionReceive.TRANSFER_ID;
//SaveRecord(_SellDataReceive, _SellDataSend);
return _DataCollectionSend;
}
#endregion
#endregion
}
}