Files
kunshan-bzfm-mes-backend/DOAN.Service/MES/Material/MaterialPartsInventoryService.cs
qianhao.xu e14f34a107 线边库
2025-03-18 15:23:00 +08:00

201 lines
8.2 KiB
C#

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
{
/// <summary>
/// 库存信息表Service业务层处理
/// </summary>
[AppService(ServiceType = typeof(IMaterialPartsInventoryService), ServiceLifetime = LifeTime.Transient)]
public class MaterialPartsInventoryService : BaseService<MaterialPartsInventory>, IMaterialPartsInventoryService
{
/// <summary>
/// 查询库存信息表列表
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
public PagedInfo<MaterialPartsInventoryDto2> GetList(MaterialPartsInventoryQueryDto parm)
{
/*int[] LocationIdArray = null;
if (!string.IsNullOrEmpty(parm.locationCode))
{
LocationIdArray= Context.Queryable<MaterialPartsStorageLocations>().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<MaterialSpareParts>()
.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<MaterialSpareParts>()
.Where(it => it.PartName.Contains(parm.partName) )
.Select(it => it.PartId).ToArray();
}else if (!string.IsNullOrEmpty(parm.partCode))
{
PartIdArray = Context.Queryable<MaterialSpareParts>()
.Where(it => it.PartCode.Contains(parm.partCode))
.Select(it => it.PartId).ToArray();
}*/
var result= Queryable().LeftJoin<MaterialSpareParts>((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;
}
/// <summary>
/// 获取详情
/// </summary>
/// <param name="InventoryId"></param>
/// <returns></returns>
public MaterialPartsInventory GetInfo(int InventoryId)
{
var response = Queryable()
.Where(x => x.InventoryId == InventoryId)
.First();
return response;
}
/// <summary>
/// 添加库存信息表
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public MaterialPartsInventory AddMaterialPartsInventory(MaterialPartsInventory model)
{
return Context.Insertable(model).ExecuteReturnEntity();
}
/// <summary>
/// 修改库存信息表
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
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);
}
/// <summary>
/// 入库
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
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<MaterialPartsInventory>()
.Where(it => it.PartId == parm.PartId && it.Location == parm.Location).Any();
if (isExist)
{
MaterialPartsTransactions.Remarks = "有库存入库";
Context.Insertable(MaterialPartsTransactions).ExecuteCommand();
return Context.Updateable<MaterialPartsInventory>()
.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;
}
}
/// <summary>
/// 出库
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
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<MaterialPartsInventory>()
.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<MaterialPartsInventory>()
.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;
}
}
}