private ChangeView EmpToView(Epm_Change chang, List <Epm_ChangeCompany> companys) { ChangeView model = new ChangeView(); model.Id = chang.Id; model.ChangeAmount = chang.ChangeAmount; model.ChangeContent = chang.ChangeContent; model.ChangeDays = chang.ChangeDays; model.ChangeEndTime = chang.ChangeEndTime; model.ChangeName = chang.ChangeName; model.ChangeNo = chang.ChangeNo; model.ChangeReason = chang.ChangeReason; model.ChangeStartTime = chang.ChangeStartTime; model.CompanyIds = string.Join(",", companys.Select(t => t.CompanyId)); model.CompanyNames = string.Join(",", companys.Select(t => t.CompanyName)); model.ProjectId = chang.ProjectId; model.ProjectName = chang.ProjectName; model.Remark = chang.Remark; model.State = chang.State; model.SubmitUserId = chang.SubmitUserId; model.SubmitUserName = chang.SubmitUserName; model.CreateTime = chang.CreateTime; model.CrtCompanyName = chang.CrtCompanyName; model.AddAmount = chang.AddAmount; model.TotalAmount = chang.TotalAmount; model.ReduceAmount = chang.ReduceAmount; model.Epm_ChangeCompany = companys; model.CreateUserId = chang.CreateUserId; model.CreateUserName = chang.CreateUserName; return(model); }
private void ViewToEmp(ChangeView view, out Epm_Change change, out List <Epm_ChangeCompany> companys) { change = new Epm_Change(); base.SetCurrentUser(change); change.CrtCompanyId = CurrentCompanyID.ToLongReq(); change.CrtCompanyName = CurrentCompanyName; change.Id = view.Id; change.ChangeAmount = view.ChangeAmount; change.ChangeContent = view.ChangeContent; change.ChangeDays = view.ChangeDays; change.ChangeEndTime = view.ChangeEndTime; change.ChangeName = view.ChangeName; change.ChangeNo = view.ChangeNo; change.ChangeReason = view.ChangeReason; change.ChangeStartTime = view.ChangeStartTime; change.ProjectId = view.ProjectId; change.ProjectName = view.ProjectName; change.Remark = view.Remark; change.State = view.State; change.SubmitUserId = view.SubmitUserId; change.SubmitUserName = view.SubmitUserName; change.CreateTime = view.CreateTime; change.CrtCompanyName = view.CrtCompanyName; change.AddAmount = view.AddAmount; change.TotalAmount = view.TotalAmount; change.ReduceAmount = view.ReduceAmount; companys = new List <Epm_ChangeCompany>(); if (view.Epm_ChangeCompany != null) { foreach (var item in view.Epm_ChangeCompany) { var comany = new Epm_ChangeCompany(); base.SetCurrentUser(comany); comany.CrtCompanyId = CurrentCompanyID.ToLongReq(); comany.CrtCompanyName = CurrentCompanyName; comany.CompanyId = item.CompanyId; comany.CompanyName = item.CompanyName; comany.ChangeId = view.Id; comany.CompanyType = item.CompanyType; companys.Add(comany); } } }
///<summary> ///添加: ///</summary> /// <param name="model">要添加的model</param> /// <returns>受影响的行数</returns> public Result <int> AddChange(ChangeView model, List <Base_Files> fileList = null) { Result <int> result = new Result <int>(); try { Epm_Change change = new Epm_Change(); List <Epm_ChangeCompany> companys = new List <Epm_ChangeCompany>(); model.Id = change.Id; ViewToEmp(model, out change, out companys); bool dConfig = DataOperateBusiness <Epm_Change> .Get().Count(i => i.ProjectId == change.ProjectId && i.State != (int)ApprovalState.ApprSuccess) > 0; if (dConfig) { throw new Exception("已存在该项目的变更申请!"); } var dictionaryList = DataOperateBasic <Base_TypeDictionary> .Get().GetList(t => t.Type == DictionaryType.ChangeRatio.ToString() && t.No == "ReduceRatio").ToList().FirstOrDefault(); if (change.ChangeAmount < 0 && change.State == (int)ApprovalState.WaitAppr) { int ratio = Convert.ToInt32(dictionaryList.Name); if ((-change.ChangeAmount) < change.TotalAmount * ((decimal)ratio / 100)) { change.State = (int)ApprovalState.ApprSuccess; model.State = (int)ApprovalState.ApprSuccess; } } var rows = DataOperateBusiness <Epm_Change> .Get().Add(change); DataOperateBusiness <Epm_ChangeCompany> .Get().AddRange(companys); //新增附件 AddFilesByTable(change, fileList); result.Data = rows; result.Flag = EResultFlag.Success; WriteLog(BusinessType.Change.GetText(), SystemRight.Add.GetText(), "新增: " + model.Id); if (model.State == (int)ApprovalState.ApprSuccess) { var project = DataOperateBusiness <Epm_Project> .Get().GetList(t => t.Id == model.ProjectId).FirstOrDefault(); if (project != null) { project.Amount = model.TotalAmount + model.ChangeAmount; DataOperateBusiness <Epm_Project> .Get().Update(project); } } if (model.State == (int)ApprovalState.WaitAppr) { if (companys.Any() && companys.Count > 0) { for (int i = 0; i < companys.Count; i++) { var comID = companys[i].CompanyId; var temp = DataOperateBusiness <Epm_ProjectStateTrack> .Get().GetList(t => t.CompanyId == comID).FirstOrDefault(); if (temp != null) { temp.Qty = (Convert.ToInt32(temp.Qty) + 1).ToString(); DataOperateBusiness <Epm_ProjectStateTrack> .Get().Update(temp); } } } WriteLog(BusinessType.Change.GetText(), SystemRight.Add.GetText(), "生成消息: " + model.Id); var project = DataOperateBusiness <Epm_Project> .Get().GetModel(model.ProjectId.Value); #region 生成待办 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.Change.ToString(); app.Action = SystemRight.Add.ToString(); app.BusinessTypeName = BusinessType.Change.GetText(); app.BusinessState = (int)(ApprovalState.WaitAppr); app.BusinessId = model.Id; app.ApproverId = project.PMId; app.ApproverName = project.PMName; app.ProjectId = model.ProjectId; app.ProjectName = project.Name; list.Add(app); AddApproverBatch(list); WriteLog(BusinessType.Change.GetText(), SystemRight.Add.GetText(), "提交变更生成待办: " + model.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 + "提交了变更申请,待审核"; modelMsg.Content = CurrentUserName + "提交了变更申请,待审核"; modelMsg.Type = 2; modelMsg.IsRead = false; modelMsg.BussinessId = model.Id; modelMsg.BussinesType = BusinessType.Change.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 #region 发送短信 //Dictionary<string, string> parameterSms = new Dictionary<string, string>(); //parameterSms.Add("UserName", CurrentUserName); //WriteSMS(project.PMId.Value, 0, MessageStep.ChangeAdd, parameterSms); #endregion } } catch (Exception ex) { result.Data = -1; result.Flag = EResultFlag.Failure; result.Exception = new ExceptionEx(ex, "AddChange"); } return(result); }