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); } } }