using FineUIPro;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
namespace BLL
{
public static class TwMaterialstockService
{
#region 获取列表
///
/// 记录数
///
public static int Count
{
get;
set;
}
public static List GetTw_MaterialStockByModle(Model.Tw_MaterialStockOutput table)
{
using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
{
var q = from x in db.Tw_MaterialStock
join mat in db.HJGL_MaterialCodeLib on x.PipeLineMatCode equals mat.MaterialCode into mm
from mat in mm.DefaultIfEmpty()
where
(string.IsNullOrEmpty(table.Id) || x.Id.Contains(table.Id)) &&
(string.IsNullOrEmpty(table.WarehouseCode) || x.WarehouseCode.Contains(table.WarehouseCode)) &&
(string.IsNullOrEmpty(table.PipeLineMatCode) || x.PipeLineMatCode.Contains(table.PipeLineMatCode)) &&
(string.IsNullOrEmpty(table.MaterialUnit) || mat.MaterialUnit.Contains(table.MaterialUnit)) &&
(string.IsNullOrEmpty(table.ProjectId) || x.ProjectId.Contains(table.ProjectId))
select new Model.Tw_MaterialStockOutput
{
Id = x.Id,
WarehouseCode = x.WarehouseCode,
PipeLineMatCode = x.PipeLineMatCode,
StockNum = x.StockNum,
ProjectId = x.ProjectId,
MaterialName = mat.MaterialName,
MaterialSpec = mat.MaterialSpec,
MaterialUnit = mat.MaterialUnit,
MaterialDef = mat.MaterialDef
}
;
return q.ToList();
}
}
///
/// 获取分页列表
///
///
///
///
public static IEnumerable GetListData(Model.Tw_MaterialStockOutput table, Grid grid1)
{
var q = GetTw_MaterialStockByModle(table);
Count = q.Count();
if (Count == 0)
{
return null;
}
q = q.Skip(grid1.PageSize * grid1.PageIndex).Take(grid1.PageSize).ToList();
// q = SortConditionHelper.SortingAndPaging(q, Grid1.SortField, Grid1.SortDirection, Grid1.PageIndex, Grid1.PageSize);
return from x in q
select x;
}
#endregion
public static Model.Tw_MaterialStock GetTw_MaterialStockById(string Id)
{
return Funs.DB.Tw_MaterialStock.FirstOrDefault(x => x.Id == Id);
}
public static void AddTw_MaterialStock(Model.Tw_MaterialStock newtable)
{
Model.Tw_MaterialStock table = new Model.Tw_MaterialStock
{
Id = newtable.Id,
WarehouseCode = newtable.WarehouseCode,
PipeLineMatCode = newtable.PipeLineMatCode,
StockNum = newtable.StockNum,
ProjectId = newtable.ProjectId,
};
Funs.DB.Tw_MaterialStock.InsertOnSubmit(table);
Funs.DB.SubmitChanges();
}
public static void UpdateTw_MaterialStock(Model.Tw_MaterialStock newtable)
{
Model.Tw_MaterialStock table = Funs.DB.Tw_MaterialStock.FirstOrDefault(x => x.Id == newtable.Id);
if (table != null)
{
table.Id = newtable.Id;
table.WarehouseCode = newtable.WarehouseCode;
table.PipeLineMatCode = newtable.PipeLineMatCode;
table.StockNum = newtable.StockNum;
table.ProjectId = newtable.ProjectId;
Funs.DB.SubmitChanges();
}
}
public static void DeleteTw_MaterialStockById(string Id)
{
Model.Tw_MaterialStock table = Funs.DB.Tw_MaterialStock.FirstOrDefault(x => x.Id == Id);
if (table != null)
{
Funs.DB.Tw_MaterialStock.DeleteOnSubmit(table);
Funs.DB.SubmitChanges();
}
}
///
/// 根据项目编码,材料编码,仓库编码,数量增减库存
///
///
///
///
///
///
public static void UpdateStockNum(string ProjectId, string MaterialCode, string WarehouseCode, TwConst.InOutType inOutType, decimal? StockNum)
{
Model.Tw_MaterialStock table = Funs.DB.Tw_MaterialStock.FirstOrDefault(x => x.ProjectId == ProjectId && x.PipeLineMatCode == MaterialCode && x.WarehouseCode == WarehouseCode);
//如果是入库,则库存数量加上,如果是出库,则库存数量减去
if (inOutType == TwConst.InOutType.出库)
{
StockNum = -StockNum;//出库,库存数量减去
}
if (table != null)
{
table.StockNum = table.StockNum ?? 0;
table.StockNum += StockNum;
Funs.DB.SubmitChanges();
}
else
{
Model.Tw_MaterialStock newtable = new Model.Tw_MaterialStock
{
Id = Guid.NewGuid().ToString(),
ProjectId = ProjectId,
PipeLineMatCode = MaterialCode,
WarehouseCode = WarehouseCode,
StockNum = StockNum ?? 0,
};
Funs.DB.Tw_MaterialStock.InsertOnSubmit(newtable);
Funs.DB.SubmitChanges();
}
}
}
}