///<summary> ///获取列表: ///</summary> /// <param name="qc">查询条件</param> /// <returns>符合条件的数据集合</returns> public Result<List<Epm_Visa>> GetVisaList(string projectName, string title, int state, string visaTypeName, int pageIndex, int pageSize) { Result<List<Epm_Visa>> result = new Result<List<Epm_Visa>>(); try { var currentUserID = CurrentUserID.ToLongReq(); int statu = (int)ApprovalState.Enabled; var query = from b in context.Epm_Visa.Where(p => p.IsDelete == false) where CurrentProjectIds.Contains(b.ProjectId.ToString()) && (b.ProjectName.Contains(projectName) || string.IsNullOrEmpty(projectName)) && (b.VisaTypeName.Contains(visaTypeName) || string.IsNullOrEmpty(visaTypeName)) && (b.VisaTitle.Contains(title) || string.IsNullOrEmpty(title)) && (b.State == state || state == -1) && ((b.State == statu && b.CreateUserId == currentUserID) || b.State != statu) select b; //query = query.Distinct(); int count = query.Count(); int skip = (pageIndex - 1) * pageSize; int take = pageSize; var list = query.OrderByDescending(p => p.OperateTime).Skip(skip).Take(take).ToList(); result.Data = list; result.AllRowsCount = count; result.Flag = EResultFlag.Success; } catch (Exception ex) { result.Data = null; result.Flag = EResultFlag.Failure; result.Exception = new ExceptionEx(ex, "GetVisaList"); } return result; }
/// <summary> /// 根据项目 ID 获取项目相关变更 /// </summary> /// <param name="projectId">项目 ID</param> /// <returns></returns> public Result <List <Epm_Change> > GetChangeByProjectId(long projectId) { Result <List <Epm_Change> > result = new Result <List <Epm_Change> >(); try { if (CurrentProjectIds.Contains(projectId.ToString())) { var list = DataOperateBusiness <Epm_Change> .Get().GetList(p => p.ProjectId == projectId).ToList(); result.Data = list; result.Flag = EResultFlag.Success; } else { result.Data = new List <Epm_Change>(); result.Flag = EResultFlag.Success; } } catch (Exception ex) { result.Data = null; result.Flag = EResultFlag.Failure; result.Exception = new ExceptionEx(ex, ""); } return(result); }
///<summary> ///获取列表: ///</summary> /// <param name="qc">查询条件</param> /// <returns>符合条件的数据集合</returns> public Result <List <ChangeView> > GetChangeList(string projectName, string name, int state, int pageIndex, int pageSize) { Result <List <ChangeView> > result = new Result <List <ChangeView> >(); try { var currentUserID = CurrentUserID.ToLongReq(); int statu = (int)ApprovalState.Enabled; var query = from b in context.Epm_Change.Where(p => p.IsDelete == false) where CurrentProjectIds.Contains(b.ProjectId.ToString()) && (b.ProjectName.Contains(projectName) || string.IsNullOrEmpty(projectName)) && (b.ChangeName.Contains(name) || string.IsNullOrEmpty(name)) && (b.State == state || state == -1) && ((b.State == statu && b.CreateUserId == currentUserID) || b.State != statu) select b; int count = query.Count(); int skip = (pageIndex - 1) * pageSize; int take = pageSize; var list = query.OrderByDescending(p => p.OperateTime).Skip(skip).Take(take).Select(chang => new ChangeView { Id = chang.Id, TotalAmount = chang.TotalAmount, AddAmount = chang.AddAmount, ReduceAmount = chang.ReduceAmount, ChangeAmount = chang.ChangeAmount, ChangeContent = chang.ChangeContent, ChangeDays = chang.ChangeDays, ChangeName = chang.ChangeName, ChangeNo = chang.ChangeNo, ChangeReason = chang.ChangeReason, ChangeStartTime = chang.ChangeStartTime, ChangeEndTime = chang.ChangeEndTime, ProjectId = chang.ProjectId, ProjectName = chang.ProjectName, Remark = chang.Remark, State = chang.State, SubmitUserId = chang.SubmitUserId, SubmitUserName = chang.SubmitUserName, CreateTime = chang.CreateTime, CrtCompanyName = chang.CrtCompanyName }).ToList(); result.Data = list; result.AllRowsCount = count; result.Flag = EResultFlag.Success; } catch (Exception ex) { result.Data = null; result.Flag = EResultFlag.Failure; result.Exception = new ExceptionEx(ex, "GetChangeList"); } return(result); }
/// <summary> /// 更新延期申请 /// </summary> /// <param name="model"></param> /// <returns></returns> public Result <bool> ModifyPlanDelay(PlanDelayView model) { Result <bool> result = new Result <bool>(); try { if (model == null) { throw new Exception("请填写延期申请内容!"); } Epm_PlanDelay planDelay = DataOperateBusiness <Epm_PlanDelay> .Get().GetModel(model.Id); if (planDelay == null) { throw new Exception("要修改的延期申请不存在!"); } if (planDelay.State != (int)ApprovalState.Enabled && planDelay.State != (int)ApprovalState.ApprFailure) { throw new Exception("当前延期申请不可进行修改!"); } if (!CurrentProjectIds.Contains(planDelay.ProjectId.ToString())) { throw new Exception("你未负责该项目,无权修改延期申请!"); } var listp = DataOperateBusiness <Epm_PlanDelay> .Get().GetList(t => (t.State == (int)ApprovalState.WaitAppr || t.State == (int)ApprovalState.Enabled) && t.ProjectId == model.ProjectId && t.PlanId == model.PlanId && t.Id != model.Id).ToList(); if (listp.Count > 0) { throw new Exception("你选择的工程节点已经存在待审核或者草稿状态的延期申请!"); } Epm_Plan plan = DataOperateBusiness <Epm_Plan> .Get().GetModel(model.PlanId); if (plan == null) { throw new Exception("所选计划信息不存在!"); } planDelay.ProjectId = model.ProjectId; planDelay.PlanName = model.PlanName; planDelay.OldStartDate = plan.StartTime.Value; planDelay.OldEndDate = plan.EndTime.Value; planDelay.DelayDay = model.DelayDay; planDelay.Reason = model.Reason; planDelay.Remark = model.Remark; planDelay.State = model.State; planDelay.ApplyCompanyId = CurrentUser.CompanyId; planDelay.ApplyCompanyName = CurrentCompanyName; planDelay.State = model.State; SetCurrentUser(planDelay); if (!model.PlanDelayCompanys.Any()) { throw new Exception("请选择责任单位!"); } DataOperateBusiness <Epm_PlanDelay> .Get().Update(planDelay); var delayCompanyList = DataOperateBusiness <Epm_PlanDelayCompany> .Get().GetList(p => p.DelayId == planDelay.Id).ToList(); DataOperateBusiness <Epm_PlanDelayCompany> .Get().DeleteRange(delayCompanyList); model.PlanDelayCompanys.ForEach(p => { p.DelayId = model.Id; p.ProjectId = model.ProjectId; p.ProjectName = model.ProjectName; p.State = planDelay.State; SetCreateUser(p); SetCurrentUser(p); }); DataOperateBusiness <Epm_PlanDelayCompany> .Get().AddRange(model.PlanDelayCompanys); result.Data = true; result.Flag = EResultFlag.Success; //处理待办 var tempApp = DataOperateBusiness <Epm_Approver> .Get().GetList(t => t.BusinessId == planDelay.Id && t.IsApprover == false).FirstOrDefault(); if (tempApp != null) { ComplateApprover(tempApp.Id); } // todo: 如果是提交审核,添加消息推送 if (planDelay.State == (int)ApprovalState.WaitAppr) { #region 生成待办 var project = DataOperateBusiness <Epm_Project> .Get().GetModel(planDelay.ProjectId); List <Epm_Approver> list = new List <Epm_Approver>(); Epm_Approver app = new Epm_Approver(); app.Title = CurrentUserName + "提报了变更计划单,待审核"; app.Content = CurrentUserName + "提报了变更计划更单,待审核"; app.SendUserId = CurrentUserID.ToLongReq(); app.SendUserName = CurrentUserName; app.SendTime = DateTime.Now; app.LinkURL = string.Empty; app.BusinessTypeNo = BusinessType.DelayApply.ToString(); app.Action = SystemRight.Add.ToString(); app.BusinessTypeName = BusinessType.DelayApply.GetText(); app.BusinessState = (int)(ApprovalState.WaitAppr); app.BusinessId = planDelay.Id; app.ApproverId = project.ContactUserId; app.ApproverName = project.ContactUserName; app.ProjectId = planDelay.ProjectId; app.ProjectName = project.Name; list.Add(app); AddApproverBatch(list); WriteLog(BusinessType.DelayApply.GetText(), SystemRight.Add.GetText(), "提交延期申请生成待办: " + planDelay.Id); #endregion #region 消息 var waitSend = GetWaitSendMessageList(model.ProjectId); 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 + "提报了变更计划单,待审核"; modelMsg.Content = CurrentUserName + "提报了变更计划单,待审核"; modelMsg.Type = 2; modelMsg.IsRead = false; modelMsg.BussinessId = model.Id; modelMsg.BussinesType = BusinessType.DelayApply.ToString(); modelMsg.ProjectId = model.ProjectId; modelMsg.ProjectName = model.ProjectName; modelMsg = base.SetCurrentUser(modelMsg); modelMsg = base.SetCreateUser(modelMsg); DataOperateBusiness <Epm_Massage> .Get().Add(modelMsg); } #endregion #region 发送短信 //Dictionary<string, string> parameterssm = new Dictionary<string, string>(); //parameterssm.Add("UserName", CurrentUserName); //WriteSMS(project.ContactUserId.Value, project.CompanyId, MessageStep.DelayApplyAdd, parameterssm); #endregion } // todo:写操作日志 } catch (Exception ex) { result.Flag = EResultFlag.Failure; result.Data = false; result.Exception = new ExceptionEx(ex, "AddPlanDelay"); } return(result); }