using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.Serialization;
using System.Data;
using ICS.WCF.Base;
using ICSSoft.Entity;
using www.ufida.org.EntityData;
using UFSoft.UBF.Util.Context;
using System.Configuration;
using System.ServiceModel;
using UFSoft.UBF.Service;
namespace ICS.CreateU9Customer
{
public class CreateU9Customer
{
public OperationResult CustCreateU9Customer(CustomerInsertDataClass CusList)
{
OperationResult result = new OperationResult();
//U9.PM.PO.POShipLine.CreatePOShipLineDefault();
#region 服务调用框架结构
//实例化代理类 UFIDAU9ISVItemIBatchCreateItemByDTOSRVClient
UFIDAU9ISVCustomerIBatchCreateCustomerByDTOSVClient client = new UFIDAU9ISVCustomerIBatchCreateCustomerByDTOSVClient();
//服务返回结果
UFIDAU9CBOSCMCustomerCustomerData[] returnCustomers;
//返回异常信息,目前还没有使用此属性
UFSoft.UBF.Exceptions.MessageBase[] returnMsg;
//上下文信息
object context;
//传入 参数
string[] splitBy = new string[] { };
try
{
context = CreateContextObj();
StringBuilder beginstr = new StringBuilder();
beginstr.AppendLine("-----------------------传入数据验证开始-----------------------------");
beginstr.AppendLine("创建U9客户信息");
beginstr.AppendLine("组织:" + CusList.OrgCode);
//beginstr.AppendLine("客户区号:" + CusList.CustomerCode);
beginstr.AppendLine("客户名称:" + CusList.CustomerName);
beginstr.AppendLine("客户简称:" + CusList.ShrotName);
beginstr.AppendLine("客户分类:" + CusList.CustomerType);
beginstr.AppendLine("业务员:" + CusList.CustomerUser);
beginstr.AppendLine("行业:" + CusList.TradeCategory);
beginstr.AppendLine("工商注册码:" + CusList.CorpUnifyCode);
beginstr.AppendLine("-----------------------传入数据验证结束-----------------------------");
Appconfig.WriteLogFile(beginstr.ToString(), "创建U9客户信息");
//if (CusList.OrgCode != "01")
//{
// result.MESSAGE = "组织不为苏州伟创时不能新建客户,只能下发!";
// result.IsSuccess = false;
// return result;
//}
#region 获取组织ID
string OrgID = "";
string orgsql = @"select ID from Base_Organization
where Code='{0}'";
orgsql = string.Format(orgsql, CusList.OrgCode);
DataTable orgdt = DBhlper.Query(orgsql, Appconfig.GetU9ConnStr());
if (orgdt.Rows.Count != 0)
{
OrgID = orgdt.Rows[0]["ID"].ToString();
}
else
{
result.MESSAGE = "组织编码:'" + CusList.OrgCode + "'不存在!";
result.IsSuccess = false;
return result;
}
#endregion
//验证客户是否已经存在(如果组织为苏州伟创则查询流水号,否则直接查询苏州伟创相同的客户,没有则报错)
string checksql = "";
string CusCode = "";
checksql = @"select * from CBO_Customer A
LEFT JOIN CBO_Customer_Trl B
ON B.ID=A.ID
WHERE B.Name='{0}'
AND A.Org='{1}'";
checksql = string.Format(checksql, CusList.CustomerName, OrgID);
DataTable checkdt = DBhlper.Query(checksql, Appconfig.GetU9ConnStr());
if (checkdt.Rows.Count == 0)
{
string SerialNo = "";
//if (CusList.OrgCode == "01")
//{
#region 查询客户编码流水号
// string areasql = @"select Code from Base_DefineValue
// where ValueSetDef='1001912240122432'
// AND Code='{0}'";
// areasql = string.Format(areasql, CusList.CustomerCode);
// DataTable areadt = DBhlper.Query(areasql, Appconfig.GetU9ConnStr());
// if (areadt.Rows.Count == 0)
// {
// result.MESSAGE = "区号:'" + CusList.CustomerCode + "'不存在!";
// result.IsSuccess = false;
// return result;
// }
// string serialsql = @"select TOP 1 Code from CBO_Customer
// where Org='" + OrgID + "' and code < '999999' and code not like'%[a-z]%' order by Code DESC";
// serialsql = string.Format(serialsql, OrgID);
// //serialsql = string.Format(serialsql, CusList.CustomerCode, OrgID);
// DataTable serialdt = DBhlper.Query(serialsql, Appconfig.GetU9ConnStr());
// if (serialdt.Rows.Count == 0)
// {
// SerialNo = "0001";
// }
// else
// {
// //string BaseNo = serialdt.Rows[0]["Code"].ToString().Split('-')[1];
// string BaseNo = serialdt.Rows[0]["Code"].ToString();
// SerialNo = (Convert.ToInt32(BaseNo) + 1).ToString().PadLeft(4, '0');
// }
SerialNo = CusList.CustomerNo;
#endregion
//}
//给传入参数赋值
UFIDAU9ISVCustomerCustomerDTOData[] customerDatas = setDataForCustomer(CusList, SerialNo, OrgID, CusCode);
UFIDAU9CBOPubControllerContextDTOData custContext = CreateContextDto();
//服务调用
(client.Endpoint.Binding as BasicHttpBinding).MaxReceivedMessageSize = int.MaxValue;
(client.Endpoint.Binding as BasicHttpBinding).MaxBufferSize = int.MaxValue;
returnCustomers = client.Do(out returnMsg, context, customerDatas.ToArray(), custContext);
StringBuilder str = new StringBuilder();
str.AppendLine("创建U9客户信息");
str.AppendLine("组织:" + CusList.OrgCode);
//str.AppendLine("客户区号:" + CusList.CustomerCode);
str.AppendLine("客户名称:" + CusList.CustomerName);
str.AppendLine("客户简称:" + CusList.ShrotName);
str.AppendLine("客户分类:" + CusList.CustomerType);
str.AppendLine("业务员:" + CusList.CustomerUser);
str.AppendLine("行业:" + CusList.TradeCategory);
str.AppendLine("工商注册码:" + CusList.CorpUnifyCode);
str.AppendLine("结果:" + "True");
Appconfig.WriteLogFile(str.ToString(), "创建U9客户信息");
result.MESSAGE = "客户" + SerialNo + "创建成功";
result.IsSuccess = true;
result.CustomerCode = returnCustomers[0].m_code;
result.CustomerID = returnCustomers[0].m_iD;
if (result.IsSuccess)
{
string Updatesql = @"UPDATE CBO_Customer SET IsTaxPrice=1 WHERE Code='" + SerialNo + "' ";
Updatesql = string.Format(Updatesql);
DBhlper.Query(Updatesql, Appconfig.GetU9ConnStr());
}
return result;
}
else
{
StringBuilder str = new StringBuilder();
str.AppendLine("创建U9客户信息");
str.AppendLine("组织:" + CusList.OrgCode);
//str.AppendLine("客户区号:" + CusList.CustomerCode);
str.AppendLine("客户名称:" + CusList.CustomerName);
str.AppendLine("客户简称:" + CusList.ShrotName);
str.AppendLine("客户分类:" + CusList.CustomerType);
str.AppendLine("业务员:" + CusList.CustomerUser);
str.AppendLine("行业:" + CusList.TradeCategory);
str.AppendLine("工商注册码:" + CusList.CorpUnifyCode);
str.AppendLine("结果:" + "客户已存在");
Appconfig.WriteLogFile(str.ToString(), "创建U9客户信息");
result.CustomerCode = checkdt.Rows[0]["Code"].ToString();
result.CustomerID = long.Parse(checkdt.Rows[0]["ID"].ToString());
result.MESSAGE = "客户" + CusList.CustomerName + "已存在";
result.IsSuccess = true;
return result;
}
}
catch (Exception ex)
{
//异常信息捕获
string Message = GetExceptionMessage(ex);
StringBuilder str = new StringBuilder();
str.AppendLine("创建U9客户信息");
str.AppendLine("组织:" + CusList.OrgCode);
//str.AppendLine("客户区号:" + CusList.CustomerCode);
str.AppendLine("客户名称:" + CusList.CustomerName);
str.AppendLine("客户简称:" + CusList.ShrotName);
str.AppendLine("客户分类:" + CusList.CustomerType);
str.AppendLine("业务员:" + CusList.CustomerUser);
str.AppendLine("行业:" + CusList.TradeCategory);
str.AppendLine("工商注册码:" + CusList.CorpUnifyCode);
str.AppendLine("结果:" + "False");
str.AppendLine("错误:" + GetExceptionMessage(ex));
Appconfig.WriteLogFile(str.ToString(), "创建U9客户信息");
result.MESSAGE = Message;
result.IsSuccess = false;
return result;
}
}
#endregion
#region 提取异常信息
///
/// 提取异常信息
///
///
private string GetExceptionMessage(Exception ex)
{
string faultMessage = "未知错误,请查看ERP日志!";
System.TimeoutException timeoutEx = ex as System.TimeoutException;
if (timeoutEx != null)
{
faultMessage = "访问服务超时,请修改配置信息!";
}
else
{
FaultException faultEx = ex as FaultException;
if (faultEx == null)
{
faultMessage = ex.Message;
}
else
{
ServiceException serviceEx = faultEx.Detail;
if (serviceEx != null && !string.IsNullOrEmpty(serviceEx.Message)
&& !serviceEx.Message.Equals("fault", StringComparison.OrdinalIgnoreCase))
{
// 错误信息在faultEx.Message中,请提取,
// 格式为"Fault:料品不能为空,请录入\n 在....."
int startIndex = serviceEx.Message.IndexOf(":");
int endIndex = serviceEx.Message.IndexOf("\n");
if (endIndex == -1)
endIndex = serviceEx.Message.Length;
if (endIndex > 0 && endIndex > startIndex + 1)
{
faultMessage = serviceEx.Message.Substring(startIndex + 1, endIndex - startIndex - 1);
}
else
{
faultMessage = serviceEx.Message;
}
}
}
}
return faultMessage;
}
#endregion
#region 给上下文信息赋值
///
/// 给上下文信息赋值
///
///
private UFIDAU9CBOPubControllerContextDTOData CreateContextDto()
{
// 实例化应用上下文对象
UFIDAU9CBOPubControllerContextDTOData thContext = new UFIDAU9CBOPubControllerContextDTOData();
thContext.m_orgID = long.Parse(ConfigurationManager.AppSettings["orgID"].ToString());
thContext.m_cultureName = ConfigurationManager.AppSettings["cultureName"].ToString();
thContext.m_entCode = ConfigurationManager.AppSettings["enterpriseID"].ToString();
thContext.m_orgCode = ConfigurationManager.AppSettings["orgCode"].ToString();
thContext.m_userCode = ConfigurationManager.AppSettings["userCode"].ToString();
thContext.m_userID = long.Parse(ConfigurationManager.AppSettings["userID"].ToString());
return thContext;
}
#endregion
#region 给上下文信息赋值1
///
/// 给上下文信息赋值
///
///
private ThreadContext CreateContextObj()
{
// 实例化应用上下文对象
ThreadContext thContext = new ThreadContext();
System.Collections.Generic.Dictionary