using IWareDataAccess.EF;
using IWareDataAccess.Entity.Base;
using IWareDataAccess.Helper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IWareDataAccess.Base.ITEM
{
public static class ItemSqlFunc
{
///
/// 搜索表
///
///
///
///
public static List Search(ItemWebEntity webEntity, int page, int onePageNum)
{
using (Model edm = new Model())
{
var f = PredicateBuilder.True();
//便利所有属性
Type type = webEntity.GetType();
foreach (var i in type.GetProperties())
{
object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
if (i.PropertyType == typeof(String))
{
string value;
if (v != null)
{
value = v.ToString();
f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
}
}
else if (i.PropertyType == typeof(DateTime?))
{
if (v != null)
{
DateTime value = DateTime.Parse(v.ToString());
if (i.Name == "updateTimeStart")
{
f = f.And(x => x.UPDATETIME > value);
}
if (i.Name == "updateTimeEnd")
{
f = f.And(x => x.UPDATETIME < value);
}
}
}
else
{
if (v != null)
{
f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
}
}
}
List list = edm.BASE_ITEM.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
return list;
}
}
///
/// 搜索视图
///
///
///
///
public static List SearchView(ItemWebEntity webEntity, int page, int onePageNum)
{
using (Model edm = new Model())
{
var f = PredicateBuilder.True();
//便利所有属性
Type type = webEntity.GetType();
foreach (var i in type.GetProperties())
{
object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
if (i.PropertyType == typeof(String))
{
string value;
if (v != null)
{
value = v.ToString();
f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
}
}
else if (i.PropertyType == typeof(DateTime?))
{
if (v != null)
{
DateTime value = DateTime.Parse(v.ToString());
if (i.Name == "updateTimeStart")
{
f = f.And(x => x.updateTime > value);
}
if (i.Name == "updateTimeEnd")
{
f = f.And(x => x.updateTime < value);
}
}
}
else
{
if (v != null)
{
f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
}
}
}
List list = edm.View_BASE_ITEM.OrderByDescending(x => x.id).Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
return list;
}
}
public static List SearchAllView(ItemWebEntity webEntity)
{
using (Model edm = new Model())
{
var f = PredicateBuilder.True();
//便利所有属性
Type type = webEntity.GetType();
foreach (var i in type.GetProperties())
{
object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
if (i.PropertyType == typeof(String))
{
string value;
if (v != null)
{
value = v.ToString();
f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
}
}
else if (i.PropertyType == typeof(DateTime?))
{
if (v != null)
{
DateTime value = DateTime.Parse(v.ToString());
if (i.Name == "updateTimeStart")
{
f = f.And(x => x.updateTime > value);
}
if (i.Name == "updateTimeEnd")
{
f = f.And(x => x.updateTime < value);
}
}
}
else
{
if (v != null)
{
f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
}
}
}
List list = edm.View_BASE_ITEM.OrderByDescending(x => x.id).Where(f.Compile()).ToList();
return list;
}
}
///
/// 搜索视图数量
///
///
///
///
public static int SearchViewNum(ItemWebEntity webEntity, out string msg)
{
msg = "";
using (Model edm = new Model())
{
var f = PredicateBuilder.True();
//便利所有属性
Type type = webEntity.GetType();
foreach (var i in type.GetProperties())
{
object v = Helper.Helper.GetFieldValueByName(webEntity, i.Name);
if (i.PropertyType == typeof(String))
{
string value;
if (v != null)
{
value = v.ToString();
f = f.And(x => Helper.Helper.GetFieldValueByName(x, i.Name) != null ? Helper.Helper.GetFieldValueByName(x, i.Name).ToString().Contains(value) : false);
}
}
else if (i.PropertyType == typeof(DateTime?))
{
if (v != null)
{
DateTime value = DateTime.Parse(v.ToString());
if (i.Name == "updateTimeStart")
{
f = f.And(x => x.updateTime > value);
}
if (i.Name == "updateTimeEnd")
{
f = f.And(x => x.updateTime < value);
}
}
}
else
{
if (v != null)
{
f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
}
}
}
int num = edm.View_BASE_ITEM.Where(f.Compile()).Count();
return num;
}
}
///
/// 添加修改
///
///
///
public static bool AddOrUpdate(ItemWebEntity webEntity, out string msg)
{
msg = "";
using (Model edm = new Model())
{
//记录当前是否开启超限
int storageEnable = SearchStorageEnable(webEntity, out msg) ? 1 : 0;
//查询是否已存在此托盘
BASE_ITEM item = edm.BASE_ITEM.FirstOrDefault(x => x.ITEMNAME == webEntity.itemName);
if (item == null)
{
//无此库位,属于新建
item = new BASE_ITEM();
item.MAXSTORAGE = 0;
item.MINSTORAGE = 0;
item.OVERDUETIME = 0;
}
item.ITEMNAME = webEntity.itemName ?? item.ITEMNAME;
item.ITEMDES = webEntity.itemDes ?? item.ITEMDES;
item.ITEMTYPE = webEntity.itemType ?? item.ITEMTYPE;
item.WEIGHT = webEntity.weight ?? item.WEIGHT;
item.WEIGHTDIFFERENCE = webEntity.weightDifference ?? item.WEIGHTDIFFERENCE;
item.IMAGE = webEntity.image ?? item.IMAGE;
item.MAXNUM = webEntity.maxNum ?? item.MAXNUM;
item.ENABLE = webEntity.enable ?? item.ENABLE;
item.CREATELINE = webEntity.createLine ?? item.CREATELINE;
item.PRICE = webEntity.price ?? item.PRICE;
item.UNIT = webEntity.unit ?? item.UNIT;
item.USECONTAINERTYPE = webEntity.useContainerType ?? item.USECONTAINERTYPE;
item.MAXSTORAGE = webEntity.maxStorage ?? item.MAXSTORAGE;
item.MINSTORAGE = webEntity.minStorage ?? item.MINSTORAGE;
item.OVERDUETIME = webEntity.overDueTime ?? item.OVERDUETIME;
item.ISLOCK = webEntity.isLock ?? item.ISLOCK;
//item.STORAGEENABLE = webEntity.storageEnable ?? item.STORAGEENABLE;
item.STORAGEENABLE = storageEnable;
edm.BASE_ITEM.AddOrUpdateExtension(item);
if (edm.SaveChanges() > 0)
{
return true;
}
else
{
return false;
}
}
}
///
/// 删除
///
///
///
public static bool Delete(ItemWebEntity webDevice, out string msg)
{
msg = "";
using (Model edm = new Model())
{
//查询是否已存在
if (!string.IsNullOrEmpty(webDevice.itemName))
{
BASE_ITEM item = edm.BASE_ITEM.FirstOrDefault(x => x.ITEMNAME == webDevice.itemName);
if (item == null)
{
//无此零件
msg = "无此零件";
return false;
}
else
{
return DeleteContainerRelevance(item);
}
}
else
{
BASE_ITEM item = edm.BASE_ITEM.FirstOrDefault(x => x.ITEMNAME ==null|| x.ITEMNAME.Contains(""));
if (item == null)
{
//无此零件
msg = "无此零件";
return false;
}
else
{
return DeleteContainerRelevance(item);
}
}
}
}
///
/// 关联删除
///
///
///
public static bool DeleteContainerRelevance(BASE_ITEM container)
{
using (Model edm = new Model())
{
//因已释放连接,故重新指向数据库对象进行索引
BASE_ITEM containerDelete = edm.BASE_ITEM.FirstOrDefault(x => x.ITEMNAME == container.ITEMNAME);
containerDelete.ENABLE = 0;
if (edm.SaveChanges() > 0)
{
return true;
}
else
{
return false;
}
}
}
///
///单价以及最大最小库存导入
///
///
///
///
///
public static bool ImportItemInfo(List model, string userName, out string msg)
{
using (Model dbModel = new Model())
{
try
{
//记录当前是否开启超限
int storageEnable = SearchStorageEnable(model.FirstOrDefault(), out msg) ? 1 : 0;
msg = "";
List upitemlst = new List();
List itemnamelst = model.Select(x => x.itemName).ToList();
List itemlst = dbModel.BASE_ITEM.Where(x => itemnamelst.Contains(x.ITEMNAME)).ToList();
model.ForEach(x =>
{
if (!string.IsNullOrEmpty(x.itemName))
{
var itemn = itemlst.FirstOrDefault(y => y.ITEMNAME == x.itemName);
if (itemn != null)
{
itemn.PRICE = x.price ?? itemn.PRICE;
itemn.OVERDUETIME = x.overDueTime ?? itemn.OVERDUETIME;
itemn.MAXSTORAGE = x.maxStorage ?? itemn.MAXSTORAGE;
itemn.MINSTORAGE = x.minStorage ?? itemn.MINSTORAGE;
itemn.STORAGEENABLE = storageEnable;
upitemlst.Add(itemn);
}
else
{
BASE_ITEM item = new BASE_ITEM();
item.ITEMNAME = x.itemName ?? item.ITEMNAME;
item.ITEMDES = x.itemDes ?? item.ITEMDES;
item.ITEMTYPE = x.itemType ?? item.ITEMTYPE;
item.WEIGHT = x.weight ?? 0;
item.WEIGHTDIFFERENCE = x.weightDifference ?? item.WEIGHTDIFFERENCE;
item.MAXNUM = x.maxNum ?? 0;
item.ENABLE = 1;
item.CREATELINE = x.createLine;
item.PRICE = x.price ?? 0;
item.UNIT = x.unit;
item.USECONTAINERTYPE = x.useContainerType;
item.MAXSTORAGE = x.maxStorage ?? 0;
item.MINSTORAGE = x.minStorage ?? 0;
item.OVERDUETIME = x.overDueTime ?? 0;
item.STORAGEENABLE = storageEnable;
dbModel.BASE_ITEM.Add(item);
}
}
});
dbModel.SaveChanges();
return string.IsNullOrEmpty(msg);
}
catch (Exception ex)
{
msg = ex.Message;
return false;
}
}
}
///
/// 根据器具类型找对应所需可以装入的零件
///
///
///
///
///
public static List GetItemByContainerType(string itemName, string containerType, out string msg)
{
using (Model dbModel = new Model())
{
try
{
msg = "";
List upitemlst = new List();
if (!string.IsNullOrEmpty(containerType))
{
upitemlst = dbModel.View_BASE_ITEM.Where(x => x.useContainerType.Contains(containerType)).ToList();
}else
{
if (!string.IsNullOrEmpty(itemName))
{
upitemlst = dbModel.View_BASE_ITEM.OrderByDescending(x => x.id).Where(x => x.itemName.Contains(itemName)).Skip(0).Take(20).ToList();
}
else
{
upitemlst = dbModel.View_BASE_ITEM.OrderByDescending(x => x.id).Skip(0).Take(20).ToList();
}
}
return upitemlst;
}
catch (Exception ex)
{
msg = ex.Message;
return null;
}
}
}
///
/// 修改上下限功能是否开启
///
///
///
public static bool UpdateStorageEnable(ItemWebEntity webEntity, out string msg)
{
msg = "";
using (Model edm = new Model())
{
//查询是否已存在此托盘
List itemList = edm.BASE_ITEM.ToList();
foreach (var i in itemList)
{
i.STORAGEENABLE = webEntity.storageEnable;
}
if (edm.SaveChanges() > 0)
{
return true;
}
else
{
msg = "保存失败";
return false;
}
}
}
///
/// 搜索上下限功能是否开启
///
///
///
public static bool SearchStorageEnable(ItemWebEntity webEntity, out string msg)
{
msg = "";
using (Model edm = new Model())
{
//查询是否已存在此托盘
BASE_ITEM item = edm.BASE_ITEM.FirstOrDefault(x => x.STORAGEENABLE == 1);
if (item!=null)
{
return true;
}
else
{
return false;
}
}
}
///
/// 批量修改上限
///
///
///
public static bool UpdateMaxStorage(ItemWebEntity webEntity, out string msg)
{
msg = "";
using (Model edm = new Model())
{
//查询是否已存在此托盘
List itemList = edm.BASE_ITEM.ToList();
foreach (var i in itemList)
{
i.MAXSTORAGE = webEntity.maxStorage;
}
if (edm.SaveChanges() > 0)
{
return true;
}
else
{
msg = "保存失败";
return false;
}
}
}
///
/// 批量修改下限
///
///
///
public static bool UpdateMinStorage(ItemWebEntity webEntity, out string msg)
{
msg = "";
using (Model edm = new Model())
{
//查询是否已存在此托盘
List itemList = edm.BASE_ITEM.ToList();
foreach (var i in itemList)
{
i.MINSTORAGE = webEntity.minStorage;
}
if (edm.SaveChanges() > 0)
{
return true;
}
else
{
msg = "保存失败";
return false;
}
}
}
}
}