using DataEntity; using DataEntity.Device; using DataEntity.Sockets.TakePhoto; using DataRWDAL.Base; using HxEnum; using MySql.Data.MySqlClient; using SqlSugar; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Data; using XCommon.Log; using XCommon.MySql; using XImagingXhandler.XDAL; namespace DataRWDAL { public class ExperimentDB : BaseDB { #region 登录实验信息 /// /// 登录实验信息 /// /// /// public static int Add(ExperimentModel model) { using (var db = GetInstance()) { return db.Insertable(model).ExecuteCommand(); } } #endregion #region 更新实验信息 /// /// 更新实验信息 /// /// /// public static int Update(ExperimentModel model) { using (var db = GetInstance()) { return db.Updateable(model).ExecuteCommand(); } } #endregion #region 根据实验运行时间、来源板码、目标板码,查询实验列表数据集 /// /// 根据实验运行时间、来源板码、目标板码,查询实验列表数据集 /// /// /// /// /// /// public static ObservableCollection GetExperimentCollectionFromdb(string startTime,string endTime,string srcBarcode,string tagBarcode) { ObservableCollection experimentModelsResult = new ObservableCollection(); int countNum = 1; using (var db = GetInstance()) { if (!string.IsNullOrEmpty(startTime) && !string.IsNullOrEmpty(endTime)) { var queryList= new ObservableCollection(db.Queryable().Where(it => (!it.Status.Equals(-1))&&(SqlFunc.Between(it.LunchTime,Convert.ToDateTime(startTime),Convert.ToDateTime(endTime))|| SqlFunc.Between(it.EndTime, Convert.ToDateTime(startTime), Convert.ToDateTime(endTime)))).OrderBy(it => it.EndTime, OrderByType.Desc).ToList()); //进一步搜索该实验报表中的来源barcode和目标barcode if(queryList!=null) { foreach(var item in queryList) { item.indexNum = (countNum++).ToString(); if (!string.IsNullOrEmpty(srcBarcode) && !string.IsNullOrEmpty(tagBarcode)) { var query = db.Queryable().Where(t => t.ExperimentId.Equals(item.ExperimentId) && t.SourceBarcode.Contains(srcBarcode) && t.TargetBarcode.Contains(tagBarcode)).ToList(); string sourceBarcodes = string.Empty; string targetBarcodes = string.Empty; if (query != null) { query = db.Queryable().Where(t => t.ExperimentId.Equals(item.ExperimentId)).ToList(); if (query != null) { List sourceList = new List(); List targetList = new List(); foreach (var m in query) { if (!sourceList.Contains(m.SourceBarcode)) { sourceList.Add(m.SourceBarcode); } if (!targetList.Contains(m.TargetBarcode)) { targetList.Add(m.TargetBarcode); } } sourceBarcodes = string.Format(",", sourceList); targetBarcodes = string.Format(",", targetList); } item.ExperimentName = (item.ExperimentName != null && (item.ExperimentName.Length > 0)) ? item.ExperimentName.Substring(0, item.ExperimentName.LastIndexOf('.')) : ""; item.SourceBarcodes = sourceBarcodes; item.TargetBarcodes = targetBarcodes; experimentModelsResult.Add(item); } } else if (!string.IsNullOrEmpty(srcBarcode) && string.IsNullOrEmpty(tagBarcode)) { var query = db.Queryable().Where(t => t.ExperimentId.Equals(item.ExperimentId) && t.SourceBarcode.Contains(srcBarcode)).ToList(); string sourceBarcodes = string.Empty; string targetBarcodes = string.Empty; if (query != null) { query = db.Queryable().Where(t => t.ExperimentId.Equals(item.ExperimentId)).ToList(); if (query != null) { List sourceList = new List(); List targetList = new List(); foreach (var m in query) { if (!sourceList.Contains(m.SourceBarcode)) { sourceList.Add(m.SourceBarcode); } if (!targetList.Contains(m.TargetBarcode)) { targetList.Add(m.TargetBarcode); } } sourceBarcodes = string.Format(",", sourceList); targetBarcodes = string.Format(",", targetList); } item.ExperimentName = (item.ExperimentName != null && (item.ExperimentName.Length > 0)) ? item.ExperimentName.Substring(0, item.ExperimentName.LastIndexOf('.')) : ""; item.SourceBarcodes = sourceBarcodes; item.TargetBarcodes = targetBarcodes; experimentModelsResult.Add(item); } } else if (string.IsNullOrEmpty(srcBarcode) && !string.IsNullOrEmpty(tagBarcode)) { var query = db.Queryable().Where(t => t.ExperimentId.Equals(item.ExperimentId) && t.TargetBarcode.Contains(tagBarcode)).ToList(); string sourceBarcodes = string.Empty; string targetBarcodes = string.Empty; if (query != null) { query = db.Queryable().Where(t => t.ExperimentId.Equals(item.ExperimentId)).ToList(); if (query != null) { List sourceList = new List(); List targetList = new List(); foreach (var m in query) { if (!sourceList.Contains(m.SourceBarcode)) { sourceList.Add(m.SourceBarcode); } if (!targetList.Contains(m.TargetBarcode)) { targetList.Add(m.TargetBarcode); } } sourceBarcodes = string.Format(",", sourceList); targetBarcodes = string.Format(",", targetList); } item.ExperimentName = (item.ExperimentName != null && (item.ExperimentName.Length > 0)) ? item.ExperimentName.Substring(0, item.ExperimentName.LastIndexOf('.')) : ""; item.SourceBarcodes = sourceBarcodes; item.TargetBarcodes = targetBarcodes; experimentModelsResult.Add(item); } } else if (string.IsNullOrEmpty(srcBarcode) && string.IsNullOrEmpty(tagBarcode)) { string sourceBarcodes = string.Empty; string targetBarcodes = string.Empty; var query = db.Queryable().Where(t => t.ExperimentId.Equals(item.ExperimentId)).ToList(); if (query != null) { List sourceList = new List(); List targetList = new List(); foreach (var m in query) { if (!sourceList.Contains(m.SourceBarcode)) { sourceList.Add(m.SourceBarcode); } if (!targetList.Contains(m.TargetBarcode)) { targetList.Add(m.TargetBarcode); } } sourceBarcodes = string.Format(",", sourceList); targetBarcodes = string.Format(",", targetList); } item.ExperimentName = (item.ExperimentName != null && (item.ExperimentName.Length > 0)) ? item.ExperimentName.Substring(0, item.ExperimentName.LastIndexOf('.')) : ""; item.SourceBarcodes = sourceBarcodes; item.TargetBarcodes = targetBarcodes; experimentModelsResult.Add(item); } } } } else if(!string.IsNullOrEmpty(startTime) && string.IsNullOrEmpty(endTime)) { endTime = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); var queryList = new ObservableCollection(db.Queryable().Where(it => (!it.Status.Equals(-1)) && (SqlFunc.Between(it.LunchTime, Convert.ToDateTime(startTime), Convert.ToDateTime(endTime)) || SqlFunc.Between(it.EndTime, Convert.ToDateTime(startTime), Convert.ToDateTime(endTime)))).OrderBy(it => it.EndTime, OrderByType.Desc).ToList()); //进一步搜索该实验报表中的来源barcode和目标barcode if (queryList != null) { foreach (var item in queryList) { item.indexNum = (countNum++).ToString(); if (!string.IsNullOrEmpty(srcBarcode) && !string.IsNullOrEmpty(tagBarcode)) { var query = db.Queryable().Where(t => t.ExperimentId.Equals(item.ExperimentId) && t.SourceBarcode.Contains(srcBarcode) && t.TargetBarcode.Contains(tagBarcode)).ToList(); string sourceBarcodes = string.Empty; string targetBarcodes = string.Empty; if (query != null) { query = db.Queryable().Where(t => t.ExperimentId.Equals(item.ExperimentId)).ToList(); if (query != null) { List sourceList = new List(); List targetList = new List(); foreach (var m in query) { if (!sourceList.Contains(m.SourceBarcode)) { sourceList.Add(m.SourceBarcode); } if (!targetList.Contains(m.TargetBarcode)) { targetList.Add(m.TargetBarcode); } } sourceBarcodes = string.Format(",", sourceList); targetBarcodes = string.Format(",", targetList); } item.ExperimentName = (item.ExperimentName != null && (item.ExperimentName.Length > 0)) ? item.ExperimentName.Substring(0, item.ExperimentName.LastIndexOf('.')) : ""; item.SourceBarcodes = sourceBarcodes; item.TargetBarcodes = targetBarcodes; experimentModelsResult.Add(item); } } else if (!string.IsNullOrEmpty(srcBarcode) && string.IsNullOrEmpty(tagBarcode)) { var query = db.Queryable().Where(t => t.ExperimentId.Equals(item.ExperimentId) && t.SourceBarcode.Contains(srcBarcode)).ToList(); string sourceBarcodes = string.Empty; string targetBarcodes = string.Empty; if (query != null) { query = db.Queryable().Where(t => t.ExperimentId.Equals(item.ExperimentId)).ToList(); if (query != null) { List sourceList = new List(); List targetList = new List(); foreach (var m in query) { if (!sourceList.Contains(m.SourceBarcode)) { sourceList.Add(m.SourceBarcode); } if (!targetList.Contains(m.TargetBarcode)) { targetList.Add(m.TargetBarcode); } } sourceBarcodes = string.Format(",", sourceList); targetBarcodes = string.Format(",", targetList); } item.ExperimentName = (item.ExperimentName != null && (item.ExperimentName.Length > 0)) ? item.ExperimentName.Substring(0, item.ExperimentName.LastIndexOf('.')) : ""; item.SourceBarcodes = sourceBarcodes; item.TargetBarcodes = targetBarcodes; experimentModelsResult.Add(item); } } else if (string.IsNullOrEmpty(srcBarcode) && !string.IsNullOrEmpty(tagBarcode)) { var query = db.Queryable().Where(t => t.ExperimentId.Equals(item.ExperimentId) && t.TargetBarcode.Contains(tagBarcode)).ToList(); string sourceBarcodes = string.Empty; string targetBarcodes = string.Empty; if (query != null) { query = db.Queryable().Where(t => t.ExperimentId.Equals(item.ExperimentId)).ToList(); if (query != null) { List sourceList = new List(); List targetList = new List(); foreach (var m in query) { if (!sourceList.Contains(m.SourceBarcode)) { sourceList.Add(m.SourceBarcode); } if (!targetList.Contains(m.TargetBarcode)) { targetList.Add(m.TargetBarcode); } } sourceBarcodes = string.Format(",", sourceList); targetBarcodes = string.Format(",", targetList); } item.ExperimentName = (item.ExperimentName != null && (item.ExperimentName.Length > 0)) ? item.ExperimentName.Substring(0, item.ExperimentName.LastIndexOf('.')) : ""; item.SourceBarcodes = sourceBarcodes; item.TargetBarcodes = targetBarcodes; experimentModelsResult.Add(item); } } else if (string.IsNullOrEmpty(srcBarcode) && string.IsNullOrEmpty(tagBarcode)) { string sourceBarcodes = string.Empty; string targetBarcodes = string.Empty; var query = db.Queryable().Where(t => t.ExperimentId.Equals(item.ExperimentId)).ToList(); if (query != null) { List sourceList = new List(); List targetList = new List(); foreach (var m in query) { if (!sourceList.Contains(m.SourceBarcode)) { sourceList.Add(m.SourceBarcode); } if (!targetList.Contains(m.TargetBarcode)) { targetList.Add(m.TargetBarcode); } } sourceBarcodes = string.Format(",", sourceList); targetBarcodes = string.Format(",", targetList); } item.ExperimentName = (item.ExperimentName != null && (item.ExperimentName.Length > 0)) ? item.ExperimentName.Substring(0, item.ExperimentName.LastIndexOf('.')) : ""; item.SourceBarcodes = sourceBarcodes; item.TargetBarcodes = targetBarcodes; experimentModelsResult.Add(item); } } } } else if (string.IsNullOrEmpty(startTime) && !string.IsNullOrEmpty(endTime))//不存在 { } else if (string.IsNullOrEmpty(startTime) && string.IsNullOrEmpty(endTime)) { endTime = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); var queryList = new ObservableCollection(db.Queryable().Where(it => (!it.Status.Equals(-1))).OrderBy(it => it.EndTime, OrderByType.Desc).ToList()); //进一步搜索该实验报表中的来源barcode和目标barcode if (queryList != null) { foreach (var item in queryList) { item.indexNum = (countNum++).ToString(); if (!string.IsNullOrEmpty(srcBarcode) && !string.IsNullOrEmpty(tagBarcode)) { var query = db.Queryable().Where(t => t.ExperimentId.Equals(item.ExperimentId) && t.SourceBarcode.Contains(srcBarcode) && t.TargetBarcode.Contains(tagBarcode)).ToList(); string sourceBarcodes = string.Empty; string targetBarcodes = string.Empty; if (query != null) { query = db.Queryable().Where(t => t.ExperimentId.Equals(item.ExperimentId)).ToList(); if (query != null) { List sourceList = new List(); List targetList = new List(); foreach (var m in query) { if (!sourceList.Contains(m.SourceBarcode)) { sourceList.Add(m.SourceBarcode); } if (!targetList.Contains(m.TargetBarcode)) { targetList.Add(m.TargetBarcode); } } sourceBarcodes = string.Format(",", sourceList); targetBarcodes = string.Format(",", targetList); } item.ExperimentName = (item.ExperimentName != null && (item.ExperimentName.Length > 0)) ? item.ExperimentName.Substring(0, item.ExperimentName.LastIndexOf('.')) : ""; item.SourceBarcodes = sourceBarcodes; item.TargetBarcodes = targetBarcodes; experimentModelsResult.Add(item); } } else if (!string.IsNullOrEmpty(srcBarcode) && string.IsNullOrEmpty(tagBarcode)) { var query = db.Queryable().Where(t => t.ExperimentId.Equals(item.ExperimentId) && t.SourceBarcode.Contains(srcBarcode)).ToList(); string sourceBarcodes = string.Empty; string targetBarcodes = string.Empty; if (query != null) { query = db.Queryable().Where(t => t.ExperimentId.Equals(item.ExperimentId)).ToList(); if (query != null) { List sourceList = new List(); List targetList = new List(); foreach (var m in query) { if (!sourceList.Contains(m.SourceBarcode)) { sourceList.Add(m.SourceBarcode); } if (!targetList.Contains(m.TargetBarcode)) { targetList.Add(m.TargetBarcode); } } sourceBarcodes = string.Format(",", sourceList); targetBarcodes = string.Format(",", targetList); } item.ExperimentName = (item.ExperimentName != null && (item.ExperimentName.Length > 0)) ? item.ExperimentName.Substring(0, item.ExperimentName.LastIndexOf('.')) : ""; item.SourceBarcodes = sourceBarcodes; item.TargetBarcodes = targetBarcodes; experimentModelsResult.Add(item); } } else if (string.IsNullOrEmpty(srcBarcode) && !string.IsNullOrEmpty(tagBarcode)) { var query = db.Queryable().Where(t => t.ExperimentId.Equals(item.ExperimentId) && t.TargetBarcode.Contains(tagBarcode)).ToList(); string sourceBarcodes = string.Empty; string targetBarcodes = string.Empty; if (query != null) { query = db.Queryable().Where(t => t.ExperimentId.Equals(item.ExperimentId)).ToList(); if (query != null) { List sourceList = new List(); List targetList = new List(); foreach (var m in query) { if (!sourceList.Contains(m.SourceBarcode)) { sourceList.Add(m.SourceBarcode); } if (!targetList.Contains(m.TargetBarcode)) { targetList.Add(m.TargetBarcode); } } sourceBarcodes = string.Format(",", sourceList); targetBarcodes = string.Format(",", targetList); } item.ExperimentName = (item.ExperimentName != null && (item.ExperimentName.Length > 0)) ? item.ExperimentName.Substring(0, item.ExperimentName.LastIndexOf('.')) : ""; item.SourceBarcodes = sourceBarcodes; item.TargetBarcodes = targetBarcodes; experimentModelsResult.Add(item); } } else if (string.IsNullOrEmpty(srcBarcode) && string.IsNullOrEmpty(tagBarcode)) { string sourceBarcodes = string.Empty; string targetBarcodes = string.Empty; var query = db.Queryable().Where(t => t.ExperimentId.Equals(item.ExperimentId)).ToList(); if (query != null) { List sourceList = new List(); List targetList = new List(); foreach (var m in query) { if (!sourceList.Contains(m.SourceBarcode) && m.SourceBarcode != null && m.SourceBarcode != string.Empty) { sourceList.Add(m.SourceBarcode); } if (!targetList.Contains(m.TargetBarcode)&&m.TargetBarcode!=null&&m.TargetBarcode!=string.Empty) { targetList.Add(m.TargetBarcode); } } sourceBarcodes = string.Join(",", sourceList); targetBarcodes = string.Join(",", targetList); } item.ExperimentName = (item.ExperimentName != null && (item.ExperimentName.Length > 0)) ? item.ExperimentName.Substring(0, item.ExperimentName.LastIndexOf('.')) : ""; item.SourceBarcodes = sourceBarcodes; item.TargetBarcodes = targetBarcodes; experimentModelsResult.Add(item); } } } } } return experimentModelsResult; } #endregion #region 根据实验Id 获取实验数据 /// /// 根据实验Id 获取实验数据 /// /// 实验Id /// 实验数据 public static ExperimentModel GetExperimentModelFromdb(string experimentid) { using (var db = GetInstance()) { return db.Queryable().Single(it => it.ExperimentId.Equals(experimentid)); } } #endregion } }