示例#1
0
        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);
        }
示例#2
0
        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);
                }
            }
        }
示例#3
0
        ///<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);
        }