/// <summary> /// 根据当前节点的公司/部门/岗位查询对应的人员集合(无序) /// </summary> /// <param name="model"></param> /// <returns></returns> public static async Task <List <EmployeeDptJobBinding> > GetEmployeeDptJobByUserIdAsync(EmployeeDptJobDto model) { try { HttpClient client = new HttpClient(); Dictionary <string, string> keyValues = new Dictionary <string, string>(); keyValues["CompanyId"] = model.CompanyId.ToString(); keyValues["DptId"] = model.DptId.ToString(); keyValues["JobId"] = model.JobId.ToString(); keyValues["LoadChildDptEmployee"] = model.LoadChildDptEmployee + ""; keyValues["OnlySelf"] = model.OnlySelf + ""; FormUrlEncodedContent content = new FormUrlEncodedContent(keyValues); var respMsg = await client.PostAsync($"{Gateway}api/v1/uc/employee/GetEmployees", content); // 不要错误的调用 了 PutAsync,应该是 PostAsync Task <string> msgBody = respMsg.Content.ReadAsStringAsync(); var employeeDptJobList = JsonConvert.DeserializeObject <List <EmployeeDptJobBinding> >(msgBody.Result); return(employeeDptJobList); } catch { } return(null); }
/// <summary> /// 发起审批 /// </summary> /// <param name="SubjectId"></param> /// <returns></returns> public Result CreateWork(WorkflowMain model) { string msg = string.Empty; bool status = false; try { if (model.SubjectId <= 0) { return new Result() { Succeed = status, Message = "流程参数丢失" } } ; var SubjectObj = (from a in _subjectRepository.Entites join b in _repositoryTypeSubject.Entites on a.SubjectTypeId equals b.Id select new { b.SubjectTypeName, a.SubjectName } ).FirstOrDefault(); model.BusinessCode = PingYinHelper.GetFirstSpell(SubjectObj.SubjectTypeName) + "_" + DateTime.Now.ToString("yyMMddHHmmssff") + "_" + new Random().Next(1000, 9999); model.SubjectName = SubjectObj.SubjectName; //获取流程节点 var stepList = _subjectStepBusiness.GetDataListBySubjectId(model.SubjectId); List <WorkflowApprovalStep> stepEmpList = Mapper.Map <List <WorkflowApprovalStep> >(stepList).OrderBy(s => s.PassNo).ToList(); //通过流程节点id查询节点对应人 int i = 0; foreach (var item in stepEmpList) { i++; var objStep = _subjectRuleRepository.Entites.Where(s => s.SubjectStepId == item.Id).FirstOrDefault(); List <WorkflowApprovalRecords> list = new List <WorkflowApprovalRecords>(); if (item.PassType != PassType.Summary) { EmployeeDptJobDto modelEmployeeDptJobDto = new EmployeeDptJobDto { CompanyId = objStep.CompanyId, DptId = objStep.DepId, JobId = objStep.JobId, LoadChildDptEmployee = false, OnlySelf = false }; //当前节点对应的人员集合(无序) var userList = ApiBusinessHelper.GetEmployeeDptJobByUserIdAsync(modelEmployeeDptJobDto).Result; foreach (var itemChild in userList) { var approvalRecord = new WorkflowApprovalRecords { AuditidUserId = itemChild.userId, AuditidUserName = itemChild.EmployeeName, DataType = 1, AudioStatus = AudioStatus.UnApprovalInfo }; if (i == 1 && item.PassType == PassType.Audit) { approvalRecord.AudioStatus = AudioStatus.WaitAgree; } else if (i == 1 && item.PassType == PassType.Copy) { approvalRecord.AudioStatus = AudioStatus.Agree;//抄送人员默认是审核成功(不卡流程) } else if (i > 1 && i < stepEmpList.Count && item.PassType == PassType.Copy) { approvalRecord.AudioStatus = AudioStatus.Agree;//抄送人员默认是审核成功(不卡流程) } approvalRecord.ReadStatus = 1; list.Add(approvalRecord); } } else { //复盘节点 var approvalRecordFP = new WorkflowApprovalRecords { DataType = 1, AudioStatus = AudioStatus.UnApprovalInfo }; if (objStep.UserId > 0) {//创建人 approvalRecordFP.AuditidUserId = model.CreateUserId; approvalRecordFP.AuditidUserName = model.CreateUserName; list.Add(approvalRecordFP); } if (objStep.DepId > 0) { //获取部门经理 var empLD = ApiBusinessHelper.GetEmployeeManagerByUserId(model.CreateUserId).Result; approvalRecordFP.AuditidUserId = empLD.userId; approvalRecordFP.AuditidUserName = empLD.employeeName; list.Add(approvalRecordFP); } } item.workflowApprovalRecordList = list; } //stepEmpList.Where(s => s.PassNo == 1).ToList().ForEach(s => s.AuditNo = true); using (System.Transactions.TransactionScope ts = new System.Transactions.TransactionScope()) { stepEmpList.ForEach(s => s.Id = 0); model.WorkflowApprovalStepList = stepEmpList; status = _repository.Add(model) > 0 ? true : false; ts.Complete();//提交事务 } } catch (Exception ex) { msg = ex.Message.ToString(); } return(new Result() { Succeed = status, Message = msg }); }