/// <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); } }
/// <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); }