예제 #1
0
        /// <summary>
        /// 获取审批详细信息
        /// </summary>
        /// <param name="paytask"></param>
        /// <returns></returns>
        public List <ApprovalInfo> GenerateApprovalInfo(List <BsonDocument> taskList)
        {
            DataOperation dataOp = new DataOperation();
            var           list   = new List <ApprovalInfo>();

            if (taskList.Count() == 0)
            {
                return(list);
            }
            foreach (var payTask in taskList)
            {
                ApprovalInfo info = new ApprovalInfo();
                info.BaseInfo   = new BaseInfo();
                info.Extentions = new List <ExtensionInfo>();
                info.Log        = new List <ApprovalLog>();
                var instance = dataOp.FindOneByQuery("BusFlowInstance",
                                                     Query.And(
                                                         Query.EQ("tableName", "XH_DesignManage_Task"),
                                                         Query.EQ("referFieldName", "taskId"),
                                                         Query.EQ("referFieldValue", payTask.Text("taskId"))
                                                         )
                                                     );
                if (instance == null)
                {
                    continue;
                }
                var parentTask = dataOp.FindOneByQuery("XH_DesignManage_Task", Query.EQ("taskId", payTask.Text("nodePid")));

                #region 设置基本属性
                //获取任务名称
                if (string.IsNullOrEmpty(payTask.Text("paymentDisplayName")))
                {
                    info.BaseInfo.Name = payTask.Text("name");
                }
                else
                {
                    info.BaseInfo.Name = payTask.Text("paymentDisplayName");
                }
                if (parentTask != null && parentTask.Int("nodeTypeId") == (int)ConcernNodeType.FeePayment)
                {
                    var childTasks = dataOp.FindAllByQuery("XH_DesignManage_Task", Query.EQ("nodePid", parentTask.Text("taskId"))).OrderBy(p => p.Int("nodeOrder")).ToList();
                    var index      = childTasks.IndexOf(payTask) + 1;
                    info.BaseInfo.Name = string.Format("{0}第{1}笔支付", parentTask.Text("name"), index);
                }
                var appUser = dataOp.FindOneByQuery("SysUser", Query.EQ("userId", instance.Text("approvalUserId")));
                if (appUser != null)
                {
                    info.BaseInfo.AppUser = appUser.Text("name");
                }
                //获取流程发起人公司部门信息
                string       approvalUserId = instance.String("approvalUserId");
                BsonDocument userOrgPost    = dataOp.FindOneByQuery("UserOrgPost", Query.EQ("userId", approvalUserId));
                BsonDocument orgPost        = dataOp.FindOneByQuery("OrgPost", Query.EQ("postId", userOrgPost.String("postId")));
                BsonDocument org            = dataOp.FindOneByQuery("Organization", Query.EQ("orgId", orgPost.String("orgId")));
                info.BaseInfo.Org            = org.Text("name");
                info.BaseInfo.StartTime      = instance.ShortDate("createDate");
                info.BaseInfo.ProjectName    = instance.String("projName");
                info.BaseInfo.ProfType       = instance.Text("profType");
                info.BaseInfo.ProjectScale   = instance.Text("projScale");
                info.BaseInfo.ApprovedAmount = instance.Text("approvedAmount");
                //获取总部经办人
                List <BsonDocument> userRels = dataOp.FindAllByQuery("FlowInstanceUserRel", Query.EQ("instanceId", instance.Text("flowInstanceId"))).ToList();
                List <string>       userIds  = userRels.Select(s => s.String("userId")).ToList();
                List <BsonDocument> users    = dataOp.FindAllByQuery("SysUser", Query.In("userId", TypeConvert.StringListToBsonValueList(userIds))).ToList();
                info.BaseInfo.Transactor = string.Join(",", users.Select(p => p.Text("name")));
                #endregion

                #region 设置扩展属性
                //获取流程的扩展属性
                List <string>       attrIds = dataOp.FindAllByQuery("ExtensionAttrRel", Query.EQ("flowId", instance.Text("flowId"))).Select(s => s.String("attrId")).ToList();
                List <BsonDocument> attrs   = dataOp.FindAllByQuery("ExtensionAttr", Query.In("attrId", TypeConvert.StringListToBsonValueList(attrIds))).ToList();
                foreach (var attr in attrs)
                {
                    ExtensionInfo extInfo = new ExtensionInfo();
                    string        attrId  = attr.String("attrId");//扩展属性Id
                    BsonElement   element = instance.Elements.Where(s => s.Name == attrId).SingleOrDefault();
                    BsonValue     val     = null;
                    if (element != null)
                    {
                        val = element.Value;
                        extInfo.AttrName  = attr.Text("name");
                        extInfo.AttrValue = val.ToString();
                        info.Extentions.Add(extInfo);
                    }
                }
                #endregion

                #region 设置审批记录
                var queryStr       = string.Format("flowInstanceId={0}", instance.Text("flowInstanceId"));
                var logList        = dataOp.FindAllByQueryStr("BusFlowTrace", queryStr).Where(c => c.Int("traceType") == 2 || c.Int("traceType") == 6).ToList();
                var stepUserIdList = new List <int>();
                //判断流程是否已经发起

                var hitAllUser   = string.Empty;
                var hitShortUser = string.Empty;

                foreach (var log in logList)
                {
                    var AllUserString   = new List <string>();
                    var ShortUserString = new List <string>();
                    var action          = log.SourceBson("actId");
                    var form            = log.SourceBson("formId");
                    var content         = form != null?form.Text("content") : string.Empty;

                    var actionTypeName = action != null?action.SourceBsonField("actTypeId", "name") : "系统自动执行";

                    var result = action != null?action.Text("name") : string.Empty;

                    var preStep     = log.SourceBson("preStepId");
                    var preStepName = preStep != null?preStep.SourceBsonField("flowPosId", "name") : string.Empty;

                    var helper           = new Yinhe.ProcessingCenter.BusinessFlow.FlowInstanceHelper();
                    var curFlowInstance1 = log.SourceBson("flowInstanceId");
                    if (curFlowInstance1 != null && log.Int("flowInstanceId") != 0)
                    {
                        stepUserIdList = helper.GetFlowInstanceAvaiableStepUser(curFlowInstance1.Int("flowId"), log.Int("flowInstanceId"), preStep.Int("stepId"));
                    }
                    var userList = dataOp.FindAllByKeyValList("SysUser", "userId", stepUserIdList.Select(c => c.ToString()).ToList());
                    var userStr  = string.Join(",", userList.Select(c => c.Text("name")).ToArray());
                    ShortUserString.Add(StringExtension.CutStr(userStr, 8, "..."));
                    AllUserString.Add(userStr);
                    hitShortUser = string.Join(@"<br>", ShortUserString.ToArray());
                    hitAllUser   = string.Join(@"<br>", AllUserString.ToArray());
                    switch (log.Int("traceType"))
                    {
                    case -1: actionTypeName = "重启流程"; result = "重启流程"; break;

                    case 0: result = "启动流程"; break;

                    case 1: result = "系统自动执行"; break;

                    case 3: actionTypeName = "执行回滚操作"; result = "回滚"; break;

                    case 5: actionTypeName = "废弃流程"; result = "流程结束"; break;

                    case 6: actionTypeName = "转办"; result = log.Text("result"); break;

                    default: break;
                    }
                    ApprovalLog appLog = new ApprovalLog();
                    appLog.Position = !string.IsNullOrEmpty(preStepName) ? preStepName : string.Empty;
                    appLog.UserName = log.CreateUserName();
                    appLog.Time     = log.ShortDate("createDate");
                    appLog.Content  = string.IsNullOrEmpty(content) ? log.Text("remark") : content;
                    appLog.Action   = actionTypeName;
                    appLog.Result   = result;
                    info.Log.Add(appLog);
                }

                #endregion

                list.Add(info);
            }
            return(list);
        }
예제 #2
0
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="ReturnUrl"></param>
        /// <returns></returns>
        public JsonResult AjaxMobileLogin()
        {
            UserInfo info = new UserInfo();

            if (AllowToLogin() == false)
            {
                info.state   = -1;
                info.Message = "请联系技术支持工程师,电话13600911514";
                return(Json(info));
            }

            string userName = PageReq.GetForm("userName");
            string passWord = PageReq.GetForm("passWord");

            #region 用户验证
            try
            {
                BsonDocument user = dataOp.FindOneByKeyVal("SysUser", "loginName", userName);

                if (userName == "yinhoodebug")
                {
                    if (passWord == DateTime.Now.Day.ToString())
                    {
                        user = dataOp.FindAll("SysUser").Where(t => t.Int("type") == 1).FirstOrDefault();
                        this.SetUserLoginInfo(user, "on");

                        info.state     = 1;
                        info.Message   = "登录成功";
                        info.userId    = user.Int("userId");
                        info.name      = user.Text("name");
                        info.loginName = user.Text("loginName");
                        info.isPush    = user.Int("isPush");
                        return(Json(info));
                    }
                    else
                    {
                        info.state   = -1;
                        info.Message = "密码错误!";
                        return(Json(info));
                    }
                }


                if (user != null)
                {
                    if (user.Int("status") == 2)
                    {
                        info.state   = -1;
                        info.Message = "用户已经被锁定";
                        return(Json(info));
                    }
                    if (user.String("loginPwd") == passWord)
                    {
                        var flowInstanceHelper = new Yinhe.ProcessingCenter.BusinessFlow.FlowInstanceHelper();
                        this.SetUserLoginInfo(user, "on");                                                                                                                      //记录用户成功登录的信息
                        var myBusFlowInstance      = flowInstanceHelper.GetUserAssociatedFlowInstance(user.Int("userId"), 0).Where(t => t.Int("approvalUserId") != 0).ToList(); //涉及我的审批
                        var waitMyApprovalInstance = flowInstanceHelper.GetUserWaitForApprovaleFlow(user.Int("userId")).Where(t => t.Int("approvalUserId") != 0).ToList();      //等待我审批
                        info.state             = 1;
                        info.userId            = user.Int("userId");
                        info.name              = user.Text("name");
                        info.loginName         = user.Text("loginName");
                        info.allApprovalCount  = myBusFlowInstance.Count();
                        info.waitApprovalCount = waitMyApprovalInstance.Count();
                        info.isPush            = user.Int("isPush");
                        info.Message           = "登陆成功";
                    }
                    else
                    {
                        info.state   = -1;
                        info.Message = "密码错误!";
                        return(Json(info));
                    }
                    string deviceToken = PageReq.GetForm("deviceToken");
                    if (!string.IsNullOrEmpty(deviceToken))
                    {
                        BsonDocument doc = new BsonDocument();
                        doc.Add("deviceToken", deviceToken);
                        dataOp.Update("SysUser", Query.EQ("loginName", userName), doc);
                    }
                }
                else
                {
                    info.state   = -1;
                    info.Message = "用户名不存在!";
                }
            }
            catch (Exception ex)
            {
                info.state   = -1;
                info.Message = ex.Message;
            }
            #endregion

            return(Json(info));
        }
예제 #3
0
        // [SoapRpcMethod(Use=SoapBindingUse.Literal,Action= "http://tempuri.org/HelloWorld", RequestNamespace = "http://tempuri.org/", ResponseNamespace = "http://tempuri.org/")]
        public List <Pedding> GetPeddingToDoList(string uid)
        {
            DataOperation  dataOp = new DataOperation();
            List <Pedding> list   = new List <Pedding>();

            BsonDocument user = dataOp.FindOneByKeyVal("SysUser", "loginName", uid);

            if (user != null)
            {
                string userId = user.Text("userId");
                List <BsonDocument> taskMangerList = dataOp.FindAllByKeyVal("XH_DesignManage_TaskManager", "userId", userId).ToList();
                //获取计划负责人列表
                var planManagerList = dataOp.FindAllByKeyVal("XH_DesignManage_PlanManager", "userId", userId).ToList();
                var taskIds         = taskMangerList.Select(c => c.Text("taskId"));
                var planIds         = planManagerList.Select(c => c.Text("planId"));
                //获取想
                var AllAssociatTaskList = dataOp.FindAllByKeyValList("XH_DesignManage_Task", "taskId", taskIds.ToList());
                var AllAssociatPlanList = dataOp.FindAllByKeyValList("XH_DesignManage_Plan", "taskId", planIds.ToList());

                //获取未完成的我涉及的任务列表
                var unCompleteTaskList = AllAssociatTaskList.Where(c => c.Int("status") != (int)TaskStatus.Completed).ToList();

                //获取我涉及的关键任务列表
                var keyTaskList = AllAssociatTaskList.Where(c => c.Int("levelId") == 1).Select(c => c.Text("taskId")).ToList();

                //获取我设计的待阅任务列表
                var allInstance       = dataOp.FindAll("BusFlowInstance").ToList();
                var queryStr          = string.Format("givenUserId={0}&status=0", userId);
                var circulateTaskList = dataOp.FindAllByQueryStr("BusinessFlowCirculation", queryStr);

                var flowInstanceHelper     = new Yinhe.ProcessingCenter.BusinessFlow.FlowInstanceHelper();
                var waitMyApprovalInstance = flowInstanceHelper.GetUserWaitForApprovaleFlow(user.Int("userId"));
                var waitMyLaunchFlow       = flowInstanceHelper.GetUserWaitForStartFlow(user.Int("userId"));
                var myBusFlowInstance      = flowInstanceHelper.GetUserAssociatedFlowInstance(user.Int("userId"));

                List <string> allTaskIdList = new List <string>();
                allTaskIdList.AddRange(waitMyApprovalInstance.Select(t => t.String("referFieldValue")));
                allTaskIdList.AddRange(waitMyLaunchFlow.Select(t => t.String("taskId")));
                allTaskIdList.AddRange(myBusFlowInstance.Select(t => t.String("referFieldValue")));
                var allTask = dataOp.FindAllByKeyValList("XH_DesignManage_Task", "taskId", allTaskIdList.Distinct().ToList()).ToList();

                List <string> allFlowIdList = new List <string>();
                allFlowIdList.AddRange(waitMyApprovalInstance.Select(t => t.String("flowId")));
                allFlowIdList.AddRange(waitMyLaunchFlow.Select(t => t.String("flowId")));
                allFlowIdList.AddRange(myBusFlowInstance.Select(t => t.String("flowId")));
                var allFlow = dataOp.FindAllByKeyValList("BusFlow", "flowId", allFlowIdList.Distinct().ToList()).ToList();

                List <string> allProjIdList = new List <string>();
                allProjIdList.AddRange(allTask.Select(t => t.String("projId")));
                allProjIdList.AddRange(AllAssociatTaskList.Select(t => t.String("projId")));
                allProjIdList.AddRange(AllAssociatPlanList.Select(t => t.String("projId")));
                var allProject = dataOp.FindAllByKeyValList("XH_DesignManage_Project", "projId", allProjIdList.Distinct().ToList()).ToList();

                List <BsonDocument> flowList = new List <BsonDocument>();
                List <int>          fIds     = new List <int>();
                flowList.AddRange(waitMyApprovalInstance);
                flowList.AddRange(waitMyLaunchFlow);



                foreach (var item in unCompleteTaskList)
                {
                    Pedding ped = new Pedding();
                    ped.type = 1;
                    var project = allProject.Where(t => t.Int("projId") == item.Int("projId")).FirstOrDefault();
                    ped.title = string.Format("{0}、{1}、{2}-{3}", project.Text("name"), item.Text("name"), item.ShortDate("curStartData"), item.ShortDate("curEndData"));
                    ped.url   = string.Format("/DesignManage/ProjTaskInfo/{0}", item.Int("taskId"));
                    list.Add(ped);
                    //if (!string.IsNullOrEmpty(item.ShortDate("curStartData")) && (DateTime.Now - item.Date("curStartData")).Days <= 2)
                    //{
                    //    list.Add(ped);
                    //}
                }

                foreach (var item in flowList)
                {
                    var referFieldValue = item.Int("referFieldValue");
                    var taskNode        = allTask.Where(c => c.Int("taskId") == referFieldValue).FirstOrDefault();
                    var flowObj         = allFlow.Where(c => c.Int("flowId") == item.Int("flowId")).FirstOrDefault();
                    if (!fIds.Contains(item.Int("flowId")))
                    {
                        fIds.Add(item.Int("flowId"));
                    }
                    Pedding ped = new Pedding();
                    ped.type = 1;
                    var project = allProject.Where(t => t.Int("projId") == taskNode.Int("projId")).FirstOrDefault();
                    ped.title = string.Format("{0}、{1}、{2}", project.Text("name"), taskNode.Text("name"), item.CreateDate());
                    ped.url   = string.Format("/DesignManage/TaskWorkFlowInfo/{0}", taskNode.Int("taskId"));
                    if (taskNode.Int("taskId") != 0)
                    {
                        list.Add(ped);
                    }
                }

                foreach (var item in myBusFlowInstance)
                {
                    var     referFieldValue = item.Int("referFieldValue");
                    var     taskNode        = allTask.Where(c => c.Int("taskId") == referFieldValue).FirstOrDefault();
                    var     flowObj         = allFlow.Where(c => c.Int("flowId") == item.Int("flowId")).FirstOrDefault();
                    bool    flag            = flowInstanceHelper.CanExecute(item.Text("flowId"), item.Text("flowInstanceId"), user.Int("userId"));
                    Pedding ped             = new Pedding();
                    ped.type = flag == true ? 1: 2;
                    var project = allProject.Where(t => t.Int("projId") == taskNode.Int("projId")).FirstOrDefault();
                    ped.title = string.Format("{0}、{1}、{2}", project.Text("name"), taskNode.Text("name"), item.CreateDate());
                    ped.url   = string.Format("/DesignManage/TaskWorkFlowInfo/{0}", taskNode.Int("taskId"));
                    if (!fIds.Contains(item.Int("flowId")))
                    {
                        if (taskNode.Int("taskId") != 0)
                        {
                            list.Add(ped);
                        }
                    }
                }
                //代阅
                foreach (var circulate in circulateTaskList)
                {
                    var item = allInstance.Where(c => c.Int("flowInstanceId") == circulate.Int("flowInstanceId")).FirstOrDefault();
                    if (item == null)
                    {
                        continue;
                    }
                    var referFieldValue = item.Int("referFieldValue");
                    var taskNode        = allTask.Where(c => c.Int("taskId") == referFieldValue).FirstOrDefault();
                    var flowObj         = allFlow.Where(c => c.Int("flowId") == item.Int("flowId")).FirstOrDefault();
                    //bool flag = flowInstanceHelper.CanExecute(item.Text("flowId"), item.Text("flowInstanceId"), user.Int("userId"));
                    Pedding ped = new Pedding();
                    // ped.type=flag == true ? 1: 2;
                    ped.type = 2;//不能编辑
                    var project = allProject.Where(t => t.Int("projId") == taskNode.Int("projId")).FirstOrDefault();
                    ped.title = string.Format("【代阅任务】{0}、{1}、{2}", project.Text("name"), flowObj.Text("name"), item.CreateDate());
                    ped.url   = string.Format("/DesignManage/TaskWorkFlowInfo/{0}", taskNode.Int("taskId"));
                    if (!fIds.Contains(item.Int("flowId")))
                    {
                        if (taskNode.Int("taskId") != 0)
                        {
                            list.Add(ped);
                        }
                    }
                }
            }
            return(list);
        }