Beispiel #1
0
 /// <summary>
 /// 复制课表数据提交
 /// 作     者:Huang GaoLiang 2018年9月26日15:22:05
 /// </summary>
 /// <param name="autAudit">审核表</param>
 /// <param name="datSchoolTimeList">上课时间段集合</param>
 /// <param name="autClassList">审核中数据-班级表集合</param>
 /// <param name="autClassTimeList">审核中数据-班级上课时间表</param>
 /// <param name="toTermId">学期编号</param>
 internal static async Task CreateTermTimetable(TblAutAudit autAudit, List <TblDatSchoolTime> datSchoolTimeList, List <TblAutClass> autClassList, List <TblAutClassTime> autClassTimeList, long toTermId)
 {
     await new TblAutAuditRepository().AddTask(autAudit);                                     //审核表
     await new SchoolTimeService(toTermId).AddTaskDatSchoolTime(datSchoolTimeList, toTermId); //班级上课时间表
     await new TblAutClassRepository().AddTask(autClassList);                                 //审核中数据-班级课表
     await new TblAutClassTimeRepository().AddTask(autClassTimeList);                         //审核中数据-班级上课时间表
 }
Beispiel #2
0
        /// <summary>
        /// 审核不通过重置待审核
        /// <para>作    者:zhiwei.Tang</para>
        /// <para>创建时间:2018-10-10</para>
        /// </summary>
        /// <returns>审核Id</returns>
        private long AuditFailResetPendingAudit(long auditId)
        {
            TblAutAudit autAudit = _tblAutAuditRepository.Load(auditId);

            if (autAudit == null)
            {
                throw new ArgumentNullException(nameof(autAudit));
            }
            autAudit.AuditStatus = (int)AuditStatus.WaitAudit;
            autAudit.UpdateTime  = DateTime.Now;

            _tblAutAuditRepository.Update(autAudit);

            return(autAudit.AuditId);
        }
Beispiel #3
0
        /// <summary>
        /// 校验并获取审核Id
        /// <para>作    者:zhiwei.Tang</para>
        /// <para>创建时间:2018-09-25</para>
        /// </summary>
        /// <param name="schoolId">校区Id</param>
        /// <returns>审核Id</returns>
        private long VerifyGetAuditId(string schoolId)
        {
            TblAutAudit audit = base.TblAutAudit;

            if (audit == null)
            {
                audit = new TblAutAudit
                {
                    AuditId        = IdGenerator.NextId(),
                    SchoolId       = schoolId,
                    CreateTime     = DateTime.Now,
                    AuditDate      = DateTime.Now,
                    AuditStatus    = (int)AuditStatus.WaitAudit,
                    AuditUserId    = string.Empty,
                    AuditUserName  = string.Empty,
                    BizType        = (int)AuditBusinessType.TermCourseTimetable,
                    DataExt        = string.Empty,
                    DataExtVersion = string.Empty,
                    CreateUserId   = "",
                    CreateUserName = "",
                    ExtField1      = _termId.ToString(),
                    ExtField2      = string.Empty,
                    FlowNo         = string.Empty,
                    UpdateTime     = DateTime.Now
                };
                _tblAutAuditRepository.Add(audit);
            }

            switch ((AuditStatus)audit.AuditStatus)
            {
            case AuditStatus.WaitAudit:     //待审核
                break;

            case AuditStatus.Auditing:                                //审核中
                throw new BussinessException(ModelType.Timetable, 5); //课表正在审核中,不可操作

            case AuditStatus.Success:                                 //审核通过
                audit.AuditId = CopyClassToAutClass();
                break;

            case AuditStatus.Return:        //审核不通过
                audit.AuditId = AuditFailResetPendingAudit(audit.AuditId);
                break;
            }
            return(audit.AuditId);
        }
Beispiel #4
0
 /// <summary>
 /// 描述:根据审核主表实例化学期审核数据
 /// <para>作    者:瞿琦</para>
 /// <para>创建时间:2018.9.19</para>
 /// </summary>
 /// <param name="tblAutAudit">审核主表实例</param>
 private TermAuditService(TblAutAudit tblAutAudit)
 {
     base.TblAutAudit = tblAutAudit;
     this._schoolId   = base.TblAutAudit.ExtField1;
     this._year       = int.Parse(base.TblAutAudit.ExtField2);
 }
Beispiel #5
0
        /// <summary>
        /// 描述:提交审核
        /// <para>作    者:瞿琦</para>
        /// <para>创建时间:2018.9.19</para>
        /// </summary>
        /// <returns>无</returns>
        /// <exception cref="AMS.Core.BussinessException">
        /// 异常ID:9, 异常描述:校区编号为空
        /// 异常ID:2, 异常描述:添加审核表数据失败
        /// </exception>
        public void SubmitAudit(TermAuditRequest data)
        {
            //1.向流程平台提交审核流程,并得到流程记录Id
            var flowAuditId = IdGenerator.NextId();

            var orgService = new OrgService();
            var schoolList = orgService.GetAllSchoolList().FirstOrDefault(x => x.SchoolId.Trim() == _schoolId.Trim());

            if (schoolList == null)
            {
                throw new BussinessException(ModelType.Datum, 9);
            }

            var applyTitle = $"{schoolList.SchoolName}{_year}";

            var flowModel = new FlowInputDto
            {
                SystemCode   = BusinessConfig.BussinessCode,
                BusinessCode = ((int)AuditBusinessType.Term).ToString(),
                ApplyId      = CurrentUserId,
                ApplyTime    = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                ApplyCode    = flowAuditId.ToString(), //申请单号,没有置空
                ApplyTitle   = applyTitle,
                AuditUserId  = data.AuditUserId,
                FlowConent   = "",
                Describe     = "",
                Number       = 0,
                FlowID       = this.TblAutAudit != null && this.TblAutAudit.AuditStatus == (int)AuditStatus.Return ? this.TblAutAudit.FlowNo : string.Empty
            };

            //审核状态
            var auditStatus = TblAutAudit?.AuditStatus ?? 0;  //等于this.TblAutAudit != null ? this.TblAutAudit.AuditStatus : 0
            var flowId      = base.SubmitAuditFlow(flowModel, (AuditStatus)auditStatus);

            //2.添加数据到审核表
            var auditModel = new TblAutAudit()
            {
                AuditId        = flowAuditId,
                SchoolId       = this._schoolId,
                BizType        = (int)AuditBusinessType.Term,
                ExtField1      = this._schoolId,
                ExtField2      = this._year.ToString(),
                FlowNo         = flowId,
                AuditStatus    = (int)AuditStatus.Auditing,
                AuditUserId    = data.AuditUserId,
                AuditUserName  = data.AuditUserName,
                AuditDate      = DateTime.Now,
                CreateUserId   = base.CurrentUserId,
                CreateUserName = data.CreateUserName,
                DataExt        = string.Empty,
                DataExtVersion = string.Empty,
                CreateTime     = DateTime.Now,
                UpdateTime     = DateTime.Now
            };
            var flag = _tblAutAuditRepository.Add(auditModel);

            if (!flag)
            {
                throw new BussinessException((byte)ModelType.Audit, 2);
            }

            //3.添加数据到学期表
            if (this.TblAutAudit != null && this.TblAutAudit.AuditStatus == (int)AuditStatus.Return)
            {
                //退回时,先删除审核表中的记录,再插入
                _tblAutTermRepository.DeleteByAutTermId(_schoolId, _year);
            }
            var entity = Mapper.Map <List <TblAutTerm> >(data.TermAuditDetail);

            foreach (var item in entity)
            {
                item.AutTermId  = IdGenerator.NextId();
                item.AuditId    = flowAuditId;
                item.SchoolId   = this._schoolId;
                item.Year       = this._year;
                item.CreateTime = DateTime.Now;

                if (item.TermId == 0)//学期Id为空,则产生新的学期Id
                {
                    item.TermId = IdGenerator.NextId();
                }
            }
            _tblAutTermRepository.Add(entity);
        }
Beispiel #6
0
 /// <summary>
 /// 描述:根据审核主表实例化对象
 /// <para>作    者:瞿琦</para>
 /// <para>创建时间:2018-10-29</para>
 /// </summary>
 /// <param name="tblAutAudit">审核主表实体</param>
 private CouponRuleAuditService(TblAutAudit tblAutAudit)
 {
     base.TblAutAudit = tblAutAudit;
     this._schoolId   = tblAutAudit.ExtField1.Trim();
 }
Beispiel #7
0
        /// <summary>
        /// 描述:添加一个审核中的优惠设置
        /// <para>作    者:瞿琦</para>
        /// <para>创建时间:2018-10-29</para>
        /// </summary>
        /// <param name="dto">要添加的赠与奖学金信息</param>
        /// <returns>无</returns>
        public void Add(CouponRuleDetailRequest dto)
        {
            //1、确定当前校区是否存在正在审核的赠与奖学金设置
            if (base.TblAutAudit != null && base.TblAutAudit.AuditStatus == (int)AuditStatus.Auditing)   //当前单据在审核中,不允许添加
            {
                throw new BussinessException(ModelType.Discount, 2);
            }

            //2、确定当前校区是否存在被退回或未提交的赠与奖学金设置
            //2.1向审核主表添加数据
            long auditId = 0;

            if (base.TblAutAudit == null || base.TblAutAudit.AuditStatus == (int)AuditStatus.Return || base.TblAutAudit.AuditStatus == (int)AuditStatus.Success)
            {
                if (dto.CouponType == CouponType.Recommend)
                {
                    ValidationCouponRule(dto.BeginDate, dto.EndDate);   //验证正式表是否已存在转介绍优惠
                }

                var auditModel = new TblAutAudit()
                {
                    AuditId        = IdGenerator.NextId(),
                    SchoolId       = this._schoolId,
                    BizType        = (int)AuditBusinessType.ScholarshipGive,
                    ExtField1      = _schoolId,
                    ExtField2      = string.Empty,
                    FlowNo         = string.Empty,
                    AuditStatus    = (int)AuditStatus.WaitAudit,
                    AuditUserId    = string.Empty,
                    AuditUserName  = string.Empty,
                    AuditDate      = DateTime.Now,
                    CreateUserId   = "",
                    CreateUserName = "",
                    DataExt        = string.Empty,
                    DataExtVersion = string.Empty,
                    CreateTime     = DateTime.Now,
                    UpdateTime     = DateTime.Now
                };
                auditId = auditModel.AuditId;
                _tblAutAuditRepository.Add(auditModel);
            }
            else if (base.TblAutAudit.AuditStatus == (int)AuditStatus.WaitAudit)
            {
                if (dto.CouponType == CouponType.Recommend)
                {
                    //验证正式表是否已存在转介绍优惠
                    ValidationCouponRule(dto.BeginDate, dto.EndDate);
                    //验证临时表是否已存在转介绍优惠
                    ValidationAuditCouponRule(dto.BeginDate, dto.EndDate);
                }

                auditId = base.TblAutAudit.AuditId;
            }

            //2.2向赠与奖学金审核子表添加数据
            var couponRuleModel = Mapper.Map <TblAutCouponRule>(dto);

            couponRuleModel.AutCouponRuleId = IdGenerator.NextId();  //审核子表主键
            couponRuleModel.AuditId         = auditId;               //审核主表Id
            couponRuleModel.CouponRuleId    = IdGenerator.NextId();  //奖学金正式表Id
            couponRuleModel.CreateTime      = DateTime.Now;
            couponRuleModel.SchoolId        = this._schoolId;

            _tblAutCouponRuleRepository.Add(couponRuleModel);
        }
Beispiel #8
0
        /// <summary>
        /// 复制正式学期排课数据到草稿
        /// <para>作    者:zhiwei.Tang</para>
        /// <para>创建时间:2018-09-25</para>
        /// </summary>
        /// <returns>得到审核Id</returns>
        private long CopyClassToAutClass()
        {
            //获取所有班级信息
            var classes = DefaultClassService.GetClasssByTermId(_termId);
            //获取班级所有上课时间段
            var classTime = DefaultClassService.GetClassTimeByClassId(classes.Select(x => x.ClassId));

            TblAutAudit autAudit = new TblAutAudit
            {
                AuditId        = IdGenerator.NextId(),
                CreateTime     = DateTime.Now,
                AuditDate      = DateTime.Now,
                AuditStatus    = (int)AuditStatus.WaitAudit,
                AuditUserId    = string.Empty,
                AuditUserName  = string.Empty,
                BizType        = (int)AuditBusinessType.TermCourseTimetable,
                DataExt        = string.Empty,
                DataExtVersion = string.Empty,
                ExtField1      = _termId.ToString(),
                ExtField2      = string.Empty,
                FlowNo         = string.Empty,
                UpdateTime     = DateTime.Now,
                SchoolId       = base.TblAutAudit.SchoolId,
                CreateUserId   = string.Empty,
                CreateUserName = string.Empty
            };

            List <TblAutClass> autClasses = classes.Select(x => new TblAutClass
            {
                AutClassId   = IdGenerator.NextId(),
                AuditId      = autAudit.AuditId,
                ClassId      = x.ClassId,
                ClassNo      = x.ClassNo,
                ClassRoomId  = x.ClassRoomId,
                CourseId     = x.CourseId,
                CourseLeveId = x.CourseLeveId,
                CourseNum    = x.CourseNum,
                CreateTime   = DateTime.Now,
                DataStatus   = 0,
                RoomCourseId = x.RoomCourseId,
                StudentsNum  = x.StudentsNum,
                TeacherId    = x.TeacherId,
                TermId       = x.TermId,
                UpdateTime   = DateTime.Now,
                SchoolId     = base.TblAutAudit.SchoolId
            }).ToList();

            List <TblAutClassTime> autClassTime = classTime.Select(x => new TblAutClassTime
            {
                AutClassTimeId = IdGenerator.NextId(),
                AuditId        = autAudit.AuditId,
                ClassId        = x.ClassId,
                ClassTimeId    = x.ClassTimeId,
                CreateTime     = DateTime.Now,
                DataStatus     = 0,
                SchoolTimeId   = x.SchoolTimeId,
                SchoolId       = base.TblAutAudit.SchoolId
            }).ToList();

            //TODO:事物
            Task[] tasks = new Task[3];
            tasks[0] = _tblAutAuditRepository.AddTask(autAudit);
            tasks[1] = _tblAutClassRepository.Value.SaveTask(autClasses);
            tasks[2] = _tblAutClassTimeRepository.Value.SaveTask(autClassTime);

            Task.WaitAll(tasks);

            return(autAudit.AuditId);
        }
Beispiel #9
0
 /// <summary>
 /// 描述:根据审核主表实例化学期审核数据
 /// </summary>
 /// <param name="tblAutAudit">审核实体</param>
 private TermCourseTimetableAuditService(TblAutAudit tblAutAudit)
 {
     base.TblAutAudit = tblAutAudit;
     this._termId     = long.Parse(base.TblAutAudit.ExtField1);
 }