Exemple #1
0
        public async Task UpdateExamineRejectAsync(ExamineRecord examineRecord, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (examineRecord == null)
            {
                throw new ArgumentNullException(nameof(examineRecord));
            }
            try
            {
                var examineFlow = Context.ExamineFlows.AsNoTracking().FirstOrDefault(a => a.Id == examineRecord.FlowId);
                if (examineFlow == null)
                {
                    throw new Exception("未找到审核流程");
                }
                examineFlow.ExamineStatus = ExamineStatus.Reject;

                Context.Update(examineFlow);
                Context.Attach(examineRecord);
                Context.Update(examineRecord);
                await Context.SaveChangesAsync(cancellationToken);
            }
            catch (DbUpdateConcurrencyException)
            {
                throw;
            }
        }
Exemple #2
0
        /// <summary>
        /// 审核步骤回调
        /// </summary>
        /// <param name="examineUserId"></param>
        /// <param name="examineFlow"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task StepCallBackUpdateExamineFlowAsync(string examineUserId, ExamineFlow examineFlow, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (examineFlow == null)
            {
                throw new ArgumentNullException(nameof(examineFlow));
            }
            var record = await Context.ExamineRecords.AsNoTracking().Where(a => a.FlowId == examineFlow.Id).OrderByDescending(a => a.Sort)?.FirstOrDefaultAsync();

            //如果最新的记录为待审核状态,则不再添加审核记录
            if (record?.RecordStstus != RecordStatus.Waiting)
            {
                var examineRecord = new ExamineRecord();
                examineRecord.Id              = Guid.NewGuid().ToString();
                examineRecord.RecordTime      = DateTime.Now;
                examineRecord.RecordType      = RecordTypes.Examine;
                examineRecord.RecordStstus    = RecordStatus.Waiting;
                examineRecord.ExamineUserId   = examineUserId;
                examineRecord.FlowId          = examineFlow.Id;
                examineRecord.IsCurrent       = true;
                examineRecord.IsDeleted       = false;
                examineRecord.ExamineContents = "";
                Context.Attach(examineFlow);
                Context.Update(examineFlow);
                Context.Add(examineRecord);
                try
                {
                    await Context.SaveChangesAsync(cancellationToken);
                }
                catch (DbUpdateConcurrencyException)
                {
                    throw;
                }
            }
        }
Exemple #3
0
        public async Task FlowCallBackUpdateExamineFlowAsync(ExamineFlow examineFlow, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (examineFlow == null)
            {
                throw new ArgumentNullException(nameof(examineFlow));
            }
            var examineRecord = new ExamineRecord();

            examineRecord.Id              = Guid.NewGuid().ToString();
            examineRecord.RecordTime      = DateTime.Now;
            examineRecord.RecordStstus    = RecordStatus.Complete;
            examineRecord.RecordType      = RecordTypes.End;
            examineRecord.ExamineUserId   = "";
            examineRecord.IsCurrent       = true;
            examineRecord.IsDeleted       = false;
            examineRecord.FlowId          = examineFlow.Id;
            examineRecord.ExamineContents = "审核完成";
            try
            {
                Context.Attach(examineFlow);
                Context.Update(examineFlow);
                Context.Add(examineRecord);
                await Context.SaveChangesAsync(cancellationToken);
            }
            catch (DbUpdateConcurrencyException)
            {
                throw;
            }
        }
Exemple #4
0
        public int AddResult(ExamineRecord record, ExamineResult result)
        {
            var maxId  = repository.GetMaxId("HR_EXAMINERESULT", "RESULTID");
            var entity = ModelToEntity(result);

            entity.EXAMID     = maxId;
            entity.CREATEDATE = DateTime.Now;
            //entity.CreatorUserId
            repository.Insert(entity);
            return(maxId);
        }
        public int AddExamineRecord(PersonInfo person, ExamineRecord record)
        {
            var recordRepository = new BaseRepository <HR_EXAMINERECORD>(new CRDatabase());
            var maxId            = recordRepository.GetMaxId("HR_EXAMINERECORD", "EXAMID");
            var entity           = ModelToEntity(record);

            entity.PERSONID   = maxId;
            entity.CREATEDATE = DateTime.Now;
            //entity.CreatorUserId
            recordRepository.Insert(entity);
            return(maxId);
        }
Exemple #6
0
 public async Task <ExamineRecord> CreateExamineRecordAsync(ExamineRecord examineRecord, CancellationToken cancellationToken = default(CancellationToken))
 {
     if (examineRecord == null)
     {
         throw new ArgumentNullException(nameof(examineRecord));
     }
     try
     {
         Context.Add(examineRecord);
         await Context.SaveChangesAsync(cancellationToken);
     }
     catch (DbUpdateConcurrencyException)
     {
         throw;
     }
     return(examineRecord);
 }
 public static ExamineRecord EntityToModel(HR_EXAMINERECORD entity)
 {
     if (entity != null)
     {
         var model = new ExamineRecord()
         {
             ExamId   = entity.EXAMID,
             ExamNo   = entity.EXAMNO,
             ExamType = entity.EXAMTYPE,
             ExamDate = entity.EXAMDATE ?? DateTime.Now,
             PersonId = entity.PERSONID ?? 0,
             Doctor   = entity.DOCTORNAME,
             VisitWay = entity.VISITWAY
         };
         return(model);
     }
     return(null);
 }
Exemple #8
0
        public async Task NoticeCallbackAsync(List <string> userIds, ExamineFlow examineFlow, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (examineFlow == null)
            {
                throw new ArgumentNullException(nameof(examineFlow));
            }
            var examineRecord = new ExamineRecord();

            examineRecord.Id              = Guid.NewGuid().ToString();
            examineRecord.RecordTime      = DateTime.Now;
            examineRecord.RecordStstus    = RecordStatus.Examined;
            examineRecord.ExamineUserId   = "";
            examineRecord.FlowId          = examineFlow.Id;
            examineRecord.IsDeleted       = false;
            examineRecord.ExamineContents = "";

            List <ExamineNotice> list = new List <ExamineNotice>();

            foreach (var item in userIds)
            {
                list.Add(new ExamineNotice
                {
                    FlowId       = examineFlow.Id,
                    Id           = Guid.NewGuid().ToString(),
                    NoticeStatus = NoticeStatus.Noticed,
                    NoticeTime   = DateTime.Now,
                    IsDeleted    = false,
                    NoticeUserId = item,
                    RecordId     = examineRecord.Id
                });
            }
            try
            {
                Context.Attach(examineFlow);
                Context.Update(examineFlow);
                Context.Add(examineRecord);
                Context.AddRange(list);
                await Context.SaveChangesAsync(cancellationToken);
            }
            catch (DbUpdateConcurrencyException)
            {
                throw;
            }
        }
 private HR_EXAMINERECORD ModelToEntity(ExamineRecord model)
 {
     if (model != null)
     {
         var entity = new HR_EXAMINERECORD()
         {
             EXAMNO     = model.ExamNo,
             EXAMTYPE   = model.ExamType,
             VISITWAY   = model.VisitWay,
             DOCTORNAME = model.Doctor,
             EXAMDATE   = model.ExamDate,
             CREATEDATE = DateTime.Now,
             CREATEBY   = "",   //todo
             UPDATEDATE = null, //todo
             UPDATEBY   = "",
             STATUS     = 0,
         };
         return(entity);
     }
     return(null);
 }
Exemple #10
0
        public async Task <ExamineFlow> CreateExamineFlowAsync(ExamineFlow examineFlow, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (examineFlow == null)
            {
                throw new ArgumentNullException(nameof(examineFlow));
            }
            try
            {
                var examineRecord = new ExamineRecord();
                examineRecord.Id              = Guid.NewGuid().ToString();
                examineRecord.RecordTime      = DateTime.Now;
                examineRecord.RecordStstus    = RecordStatus.Examined;
                examineRecord.ExamineUserId   = examineFlow.SubmitUserId;
                examineRecord.FlowId          = examineFlow.Id;
                examineRecord.RecordType      = RecordTypes.Submit;
                examineRecord.IsDeleted       = false;
                examineRecord.IsCurrent       = true;
                examineRecord.ExamineContents = "提交审核";
                var flowlist = await Context.ExamineFlows.AsNoTracking().Where(a => a.ContentId == examineFlow.ContentId && a.Action == examineFlow.Action && a.ExamineStatus != ExamineStatus.Examined).ToListAsync(cancellationToken);

                var examiningflow = flowlist.SingleOrDefault(a => a.ExamineStatus == ExamineStatus.Examining);
                if (examiningflow != null)
                {
                    return(examineFlow);
                }
                var rejectflow = flowlist.SingleOrDefault(a => a.ExamineStatus == ExamineStatus.Reject);
                if (rejectflow != null)
                {
                    var records = Context.ExamineRecords.AsNoTracking().Where(a => a.FlowId == rejectflow.Id && a.IsCurrent).ToList();
                    for (int i = 0; i < records.Count; i++)
                    {
                        records[0].IsCurrent = false;
                    }
                    rejectflow.CallbackUrl          = examineFlow.CallbackUrl;
                    rejectflow.ExamineStatus        = examineFlow.ExamineStatus;
                    rejectflow.TaskGuid             = examineFlow.TaskGuid;
                    rejectflow.SubmitOrganizationId = examineFlow.SubmitOrganizationId;
                    rejectflow.SubmitTime           = examineFlow.SubmitTime;
                    rejectflow.SubmitDefineId       = examineFlow.SubmitDefineId;
                    rejectflow.TaskName             = examineFlow.TaskName;
                    rejectflow.CurrentStepId        = "";
                    rejectflow.Ext1      = examineFlow.Ext1;
                    rejectflow.Ext2      = examineFlow.Ext2;
                    rejectflow.Ext3      = examineFlow.Ext3;
                    rejectflow.Ext4      = examineFlow.Ext4;
                    rejectflow.Ext5      = examineFlow.Ext5;
                    rejectflow.Ext6      = examineFlow.Ext6;
                    rejectflow.Ext7      = examineFlow.Ext7;
                    rejectflow.Ext8      = examineFlow.Ext8;
                    examineRecord.FlowId = rejectflow.Id;
                    Context.UpdateRange(records);
                    Context.Update(rejectflow);
                    Context.Add(examineRecord);
                    await Context.SaveChangesAsync(cancellationToken);

                    return(rejectflow);
                }
                Context.Add(examineFlow);
                Context.Add(examineRecord);
                await Context.SaveChangesAsync(cancellationToken);
            }
            catch (DbUpdateConcurrencyException)
            {
                throw;
            }
            return(examineFlow);
        }