You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

105 lines
3.7 KiB
Plaintext

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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
{
/// <summary>
/// 单据业务流程
/// </summary>
public class CCBill_FlowEvent
{
/// <summary>
/// 流程结束的时候要处理的事件
/// </summary>
/// <param name="wn"></param>
/// <param name="paras"></param>
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);
}
}
}