using DataEntity;
using DataRWDAL.Base;
using SqlSugar;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Dynamic;
using System.Linq;
using System.Reflection;
using XImagingXhandler.XDAL;
using static System.Net.WebRequestMethods;
namespace DataRWDAL
{
///
/// 台面板位库表操作类
///
public class LatticeDB : BaseDB
{
#region 查询返回台面板位数据集 by 设备型号名
///
/// 查询返回台面板位数据集 by 设备型号名
///
/// 设备型号名
/// 台面板位数据集
public static List GetLatticeDataFromdb(string deviceNumber)
{
List lattices = new List();
using (var db = GetInstance())
{
// 多表查询
var query = db.Queryable
(
(st, sc) =>
new JoinQueryInfos(JoinType.Left, st.software_information_id == sc.software_information_id)
)
.Where((st, sc) => sc.software_device_number == deviceNumber&&st.lattice_state.Equals(1));
var result =query.ToList(); // 转换为List
foreach (Lattice lattice in result)
{
var filterQuery = db.Queryable().Where(x => x.lattice_id.Equals(System.Convert.ToInt32(lattice.lattice_id)));
if (filterQuery != null && filterQuery.Count() > 0)
{
}
else
{
lattices.Add(lattice);
}
}
if (lattices != null && lattices.Count > 0)
{
var a = lattices[lattices.Count - 1];
if (a.lattice_num.Equals("P0"))
{
lattices.RemoveAt(lattices.Count - 1);
lattices.Insert(0, a);
}
}
return lattices;//db.Queryable((st, sc) => st.software_information_id == sc.software_information_id && sc.software_device_number == deviceNumber).ToList();
}
}
#endregion
#region 查询返回台面板位数据集 by 设备型号名、设备臂Id
///
/// 查询返回台面板位数据集 by 设备型号名
///
/// 设备型号名
/// 设备臂Id
/// 是否是构建台面用的板位:0: 不是;1:是
/// 台面板位数据集
public static List GetLatticeDataFromdb(string deviceNumber, int device_arm_id,int isbaselattice=1)
{
List lattices= new List();
using (var db = GetInstance())
{
// 多表查询
var query = db.Queryable
(
(st, sc) =>
new JoinQueryInfos(JoinType.Left, st.software_information_id == sc.software_information_id)
)
.Where((st, sc) => sc.software_device_number == deviceNumber && st.device_arm_id == device_arm_id&&st.lattice_state.Equals(1));//.OrderBy(st=>st.lattice_num,OrderByType.Asc);
var result =query.ToList();
foreach (Lattice lattice in result)
{
var filterQuery = db.Queryable().Where(x => x.lattice_id.Equals(System.Convert.ToInt32(lattice.lattice_id)));
if (filterQuery != null && filterQuery.Count() > 0)
{
if(isbaselattice==0) //非出厂台面
{
lattices.Add(lattice);
}
else if(isbaselattice==1)
{
lattices.Add(lattice);
}
}
else
{
lattices.Add(lattice); //出厂默认台面
}
}
if (lattices != null && lattices.Count > 0)
{
var a = lattices[lattices.Count - 1];
if (a.lattice_num.Equals("P0"))//把P0移动到第一个
{
lattices.RemoveAt(lattices.Count - 1);
lattices.Insert(0, a);
}
}
Lattice lat = new Lattice();
lat.lattice_id = "0";
lat.lattice_num = "请选择";
lattices.Insert(0,lat);
return lattices;
}
}
#endregion
#region 只查询出板位的编号名,提供给该设备下的夹爪使用
///
/// 只查询出板位的编号名,提供给该设备下的夹爪使用
///
/// 设备型号
/// 夹爪臂Id
/// 主通道臂Id
///
public static List GetGripperLatticeNumDataFromdb(string deviceNumber, int mainChannelArmId)
{
List lattices = new List();
using (var db = GetInstance())
{
// 多表查询
var query = db.Queryable
(
(st, sc) =>
new JoinQueryInfos(JoinType.Left, st.software_information_id == sc.software_information_id)
)
.Where((st, sc) => sc.software_device_number == deviceNumber && st.device_arm_id == mainChannelArmId && st.lattice_state.Equals(1));
var result = query.ToList();
foreach (Lattice lattice in result)
{
lattice.lattice_id = "";
var filterQuery = db.Queryable().Where(x => x.lattice_id.Equals(System.Convert.ToInt32(lattice.lattice_id)));
if (filterQuery != null && filterQuery.Count() > 0)
{
lattices.Add(lattice); //非出厂台面
}
else
{
lattices.Add(lattice); //出厂默认台面
}
}
if (lattices != null && lattices.Count > 0)
{
var a = lattices[lattices.Count - 1];
if (a.lattice_num.Equals("P0"))//把P0移动到第一个
{
lattices.RemoveAt(lattices.Count - 1);
lattices.Insert(0, a);
}
}
Lattice lat = new Lattice();
lat.lattice_id = "0";
lat.lattice_num = "请选择";
lattices.Insert(0, lat);
return lattices;
}
return lattices;
}
#endregion
#region 查询返回台面板位数据集 by 设备型号名、设备臂Id
///
/// 查询返回台面板位数据集 by 设备型号名
///
/// 台面模板Id
/// 台面板位数据集
public static List GetLatticeDataByTabletopTemplateFromdb(string tabletopid)
{
using (var db = GetInstance())
{
// 多表查询
var query = db.Queryable
(
(st, sc) =>
new JoinQueryInfos(JoinType.Left, st.lattice_id == sc.lattice_id.ToString())
)
.Where((st, sc) => sc.tabletopid == tabletopid&&st.lattice_state.Equals(1));
var result = query.OrderBy("lattice_id").ToList();
if (result != null && result.Count > 0)
{
var a = result[result.Count - 1];
if (a.lattice_num.Equals("P0"))//把P0移动到第一个
{
result.RemoveAt(result.Count - 1);
result.Insert(0, a);
}
}
Lattice lat = new Lattice();
lat.lattice_id = "0";
lat.lattice_num = "请选择";
result.Insert(0, lat);
return result;
}
}
#endregion
#region 查询返回台面板位数据 by 台面板位Id
///
/// 查询返回台面板位数据 by 台面板位Id
///
/// 台面板位Id
/// 台面板位数据
public static Lattice GetLatticeDataByIdFromdb(string latticeId)
{
using (var db = GetInstance())
{
return db.Queryable().Single(it => it.lattice_id.Equals(latticeId));
}
}
#endregion
#region 查询返回台面板位数据 by 台面板位号、设备臂Id、设备型号
///
/// 查询返回台面板位数据 by 台面板位号、设备臂Id、设备型号
///
/// 台面板位号
/// 设备臂Id
/// 设备型号
/// 台面模板Id
/// 台面板位数据
public static Lattice GetLatticeDataByIdFromdb(string latticeNum, int armId, string deviceNumber)
{
using (var db = GetInstance())
{
// 多表查询
var query = db.Queryable
(
(st, sc) =>
new JoinQueryInfos(JoinType.Left, st.software_information_id == sc.software_information_id)
)
.Where((st, sc) => sc.software_device_number == deviceNumber && st.device_arm_id == armId&&st.lattice_num.Equals(latticeNum)&&st.lattice_state.Equals(1)).ToList();
foreach(Lattice lattice in query)
{
var filterQuery = db.Queryable().Where(x => x.lattice_id.Equals(System.Convert.ToInt32(lattice.lattice_id)));
if(filterQuery!=null&&filterQuery.Count()>0)
{
}
else
{
return lattice;
}
}
return null;
}
}
#endregion
#region 查询返回台面板位数据集 by 设备臂Id、设备型号
///
/// 查询返回台面板位数据集 by 设备臂Id、设备型号
///
/// 设备臂Id
/// 设备型号
/// 台面板位数据
public static List GetTrashLatticeDataByIdFromdb(string armId, string deviceNumber)
{
int mid = System.Convert.ToInt32(armId);
using (var db = GetInstance())
{
// 多表查询
var query = db.Queryable
(
(st, sc) =>
new JoinQueryInfos(JoinType.Left, st.software_information_id == sc.software_information_id)
)
.Where((st, sc) => sc.software_device_number == deviceNumber && st.device_arm_id == mid && st.is_trash == 1);
return query.ToList();
}
}
#endregion
#region 修改台面板位数据 by 台面板位对象
///
/// 修改台面板位数据 by 台面板位对象
///
/// 台面板位对象
/// 1:成功;0:失败
public static int UpdateLatticeIntodb(Lattice lattice)
{
using (var db = GetInstance())
{
return db.Updateable(lattice).ExecuteCommand();
}
}
#endregion
#region 查询返回台面板位数据 by 台面板位号、设备臂Id、设备型号、台面模板Id
///
/// 查询返回台面板位数据 by 台面板位号、设备臂Id、设备型号、台面模板Id
///
/// 台面板位号
/// 设备臂Id
/// 设备型号
/// 台面模板id
/// 台面板位数据
public static Lattice GetLatticeDataByLatticeNumAndTempIdFromdb(string latticeNum, int armId, string deviceNumber,string tabletopid)
{
using (var db = GetInstance())
{
// 多表查询
//var query = db.Queryable
// (
// (st, sc) =>
// new JoinQueryInfos(JoinType.Left, st.software_information_id == sc.software_information_id)
// )
// .Where((st, sc) => sc.software_device_number == deviceNumber && st.device_arm_id == armId && st.lattice_num.Equals(latticeNum)).Single();
var query = db.Queryable("lattice", "t").AddJoinInfo("softwareinformation", "l", "t.software_information_id=l.software_information_id and l.software_device_number='"
+ deviceNumber + "'"
+ " and t.device_arm_id=" + armId.ToString() + ""
+ " and t.lattice_num='" + latticeNum + "'"
+ " and t.lattice_state=1", JoinType.Inner)
.AddJoinInfo("tabletoprellattice","tl", "t.lattice_id=tl.lattice_id and tl.tabletopid='" + tabletopid+"'", JoinType.Inner)
.Select("t.*");
if (query != null)
{
var a = query.ToList();
Lattice lattice = new Lattice();
foreach (ExpandoObject epo in a)
{
lattice = epo.ToEntity();
lattice.lattice_id= epo.ToArray().FirstOrDefault(x => x.Key.Equals("lattice_id")).Value.ToString();
}
var result = lattice;
return result;
}
return null;
}
}
#endregion
}
}