///<summary> ///修改: ///</summary> /// <param name="model">要修改的model</param> /// <returns>受影响的行数</returns> public Result <int> UpdateQuestion(Epm_Question model) { Result <int> result = new Result <int>(); try { throw new Exception("该功能不实现!"); } catch (Exception ex) { result.Data = -1; result.Flag = EResultFlag.Failure; result.Exception = new ExceptionEx(ex, "UpdateQuestion"); } return(result); }
public static QuestionModel QuestionToView(Epm_Question model) { QuestionModel view = new QuestionModel(); if (model != null) { view.id = model.Id; view.name = model.Title; view.submitUserId = model.SubmitUserId; view.submitTime = model.SubmitTime; view.type = model.BusinessTypeNo ?? ""; view.businessChild = ""; view.state = model.State ?? 0; view.createUserId = model.SubmitUserId ?? 0; view.submitUserName = model.SubmitUserName ?? ""; view.workContent = model.Description ?? ""; view.businessId = model.BusinessId ?? 0; view.state = model.State ?? 0; } return(view); }
/// <summary> /// 获取热门问题 /// </summary> /// <returns></returns> public Result <QuestionModel> GetHotQuestion() { Result <QuestionModel> result = new Result <QuestionModel>(); try { // 去除未删除且未关闭的问题,在这些问题中找热门问题 var questionIds = context.Epm_Question.Where(p => p.IsDelete == false && p.State == 1).Select(p => p.Id).ToList(); long questionId = 0; int answerCount = 0; if (questionIds.Any()) { var tempQuestion = context.Epm_QuestionTrack .Where(p => p.IsDelete == false && questionIds.Contains(p.QuestionId.Value)) .GroupBy(p => p.QuestionId).Select( p => new { questionId = p.Key, questionCount = p.Count() }).OrderByDescending(p => p.questionCount).FirstOrDefault(); if (tempQuestion != null) { questionId = tempQuestion.questionId ?? 0; answerCount = tempQuestion.questionCount; } } Epm_Question question = null; if (questionId == 0) { question = context.Epm_Question.Where(p => p.IsDelete == false && p.State == 1).OrderByDescending(p => p.SubmitTime).FirstOrDefault(); if (question != null) { answerCount = context.Epm_QuestionTrack.Count(p => p.QuestionId == question.Id); } } else { question = context.Epm_Question.FirstOrDefault(p => p.Id == questionId); } if (question != null) { QuestionModel view = QuestionModel.QuestionToView(question); view.answerCount = answerCount; result.Data = view; result.Flag = EResultFlag.Success; } else { result.Data = null; result.Flag = EResultFlag.Failure; } } catch (Exception ex) { result.Data = null; result.Exception = new ExceptionEx(ex, "GetHotQuestion"); result.Flag = EResultFlag.Failure; } finally { } return(result); }
/// <summary> /// 回复问题 /// </summary> /// <param name="model"></param> /// <returns></returns> public Result <bool> ReplyQuestion(Epm_QuestionTrack model) { Result <bool> result = new Result <bool>(); try { Epm_Question question = DataOperateBusiness <Epm_Question> .Get().GetModel(model.QuestionId ?? 0); if (question == null) { throw new Exception("问题不存在或已被删除!"); } if (model.State == 2) { throw new Exception("该问题已关闭,无法在进行回复操作!"); } model = SetCurrentUser(model); DataOperateBusiness <Epm_QuestionTrack> .Get().Add(model); result.Data = true; result.Flag = EResultFlag.Success; WriteLog(BusinessType.Question.GetText(), SystemRight.Add.GetText(), "回复问题: " + model.Id); #region 处理待办 var tempApp = DataOperateBusiness <Epm_Approver> .Get().GetList(t => t.BusinessId == question.Id && t.IsApprover == false).FirstOrDefault(); if (tempApp != null) { ComplateApprover(tempApp.Id); #region 生成待办 List <Epm_Approver> list = new List <Epm_Approver>(); Epm_Approver app = new Epm_Approver(); app.ApproverId = CurrentUserID.ToLongReq(); app.ApproverName = CurrentUserName; app.Title = question.CreateUserName + "发起的问题沟通,已有回复"; app.Content = question.CreateUserName + "发起的问题沟通,已有回复"; app.SendUserId = CurrentUserID.ToLongReq(); app.SendUserName = CurrentUserName; app.SendTime = DateTime.Now; app.LinkURL = string.Empty; app.BusinessTypeNo = BusinessType.Question.ToString(); app.Action = SystemRight.Reply.ToString(); app.BusinessTypeName = BusinessType.Question.GetText(); app.BusinessState = (int)(EnumState.Normal); app.BusinessId = question.Id; app.ProjectId = question.ProjectId; app.ProjectName = question.ProjectName; list.Add(app); AddApproverBatch(list); WriteLog(BusinessType.Question.GetText(), SystemRight.Add.GetText(), "提交问题生成待办: " + question.Id); #endregion } #endregion #region 消息 var waitSend = GetWaitSendMessageList(question.ProjectId.Value); foreach (var send in waitSend) { Epm_Massage modelMsg = new Epm_Massage(); modelMsg.ReadTime = null; modelMsg.RecId = send.Key; modelMsg.RecName = send.Value; modelMsg.RecTime = DateTime.Now; modelMsg.SendId = CurrentUserID.ToLongReq(); modelMsg.SendName = CurrentUserName; modelMsg.SendTime = DateTime.Now; modelMsg.Title = question.CreateUserName + "发起了问题沟通," + CurrentUserName + "有回复"; modelMsg.Content = question.CreateUserName + "发起了问题沟通," + CurrentUserName + "有回复"; modelMsg.Type = 2; modelMsg.IsRead = false; modelMsg.BussinessId = model.Id; modelMsg.BussinesType = BusinessType.Question.ToString(); modelMsg.ProjectId = question.ProjectId.Value; modelMsg.ProjectName = question.ProjectName; modelMsg = base.SetCurrentUser(modelMsg); modelMsg = base.SetCreateUser(modelMsg); DataOperateBusiness <Epm_Massage> .Get().Add(modelMsg); } #endregion } catch (Exception ex) { result.Flag = EResultFlag.Failure; result.Data = false; result.Exception = new ExceptionEx(ex, "QuestionClose"); } return(result); }
///<summary> ///添加: ///</summary> /// <param name="model">要添加的model</param> /// <returns>受影响的行数</returns> public Result <int> AddQuestion(QuestionView model) { Result <int> result = new Result <int>(); try { List <int> statelist = new List <int>() { (int)ApprovalState.WaitAppr, (int)ApprovalState.ApprSuccess }; try { var completion = DataOperateBusiness <Epm_CompletionAcceptance> .Get().GetList(t => t.ProjectId == model.ProjectId && statelist.Contains(t.State.Value)).FirstOrDefault(); if (completion != null) { throw new Exception("沟通项目已发起完工验收,不可操作!"); } if (model == null) { throw new Exception("请填写问题相关内容!"); } if (model.ProjectId <= 0) { throw new Exception("请选择问题项目名称!"); } } catch (Exception ex) { WriteLog(BusinessType.Question.GetText(), SystemRight.Add.GetText(), "字符串截取位置1: " + model.ProjectId); } model.BusinessTypeNo = GetString(model.BusinessTypeNo); var BusinessTypeName = ((BusinessType)Enum.Parse(typeof(BusinessType), model.BusinessTypeNo)).GetText(); Epm_Question question = new Epm_Question() { ProjectId = model.ProjectId, ProjectName = model.ProjectName, Title = model.Title, Description = model.Description, Proposal = model.Proposal, IsAccident = model.IsAccident, BusinessTypeNo = model.BusinessTypeNo, BusinessTypeName = BusinessTypeName, BusinessId = model.BusinessId, SubmitUserId = CurrentUserID.ToLongReq(), SubmitUserName = CurrentUserName, SubmitCompanyId = CurrentCompanyID.ToLongReq(), SubmitCompanyName = CurrentCompanyName, SubmitTime = DateTime.Now, RecCompanyId = model.RecCompanyId, RecCompanyName = model.RecCompanyName, RecUserId = model.RecUserId, RecUserName = model.RecUserName, State = 1, CrtCompanyId = CurrentCompanyID.ToLongReq(), CrtCompanyName = CurrentCompanyName, CreateTime = DateTime.Now, IsDelete = false, ProblemTypeName = model.ProblemTypeName, ProblemTypeNo = model.ProblemTypeNo }; question = SetCurrentUser(question); if (question == null) { throw new Exception("问题沟通!"); } #region 问题关联模型 if (model.QuestionBims != null && model.QuestionBims.Any()) { model.QuestionBims.ForEach(p => { p.Sort = p.Sort ?? 0; p.State = p.State ?? 0; p.CrtCompanyId = question.CrtCompanyId; p.CrtCompanyName = question.CrtCompanyName; p.CreateTime = DateTime.Now; p.CreateUserId = question.CreateUserId; p.CreateUserName = question.CreateUserName; p.OperateUserId = question.OperateUserId; p.OperateUserName = question.OperateUserName; p.OperateTime = DateTime.Now; p.IsDelete = false; }); } #endregion #region 问题协助人员 if (model.QuestionUsers != null && model.QuestionUsers.Any()) { model.QuestionUsers.ForEach(p => { p.State = p.State ?? 0; p.CrtCompanyId = question.CrtCompanyId; p.CrtCompanyName = question.CrtCompanyName; p.CreateTime = DateTime.Now; p.CreateUserId = question.CreateUserId; p.CreateUserName = question.CreateUserName; p.OperateUserId = question.OperateUserId; p.OperateUserName = question.OperateUserName; p.OperateTime = DateTime.Now; p.IsDelete = false; }); } #endregion try { int rows = DataOperateBusiness <Epm_Question> .Get().Add(question); if (model.QuestionBims != null && model.QuestionBims.Any()) { try { model.QuestionBims.ForEach(p => { p.QuestionId = question.Id; p.BIMId = p.ComponentId.Split('_')[0].ToLongReq(); }); DataOperateBusiness <Epm_QuestionBIM> .Get().AddRange(model.QuestionBims); } catch (Exception ex) { WriteLog(BusinessType.Question.GetText(), SystemRight.Add.GetText(), "字符串截取位置2: " + model.QuestionBims[0].ComponentId.Split('_')[0].ToLongReq()); } } if (model.QuestionUsers != null && model.QuestionUsers.Any()) { model.QuestionUsers.ForEach(p => p.QuestionId = question.Id); DataOperateBusiness <Epm_QuestionUser> .Get().AddRange(model.QuestionUsers); } //transaction.Commit(); if (model.Attachs.Any()) { AddFilesByTable(question, model.Attachs); } result.Data = rows; result.Flag = EResultFlag.Success; WriteLog(BusinessType.Question.GetText(), SystemRight.Add.GetText(), "新增: " + model.Id); // TODO:需要处理替换消息模板以及消息类型 #region 生成待办 List <Epm_Approver> list = new List <Epm_Approver>(); Epm_Approver app = new Epm_Approver(); try { var recCompany = DataOperateBusiness <Epm_ProjectCompany> .Get().GetList(t => t.ProjectId == model.ProjectId && t.CompanyId == question.RecCompanyId).FirstOrDefault(); var project = DataOperateBusiness <Epm_Project> .Get().GetModel(model.ProjectId.Value); if (recCompany == null) { if (project != null) { app.ApproverId = project.ContactUserId; app.ApproverName = project.ContactUserName; } } else { if (recCompany != null && recCompany.LinkManId.HasValue) { app.ApproverId = recCompany.LinkManId; app.ApproverName = recCompany.LinkMan; } } } catch (Exception ex) { WriteLog(BusinessType.Question.GetText(), SystemRight.Add.GetText(), "字符串截取位置3: " + model.ProjectId); } app.Title = CurrentUserName + "对" + app.ApproverName + "发起了问题沟通"; app.Content = CurrentUserName + "对" + app.ApproverName + "发起了问题沟通"; app.SendUserId = CurrentUserID.ToLongReq(); app.SendUserName = CurrentUserName; app.SendTime = DateTime.Now; app.LinkURL = string.Empty; app.BusinessTypeNo = BusinessType.Question.ToString(); app.Action = SystemRight.Add.ToString(); app.BusinessTypeName = BusinessType.Question.GetText(); app.BusinessState = (int)(EnumState.Normal); app.BusinessId = question.Id; app.ProjectId = question.ProjectId; app.ProjectName = question.ProjectName; list.Add(app); AddApproverBatch(list); WriteLog(BusinessType.Question.GetText(), SystemRight.Add.GetText(), "提交问题生成待办: " + question.Id); #endregion #region 消息 var waitSend = GetWaitSendMessageList(model.ProjectId.Value); foreach (var send in waitSend) { Epm_Massage modelMsg = new Epm_Massage(); modelMsg.ReadTime = null; modelMsg.RecId = send.Key; modelMsg.RecName = send.Value; modelMsg.RecTime = DateTime.Now; modelMsg.SendId = CurrentUserID.ToLongReq(); modelMsg.SendName = CurrentUserName; modelMsg.SendTime = DateTime.Now; modelMsg.Title = CurrentUserName + "对" + app.ApproverName + "发起了问题沟通"; modelMsg.Content = CurrentUserName + "对" + app.ApproverName + "发起了问题沟通"; modelMsg.Type = 2; modelMsg.IsRead = false; modelMsg.BussinessId = question.Id; modelMsg.BussinesType = BusinessType.Question.ToString(); modelMsg.ProjectId = model.ProjectId.Value; modelMsg.ProjectName = model.ProjectName; modelMsg = base.SetCurrentUser(modelMsg); modelMsg = base.SetCreateUser(modelMsg); DataOperateBusiness <Epm_Massage> .Get().Add(modelMsg); } #endregion } catch (Exception e) { throw new Exception(e.Message); } } catch (Exception ex) { result.Data = -1; result.Flag = EResultFlag.Failure; result.Exception = new ExceptionEx(ex, "AddQuestion"); } return(result); }