/// <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); }
/// <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)); }
// [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); }