using DOAN.Repository;
using System.Linq;
using System.Runtime.InteropServices.JavaScript;
using DOAN.Model;
using DOAN.Model.MES.mm;
using DOAN.Model.MES.mm.Dto;
using DOAN.Service.MES.mm.IService;
using Infrastructure.Attribute;
using Mapster;
namespace DOAN.Service.MES.mm
{
///
/// 线边库出入库日志Service业务层处理
///
[AppService(ServiceType = typeof(IMmLinesidebarInventoryCheckService), ServiceLifetime = LifeTime.Transient)]
public class MmLinesidebarInventoryCheckServcie : BaseService,
IMmLinesidebarInventoryCheckService
{
///
/// 查询线边库库存列表
///
///
///
public PagedInfo GetList(MmInventoryCheckLogQueryDto parm)
{
DateTime SearchDate = DateTime.Today;
// 1 查询这个日期 是否存在盘点记录 ,存在直接查询 ,不存在 ,先生成 再查询
bool isExist = Context.Queryable()
.Where(it => it.CreatedTime > SearchDate && it.CreatedTime <= SearchDate.AddDays(1)).Any();
if (!isExist)
{
List newMmInventoryCheckLogList = Context.Queryable()
.Where(it => it.CreatedTime >= SearchDate)
.Where(it => it.CreatedTime <= SearchDate.AddDays(1)).ToList()
.Adapt>();
if (newMmInventoryCheckLogList.Count() > 0)
{
foreach (var item in newMmInventoryCheckLogList)
{
item.Id = XueHua;
item.CreatedTime = DateTime.Now;
item.IsCorrecting = 0;
}
}
Context.Insertable(newMmInventoryCheckLogList).ExecuteCommand();
}
var predicate = Expressionable.Create()
.AndIF(!string.IsNullOrEmpty(parm.LineCode), it => it.LineCode == parm.LineCode)
.AndIF(SearchDate > DateTime.MinValue,
it => it.CreatedTime >= SearchDate && it.CreatedTime <= SearchDate.AddDays(1))
;
var response = Queryable()
.Where(predicate.ToExpression())
.ToPage(parm);
return response;
}
///
/// 校正
///
///
///
public bool Correcting(string id)
{
bool result = false;
UseTran2(() =>
{
Context.Updateable().Where(it => it.LineCode == id)
.SetColumns(it => it.IsCorrecting == 1)
.ExecuteCommand();
result = Context.Updateable().Where(it =>
it.LineCode == SqlFunc.Subqueryable().Where(it => it.Id == id)
.Select(it => it.LineCode))
.Where(it => it.MaterialCode == SqlFunc.Subqueryable()
.Where(it => it.Id == id)
.Select(it => it.MaterialCode))
.SetColumns(it => it.LogicQuantity == SqlFunc.Subqueryable()
.Where(it => it.Id == id).Select(it => it.ActualQuantity))
.ExecuteCommandHasChange();
});
return result;
}
public int UpdateMmInventoryCheckLog(MmInventoryCheckLog model)
{
return Update(model, true);
}
}
}