public DataResult EditProcessInfo(ProcessInfoEdit Model)
 {
     //BForm bWorkOrder = new BForm();
     ///操作员信息获取、测试阶段改信息来自常量的引用中。
     ///当后台能获取操作员信息后,需取消using OTG.OA.Framework.Const的引用。
     UserInfo mUser = BusinessConst.GetDefault();
     Model.GroupID = mUser.GroupID;
     Model.OperatorID = mUser.ID;
     Model.OperatorName = mUser.Name;
     Model.OperateTime = DateTime.Now;
     int iBack = processService.EditProcessInfo(Model);
     if (iBack == 1)
     {
         dataResult.Code = ResponseStatusCode.Success;
         dataResult.Msg = "操作成功!";
     }
     else
     {
         dataResult.Code = ResponseStatusCode.Error;
         dataResult.Msg = "操作失败!";
     }
     return dataResult;
 }
        /// <summary>
        /// 添加/编辑自定义流程
        /// </summary>
        /// <param name="Model"></param>
        /// <returns></returns>
        public int EditProcessInfo(ProcessInfoEdit Model) {
            MySqlConnection conn = DbMySqlConnectionWrite();
            int iBack = 0;
            try
            {
                using (conn)
                {
                    if (string.IsNullOrEmpty(Model.ID))
                    {
                        //添加流程
                        string strProcessID = Guid.NewGuid().ToString();
                        iBack = conn.Insert("process")
                        .Field("PK_Process", DbType.AnsiString, strProcessID)
                        .Field("PK_Group", DbType.AnsiString, Model.GroupID)
                        .Field("Name", DbType.AnsiString, Model.Name)
                        .Field("Type", DbType.Int32, Model.Type)
                        .Field("T_Deleted", DbType.Int32, 0)
                        .Field("T_Creater", DbType.AnsiString, Model.OperatorID)
                        .Field("T_CreaterName", DbType.AnsiString, Model.OperatorName)
                        .Field("T_CreateTime", DbType.DateTime, Model.OperateTime)
                        .Field("T_Updater", DbType.AnsiString, Model.OperatorID)
                        .Field("T_UpdaterName", DbType.AnsiString, Model.OperatorName)
                        .Field("T_UpdateTime", DbType.DateTime, Model.OperateTime)
                        .Execute();
                        Model.ID = strProcessID;
                    }
                    else
                    {
                        //修改流程
                        iBack = conn.Update("process")
                            .Set("Name", DbType.AnsiString, Model.Name)
                            .Set("Type", DbType.Int32, Model.Type)
                            .Set("T_Deleted", DbType.Int32, 0)
                            .Set("T_Updater", DbType.AnsiString, Model.OperatorID)
                            .Set("T_UpdaterName", DbType.AnsiString, Model.OperatorName)
                            .Set("T_UpdateTime", DbType.DateTime, Model.OperateTime)
                            .Where(WhereMySQL.Equal("PK_Process", DbType.AnsiString, Model.ID))
                            .Execute();
                        //清空该流程中节点信息
                        iBack = conn.Delete("processinfo")
                            .Where(WhereMySQL.Equal("PK_Process", DbType.AnsiString, Model.ID))
                            .Execute();
                        ////清理未使用的表单副本
                        //string pullOrgDeptSql = "select PK_FormBU from processinfobackups where PK_FormBU in( select PK_FormBU from processinfo where PK_Process = @ProcessID )";
                        //List<MySqlParameter> lstSqlParameters = new List<MySqlParameter>();
                        //lstSqlParameters.Add(new MySqlParameter("@ProcessID", Model.ID));
                        //var t3 = conn.ExecuteReader(pullOrgDeptSql, lstSqlParameters.ToArray());
                        //List<string> lstFormBUID = new List<string>();

                        //while(t3.Read())
                        //{
                        //    lstFormBUID.Add(t3.TryGetValue<string>("PK_FormBU"));
                        //}
                        //iBack = conn.Delete("forminfobackups")
                        //    .Where(WhereMySQL.In("PK_FormBU", DbType.AnsiString, lstFormBUID.ToArray()))
                        //    .Execute();
                    }
                    //生成控件副本信息
                    List<string> lstFormID = Model.Detail.Select(o => o.FormID).ToList();
                    Dictionary<string, string> dFormIDKeyValiue = new Dictionary<string, string>();

                    var f7 = conn.MultiQuery<List<FormInfoDetailView>>("forminfo")
                        .PrimaryKey("PK_Form")
                        .Fields("PK_Form AS ID,Name,ControlSort,ControlJson,Remark,T_Deleted AS Del,T_Creater AS CreaterID,T_CreaterName AS CreaterName,T_CreateTime AS CreateTime,T_Updater AS UpdaterID,T_UpdaterName AS UpdaterName,T_UpdateTime AS UpdateTime")
                        .OrderBy("T_CreateTime", false)
                        .Where(WhereMySQL.In("PK_Form", DbType.AnsiString, lstFormID.ToArray()));
                    List<FormInfoDetailView> lstFormInfo = f7.Execute();

                    foreach (FormInfoDetailView temp in lstFormInfo) {
                        if (!dFormIDKeyValiue.ContainsKey(temp.ID))
                        {
                            dFormIDKeyValiue.Add(temp.ID, Guid.NewGuid().ToString());
                        }
                        iBack = conn.Insert("forminfobackups")
                        .Field("PK_FormBU", DbType.AnsiString, dFormIDKeyValiue[temp.ID])
                        .Field("Name", DbType.AnsiString, temp.Name)
                        .Field("ControlSort", DbType.Int32, temp.ControlSort)
                        .Field("ControlJson", DbType.Int32, temp.ControlJson)
                        .Field("Remark", DbType.Int32, temp.Remark)
                        .Field("T_Creater", DbType.AnsiString, temp.CreaterID)
                        .Field("T_CreaterName", DbType.AnsiString, temp.CreaterName)
                        .Field("T_CreateTime", DbType.DateTime, temp.CreateTime)
                        .Field("T_Updater", DbType.AnsiString, temp.UpdaterID)
                        .Field("T_UpdaterName", DbType.AnsiString, temp.UpdaterName)
                        .Field("T_UpdateTime", DbType.DateTime, temp.UpdateTime)
                        .Execute();                        
                    }
                    ///创建流程节点
                    Dictionary<string, string> dIDKeyValiue = new Dictionary<string, string>();
                    foreach (var item in Model.Detail)
                    {
                        if (!dIDKeyValiue.ContainsKey(item.ID)) {
                            dIDKeyValiue.Add(item.ID, Guid.NewGuid().ToString());
                        }
                        if (!string.IsNullOrEmpty(item.PreviousID)&&!dIDKeyValiue.ContainsKey(item.PreviousID))
                        {
                            dIDKeyValiue.Add(item.PreviousID, Guid.NewGuid().ToString());
                        }
                        if (!string.IsNullOrEmpty(item.NextID) && !dIDKeyValiue.ContainsKey(item.NextID))
                        {
                            dIDKeyValiue.Add(item.NextID, Guid.NewGuid().ToString());
                        }

                        iBack = conn.Insert("processinfo")
                        .Field("PK_ProcessInfo", DbType.AnsiString, dIDKeyValiue[item.ID])
                        .Field("PK_Process", DbType.AnsiString, Model.ID)
                        .Field("PreviousID", DbType.AnsiString, dIDKeyValiue[item.PreviousID])
                        .Field("NextID", DbType.AnsiString, dIDKeyValiue[item.NextID])
                        .Field("PK_FormBU", DbType.AnsiString, dFormIDKeyValiue[item.FormID])
                        .Field("JudgementJson", DbType.AnsiString, item.JudgementJson)
                        .Field("Type", DbType.DateTime, item.Type)
                        .Field("IsAllComplete", DbType.AnsiString, item.IsAllComplete)
                        .Execute();
                    }

                }
                return iBack;
            }
            catch
            {
                return 0;
            }
        }