/// <summary> /// 获取延期申请详情 /// </summary> /// <param name="id">延期申请 ID</param> /// <returns></returns> public Result <PlanDelayView> GetPlanDelayInfo(long id) { Result <PlanDelayView> result = new Result <PlanDelayView>(); try { Epm_PlanDelay delay = DataOperateBusiness <Epm_PlanDelay> .Get().GetModel(id); if (delay == null) { throw new Exception("延期申请信息不存在!"); } //if (!CurrentProjectIds.Contains(delay.ProjectId.ToString())) //{ // throw new Exception("你未负责该项目,无权查看延期申请!"); //} PlanDelayView view = new PlanDelayView { Id = delay.Id, ProjectId = delay.ProjectId, ProjectName = delay.ProjectName, PlanId = delay.PlanId, PlanName = delay.PlanName, OldStartDate = delay.OldStartDate, OldEndDate = delay.OldEndDate, DelayDay = delay.DelayDay, Reason = delay.Reason, Remark = delay.Remark, State = delay.State, CreateDate = delay.CreateDate, ApplyCompanyId = delay.ApplyCompanyId, ApplyCompanyName = delay.ApplyCompanyName, AuditDate = delay.AuditDate, CreateTime = delay.CreateDate, CreateUserId = delay.CreateUserId, CreateUserName = delay.CreateUserName, AuditUserName = delay.AuditUserName, OrgName = delay.OrgName }; view.PlanDelayCompanys = DataOperateBusiness <Epm_PlanDelayCompany> .Get() .GetList(p => p.DelayId == id).ToList(); view.CompanyIds = view.PlanDelayCompanys.Select(t => t.CompanyId).JoinToString("、"); view.CompanyNames = view.PlanDelayCompanys.Select(t => t.CompanyName).JoinToString("、"); result.Data = view; result.Flag = EResultFlag.Success; } catch (Exception ex) { result.Data = null; result.Flag = EResultFlag.Failure; result.Exception = new ExceptionEx(ex, "GetSupervisorLogModel"); } return(result); }
public ActionResult Edit(PlanDelayView model) { ResultView <int> view = new ResultView <int>(); //表单校验 if (string.IsNullOrEmpty(model.ProjectName)) { view.Flag = false; view.Message = "请选择延期申请所属项目!"; return(Json(view)); } if (string.IsNullOrEmpty(model.PlanName)) { view.Flag = false; view.Message = "请选择延期工程节点!"; return(Json(view)); } //施工单位 //string builder = Request.Form["Builder"]; //if (string.IsNullOrWhiteSpace(builder)) //{ // view.Flag = false; // view.Message = "请填写相关责任单位情况!"; // return Json(view); //} //model.PlanDelayCompanys = JsonConvert.DeserializeObject<List<Epm_PlanDelayCompany>>(builder); var companyIds = Request.Form["CompanyId"]; var companyNames = Request.Form["CompanyName"]; for (int i = 0; i < companyIds.Split('、').Length; i++) { var planDelayview = new Epm_PlanDelayCompany(); planDelayview.ProjectId = model.ProjectId; planDelayview.ProjectName = model.ProjectName; planDelayview.CompanyId = Convert.ToInt64(companyIds.Split('、')[i]); planDelayview.CompanyName = companyNames.Split('、')[i]; planDelayview.DelayDay = model.DelayDay; planDelayview.State = model.State; planDelayview.DelayId = model.Id; model.PlanDelayCompanys.Add(planDelayview); } if (model.PlanDelayCompanys == null || !model.PlanDelayCompanys.Any()) { view.Flag = false; view.Message = "请填写现场施工单位情况!"; return(Json(view)); } Result <bool> result = new Result <bool>(); using (ClientSiteClientProxy proxy = new ClientSiteClientProxy(ProxyEx(Request))) { result = proxy.ModifyPlanDelay(model); } return(Json(result.ToResultView())); }
/// <summary> /// 新增延期申请 /// </summary> /// <param name="model"></param> /// <returns></returns> public Result <bool> AddPlanDelay(PlanDelayView model) { Result <bool> result = new Result <bool>(); try { if (model == null) { throw new Exception("请填写延期申请内容!"); } Epm_Plan plan = DataOperateBusiness <Epm_Plan> .Get().GetModel(model.PlanId); if (plan == null) { throw new Exception("所选计划信息不存在!"); } //if (!CurrentProjectIds.Contains(plan.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).ToList(); if (listp.Count > 0) { throw new Exception("你选择的工程节点已经存在待审核或者草稿状态的延期申请!"); } Epm_PlanDelay delay = new Epm_PlanDelay(); delay.Id = model.Id; delay.ProjectId = model.ProjectId; delay.ProjectName = model.ProjectName; delay.PlanId = model.PlanId; delay.PlanName = model.PlanName; delay.OldStartDate = plan.StartTime.Value; delay.OldEndDate = plan.EndTime.Value; delay.DelayDay = model.DelayDay; delay.Reason = model.Reason; delay.Remark = model.Remark; delay.State = model.State; delay.CreateDate = DateTime.Today; delay.ApplyCompanyId = CurrentUser.CompanyId; delay.ApplyCompanyName = CurrentCompanyName; delay.State = model.State; SetCreateUser(delay); SetCurrentUser(delay); if (!model.PlanDelayCompanys.Any()) { throw new Exception("请选择责任单位!"); } model.PlanDelayCompanys.ForEach(p => { p.DelayId = model.Id; p.ProjectId = model.ProjectId; p.ProjectName = model.ProjectName; p.State = delay.State; SetCreateUser(p); SetCurrentUser(p); }); DataOperateBusiness <Epm_PlanDelayCompany> .Get().AddRange(model.PlanDelayCompanys); DataOperateBusiness <Epm_PlanDelay> .Get().Add(delay); // todo: 如果是提交审核,添加消息推送 if (delay.State == (int)ApprovalState.WaitAppr) { #region 生成待办 var project = DataOperateBusiness <Epm_Project> .Get().GetModel(delay.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 = delay.Id; app.ApproverId = project.ContactUserId; app.ApproverName = project.ContactUserName; app.ProjectId = delay.ProjectId; app.ProjectName = project.Name; list.Add(app); AddApproverBatch(list); WriteLog(BusinessType.DelayApply.GetText(), SystemRight.Add.GetText(), "提交延期申请生成待办: " + delay.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 } result.Data = true; result.Flag = EResultFlag.Success; // todo:写操作日志 } catch (Exception ex) { result.Flag = EResultFlag.Failure; result.Data = false; result.Exception = new ExceptionEx(ex, "AddPlanDelay"); } return(result); }