/// <summary> /// 保存 /// </summary> /// <param name="step">第几步</param> /// <param name="fldDatas">字段信息与数据</param> /// <param name="attacheIdList">附件id列表</param> /// <param name="attacheNameList">附件Name列表</param> /// <param name="signText"></param> /// <param name="signData"></param> /// <param name="flag">状态</param> /// <returns></returns> public int Save(int step, FormFieldCollection fldDatas, string attacheIdList, string attacheNameList, string signText, string signData, int flag) { //1.保存fldDatas到FL_RunDatas_{N}中 this.LoadMyForm(false); String sSql = String.Format("select * from sysobjects where xtype='u' and name='FL_RunDatas_{0}'", this.MyForm.Id); if (!ULCode.QDA.XSql.IsHasRow(sSql)) { sSql = String.Format("Select * into FL_RunDatas_{0} from FL_RunDatas", this.MyForm.Id); ULCode.QDA.XSql.Execute(sSql); } sSql = String.Format("Select * from FL_RunDatas_{0} where RunId={1}", this.MyForm.Id, this.Id); if (ULCode.QDA.XSql.IsHasRow(sSql)) { sSql = String.Format("Update FL_RunDatas_{0} set Datas='{2}' where RunId={0}", this.MyForm.Id, this.Id, fldDatas.GetSavedDatas(FormFieldDataType.Data)); } else { sSql = String.Format("insert into FL_RunDatas_{0}(Name,FormId,RunId,BeginUserId,BeginTime,Datas) Values('{2}','{0}','{1}','{3}','{4}','{5}')" , this.MyForm.Id , this.Id , this.Name , this.BeginUser.ToString() , this.BeginTime , fldDatas.GetSavedDatas(FormFieldDataType.Data)); } int iR0 = ULCode.QDA.XSql.Execute(sSql); //2.保存attacheIdList, attacheNameList到当前步骤 if (!String.IsNullOrEmpty(attacheIdList)) { if (this.Attach_IdList.isEmpty) { this.Attach_IdList.set_String_Append(attacheIdList); } else { this.Attach_IdList.set_String_Append("," + attacheIdList); } } if (!String.IsNullOrEmpty(attacheNameList)) { if (this.Attach_NameList.isEmpty) { this.Attach_NameList.set_String_Append("," + attacheNameList); } else { this.Attach_NameList.set_String_Append("," + attacheNameList); } } //this.Attach_IdList.set_String_AppendFormat(",{0}", attacheIdList); //this.Attach_NameList.set_String_AppendFormat(",{0}", attacheNameList); int iR1 = this.Update(); //3.保存SignText与SignData sSql = String.Format("if exists(select * from FL_RunFeedBack where RunId={0} and StepNo={1} and UserId='{4}' and FeedFlag=0)" + " Update FL_RunFeedBack set Content='{2}',SignData='{3}',FeedFlag={7},EditTime=GetDate(),CheckUserID='" + WX.Public.CurUser.UserID + "' where RunId={0} and StepNo={1} and UserId='{4}' and FeedFlag=0;" + " else " + " Insert into FL_RunFeedBack(RunId,StepNo,UserId,Content,Attach_IdList,Attach_NameList,EditTime,FeedFlag,SignData,ReplyId,CheckUserID)" + " values({0},{1},'{4}','{2}','{5}','{6}',GetDate(),{7},'{3}',0,'{8}');" , this.Id, step, signText, signData, this.BeginUser.ToString(), null, null, flag, WX.Public.CurUser.UserID); int iR2 = ULCode.QDA.XSql.Execute(sSql); WX.Flow.Model.Process.MODEL proc = WX.Flow.Model.Process.GetModel("select * from FL_Process where FlowID=" + this.FlowId.ToString() + " and StepNo=" + step); if (proc != null && proc.UpdateTable.ToString() != "") { sSql = String.Format("if exists(select * from {0} where UserID='{2}') update {0} set {1} where UserID='{2}'; else begin Insert into {0} (UserID) values('{2}');update {0} set {1} where UserID='{2}';end", proc.UpdateTable.ToString(), proc.UpdateKeyValue, this.BeginUser.ToString()); ULCode.QDA.XSql.Execute(sSql); } if (iR0 * iR1 * iR2 > 0) { //Succeess; } else { //Faild } return(iR2); }