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