99 lines
4.5 KiB
C#
99 lines
4.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Reflection;
|
|
using WX.CRM.Common;
|
|
using WX.CRM.DataSynFactory.BLL;
|
|
using WX.CRM.Model.EntitySync;
|
|
|
|
namespace WX.CRM.DataSynFactory
|
|
{
|
|
public class CreateFactory
|
|
{
|
|
/// <summary>
|
|
/// 处理待处理数据,并生成待成记录
|
|
/// </summary>
|
|
/// <param name="info">待处理模型</param>
|
|
public static void DataImport(SYNC_RECEIVE info)
|
|
{
|
|
string b = string.Empty;
|
|
try
|
|
{
|
|
if (info == null)
|
|
return;
|
|
b = info.BIDATATYPE;
|
|
var ret = DataImportOne(info);
|
|
if (ret)
|
|
{
|
|
new SYNC_RECEIVE_BL().ReceiveSucc(info);
|
|
}
|
|
else
|
|
{
|
|
new SYNC_RECEIVE_BL().ReceiveException(info);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
LogHelper.Error("【CreateFactory.DataImport】" + b + ":" + ex.ToString());
|
|
try
|
|
{
|
|
//转移待处理记当前到失败表
|
|
new SYNC_RECEIVE_BL().ReceiveError(info, ex.Message);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
LogHelper.Error("【DataSynFactory.BLL.SYNC_RECEIVE_BL().ReceiveError】转移到异常历史表失败" + e.Message + e.StackTrace);
|
|
}
|
|
throw ex;
|
|
}
|
|
}
|
|
|
|
#region 批量量导入与单个导入
|
|
static void DataImportBatch(SYNC_RECEIVE info)
|
|
{
|
|
try
|
|
{
|
|
if (info == null)
|
|
return;
|
|
var asd = System.Reflection.Assembly.Load("WX.CRM.DataSynFactory");
|
|
var modelName = string.Format("WX.CRM.DataSynFactory.Templates.{0}", info.BIDATATYPE);
|
|
var cmd = string.Format("WX.CRM.DataSynFactory.Cmd.{0}_IMP", info.BIDATATYPE);
|
|
var modelInstance = asd.CreateInstance(modelName);
|
|
var listtype = typeof(List<>).MakeGenericType(modelInstance.GetType());
|
|
var cmdInstance = asd.CreateInstance(cmd);
|
|
var method = cmdInstance.GetType().GetMethod("ImportDataBatch");
|
|
//method = method.MakeGenericMethod(modelInstance.GetType()); //实例时方法已指定类型
|
|
//----------------------------------------------------------------------------------------
|
|
Type catalogComposition = Assembly.Load("Common").GetType("WX.CRM.Common.Utility");
|
|
MethodInfo composePartsMethod = catalogComposition.GetMethod("JSONToObject", BindingFlags.Static | BindingFlags.Public);
|
|
var info22 = composePartsMethod.MakeGenericMethod(new Type[] { listtype }).Invoke(catalogComposition, new object[] { info.JSONTEXT });
|
|
//----------------------------------------------------------------------------------------
|
|
method.Invoke(cmdInstance, new object[] { info22, info.PICI ?? 0 });
|
|
}
|
|
catch
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
static bool DataImportOne(SYNC_RECEIVE info)
|
|
{
|
|
|
|
var asd = System.Reflection.Assembly.Load("WX.CRM.DataSynFactory");
|
|
var modelName = string.Format("WX.CRM.DataSynFactory.Templates.{0}", info.BIDATATYPE);
|
|
var cmd = string.Format("WX.CRM.DataSynFactory.Cmd.{0}_IMP", info.BIDATATYPE);
|
|
var modelInstance = asd.CreateInstance(modelName);
|
|
var cmdInstance = asd.CreateInstance(cmd);
|
|
var method = cmdInstance.GetType().GetMethod("GenerateBusinessOne");
|
|
//method = method.MakeGenericMethod(modelInstance.GetType()); //实例时方法已指定类型
|
|
//----------------------------------------------------------------------------------------
|
|
Type catalogComposition = Assembly.Load("Common").GetType("WX.CRM.Common.Utility");
|
|
MethodInfo composePartsMethod = catalogComposition.GetMethod("JSONToObject", BindingFlags.Static | BindingFlags.Public);
|
|
var info22 = composePartsMethod.MakeGenericMethod(new Type[] { modelInstance.GetType() }).Invoke(catalogComposition, new object[] { info.JSONTEXT });
|
|
//----------------------------------------------------------------------------------------
|
|
var obj = method.Invoke(cmdInstance, new object[] { info22 });
|
|
return (bool)obj;
|
|
|
|
}
|
|
#endregion
|
|
}
|
|
}
|