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;
        }
示例#4
0
    /// <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)));
        }
示例#7
0
 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()
                ));
 }
示例#8
0
        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);
        }
示例#9
0
        /// <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();
        }
示例#10
0
        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));
        }
示例#11
0
        /// <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)));
        }
示例#12
0
        /// <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)));
        }
示例#13
0
 //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);
 }
示例#14
0
        //执行最后的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);
        }
示例#15
0
        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());
        }
示例#16
0
        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();
        }
示例#17
0
        /// <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)));
        }
示例#19
0
        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) => { });

        }
示例#20
0
文件: DataApi.cs 项目: Kuick/Kuicker
        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;
            }
        }
示例#21
0
文件: DataApi.cs 项目: Kuick/Kuicker
        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();
                }
            }
        }
示例#22
0
        /// <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);
            }
        }
示例#23
0
        /// <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);
            }
        }
示例#24
0
        /// <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;
            }
        }
示例#25
0
        /// <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;
            }
        }
示例#26
0
        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);
        }
示例#27
0
        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) => { });


        }
示例#28
0
        /// <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);

            }
        }
示例#29
0
        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";

            }
        }
示例#31
0
        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;
                });
            }
        }
示例#34
0
        /// <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);

            }
        }
示例#35
0
        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());
        }
示例#36
0
        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
            }

        }
示例#37
0
        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);
            }
        }
示例#38
0
文件: Service.cs 项目: JuRogn/OA
        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;
        }
示例#39
0
        //执行最后的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);
        }
示例#40
0
文件: Service.cs 项目: JuRogn/OA
        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;
        }
示例#41
0
 /// <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)
 {
 }
示例#42
0
        /// <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
        }
示例#43
0
        /// <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);

            }
        }
示例#44
0
        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);
        }
示例#45
0
 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;
        }
示例#47
0
        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);
            }

        }
示例#48
0
        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);
        }
示例#49
0
        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)));
        }
示例#50
0
        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));
        }
示例#51
0
        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();
                });
            }
        }
示例#52
0
        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));
        }
示例#53
0
        public ActionResult <DataResult> Crete(string token, [FromForm] AdminEntity adminEntity)
        {
            DataResult dataResult = new DataResult();

            return(dataResult);
        }
示例#54
0
        /// <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;
            }
        }
示例#56
0
        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)));
        }
示例#58
0
文件: Frmyjsq.cs 项目: Wooyme/HIS-1
        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);
            }
        }
示例#59
0
        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);
        }
示例#60
0
        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();
            }
        }