using System; using SqlSugar; using Infrastructure.Attribute; using Infrastructure.Extensions; using DOAN.Model; using DOAN.Model.Dto; using DOAN.Repository; using DOAN.Model.MES.material.Dto; using DOAN.Model.MES.material; using System.Linq; using DOAN.Service.MES.material.IService; namespace DOAN.Service.MES.material { /// /// 库存信息表Service业务层处理 /// [AppService(ServiceType = typeof(IMaterialPartsInventoryService), ServiceLifetime = LifeTime.Transient)] public class MaterialPartsInventoryService : BaseService, IMaterialPartsInventoryService { /// /// 查询库存信息表列表 /// /// /// public PagedInfo GetList(MaterialPartsInventoryQueryDto parm) { /*int[] LocationIdArray = null; if (!string.IsNullOrEmpty(parm.locationCode)) { LocationIdArray= Context.Queryable().Where(it => it.LocationCode == parm.locationCode) .Select(it => it.LocationId).ToArray(); } int[] PartIdArray =null; if (!string.IsNullOrEmpty(parm.partName) && !string.IsNullOrEmpty(parm.partCode)) { PartIdArray = Context.Queryable() .Where(it => it.PartName.Contains(parm.partName) && it.PartCode.Contains(parm.partCode)) .Select(it => it.PartId).ToArray(); }else if (!string.IsNullOrEmpty(parm.partName)) { PartIdArray = Context.Queryable() .Where(it => it.PartName.Contains(parm.partName) ) .Select(it => it.PartId).ToArray(); }else if (!string.IsNullOrEmpty(parm.partCode)) { PartIdArray = Context.Queryable() .Where(it => it.PartCode.Contains(parm.partCode)) .Select(it => it.PartId).ToArray(); }*/ var result= Queryable().LeftJoin((r, s) => r.PartId == s.PartId) .WhereIF(!string.IsNullOrEmpty(parm.locationCode), (r, s) => r.Location.Contains(parm.locationCode) ) .WhereIF(!string.IsNullOrEmpty(parm.partName), (r, s) => s.PartName.Contains(parm.partName)) .WhereIF(!string.IsNullOrEmpty(parm.partCode), (r, s) => s.PartCode.Contains(parm.partCode)) .Select((r, s) => new MaterialPartsInventoryDto2(), true) .ToPage_NO_Convert(parm); return result; } /// /// 获取详情 /// /// /// public MaterialPartsInventory GetInfo(int InventoryId) { var response = Queryable() .Where(x => x.InventoryId == InventoryId) .First(); return response; } /// /// 添加库存信息表 /// /// /// public MaterialPartsInventory AddMaterialPartsInventory(MaterialPartsInventory model) { return Context.Insertable(model).ExecuteReturnEntity(); } /// /// 修改库存信息表 /// /// /// public int UpdateMaterialPartsInventory(MaterialPartsInventory model) { //var response = Update(w => w.InventoryId == model.InventoryId, it => new MaterialPartsInventory() //{ // Quantity = model.Quantity, // Location = model.Location, // LastInventoryCheck = model.LastInventoryCheck, // CreatedAt = model.CreatedAt, // UpdatedAt = model.UpdatedAt, //}); //return response; return Update(model, true); } /// /// 入库 /// /// /// public bool EntryInventory(MaterialPartsInventoryDto parm,string admin,int SupplierId) { MaterialPartsTransactions MaterialPartsTransactions = new MaterialPartsTransactions(); MaterialPartsTransactions.PartId= parm.PartId; MaterialPartsTransactions.TransactionType = "入库"; MaterialPartsTransactions.Quantity = parm.Quantity; MaterialPartsTransactions.TransactionDate = DateTime.Now; MaterialPartsTransactions.CreatedBy = admin; MaterialPartsTransactions.SupplierId = SupplierId; //要么新增,要么修改 bool isExist = Context.Queryable() .Where(it => it.PartId == parm.PartId && it.Location == parm.Location).Any(); if (isExist) { MaterialPartsTransactions.Remarks = "有库存入库"; Context.Insertable(MaterialPartsTransactions).ExecuteCommand(); return Context.Updateable() .SetColumns(it=>it.Quantity==it.Quantity+parm.Quantity) .SetColumns(it=>it.UpdatedAt==DateTime.Now) .Where(it=>it.PartId==parm.PartId&&it.Location==parm.Location) .ExecuteCommand()>0; } else { MaterialPartsTransactions.Remarks = "无库存入库"; Context.Insertable(MaterialPartsTransactions).ExecuteCommand(); MaterialPartsInventory inventory = new MaterialPartsInventory { PartId = parm.PartId, Quantity = parm.Quantity, Location = parm.Location, CreatedAt = DateTime.Now, }; return Context.Insertable(inventory).ExecuteCommand()>0; } } /// /// 出库 /// /// /// public bool OutInventory(MaterialPartsInventoryDto parm,string admin) { MaterialPartsTransactions MaterialPartsTransactions = new MaterialPartsTransactions(); MaterialPartsTransactions.PartId= parm.PartId; MaterialPartsTransactions.TransactionType = "出库"; MaterialPartsTransactions.Quantity = parm.Quantity; MaterialPartsTransactions.TransactionDate = DateTime.Now; MaterialPartsTransactions.CreatedBy = admin; Context.Insertable(MaterialPartsTransactions).ExecuteCommand(); return Context.Updateable() .SetColumns(it=>it.Quantity==it.Quantity-parm.Quantity) .SetColumns(it=>it.UpdatedAt==DateTime.Now) .Where(it=>it.PartId==parm.PartId&&it.Location==parm.Location) .ExecuteCommand()>0; } public bool CheckInventory(MaterialPartsInventoryDto parm,string admin) { MaterialPartsTransactions MaterialPartsTransactions = new MaterialPartsTransactions(); MaterialPartsTransactions.PartId= parm.PartId; MaterialPartsTransactions.TransactionType = "盘点"; MaterialPartsTransactions.Quantity = parm.Quantity; MaterialPartsTransactions.TransactionDate = DateTime.Now; MaterialPartsTransactions.CreatedBy = admin; Context.Insertable(MaterialPartsTransactions).ExecuteCommand(); return Context.Updateable() .SetColumns(it=>it.Quantity==parm.Quantity) .SetColumns(it=>it.UpdatedAt==DateTime.Now) .SetColumns(it=>it.LastInventoryCheck==DateTime.Now) .Where(it=>it.PartId==parm.PartId&&it.Location==parm.Location) .ExecuteCommand()>0; } } }