|
|
using ICS.WCF.Base; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.ServiceModel; using System.Text; using System.Threading.Tasks; using UFSoft.UBF.Service; using UFSoft.UBF.Util.Context; using www.ufida.org.EntityData;
namespace ICS.ModifyU9Customer { public class ModifyCustomer { private string MessageLogName = "修改U9客户信息"; private string ERPConStr = Appconfig.GetU9ConnStr(); public ModifyCustomerResult CustModifyU9Customer(ModifyCustomerModel ModifyCustomer) { ModifyCustomerResult Return = new ModifyCustomerResult();//方法返回值
Return.IsSuccess = false; Return.MESSAGE = "";
try {
if (ModifyCustomer != null) { StringBuilder strHead = new StringBuilder(); strHead.AppendLine("-------------接口传入参数:"); if (string.IsNullOrEmpty(ModifyCustomer.Code)) { ModifyCustomer.Code = ""; } if (string.IsNullOrEmpty(ModifyCustomer.Name)) { ModifyCustomer.Name = ""; } if (string.IsNullOrEmpty(ModifyCustomer.ORGCode)) { ModifyCustomer.ORGCode = ""; } if (string.IsNullOrEmpty(ModifyCustomer.PrivateDescSeg2)) { ModifyCustomer.PrivateDescSeg2 = ""; } if (string.IsNullOrEmpty(ModifyCustomer.Department)) { ModifyCustomer.Department = ""; } if (string.IsNullOrEmpty(ModifyCustomer.Saleser)) { ModifyCustomer.Saleser = ""; } strHead.AppendLine("CustomerCode:" + ModifyCustomer.Code);
strHead.AppendLine("Name:" + ModifyCustomer.Name); strHead.AppendLine("ORGCode:" + ModifyCustomer.ORGCode); strHead.AppendLine("PrivateDescSeg1:" + ModifyCustomer.PrivateDescSeg2); strHead.AppendLine("Department:" + ModifyCustomer.Department); strHead.AppendLine("Saleser:" + ModifyCustomer.Saleser); //strHead.AppendLine("IsEffective:" + ModifyCustomer.IsEffective );
strHead.AppendLine("***************接口传入参数End"); Appconfig.WriteLogFile(strHead.ToString(), MessageLogName);
Return.CustomerCode = ModifyCustomer.Code;
string QueryMessage = "";//修改前的错误信息
if (string.IsNullOrEmpty(ModifyCustomer.ORGCode)) { ModifyCustomer.ORGCode = ConfigurationManager.AppSettings["orgCode"].ToString(); }
#region check
if (string.IsNullOrEmpty(ModifyCustomer.Code)) { QueryMessage += "客户编码为空"; }
#endregion
if (string.IsNullOrEmpty(QueryMessage)) {
//上下文信息
object context; context = CreateContextObj(); UFIDAU9CBOPubControllerContextDTOData contextDTO = new UFIDAU9CBOPubControllerContextDTOData(); contextDTO = CreateContextDto();
#region 修改服务调用框架结构
//修改SV
UFIDAU9ISVCustomerIBatchModifyCustomerByDTOSVClient client = new UFIDAU9ISVCustomerIBatchModifyCustomerByDTOSVClient(); //服务返回结果
UFIDAU9CBOSCMCustomerCustomerData[] returnCustomers; UFSoft.UBF.Exceptions1.MessageBase[] returnMsg;//修改返回的报错
#endregion
#region 查询服务调用框架结构
//查询SV
UFIDAU9ISVCustomerIBatchQueryCustomerByDTOSRVClient Qclient = new global::UFIDAU9ISVCustomerIBatchQueryCustomerByDTOSRVClient(); //服务返回结果
UFIDAU9ISVCustomerCustomerDTOData[] QreturnCustomers;//查询返回的客户类
UFSoft.UBF.Exceptions1.MessageBase[] QreturnMsg;//查询返回的报错
#endregion
//先查询
List<UFIDAU9ISVCustomerQueryCustomerDTOData> QDTOS = new List<UFIDAU9ISVCustomerQueryCustomerDTOData>();
UFIDAU9ISVCustomerQueryCustomerDTOData CC = new UFIDAU9ISVCustomerQueryCustomerDTOData(); CC.m_org = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData(); CC.m_org.m_code = ModifyCustomer.ORGCode; CC.m_customer = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData(); CC.m_customer.m_code = ModifyCustomer.Code; QDTOS.Add(CC);
QreturnCustomers = Qclient.Do(out QreturnMsg, context, QDTOS.ToArray(), contextDTO);
if (QreturnCustomers == null || QreturnCustomers.Count() == 0) { throw new Exception("组织:" + ModifyCustomer.ORGCode + ",未找到客户编码:" + ModifyCustomer.Code); }
//后修改
if (QreturnMsg != null && QreturnMsg.Length > 0) { foreach (UFSoft.UBF.Exceptions1.MessageBase MESS in QreturnMsg) { QueryMessage += MESS.innerMessages + ";"; } }
if (string.IsNullOrEmpty(QueryMessage)) { List<UFIDAU9ISVCustomerCustomerDTOData> OLDList = QreturnCustomers.ToList();
UFIDAU9ISVCustomerCustomerDTOData OldCus = OLDList.Find(a => a.m_code == ModifyCustomer.Code && a.m_org.m_code == ModifyCustomer.ORGCode); if (OldCus != null) { Return.CustomerID = OldCus.m_iD; Return.CustomerCode = OldCus.m_code; UFIDAU9ISVCustomerCustomerDTOData cus = OldCus; cus.Name = ModifyCustomer.Name; cus.m_shortName = ModifyCustomer.Name; if (cus.m_descFlexField != null) { cus.m_descFlexField.m_privateDescSeg2 = ModifyCustomer.PrivateDescSeg2; } else { UFIDAU9BaseFlexFieldDescFlexFieldDescFlexSegmentsData deflex = new UFIDAU9BaseFlexFieldDescFlexFieldDescFlexSegmentsData(); deflex.m_privateDescSeg2 = ModifyCustomer.PrivateDescSeg2; cus.m_descFlexField = deflex; } if (cus.m_descFlexField != null) { cus.m_descFlexField.m_privateDescSeg7 = ModifyCustomer.PrivateDescSeg7; } else { UFIDAU9BaseFlexFieldDescFlexFieldDescFlexSegmentsData deflex = new UFIDAU9BaseFlexFieldDescFlexFieldDescFlexSegmentsData(); deflex.m_privateDescSeg7 = ModifyCustomer.PrivateDescSeg7; cus.m_descFlexField = deflex; } if (cus.m_descFlexField != null) { cus.m_descFlexField.m_privateDescSeg8 = ModifyCustomer.PrivateDescSeg8; } else { UFIDAU9BaseFlexFieldDescFlexFieldDescFlexSegmentsData deflex = new UFIDAU9BaseFlexFieldDescFlexFieldDescFlexSegmentsData(); deflex.m_privateDescSeg8 = ModifyCustomer.PrivateDescSeg8; cus.m_descFlexField = deflex; }
if (cus.m_descFlexField != null) { cus.m_descFlexField.m_privateDescSeg11 = ModifyCustomer.PrivateDescSeg11; } else { UFIDAU9BaseFlexFieldDescFlexFieldDescFlexSegmentsData deflex = new UFIDAU9BaseFlexFieldDescFlexFieldDescFlexSegmentsData(); deflex.m_privateDescSeg11 = ModifyCustomer.PrivateDescSeg11; cus.m_descFlexField = deflex; }
if (!string.IsNullOrEmpty(ModifyCustomer.Department)) { string DepID = GetDepartmentID(ModifyCustomer.Department, ModifyCustomer.ORGCode); if (string.IsNullOrEmpty(DepID)) { throw new Exception("部门编码:" + ModifyCustomer.Department + "在组织:" + ModifyCustomer.ORGCode + "中不存在"); } else { UFIDAU9CBOPubControllerCommonArchiveDataDTOData dep = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData(); dep.m_code = ModifyCustomer.Department; dep.m_iD = Convert.ToInt64(DepID); cus.m_department = dep; } } if (!string.IsNullOrEmpty(ModifyCustomer.Saleser)) { string SalerID = GetOperatorsID(ModifyCustomer.Saleser, ModifyCustomer.ORGCode); if (string.IsNullOrEmpty(SalerID)) { throw new Exception("业务员编码:" + ModifyCustomer.Department + "在组织:" + ModifyCustomer.ORGCode + "中不存在"); } else { UFIDAU9CBOPubControllerCommonArchiveDataDTOData saleser = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData(); saleser.m_code = ModifyCustomer.Saleser; saleser.m_iD = Convert.ToInt64(SalerID); cus.m_saleser = saleser; } } if (cus.m_effective != null) { //cus.m_effective.m_isEffective = ModifyCustomer.IsEffective;
cus.m_effective.m_isEffective = true; } else { UFIDAU9BasePropertyTypesEffectiveData ee = new UFIDAU9BasePropertyTypesEffectiveData(); //cus.m_effective.m_isEffective = ModifyCustomer.IsEffective;
cus.m_effective.m_isEffective = true; ee.m_effectiveDate = DateTime.Now; cus.m_effective = ee; }
if (cus.m_effective.m_isEffective) { cus.m_effective.m_disableDate = Convert.ToDateTime("9999.12.31"); } else { cus.m_effective.m_disableDate = DateTime.Now; } #region 获取立账条件名称
string ARConfirmTermName = ""; string ARConfirmTermID = ""; string ctermrsql = @"select a.ID,a.Code,b.Name from CBO_ARConfirmTerm a
left join CBO_ARConfirmTerm_Trl b on a.id=b.id left join Base_Organization j on a.Org=j.ID where a.Code='{0}' AND j.Code='{1}'";
ctermrsql = string.Format(ctermrsql, ModifyCustomer.ARConfirmTerm, ModifyCustomer.ORGCode); DataTable ctermdt2 = DBhlper.Query(ctermrsql, Appconfig.GetU9ConnStr()); if (ctermdt2.Rows.Count != 0) { ARConfirmTermName = ctermdt2.Rows[0]["Name"].ToString(); ARConfirmTermID = ctermdt2.Rows[0]["ID"].ToString(); } else { throw new Exception("未获取到立账条件名称:" + ModifyCustomer.ARConfirmTerm + "对应ID"); } #endregion
cus.m_aRConfirmTerm = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();//立账条件
cus.m_aRConfirmTerm.m_iD = long.Parse(ARConfirmTermID); cus.m_aRConfirmTerm.m_code = ModifyCustomer.ARConfirmTerm; cus.m_descFlexField.m_privateDescSeg1 = "0";//欠回单数
cus.m_descFlexField.m_privateDescSeg3 = "02";//是否逾期
cus.m_descFlexField.m_privateDescSeg4 = "01";//是否拆分
if (ARConfirmTermName == "月结30天") { cus.m_descFlexField.m_privateDescSeg6 = "30";//信用期限
} else if (ARConfirmTermName == "月结60天") { cus.m_descFlexField.m_privateDescSeg6 = "60"; } else if (ARConfirmTermName == "月结90天") { cus.m_descFlexField.m_privateDescSeg6 = "90"; } else if (ARConfirmTermName == "月结360天") { cus.m_descFlexField.m_privateDescSeg6 = "360"; } else { cus.m_descFlexField.m_privateDescSeg6 = "0"; } cus.m_isCreditCheck = false;//信用检查
#region 客户位置
//UFIDAU9ISVCustomerCustomerSiteDTOData custSiteInfo = new UFIDAU9ISVCustomerCustomerSiteDTOData();
//List<UFIDAU9ISVCustomerCustomerSiteDTOData> custSiteList = new List<UFIDAU9ISVCustomerCustomerSiteDTOData>();
//UFIDAU9ISVCustomerCustomerSiteDTOData[] custSites;
//custSiteInfo.m_code = ModifyCustomer.SiteCode;
//custSiteInfo.Name = ModifyCustomer.SiteName;
//custSiteInfo.m_isDefaultBillTo = true;//默认开票位置
//custSiteInfo.m_customerState = 1;//目标客户
//custSiteInfo.m_isPriceListModify = true; // 价表可改
//custSiteInfo.m_isShippmentRuleEditable = true; // 出货原则可改
//custSiteInfo.m_isPaymentTermEditable = true; // 收款条件可改
//custSiteInfo.m_isSalesDiscount = true;
//custSiteInfo.m_shipmentMode = 1;
//custSiteInfo.m_isPostBankCheckList = true;
//custSiteInfo.m_bankCheckPeriod = 3;
//custSiteInfo.m_isPrePayment = false;
//custSiteInfo.m_holdDate = DateTime.Now;
//custSiteInfo.m_releaseDate = DateTime.Now;
//custSiteInfo.m_isHoldRelease = false;
//custSiteInfo.m_priceListID = -1;
//custSiteInfo.m_invoiceVerificationOrder = 1;
//custSiteInfo.m_supplySource = 3;
//custSiteInfo.m_demandTransType = 3;
//custSiteInfo.m_effective = new UFIDAU9BasePropertyTypesEffectiveData();
//custSiteInfo.m_effective.m_isEffective = true;
//custSiteInfo.m_effective.m_effectiveDate = DateTime.Parse("2021-11-01");
//custSiteInfo.m_effective.m_disableDate = DateTime.Parse("2099-01-01");
//custSiteInfo.m_supplyOrg = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();
//custSiteInfo.m_supplyOrg.m_iD = long.Parse(ConfigurationManager.AppSettings["orgID"].ToString());
//custSiteInfo.m_supplier = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();
//custSiteInfo.m_aRConfirmTerm = new UFIDAU9CBOPubControllerCommonArchiveDataDTOData();//立账条件
//custSiteInfo.m_aRConfirmTerm.m_iD = long.Parse(ARConfirmTermID);
//custSiteInfo.m_aRConfirmTerm.m_code = ModifyCustomer.ARConfirmTerm;
//custSiteList.Add(custSiteInfo);
//custSites = custSiteList.ToArray();
//cus.m_customerSiteDTOs = custSites;
#endregion
List<UFIDAU9ISVCustomerCustomerDTOData> NewList = new List<UFIDAU9ISVCustomerCustomerDTOData>(); NewList.Add(cus); returnCustomers = client.Do(out returnMsg, context, NewList.ToArray(), contextDTO); string errmessage = ""; if (returnMsg != null && returnMsg.Count() > 0) { foreach (UFSoft.UBF.Exceptions1.MessageBase ee in returnMsg) { errmessage += ee.innerMessages + ";"; }
Return.IsSuccess = false; Return.MESSAGE = errmessage; } else { Return.IsSuccess = true; Return.MESSAGE = "组织:" + ModifyCustomer.ORGCode + ",客户:" + ModifyCustomer.Code + "修改成功";
if (!string.IsNullOrWhiteSpace(ARConfirmTermID)) { string SiteID = ""; long CusID = 0; #region 获取组织ID
string OrgID = ""; string orgsql = @"select ID from Base_Organization
where Code='{0}'";
orgsql = string.Format(orgsql, ModifyCustomer.ORGCode); DataTable orgdt = DBhlper.Query(orgsql, Appconfig.GetU9ConnStr()); if (orgdt.Rows.Count != 0) { OrgID = orgdt.Rows[0]["ID"].ToString(); } #endregion
string cussql = @"select ID,State from CBO_Customer
where Code='{0}' AND Org='{1}'";
cussql = string.Format(cussql, ModifyCustomer.Code, OrgID); DataTable cusdt = DBhlper.Query(cussql, Appconfig.GetU9ConnStr()); if (cusdt.Rows.Count > 0) { CusID = long.Parse(cusdt.Rows[0]["ID"].ToString());
#region 获取位置ID
string sitesql = @"select ID from CBO_CustomerSite
where Customer='{0}'";
sitesql = string.Format(sitesql, CusID); DataTable sitedt = DBhlper.Query(sitesql, Appconfig.GetU9ConnStr()); if (sitedt.Rows.Count != 0) { SiteID = sitedt.Rows[0]["ID"].ToString(); } #endregion
if (!string.IsNullOrWhiteSpace(SiteID)) { string updatesql = @" update CBO_CustomerSite set ARConfirmTerm='{0}',Customer='{2}' where ID='{1}'
update CBO_CustomerSite_trl set name='{3}' where ID='{1}' ";
updatesql = string.Format(updatesql, ARConfirmTermID, SiteID, CusID, ModifyCustomer.Name); DBhlper.Query(updatesql, Appconfig.GetU9ConnStr()); } } } } } else { Return.IsSuccess = false; Return.MESSAGE = "组织:" + ModifyCustomer.ORGCode + "下未找到客户:" + ModifyCustomer.Code; }
} else { Return.IsSuccess = false; Return.MESSAGE = QueryMessage; }
} else { Return.IsSuccess = false; Return.MESSAGE = QueryMessage;
} } else { Return.IsSuccess = false; Return.MESSAGE = "传入的客户信息为空"; }
} catch (Exception ex) { Return.IsSuccess = false; Return.MESSAGE = GetExceptionMessage(ex); }
StringBuilder strHeadr = new StringBuilder(); strHeadr.AppendLine("-------------接口传出参数:"); strHeadr.AppendLine("IsSuccess:" + Return.IsSuccess); strHeadr.AppendLine("MESSAGE:" + Return.MESSAGE); strHeadr.AppendLine("Code:" + Return.CustomerCode); strHeadr.AppendLine("***************接口传出参数End"); Appconfig.WriteLogFile(strHeadr.ToString(), MessageLogName);
return Return; }
#region 给上下文信息赋值1
/// <summary>
/// 给上下文信息赋值
/// </summary>
/// <returns></returns>
private ThreadContext CreateContextObj() { // 实例化应用上下文对象
ThreadContext thContext = new ThreadContext();
System.Collections.Generic.Dictionary<object, object> ns = new Dictionary<object, object>(); ns.Add("OrgID", ConfigurationManager.AppSettings["orgID"].ToString()); ns.Add("UserID", ConfigurationManager.AppSettings["userID"].ToString()); ns.Add("UserCode", ConfigurationManager.AppSettings["userCode"].ToString()); ns.Add("Datetime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); ns.Add("CultureName", ConfigurationManager.AppSettings["cultureName"].ToString()); ns.Add("EnterpriseID", ConfigurationManager.AppSettings["enterpriseID"].ToString()); ns.Add("DefaultCultureName", ConfigurationManager.AppSettings["cultureName"].ToString()); thContext.nameValueHas = ns;
return thContext; } #endregion
#region 给上下文信息赋值
/// <summary>
/// 给上下文信息赋值
/// </summary>
/// <returns></returns>
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
private string GetDepartmentID(string Code, string ORGCode) { string sql = @"
select oo.ID from CBO_Department oo inner join CBO_Department_Trl oot on oo.id=oot.id and oot.SysMLFlag='zh-CN' inner join Base_Organization org on org.id=oo.org where org.code='" + ORGCode + @"' and oo.Code='" + Code + @"'";
DataTable dt = DBhlper.Query(sql, ERPConStr); if (dt != null && dt.Rows.Count > 0) { return dt.Rows[0][0].ToString(); } return ""; }
private string GetOperatorsID(string Code, string ORGCode) { string sql = @"
select oo.ID from CBO_Operators oo inner join CBO_Operators_Trl oot on oo.id=oot.id and oot.SysMLFlag='zh-CN' inner join Base_Organization org on org.id=oo.org where org.code='" + ORGCode + @"' and oo.Code='" + Code + @"'";
DataTable dt = DBhlper.Query(sql, ERPConStr); if (dt != null && dt.Rows.Count > 0) { return dt.Rows[0][0].ToString(); } return ""; }
#region 提取异常信息
/// <summary>
/// 提取异常信息
/// </summary>
/// <param name="ex"></param>
private string GetExceptionMessage(Exception ex) { string faultMessage = "未知错误,请查看ERP日志!";
System.TimeoutException timeoutEx = ex as System.TimeoutException; if (timeoutEx != null) { faultMessage = "访问服务超时,请修改配置信息!"; } else { FaultException<ServiceException> faultEx = ex as FaultException<ServiceException>; 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
}
}
|