private async Task <Post> SubmitAsync(SubmitData data, ICaptchaSolver solver = null) { var json = await WebAgent.Post(SubmitLinkUrl, data).ConfigureAwait(false); if (json["errors"].Any() && json["errors"][0][0].ToString() == "BAD_CAPTCHA") { if (solver == null) { throw new CaptchaFailedException("Captcha required but not ICaptchaSolver provided"); } data.Iden = json["captcha"].ToString(); CaptchaResponse captchaResponse = solver.HandleCaptcha(new Captcha(data.Iden)); // We throw exception due to this method being expected to return a valid Post object, but we cannot // if we got a Captcha error. if (captchaResponse.Cancel) { throw new CaptchaFailedException("Captcha verification failed when submitting " + data.Kind + " post"); } data.Captcha = captchaResponse.Answer; return(await SubmitAsync(data, solver).ConfigureAwait(false)); } else if (json["errors"].Any() && json["errors"][0][0].ToString() == "ALREADY_SUB") { throw new DuplicateLinkException($"Post failed when submitting. The following link has already been submitted: {((LinkData)data).URL}"); } else if (json["errors"].Any()) { throw new Exception(json["errors"][0][0].ToString()); } return(new Post(WebAgent, json["data"])); }
public static void SubmitLeaderboard(string inToken, int inPastScore, SubmitData inData, Action <PlayerData> onCompleted, Action <string> onFailed) { if (_config.isLocal) { var leaderBoardResponse = LocalLeaderboardSystem.SubmitLeaderboard(inToken, inPastScore, inData); if (leaderBoardResponse.isFailed) { onFailed?.Invoke(leaderBoardResponse.message); } else { onCompleted?.Invoke(leaderBoardResponse.result); } return; } var request = DefaultRequest(); request.ContentType = "application/x-www-form-urlencoded"; request.Method = "POST"; request.Uri = UriList.LeaderboardsSubmit; request.Headers = new Dictionary <string, string> { { "Authorization", $"Bearer {inToken}" } }; request.SimpleForm = inData.ToForm(); SendRequest(request, response => { var result = JsonUtility.FromJson <PlayerData>(response); onCompleted?.Invoke(result); }, onFailed); }
public AuditControl() { InitializeComponent(); //注册按钮事件。 this.btnFail.Click += new RoutedEventHandler(btnFail_Click); this.btnSuccess.Click += new RoutedEventHandler(btnSuccess_Click); RdbAuditModel.Checked += new RoutedEventHandler(RdbAuditModel_Checked); RdbAuditFree.Checked += new RoutedEventHandler(RdbAuditFree_Checked); ckbIsEndAudit.Click += new RoutedEventHandler(ckbIsEndAudit_Click); btnLookUpDepartment.Click += new RoutedEventHandler(btnLookUpDepartment_Click); this.AuditListPnl.Visibility = Visibility.Collapsed;//默认隐藏审核列表 //this.AuditListPnl.Height ="0"; AuditEntity = new Flow_FlowRecord_T(); InitParameter(); // this.txRemark.MaxLength = 1000; AuditSubmitData = new SubmitData(); // Added by Water 20100916 默认是固定流程 IsFixedFlow = true; // beyond 加入撤单 this.btnCancelSubmit.Click += new RoutedEventHandler(btnCancelSubmit_Click); }
public void Awake() { if (_instance == null) { _instance = this; } else if (_instance != this) { Destroy(gameObject); } }
public async Task <ActionResult <SubmissionMetadata> > Submit([FromBody] SubmitData data) { if (await _workspace.Problems.Has(data.ProblemId) == false) { return(NotFound()); } if (await _workspace.Users.Has(data.UserId) == false) { return(NotFound()); } SubmissionMetadata meta = new SubmissionMetadata { Id = Guid.NewGuid().ToString(), ProblemId = data.ProblemId, UserId = data.UserId, Language = data.Language, Time = DateTimeOffset.Now, }; ISubmissionProvider sub = await _workspace.Submissions.Create(meta); if (sub == null) { return(Forbid()); } try { if (data.CodeFile != null) { using (System.IO.Stream s = data.CodeFile.OpenReadStream()) { meta.CodeLength = (uint)s.Length; await sub.SetCode(s); } } else { meta.CodeLength = (uint)Encoding.UTF8.GetByteCount(data.Code); using (System.IO.Stream ms = TextIO.ToStream(data.Code ?? "")) await sub.SetCode(ms); } await sub.SetMetadata(meta); SendJudgeRequest(sub.Id); return(Created($"submissions/{meta.Id}", await sub.GetMetadata())); } catch { await _workspace.Submissions.Delete(sub.Id); return(Forbid()); } }
public override SaaS.Common.SaveResult Save(SaaS.Common.IEntityBase data) { AuditEntity auditEntity = data as AuditEntity; SubmitData submitData = auditEntity.Data as SubmitData; var dataResult = Submit(submitData); return(new SaaS.Common.SaveResult(new AuditEntity() { Data = dataResult }) { State = SaaS.Common.SaveResultState.Success }); }
public DataResult Submit(SubmitData submitData) { FlowWFServices service = new FlowWFServices(); if (submitData.SubmitFlag == SubmitFlag.New) { CommonBLL bll = new CommonBLL(""); IEntityBase obj = bll.GetEntity(submitData.ModelCode.ToUpper(), submitData.FormID); string xml = GetFullXml(obj, submitData.ModelCode.ToUpper(), submitData).ToString(); XElement element = XElement.Parse(xml); element = bll.GetXml(obj, element); submitData.XML = element.ToString(); } return service.SubmitFlow(submitData); }
public DataResult Submit(SubmitData submitData) { FlowWFServices service = new FlowWFServices(); if (submitData.SubmitFlag == SubmitFlag.New) { CommonBLL bll = new CommonBLL(""); IEntityBase obj = bll.GetEntity(submitData.ModelCode.ToUpper(), submitData.FormID); string xml = GetFullXml(obj, submitData.ModelCode.ToUpper(), submitData).ToString(); XElement element = XElement.Parse(xml); element = bll.GetXml(obj, element); submitData.XML = element.ToString(); } return(service.SubmitFlow(submitData)); }
/// <summary> /// 计费计算和调价处理 /// </summary> /// <param name="meter"></param> /// <param name="dataItem"></param> /// <returns></returns> private decimal CalculateGasFee(Meter meter, SubmitData dataItem) { if (meter.Ladder <= 0) { meter.Ladder = 1; } //仅计算气费 CalculateGasFee(meter, dataItem.LJGas, dataItem.ReadDate.ToString("yyyy-MM-dd HH:mm:ss")); string result = new TaskManageDA().UpdateMeter(meter); if (result != "") { Console.WriteLine("更新Meter对象数据到Mongodb失败,原因:" + result); } return(meter.CurrentBalance); }
/// <summary> /// 将每一步的流程审核过程中的持久化实例保存下来 /// </summary> /// <param name="submitData">SubmitData</param> public static void AddInstance(SubmitData submitData, FlowUser fUser) { string instanceid = ""; try { //1查找工作流程实例ID;2查询工作流持久化对像;3保存持久化 FLOW_INSTANCE_STATEDAL dal = new FLOW_INSTANCE_STATEDAL(); FLOW_FLOWRECORDMASTER_T master = dal.GetFlowerMasterIDByFormid(dal.GetOracleConnection(), submitData.FormID); if (master != null && !string.IsNullOrEmpty(master.INSTANCEID.Trim())) { FLOW_INSTANCE_STATE entity = new FLOW_INSTANCE_STATE(); FLOW_INSTANCE_STATE model = dal.GetInstanceModel(dal.GetOracleConnection("OracleConnection"), master.INSTANCEID); if (!string.IsNullOrEmpty(model.INSTANCE_ID)) { instanceid = model.INSTANCE_ID; entity.INSTANCE_ID = model.INSTANCE_ID; // entity.STATE = model.STATE; // entity.STATUS = model.STATUS; // entity.UNLOCKED = model.UNLOCKED; // entity.BLOCKED = model.BLOCKED; // entity.INFO = model.INFO; // entity.MODIFIED = model.MODIFIED; // entity.OWNER_ID = model.OWNER_ID; // entity.OWNED_UNTIL = model.OWNED_UNTIL; // entity.NEXT_TIMER = model.NEXT_TIMER; // entity.CREATEID = submitData.ApprovalUser.UserID; //创建人ID entity.CREATENAME = submitData.ApprovalUser.UserName; //创建人姓名 entity.EDITID = fUser.NextEditUserID; //下一个审核人ID entity.EDITNAME = fUser.NextEditUserName; //下一个审核人姓名 entity.FORMID = master.FORMID; FLOW_INSTANCE_STATEDAL inDal = new FLOW_INSTANCE_STATEDAL(); inDal.Add(inDal.GetOracleConnection(), entity); LogHelper.WriteLog("Formid=" + submitData.FormID + "; instanceid=" + instanceid + " 将每一步的流程审核过程中的持久化实例保存下来,成功!"); } else { LogHelper.WriteLog("Formid=" + submitData.FormID + "; 没法找到持久化数据库的instanceid,可能丢失 instanceid=" + master.INSTANCEID + " "); } } } catch (Exception e) { LogHelper.WriteLog("Formid=" + submitData.FormID + "; instanceid=" + instanceid + " 将每一步的流程审核过程中的持久化实例保存下来出错:异常信息:" + e.ToString()); //throw new Exception(e.Message, e); } }
/// <summary> /// 处理提交抄表数据 /// </summary> /// <param name="meter"></param> /// <param name="dataItem"></param> /// <returns></returns> public SubmitResult Submit(Meter meter, SubmitData dataItem) { SubmitResult result = new SubmitResult(); //如果表为金额表,则判断是否需要效验,如需要则添加校准任务 if (meter.IsDianHuo && meter.MeterType == ((byte)CY.IoTM.Common.Item.MeterType.金额表).ToString().PadLeft(2, '0') && meter.MeterState == "0") { new Settlement().Calculate(meter, dataItem, result); } //上报数据 DataPar par = new DataPar(meter, dataItem); //new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(DoWithData)).Start(par); DoWithData(par); return(result); }
private async Task <Post> SubmitAsync(SubmitData data) { if (Reddit.User == null) { throw new RedditException("No user logged in."); } var request = WebAgent.CreatePost(SubmitLinkUrl); WebAgent.WritePostBody(await request.GetRequestStreamAsync(), data); var response = await request.GetResponseAsync(); var result = WebAgent.GetResponseString(response.GetResponseStream()); var json = JToken.Parse(result); ICaptchaSolver solver = Reddit.CaptchaSolver; if (json["json"]["errors"].Any() && json["json"]["errors"][0][0].ToString() == "BAD_CAPTCHA" && solver != null) { data.Iden = json["json"]["captcha"].ToString(); CaptchaResponse captchaResponse = solver.HandleCaptcha(new Captcha(data.Iden)); // We throw exception due to this method being expected to return a valid Post object, but we cannot // if we got a Captcha error. if (captchaResponse.Cancel) { throw new CaptchaFailedException("Captcha verification failed when submitting " + data.Kind + " post"); } data.Captcha = captchaResponse.Answer; return(await SubmitAsync(data)); } else if (json["json"]["errors"].Any() && json["json"]["errors"][0][0].ToString() == "ALREADY_SUB") { throw new DuplicateLinkException(string.Format("Post failed when submitting. The following link has already been submitted: {0}", SubmitLinkUrl)); } return(new Post().Init(Reddit, json["json"], WebAgent)); }
public string ImportFile(string fileName) { string fileContent = new FileAction(null, null).GetFileContent(PathTool.getRealPath(this.httpRequest_0, FileAction.basePath + fileName)); this.xmlDocument_0 = new XmlDocument(); this.xmlDocument_0.LoadXml(fileContent); if (this.xmlDocument_0.DocumentElement == null) { throw new Exception(fileName + "的内容不是有效的XML!"); } this.sqlTrans(); SubmitData data = new SubmitData(this.connectionConfig_0, this.xmlDocument_0, this.httpRequest_0, this.httpSessionState_0) { isBase64Img = true }; if (this.httpRequest_0["noTrans"] == "1") { data.isNoTransaction = true; } data.doSubmitData(); return(data.sbErrMsg.ToString()); }
/// <summary> /// 检查流程参数是否符合规则 /// </summary> /// <param name="ApprovalData"></param> /// <param name="APPDataResult"></param> /// <returns></returns> public static bool CheckFlowData(SubmitData ApprovalData, ref DataResult APPDataResult) { try { if (ApprovalData.FormID == null || ApprovalData.FormID == "") { APPDataResult.Err = "业务对象的FORMID为空"; return false; } if (ApprovalData.ModelCode == null || ApprovalData.ModelCode == "") { APPDataResult.Err = "模块代码为空"; return false; } //if (ApprovalData.SubmitFlag == null || (ApprovalData.SubmitFlag != SubmitFlag.New && ApprovalData.SubmitFlag != SubmitFlag.Approval)) //{ // APPDataResult.Err = "流程提交标志(SubmitFlag)有误,需要设置成SubmitFlag.New或者SubmitFlag.Approval"; // return false; //} if (ApprovalData.SubmitFlag == null) { APPDataResult.Err = "流程提交标志(SubmitFlag)不能为空"; return false; } if (ApprovalData.FlowSelectType == null || (ApprovalData.FlowSelectType != FlowSelectType.FixedFlow && ApprovalData.FlowSelectType != FlowSelectType.FreeFlow)) { APPDataResult.Err = "流程审批类型设置有误,应设置成FlowSelectType.FixedFlow或FlowSelectType.FreeFlow"; return false; } if (ApprovalData.ApprovalUser == null) { APPDataResult.Err = "提交用户信息不能为空"; return false; } else if (ApprovalData.ApprovalUser.CompanyID == null || ApprovalData.ApprovalUser.CompanyID == "") { APPDataResult.Err = "提交用户所属公司不能为空"; return false; } else if (ApprovalData.ApprovalUser.DepartmentID == null || ApprovalData.ApprovalUser.DepartmentID == "") { APPDataResult.Err = "提交用户所属部门不能为空"; return false; } else if (ApprovalData.ApprovalUser.PostID == null || ApprovalData.ApprovalUser.PostID == "") { APPDataResult.Err = "提交用户所属岗位不能为空"; return false; } else if (ApprovalData.ApprovalUser.UserID == null || ApprovalData.ApprovalUser.UserID == "") { APPDataResult.Err = "提交用户ID不能为空"; return false; } else if (ApprovalData.ApprovalUser.UserName == null || ApprovalData.ApprovalUser.UserName == "") { APPDataResult.Err = "提交用户名称不能为空"; return false; } if (ApprovalData.NextApprovalUser != null) { if ((ApprovalData.NextApprovalUser.CompanyID != null && ApprovalData.NextApprovalUser.CompanyID != "") || (ApprovalData.NextApprovalUser.DepartmentID != null && ApprovalData.NextApprovalUser.DepartmentID != "") || (ApprovalData.NextApprovalUser.PostID != null && ApprovalData.NextApprovalUser.PostID != "") || (ApprovalData.NextApprovalUser.UserID != null && ApprovalData.NextApprovalUser.UserID != "") || (ApprovalData.NextApprovalUser.UserName != null && ApprovalData.NextApprovalUser.UserName != "")) { if (ApprovalData.NextStateCode == null || ApprovalData.NextStateCode == "") { //APPDataResult.Err = "设置了下一审核人时下一审核节点代码不能为空"; //return false; } else if (ApprovalData.NextApprovalUser.CompanyID == null || ApprovalData.NextApprovalUser.CompanyID == "") { //APPDataResult.Err = "下一审核用户所属公司不能为空"; //return false; } else if (ApprovalData.NextApprovalUser.DepartmentID == null || ApprovalData.NextApprovalUser.DepartmentID == "") { //APPDataResult.Err = "下一审核用户所属部门不能为空"; //return false; } else if (ApprovalData.NextApprovalUser.PostID == null || ApprovalData.NextApprovalUser.PostID == "") { //APPDataResult.Err = "下一审核用户所属岗位不能为空"; //return false; } else if (ApprovalData.NextApprovalUser.UserID == null || ApprovalData.NextApprovalUser.UserID == "") { //APPDataResult.Err = "下一审核用户ID不能为空"; //return false; } else if (ApprovalData.NextApprovalUser.UserName == null || ApprovalData.NextApprovalUser.UserName == "") { //APPDataResult.Err = "下一审核用户名称不能为空"; //return false; } } else if (ApprovalData.NextStateCode != null && ApprovalData.NextStateCode != "") { //APPDataResult.Err = "未设置下一审核人时,不能设置下一审核节点代码"; //return false; } } else if (ApprovalData.NextStateCode != null && ApprovalData.NextStateCode != "") { //APPDataResult.Err = "未设置下一审核人时,不能设置下一审核节点代码"; //return false; } return true; } catch (Exception e) { throw e; } }
/// <summary> /// 获取填充xml /// </summary> /// <param name="obj">要填充的实体</param> /// <param name="modelCode">实体名称</param> /// <returns>返回xml</returns> public XElement GetFullXml(IEntityBase obj, string modelCode, SubmitData submitData) { XElement element = null; Metadata meta = new Metadata(); string modelType = string.Empty; if (!string.IsNullOrEmpty(modelCode)) { modelType = modelCode.ToUpper(); } else { modelType = obj.GetType().Name; } List<AutoDictionary> listAutoDic = new List<AutoDictionary>(); string strMainKey = string.Empty; string strMainValue = string.Empty; CommonBLL bll = new CommonBLL(""); #region 处理元数据 #region " T_HR_EMPLOYEEOVERTIMERECORD " if (modelType.ToUpper() == Constants.T_HR_EMPLOYEEOVERTIMERECORD) { strMainKey = "OVERTIMERECORDID"; strMainValue = string.Empty; Type objtype = obj.GetType(); PropertyInfo[] propinfos = objtype.GetProperties(); foreach (PropertyInfo propinfo in propinfos) { string keyValue = propinfo.GetValue(obj, null) != null ? propinfo.GetValue(obj, null).ToString() : string.Empty; if (propinfo.Name == strMainKey) { strMainValue = keyValue; } } if (obj is T_HR_EMPLOYEEOVERTIMERECORD) { T_HR_EMPLOYEEOVERTIMERECORD entity = obj as T_HR_EMPLOYEEOVERTIMERECORD; if (submitData.SubmitFlag != SubmitFlag.New && submitData.ApprovalResult == ApprovalResult.NoPass) { var overtimeDetail = bll.Query<T_HR_EMPLOYEEOVERTIMERECORD>().Where(w => w.OVERTIMERECORDID == strMainValue).ToList(); //Dictionary<object, object> detail = new Dictionary<object, object>(); //detail.Add(overtimeDetail, null);//normItemConfigList 是2级从表列表 Dictionary<object, object> detail = new Dictionary<object, object>(); detail.Add(entity.T_HR_EMPLOYEEOVERTIMEDETAILRD, null); listAutoDic.Add(new AutoDictionary { TableName = modelType, KeyValue = "CREATEUSERID", DataValue = submitData.ApprovalUser.UserID, DataText = submitData.ApprovalUser.UserName, Name = "CREATEUSERID" }); listAutoDic.Add(new AutoDictionary { TableName = modelType, KeyValue = "CREATEPOSTID", DataValue = submitData.ApprovalUser.PostID, DataText = submitData.ApprovalUser.PostName, Name = "CREATEPOSTID" }); listAutoDic.Add(new AutoDictionary { TableName = modelType, KeyValue = "CREATEDEPARTMENTID", DataValue = submitData.ApprovalUser.DepartmentID, DataText = submitData.ApprovalUser.DepartmentName, Name = "CREATEDEPARTMENTID" }); listAutoDic.Add(new AutoDictionary { TableName = modelType, KeyValue = "CREATECOMPANYID", DataValue = submitData.ApprovalUser.CompanyID, DataText = submitData.ApprovalUser.CompanyName, Name = "CREATECOMPANYID" }); } } } #endregion #endregion //auditInfo.ObjXml = metaData.TableToXml(yearNormDraft, null, auditInfo.SystemCode, auditInfo.ModelCode, listAutoDic);// 将Detail设置成了null string xml = meta.TableToXml(obj, null, "HR", modelType, listAutoDic); element = XElement.Parse(xml); //SMT.Portal.Common.MetaData metaData = new MetaData(); return element; }
public ConsultationViewModel(FLOW_CONSULTATION_T FLOW_CONSULTATION_T, string loginUserID, SubmitData submmitData) { this.SubmmitData = submmitData; this.FlowConsultation = FLOW_CONSULTATION_T; if (this.FlowConsultation.CONSULTATIONUSERID == loginUserID) { if (string.IsNullOrEmpty(this.FlowConsultation.CONSULTATIONCONTENT)) { this.SetAddState(); } else { this.SetViewState(); } } else if (this.FlowConsultation.REPLYUSERID == loginUserID) { if (this.FlowConsultation.FLAG == "0") { this.SetReplyState(); } else { this.SetViewState(); } } else { this.SetViewState(); } }
/// <summary> /// 进行计费汇算,本次会算值作为是否校准的依据,如需要校准,则返回true /// </summary> /// <param name="meter"></param> /// <param name="dataItem"></param> /// <returns></returns> public bool Calculate(Meter meter, SubmitData dataItem, SubmitResult returnResult) { #region /* * //计算当前阶段用气量 * decimal JieDuanYongQiLiang = dataItem.LJGas - meter.LastTotal;// dataItem.LastLJGas; * decimal[] prices = new decimal[5]; * prices[0] = meter.Price1; * prices[1] = meter.Price2; * prices[2] = meter.Price3; * prices[3] = meter.Price4; * prices[4] = meter.Price5; * decimal[] gas = new decimal[4]; * gas[0] = meter.Gas1; * gas[1] = meter.Gas2; * gas[2] = meter.Gas3; * gas[3] = meter.Gas4; * decimal currentPirce = meter.Price1; * decimal currentGas = meter.Gas1; * decimal amount = meter.LastSettlementAmount; * * decimal[] fees = new decimal[5]; * decimal[] usedGas = new decimal[5]; * if (meter.IsUsedLadder) * { * //启用了阶梯价 * int iLadder = 1; * while (iLadder < meter.Ladder) * { * currentPirce = prices[iLadder - 1]; * currentGas = gas[iLadder - 1]; * if (JieDuanYongQiLiang > currentGas) * { * //当前阶段总用气量大于当前阶梯用气量 * fees[iLadder - 1] = currentGas * currentPirce; * usedGas[iLadder - 1] = currentGas; * * amount -= fees[iLadder - 1]; * JieDuanYongQiLiang -= currentGas; * iLadder++; * } * else if (JieDuanYongQiLiang > 0) * { * fees[iLadder - 1] = JieDuanYongQiLiang * currentPirce; * usedGas[iLadder - 1] = JieDuanYongQiLiang; * * amount -= fees[iLadder - 1]; * JieDuanYongQiLiang = 0; * iLadder++; * break; * } * else * { * iLadder++; * break; * } * } * if (JieDuanYongQiLiang > 0) * { * //计算最后一个阶梯 * currentPirce = prices[iLadder - 1]; * * fees[iLadder - 1] = JieDuanYongQiLiang * currentPirce; * usedGas[iLadder - 1] = JieDuanYongQiLiang; * amount -= fees[iLadder - 1]; * } * } * else * { * //未使用阶梯价 * amount -= JieDuanYongQiLiang * currentPirce; * fees[0] = JieDuanYongQiLiang * currentPirce; * usedGas[0] = JieDuanYongQiLiang; * } */ #endregion if (meter.BillID == null) { meter.CreateBillID(); } decimal amount = CalculateGasFee(meter, dataItem); //判断结算日是否到达 //判断是否到结算日,该处的功能依赖表必须传输结算日气量数据,且上报的数据必须按时间顺序传输。 if (meter.Jiange(meter.GetSettlementTimePoint()) >= 0) { decimal[] gas = new decimal[5]; gas[0] = meter.Gas1; gas[1] = meter.Gas2; gas[2] = meter.Gas3; gas[3] = meter.Gas4; gas[4] = -1; //记录结算记录 BillRecord record = new BillRecord() { UserID = meter.UserID, MeterNo = meter.Mac }; record.RecordDate = dataItem.ReadDate.ToString("yyyy-MM-dd HH:mm:ss"); record.BillRecordType = BillRecordType.结算点记录; record.BillID = meter.BillID; record.Ladder = meter.CurrentLadder; if (meter.NextSettlementPointGas != -1 && dataItem.LJGas < meter.NextSettlementPointGas) { record.EndPoint = dataItem.LJGas; if (meter.IsPricing) { record.BeginPoint = meter.TiaoJiaPointGas; } else { record.BeginPoint = meter.NextSettlementPointGas - gas[meter.CurrentLadder - 1]; } record.Gas = record.EndPoint - record.BeginPoint; record.Price = meter.CurrentPrice; record.Amount = record.Gas * record.Price; record.Balance = meter.CurrentBalance; } else if (meter.NextSettlementPointGas != -1 && dataItem.LJGas == meter.NextSettlementPointGas) { record.EndPoint = meter.NextSettlementPointGas; if (meter.IsPricing) { record.BeginPoint = meter.TiaoJiaPointGas; } else { record.BeginPoint = meter.NextSettlementPointGas - gas[meter.CurrentLadder - 1]; } record.Gas = record.EndPoint - record.BeginPoint; record.Price = meter.CurrentPrice; record.Amount = record.Gas * record.Price; record.Balance = meter.CurrentBalance; } else { //最后一个阶梯 record.EndPoint = dataItem.LJGas; if (meter.IsPricing) { record.BeginPoint = meter.TiaoJiaPointGas; } else { record.BeginPoint = meter.LastTotal; for (int i = 0; i < meter.Ladder; i++) { record.BeginPoint += gas[i]; } } record.Gas = record.EndPoint - record.BeginPoint; record.Price = meter.CurrentPrice; record.Amount = record.Gas * record.Price; record.Balance = meter.CurrentBalance; } new M_BillRecordService().AddBillRecord(record); meter.IsPricing = false; meter.CreateBillID(); //创建新的账单 Bill bill = new Bill() { BillID = meter.BillID, UserID = meter.UserID, BeginDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }; new M_BillRecordService().AddBill(bill); returnResult.IsReLoadMeter = true; //更新结算数据 if (meter.NextSettlementPointGas != 0 && !String.IsNullOrEmpty(meter.SettlementDateTime)) { meter.LastTotal = dataItem.LJGas; } meter.SetNextSettlementDateTime(); meter.TotalAmount = dataItem.LJGas; meter.LastSettlementAmount = amount; meter.CurrentLadder = 1; meter.CurrentPrice = meter.Price1; if (meter.IsUsedLadder && meter.CurrentLadder < meter.Ladder) { //设置第1个节点的结算点气量 meter.NextSettlementPointGas = meter.LastTotal + gas[meter.CurrentLadder - 1]; } else { //下一次结算点气量为无穷大 meter.NextSettlementPointGas = -1; } new TaskManageDA().UpdateMeter(meter); //TODO:在此记录阶段用气账单 } //处理调价。 TiaoJiaDowith(meter, dataItem); decimal syMoney = Convert.ToDecimal(dataItem.SYMoney.ToString("0.00")); //在此可以定义系统参数,修正精度,默认差值大于1角做修正处理 if (meter.IsDianHuo && Math.Abs(syMoney - amount) > 0.1m) { //修正时间、修正原因、 表号、表上传的当前余额、 上次结算日累计气量(4字节),上次结算日剩余金额(4字节),累计购入金额(4字节),当前结算日 Console.WriteLine("需要修正表计量数据,表余额:{0} ,后台系统余额:{1}", dataItem.SYMoney, amount); CorrectRecord correct = new CorrectRecord(); correct.MeterBalance = syMoney; correct.MeterNo = meter.Mac; correct.MeterLastSettleMentDayLJGas = dataItem.LastLJGas; correct.MeterLJGas = dataItem.LJGas; correct.MeterLJMoney = dataItem.LJMoney; correct.MeterReadDate = dataItem.ReadDate.ToString("yyyy-MM-dd HH:mm:ss"); correct.SettlementDay = (byte)meter.SettlementDay; correct.CorrectDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); correct.CorrectReason = string.Format("表计量数据和后台不一致,表余额误差超出允许范围,表余额:{0} ,后台余额:{1} 差额:{2}", dataItem.SYMoney, amount, Math.Abs(syMoney - amount)); correct.TotalTopUp = meter.TotalTopUp; correct.SettlementBalance = amount; correct.LastSettlementDayLJGas = meter.LastTotal; dataItem.SYMoney = amount; Task _task; string result = new CorrectDA().AddCorrentTask(correct, out _task);//记录修正数据和添加修正任务 if (result == "") { returnResult.IsCalibration = true; returnResult.Calibrations.Add(_task); } } return(returnResult.IsCalibration); }
/// <summary> /// 调价处理,如存在调价则处理 /// </summary> private void TiaoJiaDowith(Meter meter, SubmitData dataItem) { //检查是否存在调价计划, 如存在并调价启动时间已到达,则将新的价格写入执行体系中(即修改价格对应的变量值),设置成功,删除调价计划数据. meter.PricingPlan = new PricingPlanDA().QueryPricingPlan(meter.Mac); if (meter.PricingPlan != null) { decimal[] prices = new decimal[5]; decimal[] gas = new decimal[5]; prices[0] = meter.Price1; prices[1] = meter.Price2; prices[2] = meter.Price3; prices[3] = meter.Price4; prices[4] = meter.Price5; gas[0] = meter.Gas1; gas[1] = meter.Gas2; gas[2] = meter.Gas3; gas[3] = meter.Gas4; gas[4] = -1; //存在调价计划 DateTime pricingDate = Convert.ToDateTime(meter.PricingPlan.UseDate); if (getJianGe(dataItem.ReadDate, pricingDate) >= 0) { //结算气量(原价格到调价时) decimal jieSuanLJGas = dataItem.LJGas - meter.LastTotal; //设置调价点(用于后续的阶梯量记账) meter.TiaoJiaPointGas = dataItem.LJGas; meter.IsPricing = true; //记录结算记录 BillRecord record = new BillRecord() { UserID = meter.UserID, MeterNo = meter.Mac }; record.RecordDate = dataItem.ReadDate.ToString("yyyy-MM-dd HH:mm:ss"); record.BillRecordType = BillRecordType.调价点记录; record.BillID = meter.BillID; record.Ladder = meter.CurrentLadder; decimal lastPoint = meter.NextSettlementPointGas - gas[meter.CurrentLadder - 1]; if (meter.NextSettlementPointGas > 0) { //当前没有计价到最后一个阶梯 record.BeginPoint = lastPoint; record.EndPoint = dataItem.LJGas; record.Gas = record.EndPoint - record.BeginPoint; record.Price = meter.CurrentPrice; record.Amount = record.Gas * record.Price; record.Ladder = meter.CurrentLadder; } else { //当前已处于最后一个阶梯 record.BeginPoint = meter.LastTotal; record.EndPoint = dataItem.LJGas; for (int i = 0; i < meter.Ladder; i++) { record.BeginPoint += gas[i]; } record.Gas = record.EndPoint - record.BeginPoint; record.Price = meter.CurrentPrice; record.Amount = record.Gas * record.Price; record.Ladder = meter.CurrentLadder; } new M_BillRecordService().AddBillRecord(record);//添加结算记录 //调价启用时间到 meter.IsUsedLadder = meter.PricingPlan.IsUsedLadder; meter.Ladder = meter.PricingPlan.Ladder; meter.Price1 = meter.PricingPlan.Price1; meter.Gas1 = meter.PricingPlan.Gas1; meter.Price2 = meter.PricingPlan.Price2; meter.Gas2 = meter.PricingPlan.Gas2; meter.Price3 = meter.PricingPlan.Price3; meter.Gas3 = meter.PricingPlan.Gas3; meter.Price4 = meter.PricingPlan.Price4; meter.Gas4 = meter.PricingPlan.Gas4; meter.Price5 = meter.PricingPlan.Price5; prices[0] = meter.Price1; prices[1] = meter.Price2; prices[2] = meter.Price3; prices[3] = meter.Price4; prices[4] = meter.Price5; gas[0] = meter.Gas1; gas[1] = meter.Gas2; gas[2] = meter.Gas3; gas[3] = meter.Gas4; gas[4] = -1; //结算周期 meter.SettlementType = meter.PricingPlan.SettlementType; //设置当前计费价格 if (meter.IsUsedLadder) { meter.NextSettlementPointGas = meter.LastTotal; for (int i = 0; i < meter.Ladder; i++) { meter.NextSettlementPointGas += gas[i]; meter.CurrentPrice = prices[i]; meter.CurrentLadder = i + 1; if (meter.NextSettlementPointGas > dataItem.LJGas) { break; } } meter.SetNextSettlementDateTime();//重新计算本阶段结算时间 } else { //新价格未启用阶梯价 meter.CurrentPrice = meter.Price1; meter.NextSettlementPointGas = -1; } //删除调价计划 new PricingPlanDA().DeletePlan(meter.PricingPlan); meter.PricingPlan = null; new TaskManageDA().UpdateMeter(meter); } meter.PricingPlan = null; } }
private void ProcessFiles(ActivityLogDelegate activityLogDelegate) { if (activityLogDelegate != null) { activityLogDelegate("Processing Started"); activityLogDelegate(string.Format("{0} file(s) Found.", files.Length)); } string filepath = null; string destinationTableName = ""; string sqlcon = cboDbServerConnections.SelectedValue.ToString(); #region Get Destination Table if (rdoUseSourceTables.Checked) { destinationTableName = null; } else if (rdoUseTableInDestinationDatabase.Checked) { destinationTableName = cboTables.SelectedValue.ToString(); } if (!string.IsNullOrEmpty(destinationTableName)) { if (!destinationTableName.Contains("[")) { destinationTableName = "[" + destinationTableName; } if (!destinationTableName.Contains("]")) { destinationTableName = destinationTableName + "]"; } } #endregion foreach (string fullfilename in files) { if (fullfilename == null) { continue; } activityLogDelegate(string.Format("File: {0}", fullfilename)); string shortfilename = Path.GetFileName(fullfilename); DataOperation dataOperation = new DataOperation(); DataRequest dataRequest = new DataRequest(); SubmitData submitData = new SubmitData(); string connectionstring = null; DataSet ds = new DataSet(); filepath = Path.GetDirectoryName(fullfilename); try { if (rdoCsv.Checked) { connectionstring = string.Format(Properties.Settings.Default.OleFlatFileConnectionTemplate.ToString(), filepath, ','); ds = dataOperation.OleDbExcelSheetsToDataSet(connectionstring, shortfilename); } else if (rdoXls.Checked) { connectionstring = string.Format(Properties.Settings.Default.OleExcelConnectionTemplate.ToString(), fullfilename); ds = dataOperation.OleDbExcelSheetsToDataSet(connectionstring); } else if (rdoXlsx.Checked) { connectionstring = string.Format(Properties.Settings.Default.OleExcelXmlFileConnectionTemplate.ToString(), fullfilename); ds = dataOperation.OleDbExcelSheetsToDataSet(connectionstring); } else if (rdoXml.Checked) { connectionstring = string.Format(Properties.Settings.Default.OleExcelConnectionTemplate.ToString(), fullfilename); ds = dataOperation.OleDbExcelSheetsToDataSet(connectionstring); } else if (rdoOther.Checked) { if (string.IsNullOrEmpty(txtDelimiter.Text.Trim())) { MessageBox.Show("When the Other option is selected, A delimited must be provided"); return; } connectionstring = string.Format(Properties.Settings.Default.OleFlatFileConnectionTemplate.ToString(), filepath, txtDelimiter.Text.Trim()); ds = dataOperation.OleDbExcelSheetsToDataSet(connectionstring, shortfilename); } } catch (Exception exp) { activityLogDelegate(string.Format("Error Reading from: {0} Details {1}", shortfilename, exp.Message)); } if (ds != null) { activityLogDelegate( string.Format(string.Format("File: {0} contains {1} Sheets", fullfilename, ds.Tables.Count))); //Insert Data foreach (DataTable dt in ds.Tables) { if (dt.Rows.Count < 1) { continue; } if (destinationTableName != null) { dt.TableName = destinationTableName; } // string droptable = Properties.Settings.Default.DropExistingTable.Replace("@TableName", dt.TableName); string createstatement = dataOperation.DataTableToMsSqlCreateStatement(dt); bool status = submitData.MsSqlExecuteNonQuery(sqlcon, createstatement); string insertstatement = dataOperation.DataTableToMssqlInsertStatement(dt); try { //Data Cleaning StringReplacementParameter stringReplacementParameter = new StringReplacementParameter(); List <StringReplacementParameter> stringReplacementParameterList = new List <StringReplacementParameter>(); stringReplacementParameter.oldstring = "\r\n"; stringReplacementParameter.newstring = ""; stringReplacementParameterList.Add(stringReplacementParameter); stringReplacementParameter.oldstring = "\r"; stringReplacementParameter.newstring = ""; stringReplacementParameterList.Add(stringReplacementParameter); stringReplacementParameter.oldstring = "\n"; stringReplacementParameter.newstring = ""; stringReplacementParameterList.Add(stringReplacementParameter); DataCleanOptions dataCleanOptions = new DataCleanOptions(); dataCleanOptions.StringReplacementParameterList = stringReplacementParameterList; DataTable cleandata = dataOperation.CleanDataTable(dt, dataCleanOptions); int recordcount = cleandata.Rows.Count; double batchprocessingsize = (double)(recordcount) * ((double)Convert.ToInt16(txtBatchPercentage.Text) / 100); batchprocessingsize = (double)recordcount / batchprocessingsize; if (dataOperation.DataTableBulkInsertMsSqlTable(sqlcon, cleandata, (int)batchprocessingsize)) { activityLogDelegate(string.Format( "{0} record(s) retreived from Sheet: {1} of file: {2} and inserted into database table: {3}", dt.Rows.Count, dt.TableName, fullfilename, dt.TableName)); } else { activityLogDelegate("Insert Failed"); } } catch (Exception exp) { activityLogDelegate("Insert Failed" + exp.StackTrace); } } } else { activityLogDelegate(string.Format("File: {0} contains {1} Sheet(s)", fullfilename, "0")); } } activityLogDelegate("Processed Completed"); MessageBox.Show("Processed Completed"); }
public DataResult SubimtFlow(SubmitData submitData) { #region 测试用例 //submitData.FlowSelectType = FlowSelectType.FixedFlow; //submitData.FormID = "0671c1d0-07b9-4baa-9a36-349f0c09bd04"; //submitData.ModelCode = "T_WP_YEARNORMDRAFT"; //submitData.ApprovalUser = new UserInfo(); //submitData.ApprovalUser.CompanyID = "721c99d5-4cfb-4cc7-ba43-a05217e25918"; //submitData.ApprovalUser.DepartmentID = "7fc6b3af-92ec-442b-921e-6a8d13039ce9"; //submitData.ApprovalUser.PostID = "aa1496a5-840b-4b15-bc3e-36c2aeb14d3b"; //submitData.ApprovalUser.UserID = "e65cdb8f-26f2-440c-a5f9-977ea29fe4c2"; //submitData.ApprovalUser.UserName = "******"; //submitData.NextStateCode = ""; //submitData.NextApprovalUser = new UserInfo(); //submitData.NextApprovalUser.CompanyID = "721c99d5-4cfb-4cc7-ba43-a05217e25918"; //submitData.NextApprovalUser.DepartmentID = "e6e9546c-2d58-4f1c-abb6-139df4055114"; //submitData.NextApprovalUser.PostID = "fdbe688e-8886-42ac-9392-914e4e20960b"; //submitData.NextApprovalUser.UserID = "7e2fb3cd-ff1a-47b4-91b0-1572e6a3f3e5"; //submitData.NextApprovalUser.UserName = "******"; //submitData.SubmitFlag = SubmitFlag.Approval; //submitData.FlowType = FlowType.Approval; //submitData.ApprovalResult = ApprovalResult.Pass; //submitData.ApprovalContent = "审核通过"; //submitData.SumbitCompanyID = ""; //submitData.SumbitDeparmentID = ""; //submitData.SumbitPostID = ""; //submitData.SumbitUserID = ""; //submitData.SumbitUserName = ""; //StringBuilder sb = new StringBuilder(); //sb.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); //sb.AppendLine("<System>"); //sb.AppendLine(" <Name>WP</Name>"); //sb.AppendLine(" <Version>1.0</Version>"); //sb.AppendLine(" <System>"); //sb.AppendLine(" <Function Description=\"\" Address=\"\" FuncName=\"\" Binding=\"\" SplitChar=\"Г\">"); //sb.AppendLine(" <ParaStr>"); //sb.AppendLine(" <Para TableName=\"\" Name=\"\" Description=\"\" Value=\"\" />"); //sb.AppendLine(" </ParaStr>"); //sb.AppendLine(" </Function>"); //sb.AppendLine(" </System>"); //sb.AppendLine(" <MsgOpen>"); //sb.AppendLine(" <AssemblyName>SMT.WP.UI</AssemblyName>"); //sb.AppendLine(" <PublicClass>SMT.WP.UI.Class.Utility</PublicClass>"); //sb.AppendLine(" <ProcessName>CreateFormFromEngine</ProcessName>"); //sb.AppendLine(" <PageParameter>WP/YearNormDraft/Audit</PageParameter>"); //sb.AppendLine(" <ApplicationOrder>{DNORMID}</ApplicationOrder>"); //sb.AppendLine(" <FormTypes>Audit</FormTypes>"); //sb.AppendLine(" </MsgOpen>"); //sb.AppendLine(" <Object Name=\"T_WP_YEARNORMDRAFT\" Description=\"公司年度经营指标方案\" Key=\"DNORMID\" id=\"0671c1d0-07b9-4baa-9a36-349f0c09bd04\">"); //sb.AppendLine(" <Attribute Name=\"DNORMID\" LableResourceID=\"DNORMID\" Description=\"指标主键ID,GUID\" DataType=\"string\" DataValue=\"0671c1d0-07b9-4baa-9a36-349f0c09bd04\" DataText=\"0671c1d0-07b9-4baa-9a36-349f0c09bd04\" />"); //sb.AppendLine(" <Attribute Name=\"PLANYEAR\" LableResourceID=\"PLANYEAR\" Description=\"计划年度\" DataType=\"string\" DataValue=\"2009\" DataText=\"2009\" />"); //sb.AppendLine(" <Attribute Name=\"COMPANYID\" LableResourceID=\"COMPANYID\" Description=\"所属公司ID\" DataType=\"string\" DataValue=\"721c99d5-4cfb-4cc7-ba43-a05217e25918\" DataText=\"721c99d5-4cfb-4cc7-ba43-a05217e25918\" />"); //sb.AppendLine(" <Attribute Name=\"COMPANYNAME\" LableResourceID=\"COMPANYNAME\" Description=\"所属公司名称\" DataType=\"string\" DataValue=\"集团公司\" DataText=\"集团公司\" />"); //sb.AppendLine(" <Attribute Name=\"APPLYDATE\" LableResourceID=\"APPLYDATE\" Description=\"申请日期\" DataType=\"datetime\" DataValue=\"2012/12/4 14:19:39\" DataText=\"2012/12/4 14:19:39\" />"); //sb.AppendLine(" <Attribute Name=\"APPLYMAN\" LableResourceID=\"APPLYMAN\" Description=\"申请人\" DataType=\"string\" DataValue=\"e65cdb8f-26f2-440c-a5f9-977ea29fe4c2\" DataText=\"e65cdb8f-26f2-440c-a5f9-977ea29fe4c2\" />"); //sb.AppendLine(" <Attribute Name=\"TASKSENDDATE\" LableResourceID=\"TASKSENDDATE\" Description=\"任务发放日期\" DataType=\"datetime\" DataValue=\"0001/1/1 0:00:00\" DataText=\"0001/1/1 0:00:00\" />"); //sb.AppendLine(" <Attribute Name=\"CHECKSTATES\" LableResourceID=\"CHECKSTATES\" Description=\"审核状态\" DataType=\"string\" DataValue=\"0\" DataText=\"0\" />"); //sb.AppendLine(" <Attribute Name=\"EDITSTATE\" LableResourceID=\"EDITSTATE\" Description=\"对象编辑状态\" DataType=\"string\" DataValue=\"2\" DataText=\"2\" />"); //sb.AppendLine(" <Attribute Name=\"OWNERCOMPANYID\" LableResourceID=\"OWNERCOMPANYID\" Description=\"记录所属公司ID\" DataType=\"string\" DataValue=\"721c99d5-4cfb-4cc7-ba43-a05217e25918\" DataText=\"721c99d5-4cfb-4cc7-ba43-a05217e25918\" />"); //sb.AppendLine(" <Attribute Name=\"OWNERDEPARTMENTID\" LableResourceID=\"OWNERDEPARTMENTID\" Description=\"记录所属部门ID\" DataType=\"string\" DataValue=\"7fc6b3af-92ec-442b-921e-6a8d13039ce9\" DataText=\"7fc6b3af-92ec-442b-921e-6a8d13039ce9\" />"); //sb.AppendLine(" <Attribute Name=\"OWNERPOSTID\" LableResourceID=\"OWNERPOSTID\" Description=\"记录所属岗位ID\" DataType=\"string\" DataValue=\"aa1496a5-840b-4b15-bc3e-36c2aeb14d3b\" DataText=\"aa1496a5-840b-4b15-bc3e-36c2aeb14d3b\" />"); //sb.AppendLine(" <Attribute Name=\"OWNERID\" LableResourceID=\"OWNERID\" Description=\"记录所属用户ID\" DataType=\"string\" DataValue=\"e65cdb8f-26f2-440c-a5f9-977ea29fe4c2\" DataText=\"e65cdb8f-26f2-440c-a5f9-977ea29fe4c2\" />"); //sb.AppendLine(" <Attribute Name=\"CREATECOMPANYID\" LableResourceID=\"CREATECOMPANYID\" Description=\"创建公司ID\" DataType=\"string\" DataValue=\"721c99d5-4cfb-4cc7-ba43-a05217e25918\" DataText=\"集团公司\" />"); //sb.AppendLine(" <Attribute Name=\"CREATEDEPARTMENTID\" LableResourceID=\"CREATEDEPARTMENTID\" Description=\"创建部门ID\" DataType=\"string\" DataValue=\"7fc6b3af-92ec-442b-921e-6a8d13039ce9\" DataText=\"总经办\" />"); //sb.AppendLine(" <Attribute Name=\"CREATEPOSTID\" LableResourceID=\"CREATEPOSTID\" Description=\"创建岗位ID\" DataType=\"string\" DataValue=\"aa1496a5-840b-4b15-bc3e-36c2aeb14d3b\" DataText=\"总经理\" />"); //sb.AppendLine(" <Attribute Name=\"CREATEUSERID\" LableResourceID=\"CREATEUSERID\" Description=\"创建人ID\" DataType=\"string\" DataValue=\"e65cdb8f-26f2-440c-a5f9-977ea29fe4c2\" DataText=\"黄总\" />"); //sb.AppendLine(" <Attribute Name=\"CREATEDATE\" LableResourceID=\"CREATEDATE\" Description=\"创建时间\" DataType=\"datetime\" DataValue=\"2012/12/4 14:19:39\" DataText=\"2012/12/4 14:19:39\" />"); //sb.AppendLine(" <Attribute Name=\"UPDATEUSERID\" LableResourceID=\"UPDATEUSERID\" Description=\"修改人ID\" DataType=\"string\" DataValue=\"e65cdb8f-26f2-440c-a5f9-977ea29fe4c2\" DataText=\"e65cdb8f-26f2-440c-a5f9-977ea29fe4c2\" />"); //sb.AppendLine(" <Attribute Name=\"UPDATEDATE\" LableResourceID=\"UPDATEDATE\" Description=\"修改时间\" DataType=\"datetime\" DataValue=\"2012/12/4 14:19:44\" DataText=\"2012/12/4 14:19:44\" />"); //sb.AppendLine(" <Attribute Name=\"REMARK\" LableResourceID=\"REMARK\" Description=\"备注\" DataType=\"string\" DataValue=\"\" DataText=\"\" />"); //sb.AppendLine(" <Attribute Name=\"ISMAJORDATA\" LableResourceID=\"ISMAJORDATA\" Description=\"是否主数据\" DataType=\"string\" DataValue=\"1\" DataText=\"1\" />"); //sb.AppendLine(" <Attribute Name=\"AUXIDNORMID\" LableResourceID=\"AUXIDNORMID\" Description=\"附属的主数据\" DataType=\"string\" DataValue=\"\" DataText=\"\" />"); //sb.AppendLine(" <Attribute Name=\"RECVERSION\" LableResourceID=\"RECVERSION\" Description=\"版本号\" DataType=\"string\" DataValue=\"1\" DataText=\"1\" />"); //sb.AppendLine(" <ObjectList Name=\"T_WP_YEARNORMDEFINE\" LableResourceID=\"T_WP_YEARNORMDEFINE\" Description=\"公司年度经营指标定义\" DataText=\"\" />"); //sb.AppendLine(" </Object>"); //sb.AppendLine("</System>"); //submitData.XML = sb.ToString(); //sb.Clear(); //SmulatedFlowService sfs = new SmulatedFlowService(); //sfs.SubimtFlow(submitData); //return null; #endregion SMTWorkFlowManage.ColseWorkFlowRuntime(null); DataSet ds = new DataSet(); WriteSubmitDate(submitData); LogHelper.WriteLog("***********************************************开始" + DateTime.Now.ToString() + "***********************************************"); string returnMsg = "";//暂时没有用,记录执行的顺序 #region 更新个人缓存 FlowEngine.TaskCacheReflesh(submitData.ApprovalUser.UserID); LogHelper.WriteLog("FormID=" + submitData.FormID + ";更新个人缓存 完成 UserID=" + submitData.ApprovalUser.UserID); #endregion // MsOracle.BeginTransaction(con); DateTime dtStart = DateTime.Now; DateTime dtEngineStart = DateTime.Now; DateTime dtEnd = DateTime.Now; DateTime dtCheckData = DateTime.Now; DataResult dataResult = new DataResult(); FlowUser User = new FlowUser(); //using (TransactionScope ts = new TransactionScope()) //设置2分钟超时时间 using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(DateTime.Now.AddMinutes(2).Ticks))) { LogHelper.WriteLog("进入事务操作 FormID=" + submitData.FormID); OracleConnection con = ADOHelper.GetOracleConnection(); LogHelper.WriteLog("打开数据库 完成 FormID=" + submitData.FormID); #region 事务处理 #region 初始化流程所属人的信息 User = new FlowUser(submitData.ApprovalUser.CompanyID, submitData.ApprovalUser.UserID, con, submitData.ModelCode); User.FormID = submitData.FormID; LogHelper.WriteLog("初始化流程所属人的信息 FormID=" + submitData.FormID); SUser = User; LogHelper.WriteLog("SUser = User FormID=" + submitData.FormID); #endregion //System.Threading.Thread.Sleep(60000); //DataResult dataResult = new DataResult(); FlowBLL Flowbill = new FlowBLL(); string AppCompanyID = ""; //申请公司 string MessageUserID = ""; //申请人ID string MessageUserName = ""; //申请人名 dataResult.FlowResult = FlowResult.SUCCESS; try { #region 检查流程数据是否规范 if (!FlowBLL.CheckFlowData(submitData, ref dataResult)) { dataResult.FlowResult = FlowResult.FAIL; { //ts.Complete(); return dataResult; } } #region XML进行验证 if (!string.IsNullOrEmpty(submitData.XML) && submitData.SubmitFlag == SubmitFlag.New) {//如果是提交并XML不为空是进行验证 if (VerifyXML(submitData.XML)) { dataResult.Err = "传入的XML不合法!请检查元数据Key值和DataValue值是否有空的"; dataResult.FlowResult = FlowResult.FAIL; FlowMonitor.AddFlowMonitor(submitData, User); return dataResult; } } if (string.IsNullOrEmpty(submitData.XML) && submitData.SubmitFlag == SubmitFlag.New) {//如果是提交并XML为空 dataResult.Err = "XML元数据不能为空!"; dataResult.FlowResult = FlowResult.FAIL; FlowMonitor.AddFlowMonitor(submitData, User); return dataResult; } #endregion #endregion submitData.ApprovalResult = submitData.SubmitFlag == SubmitFlag.New ? ApprovalResult.Pass : submitData.ApprovalResult; submitData.FlowSelectType = submitData.FlowSelectType == null ? FlowSelectType.FixedFlow : submitData.FlowSelectType; #region 新增,撤单,审核 #region 检查是否已提交流程(对数据库操作) OracleConnection ocon = ADOHelper.GetOracleConnection(); CheckResult CheckFlowResult = Flowbill.CheckFlow2(ocon, submitData, dataResult);//对数据库操作 dtCheckData = DateTime.Now; dataResult = CheckFlowResult.APPDataResult; if (CheckFlowResult.Flag == 0 && submitData.SubmitFlag == SubmitFlag.New)//已审批:1,未审批:0 { //ts.Complete(); dataResult.Err = "该单据已提交,还没有审核,不能再提交!"; dataResult.FlowResult = FlowResult.FAIL; return dataResult; } if (CheckFlowResult.fd!=null && CheckFlowResult.fd[0].CHECKSTATE == "1" && submitData.SubmitFlag == SubmitFlag.New)//审核中:1 {//如果单据还在审核中,不允许再提交单据 //ts.Complete(); dataResult.Err = "该单据已在审核中,不能再提交!"; dataResult.FlowResult = FlowResult.FAIL; return dataResult; } if (ocon.State == ConnectionState.Open) { ocon.Close(); } #endregion dataResult.AppState = submitData.NextStateCode; //提交新流程 if (submitData.SubmitFlag == SubmitFlag.New) { #region 新增 AppCompanyID = submitData.ApprovalUser.CompanyID; if (submitData.FlowSelectType == FlowSelectType.FreeFlow) //自选流程 dataResult = Flowbill.AddFreeFlow(con, submitData, dataResult, ref User);//对数据库操作 else { //固定流程 LogHelper.WriteLog("固定流程.Flowbill.AddFlow2"); dataResult = Flowbill.AddFlow2(con, submitData, dataResult, ref User);//对数据库操作 } #endregion } else if (submitData.SubmitFlag == SubmitFlag.Cancel) { #region 撤单 if (!string.IsNullOrEmpty(CheckFlowResult.fd[0].FLOW_FLOWRECORDMASTER_T.BUSINESSOBJECT)) { submitData.XML = CheckFlowResult.fd[0].FLOW_FLOWRECORDMASTER_T.BUSINESSOBJECT; } submitData.ApprovalContent = ""; dataResult = Flowbill.CancelFlow(submitData, dataResult, CheckFlowResult.fd); dataResult.SubmitFlag = submitData.SubmitFlag; #endregion } //审批流程 else { if (CheckFlowResult.fd[0] == null) { dataResult.Err = "FormID =" + submitData.FormID + ";该单据没有审核记录!"; dataResult.FlowResult = FlowResult.FAIL; return dataResult; } #region 审核 if (!string.IsNullOrEmpty(CheckFlowResult.fd[0].FLOW_FLOWRECORDMASTER_T.BUSINESSOBJECT)) { submitData.XML = CheckFlowResult.fd[0].FLOW_FLOWRECORDMASTER_T.BUSINESSOBJECT; } //引擎消息数据 AppCompanyID = CheckFlowResult.fd[0].FLOW_FLOWRECORDMASTER_T.CREATECOMPANYID; MessageUserID = CheckFlowResult.fd[0].FLOW_FLOWRECORDMASTER_T.CREATEUSERID; MessageUserName = CheckFlowResult.fd[0].FLOW_FLOWRECORDMASTER_T.CREATEUSERNAME; submitData.ApprovalUser.CompanyID = CheckFlowResult.fd[0].EDITCOMPANYID; submitData.ApprovalUser.DepartmentID = CheckFlowResult.fd[0].EDITDEPARTMENTID; submitData.ApprovalUser.PostID = CheckFlowResult.fd[0].EDITPOSTID; submitData.FlowSelectType = (FlowSelectType)Convert.ToInt32(CheckFlowResult.fd[0].FLOW_FLOWRECORDMASTER_T.FLOWSELECTTYPE); if (submitData.FlowSelectType == FlowSelectType.FreeFlow) dataResult = Flowbill.ApprovalFreeFlow(con, submitData, dataResult, CheckFlowResult.fd, ref User);//对数据库操作、对服务操作 else dataResult = Flowbill.ApprovalFlow2(con, submitData, dataResult, CheckFlowResult.fd, ref User, ref returnMsg); #endregion } #endregion if (dataResult.FlowResult == FlowResult.MULTIUSER) { #region 如果检出有多个审核人时,返回界面让用户选择一个人进行审核 string users = "FormID =" + submitData.FormID + " 检出有多个审核人\r\n"; foreach (var u in dataResult.UserInfo) { //users += "CompanyID =" + u.CompanyID + "\r\n"; //users += "DepartmentID = " + u.DepartmentID + "\r\n"; //users += "PostID = " + u.PostID + "\r\n"; //users += "serID = " + u.UserID + "\r\n"; //users += "UserName = "******"\r\n"; users += "公司ID = " + u.CompanyID + "\r\n"; users += "部门ID = " + u.DepartmentID + "\r\n"; users += "岗位ID = " + u.PostID + "\r\n"; users += "员工ID = " + u.UserID + "\r\n"; users += "公司名称 = " + u.CompanyName + "\r\n"; users += "部门名称 = " + u.DepartmentName + "\r\n"; users += "岗位名称 = " + u.PostName + "\r\n"; users += "员工姓名 = " + u.UserName + "\r\n"; users += "------------------------------------\r\n"; } LogHelper.WriteLog(users + "返回界面让用户选择一个人审核人"); for (int i = 0; i < dataResult.UserInfo.Count; i++) { dataResult.UserInfo[i].Roles = null; //解决 基础连接已经关闭: 连接被意外关闭(WCF深层序列化问题) } return dataResult; #endregion } for (int i = 0; i < dataResult.UserInfo.Count; i++) { dataResult.UserInfo[i].Roles = null; //解决 基础连接已经关闭: 连接被意外关闭(WCF深层序列化问题) } if (dataResult.DictCounterUser != null) { if (dataResult.DictCounterUser.Count > 0) { string name = ""; foreach (KeyValuePair<Role_UserType, List<UserInfo>> u in dataResult.DictCounterUser) { name += "角色名称:" + u.Key.Remark + " 人数:" + u.Value.Count + "\r\n"; foreach (var user in u.Value) { user.Roles = null;//解决 基础连接已经关闭: 连接被意外关闭(WCF深层序列化问题) name += "姓名:" + user.UserName + " 公司:" + user.CompanyName + "\r\n"; } name += "---------------------------------------------------------------\r\n"; } LogHelper.WriteLog("FormID=" + User.FormID + " 会签角色下所有的人员 \r\n" + name); } } //return null; //return dataResult;//测试检查流程用的,不能提交事务 LogHelper.WriteLog("FormID=" + User.FormID + " 模块名称:user.ModelCode=" + User.ModelCode + "; user.ModelName=" + User.ModelName + " ;流程名称=" + User.FlowName + "(" + User.FlowCode + ")"); if (string.IsNullOrEmpty(strIsFlowEngine) || strIsFlowEngine.ToLower() == "true") { #region 发送审批消息(调用引擎服务) SubmitEngineService(con, submitData, dataResult, ref User, CheckFlowResult, Flowbill, AppCompanyID, MessageUserID, MessageUserName, ref returnMsg); #endregion } //修改我的单据状态 新建并且不能不等于会签才更改状态 if (submitData.SubmitFlag == SubmitFlag.New && dataResult.FlowResult==FlowResult.SUCCESS ) { EnginFlowBLL.AddPersonalRecord(con, submitData, "1", User, null); } if (dataResult.FlowResult == FlowResult.END) { EnginFlowBLL.AddPersonalRecord(con, submitData, dataResult.CheckState, User, CheckFlowResult.fd[0].FLOW_FLOWRECORDMASTER_T); } dtEnd = DateTime.Now; dataResult.SubmitFlag = submitData.SubmitFlag; if (dataResult.FlowResult == FlowResult.FAIL) { dataResult.Err = dataResult.Err + " \r\n FormID=" + User.FormID + ";时间:" + DateTime.Now.ToString(); User.ErrorMsg += "=================================================================================\r\n"; User.ErrorMsg += dataResult.Err + "\r\n"; FlowMonitor.AddFlowMonitor(submitData, User); } #region 审核结束时关闭所有的流程资讯在待办中 //if (dataResult.FlowResult == FlowResult.END) //{ // EnginFlowBLL FlowEngine = new EnginFlowBLL(); // FlowEngine.FlowConsultatiCloseAll(con, submitData.ModelCode, submitData.FormID); //} #endregion ts.Complete();//提交事务 MsOracle.Close(con);//关闭数据库 LogHelper.WriteLog("执行流程成功:FormID=" + User.FormID + ";单据所属人:" + User.UserName + "("+User.UserID+");公司名称:" + User.CompayName + ";模块名称:" + User.ModelName + " ;流程名称:" + User.FlowName + " (" + User.FlowCode + ") \r\n 返回给业务系统的 dataResult.FlowResult=" + dataResult.FlowResult.ToString() + " " + dataResult.Err); //FlowMonitor.AddInstance(submitData); //return dataResult; } catch (Exception ex) { ts.Dispose(); if (con.State == System.Data.ConnectionState.Open) { con.Close(); con.Dispose(); } dataResult.RunTime += "---FlowEnd:" + DateTime.Now.ToString(); dataResult.FlowResult = FlowResult.FAIL; // Flowbill = null; dataResult.Err = ex.Message; #region 记录到流程监控表里 User.ErrorMsg += "=================================================================================\r\n"; User.ErrorMsg += "执行流程失败:FormID=" + User.FormID + ";单据所属人:" + User.UserName + "(" + User.UserID + ");公司名称:" + User.CompayName + ";模块名称:" + User.ModelName + "; 流程名称:" + User.FlowName + " (" + User.FlowCode + "); 异常信息\r\n" + ex.ToString() + "\r\n"; FlowMonitor.AddFlowMonitor(submitData, User); #endregion #region restore workflow instanceState if (User.InstanceState != null && User.InstanceState.Tables[0].Rows.Count > 0) { foreach (DataRow dr in User.InstanceState.Tables[0].Rows) { LogHelper.WriteLog("恢复工作流InstanceState:" + dr["instance_id"]); InsertInstanceState(dr); //WorkflowRuntime workflowRuntime = SMTWorkFlowManage.CreateWorkFlowRuntime(true); //WorkflowInstance instance = SMTWorkFlowManage.GetWorkflowInstance(workflowRuntime,dr["instance_id"].ToString());// workflowRuntime.GetWorkflow(new Guid(tmp[0].FLOW_FLOWRECORDMASTER_T.INSTANCEID)); //LogHelper.WriteLog("恢复运行工作流InstanceState:" + dr["instance_id"]); } } #endregion if (dataResult.FlowResult == FlowResult.FAIL) { dataResult.Err = dataResult.Err + " FormID=" + User.FormID + ";时间:" + DateTime.Now.ToString(); LogHelper.WriteLog("失败错误信息:"+dataResult.Err); } LogHelper.WriteLog("执行流程失败:FormID=" + User.FormID + ";单据所属人:" + User.UserName + "(" + User.UserID + ");公司名称:" + User.CompayName + ";模块名称:" + User.ModelName + "; 流程名称:" + User.FlowName + " (" + User.FlowCode + ");执行踪信息如下:\r\n" + User.TrackingMessage + "\r\n 异常信息\r\n" + ex.ToString()); return dataResult; } finally { if (Flowbill.workflowRuntime != null && Flowbill.workflowRuntime.IsStarted) { //Flowbill.workflowRuntime.Dispose(); } if (con.State == System.Data.ConnectionState.Open) { con.Close(); con.Dispose(); } //dataResult = null; // LogHelper.WriteLog("-------Trace--FormID:" + submitData.FormID + "DateTime: Start:" + dtStart.ToString() + " EngineStart:" + dtEngineStart.ToString() + " End:" + dtEnd.ToString() + "\n"); } #endregion } FlowMonitor.AddInstance(submitData,User); return dataResult; }
/// <summary> ///调用业务系统 /// </summary> /// <param name="entity"></param> /// <param name="strEntityType"></param> /// <param name="strEntityKey"></param> /// <param name="ErroMessage"></param> private bool CallBusinessSystem(SubmitData submitData, T_WF_DOTASK entity, string strEntityKey, ref string ErroMessage) { bool isOK = true; Tracer.Debug("设置业务系统的审核状态是否需要审核 Config.IsNeedUpdateAudit=" + Config.IsNeedUpdateAudit.ToString()); /****************更新业务系统单据审核状态***********************/ if (Config.IsNeedUpdateAudit)//是否执行更新审核状态 { if (!string.IsNullOrEmpty(entity.SYSTEMCODE) && !string.IsNullOrEmpty(strEntityKey)) { Tracer.Debug("UpdateAuditStatus 开始 更新业务系统单据审核状态 FormID=" + entity.ORDERID); bool bol = UpdateAuditStatus(submitData, entity.SYSTEMCODE, entity.MODELCODE, strEntityKey, entity.ORDERID, entity.ORDERSTATUS.ToString(), ref ErroMessage); Tracer.Debug("UpdateAuditStatus 结束 更新业务系统单据审核状态 FormID=" + entity.ORDERID); if (!bol) { return bol; //throw new Exception(ErroMessage); } ErroMessage = ""; } else { isOK = false; Tracer.Debug("不能更新业务系统,因为entity.SYSTEMCODE=" + entity.SYSTEMCODE + " ;strEntityType=" + entity.MODELCODE + " ;strEntityKey=" + strEntityKey + " ;FormID=" + entity.ORDERID); } } return isOK; }
/// <summary> /// 流程待办任务撤销 /// </summary> /// <param name="strFlowXml"></param> /// <param name="strAppXml"></param> /// <returns></returns> public bool FlowCancel( SubmitData submitData,string strFlowXml, string strAppXml, ref string ErroMessage) { if (string.IsNullOrEmpty(strFlowXml) && string.IsNullOrEmpty(strAppXml)) { return false; } string strCompanyID = string.Empty;//公司ID string strSystemCode = string.Empty;//系统代号 string strModelCode = string.Empty;//模块代号 string strFormID = string.Empty;//FORMID string strModelName = string.Empty;//模块名称 string strEntityType = string.Empty;//EntityType (表名) string strEntityKey = string.Empty;//EntityKey (主键) string strCheckState = string.Empty;//审核状态 string strReceiveID = string.Empty;//接收人 try { EnginFlowDAL dal = new EnginFlowDAL(); /*解析流程和业务数据XML*/ Byte[] b = System.Text.UTF8Encoding.UTF8.GetBytes(strFlowXml); XElement xele = XElement.Load(System.Xml.XmlReader.Create(new MemoryStream(b))); strCompanyID = XMLToAttribute(xele, "COMPANYID"); strSystemCode = string.Empty; strModelCode = XMLToAttribute(xele, "MODELCODE"); strFormID = XMLToAttribute(xele, "FORMID"); strModelName = XMLToAttribute(xele, "ModelName"); strCheckState = XMLToAttribute(xele, "CheckState"); strReceiveID = XMLToAttribute(xele, "APPUSERID"); if (!string.IsNullOrEmpty(strAppXml)) { Byte[] Bo = System.Text.UTF8Encoding.UTF8.GetBytes(strAppXml); XElement xemeBoObject = XElement.Load(System.Xml.XmlReader.Create(new MemoryStream(Bo))); strSystemCode = (from item in xemeBoObject.Descendants("Name") select item).FirstOrDefault().Value; try { strEntityType = (from item in xemeBoObject.Descendants("Object") select item).FirstOrDefault().Attribute("Name").Value; strEntityKey = (from item in xemeBoObject.Descendants("Object") select item).FirstOrDefault().Attribute("Key").Value; //有些特殊的模块需要改变接收人 if (CheckModelName(strModelCode) && strCheckState == "2") { strReceiveID = (from item in xemeBoObject.Descendants("Object").Descendants("Attribute") where item.Attribute("Name").Value.ToUpper() == "CREATEUSERID" select item).FirstOrDefault().Attribute("DataValue").Value; } } catch { Tracer.Debug("FlowCancel该单号:" + strFormID + " 中业务数据无法取得EntityKey"); } } string strAppFieldValue = ConbinString(xele) + BOObjectEscapeString(strAppXml); DataTable dtValue = FieldStringToDataTable(strAppFieldValue, ref strAppFieldValue); string content = dal.GetMessageDefine( "FLOWCANCEL"); string strUrl = string.Empty; ReplaceUrl(ref content, ref strUrl, dtValue); dal.DoTaskCancel( strSystemCode, strModelCode, strFormID, strReceiveID, content); //FlowEngine.TaskCacheReflesh(strReceiveID); if (Config.IsNeedUpdateAudit)//是否执行更新审核状态 { if (!string.IsNullOrEmpty(strSystemCode) && !string.IsNullOrEmpty(strEntityType) && !string.IsNullOrEmpty(strEntityKey)) { bool bol = UpdateAuditStatus(submitData,strSystemCode, strEntityType, strEntityKey, strFormID, strCheckState, ref ErroMessage); if (!bol) { throw new Exception(ErroMessage); } } } return true; } catch (Exception e) { string cMessage = "流程待办任务撤销异常" + "\r\n" + "SystemCode:" + strSystemCode + "\r\n" + "MODELCODE:" + strModelCode + "\r\n" + "COMPANYID:" + strCompanyID + "\r\n" + "Error:" + e.Message + "\r\n" + "FORMID:" + strFormID + "\r\n" + "流程XML:" + strFlowXml + "\r\n" + "AppXml:" + strAppXml + "\r\n"; Tracer.Debug("FlowCancel流程待办任务撤销异常" + cMessage + ErroMessage); return false; } }
/// <summary> /// 将每一步的流程审核过程中的持久化实例保存下来 /// </summary> /// <param name="submitData">SubmitData</param> public static void AddInstance(SubmitData submitData,FlowUser fUser) { string instanceid = ""; try { //1查找工作流程实例ID;2查询工作流持久化对像;3保存持久化 FLOW_INSTANCE_STATEDAL dal = new FLOW_INSTANCE_STATEDAL(); FLOW_FLOWRECORDMASTER_T master = dal.GetFlowerMasterIDByFormid( submitData.FormID); if (master != null && !string.IsNullOrEmpty(master.INSTANCEID.Trim())) { FLOW_INSTANCE_STATE entity = new FLOW_INSTANCE_STATE(); FLOW_INSTANCE_STATE model = dal.GetInstanceModel(master.INSTANCEID); if (!string.IsNullOrEmpty(model.INSTANCE_ID)) { instanceid = model.INSTANCE_ID; entity.INSTANCE_ID = model.INSTANCE_ID;// entity.STATE = model.STATE;// entity.STATUS = model.STATUS;// entity.UNLOCKED = model.UNLOCKED;// entity.BLOCKED = model.BLOCKED;// entity.INFO = model.INFO;// entity.MODIFIED = model.MODIFIED;// entity.OWNER_ID = model.OWNER_ID;// entity.OWNED_UNTIL = model.OWNED_UNTIL;// entity.NEXT_TIMER = model.NEXT_TIMER;// entity.CREATEID = submitData.ApprovalUser.UserID;//创建人ID entity.CREATENAME = submitData.ApprovalUser.UserName;//创建人姓名 entity.EDITID = fUser.NextEditUserID;//下一个审核人ID entity.EDITNAME = fUser.NextEditUserName;//下一个审核人姓名 entity.FORMID = master.FORMID; FLOW_INSTANCE_STATEDAL inDal = new FLOW_INSTANCE_STATEDAL(); inDal.Add(entity); Tracer.Debug("Formid=" + submitData.FormID + "; instanceid=" + instanceid + " 将每一步的流程审核过程中的持久化实例保存下来,成功!"); } else { Tracer.Debug("Formid=" + submitData.FormID + "; 没法找到持久化数据库的instanceid,可能丢失 instanceid=" + master.INSTANCEID + " "); } } } catch (Exception e) { Tracer.Debug("Formid=" + submitData.FormID + "; instanceid=" + instanceid + " 将每一步的流程审核过程中的持久化实例保存下来出错:异常信息:" + e.ToString()); //throw new Exception(e.Message, e); } }
public async Task <IActionResult> SubmitAsync(string apiKey, [FromBody] SubmitData data) { if (!ModelState.IsValid) { return(BadRequest()); } string flag = data.Flag.Trim(); var user = await _userManager.Users.FirstOrDefaultAsync(x => x.ApiKey == apiKey); if (user == null) { return(StatusCode(403)); } var config = await _context.Configuration.FirstOrDefaultAsync(); if (config != null && config.IsFinished) { return(Json(new { Success = false, Error = "The competition is already over" })); } var challenge = await SharedFlagManager.GetChallByFlag(_context, flag, includeArchived : true); if (challenge == null) { return(Json(new { Success = false, Error = "Your flag is incorrect" })); } else if (challenge.State == 3) { return(Json(new { Success = false, Error = "You are trying to submit a flag for an archived challenge" })); } await _context.Entry(user).Reference(x => x.User).Query().Include(x => x.Team).LoadAsync(); bool isTeam = (user.User.Team != null); if (isTeam) { await _context.Entry(user.User.Team).Collection(x => x.Solves).Query().Include(x => x.Challenge).LoadAsync(); } else { await _context.Entry(user.User).Collection(x => x.Solves).Query().Include(x => x.Challenge).LoadAsync(); } if ((!isTeam && user.User.Solves.Select(x => x.Challenge).Contains(challenge)) || (isTeam && user.User.Team.Solves.Select(x => x.Challenge).Contains(challenge))) { return(Json(new { Success = false, Error = "You already solved that challenge" })); } if (isTeam) { user.User.Team.LastUpdated = DateTime.UtcNow; } else { user.User.LastUpdated = DateTime.UtcNow; } var solve = new Solve { User = user.User, Team = user.User.Team, Challenge = challenge, SolvedAt = DateTime.UtcNow, Announced = false }; await _context.Solves.AddAsync(solve); await _context.SaveChangesAsync(); return(Json(new { Success = true, Challenge = new { challenge.Id, challenge.Title } })); }
public void SubimtFlowAsync(SubmitData ApprovalData) { scFlow.SubimtFlowAsync(ApprovalData); }
/// <summary> /// 自选流程(对数据库操作、对服务操作) /// </summary> /// <param name="ApprovalData"></param> /// <param name="APPDataResult"></param> /// <param name="fd"></param> /// <returns></returns> public DataResult ApprovalFreeFlow(SubmitData ApprovalData, DataResult APPDataResult, List<FLOW_FLOWRECORDDETAIL_T> fd, ref FlowUser user) { // WorkflowRuntime workflowRuntime = null; WorkflowInstance instance = null; FLOW_FLOWRECORDDETAIL_T entity = new FLOW_FLOWRECORDDETAIL_T(); entity.FLOW_FLOWRECORDMASTER_T = new FLOW_FLOWRECORDMASTER_T(); UserInfo AppUser = new UserInfo(); //下一审核人 UserInfo AgentAppUser = new UserInfo(); //代理下一审核人 try { APPDataResult.RunTime += "---GetAppInfoStart:" + DateTime.Now.ToString(); List<FLOW_FLOWRECORDDETAIL_T> tmp = fd.Where(c => (c.EDITUSERID == ApprovalData.ApprovalUser.UserID || c.AGENTUSERID == ApprovalData.ApprovalUser.UserID) && c.FLAG == "0").ToList(); APPDataResult.RunTime += "---GetAppInfoEnd:" + DateTime.Now.ToString(); if (tmp == null) { APPDataResult.FlowResult = FlowResult.FAIL; APPDataResult.Err = "没有找到待审核信息"; user.TrackingMessage += "没有找到待审核信息\r\n"; // DataResult.UserInfo = null; return APPDataResult; } entity = tmp[0]; entity.EDITDATE = DateTime.Now; //审批时间 if (entity.AGENTUSERID == ApprovalData.ApprovalUser.UserID) { entity.AGENTEDITDATE = entity.EDITDATE; //代理审批时审批时间与代理审批时间到致 } //entity.EditUserID = AppUserId; entity.CONTENT = ApprovalData.ApprovalContent; entity.CHECKSTATE = ((int)ApprovalData.ApprovalResult).ToString(); try { workflowRuntime = SMTWorkFlowManage.CreateWorkFlowRuntime(true); Tracer.Debug("Formid=" + ApprovalData.FormID + ";开始 审核获取[自选流程]工作流实例ID=" + tmp[0].FLOW_FLOWRECORDMASTER_T.INSTANCEID); instance = SMTWorkFlowManage.GetWorkflowInstance(workflowRuntime, tmp[0].FLOW_FLOWRECORDMASTER_T.INSTANCEID);// workflowRuntime.GetWorkflow(new Guid(tmp[0].FLOW_FLOWRECORDMASTER_T.INSTANCEID)); Tracer.Debug("Formid=" + ApprovalData.FormID + ";完成 审核获取[自选流程]工作流实例ID=" + instance.InstanceId.ToString()); } catch { Tracer.Debug("Formid=" + ApprovalData.FormID + ";完成 审核获取[自选流程]工作流实例 出错,需要重新构造工作流程实例,原来的实例ID=" + tmp[0].FLOW_FLOWRECORDMASTER_T.INSTANCEID); workflowRuntime = SMTWorkFlowManage.CreateWorkFlowRuntime(true); instance = SMTWorkFlowManage.CreateFreeWorkflowInstance(workflowRuntime, "FreeFlow.xml");//自选流程使用 tmp[0].FLOW_FLOWRECORDMASTER_T.INSTANCEID = instance.InstanceId.ToString(); Tracer.Debug("Formid=" + ApprovalData.FormID + ";完成 重新构造[自选流程]工作流程实例,新的实例ID=" + tmp[0].FLOW_FLOWRECORDMASTER_T.INSTANCEID); } //不同意状态处理 if (ApprovalData.ApprovalResult == ApprovalResult.NoPass) { instance.Terminate("0"); user.TrackingMessage += "终审不通过,中止流程 FORMID=" + user.FormID; entity.FLOW_FLOWRECORDMASTER_T.CHECKSTATE = "3"; //设为终审不通过 entity.FLOW_FLOWRECORDMASTER_T.EDITUSERID = ApprovalData.ApprovalUser.UserID; entity.FLOW_FLOWRECORDMASTER_T.EDITUSERNAME = ApprovalData.ApprovalUser.UserName; entity.FLOW_FLOWRECORDMASTER_T.EDITDATE = DateTime.Now; UpdateFlowDetailRecord(entity, ApprovalData.NextStateCode, ApprovalData.NextApprovalUser.UserID); FLOW_FLOWRECORDMASTER_TDAL.Update(entity.FLOW_FLOWRECORDMASTER_T);//对数据库操作 APPDataResult.CheckState = "3";// user.TrackingMessage += "终审不通过,设置状态 CheckState=3;FORMID=" + user.FormID; APPDataResult.FlowResult = FlowResult.END; // DataResult.UserInfo = null; // return DataResult; } else { //下一审核人赋值 if (ApprovalData.NextApprovalUser != null && !string.IsNullOrEmpty(ApprovalData.NextApprovalUser.UserID)) { AppUser = ApprovalData.NextApprovalUser; } else { AppUser = ApprovalData.ApprovalUser;//如果没有下一审核人,下一审核人就是当前的审核人 } user.TrackingMessage += "选择了下一个审核人 AppUser="******";FORMID=" + user.FormID; AgentAppUser = GetAgentUserInfo(ApprovalData.ModelCode, AppUser.UserID); //查询是否启用了代理人(对服务操作) user.TrackingMessage += "查询是否启用了代理人 AppUser="******";FORMID=" + user.FormID; FlowDataType.FlowData FlowData = new FlowDataType.FlowData(); FlowData.xml = ApprovalData.XML; //workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) //{//完成工作流实例 // instance = null; //}; ApprovalData.NextStateCode = ApprovalData.NextStateCode == "EndFlow" ? "EndFlow" : "Approval"; APPDataResult.RunTime += "---DoFlowStart:" + DateTime.Now.ToString(); APPDataResult = DoFlowRecord(workflowRuntime, instance, entity, ApprovalData.NextStateCode, AppUser, AgentAppUser, ApprovalData.SubmitFlag, ApprovalData.FlowType, ref user); //处理流程数据 APPDataResult.AgentUserInfo = AgentAppUser; APPDataResult.RunTime += "---DoFlowEnd:" + DateTime.Now.ToString(); if (ApprovalData.NextStateCode == "EndFlow") { //ManualWorkflowSchedulerService scheduleService = workflowRuntime.GetService(typeof(ManualWorkflowSchedulerService)) as ManualWorkflowSchedulerService; //scheduleService.RunWorkflow(instance.InstanceId); //workflowRuntime.GetService<FlowEvent>().OnDoFlow(instance.InstanceId, FlowData); //激发流程引擎执行到一下流程 //scheduleService.RunWorkflow(instance.InstanceId); //System.Threading.Thread.Sleep(1000); } } return APPDataResult; } catch (Exception e) { Tracer.Debug("自选流程提交出错:FORMID=" + user.FormID + "\r\n 异常信息:" + e.ToString()); throw new Exception("自选流程提交出错,请联系管理员! \r\n FormID=" + user.FormID + ""); } finally { AppUser = null; AgentAppUser = null; entity = null; instance = null; SMTWorkFlowManage.ColseWorkFlowRuntime(workflowRuntime); } }
/// <summary> /// 自选流程审批(对服务操作) /// </summary> /// <param name="ApprovalData"></param> /// <param name="APPDataResult"></param> /// <returns></returns> public DataResult SubmitFreeFlow(SubmitData ApprovalData, DataResult APPDataResult, ref FlowUser user) { // WorkflowRuntime workflowRuntime = null; WorkflowInstance instance = null; FLOW_FLOWRECORDDETAIL_T entity = new FLOW_FLOWRECORDDETAIL_T(); entity.FLOW_FLOWRECORDMASTER_T = new FLOW_FLOWRECORDMASTER_T(); UserInfo AppUser = new UserInfo(); //下一审核人 UserInfo AgentAppUser = new UserInfo(); //代理下一审核人 try { entity.FLOW_FLOWRECORDMASTER_T.BUSINESSOBJECT = ApprovalData.XML; entity.FLOW_FLOWRECORDMASTER_T.FORMID = ApprovalData.FormID; entity.FLOW_FLOWRECORDMASTER_T.MODELCODE = ApprovalData.ModelCode; // entity.FLOWRECORDDETAILID = FlowGUID; entity.CREATECOMPANYID = ApprovalData.ApprovalUser.CompanyID; entity.CREATEDEPARTMENTID = ApprovalData.ApprovalUser.DepartmentID; entity.CREATEPOSTID = ApprovalData.ApprovalUser.PostID; entity.CREATEUSERID = ApprovalData.ApprovalUser.UserID; entity.CREATEUSERNAME = ApprovalData.ApprovalUser.UserName; entity.FLOW_FLOWRECORDMASTER_T.FLOWTYPE = ((int)ApprovalData.FlowType).ToString(); entity.FLOW_FLOWRECORDMASTER_T.FLOWSELECTTYPE = ((int)ApprovalData.FlowSelectType).ToString(); entity.FLOW_FLOWRECORDMASTER_T.FLOWCODE = "FreeFlow"; workflowRuntime = SMTWorkFlowManage.CreateWorkFlowRuntime(true); instance = SMTWorkFlowManage.CreateFreeWorkflowInstance(workflowRuntime, "FreeFlow.xml");//自选流程使用 user.TrackingMessage += "自选流程使用 AddFreeFlow(try)创建工作流实例完成 ID=" + instance.InstanceId; entity.FLOW_FLOWRECORDMASTER_T.INSTANCEID = instance.InstanceId.ToString(); //下一审核人赋值 AppUser = ApprovalData.NextApprovalUser; APPDataResult.RunTime += "---DoFlowStart:" + DateTime.Now.ToString(); ApprovalData.NextStateCode = "Approval"; AgentAppUser = GetAgentUserInfo(ApprovalData.ModelCode, AppUser.UserID); //查询是否启用了代理人(对服务操作) if (AgentAppUser != null) { Tracer.Debug("查询 启用了代理人 FormID=" + user.FormID + " UserID=" + AgentAppUser.UserID); } else { Tracer.Debug("查询 没有启用了代理人 FormID=" + user.FormID + " AgentAppUser=null"); } APPDataResult = DoFlowRecord(workflowRuntime, instance, entity, ApprovalData.NextStateCode, AppUser, AgentAppUser, ApprovalData.SubmitFlag, ApprovalData.FlowType, ref user); //处理流程数据 APPDataResult.AgentUserInfo = AgentAppUser; APPDataResult.RunTime += "---DoFlowEnd:" + DateTime.Now.ToString(); Tracer.Debug("Formid=" + ApprovalData.FormID + ";自选流程工作流实例ID:" + instance.InstanceId.ToString()); return APPDataResult; } catch (Exception e) { user.ErrorMsg += "自选流程审批出错 FormID=" + ApprovalData.FormID + ";异常信息:\r\n" + e.ToString() + "\r\n"; Tracer.Debug("自选流程审批出错 FormID=" + ApprovalData.FormID + ";跟踪信息:\r\n" + user.TrackingMessage + "异常信息:\r\n" + e.ToString()); throw new Exception("自选流程审批出错,请联系管理员! \r\n FormID=" + user.FormID + ""); } finally { AppUser = null; AgentAppUser = null; entity = null; instance = null; SMTWorkFlowManage.ColseWorkFlowRuntime(workflowRuntime); } }
private void Page_Load(object sender, EventArgs e) { string url = null; string str2 = null; XmlDocument xdoc = null; try { string str8; QuerySql sql; SqlToTree tree; str2 = base.Request.Params["key"]; if ((str2 == null) || (str2.Length == 0)) { str2 = base.Request.QueryString.ToString(); } if (str2 == "HelloWorld") { base.Response.ContentType = ("text/html;charset=UTF-8"); base.Response.Write("HelloWorld"); return; } Logger.debug("后台 key=" + str2); if (str2 == "logger") { string src = new StreamReader(base.Request.InputStream).ReadToEnd(); Logger.debug("前台:" + Escape.unescape(src)); return; } this.initConfigFileEbiao(base.Request); ConnectionConfig.initConfigFile(base.Request, this.Session); string str4 = null; string dsName = base.Request.Params["datasourceName"]; ConnectionConfig connConfig = null; connConfig = new ConnectionConfig(dsName); if (str2 == "DbToFile") { new DbStru(connConfig, null, base.Request).DbToFile(base.Response); return; } bool flag = ((((str2 == "loadFileStream") || (str2 == "getTempImage")) || ((str2 == "saveasExcelAll") || (str2 == "saveasExcel"))) || (((str2 == "saveasPdf") || (str2 == "run")) || ((str2 == "calcStr") || (str2 == "importExcel")))) || (str2 == "genHtmlFile"); RunReport report = new RunReport(base.Request, this.Session, connConfig.getDBOperator()); switch (str2) { case "loadFileStream": report.loadFileStream(base.Request, base.Response); return; case "getTempImage": report.getTempImage(base.Request, base.Response); return; case "saveasExcelAll": report.saveasExcel(base.Request, base.Response, false); return; case "saveasExcel": report.saveasExcel(base.Request, base.Response, true); return; case "saveasPdf": report.saveasPdf(base.Request, base.Response); return; case "run": url = report.run(base.Request); break; case "calcStr": url = report.calcStr(base.Request); break; case "importExcel": { string sDest = base.Request["excelfile"]; sDest = PathTool.getRealPath(base.Request, FileAction.basePath + sDest); string str7 = base.Request["spath"]; url = ImportExcel.FileConvert(PathTool.getRealPath(base.Request, FileAction.basePath + str7), sDest); break; } case "genHtmlFile": Logger.debug("开始成批运算报表:"); url = report.genHtmlFile(base.Request); break; } if (flag) { goto Label_0BE9; } if (((((str2 != "setSession") && (str2 != "getSession")) && ((str2 != "uploadFile") && (str2 != "readImage"))) && ((str2 != "readClob") && (str2 != "saveFile"))) && (str2 != "zkLoadMod")) { str4 = new StreamReader(base.Request.InputStream).ReadToEnd(); Logger.debug("XML串: " + str4); if ((str2 != "saveRunInfo") && (str2 != "readDomainRes")) { xdoc = new XmlDocument(); xdoc.LoadXml(str4); } } if (str2 != "loadingBatchAction") { goto Label_05FE; } StringBuilder builder = new StringBuilder("<root>"); int num = 0; Label_041D: if (num >= xdoc.DocumentElement.ChildNodes.Count) { goto Label_05E9; } XmlDocument document2 = new XmlDocument(); document2.LoadXml(xdoc.DocumentElement.ChildNodes.Item(num).OuterXml); try { dsName = xdoc.DocumentElement.ChildNodes.Item(num).Attributes["datasourceName"].Value; } catch (Exception) { } goto Label_0573; Label_048C: builder.Append(sql.fillcombox()); goto Label_055B; Label_04A0: if (str8 == "getDsns") { builder.Append(connConfig.getDsns()); } else if (str8 == "fc_select") { builder.Append(sql.fc_select()); } else if (str8 == "dataset_fields1") { builder.Append(sql.dataset_fields1()); } else if (str8 == "dataset_select") { builder.Append(sql.dataset_select()); } else if (str8 == "sqltotreedata") { builder.Append(tree.sqltotreedata()); } else if (str8 == "getTreeXml") { builder.Append(tree.getTreeXml()); } Label_055B: builder.Append("</root>"); num++; goto Label_041D; Label_0573: str8 = xdoc.DocumentElement.ChildNodes.Item(num).Attributes["key"].Value; connConfig = new ConnectionConfig(dsName); sql = new QuerySql(connConfig, document2, base.Request, this.Session); tree = new SqlToTree(connConfig, document2); builder.Append("<root>"); if (str8 != "fillcombox") { goto Label_04A0; } goto Label_048C; Label_05E9: builder.Append("</root>"); url = builder.ToString(); Label_05FE: if (str2 == "getDsns") { url = connConfig.getDsns(); } if (str2 == "isRunForm") { url = PermitForm.isRunForm(base.Request, this.Session, connConfig.getDBOperator()); } if (str2 == "isRunReport") { url = PermitReport.isRunReport(base.Request, this.Session, connConfig.getDBOperator()); } EbiaoFile file = new EbiaoFile(connConfig.getDBOperator(), xdoc, base.Request); if (str2 == "saveFile") { url = file.saveFile(); } if (str2 == "loadFile") { url = file.loadFile(); } if (str2 == "ToInDs") { url = file.ToInDs(); } QuerySql sql2 = new QuerySql(connConfig, xdoc, base.Request, this.Session); if (str2 == "fillcombox") { url = sql2.fillcombox(); } if (str2 == "sqltoxml") { url = sql2.sqltoxml(); } if (str2 == "SqlToField") { url = sql2.SqlToField(); } if (str2 == "fc_select") { url = sql2.fc_select(); } if (str2 == "dataset_fields1") { url = sql2.dataset_fields1(); } if (str2 == "dataset_select") { url = sql2.dataset_select(); } if (str2 == "doUploadInfo") { url = sql2.doUploadInfo(); } if (str2 == "crosstab") { url = sql2.crosstab(); } ExportData data = new ExportData(xdoc, base.Request, this.Session); if (str2 == "exportData") { data.run(); } ImportData data2 = new ImportData(base.Request, this.Session, connConfig); if (str2 == "importData") { url = data2.run(); } WebDesign design = new WebDesign(connConfig, xdoc, base.Request); if (str2 == "designdjsave") { url = design.designdjsave(); } if (str2 == "loadClob") { url = design.loadClob(); } cn.com.fcsoft.ajax.PathFile file2 = new cn.com.fcsoft.ajax.PathFile(xdoc); if (str2 == "GetUrl") { url = file2.GetUrl(base.Request); } DbStru stru2 = new DbStru(connConfig, xdoc, base.Request); if (str2 == "GetAllTables") { url = stru2.GetAllTables(); } if (str2 == "GetFieldName") { url = stru2.GetFieldName(); } if (str2 == "setDbStru") { url = stru2.setDbStru(); } SubmitData data3 = new SubmitData(connConfig, xdoc, base.Request, this.Session); if (str2 == "doSaveData") { url = data3.doSaveData(); } FileAction action = new FileAction(xdoc, base.Request); if (str2 == "readdesignhtml") { url = action.readdesignhtml(); } if (str2 == "savedesignhtml") { url = action.savedesignhtml(); } if (str2 == "genDjHtmlFile") { url = action.genDjHtmlFile(); } if (str2 == "GetFileContent") { url = action.GetFileContent(); } if (str2 == "DelUploadFile") { url = action.DelUploadFile(); } if (str2 == "uploadFile") { url = action.uploadFile(); } if (str2 == "fileExist") { url = action.fileExist(); } MaxNo no = new MaxNo(connConfig, xdoc, this.Session); if (str2 == "getMaxIntNo") { url = no.getMaxIntNo(); } if (str2 == "getRecnum") { url = no.getRecnum(); } if (str2 == "getAutoNum") { url = no.getAutoNum(); } SqlToTree tree2 = new SqlToTree(connConfig, xdoc); if (str2 == "sqltotreedata") { url = tree2.sqltotreedata(); } if (str2 == "getTreeXml") { url = tree2.getTreeXml(); } DoSession session = new DoSession(base.Request, this.Session); if (str2 == "setSession") { url = session.setSession(); } if (str2 == "getSession") { url = session.getSession(); } cn.com.fcsoft.ajax.ImageField field = new cn.com.fcsoft.ajax.ImageField(connConfig, base.Request); if (str2 == "readImage") { field.readImage(base.Response); } if (str2 == "writeImage") { url = field.writeImage(); } ClobField field2 = new ClobField(connConfig, base.Request); if (str2 == "readClob") { url = field2.readClob(); } if (str2 == "writeClob") { url = field2.writeClob(); } EformRole role = new EformRole { session = this.Session, request = base.Request, xdoc = xdoc, oDb = connConfig.getDBOperator() }; if (str2 == "roleSet") { url = role.roleSet(); } if (str2 == "roleCheckEmployee") { url = role.roleCheckEmployee(); } if (str2 == "getAllPubParamValue") { url = role.getAllPubParamValue(); } if (str2 == "batchExecSql") { if (EformRole.getPubParamValue(this.Session, "用户.ID") != "systemadmin") { throw new Exception("只有用户 admin 才有权做此操作!"); } string str10 = xdoc.DocumentElement.ChildNodes.Item(0).InnerText; DBOperator @operator = null; IDbCommand command = null; IDbTransaction transaction = null; try { @operator = connConfig.getDBOperator(); @operator.Open(); command = @operator.Connection.CreateCommand(); command.Connection = (@operator.Connection); transaction = @operator.Connection.BeginTransaction(); command.Transaction = (transaction); command.CommandText = (str10); command.ExecuteNonQuery(); transaction.Commit(); command.Dispose(); @operator.Close(); } catch (Exception exception) { try { transaction.Rollback(); } catch (Exception) { } throw exception; } finally { try { @operator.Close(); } catch (Exception) { } } } } catch (Exception exception2) { Logger.error(exception2.StackTrace); url = JSON.errInfoToJson(exception2); } Label_0BE9: if ((url != null) || (str2 != "readImage")) { /* * Bill.aspx?key=run&spath=/rpt/s_simplelist.htm&tempfilepath=/tmp/file/&pageno=1&cacheid=&e_paramid= * ebrun.htm?name=s_simplelist */ base.Response.ContentType = ("text/html;charset=UTF-8"); File.WriteAllText(@"E:\DB\PlatForm\FlexCell.NET\ebiao\bin\cleaned\src\Web\" + str2 + "_test.htm", url); base.Response.Write(url); } }
/// <summary> /// 流程触发 /// </summary> /// <param name="strFlow">流程数据</param> /// <param name="strBusiness">业务数据</param> /// <returns></returns> public bool SaveFlowTriggerData( SubmitData submitData, string strFlow, string strBusiness, ref FlowUser sUser, ref string ErroMessage) { string tmpFlow = ""; string tmpEngline = ""; T_WF_DOTASK entity = new T_WF_DOTASK(); string strEntityType = string.Empty;//EntityType (表名) string strEntityKey = string.Empty;//EntityKey (主键) string IsTask = "1";//是否任务 #region 获取 SystemCode string SystemCode = ""; //Byte[] bFlow = System.Text.UTF8Encoding.UTF8.GetBytes(strFlow); //XElement xeFlow = XElement.Load(System.Xml.XmlReader.Create(new MemoryStream(bFlow))); //var strReturn = from item in xeFlow.Descendants("SystemCode") // select item; //if (strReturn.FirstOrDefault() != null) //{ // SystemCode=strReturn.FirstOrDefault().Value.Replace("\"", ""); //} SystemCode = string.Empty; string modeCode=string.Empty; string modeName=string.Empty; string msgOpen= string.Empty; SetFileFromBusinessXml(strBusiness, ref SystemCode, ref modeCode, ref modeName,ref strEntityKey, ref msgOpen); strEntityType = modeCode; entity.SYSTEMCODE = SystemCode; #endregion try { try { //消息解析 //Tracer.Debug("strFlow:\r\n" + strFlow); //Tracer.Debug("strBusiness:\r\n" + strBusiness); string xmlred = " 开始消息解析XML\r\n"; xmlred += "FlowXML=" + strFlow+"\r\n"; xmlred += "AppXML=" + strBusiness + "\r\n"; #region 提莫科技新增 #region strFlow StringReader strRdr = new StringReader(strFlow); XmlReader xr = XmlReader.Create(strRdr); StringBuilder _ConbinString = new StringBuilder(); while (xr.Read()) { if (xr.NodeType == XmlNodeType.Element) { string elementName = xr.Name; if (elementName == "Message") { while (xr.Read()) { string type = xr.NodeType.ToString(); #region if (xr["Name"] != null) { _ConbinString.Append(xr["Name"] + "|" + xr["DataValue"] + "Ё"); tmpFlow += xr["Name"] + "|" + xr["DataValue"] + "Ё\r\n"; if (xr["Name"].ToUpper() == "COMPANYID") { entity.COMPANYID = xr["DataValue"]; } if (xr["Name"].ToUpper() == "MODELCODE") { entity.MODELCODE = xr["DataValue"]; } if (xr["Name"].ToUpper() == "MODELNAME") { entity.MODELNAME = xr["DataValue"]; } if (xr["Name"].ToUpper() == "FORMID") { entity.ORDERID = xr["DataValue"]; } if (xr["Name"].ToUpper() == "CHECKSTATE") { entity.ORDERSTATUS = int.Parse(xr["DataValue"]); } if (xr["Name"].ToUpper() == "APPUSERID") { entity.RECEIVEUSERID = xr["DataValue"]; } if (xr["Name"].ToUpper() == "ISTASK") { IsTask = xr["DataValue"]; } if (xr["Name"].ToUpper() == "OUTTIME") { if (!string.IsNullOrEmpty(xr["DataValue"])) { entity.BEFOREPROCESSDATE = DateTime.Now.AddMinutes(int.Parse(xr["DataValue"])); } } } #endregion } } } } entity.FLOWXML = strFlow; entity.APPXML = strBusiness; #endregion #region strBusiness if (!string.IsNullOrEmpty(strBusiness)) { StringReader rd = new StringReader(strBusiness); XmlReader xdr = XmlReader.Create(rd); StringBuilder BOObject = new StringBuilder(); while (xdr.Read()) { if (xdr.NodeType == XmlNodeType.Element) { string elementName = xdr.Name; if (elementName == "Object") { while (xdr.Read()) { if (xdr.Name == "Attribute") { if (xdr["Name"] != null) { BOObject.Append(xdr["Name"] + "|" + xdr["DataValue"] + "Г" + (xdr["DataText"] != null ? xdr["DataText"] : xdr["DataValue"]) + "Ё"); tmpEngline += xdr["Name"] + "|" + xdr["DataValue"] + "Г" + (xdr["DataText"] != null ? xdr["DataText"] : xdr["DataValue"]) + "Ё\r\n"; #region if (xdr["Name"].ToUpper() == "OWNERID") { entity.ORDERUSERID = xdr["DataValue"]; } if (xdr["Name"].ToUpper() == "OWNERNAME") { entity.ORDERUSERNAME = xdr["DataValue"]; } if (xdr["Name"].ToUpper() == "CREATEUSERID") { //有些特殊的模块需要改变接收人 if (CheckModelName(entity.MODELCODE) && entity.ORDERSTATUS == 2) { entity.RECEIVEUSERID = xdr["DataValue"]; } } #endregion } } } } } } entity.APPFIELDVALUE = _ConbinString.ToString() + BOObject.ToString().TrimEnd('Ё'); } #endregion #endregion xmlred+="FormID=" + entity.ORDERID+" 结束消息解析XML"; Tracer.Debug("FormID=" + entity.ORDERID + xmlred); } catch (Exception ex) { sUser.ErrorMsg += "命名空间:SMT.FlowWFService.EnginFlowBLL 类方法SaveFlowTriggerData()解析XML出错!FORMID=" + sUser.FormID + " 异常信息:" + ex.ToString() + "\r\n"; ErroMessage = "命名空间:SMT.FlowWFService.EnginFlowBLL 类方法SaveFlowTriggerData()解析XML出错"; throw new Exception("命名空间:SMT.FlowWFService.EnginFlowBLL 类方法SaveFlowTriggerData()解析XML出错" + ex.Message); } if (string.IsNullOrEmpty(entity.SYSTEMCODE)) { entity.SYSTEMCODE = SystemCode; } //思路: //1、先检验流程的默认消息 //2、调用业务系统更新 //3、自动发起流程 bool IsExecute = SendDotask(submitData.SumbitUserName,modeName,msgOpen, entity, IsTask,ref sUser, ref ErroMessage); if (IsExecute) { bool isOK = CallBusinessSystem(submitData,entity, strEntityKey, ref ErroMessage);//调用业务系统 if (!isOK) { throw new Exception(ErroMessage);//把业务系统的错误信息给客户端 } AutoCallFlow( dal, entity, dtFlowTrigger, sourceTable, ref sUser, strAppFieldValue, ref ErroMessage); } else { Tracer.Debug("没有默认消息,也调用业务系统更新(没有待办任务产生) FORMID=" + sUser.FormID + " 异常信息:" + ErroMessage); CallBusinessSystem(submitData,entity, strEntityKey, ref ErroMessage);//调用业务系统 } return IsExecute; } catch (Exception ex) { sUser.ErrorMsg += "命名空间:SMT.FlowWFService.EnginFlowBLL 类方法SaveFlowTriggerData()!FORMID=" + sUser.FormID + " 异常信息:" + ex.ToString() + "\r\n"; throw new Exception("命名空间:SMT.FlowWFService.EnginFlowBLL 类方法SaveFlowTriggerData()" + ex.Message); } }
public KPIScoring() { // 1s 冉龙军 AuditEntity = new Flow_FlowRecord_T(); AuditSubmitData = new SubmitData(); // 1e }
/// <summary> /// 检查是否已提交流程(对数据库操作) /// </summary> /// <param name="ApprovalData"></param> /// <param name="APPDataResult"></param> /// <returns></returns> public CheckResult CheckFlowIsApproved( SubmitData ApprovalData, DataResult APPDataResult) { CheckResult CheckFlowResult = new CheckResult(); try { CheckFlowResult.APPDataResult = APPDataResult; APPDataResult.RunTime += "---GetFlowInfoStart:" + DateTime.Now.ToString(); List<FlowType> FlowTypeList = new List<FlowWFService.FlowType>(); FlowTypeList.Add(ApprovalData.FlowType); List<FLOW_FLOWRECORDDETAIL_T> fd = FlowBLL.GetFlowInfo( ApprovalData.FormID, "", "", "0", ApprovalData.ModelCode, "", "", FlowTypeList);//对数据库操作 CheckFlowResult.fd = fd; APPDataResult.RunTime += "---GetFlowInfoEnd:" + DateTime.Now.ToString(); if (ApprovalData.SubmitFlag == SubmitFlag.New) { #region if (fd != null && fd.Count > 0) { CheckFlowResult.APPDataResult.FlowResult = FlowResult.SUCCESS; CheckFlowResult.Flag = 0; UserInfo AppUser = new UserInfo();//下一审核人 AppUser.UserID = fd[0].EDITUSERID; AppUser.UserName = fd[0].EDITUSERNAME; AppUser.CompanyID = fd[0].EDITCOMPANYID; AppUser.DepartmentID = fd[0].EDITDEPARTMENTID; AppUser.PostID = fd[0].EDITPOSTID; CheckFlowResult.APPDataResult.UserInfo.Add(AppUser); CheckFlowResult.APPDataResult.AppState = fd[0].STATECODE; return CheckFlowResult; } #endregion } else if (ApprovalData.SubmitFlag == SubmitFlag.Cancel) { } else { if (fd == null || fd.Count == 0) { CheckFlowResult.APPDataResult.FlowResult = FlowResult.FAIL; CheckFlowResult.APPDataResult.Err = "没有待审批节点,请检查流程是否已经结束或流程有异常!"; CheckFlowResult.Flag = 0; return CheckFlowResult; } else { if (fd.Where(c => c.EDITUSERID == ApprovalData.ApprovalUser.UserID || c.AGENTUSERID == ApprovalData.ApprovalUser.UserID).ToList().Count == 0) { APPDataResult.FlowResult = FlowResult.SUCCESS; CheckFlowResult.Flag = 0; UserInfo AppUser = new UserInfo(); AppUser.UserID = fd[0].EDITUSERID; AppUser.UserName = fd[0].EDITUSERNAME; AppUser.CompanyID = fd[0].EDITCOMPANYID; AppUser.DepartmentID = fd[0].EDITDEPARTMENTID; AppUser.PostID = fd[0].EDITPOSTID; CheckFlowResult.APPDataResult.UserInfo.Add(AppUser); CheckFlowResult.APPDataResult.AppState = fd[0].STATECODE; return CheckFlowResult; } } } CheckFlowResult.Flag = 1; return CheckFlowResult; } catch (Exception e) { throw new Exception(e.Message); } finally { CheckFlowResult = null; } }
public string GetFlowDefine(OracleConnection con, SubmitData ApprovalData) { LogHelper.WriteLog("GetFlowDefine获取流程信息 ModelCode=" + ApprovalData.ModelCode + " FormID=" + ApprovalData.FormID); FlowBLL Flow = new FlowBLL(); return Flow.GetFlowDefine(con, ApprovalData); }
/// <summary> /// 获取填充xml /// </summary> /// <param name="obj">要填充的实体</param> /// <param name="modelCode">实体名称</param> /// <returns>返回xml</returns> public XElement GetFullXml(IEntityBase obj, string modelCode, SubmitData submitData) { XElement element = null; Metadata meta = new Metadata(); string modelType = string.Empty; if (!string.IsNullOrEmpty(modelCode)) { modelType = modelCode.ToUpper(); } else { modelType = obj.GetType().Name; } List <AutoDictionary> listAutoDic = new List <AutoDictionary>(); string strMainKey = string.Empty; string strMainValue = string.Empty; CommonBLL bll = new CommonBLL(""); #region 处理元数据 #region " T_HR_EMPLOYEEOVERTIMERECORD " if (modelType.ToUpper() == Constants.T_HR_EMPLOYEEOVERTIMERECORD) { strMainKey = "OVERTIMERECORDID"; strMainValue = string.Empty; Type objtype = obj.GetType(); PropertyInfo[] propinfos = objtype.GetProperties(); foreach (PropertyInfo propinfo in propinfos) { string keyValue = propinfo.GetValue(obj, null) != null?propinfo.GetValue(obj, null).ToString() : string.Empty; if (propinfo.Name == strMainKey) { strMainValue = keyValue; } } if (obj is T_HR_EMPLOYEEOVERTIMERECORD) { T_HR_EMPLOYEEOVERTIMERECORD entity = obj as T_HR_EMPLOYEEOVERTIMERECORD; if (submitData.SubmitFlag != SubmitFlag.New && submitData.ApprovalResult == ApprovalResult.NoPass) { var overtimeDetail = bll.Query <T_HR_EMPLOYEEOVERTIMERECORD>().Where(w => w.OVERTIMERECORDID == strMainValue).ToList(); //Dictionary<object, object> detail = new Dictionary<object, object>(); //detail.Add(overtimeDetail, null);//normItemConfigList 是2级从表列表 Dictionary <object, object> detail = new Dictionary <object, object>(); detail.Add(entity.T_HR_EMPLOYEEOVERTIMEDETAILRD, null); listAutoDic.Add(new AutoDictionary { TableName = modelType, KeyValue = "CREATEUSERID", DataValue = submitData.ApprovalUser.UserID, DataText = submitData.ApprovalUser.UserName, Name = "CREATEUSERID" }); listAutoDic.Add(new AutoDictionary { TableName = modelType, KeyValue = "CREATEPOSTID", DataValue = submitData.ApprovalUser.PostID, DataText = submitData.ApprovalUser.PostName, Name = "CREATEPOSTID" }); listAutoDic.Add(new AutoDictionary { TableName = modelType, KeyValue = "CREATEDEPARTMENTID", DataValue = submitData.ApprovalUser.DepartmentID, DataText = submitData.ApprovalUser.DepartmentName, Name = "CREATEDEPARTMENTID" }); listAutoDic.Add(new AutoDictionary { TableName = modelType, KeyValue = "CREATECOMPANYID", DataValue = submitData.ApprovalUser.CompanyID, DataText = submitData.ApprovalUser.CompanyName, Name = "CREATECOMPANYID" }); } } } #endregion #endregion //auditInfo.ObjXml = metaData.TableToXml(yearNormDraft, null, auditInfo.SystemCode, auditInfo.ModelCode, listAutoDic);// 将Detail设置成了null string xml = meta.TableToXml(obj, null, "HR", modelType, listAutoDic); element = XElement.Parse(xml); //SMT.Portal.Common.MetaData metaData = new MetaData(); return(element); }
/// <summary> /// 发送审批消息(调用引擎服务) /// </summary> /// <param name="submitData"></param> /// <param name="dataResult"></param> /// <param name="sUser"></param> /// <param name="CheckFlowResult"></param> /// <param name="Flowbill"></param> /// <param name="AppCompanyID">申请公司</param> /// <param name="MessageUserID">申请人ID</param> /// <param name="MessageUserName">申请人名</param> private void SubmitEngineService(SubmitData submitData, DataResult dataResult, ref FlowUser sUser, CheckResult CheckFlowResult, FlowBLL Flowbill, string AppCompanyID, string MessageUserID, string MessageUserName, ref string ErroMessage) { bool bOK = true; #region 发送审批消息(调用引擎服务) try { if (dataResult.FlowResult == FlowResult.SUCCESS || dataResult.FlowResult == FlowResult.END) { #region 调用引擎服务(调用本地服DLL) string IsTask = dataResult.FlowResult == FlowResult.SUCCESS ? "1" : "0"; MessageData tmpMessageData = null; StringBuilder FlowResultXml = null; #region switch (submitData.SubmitFlag) { case SubmitFlag.New: #region 新增 if (dataResult.IsCountersign) { #region 会签 if (dataResult.FlowResult == FlowResult.SUCCESS) { List<string> listUserID = new List<string>(); List<string> listUserName = new List<string>(); if (dataResult.DictCounterUser != null && dataResult.DictCounterUser.Keys.Count > 0) { dataResult.DictCounterUser.Values.ToList().ForEach(users => { users.ForEach(user => { listUserID.Add(user.UserID); listUserName.Add(user.UserName); }); }); MessageUserID = string.Join("|", listUserID); MessageUserName = string.Join("|", listUserName); } } if (dataResult.DictAgentUserInfo != null && dataResult.DictAgentUserInfo.Count > 0) { dataResult.DictAgentUserInfo.Values.ToList().ForEach(user => { MessageUserID += "|" + user.UserID.Trim(); MessageUserName += "|" + user.UserName.Trim(); }); } #endregion } else { #region 非会签(多个人时,只取其中一个) if (dataResult.FlowResult == FlowResult.SUCCESS) { MessageUserID = dataResult.UserInfo[0].UserID.Trim(); MessageUserName = dataResult.UserInfo[0].UserName.Trim(); } if (dataResult.AgentUserInfo != null) { MessageUserID += "|" + dataResult.AgentUserInfo.UserID.Trim(); MessageUserName += "|" + dataResult.AgentUserInfo.UserName.Trim(); } #endregion } tmpMessageData = new MessageData("Flow", sUser.SysCode, AppCompanyID, submitData.ModelCode, sUser.ModelName, submitData.FormID, dataResult.AppState, dataResult.CheckState, IsTask, MessageUserID, MessageUserName, dataResult.KPITime); FlowResultXml = Flowbill.BuildMessageData(tmpMessageData); sUser.TrackingMessage += "流程引擎的XML数据新增: FormID=" + submitData.FormID + ";SysCode=" + sUser.SysCode + " ModelName=" + sUser.ModelName + "\r\n FlowResultXml= \r\n" + FlowResultXml + "\r\n submitData.XML= \r\n" + submitData.XML; bOK = einginBll.SaveFlowTriggerData(submitData, FlowResultXml.ToString(), submitData.XML, ref sUser, ref ErroMessage); sUser.TrackingMessage += "触发流程返回的结果 bOK=" + bOK.ToString() + "\r\n"; sUser.TrackingMessage += "结束新增 FormID=" + submitData.FormID + " FlowEngine.SaveFlowTriggerData\r\n"; if (!bOK) { Tracer.Debug("触发流程返回的结果 bOK=" + bOK.ToString() + " FormID=" + submitData.FormID + "\r\nFlowResultXml=" + FlowResultXml.ToString() + "\r\n submitDataXML=" + submitData.XML); } #endregion break; case SubmitFlag.Cancel: #region 撤单 tmpMessageData = new MessageData("Flow", sUser.SysCode, AppCompanyID, submitData.ModelCode, sUser.ModelName, submitData.FormID, dataResult.AppState, dataResult.CheckState, IsTask, MessageUserID, MessageUserName, dataResult.KPITime); FlowResultXml = Flowbill.BuildMessageData(tmpMessageData); //bool bCancel = FlowEngine.FlowCancel(FlowResultXml.ToString(), submitData.XML); sUser.TrackingMessage += "流程引擎的XML数据新增: FormID=" + submitData.FormID + ";SysCode=" + sUser.SysCode + " ModelName=" + sUser.ModelName + "\r\n FlowResultXml= \r\n" + FlowResultXml + "\r\n submitData.XML= \r\n" + submitData.XML; bool bCancel = einginBll.FlowCancel(submitData, FlowResultXml.ToString(), submitData.XML, ref ErroMessage); if (!bCancel) { Tracer.Debug("触发流程返回的结果 bCancel=" + bCancel.ToString() + " FormID=" + submitData.FormID + "\r\nFlowResultXml=" + FlowResultXml.ToString() + "\r\n submitDataXML=" + submitData.XML); } #endregion break; case SubmitFlag.Approval: #region 审核 //FlowEngine.TaskMsgClose(modelinfo.SysCode, submitData.FormID, submitData.ApprovalUser.UserID); einginBll.TaskMsgClose(sUser.SysCode, submitData.FormID, submitData.ApprovalUser.UserID); if (dataResult.CurrentIsCountersign) { #region 会签 if (submitData.ApprovalResult == ApprovalResult.NoPass) { #region 审核不通过 List<string> listMessageUserID = new List<string>(); CheckFlowResult.fd.Where(detail => detail.EDITUSERID != submitData.ApprovalUser.UserID).ToList().ForEach(item => { listMessageUserID.Add(item.EDITUSERID); if (!string.IsNullOrEmpty(item.AGENTUSERID)) { listMessageUserID.Add(item.AGENTUSERID); } }); if (listMessageUserID.Count > 0) { string messageUserID = string.Join(",", listMessageUserID); //FlowEngine.TaskMsgClose(modelinfo.SysCode, submitData.FormID, messageUserID); einginBll.TaskMsgClose(sUser.SysCode, submitData.FormID, messageUserID); } tmpMessageData = new MessageData("Flow", sUser.SysCode, AppCompanyID, submitData.ModelCode, sUser.ModelName, submitData.FormID, dataResult.AppState, dataResult.CheckState, IsTask, MessageUserID, MessageUserName, dataResult.KPITime); FlowResultXml = Flowbill.BuildMessageData(tmpMessageData); //bOK = FlowEngine.SaveFlowTriggerData(FlowResultXml.ToString(), submitData.XML); Tracer.Debug("开始审核FlowEngine.SaveFlowTriggerData FormID=" + submitData.FormID + ""); Tracer.Debug("流程引擎的XML数据 审核: FormID=" + submitData.FormID + ";SysCode=" + sUser.SysCode + " ModelName=" + sUser.ModelName + "\r\n FlowResultXml= \r\n" + FlowResultXml + "\r\n submitData.XML= \r\n" + submitData.XML); bOK = einginBll.SaveFlowTriggerData(submitData, FlowResultXml.ToString(), submitData.XML, ref sUser, ref ErroMessage); Tracer.Debug("bOK=" + bOK.ToString()); Tracer.Debug("结束审核FlowEngine.SaveFlowTriggerData FormID=" + submitData.FormID + ""); if (!bOK) { Tracer.Debug("FlowEngineService:FormID=" + submitData.FormID + "\r\nFlowResultXml=" + FlowResultXml.ToString() + "\r\n submitDataXML=" + submitData.XML); } #endregion } else if (dataResult.IsGotoNextState) { #region 到下一状态 List<string> listMessageUserID = new List<string>(); CheckFlowResult.fd.Where(detail => detail.EDITUSERID != submitData.ApprovalUser.UserID).ToList().ForEach(item => { listMessageUserID.Add(item.EDITUSERID); if (!string.IsNullOrEmpty(item.AGENTUSERID)) { listMessageUserID.Add(item.AGENTUSERID); } }); if (listMessageUserID.Count > 0) { string messageUserID = string.Join(",", listMessageUserID); // FlowEngine.TaskMsgClose(modelinfo.SysCode, submitData.FormID, messageUserID); einginBll.TaskMsgClose(sUser.SysCode, submitData.FormID, messageUserID); } if (dataResult.IsCountersign) { #region if (dataResult.FlowResult == FlowResult.SUCCESS) { List<string> listUserID = new List<string>(); List<string> listUserName = new List<string>(); if (dataResult.DictCounterUser != null && dataResult.DictCounterUser.Keys.Count > 0) { dataResult.DictCounterUser.Values.ToList().ForEach(users => { users.ForEach(user => { listUserID.Add(user.UserID); listUserName.Add(user.UserName); }); }); MessageUserID = string.Join("|", listUserID); MessageUserName = string.Join("|", listUserName); } } if (dataResult.DictAgentUserInfo != null && dataResult.DictAgentUserInfo.Count > 0) { dataResult.DictAgentUserInfo.Values.ToList().ForEach(user => { MessageUserID += "|" + user.UserID.Trim(); MessageUserName += "|" + user.UserName.Trim(); }); } #endregion } else { #region if (dataResult.FlowResult == FlowResult.SUCCESS) { MessageUserID = dataResult.UserInfo[0].UserID.Trim(); MessageUserName = dataResult.UserInfo[0].UserName.Trim(); } if (dataResult.AgentUserInfo != null) { MessageUserID += "|" + dataResult.AgentUserInfo.UserID.Trim(); MessageUserName += "|" + dataResult.AgentUserInfo.UserName.Trim(); } #endregion } tmpMessageData = new MessageData("Flow", sUser.SysCode, AppCompanyID, submitData.ModelCode, sUser.ModelName, submitData.FormID, dataResult.AppState, dataResult.CheckState, IsTask, MessageUserID, MessageUserName, dataResult.KPITime); FlowResultXml = Flowbill.BuildMessageData(tmpMessageData); bOK = einginBll.SaveFlowTriggerData(submitData, FlowResultXml.ToString(), submitData.XML, ref sUser, ref ErroMessage); if (!bOK) { Tracer.Debug("FlowEngineService:FormID=" + submitData.FormID + "\r\nFlowResultXml=" + FlowResultXml.ToString() + "\r\n submitDataXML=" + submitData.XML); } #endregion } #endregion } else { #region 非会签 if (dataResult.IsCountersign) { #region if (dataResult.FlowResult == FlowResult.SUCCESS) { List<string> listUserID = new List<string>(); List<string> listUserName = new List<string>(); if (dataResult.DictCounterUser != null && dataResult.DictCounterUser.Keys.Count > 0) { dataResult.DictCounterUser.Values.ToList().ForEach(users => { users.ForEach(user => { listUserID.Add(user.UserID); listUserName.Add(user.UserName); }); }); MessageUserID = string.Join("|", listUserID); MessageUserName = string.Join("|", listUserName); } } if (dataResult.DictAgentUserInfo != null && dataResult.DictAgentUserInfo.Count > 0) { dataResult.DictAgentUserInfo.Values.ToList().ForEach(user => { MessageUserID += "|" + user.UserID.Trim(); MessageUserName += "|" + user.UserName.Trim(); }); } #endregion } else { #region if (dataResult.FlowResult == FlowResult.SUCCESS) { MessageUserID = dataResult.UserInfo[0].UserID.Trim(); MessageUserName = dataResult.UserInfo[0].UserName.Trim(); } if (dataResult.AgentUserInfo != null) { MessageUserID += "|" + dataResult.AgentUserInfo.UserID.Trim(); MessageUserName += "|" + dataResult.AgentUserInfo.UserName.Trim(); } #endregion } tmpMessageData = new MessageData("Flow", sUser.SysCode, AppCompanyID, submitData.ModelCode, sUser.ModelName, submitData.FormID, dataResult.AppState, dataResult.CheckState, IsTask, MessageUserID, MessageUserName, dataResult.KPITime); FlowResultXml = Flowbill.BuildMessageData(tmpMessageData); sUser.TrackingMessage += "流程引擎的XML数据新增: FormID=" + submitData.FormID + ";SysCode=" + sUser.SysCode + " ModelName=" + sUser.ModelName + "\r\n FlowResultXml= \r\n" + FlowResultXml + "\r\n submitData.XML= \r\n" + submitData.XML; bOK = einginBll.SaveFlowTriggerData(submitData, FlowResultXml.ToString(), submitData.XML, ref sUser, ref ErroMessage); if (!bOK) { Tracer.Debug("触发流程返回的结果 bOK=" + bOK.ToString() + " FormID=" + submitData.FormID + "\r\nFlowResultXml=" + FlowResultXml.ToString() + "\r\n submitDataXML=" + submitData.XML); } #endregion } #endregion break; } #endregion #endregion 调用引擎服务(调用本地服DLL) } } catch (Exception ex) { //Tracer.Debug("FlowEngineService: -" + "\n\nError:" + ex.InnerException + ex.Message); Tracer.Debug("发送审批消息FORMID=" + sUser.FormID + " 异常信息:" + ex.ToString() + "\r\n"); if (string.IsNullOrEmpty(ErroMessage)) { throw new Exception("发送审批消息失败,请联系管理员!"); } else { throw new Exception(ErroMessage); } } #endregion }
/// <summary> /// 新增流程(对数据库操作) /// </summary> /// <param name="ApprovalData"></param> /// <param name="APPDataResult"></param> /// <returns></returns> public DataResult AddFlow2(OracleConnection con, SubmitData submitData, DataResult dataResult, ref FlowUser user) { // WorkflowRuntime workflowRuntime = null; WorkflowInstance instance = null; try { #region 获取定义的流程 user.TrackingMessage += "获取定义的流程.GetFlowByModelName:submitData.ApprovalUser.DepartmentID=" + submitData.ApprovalUser.DepartmentID + ";OrgType='" + ((int)submitData.FlowType).ToString() + "'"; List<FLOW_MODELFLOWRELATION_T> MODELFLOWRELATION = GetFlowByModelName(con, submitData.ApprovalUser.CompanyID, submitData.ApprovalUser.DepartmentID, submitData.ModelCode, ((int)submitData.FlowType).ToString(), ref user);//对数据库操作 if (MODELFLOWRELATION == null || MODELFLOWRELATION.Count == 0) { dataResult.FlowResult = FlowResult.FAIL; dataResult.Err = "没有找到可使用的流程"; if (submitData.ApprovalUser.CompanyID == user.CompayID && submitData.ApprovalUser.DepartmentID == user.DepartmentID) { dataResult.Err = "没有找到公司[ " + user.CompayName + " ]下部门[ " + user.DepartmentName + " ]的匹配流程返回"; } else { dataResult.Err = "没有找到公司[ " + user.CompayName + " ]的可使用匹配流程"; } return dataResult; } #endregion FLOW_MODELFLOWRELATION_T flowRelation = MODELFLOWRELATION[0];//只取其中一条流程 FLOW_FLOWDEFINE_T flowDefine = flowRelation.FLOW_FLOWDEFINE_T; user.FlowCode = flowDefine.FLOWCODE;//流程代码 user.FlowName = flowDefine.DESCRIPTION;//流程名称 if (flowDefine.RULES != null && flowDefine.RULES.Trim() == "") { flowDefine.RULES = null; } workflowRuntime = SMTWorkFlowManage.CreateWorkFlowRuntime(true); instance = SMTWorkFlowManage.CreateWorkflowInstance(workflowRuntime, flowDefine.XOML, flowDefine.RULES); LogHelper.WriteLog("新增 FormID=" + user.FormID + " 流程名称=" + flowDefine.DESCRIPTION + "("+flowDefine.FLOWCODE+") 提交人=" + user.UserName + " 公司名称=" + user.CompayName + " 部门名称=" + user.DepartmentName + " 岗位名称=" + user.PostName + " WorkflowInstance ID=" + instance.InstanceId.ToString()); workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) { instance = null; }; #region master赋值 FLOW_FLOWRECORDMASTER_T master = new FLOW_FLOWRECORDMASTER_T(); master.INSTANCEID = instance.InstanceId.ToString(); master.BUSINESSOBJECT = submitData.XML; master.FORMID = submitData.FormID; master.MODELCODE = submitData.ModelCode; master.ACTIVEROLE = Utility.GetActiveRlue(flowDefine.LAYOUT); master.FLOWTYPE = ((int)submitData.FlowType).ToString(); master.FLOWSELECTTYPE = ((int)submitData.FlowSelectType).ToString(); master.FLOWCODE = flowDefine.FLOWCODE; #endregion #region 获取下一状态数据 user.TrackingMessage += "FORMID=" + user.FormID + "获取下一状态数据(开始)"; GetUserByFlow2(submitData.ApprovalUser.CompanyID, flowDefine.XOML, flowDefine.RULES, master.ACTIVEROLE, submitData.XML, submitData.ApprovalUser.UserID, submitData.ApprovalUser.PostID, submitData.FlowType, ref dataResult, ref user); LogHelper.WriteLog("FormID=" + user.FormID + " 获取下一状态数据! dataResult.FlowResult=" + dataResult.FlowResult.ToString()); user.TrackingMessage += "FORMID=" + user.FormID + "获取下一状态数据(结束)"; if (dataResult.FlowResult == FlowResult.FAIL) { return dataResult; } submitData.NextStateCode = dataResult.AppState; if (dataResult.IsCountersign) { #region 检查会签是角色是否有审核人员 #region 记录日志 if(submitData.DictCounterUser!=null) { LogHelper.WriteLog("FormID=" + user.FormID + " submitData.DictCounterUser="******"FormID=" + user.FormID + " dataResult.DictCounterUser="******"FormID=" + user.FormID + " submitData.DictCounterUser 会签角色里没有发现有审核人员,所以返回!"); return dataResult; } } else { if (submitData.DictCounterUser == null || submitData.DictCounterUser.Keys.Count == 0) { submitData.DictCounterUser = dataResult.DictCounterUser; } } #endregion } else { #region 检查非会签角色里是否有审核人员 if (dataResult.FlowResult == FlowResult.MULTIUSER) { LogHelper.WriteLog("FormID=" + user.FormID + " 发现有多个审核人员!"); if (submitData.NextApprovalUser == null || (Utility.GetString(submitData.NextApprovalUser.UserID) == "" || Utility.GetString(submitData.NextApprovalUser.UserName) == "")) { LogHelper.WriteLog("FormID=" + user.FormID + " 发现有多个审核人员!但下一审核人为空,所以返回选择审核人!"); return dataResult; } else { LogHelper.WriteLog("FormID=" + user.FormID + " 发现有多个审核人员,但发现下一审核人不为空 usrid="+(Utility.GetString(submitData.NextApprovalUser.UserID)+" 姓名="+Utility.GetString(submitData.NextApprovalUser.UserName))); } } else { if (submitData.DictCounterUser == null || submitData.DictCounterUser.Keys.Count == 0) { submitData.NextApprovalUser = dataResult.UserInfo[0]; } } #endregion } #endregion #region 实体赋值 当提交人为空时,创建人变成单据所属人,如果不为空,则创建人保存为系统登录人;创建公司,部门,岗位,仍然保存单据所属人的公司,部门,岗位 FLOW_FLOWRECORDDETAIL_T entity = new FLOW_FLOWRECORDDETAIL_T(); entity.FLOW_FLOWRECORDMASTER_T = master; entity.CREATECOMPANYID = submitData.ApprovalUser.CompanyID; entity.CREATEDEPARTMENTID = submitData.ApprovalUser.DepartmentID ; entity.CREATEPOSTID = submitData.ApprovalUser.PostID; entity.CREATEUSERID = string.IsNullOrEmpty(submitData.SumbitUserID) ? submitData.ApprovalUser.UserID : submitData.SumbitUserID; entity.CREATEUSERNAME = string.IsNullOrEmpty(submitData.SumbitUserName) ? submitData.ApprovalUser.UserName : submitData.SumbitUserName; #endregion user.TrackingMessage += " 处理kpi时间\r\n"; #region 处理kpi时间 string KPITime = ""; #region 加入缓存 string pscResult = CacheProvider.GetCache<string>(flowRelation.MODELFLOWRELATIONID); if (string.IsNullOrEmpty(pscResult)) { PerformanceServiceWS.PerformanceServiceClient psc = new PerformanceServiceWS.PerformanceServiceClient(); pscResult = psc.GetKPIPointsByBusinessCode(flowRelation.MODELFLOWRELATIONID);//调用服务 CacheProvider.Add<string>(flowRelation.MODELFLOWRELATIONID, pscResult); psc.Close(); } #endregion //PerformanceServiceWS.PerformanceServiceClient psc = new PerformanceServiceWS.PerformanceServiceClient(); //string pscResult = psc.GetKPIPointsByBusinessCode(flowRelation.MODELFLOWRELATIONID);//调用服务 //psc.Close(); if (!string.IsNullOrEmpty(pscResult)) { XElement xe = XElement.Parse(pscResult); Func<XElement, bool> f = (x) => { XAttribute xid = x.Attribute("id"); XAttribute xvalue = x.Attribute("value"); if (xid == null || xvalue == null) return false; else { if (xid.Value == dataResult.AppState) return true; else return false; } }; XElement FlowNode = xe.Elements("FlowNode").FirstOrDefault(f); if (FlowNode != null) { KPITime = FlowNode.Attribute("value").Value; } } dataResult.KPITime = KPITime; master.KPITIMEXML = pscResult; #endregion user.TrackingMessage += " 处理kpi时间完成\r\n"; FlowDataType.FlowData FlowData = new FlowDataType.FlowData(); FlowData.xml = submitData.XML; if (!dataResult.IsCountersign) { #region 确定非会签的下一个审核人 UserInfo AppUser = new UserInfo(); //下一审核人 AppUser = submitData.NextApprovalUser; dataResult.UserInfo.Clear(); dataResult.UserInfo.Add(AppUser); UserInfo AgentAppUser = GetAgentUserInfo(submitData.ModelCode, AppUser.UserID);//查询是否启用了代理人 dataResult = DoFlowRecord2(con, workflowRuntime, instance, entity, submitData.NextStateCode, AppUser, AgentAppUser, submitData.SubmitFlag, submitData.FlowType,ref user); //处理流程数据 dataResult.IsCountersign = false; dataResult.AgentUserInfo = AgentAppUser; #endregion } else { user.TrackingMessage += " 会签\r\n"; #region 确定会签角色里的审核人员 //Tracer.Debug("-----DoFlowRecord_Add:" + DateTime.Now.ToString()+"\n"); dataResult.DictCounterUser = submitData.DictCounterUser; Dictionary<UserInfo, UserInfo> dictAgentUserInfo = GetAgentUserInfo2(submitData.ModelCode, submitData.DictCounterUser); dataResult = DoFlowRecord_Add(con, workflowRuntime, instance, entity, submitData.NextStateCode, submitData.DictCounterUser, dictAgentUserInfo, submitData.SubmitFlag, submitData.FlowType); //处理流程数据 //Tracer.Debug("-----DoFlowRecord_AddEnd:" + DateTime.Now.ToString()+"\n"); dataResult.IsCountersign = true; dataResult.DictAgentUserInfo = dictAgentUserInfo; #endregion user.TrackingMessage += "会签完成\r\n"; } user.TrackingMessage += "激发流程引擎执行到一下流程\r\n"; #region 激发流程引擎执行到一下流程 string ss = ""; int n = 0; StateMachineWorkflowInstance workflowinstance = new StateMachineWorkflowInstance(workflowRuntime, instance.InstanceId); ManualWorkflowSchedulerService scheduleService = workflowRuntime.GetService(typeof(ManualWorkflowSchedulerService)) as ManualWorkflowSchedulerService; if (dataResult.AppState == null || dataResult.AppState == "") { user.TrackingMessage += " workflowRuntime.GetService<FlowEvent>()\r\n"; scheduleService.RunWorkflow(workflowinstance.InstanceId); workflowRuntime.GetService<FlowEvent>().OnDoFlow(instance.InstanceId, FlowData); //激发流程引擎执行到一下流程 scheduleService.RunWorkflow(workflowinstance.InstanceId); user.TrackingMessage += " workflowRuntime.GetService<FlowEvent>()完成\r\n"; } else { scheduleService.RunWorkflow(workflowinstance.InstanceId); workflowinstance.SetState(dataResult.AppState); //流程跳转到指定节点 } #endregion user.TrackingMessage += "激发流程引擎执行到一下流程完成\r\n"; user.TrackingMessage += "System.Threading.Thread.Sleep(1000)\r\n"; //System.Threading.Thread.Sleep(1000);//当前用到 dataResult.ModelFlowRelationID = flowRelation.MODELFLOWRELATIONID; //返回关联ID dataResult.KPITime = KPITime; //dataResult.CanSendMessage = true; if (submitData.FlowType == FlowType.Task) { dataResult.SubModelCode = Utility.GetSubModelCode(master.ACTIVEROLE, dataResult.AppState); //返回下一子模块代码 } user.TrackingMessage += "System.Threading.Thread.Sleep(1000)完成\r\n"; return dataResult; } catch (Exception e) { user.ErrorMsg += "新增流程出错 FormID=" + user.FormID + " CompayName=" + user.CompayName + "FlowName=" + user.FlowName + "异常信息:\r\n" + e.ToString() + "\r\n"; LogHelper.WriteLog("FormID=" + user.FormID + " CompayName=" + user.CompayName + "FlowName=" + user.FlowName + " 新增流程出错,异常信息:\r\n" + e.ToString()); throw new Exception("FormID=" + user.FormID+" 时间:"+DateTime.Now.ToString()+" 新增流程出错,请联系管理员! "); } finally { instance = null; SMTWorkFlowManage.ColseWorkFlowRuntime(workflowRuntime); } }
//下一审核人提交审核时调用方法 /// <summary> /// 固定流程:下一审核人提交审核时调用方法 /// </summary> /// <param name="submitData"></param> /// <param name="dataResult"></param> /// <param name="listDetail"></param> /// <returns></returns> public DataResult ApprovalFlow2(OracleConnection con, SubmitData submitData, DataResult dataResult, List<FLOW_FLOWRECORDDETAIL_T> listDetail, ref FlowUser user, ref string msg) { if (submitData.NextApprovalUser == null) { submitData.NextApprovalUser = new UserInfo(); } ///针对会签,该次审核成功后是否跳转至下一状态 bool isGotoNextState = true; // WorkflowRuntime workflowRuntime = null; WorkflowInstance instance = null; FLOW_FLOWRECORDDETAIL_T entity = new FLOW_FLOWRECORDDETAIL_T(); entity.FLOW_FLOWRECORDMASTER_T = new FLOW_FLOWRECORDMASTER_T(); try { #region Entity赋值 List<FLOW_FLOWRECORDDETAIL_T> tmpEntity = listDetail.Where(c => (c.EDITUSERID == submitData.ApprovalUser.UserID || c.AGENTUSERID == submitData.ApprovalUser.UserID) && c.FLAG == "0").ToList(); if (tmpEntity == null) { dataResult.FlowResult = FlowResult.FAIL; dataResult.Err = "没有找到待审核信息 FORMID=" + user.FormID + "\r\n"; user.TrackingMessage += "没有找到待审核信息 FORMID=" + user.FormID + "\r\n"; return dataResult; } entity = tmpEntity[0]; entity.EDITDATE = DateTime.Now; //审批时间 if (entity.AGENTUSERID == submitData.ApprovalUser.UserID) { entity.AGENTEDITDATE = entity.EDITDATE; //代理审批时审批时间与代理审批时间到致 } entity.CONTENT = submitData.ApprovalContent; entity.CHECKSTATE = ((int)submitData.ApprovalResult).ToString(); #endregion #region backup persisted workflow instanceState if (!string.IsNullOrEmpty(entity.FLOW_FLOWRECORDMASTER_T.INSTANCEID)) { String connStringPersistence = ConfigurationManager.ConnectionStrings["OracleConnection"].ConnectionString;//Data Source=172.30.50.110;Initial Catalog=WorkflowPersistence;Persist Security Info=True;User ID=sa;Password=fbaz2012;MultipleActiveResultSets=True"; string sql=string.Format("select * from instance_state where instance_id='{0}'", entity.FLOW_FLOWRECORDMASTER_T.INSTANCEID); user.InstanceState = MsOracle.GetDataSetByConnection(connStringPersistence, sql); } #endregion //workflowRuntime.StartRuntime(); user.TrackingMessage += "创建工作流运行时开始 FORMID=" + user.FormID + "\r\n"; workflowRuntime = SMTWorkFlowManage.CreateWorkFlowRuntime(true); try { instance = SMTWorkFlowManage.GetWorkflowInstance(workflowRuntime,entity.FLOW_FLOWRECORDMASTER_T.INSTANCEID);// workflowRuntime.GetWorkflow(new Guid(tmp[0].FLOW_FLOWRECORDMASTER_T.INSTANCEID)); user.TrackingMessage += "FormID=" + submitData.FormID + ";ApprovalFlow2(try)从持久化库[ 完成 ]恢复创建工作流实例ID=" + entity.FLOW_FLOWRECORDMASTER_T.INSTANCEID + "\r\n"; LogHelper.WriteLog("审核 FormID=" + user.FormID + " WorkflowInstance ID=" + instance.InstanceId.ToString()); } catch (Exception exGetWorkflowInstance) { #region 重新创建新流程,将新流程设置为当前状态。 try { user.TrackingMessage += "FormID=" + submitData.FormID + ";从持久化恢复工作流失败 SMTWorkFlowManage.GetWorkflowInstance(" + workflowRuntime.Name + ", " + entity.FLOW_FLOWRECORDMASTER_T.INSTANCEID + ");原因如下:\r\n" + exGetWorkflowInstance.ToString() + ";\r\n下面重新创建新流程,并将新流程设置为当前状态;\r\nGetFlowByModelName:submitData.ApprovalUser.DepartmentID=" + submitData.ApprovalUser.DepartmentID + ";OrgType='" + ((int)submitData.FlowType).ToString() + "'"; List<FLOW_MODELFLOWRELATION_T> MODELFLOWRELATION = GetFlowByModelName(con, entity.FLOW_FLOWRECORDMASTER_T.CREATECOMPANYID, entity.FLOW_FLOWRECORDMASTER_T.CREATEDEPARTMENTID, submitData.ModelCode, ((int)submitData.FlowType).ToString(), ref user); FLOW_MODELFLOWRELATION_T flowRelation = MODELFLOWRELATION[0]; FLOW_FLOWDEFINE_T flowDefine = flowRelation.FLOW_FLOWDEFINE_T; instance = SMTWorkFlowManage.CreateWorkflowInstance(workflowRuntime , flowDefine.XOML, flowDefine.RULES); user.TrackingMessage += "FormID=" + submitData.FormID + ";ApprovalFlow2(catch)完成重新创建工作流实例ID=" + instance.InstanceId + "\r\n"; StateMachineWorkflowInstance workflowinstance = new StateMachineWorkflowInstance(workflowRuntime, instance.InstanceId); ManualWorkflowSchedulerService scheduleService = workflowRuntime.GetService(typeof(ManualWorkflowSchedulerService)) as ManualWorkflowSchedulerService; scheduleService.RunWorkflow(workflowinstance.InstanceId); workflowinstance.SetState(entity.STATECODE); //System.Threading.Thread.Sleep(1000); //commented by alan 2012/9/7 instance = SMTWorkFlowManage.GetWorkflowInstance(workflowRuntime,instance.InstanceId.ToString()); user.TrackingMessage += "FormID=" + submitData.FormID + ";ApprovalFlow2(catch)从持久化库再恢复刚才创建工作流实例ID=" + instance.InstanceId + "\r\n"; entity.FLOW_FLOWRECORDMASTER_T.INSTANCEID = instance.InstanceId.ToString(); //FLOW_FLOWRECORDDETAIL_TDAL.UpdateMasterINSTANCEID(entity.FLOW_FLOWRECORDMASTER_T); FLOW_FLOWRECORDMASTER_TDAL.UpdateMasterINSTANCEID(con, entity.FLOW_FLOWRECORDMASTER_T); } catch (Exception exNewInstance) { user.ErrorMsg += "重新创建新流程,将新流程设置为当前状态失败:FormID=" + submitData.FormID + "异常信息:\r\n" + exNewInstance.Message + "\r\n"; LogHelper.WriteLog("重新创建新流程,将新流程设置为当前状态失败:FormID=" + submitData.FormID + "FlowBLL->ApprovalFlow2" + exNewInstance.Message); //Tracer.Debug("exNewInstance: -" + submitData.FormID + "--submitDataXML:" + submitData.XML + "-" + exNewInstance.InnerException + exNewInstance.Message); throw new Exception("重新创建新流程,将新流程设置为当前状态失败,请联系管理!"); } #endregion } user.TrackingMessage += "SMTWorkFlowManage.CreateWorkFlowRuntime(true)完成FORMID=" + user.FormID + " \r\n"; #region 当前状态会签状态处理 bool currentIsCountersign = false; string currentCountersignType = "0"; Utility.IsCountersign(entity.FLOW_FLOWRECORDMASTER_T.ACTIVEROLE, entity.STATECODE, ref currentIsCountersign, ref currentCountersignType); if (currentIsCountersign) { user.TrackingMessage += "状态会签状态处理 FORMID=" + user.FormID + " \r\n"; if (currentCountersignType == "1")//一人通过即所有通过,可以跳转至下一状态 { isGotoNextState = true; } else { ///该审核是会签的最后的审核人 if (entity.FLOW_FLOWRECORDMASTER_T.FLOW_FLOWRECORDDETAIL_T.Count == 1) { isGotoNextState = true; } else { isGotoNextState = false; } } user.TrackingMessage += "状态会签状态处理完成 FORMID=" + user.FormID + " \r\n"; } #endregion //不同意状态处理 if (submitData.ApprovalResult == ApprovalResult.NoPass) { user.TrackingMessage += "审核不通过状态处理(开始) FORMID=" + user.FormID + " \r\n"; #region instance.Terminate("0"); entity.FLOW_FLOWRECORDMASTER_T.CHECKSTATE = "3"; //设为终审不通过 entity.FLOW_FLOWRECORDMASTER_T.EDITUSERID = submitData.ApprovalUser.UserID; entity.FLOW_FLOWRECORDMASTER_T.EDITUSERNAME = submitData.ApprovalUser.UserName; entity.FLOW_FLOWRECORDMASTER_T.EDITDATE = DateTime.Now; user.TrackingMessage += "审核不通过【开始更新明细表】!FORMID=" + user.FormID; //user.TrackingMessage += "entity.FLOWRECORDDETAILID" + entity.FLOWRECORDDETAILID + "\r\n";// //user.TrackingMessage += "entity.STATECODE=" + entity.STATECODE + "\r\n";// //user.TrackingMessage += "entity.PARENTSTATEID =" + entity.PARENTSTATEID + "\r\n";// //user.TrackingMessage += "entity.CONTENT=" + entity.CONTENT + "\r\n";// //user.TrackingMessage += "entity.CHECKSTATE=" + entity.CHECKSTATE + "\r\n";//同意:1,不同意:0 ,未处理:2,会签同意7,会签不同意8 //user.TrackingMessage += "entity.FLAG =" + entity.FLAG + "\r\n";//已审批:1,未审批:0 //user.TrackingMessage += " entity.CREATEUSERID =" + entity.CREATEUSERID + "\r\n";// //user.TrackingMessage += "entity.CREATEUSERNAME="******"\r\n";// //user.TrackingMessage += " entity.CREATECOMPANYID=" + entity.CREATECOMPANYID + "\r\n";// //user.TrackingMessage += " entity.CREATEDEPARTMENTID =" + entity.CREATEDEPARTMENTID + "\r\n";// //user.TrackingMessage += "entity.CREATEPOSTID=" + entity.CREATEPOSTID + "\r\n";// //user.TrackingMessage += "entity.CREATEDATE=" + entity.CREATEDATE + "\r\n";// //user.TrackingMessage += " entity.EDITUSERID=" + entity.EDITUSERID + "\r\n";// //user.TrackingMessage += "entity.EDITUSERNAME="******"\r\n";// //user.TrackingMessage += " entity.EDITCOMPANYID =" + entity.EDITCOMPANYID + "\r\n";// //user.TrackingMessage += " entity.EDITDEPARTMENTID=" + entity.EDITDEPARTMENTID + "\r\n";// //user.TrackingMessage += "entity.EDITPOSTID=" + entity.EDITPOSTID + "\r\n";// //user.TrackingMessage += "entity.EDITDATE=" + entity.EDITDATE + "\r\n";// //user.TrackingMessage += "entity.AGENTUSERID =" + entity.AGENTUSERID + "\r\n";// //user.TrackingMessage += " entity.AGENTERNAME=" + entity.AGENTERNAME + "\r\n";// //user.TrackingMessage += "entity.AGENTEDITDATE=" + entity.AGENTEDITDATE + "\r\n";// //user.TrackingMessage += "submitData.NextStateCode=" + submitData.NextStateCode + "\r\n";// //user.TrackingMessage += "submitData.NextApprovalUser.UserID=" + submitData.NextApprovalUser.UserID + "\r\n";// //user.TrackingMessage += " entity.FLOW_FLOWRECORDMASTER_T.FLOWRECORDMASTERID=" + entity.FLOW_FLOWRECORDMASTER_T.FLOWRECORDMASTERID + "\r\n";// UpdateFlowRecord(con, entity, submitData.NextStateCode, submitData.NextApprovalUser.UserID); user.TrackingMessage += "审核不通过【开始更新主表】!FORMID=" + user.FormID; FLOW_FLOWRECORDMASTER_TDAL.Update(entity.FLOW_FLOWRECORDMASTER_T); dataResult.CheckState = "3";// dataResult.FlowResult = FlowResult.END; if (currentIsCountersign) { #region 当前是会签状态,删除未审核记录 user.TrackingMessage += "审核不通过【当前是会签状态,删除未审核记录】!FORMID=" + user.FormID; entity.FLOW_FLOWRECORDMASTER_T.FLOW_FLOWRECORDDETAIL_T .Where(detail => detail.FLOWRECORDDETAILID != entity.FLOWRECORDDETAILID && detail.STATECODE == entity.STATECODE && detail.FLAG == "0") .ToList().ForEach(item => { item.FLAG = "1"; item.CHECKSTATE = "8"; UpdateFlowRecord2(con, item); }); #endregion } #endregion user.TrackingMessage += "审核通过状态处理(完成) FORMID=" + user.FormID + " \r\n"; } else { if (!isGotoNextState) { user.TrackingMessage += "isGotoNextState开始 FORMID=" + user.FormID + " \r\n"; #region UpdateFlowRecord2(con, entity); dataResult.AppState = entity.STATECODE; dataResult.FlowResult = FlowResult.SUCCESS; dataResult.CheckState = "1"; #endregion user.TrackingMessage += "isGotoNextState完成 FORMID=" + user.FormID + "\r\n"; } else { user.TrackingMessage += "获取下一状态数据开始 FORMID=" + user.FormID + " \r\n"; #region 获取下一状态数据 List<string> User = new List<string>(); User.Add(entity.FLOW_FLOWRECORDMASTER_T.CREATEUSERID); User.Add(submitData.ApprovalUser.UserID); List<string> tmpPostID = new List<string>(); tmpPostID.Add(entity.FLOW_FLOWRECORDMASTER_T.CREATEPOSTID); tmpPostID.Add(entity.EDITPOSTID); GetUserByInstance2(entity.FLOW_FLOWRECORDMASTER_T.CREATECOMPANYID, workflowRuntime, instance, entity.FLOW_FLOWRECORDMASTER_T.ACTIVEROLE, submitData.XML, entity.STATECODE, User, tmpPostID, submitData.FlowType, ref dataResult, ref user); if (dataResult.FlowResult == FlowResult.FAIL) { return dataResult; } submitData.NextStateCode = dataResult.AppState; if (dataResult.IsCountersign) { #region if (dataResult.FlowResult == FlowResult.Countersign) { if (submitData.DictCounterUser == null || submitData.DictCounterUser.Keys.Count == 0) { return dataResult; } } else { if (submitData.DictCounterUser == null || submitData.DictCounterUser.Keys.Count == 0) { submitData.DictCounterUser = dataResult.DictCounterUser; } } #endregion } else { #region if (dataResult.FlowResult == FlowResult.MULTIUSER) { if (submitData.NextApprovalUser == null || (Utility.GetString(submitData.NextApprovalUser.UserID) == "" || Utility.GetString(submitData.NextApprovalUser.UserName) == "")) { return dataResult; } } else { if (submitData.DictCounterUser == null || submitData.DictCounterUser.Keys.Count == 0) { submitData.NextApprovalUser = dataResult.UserInfo[0]; } } #endregion } #endregion user.TrackingMessage += "获取下一状态数据完成 FORMID=" + user.FormID + "\r\n"; user.TrackingMessage += "单据会签情况开始 FORMID=" + user.FormID + "\r\n"; #region 对于单会签情况,需要将其他审核人的审核设为会签通过状态 if (currentIsCountersign && currentCountersignType == "1") { entity.FLOW_FLOWRECORDMASTER_T.FLOW_FLOWRECORDDETAIL_T .Where(detail => detail.FLOWRECORDDETAILID != entity.FLOWRECORDDETAILID && detail.STATECODE == entity.STATECODE && detail.FLAG == "0") .ToList().ForEach(item => { item.FLAG = "1"; item.CHECKSTATE = "7"; UpdateFlowRecord2(con, item); }); } #endregion user.TrackingMessage += "单据会签情况完成 FORMID=" + user.FormID + "\r\n"; #region FlowDataType.FlowData FlowData = new FlowDataType.FlowData(); FlowData.xml = submitData.XML; workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e) { instance = null; }; user.TrackingMessage += "处理kpi 开始 FORMID=" + user.FormID + "\r\n"; #region 处理kpi时间 string KPITime = ""; //PerformanceServiceWS.PerformanceServiceClient psc = new PerformanceServiceWS.PerformanceServiceClient(); string pscResult = entity.FLOW_FLOWRECORDMASTER_T.KPITIMEXML; //psc.Close(); if (!string.IsNullOrEmpty(pscResult)) { XElement xe = XElement.Parse(pscResult); Func<XElement, bool> f = (x) => { XAttribute xid = x.Attribute("id"); XAttribute xvalue = x.Attribute("value"); if (xid == null || xvalue == null) return false; else { if (xid.Value == dataResult.AppState) return true; else return false; } }; XElement FlowNode = xe.Elements("FlowNode").FirstOrDefault(f); if (FlowNode != null) { KPITime = FlowNode.Attribute("value").Value; } } dataResult.KPITime = KPITime; #endregion user.TrackingMessage += "处理kpi 完成 FORMID=" + user.FormID + "\r\n"; if (!dataResult.IsCountersign) { user.TrackingMessage += "非会签 开始 FORMID=" + user.FormID + "\r\n"; #region 非会签 UserInfo AppUser = submitData.NextApprovalUser; dataResult.UserInfo.Clear(); dataResult.UserInfo.Add(AppUser); UserInfo AgentAppUser = GetAgentUserInfo(submitData.ModelCode, AppUser.UserID);//查询是否启用了代理人 dataResult = DoFlowRecord2(con, workflowRuntime, instance, entity, submitData.NextStateCode, AppUser, AgentAppUser, submitData.SubmitFlag, submitData.FlowType,ref user); //处理流程数据 dataResult.AgentUserInfo = AgentAppUser; dataResult.IsCountersign = false; #endregion user.TrackingMessage += "非会签 完成 FORMID=" + user.FormID + "\r\n"; } else { #region 会签 dataResult.DictCounterUser = submitData.DictCounterUser; Dictionary<UserInfo, UserInfo> dictAgentUserInfo = GetAgentUserInfo2(submitData.ModelCode, submitData.DictCounterUser); dataResult = DoFlowRecord_Approval(con, workflowRuntime, instance, entity, submitData.NextStateCode, submitData.DictCounterUser, dictAgentUserInfo, submitData.SubmitFlag, submitData.FlowType); //处理流程数据 dataResult.DictAgentUserInfo = dictAgentUserInfo; dataResult.IsCountersign = true; #endregion } user.TrackingMessage += "激发流程引擎执行到一下流程 开始 FORMID=" + user.FormID + "\r\n"; #region 激发流程引擎执行到一下流程 StateMachineWorkflowInstance workflowinstance = new StateMachineWorkflowInstance(workflowRuntime, instance.InstanceId); ManualWorkflowSchedulerService scheduleService = workflowRuntime.GetService(typeof(ManualWorkflowSchedulerService)) as ManualWorkflowSchedulerService; if (dataResult.AppState == null || dataResult.AppState == "") { scheduleService.RunWorkflow(workflowinstance.InstanceId); workflowRuntime.GetService<FlowEvent>().OnDoFlow(instance.InstanceId, FlowData); //激发流程引擎执行到一下流程 scheduleService.RunWorkflow(workflowinstance.InstanceId); } else { string ss = ""; int n = 0; scheduleService.RunWorkflow(workflowinstance.InstanceId); workflowinstance.SetState(dataResult.AppState); //流程跳转到指定节点 //while (true) //{ // ss += (n++).ToString()+"|" + workflowinstance.CurrentStateName; // string stateName = workflowinstance.CurrentStateName; // if (stateName != null && stateName.ToUpper().IndexOf("START") == -1) // { // break; // } //} } #endregion user.TrackingMessage += "激发流程引擎执行到一下流程 完成 FORMID=" + user.FormID + "\r\n"; //dataResult.CanSendMessage = true; user.TrackingMessage += "System.Threading.Thread.Sleep(1000)\r\n"; //System.Threading.Thread.Sleep(1000); //Commented by Alan 2012-7-25 ,使用手动ScheduleService运行工作流,此处不需要 if (submitData.FlowType == FlowType.Task) dataResult.SubModelCode = Utility.GetSubModelCode(entity.FLOW_FLOWRECORDMASTER_T.ACTIVEROLE, dataResult.AppState); //返回下一子模块代码 user.TrackingMessage += "System.Threading.Thread.Sleep(1000)完成\r\n"; #endregion } } dataResult.CurrentIsCountersign = currentIsCountersign; dataResult.IsGotoNextState = isGotoNextState; return dataResult; } catch (Exception e) { user.ErrorMsg += "提交审核时出错!FORMID=" + user.FormID + " 异常信息:" + e.ToString()+ "\r\n"; LogHelper.WriteLog("提交审核时出错!FORMID=" + user.FormID + " 异常信息:" + e.ToString()); throw new Exception("提交审核时出错,请联系管理员! \r\n FormID=" + user.FormID + ""); } finally { entity = null; instance = null; SMTWorkFlowManage.ColseWorkFlowRuntime(workflowRuntime); } }
public ActionResult Index(SubmitData acc) { RegisterModel.CreateAccount(acc.email, acc.password); return(View()); }
public string GetFlowDefine( SubmitData ApprovalData) { Tracer.Debug("GetFlowDefine获取流程信息 ModelCode=" + ApprovalData.ModelCode + " FormID=" + ApprovalData.FormID); FlowBLL Flow = new FlowBLL(); return Flow.GetFlowDefine( ApprovalData); }
/// <summary> /// 将异常信息记录到流程监控表里 /// </summary> /// <param name="submitData">SubmitData</param> /// <param name="flowUser">FlowUser</param> public static void AddFlowMonitor(SubmitData submitData, FlowUser flowUser) { try { #region 提交信息 StringBuilder sb = new StringBuilder(); sb.AppendLine("submitData.FlowSelectType =FlowSelectType." + submitData.FlowSelectType + ";"); sb.AppendLine("submitData.FormID = \"" + submitData.FormID + "\";"); sb.AppendLine("submitData.ModelCode = \"" + submitData.ModelCode + "\";"); sb.AppendLine("submitData.ApprovalUser = new UserInfo();"); sb.AppendLine("submitData.ApprovalUser.CompanyID = \"" + submitData.ApprovalUser.CompanyID + "\";"); sb.AppendLine("submitData.ApprovalUser.DepartmentID = \"" + submitData.ApprovalUser.DepartmentID + "\";"); sb.AppendLine("submitData.ApprovalUser.PostID = \"" + submitData.ApprovalUser.PostID + "\";"); sb.AppendLine("submitData.ApprovalUser.UserID = \"" + submitData.ApprovalUser.UserID + "\";"); sb.AppendLine("submitData.ApprovalUser.UserName = \"" + submitData.ApprovalUser.UserName + "\";"); sb.AppendLine("submitData.NextStateCode = \"" + (submitData.NextStateCode != null ? submitData.NextStateCode : "空") + "\";"); sb.AppendLine("submitData.NextApprovalUser = new UserInfo();"); sb.AppendLine("submitData.NextApprovalUser.CompanyID = \"" + (submitData.NextApprovalUser != null ? submitData.NextApprovalUser.CompanyID : "空") + "\";"); sb.AppendLine("submitData.NextApprovalUser.DepartmentID = \"" + (submitData.NextApprovalUser != null ? submitData.NextApprovalUser.DepartmentID : "空") + "\";"); sb.AppendLine("submitData.NextApprovalUser.PostID = \"" + (submitData.NextApprovalUser != null ? submitData.NextApprovalUser.PostID : "空") + "\";"); sb.AppendLine("submitData.NextApprovalUser.UserID = \"" + (submitData.NextApprovalUser != null ? submitData.NextApprovalUser.UserID : "空") + "\";"); sb.AppendLine("submitData.NextApprovalUser.UserName = \"" + (submitData.NextApprovalUser != null ? submitData.NextApprovalUser.UserName : "******") + "\";"); sb.AppendLine("submitData.SubmitFlag = SubmitFlag." + submitData.SubmitFlag + ";"); // sb.AppendLine("submitData.XML = \"" + submitData.XML + "\";"); sb.AppendLine("submitData.FlowType = FlowType." + submitData.FlowType.ToString() + ";"); sb.AppendLine("submitData.ApprovalResult = ApprovalResult." + submitData.ApprovalResult.ToString() + ";"); sb.AppendLine("submitData.ApprovalContent = \"" + submitData.ApprovalContent + "\";"); #region 提交人信息 sb.AppendLine("submitData.SumbitCompanyID = \"" + submitData.SumbitCompanyID + "\";"); sb.AppendLine("submitData.SumbitDeparmentID = \"" + submitData.SumbitDeparmentID + "\";"); sb.AppendLine("submitData.SumbitPostID = \"" + submitData.SumbitPostID + "\";"); sb.AppendLine("submitData.SumbitUserID = \"" + submitData.SumbitUserID + "\";"); sb.AppendLine("submitData.SumbitUserName = \"" + submitData.SumbitUserName + "\";"); #endregion #endregion FLOW_EXCEPTIONLOG entity = new FLOW_EXCEPTIONLOG(); entity.ID = Guid.NewGuid().ToString().Replace("-", "");//主键ID entity.FORMID = submitData.FormID;//业务ID entity.MODELCODE = submitData.ModelCode;//模块代码 entity.CREATEDATE = DateTime.Now;//创建日期 entity.CREATENAME = submitData.SumbitUserID == null ? submitData.ApprovalUser.UserName : submitData.SumbitUserName;//创建人 entity.SUBMITINFO = sb.ToString();//提交信息 entity.LOGINFO = flowUser.ErrorMsg;//异常日志信息 entity.MODELNAME = flowUser.ModelName;//模块名称 entity.OWNERID = submitData.ApprovalUser.UserID;//单据所属人ID entity.OWNERNAME = submitData.ApprovalUser.UserName;//单据所属人姓名 entity.OWNERCOMPANYID = submitData.ApprovalUser.CompanyID;//单据所属人公司ID entity.OWNERCOMPANYNAME =(submitData.SumbitUserID == submitData.ApprovalUser.UserID)?flowUser.CompayName: submitData.ApprovalUser.CompanyName;//单据所属人公司名称 entity.OWNERDEPARMENTID = submitData.ApprovalUser.DepartmentID;//单据所属人部门ID entity.OWNERDEPARMENTNAME = (submitData.SumbitUserID == submitData.ApprovalUser.UserID) ? flowUser.DepartmentName : submitData.ApprovalUser.DepartmentName;//单据所属人部门名称 entity.OWNERPOSTID = submitData.ApprovalUser.PostID;//单据所属人岗位ID entity.OWNERPOSTNAME = (submitData.SumbitUserID == submitData.ApprovalUser.UserID) ? flowUser.PostName : submitData.ApprovalUser.PostName;//单据所属人岗位名称 entity.AUDITSTATE = submitData.ApprovalResult == ApprovalResult.Pass ? "审核通过" : "审核不通过";//审核状态;审核通过,审核不通过 FLOW_EXCEPTIONLOGDAL dal = new FLOW_EXCEPTIONLOGDAL(); dal.Add( entity); Tracer.Debug("Formid=" + submitData.FormID + ";将异常信息记录到流程监控表里,成功!"); } catch (Exception e) { Tracer.Debug("Formid=" + submitData.FormID + ";将异常信息记录到流程监控表里,出错:异常信息:" + e.ToString()); // throw e; } }
public DataResult CancelFlow(SubmitData submitData, DataResult dataResult, List<FLOW_FLOWRECORDDETAIL_T> fd) { //WorkflowRuntime workflowRuntime = null; WorkflowInstance instance = null; FLOW_FLOWRECORDDETAIL_T entity = new FLOW_FLOWRECORDDETAIL_T(); #region entity.FLOWRECORDDETAILID = Guid.NewGuid().ToString(); entity.CREATECOMPANYID = submitData.ApprovalUser.CompanyID; entity.CREATEDEPARTMENTID = submitData.ApprovalUser.DepartmentID; entity.CREATEPOSTID = submitData.ApprovalUser.PostID; entity.CREATEUSERID = submitData.ApprovalUser.UserID; entity.CREATEUSERNAME = submitData.ApprovalUser.UserName; entity.EDITDATE = DateTime.Now; entity.CONTENT = submitData.ApprovalContent; entity.CHECKSTATE = "9"; entity.STATECODE = "Cancel"; entity.FLAG = "1"; entity.PARENTSTATEID = entity.FLOWRECORDDETAILID; entity.CREATEDATE = DateTime.Now; entity.EDITDATE = DateTime.Now; entity.EDITUSERID = entity.CREATEUSERID; entity.EDITUSERNAME = entity.CREATEUSERNAME; entity.EDITCOMPANYID = entity.CREATECOMPANYID; entity.EDITDEPARTMENTID = entity.CREATEDEPARTMENTID; entity.EDITPOSTID = entity.CREATEPOSTID; entity.FLOW_FLOWRECORDMASTER_T = fd[0].FLOW_FLOWRECORDMASTER_T; entity.FLOW_FLOWRECORDMASTER_T.FLOW_FLOWRECORDDETAIL_T.Add(entity); entity.FLOW_FLOWRECORDMASTER_T.CHECKSTATE = "9"; //设为撤销 entity.FLOW_FLOWRECORDMASTER_T.EDITUSERID = submitData.ApprovalUser.UserID; entity.FLOW_FLOWRECORDMASTER_T.EDITUSERNAME = submitData.ApprovalUser.UserName; entity.FLOW_FLOWRECORDMASTER_T.EDITDATE = DateTime.Now; #endregion workflowRuntime = SMTWorkFlowManage.CreateWorkFlowRuntime(true); LogHelper.WriteLog("CancelFlow从持久化库在恢复创建工作流实例ID=" + entity.FLOW_FLOWRECORDMASTER_T.INSTANCEID); instance = SMTWorkFlowManage.GetWorkflowInstance(workflowRuntime, entity.FLOW_FLOWRECORDMASTER_T.INSTANCEID); instance.Terminate("0"); FLOW_FLOWRECORDDETAIL_TDAL Dal = new FLOW_FLOWRECORDDETAIL_TDAL(); entity.FLAG = "1"; //Dal.AddFlowRecord(entity); FLOW_FLOWRECORDDETAIL_TDAL.Add(entity); FLOW_FLOWRECORDMASTER_TDAL.Update(entity.FLOW_FLOWRECORDMASTER_T); fd.Where(detail => detail.FLAG == "0").ToList().ForEach(item => { //Dal.Delete(item); //Dal.DeleteFlowRecord(item); FLOW_FLOWRECORDDETAIL_TDAL.Delete(item); }); dataResult.CheckState = "9";// dataResult.FlowResult = FlowResult.SUCCESS; return dataResult; }
private void LogSubmitData(SubmitData submitData) { #region 提交信息 StringBuilder sb = new StringBuilder(); sb.AppendLine("submitData.FlowSelectType =FlowSelectType." + submitData.FlowSelectType + ";"); sb.AppendLine("submitData.FormID = \"" + submitData.FormID + "\";"); sb.AppendLine("submitData.ModelCode = \"" + submitData.ModelCode + "\";"); sb.AppendLine("submitData.ApprovalUser = new UserInfo();"); sb.AppendLine("submitData.ApprovalUser.CompanyID = \"" + submitData.ApprovalUser.CompanyID + "\";"); sb.AppendLine("submitData.ApprovalUser.DepartmentID = \"" + submitData.ApprovalUser.DepartmentID + "\";"); sb.AppendLine("submitData.ApprovalUser.PostID = \"" + submitData.ApprovalUser.PostID + "\";"); sb.AppendLine("submitData.ApprovalUser.UserID = \"" + submitData.ApprovalUser.UserID + "\";"); sb.AppendLine("submitData.ApprovalUser.UserName = \"" + submitData.ApprovalUser.UserName + "\";"); sb.AppendLine("submitData.NextStateCode = \"" + (submitData.NextStateCode != null ? submitData.NextStateCode : "空") + "\";"); sb.AppendLine("submitData.NextApprovalUser = new UserInfo();"); sb.AppendLine("submitData.NextApprovalUser.CompanyID = \"" + (submitData.NextApprovalUser != null ? submitData.NextApprovalUser.CompanyID : "空") + "\";"); sb.AppendLine("submitData.NextApprovalUser.DepartmentID = \"" + (submitData.NextApprovalUser != null ? submitData.NextApprovalUser.DepartmentID : "空") + "\";"); sb.AppendLine("submitData.NextApprovalUser.PostID = \"" + (submitData.NextApprovalUser != null ? submitData.NextApprovalUser.PostID : "空") + "\";"); sb.AppendLine("submitData.NextApprovalUser.UserID = \"" + (submitData.NextApprovalUser != null ? submitData.NextApprovalUser.UserID : "空") + "\";"); sb.AppendLine("submitData.NextApprovalUser.UserName = \"" + (submitData.NextApprovalUser != null ? submitData.NextApprovalUser.UserName : "******") + "\";"); sb.AppendLine("submitData.SubmitFlag = SubmitFlag." + submitData.SubmitFlag + ";"); // sb.AppendLine("submitData.XML = \"" + submitData.XML + "\";"); sb.AppendLine("submitData.FlowType = FlowType." + submitData.FlowType.ToString() + ";"); sb.AppendLine("submitData.ApprovalResult = ApprovalResult." + submitData.ApprovalResult.ToString() + ";"); sb.AppendLine("submitData.ApprovalContent = \"" + submitData.ApprovalContent + "\";"); if (submitData.DictCounterUser != null) { if (submitData.DictCounterUser.Count > 0) { string name = ""; foreach (KeyValuePair<FlowRole, List<UserInfo>> u in submitData.DictCounterUser) { name += "角色名称:" + u.Key.Remark + " 人数:" + u.Value.Count + "\r\n"; foreach (var user in u.Value) { name += "姓名:" + user.UserName + " 公司:" + user.CompanyName + "\r\n"; } name += "---------------------------------------------------------------\r\n"; } sb.AppendLine("FormID=" + submitData.FormID + " 选择会签角色的人员如下:\r\n" + name); } } #region 提交人信息 sb.AppendLine("submitData.SumbitCompanyID = \"" + submitData.SumbitCompanyID + "\";"); sb.AppendLine("submitData.SumbitDeparmentID = \"" + submitData.SumbitDeparmentID + "\";"); sb.AppendLine("submitData.SumbitPostID = \"" + submitData.SumbitPostID + "\";"); sb.AppendLine("submitData.SumbitUserID = \"" + submitData.SumbitUserID + "\";"); sb.AppendLine("submitData.SumbitUserName = \"" + submitData.SumbitUserName + "\";"); #endregion Tracer.Debug("提交审核的信息:\r\n" + sb.ToString() + "\r\n"); Tracer.Debug("流程引擎的XML数据 SubimtFlow入口处:" + submitData.ApprovalContent + " FormID=" + submitData.FormID + ";ModelCode=" + submitData.ModelCode + " \r\n submitData.XML:\r\n" + submitData.XML); #endregion }
public DataResult SubimtFlow(SubmitData submitData) { //SMTWorkFlowManage.ColseWorkFlowRuntime(null); //DataSet ds = new DataSet(); LogSubmitData(submitData); Tracer.Debug("***********************************************开始***********************************************"); string returnMsg = "";//暂时没有用,记录执行的顺序 #region 更新个人缓存 //临时屏蔽 //FlowEngine.TaskCacheReflesh(submitData.ApprovalUser.UserID); //Tracer.Debug("FormID=" + submitData.FormID + ";更新个人缓存 完成 UserID=" + submitData.ApprovalUser.UserID); #endregion DateTime dtStart = DateTime.Now; DateTime dtEngineStart = DateTime.Now; DateTime dtEnd = DateTime.Now; DateTime dtCheckData = DateTime.Now; DataResult dataResult = new DataResult(); FlowUser User = new FlowUser(); //设置2分钟超时时间 //using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(DateTime.Now.AddMinutes(2).Ticks))) //{ try { #region 初始化流程所属人的信息 Tracer.Debug("进入事务操作 FormID=" + submitData.FormID); User = new FlowUser(submitData.ApprovalUser.CompanyID, submitData.ApprovalUser.UserID, submitData.ModelCode); User.FormID = submitData.FormID; Tracer.Debug("初始化流程所属人的信息 FormID=" + submitData.FormID); SUser = User; Tracer.Debug("SUser = User FormID=" + submitData.FormID); FlowBLL Flowbll = new FlowBLL(); string AppCompanyID = ""; //申请公司 string MessageUserID = ""; //申请人ID string MessageUserName = ""; //申请人名 dataResult.FlowResult = FlowResult.SUCCESS; #endregion #region 检查流程数据是否规范 if (!FlowBLL.CheckFlowData(submitData, ref dataResult)) { dataResult.FlowResult = FlowResult.FAIL; { return dataResult; } } #region XML进行验证 if (!string.IsNullOrEmpty(submitData.XML) && submitData.SubmitFlag == SubmitFlag.New) {//如果是提交并XML不为空是进行验证 if (VerifyXML(submitData.XML)) { dataResult.Err = "传入的XML不合法!请检查元数据Key值和DataValue值是否有空的"; dataResult.FlowResult = FlowResult.FAIL; FlowMonitor.AddFlowMonitor(submitData, User); return dataResult; } } if (string.IsNullOrEmpty(submitData.XML) && submitData.SubmitFlag == SubmitFlag.New) {//如果是提交并XML为空 dataResult.Err = "XML元数据不能为空!"; dataResult.FlowResult = FlowResult.FAIL; FlowMonitor.AddFlowMonitor(submitData, User); return dataResult; } #endregion #endregion #region 检查是否已提交流程(对数据库操作) submitData.ApprovalResult = submitData.SubmitFlag == SubmitFlag.New ? ApprovalResult.Pass : submitData.ApprovalResult; submitData.FlowSelectType = submitData.FlowSelectType == null ? FlowSelectType.FixedFlow : submitData.FlowSelectType; CheckResult CheckFlowResult = Flowbll.CheckFlowIsApproved(submitData, dataResult);//对数据库操作 dtCheckData = DateTime.Now; dataResult = CheckFlowResult.APPDataResult; if (CheckFlowResult.Flag == 0 && submitData.SubmitFlag == SubmitFlag.New)//已审批:1,未审批:0 { dataResult.Err = "该单据已提交,还没有审核,不能再提交!"; dataResult.FlowResult = FlowResult.FAIL; return dataResult; } if (CheckFlowResult.fd != null && CheckFlowResult.fd[0].CHECKSTATE == "1" && submitData.SubmitFlag == SubmitFlag.New)//审核中:1 {//如果单据还在审核中,不允许再提交单据 dataResult.Err = "该单据已在审核中,不能再提交!"; dataResult.FlowResult = FlowResult.FAIL; return dataResult; } #endregion #region 新增,撤单,审核 dataResult.AppState = submitData.NextStateCode; if (submitData.SubmitFlag == SubmitFlag.New) { //提交新流程 #region 新增 AppCompanyID = submitData.ApprovalUser.CompanyID; if (submitData.FlowSelectType == FlowSelectType.FreeFlow) //自选流程 dataResult = Flowbll.SubmitFreeFlow(submitData, dataResult, ref User);//对数据库操作 else { //固定流程 Tracer.Debug("固定流程.Flowbill.AddFlow2"); dataResult = Flowbll.SubmitFlow(submitData, dataResult, ref User);//对数据库操作 } #endregion } else if (submitData.SubmitFlag == SubmitFlag.Cancel) { #region 撤单 if (!string.IsNullOrEmpty(CheckFlowResult.fd[0].FLOW_FLOWRECORDMASTER_T.BUSINESSOBJECT)) { submitData.XML = CheckFlowResult.fd[0].FLOW_FLOWRECORDMASTER_T.BUSINESSOBJECT; } submitData.ApprovalContent = ""; dataResult = Flowbll.CancelFlow(submitData, dataResult, CheckFlowResult.fd); dataResult.SubmitFlag = submitData.SubmitFlag; #endregion } else { //审批流程 #region 审核 if (CheckFlowResult.fd[0] == null) { dataResult.Err = "FormID =" + submitData.FormID + ";该单据没有审核记录!"; dataResult.FlowResult = FlowResult.FAIL; return dataResult; } if (!string.IsNullOrEmpty(CheckFlowResult.fd[0].FLOW_FLOWRECORDMASTER_T.BUSINESSOBJECT)) { submitData.XML = CheckFlowResult.fd[0].FLOW_FLOWRECORDMASTER_T.BUSINESSOBJECT; } //引擎消息数据 AppCompanyID = CheckFlowResult.fd[0].FLOW_FLOWRECORDMASTER_T.CREATECOMPANYID; MessageUserID = CheckFlowResult.fd[0].FLOW_FLOWRECORDMASTER_T.CREATEUSERID; MessageUserName = CheckFlowResult.fd[0].FLOW_FLOWRECORDMASTER_T.CREATEUSERNAME; submitData.ApprovalUser.CompanyID = CheckFlowResult.fd[0].EDITCOMPANYID; submitData.ApprovalUser.DepartmentID = CheckFlowResult.fd[0].EDITDEPARTMENTID; submitData.ApprovalUser.PostID = CheckFlowResult.fd[0].EDITPOSTID; submitData.FlowSelectType = (FlowSelectType)Convert.ToInt32(CheckFlowResult.fd[0].FLOW_FLOWRECORDMASTER_T.FLOWSELECTTYPE); if (submitData.FlowSelectType == FlowSelectType.FreeFlow) dataResult = Flowbll.ApprovalFreeFlow(submitData, dataResult, CheckFlowResult.fd, ref User);//对数据库操作、对服务操作 else dataResult = Flowbll.ApprovalFlow(submitData, dataResult, CheckFlowResult.fd, ref User, ref returnMsg); #endregion } #endregion #region 如果检出有多个审核人时,返回界面让用户选择一个人进行审核 if (dataResult.FlowResult == FlowResult.MULTIUSER) { string users = "FormID =" + submitData.FormID + " 检出有多个审核人\r\n"; foreach (var u in dataResult.UserInfo) { //users += "CompanyID =" + u.CompanyID + "\r\n"; //users += "DepartmentID = " + u.DepartmentID + "\r\n"; //users += "PostID = " + u.PostID + "\r\n"; //users += "serID = " + u.UserID + "\r\n"; //users += "UserName = "******"\r\n"; users += "公司ID = " + u.CompanyID + "\r\n"; users += "部门ID = " + u.DepartmentID + "\r\n"; users += "岗位ID = " + u.PostID + "\r\n"; users += "员工ID = " + u.UserID + "\r\n"; users += "公司名称 = " + u.CompanyName + "\r\n"; users += "部门名称 = " + u.DepartmentName + "\r\n"; users += "岗位名称 = " + u.PostName + "\r\n"; users += "员工姓名 = " + u.UserName + "\r\n"; users += "------------------------------------\r\n"; } Tracer.Debug(users + "返回界面让用户选择一个人审核人"); for (int i = 0; i < dataResult.UserInfo.Count; i++) { dataResult.UserInfo[i].Roles = null; //解决 基础连接已经关闭: 连接被意外关闭(WCF深层序列化问题) } return dataResult; } #endregion #region 解决 基础连接已经关闭: 连接被意外关闭(WCF深层序列化问题) for (int i = 0; i < dataResult.UserInfo.Count; i++) { dataResult.UserInfo[i].Roles = null; //解决 基础连接已经关闭: 连接被意外关闭(WCF深层序列化问题) } if (dataResult.DictCounterUser != null) { if (dataResult.DictCounterUser.Count > 0) { string name = ""; foreach (KeyValuePair<FlowRole, List<UserInfo>> u in dataResult.DictCounterUser) { name += "角色名称:" + u.Key.Remark + " 人数:" + u.Value.Count + "\r\n"; foreach (var user in u.Value) { user.Roles = null;//解决 基础连接已经关闭: 连接被意外关闭(WCF深层序列化问题) name += "姓名:" + user.UserName + " 公司:" + user.CompanyName + "\r\n"; } name += "---------------------------------------------------------------\r\n"; } Tracer.Debug("FormID=" + User.FormID + " 会签角色下所有的人员 \r\n" + name); } } #endregion #region 发送审批消息(调用引擎服务) Tracer.Debug("FormID=" + User.FormID + " 模块名称:user.ModelCode=" + User.ModelCode + "; user.ModelName=" + User.ModelName + " ;流程名称=" + User.FlowName + "(" + User.FlowCode + ")"); if (string.IsNullOrEmpty(strIsFlowEngine) || strIsFlowEngine.ToLower() == "true") { SubmitEngineService(submitData, dataResult, ref User, CheckFlowResult, Flowbll, AppCompanyID, MessageUserID, MessageUserName, ref returnMsg); } #endregion #region 修改我的单据状态 //修改我的单据状态 新建并且不能不等于会签才更改状态 if (submitData.SubmitFlag == SubmitFlag.New && dataResult.FlowResult == FlowResult.SUCCESS) { EnginFlowBLL.AddPersonalRecord(submitData, "1", User, null); } if (dataResult.FlowResult == FlowResult.END) { EnginFlowBLL.AddPersonalRecord(submitData, dataResult.CheckState, User, CheckFlowResult.fd[0].FLOW_FLOWRECORDMASTER_T); } dtEnd = DateTime.Now; dataResult.SubmitFlag = submitData.SubmitFlag; if (dataResult.FlowResult == FlowResult.FAIL) { dataResult.Err = dataResult.Err + " \r\n FormID=" + User.FormID + ";时间:" + DateTime.Now.ToString(); User.ErrorMsg += "=================================================================================\r\n"; User.ErrorMsg += dataResult.Err + "\r\n"; FlowMonitor.AddFlowMonitor(submitData, User); } #endregion //ts.Complete();//提交事务 //关闭数据库 Tracer.Debug("执行流程成功:FormID=" + User.FormID + ";单据所属人:" + User.UserName + "(" + User.UserID + ");公司名称:" + User.CompayName + ";模块名称:" + User.ModelName + " ;流程名称:" + User.FlowName + " (" + User.FlowCode + ") \r\n 返回给业务系统的 dataResult.FlowResult=" + dataResult.FlowResult.ToString() + " " + dataResult.Err); } catch (Exception ex) { #region 记录到流程监控表里 //ts.Dispose(); dataResult.RunTime += "---FlowEnd:" + DateTime.Now.ToString(); dataResult.FlowResult = FlowResult.FAIL; dataResult.Err = ex.Message; User.ErrorMsg += "=================================================================================\r\n"; User.ErrorMsg += "执行流程失败:FormID=" + User.FormID + ";单据所属人:" + User.UserName + "(" + User.UserID + ");公司名称:" + User.CompayName + ";模块名称:" + User.ModelName + "; 流程名称:" + User.FlowName + " (" + User.FlowCode + "); 异常信息\r\n" + ex.ToString() + "\r\n"; FlowMonitor.AddFlowMonitor(submitData, User); #endregion #region restore workflow instanceState if (User.InstanceState != null && User.InstanceState.Tables[0].Rows.Count > 0) { foreach (DataRow dr in User.InstanceState.Tables[0].Rows) { Tracer.Debug("恢复工作流InstanceState:" + dr["instance_id"]); InsertInstanceState(dr); } } #endregion #region return FAIL result if (dataResult.FlowResult == FlowResult.FAIL) { dataResult.Err = dataResult.Err + " FormID=" + User.FormID + ";时间:" + DateTime.Now.ToString(); Tracer.Debug("失败错误信息:" + dataResult.Err); } Tracer.Debug("执行流程失败:FormID=" + User.FormID + ";单据所属人:" + User.UserName + "(" + User.UserID + ");公司名称:" + User.CompayName + ";模块名称:" + User.ModelName + "; 流程名称:" + User.FlowName + " (" + User.FlowCode + ");执行踪信息如下:\r\n" + User.TrackingMessage + "\r\n 异常信息\r\n" + ex.ToString()); return dataResult; #endregion } finally { } //} FlowMonitor.AddInstance(submitData, User); return dataResult; }
private Post Submit(SubmitData data) { if (Reddit.User == null) throw new RedditException("No user logged in."); var request = WebAgent.CreatePost(SubmitLinkUrl); WebAgent.WritePostBody(request.GetRequestStream(), data); var response = request.GetResponse(); var result = WebAgent.GetResponseString(response.GetResponseStream()); var json = JToken.Parse(result); ICaptchaSolver solver = Reddit.CaptchaSolver; if (json["json"]["errors"].Any() && json["json"]["errors"][0][0].ToString() == "BAD_CAPTCHA" && solver != null) { data.Iden = json["json"]["captcha"].ToString(); CaptchaResponse captchaResponse = solver.HandleCaptcha(new Captcha(data.Iden)); // We throw exception due to this method being expected to return a valid Post object, but we cannot // if we got a Captcha error. if (captchaResponse.Cancel) throw new CaptchaFailedException("Captcha verification failed when submitting " + data.Kind + " post"); data.Captcha = captchaResponse.Answer; return Submit(data); } else if (json["json"]["errors"].Any() && json["json"]["errors"][0][0].ToString() == "ALREADY_SUB") { throw new DuplicateLinkException(String.Format("Post failed when submitting. The following link has already been submitted: {0}", SubmitLinkUrl)); } return new Post().Init(Reddit, json["json"], WebAgent); }
private void LoadConsultation(List<FLOW_FLOWRECORDDETAIL_T> listDetail) { SubmitData submmitData = new SubmitData(); submmitData.FormID = AuditEntity.FormID; submmitData.ModelCode = AuditEntity.ModelCode; submmitData.ApprovalUser = new UserInfo(); submmitData.ApprovalUser.CompanyID = AuditEntity.CreateCompanyID; submmitData.ApprovalUser.DepartmentID = AuditEntity.CreateDepartmentID; submmitData.ApprovalUser.PostID = AuditEntity.CreatePostID; submmitData.ApprovalUser.UserID = AuditEntity.CreateUserID; submmitData.ApprovalUser.UserName = AuditEntity.CreateUserName; submmitData.ApprovalContent = AuditRemark; submmitData.NextStateCode = ""; submmitData.NextApprovalUser = new UserInfo(); submmitData.NextApprovalUser.CompanyID = NextCompanyID; submmitData.NextApprovalUser.DepartmentID = NextDepartmentID; submmitData.NextApprovalUser.PostID = NextPostID; submmitData.NextApprovalUser.UserID = NextUserID; submmitData.NextApprovalUser.UserName = NextUserName; submmitData.XML = this.XmlObject; //submmitData.SubmitFlag =SubmitFlag.Approval; string loginUserID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID; string loginUserName = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeName; #region 发送的咨询 List<ConsultationViewModel> listSend = new List<ConsultationViewModel>(); //登录人已发送的咨询 listDetail.Where(detail => (detail.EDITUSERID == loginUserID || detail.AGENTUSERID == loginUserID) && detail.FLOW_CONSULTATION_T != null).ForEach(item => { item.FLOW_CONSULTATION_T.ForEach(consultation => { ConsultationViewModel viewModel = new ConsultationViewModel(consultation, loginUserID, submmitData); viewModel.WaitingHandler += new EventHandler(viewModel_WaitingHandler); viewModel.CompletedHandler += new EventHandler(viewModel_CompletedHandler); listSend.Add(viewModel); }); }); //登录人发起新咨询 if (this.currentFLOWRECORDDETAIL != null) { if (listSend.FirstOrDefault(v => v.FlowConsultation.FLOW_FLOWRECORDDETAIL_T.FLOWRECORDDETAILID == this.currentFLOWRECORDDETAIL.FLOWRECORDDETAILID) == null) { FLOW_CONSULTATION_T consultation = new FLOW_CONSULTATION_T(); consultation.CONSULTATIONID = Guid.NewGuid().ToString(); consultation.CONSULTATIONUSERID = loginUserID; consultation.CONSULTATIONUSERNAME = loginUserName; consultation.FLAG = "0"; consultation.FLOW_FLOWRECORDDETAIL_T = this.currentFLOWRECORDDETAIL; if (this.currentFLOWRECORDDETAIL.FLOW_CONSULTATION_T == null) { this.currentFLOWRECORDDETAIL.FLOW_CONSULTATION_T = new ObservableCollection<FLOW_CONSULTATION_T>(); } this.currentFLOWRECORDDETAIL.FLOW_CONSULTATION_T.Add(consultation); ConsultationViewModel viewModel = new ConsultationViewModel(consultation, loginUserID, submmitData); viewModel.WaitingHandler += new EventHandler(viewModel_WaitingHandler); viewModel.CompletedHandler += new EventHandler(viewModel_CompletedHandler); listSend.Add(viewModel); } } if (listSend.Count > 0) { // this.expanderConsultationSend.IsExpanded = true;//龙康才:有咨询信息时默认展开 this.expanderConsultationSend.Visibility = System.Windows.Visibility.Visible; this.ConsultationListSend.ItemsSource = listSend; } else { this.expanderConsultationSend.Visibility = System.Windows.Visibility.Collapsed; } #endregion #region 回复咨询 List<ConsultationViewModel> listReply = new List<ConsultationViewModel>(); listDetail.Where(detail => detail.FLOW_CONSULTATION_T != null).ForEach(item => { item.FLOW_CONSULTATION_T.ForEach(consultation => { if (consultation.REPLYUSERID == loginUserID) { ConsultationViewModel viewModel = new ConsultationViewModel(consultation, loginUserID, submmitData); viewModel.WaitingHandler += new EventHandler(viewModel_WaitingHandler); viewModel.CompletedHandler += new EventHandler(viewModel_CompletedHandler); listReply.Add(viewModel); } }); }); if (listReply.Count > 0) { this.expanderConsultationSend.IsExpanded = true;//龙康才:有回复内容,咨询人的咨询信息时默认展开 this.expanderConsultationReply.IsExpanded = true;//龙康才:有回复内容信息时默认展开 this.expanderConsultationReply.Visibility = System.Windows.Visibility.Visible; this.ConsultationListReply.ItemsSource = listReply; } else { this.expanderConsultationReply.Visibility = System.Windows.Visibility.Collapsed; } #endregion #region old //List<ConsultationViewModel> listViewModel = new List<ConsultationViewModel>(); //#region 找出所有登录人的咨询 //listDetail.Where(detail => (detail.EDITUSERID == loginUserID || detail.AGENTUSERID == loginUserID) && detail.FLOW_CONSULTATION_T != null).ForEach(item => //{ // item.FLOW_CONSULTATION_T.ForEach(consultation => // { // ConsultationViewModel viewModel = new ConsultationViewModel(consultation, loginUserID, submmitData); // viewModel.WaitingHandler += new EventHandler(viewModel_WaitingHandler); // viewModel.CompletedHandler += new EventHandler(viewModel_CompletedHandler); // listViewModel.Add(viewModel); // }); //}); //#endregion //#region 登录人发起咨询 //if (this.currentFLOWRECORDDETAIL != null) //{ // if (listViewModel.FirstOrDefault(v => v.FlowConsultation.FLOW_FLOWRECORDDETAIL_T.FLOWRECORDDETAILID == this.currentFLOWRECORDDETAIL.FLOWRECORDDETAILID) == null) // { // FLOW_CONSULTATION_T consultation = new FLOW_CONSULTATION_T(); // consultation.CONSULTATIONID = Guid.NewGuid().ToString(); // consultation.CONSULTATIONUSERID = loginUserID; // consultation.CONSULTATIONUSERNAME = loginUserName; // consultation.FLAG = "0"; // consultation.FLOW_FLOWRECORDDETAIL_T = this.currentFLOWRECORDDETAIL; // if (this.currentFLOWRECORDDETAIL.FLOW_CONSULTATION_T == null) // { // this.currentFLOWRECORDDETAIL.FLOW_CONSULTATION_T = new ObservableCollection<FLOW_CONSULTATION_T>(); // } // this.currentFLOWRECORDDETAIL.FLOW_CONSULTATION_T.Add(consultation); // ConsultationViewModel viewModel = new ConsultationViewModel(consultation, loginUserID, submmitData); // viewModel.WaitingHandler += new EventHandler(viewModel_WaitingHandler); // viewModel.CompletedHandler += new EventHandler(viewModel_CompletedHandler); // listViewModel.Add(viewModel); // } //} //#endregion //if (listViewModel.Count == 0) //{ // #region 登录人为被咨询人 // listDetail.Where(detail => detail.FLOW_CONSULTATION_T != null).ForEach(item => // { // item.FLOW_CONSULTATION_T.ForEach(consultation => // { // if (consultation.REPLYUSERID == loginUserID) // { // ConsultationViewModel viewModel = new ConsultationViewModel(consultation, loginUserID, submmitData); // viewModel.WaitingHandler += new EventHandler(viewModel_WaitingHandler); // viewModel.CompletedHandler += new EventHandler(viewModel_CompletedHandler); // listViewModel.Add(viewModel); // } // }); // }); // #endregion //} //if (listViewModel.Count > 0) //{ // this.expanderConsultation.Visibility = System.Windows.Visibility.Visible; // this.ConsultationList.ItemsSource = listViewModel; //} //else //{ // this.expanderConsultation.Visibility = System.Windows.Visibility.Collapsed; //} #endregion if (listDetail.FirstOrDefault(detail => detail.EDITUSERID == loginUserID || detail.AGENTUSERID == loginUserID) != null) { this.gridAudit.Visibility = System.Windows.Visibility.Visible; } else { //this.gridAudit.Visibility = System.Windows.Visibility.Collapsed; } if (listDetail != null && listDetail.Count > 0 && (listDetail[0].FLOW_FLOWRECORDMASTER_T.CHECKSTATE == "2" || listDetail[0].FLOW_FLOWRECORDMASTER_T.CHECKSTATE == "3")) { this.expanderConsultationSend.Visibility = System.Windows.Visibility.Collapsed; } }
public static LocalResponse <PlayerData> SubmitLeaderboard(string inToken, int inPast, SubmitData inData) { if (!_instance.database.Tokens.ContainsKey(inToken)) { return new LocalResponse <PlayerData>() { isFailed = true, message = "Invalid Token" } } ; if (_instance.database.LeaderBoards == null || _instance.database.LeaderBoards.Count == 0) { return new LocalResponse <PlayerData>() { isFailed = true, message = "Empty table" } } ; var leaderboard = GetLeaderBoardByTournamentId(inData.tournamentId); if (leaderboard == null) { return new LocalResponse <PlayerData>() { isFailed = true, message = "Group Not found" } } ; var newPlayerData = new PlayerData() { uid = _instance.database.Tokens[inToken].ToString(), name = inData.name, scores = new ScoreData() { current = inData.score, past = inPast } }; leaderboard.group.players.Add(newPlayerData); return(new LocalResponse <PlayerData>() { result = newPlayerData }); }
/// <summary> /// 我的单据新增 /// </summary> /// <param name="model"></param> /// <returns></returns> public static bool AddPersonalRecord( SubmitData submitData, string state, FlowUser user, FLOW_FLOWRECORDMASTER_T entity) { try { string SystemCode = string.Empty; string modeCode = string.Empty; string modeName = string.Empty; string strEntityKey = string.Empty; string msgOpen = string.Empty; string strBusiness = submitData.XML; SetFileFromBusinessXml(strBusiness, ref SystemCode, ref modeCode, ref modeName, ref strEntityKey, ref msgOpen); Tracer.Debug("在填写我的单据时候的参数CHECKSTATE:" + state + "||模块名称:" + user.ModelName); T_PF_PERSONALRECORD model = new T_PF_PERSONALRECORD(); model.SYSTYPE = user.SysCode; model.PERSONALRECORDID = Guid.NewGuid().ToString(); model.ISFORWARD = "0"; model.ISVIEW = "0"; switch (state) { case "1": model.MODELCODE = submitData.ModelCode; model.MODELID = submitData.FormID; if (string.IsNullOrWhiteSpace(submitData.SumbitUserID) && string.IsNullOrWhiteSpace(submitData.SumbitCompanyID)) { //预算有这样情况submitData.SumbitUserID为空 model.OWNERCOMPANYID = submitData.ApprovalUser.CompanyID; model.OWNERDEPARTMENTID = submitData.ApprovalUser.DepartmentID; model.OWNERID = submitData.ApprovalUser.UserID; model.OWNERPOSTID = submitData.ApprovalUser.PostID; } else { model.OWNERCOMPANYID = submitData.SumbitCompanyID; model.OWNERDEPARTMENTID = submitData.SumbitDeparmentID; model.OWNERID = submitData.SumbitUserID; model.OWNERPOSTID = submitData.SumbitPostID; } model.MODELDESCRIPTION = string.Format("您{0}的[{1}]正在审核中!", DateTime.Now.ToString("MM月dd日HH:mm"), user.ModelName.Trim()); break; case "2": model.MODELID = submitData.FormID; model.MODELCODE = entity.MODELCODE; model.MODELDESCRIPTION = string.Format("您{0}的[{1}]已经审核通过!", entity.CREATEDATE.Value.ToString("MM月dd日HH:mm"), user.ModelName.Trim()); break; case "3": model.MODELID = submitData.FormID; model.MODELCODE = entity.MODELCODE; model.MODELDESCRIPTION = string.Format("您{0}的[{1}]已经审核不通过!", entity.CREATEDATE.Value.ToString("MM月dd日HH:mm"), user.ModelName.Trim()); break; } model.CHECKSTATE = state; model.CREATEDATE = DateTime.Now; model.CONFIGINFO = msgOpen;// ConvertXML(submitData); if (!string.IsNullOrWhiteSpace(model.CONFIGINFO)) { EnginFlowDAL dal = new EnginFlowDAL(); string recordID = dal.GetExistRecord(model.SYSTYPE, model.MODELCODE, model.MODELID, model.ISFORWARD); if (recordID != "") { return dal.UpdatePersonalRecord(model, recordID); } else { return dal.AddPersonalRecord(model); } } else { Tracer.Debug("在填写我的单据时候获取不到配置FormID:" + submitData.FormID + ""); } return false; } catch (Exception ex) { Tracer.Debug("在填写我的单据时候错误FormID:" + submitData.FormID + "||Exception" + ex.Message); throw new Exception(ex.Message, ex); } }
public string GetFlowDefine( SubmitData ApprovalData) { try { FlowUser user = new FlowUser(ApprovalData.ApprovalUser.CompanyID, ApprovalData.ApprovalUser.UserID, ApprovalData.ModelCode); user.TrackingMessage += "构建引擎消息FlowBLL.GetFlowDefine.GetFlowByModelName(ApprovalData.ApprovalUser.DepartmentID=" + ApprovalData.ApprovalUser.DepartmentID + ";OrgType='" + ((int)ApprovalData.FlowType).ToString() + ")'"; List<FLOW_MODELFLOWRELATION_T> MODELFLOWRELATION = GetFlowByModelName( ApprovalData.ApprovalUser.CompanyID, ApprovalData.ApprovalUser.DepartmentID, ApprovalData.ModelCode, ((int)ApprovalData.FlowType).ToString(), ref user); if (MODELFLOWRELATION == null || MODELFLOWRELATION.Count == 0) { return null; } return MODELFLOWRELATION.First().FLOW_FLOWDEFINE_T.LAYOUT; } catch (Exception e) { Tracer.Debug("构建引擎消息出错;异常信息\r\n" + e.ToString()); throw e; } }
public DataPar(Meter meter, SubmitData dataItem) { this.meter = meter; this.dataItem = dataItem; }
public bool UpdateAuditStatus(SubmitData submitData,string strSystemCode, string EntityType, string EntityKey, string EntityId, string strCheckState, ref string errorMsg) { bool bol = true; iUpdate = iUpdate + 1; string strMsg = "第 "+iUpdate+" 次更新业务系统" +"系统代号:" + strSystemCode + "\r\n" + "EntityType:" + EntityType + "\r\n" + "EntityId:" + EntityId + "\r\n" + "EntityKey:" + EntityKey + "\r\n" + "CheckState:" + strCheckState + "\r\n"; try { // 1:审核中;2审核通过;3:审核不通过 CheckStates CheckState = CheckStates.Approving; switch (strCheckState) { case "1": CheckState = CheckStates.Approving; break; case "2": CheckState = CheckStates.Approved; break; case "3": CheckState = CheckStates.UnApproved; break; case "4": CheckState = CheckStates.Cancel; break; } #region 配合新预算使用 string serviceErrorMsg = "";//业务系统的异常信息 StringBuilder sb = new StringBuilder(); sb.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); sb.AppendLine("<Params>"); sb.AppendLine(" <AuditUserID>" + submitData.ApprovalUser.UserID+ "</AuditUserID>"); sb.AppendLine(" <AuditUserName>" + submitData.ApprovalUser.UserName + "</AuditUserName>"); sb.AppendLine("</Params>"); Tracer.Debug(strMsg + ";\r\n 回调给业务系统的参数:" + sb.ToString()); bool bResult = WFUtility.UpdateFormCheckState(strSystemCode, EntityType, EntityKey, EntityId, CheckState, ref serviceErrorMsg, sb.ToString()); if (!bResult) { Tracer.Debug("更新审核状态失败\r\n"+strMsg); bol = false; if (string.IsNullOrEmpty(serviceErrorMsg.Trim())) { errorMsg = "业务系统更新出错,请联系管理员!\r\n FormID=" + EntityId; } else { errorMsg = serviceErrorMsg; } Tracer.Debug("bResult=" + bResult.ToString() + ";FormID=" + EntityId + " Utility.UpdateFormCheckState发生异常:" + strMsg + ";业务系统异常信息:" + serviceErrorMsg); return bol; } #endregion else { Tracer.Debug("bResult=" + bResult.ToString() + ";FormID=" + EntityId + " 更新审核状态成功\r\n" + strMsg); return bol; } } catch (Exception ex) { Tracer.Debug("FormID=" + EntityId +" 更新审核状态出现异常" + strMsg + "UpdateAuditStatus" + ex); return false; } }
public void ReplyConsultation( SMT.Workflow.Common.Model.FLOW_CONSULTATION_T flowConsultation, SubmitData submitData) { if (strIsFlowEngine.ToLower() == "true") { try { #region 记录日志 SMT.Workflow.Common.Model.FLOW_CONSULTATION_T entity = flowConsultation; StringBuilder sb = new StringBuilder(); sb.AppendLine("FLOW_CONSULTATION_T entity= new FLOW_CONSULTATION_T();");// sb.AppendLine("entity.CONSULTATIONID = \"" + entity.CONSULTATIONID + "\";");// sb.AppendLine("entity.FLOWRECORDDETAILID = \"" + (entity.FLOW_FLOWRECORDDETAIL_T == null ? "" : entity.FLOW_FLOWRECORDDETAIL_T.FLOWRECORDDETAILID) + "\";"); sb.AppendLine("entity.CONSULTATIONUSERID = \"" + entity.CONSULTATIONUSERID + "\";"); sb.AppendLine("entity.CONSULTATIONUSERNAME = \"" + entity.CONSULTATIONUSERNAME + "\";"); sb.AppendLine("entity.CONSULTATIONCONTENT =\"" + entity.CONSULTATIONCONTENT + "\";"); sb.AppendLine("entity.CONSULTATIONDATE = \"" + entity.CONSULTATIONDATE + "\";"); sb.AppendLine("entity.REPLYUSERID = \"" + entity.REPLYUSERID + "\";"); sb.AppendLine("entity.REPLYUSERNAME = \"" + entity.REPLYUSERNAME + "\";"); sb.AppendLine("entity.REPLYCONTENT = \"" + entity.REPLYCONTENT + "\";"); sb.AppendLine("entity.REPLYDATE = \"" + entity.REPLYDATE + "\";"); sb.AppendLine("entity.FLAG = \"" + entity.FLAG + "\";");//0未回复,1回复 sb.AppendLine("FLOW_FLOWRECORDDETAIL_T model=new FLOW_FLOWRECORDDETAIL_T();"); sb.AppendLine(" model.FLOWRECORDDETAILID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOWRECORDDETAILID + "\";"); //sb.AppendLine(" model.FLOWRECORDMASTERID=\""+entity.FLOW_FLOWRECORDDETAIL_T.FLOWRECORDMASTERID+"\";"); sb.AppendLine(" model.STATECODE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.STATECODE + "\";"); sb.AppendLine(" model.PARENTSTATEID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.PARENTSTATEID + "\";"); sb.AppendLine(" model.CONTENT=\"" + entity.FLOW_FLOWRECORDDETAIL_T.CONTENT + "\";"); sb.AppendLine(" model.CHECKSTATE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.CHECKSTATE + "\";//同意:1,不同意:0 ,未处理:2,会签同意7,会签不同意8"); sb.AppendLine(" model.FLAG=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLAG + "\";//已审批:1,未审批:0"); sb.AppendLine(" model.CREATEUSERID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.CREATEUSERID + "\";"); sb.AppendLine(" model.CREATEUSERNAME=\"" + entity.FLOW_FLOWRECORDDETAIL_T.CREATEUSERNAME + "\";"); sb.AppendLine(" model.CREATECOMPANYID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.CREATECOMPANYID + "\";"); sb.AppendLine(" model.CREATEDEPARTMENTID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.CREATEDEPARTMENTID + "\";"); sb.AppendLine(" model.CREATEPOSTID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.CREATEPOSTID + "\";"); sb.AppendLine(" model.CREATEDATE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.CREATEDATE + "\";"); sb.AppendLine(" model.EDITUSERID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.EDITUSERID + "\";"); sb.AppendLine(" model.EDITUSERNAME=\"" + entity.FLOW_FLOWRECORDDETAIL_T.EDITUSERNAME + "\";"); sb.AppendLine(" model.EDITCOMPANYID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.EDITCOMPANYID + "\";"); sb.AppendLine(" model.EDITDEPARTMENTID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.EDITDEPARTMENTID + "\";"); sb.AppendLine(" model.EDITPOSTID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.EDITPOSTID + "\";"); sb.AppendLine(" model.EDITDATE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.EDITDATE + "\";"); sb.AppendLine(" model.AGENTUSERID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.AGENTUSERID + "\";"); sb.AppendLine(" model.AGENTERNAME=\"" + entity.FLOW_FLOWRECORDDETAIL_T.AGENTERNAME + "\";"); sb.AppendLine(" model.AGENTEDITDATE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.AGENTEDITDATE + "\";"); sb.AppendLine(" entity.FLOW_FLOWRECORDDETAIL_T = model;"); sb.AppendLine("FLOW_FLOWRECORDMASTER_T eentity=new FLOW_FLOWRECORDMASTER_T();"); sb.AppendLine(" eentity.FLOWRECORDMASTERID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.FLOWRECORDMASTERID + "\";"); sb.AppendLine(" eentity.INSTANCEID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.INSTANCEID + "\";"); sb.AppendLine(" eentity.FLOWSELECTTYPE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.FLOWSELECTTYPE + "\";//0:固定流程,1:自选流程"); sb.AppendLine(" eentity.MODELCODE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.MODELCODE + "\";"); sb.AppendLine(" eentity.FLOWCODE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.FLOWCODE + "\";"); sb.AppendLine(" eentity.FORMID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.FORMID + "\";"); sb.AppendLine(" eentity.FLOWTYPE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.FLOWTYPE + "\";//0:审批流程,1:任务流程"); sb.AppendLine(" eentity.CHECKSTATE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.CHECKSTATE + "\";//1:审批中,2:审批通过,3审批不通过,5撤销(为与字典保持一致)"); sb.AppendLine(" eentity.CREATEUSERID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.CREATEUSERID + "\";"); sb.AppendLine(" eentity.CREATEUSERNAME=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.CREATEUSERNAME + "\";"); sb.AppendLine(" eentity.CREATECOMPANYID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.CREATECOMPANYID + "\";"); sb.AppendLine(" eentity.CREATEDEPARTMENTID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.CREATEDEPARTMENTID + "\";"); sb.AppendLine(" eentity.CREATEPOSTID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.CREATEPOSTID + "\";"); sb.AppendLine(" eentity.CREATEDATE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.CREATEDATE + "\";"); sb.AppendLine(" eentity.EDITUSERID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.EDITUSERID + "\";"); sb.AppendLine(" eentity.EDITUSERNAME=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.EDITUSERNAME + "\";"); sb.AppendLine(" eentity.EDITDATE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.EDITDATE + "\";"); sb.AppendLine(" eentity.ACTIVEROLE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.ACTIVEROLE + "\";"); sb.AppendLine(" eentity.BUSINESSOBJECT=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.BUSINESSOBJECT + "\";"); sb.AppendLine(" eentity.KPITIMEXML=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.KPITIMEXML + "\";"); sb.AppendLine(" entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T = eentity;"); Tracer.Debug("流程引擎的XML数据 SubimtFlow入口处 回复咨询信息: FormID=" + submitData.FormID + ";ModelCode=" + submitData.ModelCode + " \r\n FLOW_CONSULTATION_T 实体:\r\n" + sb.ToString()); LogSubmitData(submitData); #endregion //FlowEngineService.EngineWcfGlobalFunctionClient FlowEngine = new FlowEngineService.EngineWcfGlobalFunctionClient(); EnginFlowBLL FlowEngine = new EnginFlowBLL(); //Byte[] Bo = System.Text.UTF8Encoding.UTF8.GetBytes(submitData.XML); //XElement xemeBoObject = XElement.Load(System.Xml.XmlReader.Create(new MemoryStream(Bo))); //string strSystemCode = (from item in xemeBoObject.Descendants("Name") select item).FirstOrDefault().Value; ModelInfo modelinfo = FlowBLL.GetSysCodeByModelCode( submitData.ModelCode); // FlowEngine.FlowConsultatiClose(modelinfo.SysCode, flowConsultation.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.FORMID, flowConsultation.REPLYUSERID); FlowEngine.FlowConsultatiClose( modelinfo.SysCode, flowConsultation.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.FORMID, flowConsultation.REPLYUSERID); FlowBLL bll = new FlowBLL(); bll.ReplyConsultation( flowConsultation); } catch (Exception ex) { Tracer.Debug("回复咨询出错,异常信息: FORMID=" + flowConsultation.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.FORMID + "异常信息:\r\n" + ex.InnerException + ex.Message); throw ex; } } }
/// <summary> /// 将异常信息记录到流程监控表里 /// </summary> /// <param name="submitData">SubmitData</param> /// <param name="flowUser">FlowUser</param> public static void AddFlowMonitor(SubmitData submitData, FlowUser flowUser) { try { #region 提交信息 StringBuilder sb = new StringBuilder(); sb.AppendLine("submitData.FlowSelectType =FlowSelectType." + submitData.FlowSelectType + ";"); sb.AppendLine("submitData.FormID = \"" + submitData.FormID + "\";"); sb.AppendLine("submitData.ModelCode = \"" + submitData.ModelCode + "\";"); sb.AppendLine("submitData.ApprovalUser = new UserInfo();"); sb.AppendLine("submitData.ApprovalUser.CompanyID = \"" + submitData.ApprovalUser.CompanyID + "\";"); sb.AppendLine("submitData.ApprovalUser.DepartmentID = \"" + submitData.ApprovalUser.DepartmentID + "\";"); sb.AppendLine("submitData.ApprovalUser.PostID = \"" + submitData.ApprovalUser.PostID + "\";"); sb.AppendLine("submitData.ApprovalUser.UserID = \"" + submitData.ApprovalUser.UserID + "\";"); sb.AppendLine("submitData.ApprovalUser.UserName = \"" + submitData.ApprovalUser.UserName + "\";"); sb.AppendLine("submitData.NextStateCode = \"" + (submitData.NextStateCode != null ? submitData.NextStateCode : "空") + "\";"); sb.AppendLine("submitData.NextApprovalUser = new UserInfo();"); sb.AppendLine("submitData.NextApprovalUser.CompanyID = \"" + (submitData.NextApprovalUser != null ? submitData.NextApprovalUser.CompanyID : "空") + "\";"); sb.AppendLine("submitData.NextApprovalUser.DepartmentID = \"" + (submitData.NextApprovalUser != null ? submitData.NextApprovalUser.DepartmentID : "空") + "\";"); sb.AppendLine("submitData.NextApprovalUser.PostID = \"" + (submitData.NextApprovalUser != null ? submitData.NextApprovalUser.PostID : "空") + "\";"); sb.AppendLine("submitData.NextApprovalUser.UserID = \"" + (submitData.NextApprovalUser != null ? submitData.NextApprovalUser.UserID : "空") + "\";"); sb.AppendLine("submitData.NextApprovalUser.UserName = \"" + (submitData.NextApprovalUser != null ? submitData.NextApprovalUser.UserName : "******") + "\";"); sb.AppendLine("submitData.SubmitFlag = SubmitFlag." + submitData.SubmitFlag + ";"); // sb.AppendLine("submitData.XML = \"" + submitData.XML + "\";"); sb.AppendLine("submitData.FlowType = FlowType." + submitData.FlowType.ToString() + ";"); sb.AppendLine("submitData.ApprovalResult = ApprovalResult." + submitData.ApprovalResult.ToString() + ";"); sb.AppendLine("submitData.ApprovalContent = \"" + submitData.ApprovalContent + "\";"); #region 提交人信息 sb.AppendLine("submitData.SumbitCompanyID = \"" + submitData.SumbitCompanyID + "\";"); sb.AppendLine("submitData.SumbitDeparmentID = \"" + submitData.SumbitDeparmentID + "\";"); sb.AppendLine("submitData.SumbitPostID = \"" + submitData.SumbitPostID + "\";"); sb.AppendLine("submitData.SumbitUserID = \"" + submitData.SumbitUserID + "\";"); sb.AppendLine("submitData.SumbitUserName = \"" + submitData.SumbitUserName + "\";"); #endregion #endregion FLOW_EXCEPTIONLOG entity = new FLOW_EXCEPTIONLOG(); entity.ID = Guid.NewGuid().ToString().Replace("-", ""); //主键ID entity.FORMID = submitData.FormID; //业务ID entity.MODELCODE = submitData.ModelCode; //模块代码 entity.CREATEDATE = DateTime.Now; //创建日期 entity.CREATENAME = submitData.SumbitUserID == null ? submitData.ApprovalUser.UserName : submitData.SumbitUserName; //创建人 entity.SUBMITINFO = sb.ToString(); //提交信息 entity.LOGINFO = flowUser.ErrorMsg; //异常日志信息 entity.MODELNAME = flowUser.ModelName; //模块名称 entity.OWNERID = submitData.ApprovalUser.UserID; //单据所属人ID entity.OWNERNAME = submitData.ApprovalUser.UserName; //单据所属人姓名 entity.OWNERCOMPANYID = submitData.ApprovalUser.CompanyID; //单据所属人公司ID entity.OWNERCOMPANYNAME = (submitData.SumbitUserID == submitData.ApprovalUser.UserID)?flowUser.CompayName: submitData.ApprovalUser.CompanyName; //单据所属人公司名称 entity.OWNERDEPARMENTID = submitData.ApprovalUser.DepartmentID; //单据所属人部门ID entity.OWNERDEPARMENTNAME = (submitData.SumbitUserID == submitData.ApprovalUser.UserID) ? flowUser.DepartmentName : submitData.ApprovalUser.DepartmentName; //单据所属人部门名称 entity.OWNERPOSTID = submitData.ApprovalUser.PostID; //单据所属人岗位ID entity.OWNERPOSTNAME = (submitData.SumbitUserID == submitData.ApprovalUser.UserID) ? flowUser.PostName : submitData.ApprovalUser.PostName; //单据所属人岗位名称 entity.AUDITSTATE = submitData.ApprovalResult == ApprovalResult.Pass ? "审核通过" : "审核不通过"; //审核状态;审核通过,审核不通过 FLOW_EXCEPTIONLOGDAL dal = new FLOW_EXCEPTIONLOGDAL(); dal.Add(dal.GetOracleConnection(), entity); LogHelper.WriteLog("Formid=" + submitData.FormID + ";将异常信息记录到流程监控表里,成功!"); } catch (Exception e) { LogHelper.WriteLog("Formid=" + submitData.FormID + ";将异常信息记录到流程监控表里,出错:异常信息:" + e.ToString()); // throw e; } }
public void AddConsultation( SMT.Workflow.Common.Model.FLOW_CONSULTATION_T flowConsultation, SubmitData submitData) { if (strIsFlowEngine.ToLower() == "true") { try { #region 记录日志 SMT.Workflow.Common.Model.FLOW_CONSULTATION_T entity = flowConsultation; StringBuilder sb = new StringBuilder(); sb.AppendLine("FLOW_CONSULTATION_T entity= new FLOW_CONSULTATION_T();");// sb.AppendLine("entity.CONSULTATIONID = \"" + entity.CONSULTATIONID + "\";");// sb.AppendLine("entity.FLOWRECORDDETAILID = \"" + (entity.FLOW_FLOWRECORDDETAIL_T == null ? "" : entity.FLOW_FLOWRECORDDETAIL_T.FLOWRECORDDETAILID) + "\";"); sb.AppendLine("entity.CONSULTATIONUSERID = \"" + entity.CONSULTATIONUSERID + "\";"); sb.AppendLine("entity.CONSULTATIONUSERNAME = \"" + entity.CONSULTATIONUSERNAME + "\";"); sb.AppendLine("entity.CONSULTATIONCONTENT =\"" + entity.CONSULTATIONCONTENT + "\";"); sb.AppendLine("entity.CONSULTATIONDATE = \"" + entity.CONSULTATIONDATE + "\";"); sb.AppendLine("entity.REPLYUSERID = \"" + entity.REPLYUSERID + "\";"); sb.AppendLine("entity.REPLYUSERNAME = \"" + entity.REPLYUSERNAME + "\";"); sb.AppendLine("entity.REPLYCONTENT = \"" + entity.REPLYCONTENT + "\";"); sb.AppendLine("entity.REPLYDATE = \"" + entity.REPLYDATE + "\";"); sb.AppendLine("entity.FLAG = \"" + entity.FLAG + "\";");//0未回复,1回复 sb.AppendLine("FLOW_FLOWRECORDDETAIL_T model=new FLOW_FLOWRECORDDETAIL_T();"); sb.AppendLine(" model.FLOWRECORDDETAILID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOWRECORDDETAILID + "\";"); //sb.AppendLine(" model.FLOWRECORDMASTERID=\""+entity.FLOW_FLOWRECORDDETAIL_T.FLOWRECORDMASTERID+"\";"); sb.AppendLine(" model.STATECODE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.STATECODE + "\";"); sb.AppendLine(" model.PARENTSTATEID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.PARENTSTATEID + "\";"); sb.AppendLine(" model.CONTENT=\"" + entity.FLOW_FLOWRECORDDETAIL_T.CONTENT + "\";"); sb.AppendLine(" model.CHECKSTATE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.CHECKSTATE + "\";//同意:1,不同意:0 ,未处理:2,会签同意7,会签不同意8"); sb.AppendLine(" model.FLAG=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLAG + "\";//已审批:1,未审批:0"); sb.AppendLine(" model.CREATEUSERID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.CREATEUSERID + "\";"); sb.AppendLine(" model.CREATEUSERNAME=\"" + entity.FLOW_FLOWRECORDDETAIL_T.CREATEUSERNAME + "\";"); sb.AppendLine(" model.CREATECOMPANYID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.CREATECOMPANYID + "\";"); sb.AppendLine(" model.CREATEDEPARTMENTID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.CREATEDEPARTMENTID + "\";"); sb.AppendLine(" model.CREATEPOSTID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.CREATEPOSTID + "\";"); sb.AppendLine(" model.CREATEDATE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.CREATEDATE + "\";"); sb.AppendLine(" model.EDITUSERID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.EDITUSERID + "\";"); sb.AppendLine(" model.EDITUSERNAME=\"" + entity.FLOW_FLOWRECORDDETAIL_T.EDITUSERNAME + "\";"); sb.AppendLine(" model.EDITCOMPANYID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.EDITCOMPANYID + "\";"); sb.AppendLine(" model.EDITDEPARTMENTID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.EDITDEPARTMENTID + "\";"); sb.AppendLine(" model.EDITPOSTID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.EDITPOSTID + "\";"); sb.AppendLine(" model.EDITDATE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.EDITDATE + "\";"); sb.AppendLine(" model.AGENTUSERID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.AGENTUSERID + "\";"); sb.AppendLine(" model.AGENTERNAME=\"" + entity.FLOW_FLOWRECORDDETAIL_T.AGENTERNAME + "\";"); sb.AppendLine(" model.AGENTEDITDATE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.AGENTEDITDATE + "\";"); sb.AppendLine(" entity.FLOW_FLOWRECORDDETAIL_T = model;"); sb.AppendLine("FLOW_FLOWRECORDMASTER_T eentity=new FLOW_FLOWRECORDMASTER_T();"); sb.AppendLine(" eentity.FLOWRECORDMASTERID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.FLOWRECORDMASTERID + "\";"); sb.AppendLine(" eentity.INSTANCEID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.INSTANCEID + "\";"); sb.AppendLine(" eentity.FLOWSELECTTYPE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.FLOWSELECTTYPE + "\";//0:固定流程,1:自选流程"); sb.AppendLine(" eentity.MODELCODE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.MODELCODE + "\";"); sb.AppendLine(" eentity.FLOWCODE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.FLOWCODE + "\";"); sb.AppendLine(" eentity.FORMID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.FORMID + "\";"); sb.AppendLine(" eentity.FLOWTYPE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.FLOWTYPE + "\";//0:审批流程,1:任务流程"); sb.AppendLine(" eentity.CHECKSTATE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.CHECKSTATE + "\";//1:审批中,2:审批通过,3审批不通过,5撤销(为与字典保持一致)"); sb.AppendLine(" eentity.CREATEUSERID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.CREATEUSERID + "\";"); sb.AppendLine(" eentity.CREATEUSERNAME=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.CREATEUSERNAME + "\";"); sb.AppendLine(" eentity.CREATECOMPANYID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.CREATECOMPANYID + "\";"); sb.AppendLine(" eentity.CREATEDEPARTMENTID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.CREATEDEPARTMENTID + "\";"); sb.AppendLine(" eentity.CREATEPOSTID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.CREATEPOSTID + "\";"); sb.AppendLine(" eentity.CREATEDATE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.CREATEDATE + "\";"); sb.AppendLine(" eentity.EDITUSERID=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.EDITUSERID + "\";"); sb.AppendLine(" eentity.EDITUSERNAME=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.EDITUSERNAME + "\";"); sb.AppendLine(" eentity.EDITDATE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.EDITDATE + "\";"); sb.AppendLine(" eentity.ACTIVEROLE=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.ACTIVEROLE + "\";"); sb.AppendLine(" eentity.BUSINESSOBJECT=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.BUSINESSOBJECT + "\";"); sb.AppendLine(" eentity.KPITIMEXML=\"" + entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.KPITIMEXML + "\";"); sb.AppendLine(" entity.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T = eentity;"); Tracer.Debug("流程引擎的XML数据"+ "SubimtFlow入口处 进行咨询: FormID=" + submitData.FormID + ";ModelCode=" + submitData.ModelCode + " \r\n FLOW_CONSULTATION_T 实体:\r\n" + sb.ToString()); LogSubmitData(submitData); #endregion flowConsultation.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T = FlowBLL.GetFLOW_FLOWRECORDMASTER_T( flowConsultation.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.FLOWRECORDMASTERID); //FlowEngineService.EngineWcfGlobalFunctionClient FlowEngine = new FlowEngineService.EngineWcfGlobalFunctionClient(); //FlowEngineService.CustomUserMsg[] cs = new FlowEngineService.CustomUserMsg[1]; //FlowEngineService.CustomUserMsg cu = new FlowEngineService.CustomUserMsg(); //cu.FormID = flowConsultation.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.FORMID; //cu.UserID = flowConsultation.REPLYUSERID; //cs[0] = cu; List<CustomUserMsg> UserAndForm = new List<CustomUserMsg>(); CustomUserMsg cu = new CustomUserMsg(); cu.FormID = flowConsultation.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.FORMID; cu.UserID = flowConsultation.REPLYUSERID; UserAndForm.Add(cu); ModelInfo modelinfo = FlowBLL.GetSysCodeByModelCode( submitData.ModelCode); MessageData tmpMessageData = new MessageData("Flow", modelinfo.SysCode, flowConsultation.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.CREATECOMPANYID, submitData.ModelCode, modelinfo.ModelName, submitData.FormID, flowConsultation.FLOW_FLOWRECORDDETAIL_T.STATECODE, flowConsultation.FLOW_FLOWRECORDDETAIL_T.CHECKSTATE, "", "", "", ""); FlowBLL flowBLL = new FlowBLL(); StringBuilder FlowResultXml = flowBLL.BuildMessageData(tmpMessageData); //FlowEngine = new FlowEngineService.EngineWcfGlobalFunctionClient(); //log = FlowEngine.SaveFlowTriggerData(FlowResultXml.ToString(), submitData.XML); if (!string.IsNullOrEmpty(flowConsultation.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.BUSINESSOBJECT)) { submitData.XML = flowConsultation.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.BUSINESSOBJECT; } //bool b = FlowEngine.FlowConsultati(cs, "", FlowResultXml.ToString(), submitData.XML); EnginFlowBLL efbll = new EnginFlowBLL(); bool b = efbll.FlowConsultati( UserAndForm, "", FlowResultXml.ToString(), submitData.XML); if (!b) { Tracer.Debug("发送咨询失败:FormID" + flowConsultation.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.FORMID + "\n\r submitData.XML:" + submitData.XML); } FlowBLL bll = new FlowBLL(); bll.AddConsultation( flowConsultation); } catch (Exception ex) { Tracer.Debug("发送咨询出错: FORMID=" + flowConsultation.FLOW_FLOWRECORDDETAIL_T.FLOW_FLOWRECORDMASTER_T.FORMID + "异常信息:\r\n" + ex.InnerException + ex.Message); throw ex; } finally { } } }
public virtual string ModuleMerge(string ds, string xml, string pageStyle) { DateTime d1 = DateTime.Now; //try //{ xml = Xml(xml); IPageViewTool tool = null; List <Func <SubmitData, SubmitData> > resultFunList = new List <Func <SubmitData, SubmitData> >(); Merge(ds, xml, pageStyle, out tool, resultFunList); int res = 0; var dbContext = AtawAppContext.Current.UnitOfData; DateTime d0 = DateTime.Now; if (dbContext != null) { res = AtawAppContext.Current.UnitOfData.Submit(); } int objRes = (AtawAppContext.Current.PageFlyweight.PageItems["ATAW_DATASOURCE_RETURN"] ?? "0").Value <int>(); if (objRes > 0) { res = objRes; } var insertKeys = AtawAppContext.Current.PageFlyweight.PageItems["InsertKeys"] as List <string>; //DateTime d2 = DateTime.Now; //string dd = (d2 - d0).TotalMilliseconds.ToString(); //if (insertKeys != null) //{ // return ReturnJsonObject("{\"res\":" + res + ",\"keys\":\"" + String.Join(",", insertKeys) + "\"}"); //} SubmitData data = new SubmitData() { DataSourceInt = objRes, SubmitInt = res, InsertKeys = insertKeys, Result = null }; foreach (Func <SubmitData, SubmitData> fun in resultFunList) { data = fun(data); } if (data.Result != null) { string str = FastJson(data.Result); AtawTrace.WriteFile(LogType.JsonData, str); HttpContext.Response.HeaderEncoding = Encoding.UTF8; return(str); } else { //return ReturnJsonObject("{\"res\":" + res + ",\"keys\":\"\"}"); return(tool.EndModuleMergeInterceptor(res, objRes, insertKeys)); } // } //catch (AtawLegalException ex) //{ // JsResponseResult<object> ree = new JsResponseResult<object>() // { // ActionType = JsActionType.Alert, // Content = ex.Message // }; // return FastJson(ree); //} //return FastJson(source.Result); //foreach(Da) }