/// <summary> /// xml "<vendor><ccuscode1>1</ccuscode1><cVenCode2>2</cVenCode2></vendor>\r\n" /// 1并到2 /// </summary> /// <param name="doc"></param> /// <returns></returns> public object LinkMerge(IXMLDOMDocument2 doc) { l.Remove(l.First(e => e.UfColumnName.Equals(ufPriKey))); l.Add(new BaseMode(ufPriKey, GetNodeValue(doc, "/customer/ccuscode1"), "/customer/ccuscode1", "CustomerCode", GetNodeValue(doc, "/customer/ccuscode1"), null, null)); return(base.Delete()); }
public BarCodeMain(ref ADODB.Connection conn, IXMLDOMDocument2 doc, string ufConnStr) : base(conn, ufConnStr) { oracleTableName = "tblerpmcard"; oraclePriKey = "mcard"; ufTableName = "HY_BarCodeMain"; ufPriKey = "BarCode"; SetData(doc); }
/// <summary> /// xml "<vendor><ccuscode1>1</ccuscode1><cVenCode2>2</cVenCode2></vendor>\r\n" /// 1并到2 /// </summary> /// <param name="doc"></param> /// <returns></returns> public object LinkMerge(IXMLDOMDocument2 doc) { l.Remove(l.First(e => e.UfColumnName.Equals(ufPriKey))); l.Add(new BaseMode(ufPriKey, GetNodeValue(doc, "/customer/ccuscode1"), "/customer/ccuscode1", "CustomerCode", GetNodeValue(doc, "/customer/ccuscode1"), null, null)); l.Add(new BaseMode(null, null, null, "EDITPROP", "D", null, null)); l.Add(new BaseMode(null, null, null, "FINISHFLAG", "0", null, null)); l.Add(new BaseMode(null, null, null, "dModifyDate", System.DateTime.Now.ToString(), null, null)); return(base.Delete()); }
/// <summary> /// 获取dom结点值 /// </summary> /// <param name="xml"></param> /// <param name="nodeName">/inventory/cinvcode</param> /// <returns></returns> protected string GetNodeValue(IXMLDOMDocument2 doc, string nodeName) { try { return(doc.selectSingleNode(nodeName).text); } catch { return(""); } }
public GroupVouch(ref ADODB.Connection conn, IXMLDOMDocument2 doc, IXMLDOMDocument2 docbody, string ufConnStr, string _opertype) : base(conn, ufConnStr) { oracleTableName = "MES_CQ_GroupVouch"; //目标表名 oraclePriKey = "ccode"; //目标表逻辑主键 fieldcmpTablename = "MES_CQ_GroupVouch"; ufTableName = "GroupVouch"; // "SaleOrderQ"; //来源表名 ufPriKey = "ccode"; //来源表主键 this._ccode = ((IXMLDOMElement)doc.selectSingleNode("/xml/rs:data/z:row")).getAttribute("ccode").ToString(); //GetNodeValue(doc, "/GroupVouch/ccode"); this.opertype = _opertype; }
public Inventory(ref ADODB.Connection conn, IXMLDOMDocument2 doc, string ufConnStr, string _opertype) : base(conn, ufConnStr) { oracleTableName = "MES_CQ_Inventory"; //目标表名 oraclePriKey = "cInvCode"; //目标表主键 fieldcmpTablename = "MES_CQ_Inventory"; ufTableName = "Inventory"; //来源表名 ufPriKey = "cInvCode"; //来源表主键 this.opertype = _opertype; SetData(doc); }
public ComputationUnit(ref ADODB.Connection conn, IXMLDOMDocument2 doc, string ufConnStr, string _opertype) : base(conn, ufConnStr) { oracleTableName = "MES_ComputationUnit"; //目标表名 oraclePriKey = "cComunitCode"; //目标表主键 fieldcmpTablename = "ComputationUnit"; ufTableName = "ComputationUnit"; //来源表名 ufPriKey = "cComunitCode"; //来源表主键 this.opertype = _opertype; SetData(doc); }
public Person(ref ADODB.Connection conn, IXMLDOMDocument2 doc, string ufConnStr, string _opertype) : base(conn, ufConnStr) { oracleTableName = "MES_Person"; //目标表名 oraclePriKey = "cPsn_Num"; //目标表主键 fieldcmpTablename = "hr_hi_person"; ufTableName = "hr_hi_person"; //来源表名 ufPriKey = "cPsn_Num"; //来源表主键 this.opertype = _opertype; //业务操作类型 SetData(doc); }
//protected string oracleTableName = "MES_Department"; //目标表名 //protected string oraclePriKey = "cDepCode"; //目标表主键 //protected string fieldcmpTablename = "Department"; //protected string ufTableName = "Department"; //来源表名 //protected string ufPriKey = "cDepCode"; //来源表主键 public Sfc_workcenter(ref ADODB.Connection conn, IXMLDOMDocument2 doc, string ufConnStr, string _opertype) : base(conn, ufConnStr) { oracleTableName = "MES_CQ_Workcenter"; //目标表名 oraclePriKey = "WcCode"; //目标表主键 fieldcmpTablename = "MES_CQ_Workcenter"; ufTableName = "Sfc_workcenter"; //来源表名 ufPriKey = "WcCode"; //来源表主键 this.opertype = _opertype; SetData(doc); }
public Customer(ref ADODB.Connection conn, IXMLDOMDocument2 doc, string ufConnStr) : base(conn, ufConnStr) { oracleTableName = "TBLERPCustomer"; oraclePriKey = "CustomerCode"; ufTableName = "Customer"; ufPriKey = "ccuscode"; l.Add(new BaseMode("ccuscode", GetNodeValue(doc, "/customer/ccuscode"), "/customer/ccuscode", "CustomerCode", GetNodeValue(doc, "/customer/ccuscode"), null, null)); l.Add(new BaseMode("ccusname", GetNodeValue(doc, "/customer/ccusname"), "/customer/ccusname", "CustomerName", GetNodeValue(doc, "/customer/ccusname"), null, null)); l.Add(new BaseMode(null, null, null, "Flag", "W", null, null)); l.Add(new BaseMode(null, null, null, "FINISHFLAG", "0", null, null)); l.Add(new BaseMode(null, null, null, "dModifyDate", System.DateTime.Now.ToString(), null, null)); }
public Vendor(ref ADODB.Connection conn, IXMLDOMDocument2 doc, string ufConnStr) : base(conn, ufConnStr) { oracleTableName = "MES_CQ_Vendor"; oraclePriKey = "cvencode"; ufTableName = "Vendor"; ufPriKey = "cvencode"; l.Add(new BaseMode("id", null, null, "id", Guid.NewGuid().ToString(), null, null)); l.Add(new BaseMode("cvencode", GetNodeValue(doc, "/vendor/cvencode"), "/vendor/cvencode", "cvencode", GetNodeValue(doc, "/vendor/cvencode"), null, null)); l.Add(new BaseMode("cVenName", GetNodeValue(doc, "/vendor/cvenname"), "/vendor/cvenname", "cvenname", GetNodeValue(doc, "/vendor/cvenname"), null, null)); l.Add(new BaseMode("cvccode", GetNodeValue(doc, "/vendor/cvccode"), "/vendor/cvccode", "cvccode", GetNodeValue(doc, "/vendor/cvccode"), null, null)); l.Add(new BaseMode("cvenperson", GetNodeValue(doc, "/vendor/cvenperson"), "/vendor/cvenperson", "cVenContact", GetNodeValue(doc, "/vendor/cvenperson"), null, null)); l.Add(new BaseMode("cvenhand", GetNodeValue(doc, "/vendor/cvenhand"), "/vendor/cvenhand", "cVenContactPhone", GetNodeValue(doc, "/vendor/cvenhand"), null, null)); }
public Customer(ref ADODB.Connection conn, IXMLDOMDocument2 doc, string ufConnStr) : base(conn, ufConnStr) { oracleTableName = "MES_CQ_Customer"; oraclePriKey = "ccuscode"; ufTableName = "Customer"; ufPriKey = "ccuscode"; l.Add(new BaseMode("id", null, null, "id", Guid.NewGuid().ToString(), null, null)); l.Add(new BaseMode("ccuscode", GetNodeValue(doc, "/customer/ccuscode"), "/customer/ccuscode", "ccuscode", GetNodeValue(doc, "/customer/ccuscode"), null, null)); l.Add(new BaseMode("ccusname", GetNodeValue(doc, "/customer/ccusname"), "/customer/ccusname", "ccusname", GetNodeValue(doc, "/customer/ccusname"), null, null)); l.Add(new BaseMode("ccccode", GetNodeValue(doc, "/customer/ccccode"), "/customer/ccccode", "ccccode", GetNodeValue(doc, "/customer/ccccode"), null, null)); l.Add(new BaseMode("ccusname", GetNodeValue(doc, "/customer/ccusaddress"), "/customer/ccusaddress", "ccusaddress", GetNodeValue(doc, "/customer/ccusaddress"), null, null)); l.Add(new BaseMode("ccusotype", GetNodeValue(doc, "/customer/ccusotype"), "/customer/ccusotype", "ccusotype", GetNodeValue(doc, "/customer/ccusotype"), null, null)); l.Add(new BaseMode("ccusdefine1", GetNodeValue(doc, "/customer/ccusdefine1"), "/customer/ccusdefine1", "ccusdefine1", GetNodeValue(doc, "/customer/ccusdefine1"), null, null)); }
public bool Save_before(ref IXMLDOMDocument2 domhead, ref IXMLDOMDocument2 dombody, ref string errMsg) { MomCallContext currentMomCallContext = MomCallContextCache.Instance.CurrentMomCallContext; clsLogin clsLogin = (clsLogin)currentMomCallContext.U8Login; IXMLDOMNodeList headval = domhead.selectNodes("//rs:data/z:row"); IXMLDOMNodeList bodyval = dombody.selectNodes("//rs:data/z:row"); string csocode = "", ddate = "", ccuscode = "", ccusname = ""; string cinvcode = "", iquantity = "", iunitprice = "", cinvname = ""; wl.WriteLogs("-------head start ------" + domhead.xml + "-----head end ------------"); wl.WriteLogs("-------body start ------" + dombody.xml + "-----body end ------------"); //销售订单头信息 foreach (IXMLDOMElement item in headval) { csocode = item.attributes.getNamedItem("csocode").nodeValue.ToString(); ddate = item.attributes.getNamedItem("ddate").nodeValue.ToString(); ccuscode = item.attributes.getNamedItem("ccuscode").nodeValue.ToString(); ccusname = item.attributes.getNamedItem("ccusname").nodeValue.ToString(); } //销售订单行信息 foreach (IXMLDOMElement item in bodyval) { cinvcode = item.attributes.getNamedItem("cinvcode").nodeValue.ToString(); iquantity = item.attributes.getNamedItem("iquantity").nodeValue.ToString(); iunitprice = item.attributes.getNamedItem("iunitprice").nodeValue.ToString(); cinvname = item.attributes.getNamedItem("cinvname").nodeValue.ToString(); } MessageBox.Show("订单头信息:" + csocode + "-" + ddate + "-" + ccuscode + "-" + ccusname + "\r\n" + "订单行信息:行记录数为" + bodyval.length.ToString() + " ; " + cinvcode + "-" + iquantity + "-" + iunitprice + "-" + cinvname); return(true); }
private void SetData(IXMLDOMDocument2 doc) { foreach (IXMLDOMNode xmlNode in doc.selectNodes("//rs:data")[0].selectNodes("//z:row")) { //string oper = ((IXMLDOMElement)xmlNode).getAttribute("editprop").ToString().ToUpper(); string oper = (xmlNode as IXMLDOMElement).getAttribute("editprop").ToString().ToUpper(); if (oper.Equals("A")) { SetAddData(xmlNode as IXMLDOMElement); } else if (oper.Equals("D")) { SetDelData(xmlNode as IXMLDOMElement); } else if (oper.Equals("M")) { SetModData(xmlNode as IXMLDOMElement); } else { SetDelData(xmlNode as IXMLDOMElement); } } }
/// <summary> /// 单据事件调插件方法 /// </summary> /// <param name="domhead" datetype="MSXML2.IXMLDocument2" out="1">单据表头 DOM 对象实例</param> /// <param name="dombody" datetype="MSXML2.IXMLDocument2" out="1">单据表体 DOM 对象实例</param> /// <param name="message" datatype="string" out="1">错误信息。用于插件方法返回单据的错误信息</param> /// <returns datatype="bool" comment="返回值决定原档案业务流程是否会继续"> /// <return value="True">操作成功</return> /// <return value="False">操作失败</return> /// </returns> public bool InvokeVoucherEvent(ref IXMLDOMDocument2 domhead, ref IXMLDOMDocument2 dombody, ref string message) { try { /********** 获取插件上下文信息:登录对象、连接、事件ID ***************/ //获取插件上下文 MomCallContext context = MomCallContextCache.Instance.CurrentMomCallContext; //从上下文获取U8Login对象 U8Login.clsLogin login = context.U8Login as U8Login.clsLogin; //从上下文获取帐套库连接对象 ADODB.Connection conn = context.BizDbConnection as ADODB.Connection; //从上下文获取事件ID string eventId = context.EventIdentity; Output.mWriteLog(eventId, domhead, dombody, conn, login); Biz.BizBase oper; switch (eventId.ToLower()) { //条码管理 case "u8api/genbarcode/delete_before": case "u8api/genbarcode/delete_after": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "BarCodeMain", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, dombody, login.UFDataConnstringForNet.ToString() }, null, null); oper.Delete(); break; case "u8api/genbarcode/save_before": case "u8api/genbarcode/save_after": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "BarCodeMain", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, dombody, login.UFDataConnstringForNet.ToString() }, null, null); oper.Save(); break; //销售订单 case "u8api/saleorder/audit_after": case "u8api/saleorder/audit_before": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "SO_SOMain", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, domhead, dombody, login.UFDataConnstringForNet.ToString(), "a" }, null, null); oper.Insert(); break; case "u8api/saleorder/cancelaudit_after": case "u8api/saleorder/cancelaudit_before": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "SO_SOMain", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, domhead, dombody, login.UFDataConnstringForNet.ToString(), "d" }, null, null); oper.Delete(); break; //采购到货单 case "u8api/arrivedgoods/audit_before": case "u8api/arrivedgoods/audit_after": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "PU_ArrivalVouch", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, domhead, dombody, login.UFDataConnstringForNet.ToString(), "a" }, null, null); oper.Insert(); break; case "u8api/arrivedgoods/cancelaudit_before": case "u8api/arrivedgoods/cancelaudit_after": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "PU_ArrivalVouch", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, domhead, dombody, login.UFDataConnstringForNet.ToString(), "d" }, null, null); oper.Delete(); break; //组装单 case "u8api/groupvouch/audit_before": case "u8api/groupvouch/audit_after": //oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "GroupVouch", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, domhead, dombody, login.UFDataConnstringForNet.ToString(), "a" }, null, null); oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "AssemVouch", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, domhead, dombody, login.UFDataConnstringForNet.ToString(), "a" }, null, null); oper.Insert(); break; case "u8api/groupvouch/cancelaudit_before": case "u8api/groupvouch/cancelaudit_after": //oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "GroupVouch", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, domhead, dombody, login.UFDataConnstringForNet.ToString(), "d" }, null, null); oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "AssemVouch", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, domhead, dombody, login.UFDataConnstringForNet.ToString(), "d" }, null, null); oper.Delete(); break; //拆卸单 case "u8api/sepvouch/audit_before": case "u8api/sepvouch/audit_after": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "AssemVouchRet", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, domhead, dombody, login.UFDataConnstringForNet.ToString(), "a" }, null, null); oper.Insert(); break; case "u8api/sepvouch/cancelaudit_before": case "u8api/sepvouch/cancelaudit_after": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "AssemVouchRet", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, domhead, dombody, login.UFDataConnstringForNet.ToString(), "d" }, null, null); oper.Delete(); break; //采购订单 保存 case "u8api/purchaseorder/save_before": case "u8api/purchaseorder/save_after": break; //采购到货单 保存 case "u8api/arrivedgoods/save_before": case "u8api/arrivedgoods/save_after": string te = U8.Interface.Bus.Config.ConfigUtility.EventBizDllName; break; //采购入库单d case "u8api/pustorein/save_before": case "u8api/pustorein/save_after": string te1 = U8.Interface.Bus.Config.ConfigUtility.EventBizDllName; break; } return(true); } catch (Exception ex) { Output.mWriteLog(ex.Message); throw ex; } }
/// <summary> /// 并户 /// </summary> /// <returns></returns> public virtual object LinkMerge(IXMLDOMDocument2 doc) { throw new NotImplementedException(); }
/// <summary> /// 设置实体 /// </summary> /// <param name="doc"></param> private void SetData(IXMLDOMDocument2 doc) { lst = MakeMultiLineData(doc, fieldcmpTablename, ufTableName, ufPriKey, GetNodeValue(doc, "/hr_hi_person/cpsn_num")); }
/// <summary> /// 设置实体 /// </summary> /// <param name="doc"></param> private void SetData(IXMLDOMDocument2 doc) { lst = MakeMultiLineData(doc, fieldcmpTablename, ufTableName, ufPriKey, GetNodeValue(doc, "/inventory/cinvcode")); }
/// <summary> /// 设置实体 /// </summary> /// <param name="doc"></param> private void SetData(IXMLDOMDocument2 doc) { lst = MakeMultiLineData(doc, fieldcmpTablename, ufTableName, ufPriKey, GetNodeValue(doc, "/computationunit/ccomunitcode")); }
/// <summary> /// Creates the new infopath and load form. /// </summary> /// <param name="FormUri">The form URI.</param> /// <param name="InfoPathLoginHandler">The info path login handler.</param> /// <param name="readOnly">if set to <c>true</c> [read only].</param> private void CreateNewInfopathAndLoadForm(string FormUri, LogonDialogHandler InfoPathLoginHandler, bool readOnly) { // Kill off any existing infopath processes foreach (Process proc in Process.GetProcessesByName("infopath")) { proc.Kill(); } InitInfopathAndStartDialogWatcher(new Application()); SecurityAlertHandler securityHandler = new SecurityAlertHandler(); ReplaceFormAlertHandler replaceFormHandler = new ReplaceFormAlertHandler(); DialogWatcher.Add(securityHandler); DialogWatcher.Add(replaceFormHandler); if (InfoPathLoginHandler != null) { // remove other logon dialog handlers since only one handler // can effectively handle the logon dialog. DialogWatcher.RemoveAll(new LogonDialogHandler("a", "b")); // Add the (new) logonHandler DialogWatcher.Add(InfoPathLoginHandler); } if (readOnly) { InternalInfopathXDocument = InfopathApplicationTester.XDocuments.Open(FormUri, (int)XdDocumentVersionMode.xdCanOpenInReadOnlyMode); } else { InternalInfopathXDocument = InfopathApplicationTester.XDocuments.Open(FormUri, (int)XdDocumentVersionMode.xdFailOnVersionOlder); } InternalInfopathXMLDOMDocument = InternalInfopathXDocument.DOM as IXMLDOMDocument2; InternalHTMLDOMDocument = IEDom.IEDOMFromhWnd(this.hWnd); }
/// <summary> /// 设置实体 /// </summary> /// <param name="doc"></param> private void SetData(IXMLDOMDocument2 doc) { lst = MakeMultiLineData(doc, fieldcmpTablename, ufTableName, ufPriKey, GetNodeValue(doc, "/sfc_workcenter/wccode")); }
/// <summary> /// 组织字段 /// </summary> /// <param name="doc">事件里传入的dom</param> /// <param name="ctable">字段配置里配置的表名</param> /// <param name="sourceTableName">来源表名</param> /// <param name="sourceKeyName">来源表主键名</param> /// <param name="keyValue"></param> /// <returns>多行list.basemode</returns> public List <List <BaseMode> > MakeMultiLineData(IXMLDOMDocument2 doc, string ctable, string sourceTableName, string sourceKeyName, string sourceKeyValue) { System.Diagnostics.Debug.WriteLine("MakeData begin at" + System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")); if (string.IsNullOrEmpty(sourceTableName)) { throw new Exception("MakeData:来源表名为空!"); } if (string.IsNullOrEmpty(sourceKeyName)) { throw new Exception("MakeData:来源主键名为空!"); } if (string.IsNullOrEmpty(sourceKeyValue)) { throw new Exception("MakeData:来源主键值为空!"); } string sql = " SELECT cfield,igetvaluetype,igetvalue,cfieldtype FROM [MES_FIELDCMP] with(nolock) WHERE ctable = '" + ctable + "'"; dtField = new DataTable(); dtField = UFSelect(sql); string colNames = ""; //来源表列名 if (null != dtField && dtField.Rows.Count > 0) { for (int i = 0; i < dtField.Rows.Count; i++) { //0 取自dom,1取自dataset,2固定值,3函数,4以列值为参数作为判断,5接口通用变量, 6目标表不存在的列,但是需要用它取来源 if (dtField.Rows[i]["igetvaluetype"] != null && (dtField.Rows[i]["igetvaluetype"].ToString().Equals("1") || dtField.Rows[i]["igetvaluetype"].ToString().Equals("6"))) { string tmpColName = dtField.Rows[i]["igetvalue"].ToString(); if (colNames.IndexOf(tmpColName) > -1 && colNames.Substring(colNames.IndexOf(tmpColName) - 1, 1) == ",") { continue; } colNames += "," + dtField.Rows[i]["igetvalue"].ToString(); colNames.IndexOf(tmpColName); } } colNames = colNames.Substring(1, colNames.Length - 1); DataTable dtValue = new DataTable(); dtValue = GetSourceData(sourceTableName, sourceKeyName, sourceKeyValue, colNames); List <BaseMode> tmpl = new List <BaseMode>(); List <List <BaseMode> > tmplst = new List <List <BaseMode> >(); if (dtValue.Rows.Count == 0) { System.Diagnostics.Debug.WriteLine("MakeData end at" + System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")); return(null); } else if (dtValue.Rows.Count == 1) { tmpl = new List <BaseMode>(); tmpl = MakeSingleLineData(doc, dtValue.Rows[0], dtField); tmplst.Add(tmpl); } else { for (int i = 0; i < dtValue.Rows.Count; i++) { tmpl = new List <BaseMode>(); tmpl = MakeSingleLineData(doc, dtValue.Rows[i], dtField); tmplst.Add(tmpl); } } System.Diagnostics.Debug.WriteLine("MakeData end at" + System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")); return(tmplst); } else { System.Diagnostics.Debug.WriteLine("MakeData end at" + System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")); throw new Exception("MakeData:没有字段对照信息!"); } }
/// <summary> /// 组织单行basemode /// </summary> /// <param name="doc"></param> /// <param name="drValue">来源表行</param> /// <param name="dtfield">字段对照</param> /// <returns></returns> protected List <BaseMode> MakeSingleLineData(IXMLDOMDocument2 doc, DataRow drValue, DataTable _dtfield) { List <BaseMode> tmpl = new List <BaseMode>(); for (int i = 0; i < _dtfield.Rows.Count; i++) { string sourceColName = dtField.Rows[i]["igetvalue"].ToString(); string targetColName = dtField.Rows[i]["cfield"].ToString(); string getvaluetype = dtField.Rows[i]["igetvaluetype"].ToString(); string getvalue = dtField.Rows[i]["igetvalue"].ToString(); string sourceColType = dtField.Rows[i]["cfieldtype"].ToString(); string colValue; string tempOrValue = ""; switch (getvaluetype) //0 取自dom,1取自dataset,2固定值,3函数,4以列值为参数作为判断,5接口通用变量, 6目标表不存在的列,但是需要用它取来源 { case "0": colValue = drValue[getvalue].ToString(); tmpl.Add(new BaseMode(targetColName, colValue, getvalue, targetColName, GetNodeValue(doc, getvalue), sourceColType, sourceColType)); break; case "1": colValue = drValue[getvalue].ToString(); tmpl.Add(new BaseMode(sourceColName, colValue, getvalue, targetColName, drValue[getvalue].ToString(), sourceColType, sourceColType)); break; case "2": colValue = drValue[getvalue].ToString(); tmpl.Add(new BaseMode(targetColName, colValue, getvalue, targetColName, getvalue, sourceColType, sourceColType)); break; case "3": colValue = ""; if (getvalue == "1") { tempOrValue = Function.Comm.GetFlagByOper(opertype); } else if (getvalue == "2") { tempOrValue = Function.Comm.GetUpDept(drValue["cDepCode"].ToString()); } else if (getvalue == "3") { tempOrValue = Function.Comm.GetInventoryClass(drValue["cInvCCode"].ToString()); } else if (getvalue == "4") { tempOrValue = Function.Comm.GetComputationUnit(drValue["cComUnitCode"].ToString()); } else if (getvalue == "5") { tempOrValue = Function.Comm.GetInvPurType(drValue["bBomMain"].ToString(), drValue["bBomSub"].ToString(), drValue["bPurchase"].ToString(), drValue["bSelf"].ToString()); } else if (getvalue == "6") { tempOrValue = Function.Comm.GetCQFlagByOper(opertype); } tmpl.Add(new BaseMode(targetColName, colValue, getvalue, targetColName, tempOrValue, sourceColType, sourceColType)); break; case "4": colValue = drValue[getvalue].ToString(); if (getvalue == "1") //根据自身值 { tempOrValue = Function.Comm.GetFlagByOper(opertype); } tmpl.Add(new BaseMode(targetColName, colValue, getvalue, targetColName, tempOrValue, sourceColType, sourceColType)); break; case "5": colValue = ""; if (getvalue == "main|@@identity") { tempOrValue = "@mainid"; } else if (getvalue == "##newguid") { tempOrValue = Guid.NewGuid().ToString(); } else if (getvalue == "main|##newguid") //新生成的guid值 { tempOrValue = "main|##newguid"; } tmpl.Add(new BaseMode(targetColName, colValue, getvalue, targetColName, tempOrValue, sourceColType, sourceColType)); break; } } return(tmpl); }
/// <summary> /// 基础档案事件调插件方法 /// </summary> /// <param name="document" datetype="MSXML2.IXMLDocument2" out="1">基础档案 DOM 对象实例</param> /// <param name="message" datatype="string" out="1">错误信息。用于插件方法返回档案的错误信息</param> /// <returns datatype="bool" comment="返回值决定原档案业务流程是否会继续"> /// <return value="True">操作成功</return> /// <return value="False">操作失败</return> /// </returns> public bool InvokeArchiveEvent(ref IXMLDOMDocument2 document, ref string message) { try { Output.gDebugView("CSharp.SyncAdapter.Archive.Entering..."); /********** 获取插件上下文信息:登录对象、连接、事件ID ***************/ //获取插件上下文 MomCallContext context = MomCallContextCache.Instance.CurrentMomCallContext; //从上下文获取U8Login对象 U8Login.clsLogin login = context.U8Login as U8Login.clsLogin; //从上下文获取帐套库连接对象 ADODB.Connection conn = context.BizDbConnection as ADODB.Connection; //从上下文获取事件ID string eventId = context.EventIdentity; Biz.BizBase oper; switch (eventId.ToLower()) { //部门 case "u8api/department/add_after": case "u8api/department/add_before": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "Department", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, document, login.UFDataConnstringForNet.ToString(), "a" }, null, null); oper.Insert(); break; case "u8api/department/delete_after": case "u8api/department/delete_before": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "Department", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, document, login.UFDataConnstringForNet.ToString(), "d" }, null, null); oper.Delete(); break; case "u8api/department/modify_after": case "u8api/department/modify_before": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "Department", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, document, login.UFDataConnstringForNet.ToString(), "m" }, null, null); oper.Update(); break; //人员 case "u8api/hr_hi_person/add_after": case "u8api/hr_hi_person/add_before": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "Person", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, document, login.UFDataConnstringForNet.ToString(), "a" }, null, null); oper.Insert(); break; case "u8api/hr_hi_person/delete_after": case "u8api/hr_hi_person/delete_before": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "Person", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, document, login.UFDataConnstringForNet.ToString(), "d" }, null, null); oper.Delete(); break; case "u8api/hr_hi_person/modify_after": case "u8api/hr_hi_person/modify_before": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "Person", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, document, login.UFDataConnstringForNet.ToString(), "m" }, null, null); oper.Update(); break; //主计量单位 case "u8api/computationunit/add_after": case "u8api/computationunit/add_before": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "ComputationUnit", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, document, login.UFDataConnstringForNet.ToString(), "a" }, null, null); oper.Insert(); break; case "u8api/computationunit/delete_after": case "u8api/computationunit/delete_before": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "ComputationUnit", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, document, login.UFDataConnstringForNet.ToString(), "d" }, null, null); oper.Delete(); break; case "u8api/computationunit/modify_after": case "u8api/computationunit/modify_before": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "ComputationUnit", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, document, login.UFDataConnstringForNet.ToString(), "m" }, null, null); oper.Update(); break; //存货 case "u8api/inventory/add_after": case "u8api/inventory/add_before": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "Inventory", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, document, login.UFDataConnstringForNet.ToString(), "a" }, null, null); oper.Insert(); break; case "u8api/inventory/delete_after": case "u8api/inventory/delete_before": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "Inventory", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, document, login.UFDataConnstringForNet.ToString(), "d" }, null, null); oper.Delete(); break; case "u8api/inventory/modify_after": case "u8api/inventory/modify_before": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "Inventory", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, document, login.UFDataConnstringForNet.ToString(), "m" }, null, null); oper.Update(); break; //存货分类 case "u8api/inventoryclass/add_before": case "u8api/inventoryclass/add_after": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "InventoryClass", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, document, login.UFDataConnstringForNet.ToString(), "a" }, null, null); oper.Insert(); break; case "u8api/inventoryclass/delete_before": case "u8api/inventoryclass/delete_after": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "InventoryClass", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, document, login.UFDataConnstringForNet.ToString(), "d" }, null, null); oper.Delete(); break; case "u8api/inventoryclass/modify_before": case "u8api/inventoryclass/modify_after": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "InventoryClass", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, document, login.UFDataConnstringForNet.ToString(), "m" }, null, null); oper.Update(); break; //供应商 case "u8api/vendor/add_after": case "u8api/vendor/add_before": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "Vendor", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, document, login.UFDataConnstringForNet.ToString() }, null, null); oper.Insert(); break; case "u8api/vendor/delete_after": case "u8api/vendor/delete_before": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "Vendor", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, document, login.UFDataConnstringForNet.ToString() }, null, null); oper.Delete(); break; case "u8api/vendor/modify_after": case "u8api/vendor/modify_before": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "Vendor", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, document, login.UFDataConnstringForNet.ToString() }, null, null); oper.Update(); break; case "u8api/vendor/merge_before": case "u8api/vendor/merge_after": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "Vendor", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, document, login.UFDataConnstringForNet.ToString() }, null, null); oper.LinkMerge(document); break; //客户 case "u8api/customer/add_after": case "u8api/customer/add_before": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "Customer", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, document, login.UFDataConnstringForNet.ToString() }, null, null); oper.Insert(); break; case "u8api/customer/delete_after": case "u8api/customer/delete_before": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "Customer", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, document, login.UFDataConnstringForNet.ToString() }, null, null); oper.Delete(); break; case "u8api/customer/modify_after": case "u8api/customer/modify_before": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "Customer", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, document, login.UFDataConnstringForNet.ToString() }, null, null); oper.Update(); break; case "u8api/customer/merge_before": case "u8api/customer/merge_after": oper = (Biz.BizBase)System.Reflection.Assembly.Load(U8.Interface.Bus.Config.ConfigUtility.EventBizDllName).CreateInstance(U8.Interface.Bus.Config.ConfigUtility.EventBizNamespace + "." + "Customer", true, System.Reflection.BindingFlags.CreateInstance, null, new object[] { conn, document, login.UFDataConnstringForNet.ToString() }, null, null); oper.LinkMerge(document); break; } Output.gDebugView("CSharp.SyncAdapter.Archive." + eventId + ".Writing log..."); Output.mWriteLog(eventId, document, null, conn, login); Output.gDebugView("CSharp.SyncAdapter.Archive." + eventId + ".Creating BO Instance..."); Output.gDebugView("CSharp.SyncAdapter.Archive." + eventId + ".Simulating Business Rule..."); Output.gDebugView("CSharp.SyncAdapter.Archive." + eventId + ".ShowDialog..."); bool result = true; Output.gDebugView("CSharp.SyncAdapter.Archive." + eventId + ".Complete"); return(result); } catch (Exception ex) { Output.mWriteLog(ex.Message); throw ex; } }