private DataResult<IList<Employee>> LoadEmployees(CancellationToken token, IProgress<double> progress) { var employees = XDocument.Load(@"data\sampledata.xml") .Descendants("Employee") .Select(x => new Employee { Number = int.Parse(x.Descendants("Number").First().Value), Name = x.Descendants("Name").First().Value, Surname = x.Descendants("Surname").First().Value, Salary = double.Parse(x.Descendants("Salary").First().Value) }) .ToList(); var itemIndex = 0; var result = new DataResult<IList<Employee>> { Result = new List<Employee>() }; try { foreach (var employee in employees) { Thread.CurrentThread.Join(100); result.Result.Add(employee); token.ThrowIfCancellationRequested(); progress.Report((++itemIndex*100)/employees.Count); } } catch (OperationCanceledException ex) { result.Exception = ex; } return result; }
public static void Main(string[] args) { //Object to Hold Task Parameters TaskDimensions task = new TaskDimensions(); //Dictionary that contains a list of top ten jobs compared with other jobs for each user Dictionary<int, List<TopJobData>> finalList = new Dictionary<int, List<TopJobData>>(); //User number to start proccessing int user_number = 1; IFileSystemSvc svc = new FileSystemSvcImpl(); //Method call to get the number of jobs and users from the file Y svc.detectSizeOfJobsColumns(task, Directory.GetCurrentDirectory()+"/files/Y1.txt"); //Method call to get the number of features from the file X, and allocating the X matrix double[,] X = svc.getNumberOfFeaturesX(Directory.GetCurrentDirectory() + "/files/X1.txt", task); svc.readFeaturesX(X, Directory.GetCurrentDirectory() + "/files/X1.txt", task); //Method call to get the jobs names String[] job_list = svc.readJobNames(Directory.GetCurrentDirectory() + "/files/job_names1.txt", task); //Creating a variable to write in a File the job recommendations and comparisons StreamWriter writeText = svc.getResultStreamWriter(); while (user_number <= task.num_users_init) { // Movie rating file for a user double[,] my_ratings = new double[task.num_jobs_init, 1]; //Now we read R and Y from theirs files (-1 because I will remove the chosen user from the matrixes) double[,] Y = svc.readTrainingY(Directory.GetCurrentDirectory() + "/files/Y1.txt", task, my_ratings, user_number); double[,] R = svc.readTrainingR(Directory.GetCurrentDirectory() + "/files/R1.txt", task, user_number); //Creating a MatLab reference to execute the recommended job script IMatlabSvc matSvc = new MatlabSvcImpl(); object[] res = matSvc.executeFilter(task, job_list, Directory.GetCurrentDirectory()+ "/files", my_ratings, Y, R, X, user_number); //Each time creates a to be used to write the recommended jobs in a file List<TopJobData> mylist = svc.writeValuesToFile(writeText, res, job_list, user_number); //adding the list at the Dictionary for each user finalList.Add(user_number, mylist); user_number++; } writeText.Close(); //creating a instance of DataResult to be used to write the averages in a file DataResult avgs = new DataResult(finalList, 10); avgs.calculateAverages(); Console.WriteLine("DONE"); // Wait until fisnih Console.ReadLine(); }
public bool insertRecommenderJob(DataResult avgs) { bool flag = false; ElasticService.ServiceWCFClient ws = new ElasticService.ServiceWCFClient(); for (int n=0; n < avgs.Number_top_jobs; n++) { ElasticService.RecommendedJobDto job = new ElasticService.RecommendedJobDto(); job.RecruiteeId = new Guid(avgs.User_profile.UserID); job.JobId = new Guid(avgs.TopJobNames[n]); job.PredictedRankingValue = avgs.Mylist.ElementAt(n).PredRecJob; flag = ws.insertRecommendedJob(job); } return flag; }
/// <summary> /// 获取输出到客户端的json /// </summary> public virtual string GetJsonResult() { DataSet ds = SqlHelper2.ExecuteDataset(PagingParameters.ProcedureName, PagingParameters.ProcedureParameters); DataTable table = ds.Tables[0]; // 存储过程已经执行完毕,可以获取到输出参数Total的值 int total = PagingParameters.Total; // 计算总页数 int pageCount = total%PagingParameters.PageSize == 0? total/PagingParameters.PageSize: total/PagingParameters.PageSize + 1; var dataResult = new DataResult { Data = table, PageIndex = PagingParameters.PageIndex, PageCount = pageCount, Total = total }; // 序列化DataResult对象 string json = JsonHelper3.Serialize(dataResult); return json; }
/// <summary> /// 创建采购退货单 /// </summary> /// <returns></returns> public ActionResult Create() { string CompanyID = WebUtil.GetFormValue <string>("CompanyID", string.Empty); PurchaseReturnEntity entity = WebUtil.GetFormObject <PurchaseReturnEntity>("Entity"); List <PurchaseReturnDetailEntity> list = WebUtil.GetFormObject <List <PurchaseReturnDetailEntity> >("List"); entity.CompanyID = entity.CompanyID.IsEmpty() ? CompanyID : entity.CompanyID; Bill <PurchaseReturnEntity, PurchaseReturnDetailEntity> bill = new PurchaseReturnOrder(CompanyID); string returnValue = bill.Create(entity, list); DataResult result = new DataResult(); if (EnumHelper.GetEnumDesc <EReturnStatus>(EReturnStatus.Success) == returnValue) { result.Code = (int)EResponseCode.Success; result.Message = "采购退货单创建成功"; } else { result.Code = (int)EResponseCode.Exception; result.Message = "采购退货单创建失败"; } return(Content(JsonHelper.SerializeObject(result))); }
/// <summary> /// 取消采购退货单 /// </summary> /// <returns></returns> public ActionResult Cancel() { string SnNum = WebUtil.GetFormValue <string>("SnNum"); string CompanyID = WebUtil.GetFormValue <string>("CompanyID", string.Empty); PurchaseReturnEntity entity = new PurchaseReturnEntity(); entity.SnNum = SnNum; entity.CompanyID = CompanyID; Bill <PurchaseReturnEntity, PurchaseReturnDetailEntity> bill = new PurchaseReturnOrder(CompanyID); string returnValue = bill.Cancel(entity); DataResult result = new DataResult(); if (EnumHelper.GetEnumDesc <EReturnStatus>(EReturnStatus.Success) == returnValue) { result.Code = (int)EResponseCode.Success; result.Message = "操作成功"; } else { result.Code = (int)EResponseCode.Exception; result.Message = "操作失败"; } return(Content(JsonHelper.SerializeObject(result))); }
public DataResult Execute(SqlParseResult result) { if (!result.Success) { var r = new DataResult() { Message = result.Message, Exception = result.Exception, Success = result.Success, TransactionID = base.TransactionID, ExecuteMethod = "EntityApi.Execute", CommandType = CommandType.Text, AffectedCount = 0, ScalarValue = null, Command = result.Command, }; r.Datas.AddRange(result.Datas); r.Parameters.AddRange(result.AllParameters); } return(ExecuteSql( result.Command, result.AllParameters.ToArray() )); }
public async Task <ZKData <T> > GetZKDataAsync <T>(string path, bool returnNullIfPathNotExists) { ZKData <T> zkData = null; try { DataResult dataResult = await RetryUntilConnected(async() => { return(await _connection.GetDataAsync(path, HasListeners(path))); }); zkData = new ZKData <T>(); zkData.data = Derializable <T>(dataResult.Data); zkData.stat = dataResult.Stat; } catch (NoNodeException e) { if (!returnNullIfPathNotExists) { throw e; } } return(zkData); }
/// <summary> /// Binds the report. /// </summary> private void BindReport() { DataCommand cmd = OrderDataHelper.CreateTranDataCommand(); cmd.CommandText = "[ecf_reporting_NewAccounts]"; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters = new DataParameters(); cmd.Parameters.Add(new DataParameter("ApplicationId", CatalogConfiguration.Instance.ApplicationId, DataParameterType.UniqueIdentifier)); cmd.Parameters.Add(new DataParameter("interval", GroupBy.SelectedValue, DataParameterType.VarChar)); cmd.Parameters.Add(new DataParameter("startdate", StartDate.Value.ToUniversalTime(), DataParameterType.DateTime)); cmd.Parameters.Add(new DataParameter("enddate", EndDate.Value.ToUniversalTime(), DataParameterType.DateTime)); cmd.TableMapping = DataHelper.MapTables("NewAccountsReport"); cmd.DataSet = new Mediachase.Web.Console.Reporting.DataSources.CustomersDataSet(); DataResult results = DataService.LoadDataSet(cmd); ReportDataSource source = new ReportDataSource(); source.Name = "NewAccountsReport"; source.Value = ((Mediachase.Web.Console.Reporting.DataSources.CustomersDataSet)results.DataSet).NewAccountsReport; MyReportViewer.LocalReport.DataSources.Clear(); MyReportViewer.LocalReport.DataSources.Add(source); MyReportViewer.DataBind(); }
public JsonResult CreateCommentReply([FromForm] string token, [FromForm] int commentId, [FromForm] string contents, [FromForm] int toUserId) { DataResult dr = new DataResult(); try { if (commentId < 10000 || string.IsNullOrWhiteSpace(contents) || toUserId < 10000) { dr.code = "201"; dr.msg = "参数错误"; return(Json(dr)); } UserEntity userEntity = this.GetUserByToken(token); CommentReplyBLL commentReplyBLL = new CommentReplyBLL(); int rows = commentReplyBLL.Create(commentId, toUserId, userEntity.userId, contents); if (rows > 0) { dr.code = "200"; dr.msg = "成功"; } else { dr.code = "201"; dr.msg = "失败"; } } catch (Exception ex) { dr.code = "999"; dr.msg = ex.Message; } return(Json(dr)); }
/// <summary> /// 根据唯一编号删除出库单 /// </summary> /// <returns></returns> public ActionResult DeleteSingle() { string SnNum = WebUtil.GetFormValue <string>("SnNum"); string CompanyID = WebUtil.GetFormValue <string>("CompanyID", string.Empty); OutStorageEntity entity = new OutStorageEntity(); entity.SnNum = SnNum; entity.CompanyID = CompanyID; Bill <OutStorageEntity, OutStoDetailEntity> bill = new OutStorageOrder(CompanyID); string returnValue = bill.Delete(entity); DataResult result = new DataResult(); if (EnumHelper.GetEnumDesc <EReturnStatus>(EReturnStatus.Success) == returnValue) { result.Code = (int)EResponseCode.Success; result.Message = "出库单删除成功"; } else { result.Code = (int)EResponseCode.Exception; result.Message = "出库单删除失败"; } return(Content(JsonHelper.SerializeObject(result))); }
/// <summary> /// 设置物流信息 /// </summary> /// <returns></returns> public ActionResult SetCarrier() { string CompanyID = WebUtil.GetFormValue <string>("CompanyID"); string SnNum = WebUtil.GetFormValue <string>("SnNum"); string CarrierNum = WebUtil.GetFormValue <string>("CarrierNum"); string LogisticsNo = WebUtil.GetFormValue <string>("LogisticsNo"); OutOrderExt provider = new OutOrderExt(CompanyID); int line = provider.SetCarrier(SnNum, CarrierNum, LogisticsNo); DataResult dataResult = new DataResult(); if (line > 0) { dataResult.Code = (int)EResponseCode.Success; dataResult.Message = "设置成功"; } else { dataResult.Code = (int)EResponseCode.Exception; dataResult.Message = "设置失败"; } return(Content(JsonHelper.SerializeObject(dataResult))); }
//just write information in the difficult file public void writeDifficultyToFile(StreamWriter writeText, DataResult avgs) { writeText.WriteLine(avgs.Avg_topJobDiff + "\t" + avgs.Avg_similarJobsDifficulty + "\t" + avgs.User_profile.UserRating + "\t" + avgs.Rating_total_avg); }
//执行最后的sql private string ExecSqlJms(InterfaceModel response, IMicroService service, JmsCommand dbCommand, List <FilterCondition> filters) { XmlHelper xmlHelp = new XmlHelper(); string json = ""; object dataResult = new object(); object result = new object(); switch (response.ExecuteType) { case "Scalar": DataResult dataResult1 = new DataResult(); dataResult1.DataType = 200; dataResult1.Result = service.Invoke <object>("ExecuteScalar", dbCommand); dataResult = dataResult1; result = dataResult1.Result; break; case "Int": IntDataResult intDataResult = new IntDataResult(); intDataResult.Result = service.Invoke <int>("ExecuteNonQuery", dbCommand); intDataResult.DataType = 200; dataResult = intDataResult; result = intDataResult.Result; break; case "DataSet": DataSet ds = new DataSet(); DSDataResult dSDataResult = new DSDataResult(); if (filters != null) { //复杂查询需要再过滤一下最后一个表 int lastIndex = ds.Tables.Count - 1; string msg; string filter = this.CreateFileterString(filters, out msg); if (msg != "") { throw new Exception(msg); } ds = service.Invoke <DataSet>("Fill", dbCommand); if (ds.Tables.Count > 0 && ds.Tables[lastIndex].Rows.Count > 0) { DataTable table = ds.Tables[ds.Tables.Count - 1]; table.DefaultView.RowFilter = filter; DataTable dtNew = table.DefaultView.ToTable(); ds.Tables.RemoveAt(lastIndex); ds.Tables.Add(dtNew); dSDataResult.Result = ds; } else { dSDataResult.Result = ds; } } else { ds = service.Invoke <DataSet>("Fill", dbCommand); dSDataResult.Result = ds; } dataResult = dSDataResult; dSDataResult.DataType = 200; break; } if (response.SerializeType == "Xml") { switch (response.ExecuteType) { case "Scalar": json = xmlHelp.SerializeXML <DataResult>(dataResult); break; case "Int": json = xmlHelp.SerializeXML <IntDataResult>(dataResult); break; case "DataSet": json = xmlHelp.SerializeXML <DSDataResult>(dataResult); break; } } else if (response.SerializeType == "Json") { json = JsonConvert.SerializeObject(dataResult); } else { json = result.ToString(); } return(json); }
public async Task <IActionResult> Post([FromBody] ProjectType projectType) { if (projectType is null) { throw new ArgumentNullException(nameof(projectType)); } var validation = new ProjectTypeValidator().Validate(projectType); if (!validation.IsValid) { return(ErrorResult .BadRequest(validation) .ActionResult()); } var existingProjectType = await projectTypesRepository .GetAsync(projectType.Id) .ConfigureAwait(false); if (existingProjectType != null) { return(ErrorResult .Conflict($"A ProjectType with id '{projectType.Id}' already exists. Please try your request again with a unique id or call PUT to update the existing ProjectType.") .ActionResult()); } var providers = await providersRepository .ListAsync() .ToListAsync() .ConfigureAwait(false); var validProviders = projectType.Providers .All(p => providers.Any(provider => provider.Id == p.Id)); if (!validProviders) { var validProviderIds = string.Join(", ", providers.Select(p => p.Id)); return(ErrorResult .BadRequest(new ValidationError { Field = "projectType", Message = $"All provider ids on a ProjectType must match the id of a registered Provider on the TeamCloud instance. Valid provider ids are: {validProviderIds}" }) .ActionResult()); } var newProjectType = new ProjectTypeDocument() .PopulateFromExternalModel(projectType); var addResult = await orchestrator .AddAsync(newProjectType) .ConfigureAwait(false); var baseUrl = HttpContext.GetApplicationBaseUrl(); var location = new Uri(baseUrl, $"api/projectTypes/{addResult.Id}").ToString(); var returnAddResult = addResult.PopulateExternalModel(); return(DataResult <ProjectType> .Created(returnAddResult, location) .ActionResult()); }
public static void Main(string[] args) { //Object to Hold Task Parameters TaskDimensions task = new TaskDimensions(); //Dictionary that contains a list of top ten jobs compared with other jobs for each user Dictionary<int, List<TopJobData>> finalList = new Dictionary<int, List<TopJobData>>(); //User number to start proccessing int user_number = 1; //Load File System Service IFileSystemSvc svc = new FileSystemSvcImpl(); //Method call to get the number of jobs and users from the file Y svc.detectSizeOfJobsColumns(task, Directory.GetCurrentDirectory()+"/files/Y.txt"); //Method call to get the number of features from the file X, and allocating the X matrix double[,] X = svc.getNumberOfFeaturesX(Directory.GetCurrentDirectory() + "/files/X.txt", task); svc.readFeaturesX(X, Directory.GetCurrentDirectory() + "/files/X.txt", task); //Method call to get the jobs names String[] job_list = svc.readJobNames(Directory.GetCurrentDirectory() + "/files/job_names.txt", task); //method that return the users profile UserProfile[] users_profile = svc.readUserProfile(Directory.GetCurrentDirectory() + "/files/user_table.txt", task); //Creating a variable to write in a File the job recommendations and comparisons //Load File Writer StreamWriter writeTextResult = svc.getResultStreamWriter(); StreamWriter writeTextAverages = svc.getAverageStreamWriter(); double total_avg_system = 0; double total_user_inaccuracy = 0; while (user_number <= task.num_users_init) { // Movie rating file for a user double[,] my_ratings = new double[task.num_jobs_init, 1]; //Now we read R and Y from theirs files (-1 because I will remove the chosen user from the matrixes) double[,] Y = svc.readTrainingY(Directory.GetCurrentDirectory() + "/files/Y.txt", task, my_ratings, user_number); double[,] R = svc.readTrainingR(Directory.GetCurrentDirectory() + "/files/R.txt", task, user_number); //Creating a MatLab reference to execute the recommended job script IMatlabSvc matSvc = new MatlabSvcImpl(); object[] res = matSvc.executeFilter(task, job_list, Directory.GetCurrentDirectory()+ "/files", my_ratings, Y, R, X, user_number); //Each time creates a to be used to write the recommended jobs in a file List<TopJobData> mylist = svc.writeValuesToFile(writeTextResult, res, job_list, user_number); //Calculate Averages for Jobs for a User DataResult avgs = new DataResult(mylist, 10, users_profile[user_number - 1]); avgs.AverageForEachJob(); svc.writeAveragesToFile(avgs, writeTextAverages, users_profile[user_number - 1]); total_avg_system += avgs.Percentage_total_avg; total_user_inaccuracy += avgs.Self_inaccuracy; //adding the list at the Dictionary for each user user_number++; } total_avg_system /= task.num_users_init; writeTextAverages.WriteLine("AVGS TOTAL\t" + total_avg_system); total_user_inaccuracy /= task.num_users_init; writeTextAverages.WriteLine("COMMUNITY INACCURACY\t" + total_user_inaccuracy); writeTextResult.Close(); writeTextAverages.Close(); //creating a instance of DataResult to be used to write the averages in a file Console.WriteLine("DONE"); //Wait until fisnih Console.ReadLine(); }
/// <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; } }
public ActionResult ToExcel() { string BarCode = WebUtil.GetFormValue <string>("BarCode", string.Empty); string ProductName = WebUtil.GetFormValue <string>("ProductName", string.Empty); string BatchNum = WebUtil.GetFormValue <string>("BatchNum", string.Empty); int Type = WebUtil.GetFormValue <int>("Type", 0); string FromStorageNum = WebUtil.GetFormValue <string>("FromStorageNum"); string OrderNum = WebUtil.GetFormValue <string>("OrderNum"); string ContactOrder = WebUtil.GetFormValue <string>("ContactOrder"); string BeginTime = WebUtil.GetFormValue <string>("BeginTime"); string EndTime = WebUtil.GetFormValue <string>("EndTime"); int PageIndex = 1; int PageSize = Int32.MaxValue; ITopClient client = new TopClientDefault(); Dictionary <string, string> dic = new Dictionary <string, string>(); dic.Add("CompanyID", CompanyID); dic.Add("PageIndex", PageIndex.ToString()); dic.Add("PageSize", PageSize.ToString()); dic.Add("BarCode", BarCode); dic.Add("ProductName", ProductName); dic.Add("BatchNum", BatchNum); dic.Add("Type", Type.ToString()); dic.Add("FromStorageNum", FromStorageNum); dic.Add("OrderNum", OrderNum); dic.Add("ContactOrder", ContactOrder); dic.Add("BeginTime", BeginTime); dic.Add("EndTime", EndTime); string result = client.Execute(InventoryApiName.InventoryApiName_GetList, dic); string returnValue = string.Empty; if (!result.IsEmpty()) { DataListResult <InventoryBookEntity> dataResult = JsonHelper.DeserializeObject <DataListResult <InventoryBookEntity> >(result); List <InventoryBookEntity> listResult = dataResult.Result; if (!listResult.IsNullOrEmpty()) { DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("产品名称")); dt.Columns.Add(new DataColumn("产品编号")); dt.Columns.Add(new DataColumn("产品规格")); dt.Columns.Add(new DataColumn("产品批次")); dt.Columns.Add(new DataColumn("类型")); dt.Columns.Add(new DataColumn("数量")); dt.Columns.Add(new DataColumn("单位")); dt.Columns.Add(new DataColumn("原仓库")); dt.Columns.Add(new DataColumn("原库位")); dt.Columns.Add(new DataColumn("目标仓库")); dt.Columns.Add(new DataColumn("目标库位")); dt.Columns.Add(new DataColumn("日期")); foreach (InventoryBookEntity t in listResult) { DataRow row = dt.NewRow(); row[0] = t.ProductName; row[1] = t.BarCode; row[2] = t.Size; row[3] = t.BatchNum; row[4] = EnumHelper.GetEnumDesc <EChange>(t.Type); row[5] = t.Num; row[6] = t.UnitName; row[7] = t.FromStorageName; row[8] = t.FromLocalName; row[9] = t.ToStorageName; row[10] = t.ToLocalName; row[11] = t.CreateTime.To("yyyy-MM-dd"); dt.Rows.Add(row); } string filePath = Server.MapPath("~/UploadFile/"); if (!System.IO.Directory.Exists(filePath)) { System.IO.Directory.CreateDirectory(filePath); } string filename = string.Format("库存台账{0}.xls", DateTime.Now.ToString("yyyyMMddHHmmssfff")); NPOIExcel excel = new NPOIExcel("库存台账", "库存台账", System.IO.Path.Combine(filePath, filename)); excel.ToExcel(dt); returnValue = ("/UploadFile/" + filename).Escape(); } } DataResult returnResult = null; if (!returnValue.IsEmpty()) { returnResult = new DataResult() { Code = 1000, Message = returnValue }; } else { returnResult = new DataResult() { Code = 1001, Message = "没有任何数据导出" }; } return(Content(JsonHelper.SerializeObject(returnResult))); }
private void OtherAction(DataResult result) { isSelect = false; this.selectDataresult = result; NextStateCode = result.AppState; System.Windows.Controls.Window winSelector = new System.Windows.Controls.Window(); winSelector.Unloaded += new RoutedEventHandler(winSelector_Unloaded); winSelector.Height = 250; winSelector.Width = 400; winSelector.TitleContent = "确认审核人"; Grid gridSelector = new Grid(); RowDefinition r1 = new RowDefinition(); RowDefinition r2 = new RowDefinition(); RowDefinition r3 = new RowDefinition(); r1.Height = new GridLength(20, GridUnitType.Auto); r2.Height = new GridLength(1, GridUnitType.Star); r3.Height = new GridLength(20, GridUnitType.Auto); gridSelector.RowDefinitions.Add(r1); gridSelector.RowDefinitions.Add(r2); gridSelector.RowDefinitions.Add(r3); TextBlock tb = new TextBlock(); tb.Text = "不能确定下一审核人, 请重新选择一个审核人,并按确认提交"; tb.SetValue(Grid.RowProperty, 0); ScrollViewer scrollp = new ScrollViewer(); scrollp.SetValue(Grid.RowProperty, 1); StackPanel sp = new StackPanel(); sp.Margin = new Thickness(15, 5, 0, 0); sp.Orientation = Orientation.Vertical; for (int i = 0; i < result.UserInfo.Count; i++) { RadioButton rbtn = new RadioButton(); //rbtn.Content = result.UserInfo[i].UserName; rbtn.Content = result.UserInfo[i].UserName + "(" + result.UserInfo[i].CompanyName + "->" + result.UserInfo[i].DepartmentName + "->" + result.UserInfo[i].PostName + ")"; rbtn.DataContext = result.UserInfo[i]; rbtn.GroupName = "User"; sp.Children.Add(rbtn); } scrollp.Content = sp; Button btnOK = new Button(); btnOK.Height = 26; btnOK.Width = 80; btnOK.Content = Utility.GetResourceStr("lblConfirm"); btnOK.HorizontalAlignment = HorizontalAlignment.Right; btnOK.Margin = new Thickness(0, 0, 5, 10); btnOK.SetValue(Grid.RowProperty, 2); btnOK.Click += (e, o) => { this.isSelect = true; UIElement element = sp.Children.FirstOrDefault(item => { RadioButton rb = item as RadioButton; return rb.IsChecked == true; }); if (element == null) { this.isSelect = false; ComfirmWindow.ConfirmationBox("警告", "请先选择一个审核人!", Utility.GetResourceStr("CONFIRMBUTTON")); //MessageBox.Show("请先选择一个审核人"); } else { RadioButton rbSelect = element as RadioButton; UserInfo otherUser = rbSelect.DataContext as UserInfo; NextCompanyID = otherUser.CompanyID; NextDepartmentID = otherUser.DepartmentID; NextPostID = otherUser.PostID; NextUserID = otherUser.UserID; NextUserName = otherUser.UserName; InnerHandIn(currAuditOperation, curAuditAction); winSelector.Close(); } }; ContentControl parent = new ContentControl(); parent.Content = gridSelector; winSelector.Content = parent; gridSelector.Children.Add(tb); gridSelector.Children.Add(scrollp); gridSelector.Children.Add(btnOK); FrameworkElement fe = SMT.SAAS.Main.CurrentContext.Common.ParentLayoutRoot; // Window.Show("", "", Guid.NewGuid().ToString(), true, false, parent, null); winSelector.Show<string>(DialogMode.Default, fe, "", (resulta) => { }); }
private DataResult ExecuteMain( CommandType type, string sqlOrSpName, params DbParameter[] parameters) { LastException = null; LastDataResult = null; var result = new DataResult() { TransactionID = TransactionID, ExecuteMethod = "DataApi.ExecuteMain", CommandType = type, Command = sqlOrSpName, Parameters = new List<DbParameter>(parameters), }; var log = LogRecord .Create() .SetTransactionID(this.TransactionID); try { using(var command = Connection.CreateCommand()) { command.CommandType = type; command.CommandText = sqlOrSpName; AddParameters(command, parameters); OpenConnection(); result.AffectedCount = command.ExecuteNonQuery(); return result; } } catch(Exception ex) { LastException = ex; log.Add(ex); result.Success = false; result.Exception = ex; throw; } finally { log .Add("CommandType", type.ToString()) .Add("sqlOrSpName", sqlOrSpName) .AddRange(ToAnys(parameters)) .Add("AffectedCount", result.AffectedCount); if(null == LastException) { log.Debug(); } else { log.Error(); } LastDataResult = result; } }
private object ExecuteByScalarMain( CommandType type, string sqlOrSpName, params DbParameter[] parameters) { LastException = null; LastDataResult = new DataResult() { TransactionID = TransactionID, ExecuteMethod = "DataApi.ExecuteByScalarMain", CommandType = type, Command = sqlOrSpName, Parameters = new List<DbParameter>(parameters), }; var log = LogRecord .Create() .SetTransactionID(this.TransactionID); try { using(var command = Connection.CreateCommand()) { command.CommandType = type; command.CommandText = sqlOrSpName; if(null != parameters) { foreach(var parameter in parameters) { if(null == parameter) { continue; } command.Parameters.Add(parameter); } } OpenConnection(); var value = command.ExecuteScalar(); LastDataResult.ScalarValue = value; return value; } } catch(Exception ex) { LastDataResult.Success = false; LastDataResult.Exception = ex; LastException = ex; log.Add(ex); throw; } finally { log .Add("CommandType", type.ToString()) .Add("sqlOrSpName", sqlOrSpName) .AddRange(ToAnys(parameters)); if(null == LastException) { log.Debug(); } else { log.Error(); } } }
/// <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); } }
/// <summary> /// 自选流程使用:流程数据处理(对应SubmitFlow)对数据库操作 /// </summary> /// <param name="workflowRuntime"></param> /// <param name="instance"></param> /// <param name="entity"></param> /// <param name="NextStateCode"></param> /// <param name="EditUserId"></param> /// <param name="EditUserName"></param> /// <param name="SubmitFlag"></param> /// <param name="FlowType"></param> /// <returns></returns> public DataResult DoFlowRecord( WorkflowRuntime workflowRuntime, WorkflowInstance instance, FLOW_FLOWRECORDDETAIL_T entity, string NextStateCode, UserInfo AppUser, UserInfo AgentUser, SubmitFlag SubmitFlag, FlowType FlowType,ref FlowUser fUser) { DataResult tmpDataResult = new DataResult(); UserInfo tmpUserInfo = AppUser; //tmpUserInfo.UserID = EditUserId; //tmpUserInfo.UserName = EditUserName; tmpDataResult.UserInfo.Add(tmpUserInfo); try { if (SubmitFlag == SubmitFlag.New) { #region 新增流程 //添加启动状态 entity.FLOW_FLOWRECORDMASTER_T.FLOWRECORDMASTERID = Guid.NewGuid().ToString(); entity.FLOW_FLOWRECORDMASTER_T.CHECKSTATE = "1"; entity.FLOW_FLOWRECORDMASTER_T.CREATECOMPANYID = entity.CREATECOMPANYID; entity.FLOW_FLOWRECORDMASTER_T.CREATEDEPARTMENTID = entity.CREATEDEPARTMENTID; entity.FLOW_FLOWRECORDMASTER_T.CREATEPOSTID = entity.CREATEPOSTID; entity.FLOW_FLOWRECORDMASTER_T.CREATEUSERID = entity.CREATEUSERID; entity.FLOW_FLOWRECORDMASTER_T.CREATEUSERNAME = entity.CREATEUSERNAME; entity.FLOW_FLOWRECORDMASTER_T.EDITUSERID = entity.CREATEUSERID; entity.FLOW_FLOWRECORDMASTER_T.EDITUSERNAME = entity.CREATEUSERNAME; entity.FLOW_FLOWRECORDMASTER_T.CREATEDATE = DateTime.Now; entity.FLOWRECORDDETAILID = Guid.NewGuid().ToString(); // entity.FLOW_FLOWRECORDMASTER_T .INSTANCEID = instance.InstanceId.ToString(); entity.FLAG = "1"; entity.CHECKSTATE = "1"; //entity.FlowCode = "TestFlow"; //正式使用时关屏蔽 entity.STATECODE = "StartFlow"; 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; #region 引擎自动提交时停留在提交人处 if (FlowType == FlowType.Pending) { entity.FLAG = "0"; entity.EDITUSERID = AppUser.UserID; entity.EDITUSERNAME = AppUser.UserName; entity.EDITCOMPANYID = AppUser.CompanyID; entity.EDITDEPARTMENTID = AppUser.DepartmentID; entity.EDITPOSTID = AppUser.PostID; FLOW_FLOWRECORDMASTER_TDAL.Add( entity.FLOW_FLOWRECORDMASTER_T);//对数据库操作 fUser.NextEditUserID = entity.EDITUSERID; fUser.NextEditUserName = entity.EDITUSERNAME; AddFlowDetailRecord( entity, NextStateCode, AppUser.UserID); tmpDataResult.FlowResult = FlowResult.SUCCESS; tmpDataResult.CheckState = "1"; return tmpDataResult; } #endregion FLOW_FLOWRECORDMASTER_TDAL.Add( entity.FLOW_FLOWRECORDMASTER_T);//对数据库操作 fUser.NextEditUserID = entity.EDITUSERID; fUser.NextEditUserName = entity.EDITUSERNAME; AddFlowDetailRecord( entity, NextStateCode, AppUser.UserID); FLOW_FLOWRECORDDETAIL_T entity2 = new FLOW_FLOWRECORDDETAIL_T(); //添加下一状态 entity2.FLOWRECORDDETAILID = Guid.NewGuid().ToString(); entity2.FLOW_FLOWRECORDMASTER_T = entity.FLOW_FLOWRECORDMASTER_T; entity2.STATECODE = NextStateCode == "" ? SMTWorkFlowManage.GetNextState(workflowRuntime, instance, entity.STATECODE) : NextStateCode; entity2.PARENTSTATEID = entity.FLOWRECORDDETAILID;//entity.StateCode; //entity2.Content = "."; entity2.FLAG = "0"; entity2.CHECKSTATE = "2"; entity2.CREATEPOSTID = entity.CREATEPOSTID; entity2.CREATECOMPANYID = entity.CREATECOMPANYID; entity2.CREATEDEPARTMENTID = entity.CREATEDEPARTMENTID; entity2.CREATEUSERID = entity.EDITUSERID; entity2.CREATEUSERNAME = entity.EDITUSERNAME; entity2.CREATEDATE = DateTime.Now; entity2.EDITUSERID = AppUser.UserID; entity2.EDITUSERNAME = AppUser.UserName; entity2.EDITCOMPANYID = AppUser.CompanyID; entity2.EDITDEPARTMENTID = AppUser.DepartmentID; entity2.EDITPOSTID = AppUser.PostID; entity2.EDITDATE = DateTime.Now; if (AgentUser != null) //如果启用了代理,把代理人信息写入 { entity2.AGENTUSERID = AgentUser.UserID; entity2.AGENTERNAME = AgentUser.UserName; entity2.AGENTEDITDATE = DateTime.Now; } tmpDataResult.AppState = entity2.STATECODE; if (entity2.STATECODE != "EndFlow") { fUser.NextEditUserID = entity2.EDITUSERID; fUser.NextEditUserName = entity2.EDITUSERNAME; AddFlowDetailRecord( entity2, NextStateCode, AppUser.UserID);//对数据库操作 tmpDataResult.FlowResult = FlowResult.SUCCESS; tmpDataResult.CheckState = "1"; } else { tmpDataResult.CheckState = "2"; tmpDataResult.FlowResult = FlowResult.END; //如果没有下一处理节点,则返回END } return tmpDataResult; #endregion } else { #region 更新流程 //如果NextStateCode为空则自动获取模型中的下一状态,如果不为空则使用传入状态代码,并使用传入下一任务人ID //更新本流程 entity = UpdateFlowDetailRecord( entity, NextStateCode, AppUser.UserID);//对数据库操作 //添加下一状态 FLOW_FLOWRECORDDETAIL_T entity2 = new FLOW_FLOWRECORDDETAIL_T(); //添加下一状态 entity2.FLOWRECORDDETAILID = Guid.NewGuid().ToString(); if (NextStateCode != "") { entity2.STATECODE = NextStateCode; //entity2.EditUserID = EditUserId; //entity2.EditUserName = EditUserName; } else { entity2.STATECODE = SMTWorkFlowManage.GetNextState(workflowRuntime, instance, entity.STATECODE); // entity2.EditUserID = entity2.StateCode=="EndFlow" ? "" : "EditUserId"; //根据状态查询权限表中用户ID } if (entity2.STATECODE == "EndFlow") { entity.FLOW_FLOWRECORDMASTER_T.CHECKSTATE = "2"; //设为终审通过 if (entity.EDITDATE == entity.AGENTEDITDATE) //代理审核时 { entity.FLOW_FLOWRECORDMASTER_T.EDITUSERID = entity.AGENTUSERID; entity.FLOW_FLOWRECORDMASTER_T.EDITUSERNAME = entity.AGENTERNAME; } else //正常审核时 { entity.FLOW_FLOWRECORDMASTER_T.EDITUSERID = entity.EDITUSERID; entity.FLOW_FLOWRECORDMASTER_T.EDITUSERNAME = entity.EDITUSERNAME; } entity.FLOW_FLOWRECORDMASTER_T.EDITDATE = DateTime.Now; UpdateFlowDetailRecord( entity, NextStateCode, AppUser.UserID);//对数据库操作 FLOW_FLOWRECORDMASTER_TDAL.Update(entity.FLOW_FLOWRECORDMASTER_T);//对数据库操作 } entity2.PARENTSTATEID = entity.FLOWRECORDDETAILID;// entity.StateCode; //entity2.Content = ""; entity2.FLAG = "0"; entity2.CHECKSTATE = "2"; entity2.CREATEPOSTID = entity.CREATEPOSTID; entity2.CREATECOMPANYID = entity.CREATECOMPANYID; entity2.CREATEDEPARTMENTID = entity.CREATEDEPARTMENTID; //if (entity.EDITDATE == entity.AGENTEDITDATE) //代理审核时 //{ // entity2.CREATEUSERID = entity.AGENTUSERID; // entity2.CREATEUSERNAME = entity.AGENTERNAME; //} //else //正常审核时 //{ entity2.CREATEUSERID = entity.EDITUSERID; entity2.CREATEUSERNAME = entity.EDITUSERNAME; //} entity2.EDITUSERID = AppUser.UserID; entity2.EDITUSERNAME = AppUser.UserName; entity2.EDITCOMPANYID = AppUser.CompanyID; entity2.EDITDEPARTMENTID = AppUser.DepartmentID; entity2.EDITPOSTID = AppUser.PostID; entity2.CREATEDATE = DateTime.Now; entity2.EDITDATE = DateTime.Now; if (AgentUser != null) //如果启用了代理,把代理人信息写入 { entity2.AGENTUSERID = AgentUser.UserID; entity2.AGENTERNAME = AgentUser.UserName; entity2.AGENTEDITDATE = DateTime.Now; } tmpDataResult.AppState = entity2.STATECODE; if (entity2.STATECODE != "EndFlow") { entity2.FLOW_FLOWRECORDMASTER_T = entity.FLOW_FLOWRECORDMASTER_T; fUser.NextEditUserID = entity2.EDITUSERID; fUser.NextEditUserName = entity2.EDITUSERNAME; AddFlowDetailRecord( entity2, NextStateCode, AppUser.UserID);//对数据库操作 tmpDataResult.FlowResult = FlowResult.SUCCESS; tmpDataResult.CheckState = "1"; } else { tmpDataResult.FlowResult = FlowResult.END; //如果没有下一处理节点,则返回END tmpDataResult.CheckState = "2"; } return tmpDataResult; //如有下一节点,返回SUCCESS #endregion } } catch (Exception ex) { Tracer.Debug("提交自选流程数据出错,DoFlowRecord异常信息 :" + ex.ToString()); throw new Exception("提交自选流程数据出错!请联系管理员!"); //tmpDataResult.FlowResult = FlowResult.FAIL; //tmpDataResult.Err = ex.Message; //return tmpDataResult; } }
/// <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 static DataTable FetchDataTable(string command, object[] parms, drGeneric_String_String globalInputs, int?timeout = null) { DataResult dResult = RunThread(command, parms, globalInputs, timeout); return(dResult != null ? dResult.DataTable : null); }
private void CounterAction(DataResult result) { this.isSelect = false; this.selectDataresult = result; NextStateCode = result.AppState; List<Rule_UserInfoViewModel> listviewmodel = new List<Rule_UserInfoViewModel>(); result.DictCounterUser.Keys.ForEach(key => { Rule_UserInfoViewModel vm = new Rule_UserInfoViewModel(key, result.DictCounterUser[key].ToList()); listviewmodel.Add(vm); }); //this.ListCountersign.ItemsSource = listviewmodel; //AuditEventArgs args = new AuditEventArgs(AuditEventArgs.AuditResult.Error, result); //args.StartDate = this.AuditEntity.StartDate; //args.EndDate = System.DateTime.Now; //OnAuditCompleted(this, args); //this.BindingData(); DataTemplate CountersignTemplate = this.Resources["CountersignTemplate"] as DataTemplate; Style listboxStyle = this.Resources["ListBoxItemStyle1"] as Style; System.Windows.Controls.Window winSelector = new System.Windows.Controls.Window(); winSelector.Unloaded += new RoutedEventHandler(winSelector_Unloaded); winSelector.MinHeight = 400; winSelector.Width = 400; //winSelector.Resources.Add("UserInfoTemplate", this.Resources["UserInfoTemplate"]); //winSelector.Resources.Add("ListBoxItemStyle1", this.Resources["ListBoxItemStyle1"]); //winSelector.Resources.Add("CountersignTemplate", this.Resources["CountersignTemplate"]); //winSelector.Width = 400; winSelector.TitleContent = "确认审核人"; Grid gridSelector = new Grid(); RowDefinition r1 = new RowDefinition(); RowDefinition r2 = new RowDefinition(); RowDefinition r3 = new RowDefinition(); r1.Height = new GridLength(50, GridUnitType.Auto); r2.Height = new GridLength(30, GridUnitType.Auto); r3.Height = new GridLength(50, GridUnitType.Auto); gridSelector.RowDefinitions.Add(r1); gridSelector.RowDefinitions.Add(r2); gridSelector.RowDefinitions.Add(r3); TextBlock tb = new TextBlock(); tb.Height = 26; tb.VerticalAlignment = System.Windows.VerticalAlignment.Center; if (result.CountersignType == "0") { tb.Text = "请为每个角色至少选择一人,并按确认提交。"; } else { tb.Text = "请至少选择一人,并按确认提交。"; } tb.SetValue(Grid.RowProperty, 0); ScrollViewer sp = new ScrollViewer(); ListBox listboxCountersign = new ListBox(); listboxCountersign.ItemTemplate = CountersignTemplate; listboxCountersign.ItemContainerStyle = listboxStyle; listboxCountersign.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Stretch; listboxCountersign.VerticalAlignment = System.Windows.VerticalAlignment.Top; sp.SetValue(Grid.RowProperty, 1); listviewmodel.ForEach(item => { item.ListUserInfo.ForEach(ent => { ent.UserInfo.CompanyName = ent.UserInfo.UserName + "(" + ent.UserInfo.CompanyName + "->" + ent.UserInfo.DepartmentName + "->" + ent.UserInfo.PostName + ")"; }); }); listboxCountersign.ItemsSource = listviewmodel; sp.Height = 300; sp.Width = 400; //listboxCountersign. //listboxCountersign.ScrollIntoView(listviewmodel); listboxCountersign.UpdateLayout(); sp.Content=listboxCountersign; Button btnOK = new Button(); btnOK.Content = "确认"; btnOK.Margin = new Thickness(0, 0, 5, 10); btnOK.VerticalAlignment = System.Windows.VerticalAlignment.Center; btnOK.HorizontalAlignment = System.Windows.HorizontalAlignment.Right; btnOK.Width = 80; btnOK.Height = 26; btnOK.SetValue(Grid.RowProperty, 2); btnOK.Click += (o, e) => { this.isSelect = true; #region #region Check this.DictCounterUser = new Dictionary<Role_UserType, ObservableCollection<UserInfo>>(); if (result.CountersignType == "0") { foreach (var viewModel in listviewmodel) { bool bUser = false; ObservableCollection<UserInfo> listuserinfo = new ObservableCollection<UserInfo>(); viewModel.ListUserInfo.ForEach(user => { if (user.IsCheck) { bUser = true; listuserinfo.Add(user.UserInfo); } }); if (!bUser) { this.isSelect = false; ComfirmWindow.ConfirmationBox("警告", "请选择角色" + viewModel.Role_UserType.Remark + "的审核人", Utility.GetResourceStr("CONFIRMBUTTON")); //MessageBox.Show("请选择角色" + viewModel.Role_UserType.RoleNameName + "的审核人"); return; } this.DictCounterUser[viewModel.Role_UserType] = listuserinfo; } } else { bool bUser = false; foreach (var viewModel in listviewmodel) { ObservableCollection<UserInfo> listuserinfo = new ObservableCollection<UserInfo>(); viewModel.ListUserInfo.ForEach(user => { if (user.IsCheck) { bUser = true; listuserinfo.Add(user.UserInfo); } }); this.DictCounterUser[viewModel.Role_UserType] = listuserinfo; } if (!bUser) { this.isSelect = false; ComfirmWindow.ConfirmationBox("警告", "至少选择一个审核人", Utility.GetResourceStr("CONFIRMBUTTON")); //MessageBox.Show("至少选择一个审核人"); return; } } #endregion InnerHandIn(currAuditOperation, curAuditAction); winSelector.Close(); #endregion }; ContentControl parent = new ContentControl(); parent.Content = gridSelector; winSelector.Content = parent; gridSelector.Children.Add(tb); gridSelector.Children.Add(sp); gridSelector.Children.Add(btnOK); FrameworkElement fe = SMT.SAAS.Main.CurrentContext.Common.ParentLayoutRoot; // Window.Show("", "", Guid.NewGuid().ToString(), true, false, parent, null); winSelector.Show<string>(DialogMode.Default, fe, "", (resulta) => { }); }
/// <summary> /// /// </summary> /// <param name="companyID"></param> /// <param name="WfRuntimeClone"></param> /// <param name="instanceClone"></param> /// <param name="Layout">从审核主表记录ACTIVEROLE字段获取</param> /// <param name="xml"></param> /// <param name="CurrentStateName">当前状态</param> /// <param name="UserID"></param> /// <param name="PostID"></param> /// <param name="FlowType"></param> /// <param name="DataResult"></param> public void GetUserByInstance2(string companyID, WorkflowRuntime WfRuntimeClone, WorkflowInstance instanceClone, string Layout, string xml, string CurrentStateName, List<string> UserID, List<string> PostID, FlowType FlowType, ref DataResult DataResult,ref FlowUser fUser) { WorkflowRuntime WfRuntime = null; WorkflowInstance Instance = null; List<UserInfo> AppUserInfo = null; string strNextState = CurrentStateName; bool IsCountersign = false; string CountersignType = "0"; //Role_UserType RuleName; //List<UserInfo> AppUserInfo = null; Dictionary<FlowRole, List<UserInfo>> DictCounterUser = null; try { if (!WfRuntimeClone.IsStarted) { WfRuntimeClone.StartRuntime(); } WfRuntime = SMTWorkFlowManage.CreateWorkFlowRuntime(false); Instance = SMTWorkFlowManage.CloneWorkflowInstance(WfRuntimeClone, instanceClone, WfRuntime); bool iscurruser = true; int testflag = 0; while (iscurruser) { testflag++; if (testflag > 10) { throw new Exception("循环处理流程超过10次,请联系系统管理员"); } #region strNextState = SMTWorkFlowManage.GetFlowNextStepRoles(WfRuntime, Instance, strNextState, xml); List<FlowRole> listRole = FlowUtility.GetRlueIdFromActivitID(Layout, strNextState, ref IsCountersign, ref CountersignType); if (listRole.Count == 0) { DataResult.Err = "没有找到对应角色"; DataResult.FlowResult = FlowResult.FAIL; return; } if (!IsCountersign) { #region string tmpPostID = listRole[0].UserType == "CREATEUSER" ? PostID[0] : PostID[1]; bool isHigher = false; AppUserInfo = TmGetUserByRoleId(listRole[0].RoleName, null, tmpPostID, ref isHigher); #region 打印审核人 string names = "\r\nFormID=" + fUser.FormID + ";=======打印审核人F(listRole[0].RoleName=" + listRole[0].RoleName + ";审核人数量=" + AppUserInfo.Count + ";isHigher=" + isHigher.ToString() + ")=======\r\n"; foreach (var user in AppUserInfo) { names += "CompanyID:" + user.CompanyID + "\r\n"; names += "DepartmentID:" + user.DepartmentID + "\r\n"; names += "PostID:" + user.PostID + "\r\n"; names += "UserID:" + user.UserID + "\r\n"; names += "CompanyName:" + user.CompanyName + "\r\n"; names += "DepartmentName:" + user.DepartmentName + "\r\n"; names += "PostName:" + user.PostName + "\r\n"; names += "UserName:"******"\r\n"; names += "----------------------------------------------------\r\n"; } if (!isHigher && listRole[0].IsOtherCompany != null) { if (listRole[0].IsOtherCompany.Value == true) { names += "是否指定公司:" + listRole[0].IsOtherCompany.Value.ToString() + "\r\n"; names += "公司的ID:" + listRole[0].OtherCompanyID + "\r\n"; if (string.IsNullOrEmpty(listRole[0].OtherCompanyID)) { names += "Layout=" + Layout + "\r\n"; } } else if (listRole[0].IsOtherCompany.Value == false) { names += "实际要查找公司的ID:" + companyID + "\r\n"; } } fUser.ErrorMsg += names; Tracer.Debug(names); #endregion #region beyond if (!isHigher && strNextState.ToUpper() != "ENDFLOW") { if (listRole[0].IsOtherCompany != null && listRole[0].IsOtherCompany.Value == true) { AppUserInfo = AppUserInfo.Where(user => user.CompanyID == listRole[0].OtherCompanyID).ToList(); } else { AppUserInfo = AppUserInfo.Where(user => user.CompanyID == companyID).ToList(); } } #endregion if (AppUserInfo == null || AppUserInfo.Count == 0) { DataResult.Err = "当前角色 " + listRole[0].Remark + " 没有找到审核人" ; DataResult.FlowResult = FlowResult.FAIL; return; } if (AppUserInfo.Where(c => c.UserID == UserID[1]).Count() == 0) iscurruser = false; #endregion } else { #region DictCounterUser = new Dictionary<FlowRole, List<UserInfo>>(); if (CountersignType == "0") { #region for (int i = 0; i < listRole.Count; i++) { string tmpPostID = listRole[i].UserType == "CREATEUSER" ? PostID[0] : PostID[1]; bool isHigher = false; var listuserinfo = TmGetUserByRoleId(listRole[i].RoleName, null, tmpPostID, ref isHigher); #region 打印审核人 string names = "\r\n=======打印审核人G(listRole[i].RoleName=" + listRole[0].RoleName + ";UserID=" + UserID + ";PostID=" + PostID + ";isHigher=" + isHigher.ToString() + ")=======\r\n"; foreach (var user in listuserinfo) { names += "CompanyID:" + user.CompanyID + "\r\n"; names += "DepartmentID:" + user.DepartmentID + "\r\n"; names += "PostID:" + user.PostID + "\r\n"; names += "UserID:" + user.UserID + "\r\n"; names += "CompanyName:" + user.CompanyName + "\r\n"; names += "DepartmentName:" + user.DepartmentName + "\r\n"; names += "PostName:" + user.PostName + "\r\n"; names += "UserName:"******"\r\n"; names += "----------------------------------------------------\r\n"; } if (!isHigher && listRole[0].IsOtherCompany != null) { if (listRole[0].IsOtherCompany.Value == true) { names += "是否指定公司:" + listRole[0].IsOtherCompany.Value.ToString() + "\r\n"; names += "公司的ID:" + listRole[0].OtherCompanyID + "\r\n"; if (string.IsNullOrEmpty(listRole[0].OtherCompanyID)) { names += "Layout=" + Layout + "\r\n"; } } else if (listRole[0].IsOtherCompany.Value == false) { names += "实际要查找公司的ID:" + companyID + "\r\n"; } } fUser.ErrorMsg += names; Tracer.Debug(names); #endregion if (!isHigher) { if (listRole[i].IsOtherCompany != null && listRole[i].IsOtherCompany.Value == true) { listuserinfo = listuserinfo.Where(user => user.CompanyID == listRole[i].OtherCompanyID).ToList(); } else { listuserinfo = listuserinfo.Where(user => user.CompanyID == companyID).ToList(); } } if (listuserinfo == null || listuserinfo.Count == 0) { DataResult.Err = "角色 " + listRole[i].Remark + "没有找到审核人"; DataResult.FlowResult = FlowResult.FAIL; return; } DictCounterUser.Add(listRole[i], listuserinfo); } iscurruser = false; #endregion } else { #region string roleNames = "";//所有角色名称 iscurruser = false; bool bFlag = false; for (int i = 0; i < listRole.Count; i++) { roleNames += listRole[i].Remark + "、"; string tmpPostID = listRole[i].UserType == "CREATEUSER" ? PostID[0] : PostID[1]; bool isHigher = false; var listuserinfo = TmGetUserByRoleId(listRole[i].RoleName, null, tmpPostID, ref isHigher); #region 打印审核人 string names = "\r\n=======打印审核人H(listRole[0].RoleName=" + listRole[i].RoleName + ";UserID=" + UserID + ";PostID=" + tmpPostID + ";isHigher=" + isHigher.ToString() + ")=======\r\n"; foreach (var user in listuserinfo) { names += "CompanyID:" + user.CompanyID + "\r\n"; names += "DepartmentID:" + user.DepartmentID + "\r\n"; names += "PostID:" + user.PostID + "\r\n"; names += "UserID:" + user.UserID + "\r\n"; names += "CompanyName:" + user.CompanyName + "\r\n"; names += "DepartmentName:" + user.DepartmentName + "\r\n"; names += "PostName:" + user.PostName + "\r\n"; names += "UserName:"******"\r\n"; names += "----------------------------------------------------\r\n"; } if (!isHigher && listRole[0].IsOtherCompany != null) { if (listRole[0].IsOtherCompany.Value == true) { names += "是否指定公司:" + listRole[0].IsOtherCompany.Value.ToString() + "\r\n"; names += "公司的ID:" + listRole[0].OtherCompanyID + "\r\n"; if (string.IsNullOrEmpty(listRole[0].OtherCompanyID)) { names += "Layout=" + Layout + "\r\n"; } } else if (listRole[0].IsOtherCompany.Value == false) { names += "实际要查找公司的ID:" + companyID + "\r\n"; } } fUser.ErrorMsg += names; Tracer.Debug(names); #endregion if (!isHigher) { if (listRole[i].IsOtherCompany != null && listRole[i].IsOtherCompany.Value == true) { listuserinfo = listuserinfo.Where(user => user.CompanyID == listRole[i].OtherCompanyID).ToList(); } else { listuserinfo = listuserinfo.Where(user => user.CompanyID == companyID).ToList(); } } if (listuserinfo != null && listuserinfo.Count > 0) { bFlag = true; if (listuserinfo.FirstOrDefault(u => u.UserID == UserID[1]) != null) { iscurruser = true; break; } //DataResult.Err = "没有找到审核人"; //DataResult.FlowResult = FlowResult.FAIL; //return; } DictCounterUser.Add(listRole[i], listuserinfo); } if (!bFlag) { DataResult.Err = "当前的角色 " + roleNames + " 没有找到审核人"; DataResult.FlowResult = FlowResult.FAIL; return; } #endregion } #endregion } #endregion } DataResult.IsCountersign = IsCountersign; DataResult.AppState = strNextState; DataResult.CountersignType = CountersignType; if (!IsCountersign) { #region if (AppUserInfo != null && AppUserInfo.Count > 1) //处理角色对应多个用户,返回用户集给提交人,选择一个处理人 { DataResult.FlowResult = FlowResult.MULTIUSER; } DataResult.UserInfo = AppUserInfo; #endregion } else { #region if (DataResult.DictCounterUser == null) { DataResult.DictCounterUser = new Dictionary<FlowRole, List<UserInfo>>(); } DataResult.DictCounterUser = DictCounterUser; List<FlowRole> listkeys = DictCounterUser.Keys.ToList(); for (int i = 0; i < listkeys.Count; i++) { FlowRole key = listkeys[i]; if (DictCounterUser[key].Count > 1) { DataResult.FlowResult = FlowResult.Countersign; break; } } #endregion } } catch (Exception ex) { //throw new Exception("GetUserByInstance2:" + ex.Message);//旧的 Tracer.Debug("FORMID="+fUser.FormID+";通过实体例查找用户Instance=" + Instance.InstanceId.ToString()+" 异常信息:\r\n" + ex.ToString()); throw new Exception(ex.Message); } finally { strNextState = null; AppUserInfo = null; //RuleName = null; Instance = null; SMTWorkFlowManage.ColseWorkFlowRuntime(WfRuntime); } }
protected virtual void InnerHandIn(AuditOperation auditOperation, AuditAction action) { string op = auditOperation.ToString(); string tmpnextStateCode = IsEndAudit ? "EndFlow" : NextStateCode; //EndFlow SubmitFlag AuditSubmitFlag = op.ToUpper() == "ADD" ? SubmitFlag.New : SubmitFlag.Approval; #region beyond switch (auditOperation) { case AuditOperation.Add: AuditSubmitFlag = SubmitFlag.New; break; case AuditOperation.Update: AuditSubmitFlag = SubmitFlag.Approval; break; case AuditOperation.Cancel: AuditSubmitFlag = SubmitFlag.Cancel; break; default: break; } AuditSubmitData.DictCounterUser = this.DictCounterUser; if (AuditSubmitFlag == SubmitFlag.New) { AuditSubmitData.XML = XmlObject; } #endregion AuditSubmitData.FormID = AuditEntity.FormID; AuditSubmitData.ModelCode = AuditEntity.ModelCode; AuditSubmitData.ApprovalUser = new UserInfo(); AuditSubmitData.ApprovalUser.CompanyID = AuditEntity.CreateCompanyID; AuditSubmitData.ApprovalUser.DepartmentID = AuditEntity.CreateDepartmentID; AuditSubmitData.ApprovalUser.PostID = AuditEntity.CreatePostID; AuditSubmitData.ApprovalUser.UserID = AuditEntity.CreateUserID; AuditSubmitData.ApprovalUser.UserName = AuditEntity.CreateUserName; AuditSubmitData.ApprovalContent = AuditRemark; AuditSubmitData.NextStateCode = tmpnextStateCode; AuditSubmitData.NextApprovalUser = new UserInfo(); AuditSubmitData.NextApprovalUser.CompanyID = NextCompanyID; AuditSubmitData.NextApprovalUser.DepartmentID = NextDepartmentID; AuditSubmitData.NextApprovalUser.PostID = NextPostID; AuditSubmitData.NextApprovalUser.UserID = NextUserID; AuditSubmitData.NextApprovalUser.UserName = NextUserName; AuditSubmitData.SubmitFlag = AuditSubmitFlag; //AuditSubmitData.XML = XmlObject; AuditSubmitData.FlowSelectType = IsFixedFlow ? FlowSelectType.FixedFlow : FlowSelectType.FreeFlow; if (!IsFixedFlow && ckbIsEndAudit.IsChecked.Value != true && action != AuditAction.Fail) { if (string.IsNullOrEmpty(this.txtAuditId.Text)) { //ComfirmWindow.ConfirmationBox("","请选择下一审核人" , Utility.GetResourceStr("CONFIRMBUTTON")); DataResult dataResult = new DataResult(); dataResult.FlowResult = FlowResult.FAIL; dataResult.Err = "请选择下一审核人"; //AuditEventArgs args = new AuditEventArgs(AuditEventArgs.AuditResult.Error, dataResult); //args.StartDate = this.AuditEntity.StartDate; //args.EndDate = System.DateTime.Now; this.DoAuditResult(dataResult); //this.CloseProcess(); return; } else if (this.txtAuditId.Text == SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID) { DataResult dataResult = new DataResult(); dataResult.FlowResult = FlowResult.FAIL; dataResult.Err = "不能提交给自己"; //AuditEventArgs args = new AuditEventArgs(AuditEventArgs.AuditResult.Error, dataResult); //args.StartDate = this.AuditEntity.StartDate; //args.EndDate = System.DateTime.Now; this.DoAuditResult(dataResult); //this.CloseProcess(); return; } } if (AuditSubmitData.FlowType == null) AuditSubmitData.FlowType = FlowType.Approval; if (AuditSubmitFlag == SubmitFlag.Approval) { AuditSubmitData.ApprovalUser.CompanyID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.UserPosts[0].CompanyID; AuditSubmitData.ApprovalUser.DepartmentID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.UserPosts[0].DepartmentID; AuditSubmitData.ApprovalUser.PostID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.UserPosts[0].PostID; AuditSubmitData.ApprovalUser.UserID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID; AuditSubmitData.ApprovalUser.UserName = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeName; } //提交人(只帮别人提单的时候起作用,区分单据所属人) AuditSubmitData.SumbitCompanyID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.UserPosts[0].CompanyID; AuditSubmitData.SumbitDeparmentID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.UserPosts[0].DepartmentID; AuditSubmitData.SumbitPostID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.UserPosts[0].PostID; AuditSubmitData.SumbitUserID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID; AuditSubmitData.SumbitUserName = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeName; //end /提交人(只帮别人提单的时候起作用,区分单据所属人) AuditSubmitData.ApprovalResult = (ApprovalResult)((int)action);// SMTWFTest.WcfFlowService.ApprovalResult.Pass; AuditService.SubimtFlowAsync(AuditSubmitData); RetSubmit = false; // beyond 记录日志 //submitStartTime = DateTime.Now; }
/// <summary> /// 获取下一状态数据 /// </summary> /// <param name="companyID"></param> /// <param name="FlowDefineXML"></param> /// <param name="Rules"></param> /// <param name="FlowLayoutXML"></param> /// <param name="BusinessXml"></param> /// <param name="UserID"></param> /// <param name="PostID"></param> /// <param name="FlowType"></param> /// <param name="DataResult"></param> /// <param name="user"></param> public void TmFlowToNextStep(string companyID, string FlowDefineXML, string Rules, string FlowLayoutXML, string BusinessXml, string UserID, string PostID, FlowType FlowType, ref DataResult DataResult, ref FlowUser user) { WorkflowRuntime WfRuntime = null; WorkflowInstance Instance = null; string strCurrActivitID = "StartFlow"; string strNextActivitID = "StartFlow"; bool IsCountersign = false; string CountersignType = "0"; //Role_UserType RuleName; List<UserInfo> AppUserInfo = null; Dictionary<FlowRole, List<UserInfo>> DictCounterUser = null; try { user.TrackingMessage += "创建工作流运行时 SMTWorkFlowManage.CreateWorkFlowRuntime(false)开始\r\n"; //创建工作流 WfRuntime = SMTWorkFlowManage.CreateWorkFlowRuntime(false); user.TrackingMessage += "创建工作流运行时SMTWorkFlowManage.CreateWorkFlowRuntime(false)完成\r\n"; Instance = SMTWorkFlowManage.CreateWorkflowInstance(WfRuntime, FlowDefineXML, Rules); #region 激发事件到一下状态 strCurrActivitID = strNextActivitID; //user.TrackingMessage += "激发事件到一下状态,并获取状态代码 SMTWorkFlowManage.GetNextStateByEvent(WfRuntime, Instance, strNextState, xml)开始" + Instance.InstanceId.ToString() + "\r\n"; strNextActivitID = SMTWorkFlowManage.GetFlowNextStepRoles(WfRuntime, Instance, strNextActivitID, BusinessXml); //user.TrackingMessage += "激发事件到一下状态,并获取状态代码 SMTWorkFlowManage.GetNextStateByEvent(WfRuntime, Instance, strNextState, xml)完成" + Instance.InstanceId.ToString() + "\r\n"; if (strNextActivitID == "EndFlow") { strNextActivitID = strCurrActivitID; } else { //获取节点对应的角色id List<FlowRole> listRoleID = FlowUtility.GetRlueIdFromActivitID(FlowLayoutXML, strNextActivitID, ref IsCountersign, ref CountersignType); if (listRoleID.Count == 0) { DataResult.Err = "流程:" + user.FlowName + " 没有找到对应角色"; DataResult.FlowResult = FlowResult.FAIL; Tracer.Debug("Formid=" + user.FormID + ";活动属性 Name=" + strNextActivitID + ";没有在流程:" + user.FlowName + " Layout中找到对应角色,Layout如下:\r\r" + FlowLayoutXML); return; } if (!IsCountersign) { Tracer.Debug("Formid=" + user.FormID + ";(非会签) 根活动的字符串查找角色状态码(即活动Name属性)StateCode=" + strNextActivitID + " Layout=" + FlowLayoutXML + ""); #region 非会签 bool isHigher = false; //根据角色找人,如果角色有多个人,只找其中一个 AppUserInfo = TmGetUserByRoleId(listRoleID[0].RoleName, UserID, PostID, ref isHigher); #region 打印审核人 string names = "\r\n=======FormID=" + user.FormID + " 非会签 根据角色找人,如果角色有多个人,只找其中一个 打印审核人B(listRole[0].RoleName=" + listRoleID[0].RoleName + ";UserID=" + UserID + ";PostID=" + PostID + ";isHigher=" + isHigher.ToString() + ")=======\r\n"; foreach (var us in AppUserInfo) { names += "CompanyID:" + us.CompanyID + "\r\n"; names += "DepartmentID:" + us.DepartmentID + "\r\n"; names += "PostID:" + us.PostID + "\r\n"; names += "UserID:" + us.UserID + "\r\n"; names += "CompanyName:" + us.CompanyName + "\r\n"; names += "DepartmentName:" + us.DepartmentName + "\r\n"; names += "PostName:" + us.PostName + "\r\n"; names += "UserName:"******"\r\n"; names += "----------------------------------------------------\r\n"; } if (!isHigher && listRoleID[0].IsOtherCompany != null) { if (listRoleID[0].IsOtherCompany.Value == true) { names += "是否指定公司:" + listRoleID[0].IsOtherCompany.Value.ToString() + "\r\n"; names += "公司的ID:" + listRoleID[0].OtherCompanyID + "\r\n"; if (string.IsNullOrEmpty(listRoleID[0].OtherCompanyID)) { names += "Layout=" + FlowLayoutXML + "\r\n"; } } else if (listRoleID[0].IsOtherCompany.Value == false) { names += "实际要查找公司的ID:" + companyID + " " + user.GetCompanyName(companyID) + "\r\n"; } } user.ErrorMsg += names; Tracer.Debug(names); #endregion #region beyond if (!isHigher) { if (listRoleID[0].IsOtherCompany != null && listRoleID[0].IsOtherCompany.Value == true) {//指定公司 //过滤人 AppUserInfo = AppUserInfo.Where(u => u.CompanyID == listRoleID[0].OtherCompanyID).ToList(); } else { AppUserInfo = AppUserInfo.Where(u => u.CompanyID == companyID).ToList(); } } #endregion if (AppUserInfo == null || AppUserInfo.Count == 0) { DataResult.Err = user.GetCompanyName(companyID) + " " + listRoleID[0].Remark + " 没有找到审核人"; DataResult.FlowResult = FlowResult.FAIL; return; } if (AppUserInfo.Where(c => c.UserID == UserID).Count() == 0) { } #endregion } else { Tracer.Debug("Formid=" + user.FormID + ";(会签) 根活动的字符串查找角色状态码(即活动Name属性)StateCode=" + strNextActivitID + " Layout=" + FlowLayoutXML + ""); #region 会签 DictCounterUser = new Dictionary<FlowRole, List<UserInfo>>(); if (CountersignType == "0") { #region 全部审核通过才算通过 for (int i = 0; i < listRoleID.Count; i++) { bool isHigher = false; var listuserinfo = TmGetUserByRoleId(listRoleID[i].RoleName, UserID, PostID, ref isHigher); #region 打印审核人 string names = "\r\n=======FormID=" + user.FormID + "会签 全部审核通过才算通过 打印审核人C(listRole[0].RoleName=" + listRoleID[i].RoleName + ";UserID=" + UserID + ";PostID=" + PostID + ";isHigher=" + isHigher.ToString() + ")=======\r\n"; if (listuserinfo != null) { foreach (var u in listuserinfo) { names += "CompanyID:" + u.CompanyID + "\r\n"; names += "DepartmentID:" + u.DepartmentID + "\r\n"; names += "PostID:" + u.PostID + "\r\n"; names += "UserID:" + u.UserID + "\r\n"; names += "CompanyName:" + u.CompanyName + "\r\n"; names += "DepartmentName:" + u.DepartmentName + "\r\n"; names += "PostName:" + u.PostName + "\r\n"; names += "UserName:"******"\r\n"; names += "----------------------------------------------------\r\n"; } } if (!isHigher && listRoleID[i].IsOtherCompany != null) { if (listRoleID[i].IsOtherCompany.Value == true) { names += "是否指定公司:" + listRoleID[i].IsOtherCompany.Value.ToString() + "\r\n"; names += "公司的ID:" + listRoleID[i].OtherCompanyID + "\r\n"; if (string.IsNullOrEmpty(listRoleID[i].OtherCompanyID)) { names += "Layout=" + FlowLayoutXML + "\r\n"; } } else if (listRoleID[i].IsOtherCompany.Value == false) { names += "实际要查找公司的ID:" + companyID + "\r\n"; } } user.ErrorMsg += names; Tracer.Debug(names); #endregion if (!isHigher) { if (listRoleID[i].IsOtherCompany != null && listRoleID[i].IsOtherCompany.Value == true) { listuserinfo = listuserinfo.Where(u => u.CompanyID == listRoleID[i].OtherCompanyID).ToList(); } else { listuserinfo = listuserinfo.Where(u => u.CompanyID == companyID).ToList(); } } if (listuserinfo == null || listuserinfo.Count == 0) { DataResult.Err = user.GetCompanyName(companyID) + " " + listRoleID[i].Remark + " 没有找到审核人"; DataResult.FlowResult = FlowResult.FAIL; return; } DictCounterUser.Add(listRoleID[i], listuserinfo); } #endregion } else { #region 只有一个审核通过了就算审核通过了 bool bFlag = false;//判断是否找到审核人 string roles = "";//得到所有的角色 user.TrackingMessage += "GetUserByStateCode\r\n"; for (int i = 0; i < listRoleID.Count; i++) { roles += listRoleID[i].Remark + "、"; #region bool isHigher = false; var listuserinfo = TmGetUserByRoleId(listRoleID[i].RoleName, UserID, PostID, ref isHigher); #region 打印审核人 string names = "\r\n=======FormID=" + user.FormID + " 会签 只有一个审核通过了就算审核通过了 打印审核人C(listRole[0].RoleName=" + listRoleID[i].RoleName + ";UserID=" + UserID + ";PostID=" + PostID + ";isHigher=" + isHigher.ToString() + ")=======\r\n"; foreach (var u in listuserinfo) { names += "CompanyID:" + u.CompanyID + "\r\n"; names += "DepartmentID:" + u.DepartmentID + "\r\n"; names += "PostID:" + u.PostID + "\r\n"; names += "UserID:" + u.UserID + "\r\n"; names += "CompanyName:" + u.CompanyName + "\r\n"; names += "DepartmentName:" + u.DepartmentName + "\r\n"; names += "PostName:" + u.PostName + "\r\n"; names += "UserName:"******"\r\n"; names += "----------------------------------------------------\r\n"; } if (!isHigher && listRoleID[i].IsOtherCompany != null) { if (listRoleID[i].IsOtherCompany.Value == true) { names += "是否指定公司:" + listRoleID[i].IsOtherCompany.Value.ToString() + "\r\n"; names += "公司的ID:" + listRoleID[i].OtherCompanyID + "\r\n"; if (string.IsNullOrEmpty(listRoleID[i].OtherCompanyID)) { names += "Layout=" + FlowLayoutXML + "\r\n"; } } else if (listRoleID[i].IsOtherCompany.Value == false) { names += "实际要查找公司的ID:" + companyID + "\r\n"; } } user.ErrorMsg += names; Tracer.Debug(names); #endregion if (!isHigher) { if (listRoleID[i].IsOtherCompany != null && listRoleID[i].IsOtherCompany.Value == true) { listuserinfo = listuserinfo.Where(u => u.CompanyID == listRoleID[i].OtherCompanyID).ToList(); } else { listuserinfo = listuserinfo.Where(u => u.CompanyID == companyID).ToList(); } } if (listuserinfo != null && listuserinfo.Count > 0) { bFlag = true; if (listuserinfo.FirstOrDefault(u => u.UserID == UserID) != null) { break; } } DictCounterUser.Add(listRoleID[i], listuserinfo); #endregion } if (!bFlag) { DataResult.Err = user.GetCompanyName(companyID) + " " + roles + " 没有找到审核人"; DataResult.FlowResult = FlowResult.FAIL; return; } user.TrackingMessage += " GetUserByStateCode完成\r\n"; //iscurruser = false; #endregion } #endregion } } #endregion DataResult.IsCountersign = IsCountersign; DataResult.AppState = strNextActivitID; DataResult.CountersignType = CountersignType; if (!IsCountersign) { #region 检查非会签角色是否有多个审核人 Tracer.Debug("FormID=" + user.FormID + " 检查非会签角色的审核人数=" + AppUserInfo.Count.ToString()); if (AppUserInfo.Count > 1) //处理角色对应多个用户,返回用户集给提交人,选择一个处理人 { DataResult.FlowResult = FlowResult.MULTIUSER; } DataResult.UserInfo = AppUserInfo; #endregion } else { Tracer.Debug("FormID=" + user.FormID + " 检查会签角色的审核人数=" + DictCounterUser.Count.ToString()); #region 检查会签角色是否有多个审核人,如果有多个审核人,则返回 DataResult.DictCounterUser = DictCounterUser; List<FlowRole> listkeys = DictCounterUser.Keys.ToList(); for (int i = 0; i < listkeys.Count; i++) { FlowRole key = listkeys[i]; if (DictCounterUser[key].Count > 1) { DataResult.FlowResult = FlowResult.Countersign; break; } } #endregion } user.TrackingMessage += " iscurruser完成\r\n"; } catch (Exception ex) { Tracer.Debug("Formid=" + user.FormID + ";GetUserByFlow2异常信息 :" + ex.ToString()); throw new Exception("获取下一状态数据出错,请联系管理员! \r\n FormID=" + user.FormID + ""); } finally { strCurrActivitID = null; strNextActivitID = null; //RuleName = null; AppUserInfo = null; Instance = null; user.TrackingMessage += " SMTWorkFlowManage.ColseWorkFlowRuntime(WfRuntime)\r\n"; SMTWorkFlowManage.ColseWorkFlowRuntime(WfRuntime); user.TrackingMessage += " SMTWorkFlowManage.ColseWorkFlowRuntime(WfRuntime)完成\r\n"; } }
public DataResult UpManufacturePlanTask([FromBody] ManufacturePlanTaskUp moveTask) { if (moveTask.FromOrder == 0 || moveTask.ToOrder == 0) { return(Result.GenError <DataResult>(Error.ManufactureTaskItemNotExist)); } var tasks = ServerConfig.ApiDb.Query <ManufacturePlanTask>("SELECT * FROM `manufacture_plan_task` WHERE MarkedDelete = 0 AND TotalOrder <= @FromOrder AND TotalOrder >= @ToOrder Order By TotalOrder;", moveTask); if (tasks.Count() < 2) { return(Result.GenError <DataResult>(Error.ManufactureTaskItemNotExist)); } if (tasks.Select(x => x.TotalOrder).All(y => y != moveTask.FromOrder && y != moveTask.ToOrder)) { return(Result.GenError <DataResult>(Error.ManufactureTaskItemNotExist)); } var fromTask = (ManufacturePlanTask)tasks.First(x => x.TotalOrder == moveTask.FromOrder).Clone(); var toTask = (ManufacturePlanTask)tasks.First(x => x.TotalOrder == moveTask.ToOrder).Clone(); //无法上移非等待中/非待检验任务 if ((fromTask.State != ManufacturePlanTaskState.Wait && fromTask.State != ManufacturePlanTaskState.WaitCheck && fromTask.State != ManufacturePlanTaskState.WaitRedo)) { return(Result.GenError <DataResult>(Error.ManufacturePlaneTaskNotWait)); } var count = tasks.Count(); var state = fromTask.IsCheck ? ManufacturePlanTaskState.Checking : ManufacturePlanTaskState.Doing; var res = fromTask.IsCheck ? Error.ManufacturePlaneTaskCheckAfterChecking : Error.ManufacturePlaneTaskAfterDoing; //不能上移到该操作工的进行中/检验中任务之前 if (tasks.Take(count - 1).Any(x => x.Person == fromTask.Person && x.State == state)) { return(Result.GenError <DataResult>(res)); } //不能上移到关联任务之前 if (tasks.Take(count - 1).Any(x => x.PlanId == fromTask.PlanId && x.Order == fromTask.Relation)) { return(Result.GenError <DataResult>(Error.ManufacturePlaneTaskAfterDoing)); } var changes = new List <ManufactureLog>(); var newTasks = new Dictionary <int, ManufacturePlanTask>(); newTasks.AddRange(tasks.Take(count - 1).OrderByDescending(x => x.TotalOrder).ToDictionary(x => x.Id)); var changeOrder = new List <Tuple <int, int> >(); foreach (var task in newTasks.Values) { if (task.PlanId == fromTask.PlanId) { //if (task.Relation != 0) //{ // task.Relation++; //} changeOrder.Add(new Tuple <int, int>(task.Order, task.Order + 1)); task.Order++; } task.TotalOrder++; } newTasks = newTasks.Values.OrderBy(x => x.TotalOrder).ToDictionary(x => x.Id); newTasks.Add(fromTask.Id, fromTask); newTasks.Values.Last().TotalOrder = newTasks.Values.First().TotalOrder - 1; var oldOrder = fromTask.Order; if (fromTask.PlanId == toTask.PlanId) { newTasks.Values.Last().Order = toTask.Order; } if (newTasks.Values.Last().Order <= 0) { newTasks.Values.Last().Order = 1; } changeOrder.Add(new Tuple <int, int>(oldOrder, newTasks.Values.Last().Order)); if (changeOrder.Any()) { var changeOrderTasks = ServerConfig.ApiDb.Query <ManufacturePlanTask>("SELECT * FROM `manufacture_plan_task` WHERE MarkedDelete = 0 AND `PlanId` = @PlanId AND `Relation` IN @Relation;", new { PlanId = fromTask.PlanId, Relation = changeOrder.Select(x => x.Item2) }); var chOrderTasks = new List <Tuple <int, int> >(); foreach (var chTuple in changeOrder) { chOrderTasks.AddRange(changeOrderTasks.Where(x => x.Relation == chTuple.Item1).Select(y => new Tuple <int, int>(y.Id, chTuple.Item2))); } ServerConfig.ApiDb.Execute("UPDATE manufacture_plan_task SET `MarkedDateTime`= NOW(), `Relation` = @Item2 WHERE `Id` = @Item1;", chOrderTasks); } var createUserId = Request.GetIdentityInformation(); var markedDateTime = DateTime.Now; var planChange = new ManufactureLog { Time = markedDateTime, Account = createUserId, PlanId = fromTask.PlanId, IsAssign = true, Type = ManufactureLogType.PlanUpdateItem, ParsingWay = 1, }; foreach (var oldTask in tasks.Where(x => x.PlanId == fromTask.PlanId)) { if (newTasks.ContainsKey(oldTask.Id)) { var newTask = newTasks[oldTask.Id]; if (oldTask.HaveChange(newTask, out var change)) { planChange.ParamList.Add(new ManufactureLogItem { Type = ManufactureLogType.UpdatePlanTaskFormat, Field = newTask.Order.ToString(), Items = change.ParamList.Select(y => { y.Type = ManufactureLogType.UpdatePlanTaskItemFormat; return(y); }) }); changes.Add(change); } } } changes.Add(planChange); ServerConfig.ApiDb.Execute("UPDATE manufacture_plan_task SET `MarkedDateTime`= NOW(), `TotalOrder` = @TotalOrder, `Order` = @Order, `Relation` = @Relation WHERE `Id` = @Id;", newTasks.Values); ManufactureLog.AddLog(changes); var result = new DataResult(); result.datas.AddRange(newTasks.Values.Where(x => x.Id == fromTask.Id || x.Id == toTask.Id)); return(result); }
public static void Main(string[] args) { //Object to Hold Task Parameters TaskDimensions task = new TaskDimensions(); //User number to start proccessing int user_number = 1; //Load File System Service IFileSystemSvc svc = new FileSystemSvcImpl(); //Method call to get the number of jobs and users from the file Y svc.detectSizeOfJobsColumns(task, Directory.GetCurrentDirectory()+"/files/new_Y_53.txt"); //Method call to get the number of features from the file X, and allocating the X matrix double[,] X = svc.getNumberOfFeaturesX(Directory.GetCurrentDirectory() + "/files/X.txt", task); svc.readFeaturesX(X, Directory.GetCurrentDirectory() + "/files/X.txt", task); //Method call to get the jobs names String[] job_list = svc.readJobNames(Directory.GetCurrentDirectory() + "/files/expressions.txt", task); //method that return the users profile UserProfile[] users_profile = svc.readUserProfile(Directory.GetCurrentDirectory() + "/files/new_user_table_53.txt", task); //Creating a variable to write in a File the job recommendations and comparisons //Load File Writer StreamWriter writeTextResult = svc.getResultStreamWriter(); StreamWriter writeTextAverages = svc.getAverageStreamWriter(); StreamWriter writeText = svc.getIdandAvgStreamWriter(); StreamWriter writeTextDiff = svc.getDifficultyStreamWriter(); double[] users_calculated_raitings = new double[task.num_users_init]; double total_rating_avg_system = 0; double total_similarity_avg_system = 0; double total_inaccuracy_system = 0; while (user_number <= task.num_users_init) { // job rating file for a user double[,] my_ratings = new double[task.num_jobs_init, 1]; //Now we read R and Y from theirs files (-1 because I will remove the chosen user from the matrixes) double[,] Y = svc.readTrainingY(Directory.GetCurrentDirectory() + "/files/new_Y_53.txt", task, my_ratings, user_number); double[,] R = svc.readTrainingR(Directory.GetCurrentDirectory() + "/files/new_R_53.txt", task, user_number); //Creating a MatLab reference to execute the recommended job script IMatlabSvc matSvc = new MatlabSvcImpl(); object[] res = matSvc.executeFilter(task, job_list, Directory.GetCurrentDirectory()+ "/files", my_ratings, Y, R, X, user_number); //Each time creates a to be used to write the recommended jobs in a file List<TopJobData> mylist = svc.writeValuesToFile(writeTextResult, res, job_list, user_number, X); //Calculate Averages for Jobs for a User DataResult avgs = new DataResult(mylist, mylist.Count, users_profile[user_number - 1]); avgs.AverageForEachJob(); svc.writeAveragesToFile(avgs, writeTextAverages, users_profile[user_number - 1]); total_rating_avg_system += avgs.Rating_total_avg; total_similarity_avg_system += avgs.Percentage_total_avg; total_inaccuracy_system += avgs.Self_inaccuracy; //adding the list at the Dictionary for each user //ID and AVGs file writeText.WriteLine(users_profile[user_number - 1].UserID + "\t" + avgs.Rating_total_avg); users_calculated_raitings[user_number - 1] = avgs.Rating_total_avg; //writing in the difficulty file svc.writeDifficultyToFile(writeTextDiff, avgs); //used to inC:\Users\larissaf\Desktop\FinaleVersionCrowd\recommenderSystems\Driver.cssert recommended jobs for a user in the database IElasticSvc es = new ElasticSvcImpl(); es.insertRecommenderJob(avgs); user_number++; } total_rating_avg_system /= task.num_users_init; total_similarity_avg_system /= task.num_users_init; total_inaccuracy_system /= task.num_users_init; //writing some more global information svc.writeGlobalAveragesInformation(total_rating_avg_system, total_similarity_avg_system, total_inaccuracy_system, task, writeTextAverages, users_profile, users_calculated_raitings); //closing the three files writeText.Close(); writeTextResult.Close(); writeTextAverages.Close(); writeTextDiff.Close(); /* * Used to insert rating for task performed by workers. (User interface need to be built) * double[,] full_Y = svc.readFullY(Directory.GetCurrentDirectory() + "/files/Y.txt", task); IElasticSvc e = new ElasticSvcImpl(); e.InsertRatings(job_list, users_profile, full_Y); */ Console.WriteLine("DONE"); //Wait until fisnih Console.ReadLine(); }
private void OnCaptured(CaptureResult captureResult) { try { if (!fingerprintReader.CheckCaptureResult(captureResult)) { return; } DataResult <Fmd> resultConversion = FeatureExtraction.CreateFmdFromFid(captureResult.Data, Constants.Formats.Fmd.ANSI); if (captureResult.ResultCode != Constants.ResultCode.DP_SUCCESS) { fingerprintReader.CurrentReader.Reset(); throw new Exception(captureResult.ResultCode.ToString()); } // See the SDK documentation for an explanation on threshold scores. int thresholdScore = DPFJ_PROBABILITY_ONE * 1 / 100000; if (isAdminLogin) { IdentifyResult identifyResult = Comparison.Identify(resultConversion.Data, 0, AdminFingerPrints.ToArray(), thresholdScore, AdminFingerPrints.Count); if (identifyResult.ResultCode != Constants.ResultCode.DP_SUCCESS) { throw new Exception(identifyResult.ResultCode.ToString()); } if (identifyResult.Indexes.Length > 0) { fingerprintReader.CancelCaptureAndCloseReader(this.OnCaptured); Application.Current.Dispatcher.Invoke((Action) delegate { AdminDashboard adminDashboard = new AdminDashboard(); adminDashboard.CurrentAdminId = AdminId.ElementAt(identifyResult.Indexes[0][0]); adminDashboard.Show(); fingerprintReader.CurrentReader.Dispose(); fingerprintReader.CurrentReader = null; this.Close(); }); } } else { IdentifyResult identifyResult = Comparison.Identify(resultConversion.Data, 0, StudenFingerPrints.ToArray(), thresholdScore, StudenFingerPrints.Count); if (identifyResult.ResultCode != Constants.ResultCode.DP_SUCCESS) { throw new Exception(identifyResult.ResultCode.ToString()); } if (identifyResult.Indexes.Length > 0) { fingerprintReader.CancelCaptureAndCloseReader(this.OnCaptured); Application.Current.Dispatcher.Invoke((Action) delegate { StudentDashboard studentDash = new StudentDashboard(StudentId.ElementAt(identifyResult.Indexes[0][0]).ToString(), database); studentDash.Show(); fingerprintReader.CurrentReader.Dispose(); fingerprintReader.CurrentReader = null; this.Close(); }); } } } catch (Exception) { Application.Current.Dispatcher.Invoke((Action) delegate { ErrorHeader1.Text = "Fingerprint device error"; ErrorContent1.Text = "Error while capturing the fingerprint."; DialogMessage1.IsOpen = true; }); } }
/// <summary> /// 通过持久化服务查询下一处理人(对应SubmitFlow) /// </summary> /// <param name="WfRuntimeClone">持久化运行时</param> /// <param name="instanceClone">持久化实例</param> /// <param name="xml">条件XML</param> /// <param name="CurrentStateName">当前状态代码</param> /// <param name="DataResult">操作结果</param> public void GetUserByInstance(string companyID, WorkflowRuntime WfRuntimeClone, WorkflowInstance instanceClone, string Layout, string xml, string CurrentStateName, List<string> UserID, List<string> PostID, FlowType FlowType, ref DataResult DataResult) { WorkflowRuntime WfRuntime = null; WorkflowInstance Instance = null; List<UserInfo> AppUserInfo = null; string strNextState = CurrentStateName; FlowRole RuleName; try { if (!WfRuntimeClone.IsStarted) { WfRuntimeClone.StartRuntime(); } WfRuntime = SMTWorkFlowManage.CreateWorkFlowRuntime(false); Instance = SMTWorkFlowManage.CloneWorkflowInstance(WfRuntimeClone, instanceClone, WfRuntime); bool iscurruser = true; while (iscurruser) { // CurrentStateName = strNextState; strNextState = SMTWorkFlowManage.GetFlowNextStepRoles(WfRuntime, Instance, strNextState, xml); //if (FlowType == FlowType.Task && strNextState != "EndFlow") //{ // XmlReader XmlReader; // StringReader tmpLayout = new StringReader(Layout); // XmlReader = XmlReader.Create(tmpLayout); // XElement XElementS = XElement.Load(XmlReader); // var a = from c in XElementS.Descendants("Activity") // where c.Attribute("Name").Value == strNextState // select c.Attribute("RoleName").Value; // if (a.Count() > 0) // { // strNextState = a.First().ToString(); // } // else // { // DataResult.Err = "没有找到对应角色"; // DataResult.FlowResult = FlowResult.FAIL; // return; // } // tmpLayout = null; // XmlReader = null; // XElementS = null; // a = null; //} RuleName = FlowUtility.GetRlueName(Layout, strNextState); if (RuleName == null) { DataResult.Err = "没有找到对应角色"; DataResult.FlowResult = FlowResult.FAIL; return; } string tmpPostID = RuleName.UserType == "CREATEUSER" ? PostID[0] : PostID[1]; bool isHigher = false; AppUserInfo = TmGetUserByRoleId(RuleName.RoleName, null, tmpPostID, ref isHigher); #region 打印审核人 string names = "\r\n=======打印审核人E(RuleName.RoleName=" + RuleName.RoleName + ";UserID=" + UserID + ";PostID=" + PostID + ";isHigher=" + isHigher.ToString() + ")=======\r\n"; foreach (var user in AppUserInfo) { names += "CompanyID:" + user.CompanyID + "\r\n"; names += "DepartmentID:" + user.DepartmentID + "\r\n"; names += "PostID:" + user.PostID + "\r\n"; names += "UserID:" + user.UserID + "\r\n"; names += "CompanyName:" + user.CompanyName + "\r\n"; names += "DepartmentName:" + user.DepartmentName + "\r\n"; names += "PostName:" + user.PostName + "\r\n"; names += "UserName:"******"\r\n"; names += "----------------------------------------------------\r\n"; } if (!isHigher && RuleName.IsOtherCompany != null) { if (RuleName.IsOtherCompany.Value == true) { names += "是否指定公司:" + RuleName.IsOtherCompany.Value.ToString() + "\r\n"; names += "公司的ID:" + RuleName.OtherCompanyID + "\r\n"; if (string.IsNullOrEmpty(RuleName.OtherCompanyID)) { names += "Layout=" + Layout + "\r\n"; } } else if (RuleName.IsOtherCompany.Value == false) { names += "实际要查找公司的ID:" + companyID + "\r\n"; } } Tracer.Debug(names); #endregion #region beyond if (!isHigher && RuleName.IsOtherCompany != null) { if (RuleName.IsOtherCompany.Value == true) { AppUserInfo = AppUserInfo.Where(user => user.CompanyID == RuleName.OtherCompanyID).ToList(); } else if (RuleName.IsOtherCompany.Value == false) { AppUserInfo = AppUserInfo.Where(user => user.CompanyID == companyID).ToList(); } } #endregion if (AppUserInfo == null || AppUserInfo.Count == 0) { DataResult.Err = "没有找到审核人"; DataResult.FlowResult = FlowResult.FAIL; return; } if (AppUserInfo.Where(c => c.UserID == UserID[1]).Count() == 0) iscurruser = false; } if (AppUserInfo.Count > 1) //处理角色对应多个用户,返回用户集给提交人,选择一个处理人 { DataResult.FlowResult = FlowResult.MULTIUSER; } DataResult.AppState = strNextState; DataResult.UserInfo = AppUserInfo; } catch (Exception ex) { Tracer.Debug("GetUserByInstance异常信息 :" + ex.ToString()); throw new Exception("GetUserByInstance:" + ex.Message); } finally { strNextState = null; AppUserInfo = null; RuleName = null; Instance = null; SMTWorkFlowManage.ColseWorkFlowRuntime(WfRuntime); } }
public async Task <IActionResult> Put([FromRoute] string projectTypeId, [FromBody] ProjectType projectType) { if (projectType is null) { throw new ArgumentNullException(nameof(projectType)); } if (string.IsNullOrWhiteSpace(projectTypeId)) { return(ErrorResult .BadRequest($"The identifier '{projectTypeId}' provided in the url path is invalid. Must be a valid project type ID.", ResultErrorCode.ValidationError) .ActionResult()); } var validation = new ProjectTypeValidator().Validate(projectType); if (!validation.IsValid) { return(ErrorResult .BadRequest(validation) .ActionResult()); } if (!projectTypeId.Equals(projectType.Id, StringComparison.OrdinalIgnoreCase)) { return(ErrorResult .BadRequest(new ValidationError { Field = "id", Message = $"ProjectType's id does match the identifier provided in the path." }) .ActionResult()); } var existingProjectType = await projectTypesRepository .GetAsync(projectType.Id) .ConfigureAwait(false); if (existingProjectType is null) { return(ErrorResult .NotFound($"A ProjectType with the ID '{projectType.Id}' could not be found in this TeamCloud Instance") .ActionResult()); } var providers = await providersRepository .ListAsync() .ToListAsync() .ConfigureAwait(false); var validProviders = projectType.Providers .All(p => providers.Any(provider => provider.Id == p.Id)); if (!validProviders) { var validProviderIds = string.Join(", ", providers.Select(p => p.Id)); return(ErrorResult .BadRequest(new ValidationError { Field = "projectType", Message = $"All provider ids on a ProjectType must match the id of a registered Provider on the TeamCloud instance. Valid provider ids are: {validProviderIds}" }) .ActionResult()); } existingProjectType .PopulateFromExternalModel(projectType); var updateResult = await orchestrator .UpdateAsync(existingProjectType) .ConfigureAwait(false); var returnUpdateResult = updateResult.PopulateExternalModel(); return(DataResult <ProjectType> .Ok(returnUpdateResult) .ActionResult()); }
private void DoAuditResult(DataResult dataResult) { try { if (dataResult.FlowResult == FlowResult.SUCCESS) { this.BindingData(this.FlowStateCode, this.RemindGuid, this.IsKpi, this.MessgeID); } else if (dataResult.FlowResult == FlowResult.END) { this.BindingData(this.FlowStateCode, this.RemindGuid, this.IsKpi, this.MessgeID); } else if (dataResult.FlowResult == FlowResult.FAIL) { // 1s 冉龙军 (待续) // 1e } else { // 1s 冉龙军 (待续) // 1e } } catch (Exception ex) { throw ex; } finally { // 1s 冉龙军 (待续) // 1e } }
private async Task InvokeDB(HttpContext context) { this.context = context; string path = context.Request.Path.ToString(); DBInterfaceModel response = this.routeDict[path]; #region init SqlConnection connection = new SqlConnection(SqlConnStr); SqlCommand cmd = new SqlCommand(); cmd.CommandTimeout = 0; cmd.Connection = connection; SqlDataAdapter sqlDA = new SqlDataAdapter(); sqlDA.SelectCommand = cmd; #endregion SqlTransaction tran = null; if (response.IsTransaction) { tran = connection.BeginTransaction(); cmd.Transaction = tran; } string excCmdText = ""; //存储异常的存储过程名 DataResult returnValue = new DataResult(); if (response.Steps.Count > 0) { #region 执行步骤 foreach (FlowStepModel flow in response.Steps) { switch (flow.CommandType) { case "Text": cmd.CommandType = CommandType.Text; break; case "StoredProcedure": cmd.CommandType = CommandType.StoredProcedure; break; } if (excCmdText != "") { excCmdText += ","; } excCmdText += flow.CommandText; if (flow.CommandText == "") { string msg1 = flow.StepName + " 没有数据库语句,请维护"; await InvokeException(msg1); return; } cmd.CommandText = flow.CommandText; cmd.Parameters.Clear(); if (response.Method.ToLower() == "get") { //cmd.Parameters.AddWithValue("SN", 1); foreach (string key in context.Request.Query.Keys) { StringValues value = new StringValues(); bool value1 = context.Request.Query.TryGetValue(key, out value); cmd.Parameters.AddWithValue(key, value[0]); } } else if (response.Method.ToLower() == "post") { try { var reader = new StreamReader(context.Request.Body); var contentFromBody = reader.ReadToEnd(); if (contentFromBody != "") { Dictionary <string, object> dict = JsonHelper.DeserializeJSON <Dictionary <string, object> >(contentFromBody); foreach (KeyValuePair <string, object> kv in dict) { cmd.Parameters.AddWithValue(kv.Key, kv.Value); } } } catch (System.Exception ex) { throw ex; } } } #endregion //执行语句 await ExecSql(response, tran, sqlDA, cmd, excCmdText); } else { await context.Response.WriteAsync(path + "没有任何步骤,请维护", UTF8Encoding.UTF8); } }
private bool GetUser(OracleConnection con, string OptFlag, string Xoml, string Rules, string xml, ref DataResult DataResult) { try { WorkflowRuntime WfRuntime = SMTWorkFlowManage.CreateWorkFlowRuntime(false); WorkflowInstance Instance = SMTWorkFlowManage.CreateWorkflowInstance(WfRuntime, Xoml, Rules); LogHelper.WriteLog("GetUser(try)下根据模型文件创建工作流实例(完成) ID=" + Instance.InstanceId); string strNextState = SMTWorkFlowManage.GetNextStateByEvent(WfRuntime, Instance, "StartFlow", xml); } catch (Exception ex) { } finally { } return true; }
//执行最后的sql private string ExecSql(InterfaceModel response, IDbConnection connection, IDbDataAdapter sqlDA, IDbCommand cmd, List <FilterCondition> filters) { XmlHelper xmlHelp = new XmlHelper(); string json = ""; object dataResult = new object(); object result = new object(); switch (response.ExecuteType) { case "Scalar": DataResult dataResult1 = new DataResult(); dataResult1.DataType = 200; dataResult1.Result = cmd.ExecuteScalar(); dataResult = dataResult1; result = dataResult1.Result; break; case "Int": IntDataResult intDataResult = new IntDataResult(); intDataResult.Result = cmd.ExecuteNonQuery(); intDataResult.DataType = 200; dataResult = intDataResult; result = intDataResult.Result; break; case "DataSet": DataSet ds = new DataSet(); DSDataResult dSDataResult = new DSDataResult(); sqlDA.Fill(ds); int lastIndex = ds.Tables.Count - 1; if (filters != null) { //复杂查询需要再过滤一下最后一个表 string msg; string filter = this.CreateFileterString(filters, out msg); if (msg != "") { throw new Exception(msg); } if (ds.Tables.Count > 0 && ds.Tables[lastIndex].Rows.Count > 0) { //只过滤最后一个表 DataTable table = ds.Tables[lastIndex]; table.DefaultView.RowFilter = filter; DataTable dtNew = table.DefaultView.ToTable(); ds.Tables.RemoveAt(lastIndex); ds.Tables.Add(dtNew); } dSDataResult.Result = ds; } else { int nCount = 0; if (this.context.Request.Headers.ContainsKey("NCS")) { bool bOK = context.Request.Headers.TryGetValue("NCS", out StringValues NCS); if (bOK) { nCount = int.Parse(NCS.ToString()); } } if (nCount > 0 && lastIndex >= 0) { DataTable dtNew = DtSelectTop(nCount, ds.Tables[lastIndex]); ds.Tables.RemoveAt(lastIndex); ds.Tables.Add(dtNew); } dSDataResult.Result = ds; } dataResult = dSDataResult; dSDataResult.DataType = 200; break; } if (response.SerializeType == "Xml") { switch (response.ExecuteType) { case "Scalar": json = xmlHelp.SerializeXML <DataResult>(dataResult); break; case "Int": json = xmlHelp.SerializeXML <IntDataResult>(dataResult); break; case "DataSet": json = xmlHelp.SerializeXML <DSDataResult>(dataResult); break; } } else if (response.SerializeType == "Json") { json = JsonConvert.SerializeObject(dataResult); } else { json = result.ToString(); } return(json); }
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> /// Gets invoked if the user has sent some media (Photo, Audio, Video, Contact, Location, Document) /// </summary> /// <param name="message"></param> /// <returns></returns> public virtual async Task SentData(DataResult message) { }
/// <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="WfRuntimeClone">持久化运行时</param> /// <param name="instanceClone">持久化实例</param> /// <param name="xml">条件XML</param> /// <param name="CurrentStateName">当前状态代码</param> /// <param name="DataResult">操作结果</param> public void GetUserByInstance(WorkflowRuntime WfRuntimeClone, WorkflowInstance instanceClone, string xml, string CurrentStateName, string UserID, string PostID, ref DataResult DataResult) { if (!WfRuntimeClone.IsStarted) { WfRuntimeClone.StartRuntime(); } WorkflowRuntime WfRuntime = null; WorkflowInstance Instance = null; try { WfRuntime = SMTWorkFlowManage.CreateWorkFlowRuntime(false); Instance = SMTWorkFlowManage.CloneWorkflowInstance(WfRuntimeClone, instanceClone, WfRuntime); string strNextState = SMTWorkFlowManage.GetFlowNextStepRoles(WfRuntime, Instance, CurrentStateName, xml); bool isHigher = false; List<UserInfo> AppUserInfo = TmGetUserByRoleId(strNextState, UserID, PostID, ref isHigher); #region 打印审核人 string names = "\r\n=======打印审核人D(strNextState" + strNextState + ";UserID=" + UserID + ";PostID=" + PostID + ";isHigher=" + isHigher.ToString() + ")=======\r\n"; foreach (var user in AppUserInfo) { names += "CompanyID:" + user.CompanyID + "\r\n"; names += "DepartmentID:" + user.DepartmentID + "\r\n"; names += "PostID:" + user.PostID + "\r\n"; names += "UserID:" + user.UserID + "\r\n"; names += "CompanyName:" + user.CompanyName + "\r\n"; names += "DepartmentName:" + user.DepartmentName + "\r\n"; names += "PostName:" + user.PostName + "\r\n"; names += "UserName:"******"\r\n"; names += "----------------------------------------------------\r\n"; } #endregion if (AppUserInfo == null || AppUserInfo.Count == 0) { DataResult.Err = "没有找到审核人"; DataResult.FlowResult = FlowResult.FAIL; } else if (AppUserInfo.Count > 1) //处理角色对应多个用户,返回用户集给提交人,选择一个处理人 { DataResult.FlowResult = FlowResult.MULTIUSER; } DataResult.UserInfo = AppUserInfo; } catch (Exception ex) { Tracer.Debug("GetUserByInstance异常信息 :" + ex.ToString()); throw new Exception(ex.Message); } finally { Instance = null; SMTWorkFlowManage.ColseWorkFlowRuntime(WfRuntime); } }
public DataResult GetWorkOrderLine([FromQuery] int qId) { var result = new DataResult(); //工单 var workOrder = SmartWorkOrderHelper.Instance.Get <SmartWorkOrder>(qId); if (workOrder == null) { result.errno = Error.SmartWorkOrderNotExist; return(result); } //工单生产线 标准流程 var smartLineWorkOrders = SmartLineWorkOrderHelper.GetSmartLineWorkOrderDetailsByWorkOrderId(qId); if (!smartLineWorkOrders.Any()) { return(result); } //流程卡 var flowCards = SmartFlowCardHelper.GetSmartFlowCardsByWorkOrderId(qId); if (!flowCards.Any()) { return(result); } //流程编号id var processCodeIds = flowCards.Select(x => x.ProcessCodeId); //流程编号 var processCodes = SmartProcessCodeHelper.Instance.GetByIds <SmartProcessCode>(processCodeIds); if (!processCodes.Any()) { return(result); } //流程卡id var flowCardIds = flowCards.Select(x => x.Id); //流程卡流程错误 var processFaults = SmartProcessFaultHelper.GetSmartProcessFaultDetailsByFlowCardIds(flowCardIds); //标准生产线 var tempLines = smartLineWorkOrders.GroupBy(x => x.ProcessCodeCategoryId).ToDictionary(x => x.Key); foreach (var processFault in processFaults) { var processCodeId = flowCards.FirstOrDefault(x => x.Id == processFault.FlowCardId)?.ProcessCodeId ?? 0; if (processCodeId == 0) { continue; } var processCodeCategoryId = processCodes.FirstOrDefault(x => x.Id == processCodeId)?.CategoryId ?? 0; if (processCodeCategoryId == 0) { continue; } if (!tempLines.ContainsKey(processCodeCategoryId)) { continue; } var line = tempLines[processCodeCategoryId]; var process = line.FirstOrDefault(x => x.ProcessId == processFault.ProcessId); process.Faults.Add(processFault); } var lines = new List <SmartWorkOrderLine>(); foreach (var tempLine in tempLines) { var line = new SmartWorkOrderLine(); line.Processes.AddRange(tempLine.Value); lines.Add(line); } result.datas.AddRange(lines); return(result); }
public AuditEventArgs(AuditResult auditResult, DataResult innerResult) { result = auditResult; InnerResult = innerResult; this.Action = AuditAction.Audit; }
private bool GetUser( string OptFlag, string Xoml, string Rules, string xml, ref DataResult DataResult) { try { WorkflowRuntime WfRuntime = SMTWorkFlowManage.CreateWorkFlowRuntime(false); WorkflowInstance Instance = SMTWorkFlowManage.CreateWorkflowInstance(WfRuntime, Xoml, Rules); Tracer.Debug("GetUser(try)下根据模型文件创建工作流实例(完成) ID=" + Instance.InstanceId); string strNextState = SMTWorkFlowManage.GetFlowNextStepRoles(WfRuntime, Instance, "StartFlow", xml); } catch (Exception ex) { } finally { } return true; }
private void DoAuditResult(DataResult dataResult) { try { //beyond 加入撤单 if (dataResult.FlowResult == FlowResult.SUCCESS && dataResult.SubmitFlag == SubmitFlag.Cancel) { AuditEventArgs args = new AuditEventArgs(AuditEventArgs.AuditResult.CancelSubmit, dataResult); args.StartDate = this.AuditEntity.StartDate; args.EndDate = System.DateTime.Now; OnAuditCompleted(this, args); this.BindingData(); } else if (dataResult.FlowResult == FlowResult.SUCCESS) { AuditEventArgs args = new AuditEventArgs(AuditEventArgs.AuditResult.Auditing, dataResult); if (currAuditOperation == AuditOperation.Add) { args.Action = AuditEventArgs.AuditAction.Submit; } args.StartDate = this.AuditEntity.StartDate; args.EndDate = System.DateTime.Now; OnAuditCompleted(this, args); this.BindingData(); } else if (dataResult.FlowResult == FlowResult.END) { if (currentAction == AuditAction.Fail) { AuditEventArgs args = new AuditEventArgs(AuditEventArgs.AuditResult.Fail, dataResult); args.StartDate = this.AuditEntity.StartDate; args.EndDate = System.DateTime.Now; OnAuditCompleted(this, args); } else if (currentAction == AuditAction.Pass) { AuditEventArgs args = new AuditEventArgs(AuditEventArgs.AuditResult.Successful, dataResult); args.StartDate = this.AuditEntity.StartDate; args.EndDate = System.DateTime.Now; OnAuditCompleted(this, args); } this.BindingData(); } else if (dataResult.FlowResult == FlowResult.FAIL) { AuditEventArgs args = new AuditEventArgs(AuditEventArgs.AuditResult.Error, dataResult); args.StartDate = this.AuditEntity.StartDate; args.EndDate = System.DateTime.Now; OnAuditCompleted(this, args); } else if (dataResult.FlowResult == FlowResult.Countersign) { this.CounterAction(dataResult); } else { OtherAction(dataResult); } } // 1s 冉龙军 // catch //{ // throw new Exception(); //} catch (Exception ex) { //MessageBox.Show(Utility.GetResourceStr("ERROR"), Utility.GetResourceStr(ex.Message), MessageBoxButton.OK); ComfirmWindow.ConfirmationBoxs(Utility.GetResourceStr("ERROR"), Utility.GetResourceStr("ERRORINFO"), Utility.GetResourceStr("CONFIRM"), MessageIcon.Error); } // 1e finally { CanAudit(true); } }
public IDataResult <IColumnItem> ColumnParser (IExcelWorksheetEntity excelWorksheet, ExcelConfiguration excelConfiguration) { IDataResult <IColumnItem> dataResult = new DataResult <IColumnItem>() { Success = false }; IColumnItem columnItem = new ColumnItem(); int column = excelWorksheet.CellNo; IDataResult <string> resultValue = _readExcelData.GetValue(excelWorksheet); int nomertitle = excelConfiguration.DataRowIndex.Title; IExcelWorksheetEntity tmpExcel = new ExcelWorksheetEntity(); tmpExcel.RowNo = nomertitle; tmpExcel.ExcelWorksheet = excelWorksheet.ExcelWorksheet; tmpExcel.CellNo = column; string nameTitle = _readExcelData.GetValue(tmpExcel).Data; string configNameSection = excelConfiguration.DataColumn.Datas .FirstOrDefault(p => p.ColumnType == (int)ColumnType.Section)?.Name; configNameSection = _dataNormalization.NormalizeString(configNameSection).Data; columnItem.BaseEntity = new BaseEntity(); bool isResult = false; foreach (var data in excelConfiguration.DataColumn.Datas) { if (column == data.Nomer) { if (!resultValue.Success) { if (data.MustExist) { dataResult.Message += resultValue.Message; } } columnItem.ColumnType = (ColumnType)data.ColumnType; columnItem.BaseEntity = GetBaseEntity (excelWorksheet, resultValue.Data, column, excelConfiguration); isResult = true; } } if (!isResult) { nameTitle = _dataNormalization.NormalizeString(nameTitle).Data; if (nameTitle == null) { //TODO dataResult.Success = true; return(dataResult); } if (nameTitle.Contains(configNameSection)) { columnItem.ColumnType = ColumnType.SectionTransfer; nameTitle = nameTitle.Replace(configNameSection, string.Empty); } else { columnItem.ColumnType = ColumnType.WorldSection; } dataResult.Message += resultValue.Message; string language = LanguageHolder.GetISOCodes(nameTitle, _dataNormalization); ITranslationEntity entity = new TranslationEntity(); entity.Language = language; entity.Value = resultValue.Data; columnItem.BaseEntity = entity; } columnItem.ColumNumber = column; dataResult.Data = columnItem; dataResult.Success = true; return(dataResult); }
public ActionResult ToSaleReportListExcel() { string BarCode = WebUtil.GetFormValue <string>("BarCode"); string ProductName = WebUtil.GetFormValue <string>("ProductName"); string CusNum = WebUtil.GetFormValue <string>("CusNum"); string CusName = WebUtil.GetFormValue <string>("CusName"); string BeginTime = WebUtil.GetFormValue <string>("BeginTime"); string EndTime = WebUtil.GetFormValue <string>("EndTime"); int PageIndex = 1; int PageSize = Int32.MaxValue; Dictionary <string, string> dic = new Dictionary <string, string>(); dic.Add("CompanyID", CompanyID); dic.Add("BarCode", BarCode); dic.Add("ProductName", ProductName); dic.Add("CusNum", CusNum); dic.Add("CusName", CusName); dic.Add("BeginTime", BeginTime); dic.Add("EndTime", EndTime); dic.Add("PageIndex", PageIndex.ToString()); dic.Add("PageSize", PageSize.ToString()); ITopClient client = new TopClientDefault(); string result = client.Execute(SaleApiName.SaleApiName_GetDetailList, dic); string returnValue = string.Empty; if (!result.IsEmpty()) { DataListResult <SaleDetailEntity> dataResult = JsonConvert.DeserializeObject <DataListResult <SaleDetailEntity> >(result); List <SaleDetailEntity> listResult = dataResult.Result; if (!listResult.IsNullOrEmpty()) { DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("产品名称")); dt.Columns.Add(new DataColumn("产品编号")); dt.Columns.Add(new DataColumn("产品规格")); dt.Columns.Add(new DataColumn("销售单号")); dt.Columns.Add(new DataColumn("数量")); dt.Columns.Add(new DataColumn("单价")); dt.Columns.Add(new DataColumn("总价")); dt.Columns.Add(new DataColumn("客户")); dt.Columns.Add(new DataColumn("销售时间")); foreach (SaleDetailEntity t in listResult) { DataRow row = dt.NewRow(); row[0] = t.ProductName; row[1] = t.BarCode; row[2] = t.Size; row[3] = t.OrderNum; row[4] = t.Num.ToString("0.00"); row[5] = t.Price.ToString("0.00"); row[6] = t.Amount.ToString("0.00"); row[7] = t.CusName; row[8] = t.CreateTime.To("yyyy-MM-dd"); dt.Rows.Add(row); } string filePath = Server.MapPath("~/UploadFile/"); if (!System.IO.Directory.Exists(filePath)) { System.IO.Directory.CreateDirectory(filePath); } string filename = string.Format("销售详细报表{0}.xls", DateTime.Now.ToString("yyyyMMddHHmmssfff")); NPOIExcel excel = new NPOIExcel("销售详细报表", "销售详细报表", System.IO.Path.Combine(filePath, filename)); excel.ToExcel(dt); returnValue = ("/UploadFile/" + filename).Escape(); } } DataResult returnResult = null; if (!returnValue.IsEmpty()) { returnResult = new DataResult() { Code = 1000, Message = returnValue }; } else { returnResult = new DataResult() { Code = 1001, Message = "没有任何数据导出" }; } return(Content(JsonHelper.SerializeObject(returnResult))); }
public JsonResult UploadFile(IFormFileCollection files) { DataResult dr = new DataResult(); try { if (files != null && files.Count > 0) { string[] fileUrl = new string[files.Count]; for (int i = 0; i < files.Count; i++) { var file = files[i]; if (file.Length > 0) { Stream stream = file.OpenReadStream(); byte[] bytes = new byte[stream.Length]; stream.Read(bytes, 0, bytes.Length); stream.Seek(0, SeekOrigin.Begin); string suffix = string.Empty; suffix = GetImageFormat(stream); stream.Seek(0, SeekOrigin.Begin); //新文件名 string newFileName = string.Empty; if (!string.IsNullOrWhiteSpace(suffix)) { System.Drawing.Image img = System.Drawing.Image.FromStream(stream); newFileName = Guid.NewGuid().ToString() + suffix; stream.Seek(0, SeekOrigin.Begin); fileUrl[i] = Helper.QiNiuHelper.UploadData(newFileName, bytes) + "?" + img.Width.ToString() + "x" + img.Height.ToString(); } else { string fileName = file.FileName; /*获取文件名*/ suffix = fileName.Substring(fileName.LastIndexOf(".") + 1); /*获取后缀名*/ newFileName = Guid.NewGuid().ToString() + "." + suffix; fileUrl[i] = Helper.QiNiuHelper.UploadData(newFileName, bytes); } } } dr.code = "200"; dr.data = fileUrl; } else { dr.code = "201"; dr.msg = "文件为空"; } } catch (Exception ex) { dr.code = "999"; dr.msg = ex.Message; } return(Json(dr)); }
private void OnCaptured(CaptureResult captureResult) { try { if (!fingerprint.CheckCaptureResult(captureResult)) { return; } DataResult <Fmd> resultConversion = FeatureExtraction.CreateFmdFromFid(captureResult.Data, Constants.Formats.Fmd.ANSI); if (captureResult.ResultCode != Constants.ResultCode.DP_SUCCESS) { fingerprint.CurrentReader.Reset(); Application.Current.Dispatcher.Invoke((Action) delegate { TxtBlock_FingerprintMessage.Text = "Error. Please try again. Place your finger on the device."; }); throw new Exception(captureResult.ResultCode.ToString()); } if (studentInfo.Firstfinger == null) { studentInfo.Firstfinger = resultConversion.Data; Application.Current.Dispatcher.Invoke((Action) delegate { TxtBlock_FingerprintMessage.Text = "Finger was captured. Now Place the same finger on the device."; }); } else { if (studentInfo.Lastfinger == null) { studentInfo.Lastfinger = resultConversion.Data; Fmd[] fmds = new Fmd[1]; fmds[0] = studentInfo.Firstfinger; // See the SDK documentation for an explanation on threshold scores. int thresholdScore = DPFJ_PROBABILITY_ONE * 1 / 100000; IdentifyResult identifyResult = Comparison.Identify(studentInfo.Lastfinger, 0, fmds, thresholdScore, 1); if (identifyResult.ResultCode != Constants.ResultCode.DP_SUCCESS) { throw new Exception(identifyResult.ResultCode.ToString()); } if (identifyResult.Indexes.Length <= 0) { Application.Current.Dispatcher.Invoke((Action) delegate { TxtBlock_FingerprintMessage.Text = "Failed, first finger and second finger not matched. Please try again, place any finger on the device."; studentInfo.Firstfinger = null; studentInfo.Lastfinger = null; }); } else { Application.Current.Dispatcher.Invoke((Action) delegate { SaveStudentToDatabase(); TxtBlock_FingerprintMessage.Text = "Success, your fingerprint data was saved. Please click the next button to finish."; Btn_ProceedLast.IsEnabled = true; fingerprint.CancelCaptureAndCloseReader(this.OnCaptured); }); } } } } catch (Exception ex) { MessageBox.Show("Error while capturing the fingerprint.\nPlease try again later." + ex, "Error Fingerprint", MessageBoxButton.OK, MessageBoxImage.Error); Application.Current.Dispatcher.Invoke((Action) delegate { fingerprint.CurrentReader.Dispose(); fingerprint.CurrentReader = null; this.Close(); }); } }
public void CreateEditRoom(PubgSession session, string body, string grounpId, string gamePassword, string roomId, string roomName, string checkCode, string userId) { Logger.InfoFormat("创建编辑房间:{0},{1},{2},{3}", grounpId, roomId, roomName, checkCode); DataResult dataResult = new DataResult(); string sql = "select * from grounp where id = @id and checkCode = @checkCode"; int result = MySqlExecuteTools.GetCountResult(sql, new MySqlParameter[] { new MySqlParameter("@id", grounpId), new MySqlParameter("@@checkCode", gamePassword) }); if (result == 0) { dataResult.result = 1; dataResult.resean = "游戏密码错误,操作失败"; session.Send(GetSendData(dataResult, body)); return; } //ADD if (roomId.Equals("-1")) { //每个用户只能创建一个房间 sql = "select * from room where userId = @userId"; int roomCount = MySqlExecuteTools.GetCountResult(sql, new MySqlParameter[] { new MySqlParameter("@userId", userId) }); if (roomCount >= 1) { dataResult.result = 1; dataResult.resean = "创建失败,每个队长只能创建一个战队"; session.Send(GetSendData(dataResult, body)); return; } //不能加入其他队还进行队的创建 sql = "select * from room_user where user_id = @userId"; roomCount = MySqlExecuteTools.GetCountResult(sql, new MySqlParameter[] { new MySqlParameter("@userId", userId) }); if (roomCount > 0) { dataResult.result = 1; dataResult.resean = "创建失败,您已经加入战队,无法再次创建"; session.Send(GetSendData(dataResult, body)); return; } //创建房间 sql = "insert into room(grounpId,name,checkCode,userId) " + "values('" + grounpId + "','" + roomName + "','" + checkCode + "','" + userId + "')"; long newRoomId = MySqlExecuteTools.GetAddID(sql); //用户加入到该房间 sql = "insert into room_user(room_id,user_id) " + "values('" + newRoomId + "','" + userId + "')"; MySqlExecuteTools.AddOrUpdate(sql); } //更新 else { sql = "update room set name = '" + roomName + "', checkCode = '" + checkCode + "' where id = @roomid;"; MySqlExecuteTools.GetCountResult(sql, new MySqlParameter[] { new MySqlParameter("@roomid", roomId) }); } dataResult.result = 0; session.Send(GetSendData(dataResult, body)); }
public ActionResult <DataResult> Crete(string token, [FromForm] AdminEntity adminEntity) { DataResult dataResult = new DataResult(); return(dataResult); }
/// <summary> /// 非会签是使用 /// </summary> /// <param name="con"></param> /// <param name="workflowRuntime"></param> /// <param name="instance"></param> /// <param name="entity"></param> /// <param name="NextStateCode"></param> /// <param name="AppUser"></param> /// <param name="AgentUser"></param> /// <param name="SubmitFlag"></param> /// <param name="FlowType"></param> /// <returns></returns> public DataResult AddOrUpdateFlowRecord( WorkflowRuntime workflowRuntime, WorkflowInstance instance, FLOW_FLOWRECORDDETAIL_T entity, string NextStateCode, UserInfo AppUser, UserInfo AgentUser, SubmitFlag SubmitFlag, FlowType FlowType,ref FlowUser fUser) { DataResult tmpDataResult = new DataResult(); UserInfo tmpUserInfo = AppUser; tmpDataResult.UserInfo.Add(tmpUserInfo); try { if (SubmitFlag == SubmitFlag.New) { #region 新增流程 //添加启动状态 if (SubmitFlag == FlowWFService.SubmitFlag.New) { entity.FLOW_FLOWRECORDMASTER_T.FLOWRECORDMASTERID = Guid.NewGuid().ToString(); } entity.FLOW_FLOWRECORDMASTER_T.CHECKSTATE = "1"; entity.FLOW_FLOWRECORDMASTER_T.CREATECOMPANYID = entity.CREATECOMPANYID; entity.FLOW_FLOWRECORDMASTER_T.CREATEDEPARTMENTID = entity.CREATEDEPARTMENTID; entity.FLOW_FLOWRECORDMASTER_T.CREATEPOSTID = entity.CREATEPOSTID; entity.FLOW_FLOWRECORDMASTER_T.CREATEUSERID = entity.CREATEUSERID; entity.FLOW_FLOWRECORDMASTER_T.CREATEUSERNAME = entity.CREATEUSERNAME; entity.FLOW_FLOWRECORDMASTER_T.EDITUSERID = entity.CREATEUSERID; entity.FLOW_FLOWRECORDMASTER_T.EDITUSERNAME = entity.CREATEUSERNAME; entity.FLOW_FLOWRECORDMASTER_T.CREATEDATE = DateTime.Now; entity.FLOWRECORDDETAILID = Guid.NewGuid().ToString(); // entity.FLOW_FLOWRECORDMASTER_T .INSTANCEID = instance.InstanceId.ToString(); entity.FLAG = "1"; entity.CHECKSTATE = "1"; //entity.FlowCode = "TestFlow"; //正式使用时关屏蔽 entity.STATECODE = "StartFlow"; 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; #region 引擎自动提交时停留在提交人处 if (FlowType == FlowType.Pending) { entity.FLAG = "0"; entity.EDITUSERID = AppUser.UserID; entity.EDITUSERNAME = AppUser.UserName; entity.EDITCOMPANYID = AppUser.CompanyID; entity.EDITDEPARTMENTID = AppUser.DepartmentID; entity.EDITPOSTID = AppUser.PostID; fUser.NextEditUserID = entity.EDITUSERID; fUser.NextEditUserName = entity.EDITUSERNAME; FLOW_FLOWRECORDMASTER_TDAL.Add( entity.FLOW_FLOWRECORDMASTER_T); AddFlowDetailRecord( entity, NextStateCode, AppUser.UserID); tmpDataResult.FlowResult = FlowResult.SUCCESS; tmpDataResult.CheckState = "1"; return tmpDataResult; } #endregion FLOW_FLOWRECORDMASTER_TDAL.Add( entity.FLOW_FLOWRECORDMASTER_T); fUser.NextEditUserID = entity.EDITUSERID; fUser.NextEditUserName = entity.EDITUSERNAME; AddFlowDetailRecord( entity, NextStateCode, AppUser.UserID); FLOW_FLOWRECORDDETAIL_T entDetail = new FLOW_FLOWRECORDDETAIL_T(); //添加下一状态 entDetail.FLOWRECORDDETAILID = Guid.NewGuid().ToString(); entDetail.FLOW_FLOWRECORDMASTER_T = entity.FLOW_FLOWRECORDMASTER_T; entDetail.STATECODE = NextStateCode == "" ? SMTWorkFlowManage.GetNextState(workflowRuntime, instance, entity.STATECODE) : NextStateCode; entDetail.PARENTSTATEID = entity.FLOWRECORDDETAILID;//entity.StateCode; //entity2.Content = "."; entDetail.FLAG = "0"; entDetail.CHECKSTATE = "2"; entDetail.CREATEPOSTID = entity.CREATEPOSTID; entDetail.CREATECOMPANYID = entity.CREATECOMPANYID; entDetail.CREATEDEPARTMENTID = entity.CREATEDEPARTMENTID; entDetail.CREATEUSERID = entity.EDITUSERID; entDetail.CREATEUSERNAME = entity.EDITUSERNAME; entDetail.CREATEDATE = DateTime.Now; entDetail.EDITUSERID = AppUser.UserID; entDetail.EDITUSERNAME = AppUser.UserName; entDetail.EDITCOMPANYID = AppUser.CompanyID; entDetail.EDITDEPARTMENTID = AppUser.DepartmentID; entDetail.EDITPOSTID = AppUser.PostID; entDetail.EDITDATE = DateTime.Now; if (AgentUser != null) //如果启用了代理,把代理人信息写入 { entDetail.AGENTUSERID = AgentUser.UserID; entDetail.AGENTERNAME = AgentUser.UserName; entDetail.AGENTEDITDATE = DateTime.Now; } tmpDataResult.AppState = entDetail.STATECODE; if (entDetail.STATECODE != "EndFlow") { fUser.NextEditUserID = entDetail.EDITUSERID; fUser.NextEditUserName = entDetail.EDITUSERNAME; AddFlowDetailRecord( entDetail, NextStateCode, AppUser.UserID); tmpDataResult.FlowResult = FlowResult.SUCCESS; tmpDataResult.CheckState = "1"; } else { tmpDataResult.CheckState = "2"; tmpDataResult.FlowResult = FlowResult.END; //如果没有下一处理节点,则返回END } tmpDataResult.IsCountersignComplete = true; return tmpDataResult; #endregion } else { #region 更新流程 //如果NextStateCode为空则自动获取模型中的下一状态,如果不为空则使用传入状态代码,并使用传入下一任务人ID //更新本流程 entity = UpdateFlowDetailRecord( entity, NextStateCode, AppUser.UserID); string stateCode = ""; if (NextStateCode.ToUpper() == "ENDFLOW") { stateCode = NextStateCode; } else { stateCode = string.IsNullOrEmpty(NextStateCode) ? SMTWorkFlowManage.GetNextState(workflowRuntime, instance, entity.STATECODE) : NextStateCode; } if (stateCode == "EndFlow") { #region entity.FLOW_FLOWRECORDMASTER_T.CHECKSTATE = "2"; //设为终审通过 if (entity.EDITDATE == entity.AGENTEDITDATE) //代理审核时 { entity.FLOW_FLOWRECORDMASTER_T.EDITUSERID = entity.AGENTUSERID; entity.FLOW_FLOWRECORDMASTER_T.EDITUSERNAME = entity.AGENTERNAME; } else //正常审核时 { entity.FLOW_FLOWRECORDMASTER_T.EDITUSERID = entity.EDITUSERID; entity.FLOW_FLOWRECORDMASTER_T.EDITUSERNAME = entity.EDITUSERNAME; } entity.FLOW_FLOWRECORDMASTER_T.EDITDATE = DateTime.Now; UpdateFlowDetailRecord( entity, NextStateCode, AppUser.UserID); FLOW_FLOWRECORDMASTER_TDAL.Update(entity.FLOW_FLOWRECORDMASTER_T); tmpDataResult.AppState = stateCode; tmpDataResult.FlowResult = FlowResult.END; //如果没有下一处理节点,则返回END tmpDataResult.CheckState = "2"; #endregion } else { #region //添加下一状态 FLOW_FLOWRECORDDETAIL_T entity2 = new FLOW_FLOWRECORDDETAIL_T(); //添加下一状态 entity2.FLOWRECORDDETAILID = Guid.NewGuid().ToString(); if (NextStateCode != "") { entity2.STATECODE = NextStateCode; } else { entity2.STATECODE = stateCode; } entity2.FLOW_FLOWRECORDMASTER_T = entity.FLOW_FLOWRECORDMASTER_T; entity2.PARENTSTATEID = entity.FLOWRECORDDETAILID;// entity.StateCode; entity2.FLAG = "0"; entity2.CHECKSTATE = "2"; entity2.CREATEPOSTID = entity.CREATEPOSTID; entity2.CREATECOMPANYID = entity.CREATECOMPANYID; entity2.CREATEDEPARTMENTID = entity.CREATEDEPARTMENTID; entity2.CREATEUSERID = entity.EDITUSERID; entity2.CREATEUSERNAME = entity.EDITUSERNAME; entity2.EDITUSERID = AppUser.UserID; entity2.EDITUSERNAME = AppUser.UserName; entity2.EDITCOMPANYID = AppUser.CompanyID; entity2.EDITDEPARTMENTID = AppUser.DepartmentID; entity2.EDITPOSTID = AppUser.PostID; entity2.CREATEDATE = DateTime.Now; entity2.EDITDATE = DateTime.Now; if (AgentUser != null) //如果启用了代理,把代理人信息写入 { entity2.AGENTUSERID = AgentUser.UserID; entity2.AGENTERNAME = AgentUser.UserName; entity2.AGENTEDITDATE = DateTime.Now; } tmpDataResult.AppState = entity2.STATECODE; fUser.NextEditUserID = entity2.EDITUSERID; fUser.NextEditUserName = entity2.EDITUSERNAME; AddFlowDetailRecord( entity2, NextStateCode, AppUser.UserID); tmpDataResult.FlowResult = FlowResult.SUCCESS; tmpDataResult.CheckState = "1"; #endregion #region 更新审核主表的审核人(提莫科技新增) entity.FLOW_FLOWRECORDMASTER_T.CHECKSTATE = "1"; if (entity.EDITDATE == entity.AGENTEDITDATE) { entity.FLOW_FLOWRECORDMASTER_T.EDITUSERID = entity.AGENTUSERID; entity.FLOW_FLOWRECORDMASTER_T.EDITUSERNAME = entity.AGENTERNAME; } else //正常审核时 { entity.FLOW_FLOWRECORDMASTER_T.EDITUSERID = entity.EDITUSERID; entity.FLOW_FLOWRECORDMASTER_T.EDITUSERNAME = entity.EDITUSERNAME; } entity.FLOW_FLOWRECORDMASTER_T.EDITDATE = DateTime.Now; FLOW_FLOWRECORDMASTER_TDAL.Update(entity.FLOW_FLOWRECORDMASTER_T); #endregion } tmpDataResult.IsCountersignComplete = true; return tmpDataResult; //如有下一节点,返回SUCCESS #endregion } } catch (Exception ex) { Tracer.Debug("DoFlowRecord2异常信息 :" + ex.ToString()); throw new Exception("DoFlowRecord2:" + ex.InnerException + ex.Message); } }
/// <summary> /// 启动与工作流程相同类型流程,查询对应节点用户 /// </summary> /// <param name="CompanyID">公司ID</param> /// <param name="ModelCode">模块代码</param> /// <param name="FlowGUID">待审批流GUID,新增时为空或者为StartFlow</param> /// <returns></returns> public DataResult GetAppUser( string CompanyID, string ModelCode, string FlowGUID, string xml) { Tracer.Debug("GetAppUser 启动与工作流程相同类型流程,查询对应节点用户 ModelCode=" + ModelCode + " FlowGUID=" + FlowGUID + " CompanyID=" + CompanyID); FlowUser user = SUser; DataResult GetAppUserResult = new DataResult(); try { string StateName = null; if (FlowGUID == "" || FlowGUID == "StartFlow") { StateName = "StartFlow"; } else { //根据待审批流程GUID,检索待审批状态节点代码 List<SMT.Workflow.Common.Model.FLOW_FLOWRECORDDETAIL_T> FlowRecord = FlowBLL.GetFlowInfo( "", FlowGUID, "", "", "", "", "", null); if (FlowRecord == null) { GetAppUserResult.Err = "没有待处理的审核"; GetAppUserResult.UserInfo = null; return GetAppUserResult; } StateName = FlowRecord[0].STATECODE; } //根据公司ID,模块代码获取配置的流程 WorkflowInstance instance = null; Tracer.Debug("根据公司ID,模块代码获取配置的流程FlowBLL.GetFlowByModelName:OgrType='0'"); List<SMT.Workflow.Common.Model.FLOW_MODELFLOWRELATION_T> MODELFLOWRELATION = FlowBLL.GetFlowByModelName( CompanyID, "", ModelCode, "0", ref user); if (MODELFLOWRELATION == null || MODELFLOWRELATION.Count == 0) { GetAppUserResult.Err = "没有可使用的流程"; GetAppUserResult.UserInfo = null; return GetAppUserResult; } SMT.Workflow.Common.Model.FLOW_FLOWDEFINE_T Xoml = MODELFLOWRELATION[0].FLOW_FLOWDEFINE_T; XmlReader readerxoml, readerule; StringReader strXoml = new StringReader(Xoml.LAYOUT); StringReader strRules = new StringReader(Xoml.RULES == null ? "" : Xoml.RULES); readerxoml = XmlReader.Create(strXoml); readerule = XmlReader.Create(strRules); WorkflowRuntime workflowRuntime = new WorkflowRuntime(); workflowRuntime.StartRuntime(); FlowEvent ExternalEvent = new FlowEvent(); //ExternalDataExchangeService objService = new ExternalDataExchangeService(); //workflowRuntime.AddService(objService); //objService.AddService(ExternalEvent); //TypeProvider typeProvider = new TypeProvider(null); //workflowRuntime.AddService(typeProvider); ////XmlReader readerxoml = XmlReader.Create(HttpContext.Current.Server.MapPath ("TestFlow.xml")); //// instance = workflowRuntime.CreateWorkflow(readerxoml); //if (Xoml.RULES == null) // instance = workflowRuntime.CreateWorkflow(readerxoml); //else // instance = workflowRuntime.CreateWorkflow(readerxoml, readerule, null); //// instance = workflowRuntime.CreateWorkflow(typeof(TestFlow)); //instance.Start(); //StateMachineWorkflowInstance workflowinstance = new StateMachineWorkflowInstance(workflowRuntime, instance.InstanceId); ////从实例中获取定义 //if (1 == 2) //{ // System.Workflow.Activities.StateMachineWorkflowActivity smworkflow = new StateMachineWorkflowActivity(); // smworkflow = workflowinstance.StateMachineWorkflow; // RuleDefinitions ruleDefinitions = smworkflow.GetValue(RuleDefinitions.RuleDefinitionsProperty) as RuleDefinitions; // WorkflowMarkupSerializer markupSerializer = new WorkflowMarkupSerializer(); // StringBuilder xoml = new StringBuilder(); // StringBuilder rule = new StringBuilder(); // XmlWriter xmlWriter = XmlWriter.Create(xoml); // XmlWriter ruleWriter = XmlWriter.Create(rule); // markupSerializer.Serialize(xmlWriter, smworkflow); // markupSerializer.Serialize(ruleWriter, ruleDefinitions); // xmlWriter.Close(); // ruleWriter.Close(); // StringReader readxoml = new StringReader(xoml.ToString()); // StringReader readrule = new StringReader(rule.ToString()); // XmlReader readerxoml2 = XmlReader.Create(readxoml); // XmlReader readerrule2 = XmlReader.Create(readrule); // WorkflowInstance instance1 = workflowRuntime.CreateWorkflow(readerxoml2, readerrule2, null); // instance1.Start(); // StateMachineWorkflowInstance workflowinstance1 = new StateMachineWorkflowInstance(workflowRuntime, instance1.InstanceId); // workflowinstance1.SetState(StateName); //} //从实例中获取定义并启动新实例 //跳转到节点StateName //workflowinstance.SetState(StateName); FlowDataType.FlowData FlowData = new FlowDataType.FlowData(); FlowData.xml = xml; // FlowData.Flow_FlowRecord_T = null; //ExternalEvent.OnDoFlow(instance.InstanceId, FlowData);//激发流程引擎流转到下一状态 System.Threading.Thread.Sleep(1000); //PermissionServiceClient WcfPermissionService = new PermissionServiceClient(); string CurrentStateName = ""; //workflowinstance.CurrentStateName == null ? "End" : //workflowinstance.CurrentStateName; //取得当前状态 List<UserInfo> listUser = new List<UserInfo>(); if (CurrentStateName != "End") { if (CurrentStateName.Substring(0, 5) == "State") { CurrentStateName = CurrentStateName.Substring(5); } string roleID = new Guid(CurrentStateName).ToString("D"); List<T_SYS_USER> User = new List<T_SYS_USER>(); //WcfPermissionService.GetSysUserByRole(WFCurrentStateName); //检索本状态(角色)对应用户 using (SysUserRoleBLL bll = new SysUserRoleBLL()) { IQueryable<T_SYS_USER> IQList = bll.GetSysUserByRole(roleID); User = IQList == null ? null : IQList.ToList(); } if (User != null) for (int i = 0; i < User.Count(); i++) { UserInfo tmp = new UserInfo(); tmp.UserID = User[i].EMPLOYEEID; tmp.UserName = User[i].EMPLOYEENAME; listUser.Add(tmp); } } else { //已经到流程结束状态 UserInfo tmp = new UserInfo(); tmp.UserID = "End"; tmp.UserName = "******"; listUser.Add(tmp); } GetAppUserResult.UserInfo = listUser.Count > 0 ? listUser : null; if (GetAppUserResult.UserInfo == null) GetAppUserResult.Err = "没有找到用户"; return GetAppUserResult; // return listUser; //return workflowinstance.CurrentStateName == null ? "End" : workflowinstance.CurrentStateName; } catch (Exception ex) { GetAppUserResult.Err = ex.Message; GetAppUserResult.UserInfo = null; return GetAppUserResult; } }
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; }
public ActionResult ToExcel() { string CompanyID = this.CompanyID; int PageIndex = 1; int PageSize = Int32.MaxValue; string OrderNum = WebUtil.GetFormValue <string>("OrderNum"); int InType = WebUtil.GetFormValue <int>("InType", 0); string SupName = WebUtil.GetFormValue <string>("SupName", string.Empty); string SupNum = WebUtil.GetFormValue <string>("SupNum", string.Empty); int Status = WebUtil.GetFormValue <int>("Status", 0); string ContractOrder = WebUtil.GetFormValue <string>("ContractOrder", string.Empty); ITopClient client = new TopClientDefault(); Dictionary <string, string> dic = new Dictionary <string, string>(); dic.Add("CompanyID", CompanyID); dic.Add("PageIndex", PageIndex.ToString()); dic.Add("PageSize", PageSize.ToString()); dic.Add("OrderNum", OrderNum); dic.Add("InType", InType.ToString()); dic.Add("SupName", SupName); dic.Add("SupNum", SupNum); dic.Add("Status", Status.ToString()); dic.Add("ContractOrder", ContractOrder); string result = client.Execute(InStorageApiName.InStorageApiName_GetDetailList, dic); string returnValue = string.Empty; if (!result.IsEmpty()) { DataListResult <InStorDetailEntity> dataResult = JsonConvert.DeserializeObject <DataListResult <InStorDetailEntity> >(result); List <InStorDetailEntity> listResult = dataResult.Result; if (!listResult.IsNullOrEmpty()) { DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("订单号")); dt.Columns.Add(new DataColumn("产品名称")); dt.Columns.Add(new DataColumn("产品编号")); dt.Columns.Add(new DataColumn("批次")); dt.Columns.Add(new DataColumn("规格")); dt.Columns.Add(new DataColumn("数量")); dt.Columns.Add(new DataColumn("仓库")); dt.Columns.Add(new DataColumn("库位")); dt.Columns.Add(new DataColumn("入库类型")); dt.Columns.Add(new DataColumn("供应商")); dt.Columns.Add(new DataColumn("制单人")); dt.Columns.Add(new DataColumn("制单时间")); dt.Columns.Add(new DataColumn("状态")); dt.Columns.Add(new DataColumn("审核人")); dt.Columns.Add(new DataColumn("审核时间")); foreach (InStorDetailEntity t in listResult) { DataRow row = dt.NewRow(); row[0] = t.OrderNum; row[1] = t.ProductName; row[2] = t.BarCode; row[3] = t.BatchNum; row[4] = t.Size; row[5] = t.Num.ToString("0.00"); row[6] = t.StorageName; row[7] = t.LocalName; row[8] = EnumHelper.GetEnumDesc <EInType>(t.InType); row[9] = t.SupName; row[10] = t.CreateUserName; row[11] = t.CreateTime.To("yyyy-MM-dd"); row[12] = EnumHelper.GetEnumDesc <EAudite>(t.Status); row[13] = t.AuditeUserName; row[14] = t.AuditeTime.To("yyyy-MM-dd"); dt.Rows.Add(row); } string filePath = Server.MapPath("~/UploadFile/"); if (!System.IO.Directory.Exists(filePath)) { System.IO.Directory.CreateDirectory(filePath); } string filename = string.Format("入库管理{0}.xls", DateTime.Now.ToString("yyyyMMddHHmmssfff")); NPOIExcel excel = new NPOIExcel("入库管理", "入库单", System.IO.Path.Combine(filePath, filename)); excel.ToExcel(dt); returnValue = ("/UploadFile/" + filename).Escape(); } } DataResult returnResult = null; if (!returnValue.IsEmpty()) { returnResult = new DataResult() { Code = 1000, Message = returnValue }; } else { returnResult = new DataResult() { Code = 1001, Message = "没有任何数据导出" }; } return(Content(JsonHelper.SerializeObject(returnResult))); }
private void butjj_Click(object sender, EventArgs e) { try { if (dgvyjsq.DataSource == null) { return; } DataTable tb = (DataTable)dgvyjsq.DataSource; DataRow[] rows = tb.Select("SELECTED=true"); if (rows.Length == 0) { MessageBox.Show("请选择申请记录!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } DataTable newtb = tb.Clone(); for (int i = 0; i <= rows.Length - 1; i++) { newtb.ImportRow(rows[i]); } if (MessageBox.Show(this, "您确定要拒绝这 " + rows.Length.ToString() + " 条申请记录吗?", "确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { return; } // frmqr formyjqr = new frmqr(); // if (newtb.Rows.Count == 1) // { //formyjqr.lbName.Text = newtb.Rows[0]["brxm"].ToString(); //formyjqr.lbSex.Text = newtb.Rows[0]["xb"].ToString(); //formyjqr.lbPatientNo.Text = newtb.Rows[0]["INPATIENT_NO"].ToString(); //formyjqr.txtDoctor.Tag = jcys_id.ToString(); //formyjqr.txtDoctor.Text = jcys_name.ToString(); //} //formyjqr.ShowDialog(); //if (formyjqr.bok == false) return; //jcys_id = Convert.ToInt32(Convertor.IsNull(formyjqr.txtDoctor.Tag, "0")); //jcys_name = formyjqr.txtDoctor.Text; string sDate = DateManager.ServerDateTimeByDBType(InstanceForm.BDatabase).ToString(); //登记时间 int jcys = 0; // Convert.ToInt32(Convertor.IsNull(formyjqr.txtDoctor.Tag, "0")); string jcrq = ""; // formyjqr.dtp.Value.ToShortDateString(); string jgwz = ""; int err_code = -1; string err_text = ""; System.Collections.Generic.List <NoticeBindingModel> datalist = new System.Collections.Generic.List <NoticeBindingModel>(); try { InstanceForm.BDatabase.BeginTransaction(); for (int i = 0; i <= newtb.Rows.Count - 1; i++) { Guid orderid = new Guid(newtb.Rows[i]["yzid"].ToString()); Guid orderexec_id = new Guid(newtb.Rows[i]["yzzxid"].ToString()); Guid yjsqid = new Guid(newtb.Rows[i]["yjsqid"].ToString()); decimal je = Convert.ToDecimal(newtb.Rows[i]["je"].ToString()); int btfbz = Convert.ToInt16(newtb.Rows[i]["btfbz"].ToString()); int bscqrbz = btfbz == 1 ? 0 : 1; Guid newqrid = Guid.Empty; yjqr.yj_zysq_qrjl(orderid, orderexec_id, yjsqid, je, InstanceForm.BCurrentDept.DeptId, sDate, InstanceForm.BCurrentUser.EmployeeId, bscqrbz, jcrq, jcys, jgwz, out newqrid, out err_code, out err_text, 1, InstanceForm.BDatabase); if (err_code != 0 || newqrid == Guid.Empty) { throw new Exception(err_text); } TrasenHIS.Notice.NoticeBindingModel model = new TrasenHIS.Notice.NoticeBindingModel(); model.Title = "医技拒绝确认通知"; model.Content = "【" + FrmMdiMain.CurrentDept.DeptName + "】操作员【" + FrmMdiMain.CurrentUser.Name + "】拒绝了【" + newtb.Rows[i]["SQKS"].ToString() + "】【住院号" + newtb.Rows[i]["inpatient_no"].ToString() + "】【" + newtb.Rows[i]["bedno"].ToString() + "床】【" + newtb.Rows[i]["brxm"].ToString() + "】的医技申请:" + newtb.Rows[i]["SQNR"].ToString(); //model.ReceiverType = ReceiveType.WorkCode; model.ReceiverType = ReceiveType.WorkCode; model.Receiver = newtb.Rows[i]["sqid"].ToString(); //model.Receiver = "5161"; datalist.Add(model); } InstanceForm.BDatabase.CommitTransaction(); } catch (System.Exception err) { InstanceForm.BDatabase.RollbackTransaction(); throw new Exception(err.Message); } SystemCfg sc = new SystemCfg(10024); if (sc != null && sc.Config == "0") { //调用i呼接口 Modify By Tany 2015-06-30 if (datalist.Count > 0) { TrasenHIS.Notice.Notice im = new Notice(); foreach (NoticeBindingModel model in datalist) { DataResult dr = im.SendIM(model); } } } BDelRow = true; for (int i = 0; i <= rows.Length - 1; i++) { DataRow row = rows[i]; tb.Rows.Remove(row); } BDelRow = false; } catch (Exception ee) { BDelRow = false; MessageBox.Show(ee.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public IDataResult <IRowItem> RowParser (ExcelWorksheet excelWorksheet, int row, ExcelConfiguration excelConfiguration) { IDataResult <IRowItem> dataResult = new DataResult <IRowItem>() { Success = false }; IRowItem rowItem = new RowItem(); IRowItemError error = new RowItemError(); List <IColumnItem> columnItems = new List <IColumnItem>(); List <IDataResult <IColumnItem> > errorColumnItems = new List <IDataResult <IColumnItem> >(); int start = excelWorksheet.Dimension.Start.Column; int end = excelWorksheet.Dimension.Columns; for (int j = start; j < end; j++) { IExcelWorksheetEntity tmpEntity = new ExcelWorksheetEntity(); tmpEntity.CellNo = j; tmpEntity.RowNo = row; // IExcelWorksheetEntity titleEntity = new ExcelWorksheetEntity(); titleEntity.RowNo = excelConfiguration.DataRowIndex.Title; titleEntity.CellNo = j; titleEntity.ExcelWorksheet = excelWorksheet; IDataResult <string> nametitleResilt = _readExcelData.GetValue(titleEntity); if (!nametitleResilt.Success) { break; } tmpEntity.ExcelWorksheet = excelWorksheet; IDataResult <IColumnItem> getDataResult = ColumnParser(tmpEntity, excelConfiguration); dataResult.Message += getDataResult.Message; if (getDataResult.Success) { if (!string.IsNullOrEmpty(getDataResult.Message)) { getDataResult.Success = false; errorColumnItems.Add(getDataResult); } else { columnItems.Add(getDataResult.Data); } } else { errorColumnItems.Add(getDataResult); } } error.ListColums = errorColumnItems; error.ColumnItems = columnItems; if (errorColumnItems.Any()) { dataResult.Data = error; dataResult.Success = false; return(dataResult); } rowItem.ColumnItems = columnItems; dataResult.Data = rowItem; dataResult.Success = true; return(dataResult); }
private void IdentifyThread() { while (!reset) { Fid fid = null; if (!CaptureFinger(ref fid)) { //break; } if (objReader == null) { objReader = objDeviceReader.IndexDevice(); objDeviceReader.InitializeDevice(ref objReader); } if (fid == null) { continue; } DataResult <Fmd> resultConversion = FeatureExtraction.CreateFmdFromFid(fid, Constants.Formats.Fmd.ANSI); if (resultConversion.ResultCode != Constants.ResultCode.DP_SUCCESS) { //break; if (objReader != null) { objReader.Dispose(); objReader = null; } return; } int thresholdScore = DPFJ_PROBABILITY_ONE * 1 / 100000; Fmd aux = resultConversion.Data; Fmd temp; foreach (Clases.Persona item in listPersons) { temp = Fmd.DeserializeXml(item.huella); CompareResult identifyResult = Comparison.Compare(aux, 0, temp, 0); if (identifyResult.ResultCode != Constants.ResultCode.DP_SUCCESS) { break; } if (identifyResult.Score < thresholdScore) { SendMessage("Identificado"); MessageBox.Show("Identificado"); Thread.Sleep(3000); SendMessage("Buscando..."); break; } } } if (objReader != null) { objReader.Dispose(); } }