예제 #1
0
        /// <summary>
        /// 数据清洗
        /// </summary>
        /// <param name="db">dbClient</param>
        /// <param name="listModalityDate">检查类型对应排班日期段列表</param>
        private List <ModalityArrangeDate> ClearData(SqlSugarClient db, List <ModalityArrangeDate> listModalityDate)
        {
            var returnList = new List <ModalityArrangeDate>();

            try
            {
                db.BeginTran();
                listModalityDate.ForEach(item =>
                {
                    var newInfoList          = new List <t_mt_queuearrangemain>();
                    List <String> deleteList = new List <string>();
                    item.ArrangeDateList.ForEach(ele =>
                    {
                        //当前时间和结束之间差值
                        var dateDistance = CommonHandleMethod.DateDiff(DateTime.Now.ToDate1().ToDateTime(), ele.QueueArrangeEndDate.ToDateTime());
                        if (dateDistance > 0)
                        {
                            if (!deleteList.Contains(ele.ModalityID))
                            {
                                deleteList.Add(ele.ModalityID);
                            }
                            ele.AlterDT  = DateTime.Now.ToDate4();
                            ele.IsDelete = 1;
                            db.Updateable <t_mt_queuearrangemain>(ele).ExecuteCommand();
                        }
                        else
                        {
                            newInfoList.Add(ele);
                        }
                    });
                    newInfoList.ForEach(element =>
                    {
                        if (element.SequenceNumber > 1 && deleteList.Contains(element.ModalityID))
                        {
                            element.SequenceNumber = element.SequenceNumber - 1;
                            db.Updateable <t_mt_queuearrangemain>(element).ExecuteCommand();
                        }
                    });
                    returnList.Add(new ModalityArrangeDate
                    {
                        ModalityId      = item.ModalityId,
                        Modality        = item.Modality,
                        ArrangeDateList = newInfoList
                    });
                });

                return(returnList);
            }
            catch (Exception ex)
            {
                throw (ex);
            }
        }
예제 #2
0
        /// <summary>
        /// 获取检查类型下排班最后截止日期
        /// </summary>
        /// <param name="db">数据库连接对象</param>
        /// <returns></returns>
        private List <ModalityMaxDate> GetModalityMaxDateList(SqlSugarClient db, string hospitalId)
        {
            var rsMain           = db.Queryable <t_mt_queuearrangemain>().Where(n => n.IsDelete == 0).Where(n => n.HospitalID == hospitalId).ToList();
            var rsModality       = db.Queryable <t_mt_clinic>().Where(n => n.IsDelete == 0).Where(n => n.HospitalID == hospitalId).ToList();
            var listModalityDate = new List <ModalityMaxDate>();
            var listModality     = new List <string>();

            //检查类型和生成队列排班中的检查类型交集
            rsModality.ForEach(item =>
            {
                rsMain.ForEach(ele =>
                {
                    if (item.ID == ele.ModalityID)
                    {
                        listModality.Add(item.ID);
                    }
                });
            });
            listModality = listModality.Distinct().ToList();
            listModality.ForEach(ele =>
            {
                var modalityDate        = new ModalityMaxDate();
                modalityDate.ModalityId = ele;
                var maxSeq           = rsMain.Where(n => n.ModalityID == ele).Max(q => q.SequenceNumber);
                modalityDate.MaxDate = rsMain.Where(n => n.ModalityID == ele).Where(n => n.SequenceNumber == maxSeq).FirstOrDefault().QueueArrangeEndDate;
                listModalityDate.Add(modalityDate);
            });
            //获取当前医院预约系统配置
            var validDTO       = GetSystemConfig(db, hospitalId);
            var currentMaxDate = DateTime.Now.AddDays(validDTO.DayNums).ToDate1();

            listModalityDate.ForEach(item =>
            {
                //计算差值
                var subData = CommonHandleMethod.DateDiff(currentMaxDate.ToDateTime(), item.MaxDate.ToDateTime());
                if (subData > 0)
                {
                    item.WeekCount = CommonHandleMethod.ReturnWeekNums(subData);
                }
            });
            return(listModalityDate);
        }