using NewPdaSqlServer.DB; using NewPdaSqlServer.Dto.service; using NewPdaSqlServer.entity; using SqlSugar; namespace NewPdaSqlServer.service.Warehouse; public class MesInvItemOutCDetailsManager : Repository { //当前类已经继承了 Repository 增、删、查、改的方法 //这里面写的代码不会给覆盖,如果要重新生成请删除 MesInvItemOutCDetailsManager.cs public MesInvItemOutCDetails GetOutList(WarehouseQuery query) { var mesInvItemBarcodes = Db.Queryable() .Where(s => s.ItemBarcode == query.barcode).Count(); if (mesInvItemBarcodes <= 0) throw new Exception("条码不存在"); var mesInvItemOutCDetails = Db.Queryable() .Where(s => s.ItemBarcode == query.barcode && s.Receive == false) .Count(); if (mesInvItemOutCDetails <= 0) throw new Exception("条码不符合接收条件,请检查!"); var entity = Db .Queryable( (a, b, c) => new JoinQueryInfos(JoinType.Left, a.ItemOutId == b.Guid, JoinType.Left, a.ItemNo == c.ItemNo)) .Where((a, b, c) => a.ItemBarcode == query.barcode) .Select((a, b, c) => new MesInvItemOutCDetails { PbillNo = b.ItemOutNo, WorkNo = a.WorkNo, ItemNo = a.ItemNo, ItemName = c.ItemName, Quantity = a.Quantity }).First(); if (entity == null) throw new Exception("出库条码" + query.barcode + " 不存在,请确认!"); return entity; } public MaterialReceipt GetFormList(WarehouseQuery query) { var mesInvItemBarcodes = Db.Queryable() .Where(s => s.ItemBarcode == query.barcode).Count(); if (mesInvItemBarcodes <= 0) throw new Exception("条码不存在"); var mesInvItemOutCDetails = Db.Queryable() .Where(s => s.ItemBarcode == query.barcode).First(); var entity = new MaterialReceipt { InvItemoutCDetails = GetMesInvItemOutCDetails(mesInvItemOutCDetails.PbillNo), ItemOuts = GetMesInvItemOuts(mesInvItemOutCDetails.PbillNo) }; return entity; } public MesInvItemOutCDetails confirmReceipt(WarehouseQuery query) { if (string.IsNullOrWhiteSpace(query.barcode)) throw new Exception("请扫出库条码!"); if (string.IsNullOrWhiteSpace(query.billNo)) throw new Exception("出库单据不能为空!"); var barcodeInfo = GetBarcodeInfo(query.barcode); if (barcodeInfo.Receive.Value) throw new Exception("此条码已经接收,请检查!"); UseTransaction(db => { var count = db.Updateable() .SetColumns(s => s.Receive == true) .Where(s => s.ItemBarcode == barcodeInfo.ItemBarcode) .ExecuteCommand(); return 1; }); return barcodeInfo; } public List GetMesInvItemOutCDetails(string billno) { return Db.Queryable() .Where(s => s.PbillNo == billno).ToList(); } public MesInvItemOuts GetMesInvItemOuts(string billno) { return Db.Queryable() .Where(a => a.ItemOutNo == billno).Single(); } private MesInvItemOutCDetails GetBarcodeInfo(string itemBarcode) { // Get barcode information return Db.Queryable() .First(b => b.ItemBarcode == itemBarcode); } }