using IWareDataAccess.EF;
using IWareDataAccess.Entity.Order;
using IWareDataAccess.Entity.Task;
using IWareDataAccess.Helper;
using IWareDataAccess.Order.INORDER;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IWareDataAccess.Task.TASK
{
public class TaskRecodeFunc
{
///
/// 搜索表
///
///
///
///
public static List Search(TaskRecodeWebEntity webEntity, int page, int onePageNum, 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 == "createTimeStart")
{
f = f.And(x => x.CREATETIME > value);
}
if (i.Name == "createTimeEnd")
{
f = f.And(x => x.CREATETIME < value);
}
}
}
else
{
if (v != null)
{
f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
}
}
}
List list = edm.TASK_TASK.Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
return list;
}
}
///
/// 搜索视图
///
///
///
///
public static List SearchView(TaskRecodeWebEntity webEntity, int page, int onePageNum, 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 == "createTimeStart")
{
f = f.And(x => x.taskCreateTime > value);
}
if (i.Name == "createTimeEnd")
{
f = f.And(x => x.taskCreateTime < value);
}
}
}
else
{
if (v != null)
{
f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
}
}
}
List list = edm.View_TASK_RECORD.OrderByDescending(x=>x.createTime).Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
return list;
}
}
///
/// 搜索视图
///
///
///
///
public static int SearchViewNum(TaskRecodeWebEntity 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 == "createTimeStart")
{
f = f.And(x => x.taskCreateTime > value);
}
if (i.Name == "createTimeEnd")
{
f = f.And(x => x.taskCreateTime < value);
}
}
}
else
{
if (v != null)
{
f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
}
}
}
int num = edm.View_TASK_RECORD.Where(f.Compile()).Count();
return num;
}
}
///
/// 搜索视图(未绑定的入库单的)
///
///
///
///
public static List SearchViewNotInOrder(TaskRecodeWebEntity webEntity, int page, int onePageNum, out string msg)
{
msg = "";
using (Model edm = new Model())
{
var taskRecordList = edm.View_TASK_RECORD.Where(x => string.IsNullOrEmpty(x.inOrderCode));//排除已绑定入库单的
DateTime timeValue = DateTime.Now.AddDays(-15);//临时15天过期
taskRecordList = taskRecordList.Where(x => x.createTime > timeValue);//排除时间过久的
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 == "createTimeStart")
{
f = f.And(x => x.taskCreateTime > value);
}
if (i.Name == "createTimeEnd")
{
f = f.And(x => x.taskCreateTime < value);
}
}
}
else
{
if (v != null)
{
f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
}
}
}
List list = edm.View_TASK_RECORD.OrderByDescending(x => x.createTime).Where(f.Compile()).Skip((page - 1) * onePageNum).Take(onePageNum).ToList();
return list;
}
}
///
/// 搜索视图(未绑定的入库单的)
///
///
///
///
public static int SearchViewNotInOrderNum(TaskRecodeWebEntity webEntity)
{
using (Model edm = new Model())
{
var taskRecordList = edm.View_TASK_RECORD.Where(x => string.IsNullOrEmpty(x.inOrderCode));//排除已绑定入库单的
DateTime timeValue = DateTime.Now.AddDays(-15);//临时15天过期
taskRecordList = taskRecordList.Where(x => x.createTime > timeValue);//排除时间过久的
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 == "createTimeStart")
{
f = f.And(x => x.taskCreateTime > value);
}
if (i.Name == "createTimeEnd")
{
f = f.And(x => x.taskCreateTime < value);
}
}
}
else
{
if (v != null)
{
f = f.And(x => Object.Equals(Helper.Helper.GetFieldValueByName(x, i.Name), v));
}
}
}
int num = edm.View_TASK_RECORD.Where(f.Compile()).Count();
return num;
}
}
///
/// 更新(绑入库订单)
///
///
///
public static bool Update(TaskRecodeWebEntity webEntity, out string msg)
{
msg = "";
using (Model edm = new Model())
{
var task = edm.TASK_RECORD.FirstOrDefault(x => x.ID == webEntity.id);
if (task == null)
{
//无此角色
msg = "无此任务";
return false;
}
else
{
ORDER_INORDER order = edm.ORDER_INORDER.FirstOrDefault(x => x.INORDERCODE == webEntity.inOrderCode);
if (order != null)
{
task.INORDERID = order.ID;
}
else
{
task.INORDERID = null;//用于解绑
}
if (edm.SaveChanges() > 0)
{
//管理更新入库单状态
InOrderWebEntity inOrderWebEntity = new InOrderWebEntity();
inOrderWebEntity.inOrderCode = webEntity.inOrderCode;
bool result = InOrderSqlFunc.AddOrUpdate(inOrderWebEntity, out msg);
if (!result)
{
return result;
}
return true;
}
else
{
msg = "未修改一条数据";
return false;
}
}
}
}
///
/// 批量更新(绑入库订单)
///
///
///
public static bool UpdateList(List webEntityList,string inOrderCode, out string msg)
{
msg = "";
using (Model edm = new Model())
{
//初始化所属订单绑定
ORDER_INORDER order = edm.ORDER_INORDER.FirstOrDefault(x => x.INORDERCODE == inOrderCode);
if (order != null)
{
var taskRecordList = edm.TASK_RECORD.Where(x => x.INORDERID == order.ID).ToList();
foreach (var i in taskRecordList)
{
i.INORDERID = null;
}
}
else
{
msg = "未传入订单";
return false;
}
foreach (var webEntity in webEntityList)
{
var task = edm.TASK_RECORD.FirstOrDefault(x => x.ID == webEntity.id);
if (task == null)
{
//无此角色
msg = "无此任务";
return false;
}
else
{
task.INORDERID = order.ID;
}
}
if (edm.SaveChanges() > 0)
{
//管理更新入库单状态
InOrderWebEntity inOrderWebEntity = new InOrderWebEntity();
inOrderWebEntity.inOrderCode = inOrderCode;
bool result = InOrderSqlFunc.AddOrUpdate(inOrderWebEntity, out msg);
if (!result)
{
return result;
}
return true;
}
else
{
msg = "未修改一条数据";
return false;
}
}
}
///
/// 删除
///
///
///
public static bool Delete(TaskRecodeWebEntity webEntity, out string msg)
{
msg = "";
using (Model edm = new Model())
{
var task = edm.TASK_RECORD.FirstOrDefault(x => x.ID == webEntity.id);
if (task == null)
{
//无此角色
msg = "无此任务";
return false;
}
else
{
//edm.BASE_CONTAINER_VS_ITEM.Remove(cvi);
task.ENABLE = 0;
if (edm.SaveChanges() > 0)
{
return true;
}
else
{
msg = "保存失败";
return false;
}
}
}
}
}
}