using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using BP.Sys; using BP.En; namespace BP.WF { /// /// 单据业务流程 /// public class CCBill_FlowEvent { /// /// 流程结束的时候要处理的事件 /// /// /// public static void DealFlowOver(WorkNode wn, string paras) { #region 如果是修改基础资料流程。 ///如果是修改基础资料流程. if (wn.HisGenerWorkFlow.GetParaBoolen("FlowBaseData", false) == true) { Int64 dictWorkID = wn.HisGenerWorkFlow.PWorkID; string dictFrmID = wn.HisGenerWorkFlow.PFlowNo; string flowFrmID = "ND" + int.Parse(wn.HisFlow.No + "01"); // MapData md = new MapData(flowFrmID); //同步主表数据. Row row = wn.rptGe.Row; //创建实体. GEEntity geEn = new GEEntity(dictFrmID, dictWorkID); foreach (string key in row.Keys) { if (key.IndexOf("bak") == 0) continue; if (BP.WF.Glo.FlowFields.Contains("," + key + ",") == true) continue; //设置值. geEn.SetValByKey(key, row.GetValByKey(key)); } geEn.OID = dictWorkID; geEn.Update(); //更新. //修改实体信息. BP.CCBill.Dev2Interface.Dict_AddTrack(dictFrmID, wn.WorkID.ToString(), CCBill.FrmActionType.FlowBaseData, "流程修改实体数据", geEn.ToJson(), wn.HisFlow.No, wn.HisFlow.Name, wn.HisNode.NodeID, wn.WorkID); //更新从表. // MapDtls dtls = new MapDtls(flowFrmID); } #endregion 如果是修改基础资料流程。 #region 如果是新建实体流程. if (wn.HisGenerWorkFlow.GetParaBoolen("FlowNewEntity", false) == true) { string menuNo = wn.HisGenerWorkFlow.GetParaString("MenuNo"); BP.CCBill.Template.MethodFlowNewEntity menu = new BP.CCBill.Template.MethodFlowNewEntity(menuNo); //创建工作,并copy数据过去. Row row = wn.rptGe.Row; BP.CCBill.Dev2Interface.SaveDictWork(menu.FrmID, wn.WorkID, row); //替换实体名字. if (row.ContainsKey("DictName") == true) { string dictName = row["DictName"].ToString(); GEEntity ge = new GEEntity(menu.FrmID, wn.WorkID); ge.SetValByKey("Title", dictName); ge.Update(); } //写入日志. string myparas = ""; myparas += "@PWorkID=" + wn.WorkID; myparas += "@PFlowNo=" + wn.HisFlow.No; myparas += "@PNodeID=" + wn.HisNode.NodeID; BP.CCBill.Dev2Interface.Dict_AddTrack(menu.FrmID, wn.WorkID.ToString(), CCBill.FrmActionType.StartRegFlow, "流程创建实体", myparas, wn.HisFlow.No, wn.HisFlow.Name, wn.HisNode.NodeID, wn.WorkID); } #endregion 如果是新建实体流程. } public static void DoFlow(string flowMark, WorkNode wn, string paras) { ///流程结束之前. if (flowMark.Equals(EventListFlow.FlowOverBefore) == true) DealFlowOver(wn, paras); } } }