Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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
            });
        }