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
}
}