using System; using System.Collections.Generic; using System.Linq; using System.Web; using Warehouse.DAL.StockIn; using Warehouse.Models.whMS; using Z.EntityFramework.Plus; using Warehouse.DAL.ReturnStock; namespace Warehouse.DAL.DelContainer { public class DelContainerMSDal { //托盘信息 public IEnumerable QueryStockInfoByPallet(string Pallet) { using (var context = new whMSModel()) { var res = from a in context.tcontainerpallets from b in context.tstockinlogs.Where(b => b.palletno == a.palletno).DefaultIfEmpty() from c in context.tstoragelocations.Where(c => c.id == b.storagelocationid).DefaultIfEmpty() where (b.id == context.tstockinlogs.Where(d => d.palletno == a.palletno).Max(d => d.id) && a.palletno == Pallet) select new { container = a.containerno, a.palletno, palletstatus = a.status, location = c.locationname ?? "", stockintime = (DateTime?)b.createtime, stockinstatus = b.status }; if (res != null) { return res.ToList(); } else { return null; } } } //柜号信息 public IEnumerable QueryStockInfoByContianer(string Container) { using (var context = new whMSModel()) { var res = from a in context.tcontainerpallets from b in context.tstockinlogs.Where(b => b.palletno == a.palletno).DefaultIfEmpty() from c in context.tstoragelocations.Where(c => c.id == b.storagelocationid).DefaultIfEmpty() where (b.id == context.tstockinlogs.Where(d => d.palletno == a.palletno).Max(d => d.id) && a.containerno == Container) select new { container = a.containerno, a.palletno, palletstatus = a.status, location = c.locationname ?? "", stockintime = (DateTime?)b.createtime, stockinstatus = b.status }; if (res != null) { return res.ToList(); } else { return null; } } } //删除托盘 public void DelPallet(string Pallet) { using (var context = new whMSModel()) { //删除托盘 var ContainerPallets= context.tcontainerpallets.Where(a => a.palletno == Pallet); var Container = ContainerPallets.FirstOrDefault().containerno; ContainerPallets.Delete(); //柜号变成doing状态 //var res=context.tcontainers.Join(context.tcontainerpallets, tcontainer => tcontainer.containerno, tcontainerpallet => tcontainerpallet.containerno, (tcontainer, tcontainerpallet) => new { ContainerStatus = tcontainer.state,PalletStatus=tcontainerpallet.status }).ToList(); //res.ForEach(x => { x.ContainerStatus = "doing context.tcontainers.Where(a => a.containerno == Container).Update(x => new tcontainer { state = "doing" }); context.tcontainerpallets.Where(a => a.containerno == Container).Update(x => new tcontainerpallet { status = "doing" }); //柜号是否删除 context.tcontainers.Where(a => context.tcontainerpallets.Any(b => b.containerno == Container)==false && a.containerno==Container).Delete(); //托盘入库记录状态设置为退库-1 var PalletStockInLog = context.tstockinlogs.Where(a => a.status==2 && a.id == context.tstockinlogs.Where(b => b.palletno == Pallet).Max(c => c.id)); if (PalletStockInLog.FirstOrDefault() != null) { int LocationId = PalletStockInLog.FirstOrDefault().storagelocationid; PalletStockInLog.Update(x => new tstockinlog() { status = -1 }); //退库日志 List ListReturnStockLog = new List(); ListReturnStockLog.Add(new treturnstocklog { pallet = Pallet, storagelocationid = LocationId, createtime = System.DateTime.Now, createuser = System.Web.HttpContext.Current.Request.Cookies["userid"].Value }); new ReturnStockMSDal().ReturnStockLog(ListReturnStockLog); //更新MES托盘状态为封箱状态1 new StockInMSDal().UpdatePalletStatus(1, Pallet); //库位条件是否清空 context.tlocationconditions.Where(a => context.tstockinlogs.Where(b => b.status == 2 && b.storagelocationid == LocationId).Any() == false && a.storagelocationid == LocationId).Update(x => new tlocationcondition { status = "N" }); } //删柜记录 add by xue lei on 2019-9-18 context.tdelcontainerlogs.Add(new tdelcontainerlog { container = Container, pallet = Pallet, createtime = System.DateTime.Now, createuser = System.Web.HttpContext.Current.Request.Cookies["userid"].Value }); context.SaveChanges(); } } } }