/// <summary> /// 添加时,如果对应的WorkflowInstanceID+OperateTime已经存在则跳过 /// </summary> /// <param name="al"></param> /// <returns></returns> public int AddApproveLog(ApproveLog al) { var isExists = _alRepository.GetAllList().Where(w => w.WorkflowInstanceID == al.WorkflowInstanceID && w.OperateTime == al.OperateTime).ToList(); if (isExists.Count == 0) { if (al.OperateType == "提交" || al.OperateType == "审批通过" || al.OperateType == "驳回" || al.OperateType == "转办") { var submitter = _userRepository.GetAll().Where(u => u.EmployeeCode == al.Creator).FirstOrDefault(); if (al.OperateType != "提交") { //如果不是提交,则需要先根据WorkflowInstanceID找到提交人,同一个WorkflowInstanceID操作日期最小的就是提交人记录的 var submitLog = _alRepository.GetAllList().Where(w => w.WorkflowInstanceID == al.WorkflowInstanceID).OrderBy(alog => alog.OperateTime).FirstOrDefault(); submitter = _userRepository.GetAll().Where(u => u.EmployeeCode == submitLog.Creator).FirstOrDefault(); } var setting = _settingRepository.GetAll().Where(s => s.UserId == submitter.EmployeeCode).FirstOrDefault(); var team = _teamRepository.Get(setting.TeamId); HREmployee approver = null; if (al.OperateType == "提交") { approver = _userRepository.GetAll().Where(u => u.EmployeeCode == al.NextOperator).FirstOrDefault(); EmailSender.SendEmailForSubmitToApprover(team.TeamName, submitter.EmployeeName, approver.EmployeeName, approver.Email, al.Comment, al.OperateTime, al.StartDate, al.EndDate); } else if (al.OperateType == "审批通过") { approver = _userRepository.GetAll().Where(u => u.EmployeeCode == al.CurrentOperator).FirstOrDefault(); EmailSender.SendEmailForApproverCompleteApprove(team.TeamName, submitter.EmployeeName, approver.EmployeeName, submitter.Email, al.Comment, al.OperateTime); } else if (al.OperateType == "驳回") { approver = _userRepository.GetAll().Where(u => u.EmployeeCode == al.CurrentOperator).FirstOrDefault(); EmailSender.SendEmailForRollbackToSubmitter(team.TeamName, submitter.EmployeeName, approver.EmployeeName, submitter.Email, al.Comment, al.OperateTime); } else if (al.OperateType == "转办") { approver = _userRepository.GetAll().Where(u => u.EmployeeCode == al.NextOperator).FirstOrDefault(); EmailSender.SendEmailForApproverTransferToOther(team.TeamName, submitter.EmployeeName, approver.EmployeeName, approver.Email, al.Comment, al.OperateTime); } } return(_alRepository.InsertAndGetId(al)); } else { return(isExists[0].Id); } }
public ApproveLog UpdateApproveLog(ApproveLog al) { return(_alRepository.Update(al)); }