| | |
| | | using WMS.Entity.LogEntity; |
| | | using WMS.Entity.BllQualityEntity; |
| | | using WMS.Entity.BllAsnEntity; |
| | | using System.Threading.Tasks; |
| | | using Utility; |
| | | |
| | | namespace WMS.BLL.BllPdaServer |
| | | { |
| | |
| | | private static readonly SqlSugarScope Db = DataContext.Db; |
| | | |
| | | //验证托盘是否存在并是否可出库 |
| | | public string IsEnableOkPalletNo(string palletNo) |
| | | public async Task<string> IsEnableOkPalletNo(string palletNo) |
| | | { |
| | | try |
| | | { |
| | | string sqlMsg = ""; |
| | | var models = Db.Queryable<SysPallets>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).ToList(); |
| | | string sqlMsg = ""; |
| | | var models = await Db.Queryable<SysPallets>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).ToListAsync(); |
| | | |
| | | if (models.Count > 1) |
| | | { |
| | | sqlMsg = "-1:存在重复托盘号,请检查!"; |
| | | return sqlMsg; |
| | | } |
| | | if (models.Count > 0) |
| | | { |
| | | if (models[0].Status == "0") |
| | | { |
| | | sqlMsg = "-1:托盘号状态为未使用!"; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | sqlMsg = "-1:托盘号不存在!"; |
| | | } |
| | | |
| | | return sqlMsg; |
| | | } |
| | | catch (Exception ex) |
| | | if (models.Count > 1) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | throw Oops.Bah("-1:存在重复托盘号,请检查!"); |
| | | } |
| | | if (models.Count > 0) |
| | | { |
| | | if (models[0].Status == "0") |
| | | { |
| | | throw Oops.Bah("-1:托盘号状态为未使用!"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | throw Oops.Bah("-1:托盘号不存在!"); |
| | | } |
| | | |
| | | return sqlMsg; |
| | | } |
| | | |
| | | //获取托盘中含有的执行中的单据 |
| | | public List<string> GetRunSoNoticeList(string palletNo, string type) |
| | | public async Task<List<string>> GetRunSoNoticeList(string palletNo, string type) |
| | | { |
| | | try |
| | | if (string.IsNullOrWhiteSpace(palletNo))//判断托盘是否为空 |
| | | { |
| | | if (string.IsNullOrWhiteSpace(palletNo))//判断托盘是否为空 |
| | | { |
| | | throw new Exception("托盘码为空,请输入托盘码"); |
| | | } |
| | | var palletInfo = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo); |
| | | if (!string.IsNullOrEmpty(palletInfo.WareHouseNo) && type != "1") |
| | | { |
| | | throw new Exception("该托盘还未出库"); |
| | | } |
| | | if (type == "1")//平库出库获取单据 |
| | | { |
| | | var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.Status == "1" && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToList(); |
| | | return allotList; |
| | | } |
| | | //获取状态为待拣货或者部分拣货的出库单 |
| | | var allotList2 = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToList(); |
| | | |
| | | //var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToList(); |
| | | //获取出库单据不为待拣货 执行完毕 订单关闭 等待执行的单据 |
| | | //var export = Db.Queryable<BllExportNotice>().Where(a => a.IsDel == "0" && a.Status == "1" || a.Status == "2" || a.Status == "3").Select(a => a.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToList(); |
| | | |
| | | return allotList2; |
| | | throw Oops.Bah("托盘码为空,请输入托盘码"); |
| | | } |
| | | catch (Exception ex) |
| | | var palletInfo = await Db.Queryable<DataStockDetail>().FirstAsync(w => w.IsDel == "0" && w.PalletNo == palletNo); |
| | | if (!string.IsNullOrEmpty(palletInfo.WareHouseNo) && type != "1") |
| | | { |
| | | throw new Exception(ex.Message); |
| | | throw Oops.Bah("该托盘还未出库"); |
| | | } |
| | | if (type == "1")//平库出库获取单据 |
| | | { |
| | | var allotList = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.Status == "1" && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToListAsync(); |
| | | return allotList; |
| | | } |
| | | //获取状态为待拣货或者部分拣货的出库单 |
| | | var allotList2 = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToListAsync(); |
| | | |
| | | //var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).Select(m => m.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToList(); |
| | | //获取出库单据不为待拣货 执行完毕 订单关闭 等待执行的单据 |
| | | //var export = Db.Queryable<BllExportNotice>().Where(a => a.IsDel == "0" && a.Status == "1" || a.Status == "2" || a.Status == "3").Select(a => a.SONo).Distinct().Where(m => !string.IsNullOrWhiteSpace(m)).ToList(); |
| | | |
| | | return allotList2; |
| | | } |
| | | |
| | | //获取出库托盘上的物料批次(根据托盘码) |
| | | public List<DetailIdSkuLotNo> GetSoSkuLotNoListByPallet(string palletNo, string soNo) |
| | | public async Task<List<DetailIdSkuLotNo>> GetSoSkuLotNoListByPallet(string palletNo, string soNo) |
| | | { |
| | | try |
| | | if (string.IsNullOrWhiteSpace(palletNo))//判断托盘是否为空 |
| | | { |
| | | if (string.IsNullOrWhiteSpace(palletNo))//判断托盘是否为空 |
| | | { |
| | | throw new Exception("托盘码为空,请输入托盘码"); |
| | | } |
| | | //获取状态为待拣货或者部分拣货的出库单 |
| | | var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.PalletNo == palletNo); |
| | | //var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SONo == soNo && m.Status != "4" && m.Status != "5"); |
| | | if (!string.IsNullOrWhiteSpace(soNo)) |
| | | { |
| | | allotList = allotList.Where(m => m.SONo == soNo); |
| | | } |
| | | |
| | | var list = allotList.GroupBy(m => new { m.SODetailNo, m.PalletNo, m.SkuNo, m.SkuName, m.LotNo }).Select(m => new DetailIdSkuLotNo() |
| | | { |
| | | SoDetailId = m.SODetailNo, |
| | | PalletNo = m.PalletNo, |
| | | SkuNo = m.SkuNo, |
| | | SkuName = m.SkuName, |
| | | LotNo = m.LotNo, |
| | | }).ToList(); |
| | | |
| | | return list; |
| | | throw Oops.Bah("托盘码为空,请输入托盘码"); |
| | | } |
| | | catch (Exception ex) |
| | | //获取状态为待拣货或者部分拣货的出库单 |
| | | var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.PalletNo == palletNo); |
| | | //var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SONo == soNo && m.Status != "4" && m.Status != "5"); |
| | | if (!string.IsNullOrWhiteSpace(soNo)) |
| | | { |
| | | throw new Exception(ex.Message); |
| | | allotList = allotList.Where(m => m.SONo == soNo); |
| | | } |
| | | |
| | | var list = await allotList.GroupBy(m => new { m.SODetailNo, m.PalletNo, m.SkuNo, m.SkuName, m.LotNo }).Select(m => new DetailIdSkuLotNo() |
| | | { |
| | | SoDetailId = m.SODetailNo, |
| | | PalletNo = m.PalletNo, |
| | | SkuNo = m.SkuNo, |
| | | SkuName = m.SkuName, |
| | | LotNo = m.LotNo, |
| | | }).ToListAsync(); |
| | | |
| | | return list; |
| | | } |
| | | |
| | | //获取出库口、规格、待拣及已拣数量(根据出库单明细ID、托盘号) |
| | | public OutPdaInfo GetOutlets(string soDetailId, string palletNo) |
| | | public async Task<OutPdaInfo> GetOutlets(string soDetailId, string palletNo) |
| | | { |
| | | try |
| | | var allotInfo = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo && (m.Status == "2" || m.Status == "3")).ToListAsync(); |
| | | if (allotInfo.Count == 0) |
| | | { |
| | | |
| | | var allotInfo = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo && (m.Status == "2" || m.Status == "3")).ToList(); |
| | | if (allotInfo.Count == 0) |
| | | { |
| | | throw new Exception($"{palletNo}托盘上未查询到分配信息,请核实"); |
| | | } |
| | | if (allotInfo.Count > 1) |
| | | { |
| | | throw new Exception($"{palletNo}托盘上存在多条相同的分配信息,请核实"); |
| | | } |
| | | var data = allotInfo.First(); |
| | | var data2 = new OutPdaInfo() |
| | | { |
| | | OutModel = data.OutMode, |
| | | Standard = data.Standard, |
| | | PickQty = data.Qty, |
| | | PickedQty = data.CompleteQty |
| | | }; |
| | | return data2; |
| | | throw Oops.Bah($"{palletNo}托盘上未查询到分配信息,请核实"); |
| | | } |
| | | catch (Exception e) |
| | | if (allotInfo.Count > 1) |
| | | { |
| | | throw new Exception(e.Message); |
| | | throw Oops.Bah($"{palletNo}托盘上存在多条相同的分配信息,请核实"); |
| | | } |
| | | var data = allotInfo.First(); |
| | | var data2 = new OutPdaInfo() |
| | | { |
| | | OutModel = data.OutMode, |
| | | Standard = data.Standard, |
| | | PickQty = data.Qty, |
| | | PickedQty = data.CompleteQty |
| | | }; |
| | | return data2; |
| | | } |
| | | |
| | | //获取出库单的计划数量和完成 |
| | | public OutPdaInfo GetPlanAndFinishQty(string soDetailId) |
| | | public async Task<OutPdaInfo> GetPlanAndFinishQty(string soDetailId) |
| | | { |
| | | try |
| | | var detail = await Db.Queryable<BllExportNoticeDetail>().FirstAsync(m => m.Id == int.Parse(soDetailId) && m.IsDel == "0"); |
| | | if (detail == null) |
| | | { |
| | | var detail = Db.Queryable<BllExportNoticeDetail>().First(m => m.Id == int.Parse(soDetailId) && m.IsDel == "0"); |
| | | if (detail == null) |
| | | { |
| | | throw new Exception("未查询到出库单的明细"); |
| | | } |
| | | var data = new OutPdaInfo() |
| | | { |
| | | PlanQty = detail.Qty, |
| | | FinishQty = detail.CompleteQty |
| | | }; |
| | | return data; |
| | | throw Oops.Bah("未查询到出库单的明细"); |
| | | } |
| | | catch (Exception e) |
| | | var data = new OutPdaInfo() |
| | | { |
| | | throw new Exception(e.Message); |
| | | } |
| | | PlanQty = detail.Qty, |
| | | FinishQty = detail.CompleteQty |
| | | }; |
| | | return data; |
| | | } |
| | | |
| | | //获取箱码信息(根据箱码在库存箱码明细中查询及拣货明细中拣货数量) |
| | | public List<Model.ModelDto.BoxInfo> GetDataComBoxInfo(string soDetailId, string palletNo, string boxNo, string boxNo3) |
| | | public async Task<List<BoxInfo>> GetDataComBoxInfo(string soDetailId, string palletNo, string boxNo, string boxNo3) |
| | | { |
| | | try |
| | | if (string.IsNullOrWhiteSpace(palletNo)) |
| | | { |
| | | if (string.IsNullOrWhiteSpace(palletNo)) |
| | | throw Oops.Bah("托盘号不能为空"); |
| | | } |
| | | Expression<Func<DataBoxInfo, bool>> item = Expressionable.Create<DataBoxInfo>() |
| | | .And(it => it.PalletNo == palletNo) |
| | | .AndIF(!string.IsNullOrWhiteSpace(boxNo), it => it.BoxNo == boxNo) |
| | | .AndIF(!string.IsNullOrWhiteSpace(boxNo3), it => it.BoxNo3 == boxNo3) |
| | | .And(m => m.IsDel == "0") |
| | | .ToExpression();//注意 这一句 不能少 |
| | | var info = Db.Queryable<DataBoxInfo>().Where(item); |
| | | if (info.Count() == 0) |
| | | { |
| | | throw Oops.Bah("未在库存中查询到信息"); |
| | | } |
| | | |
| | | var type = "0";//0:查箱码或支码不分组 1:查托盘分组 显示箱 |
| | | var list = new List<BoxInfo>(); |
| | | if (!string.IsNullOrWhiteSpace(boxNo3) || !string.IsNullOrWhiteSpace(boxNo))//判断支码是否为空 |
| | | { |
| | | foreach (var demo in await info.ToListAsync()) |
| | | { |
| | | throw new Exception("托盘号不能为空"); |
| | | } |
| | | Expression<Func<DataBoxInfo, bool>> item = Expressionable.Create<DataBoxInfo>() |
| | | .And(it => it.PalletNo == palletNo) |
| | | .AndIF(!string.IsNullOrWhiteSpace(boxNo), it => it.BoxNo == boxNo) |
| | | .AndIF(!string.IsNullOrWhiteSpace(boxNo3), it => it.BoxNo3 == boxNo3) |
| | | .And(m => m.IsDel == "0") |
| | | .ToExpression();//注意 这一句 不能少 |
| | | var info = Db.Queryable<DataBoxInfo>().Where(item); |
| | | if (info.Count() == 0) |
| | | { |
| | | throw new Exception("未在库存中查询到信息"); |
| | | var t = new BoxInfo() |
| | | { |
| | | BoxNo = demo.BoxNo3, |
| | | Qty = demo.Qty, |
| | | //SkuNo = demo.SkuNo, |
| | | //SkuName = demo.SkuName, |
| | | //LotNo = demo.LotNo, |
| | | }; |
| | | list.Add(t); |
| | | } |
| | | |
| | | var type = "0";//0:查箱码或支码不分组 1:查托盘分组 显示箱 |
| | | var list = new List<BoxInfo>(); |
| | | if (!string.IsNullOrWhiteSpace(boxNo3) || !string.IsNullOrWhiteSpace(boxNo))//判断支码是否为空 |
| | | } |
| | | else if (!string.IsNullOrWhiteSpace(palletNo)) |
| | | { |
| | | list = await info.GroupBy(m => new { m.BoxNo }).Select(it => new BoxInfo |
| | | { |
| | | foreach (var demo in info.ToList()) |
| | | BoxNo = it.BoxNo, |
| | | Qty = SqlFunc.AggregateSum(it.Qty) |
| | | }).ToListAsync(); |
| | | type = "1"; |
| | | } |
| | | if (!string.IsNullOrWhiteSpace(soDetailId)) |
| | | { |
| | | var allotInfos = await Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo && (m.Status == "2" || m.Status == "3")).ToListAsync(); |
| | | if (allotInfos.Count == 0) |
| | | { |
| | | throw Oops.Bah($"{palletNo}托盘上未查询到分配信息,请核实"); |
| | | } |
| | | if (allotInfos.Count > 1) |
| | | { |
| | | throw Oops.Bah($"{palletNo}托盘上存在多条相同的分配信息,请核实"); |
| | | } |
| | | var allotInfo = allotInfos.First(); |
| | | var comInfo = await Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allotInfo.Id).ToListAsync(); |
| | | if (comInfo.Count != 0) |
| | | { |
| | | if (type == "0") |
| | | { |
| | | var t = new BoxInfo() |
| | | foreach (var demo in list) |
| | | { |
| | | BoxNo = demo.BoxNo3, |
| | | Qty = demo.Qty, |
| | | //SkuNo = demo.SkuNo, |
| | | //SkuName = demo.SkuName, |
| | | //LotNo = demo.LotNo, |
| | | }; |
| | | list.Add(t); |
| | | } |
| | | //if (!string.IsNullOrWhiteSpace(boxNo3)) |
| | | //{ |
| | | // var com = comInfo.FirstOrDefault(m => m.IsDel == "0" && m.BoxNo3 == demo.BoxNo); |
| | | //} |
| | | //else if (!string.IsNullOrWhiteSpace(boxNo)) |
| | | //{ |
| | | // if (expr) |
| | | // { |
| | | |
| | | } |
| | | else if (!string.IsNullOrWhiteSpace(palletNo)) |
| | | { |
| | | list = info.GroupBy(m => new { m.BoxNo }).Select(it => new BoxInfo |
| | | { |
| | | BoxNo = it.BoxNo, |
| | | Qty = SqlFunc.AggregateSum(it.Qty) |
| | | }).ToList(); |
| | | type = "1"; |
| | | } |
| | | if (!string.IsNullOrWhiteSpace(soDetailId)) |
| | | { |
| | | var allotInfos = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo && (m.Status == "2" || m.Status == "3")).ToList(); |
| | | if (allotInfos.Count == 0) |
| | | { |
| | | throw new Exception($"{palletNo}托盘上未查询到分配信息,请核实"); |
| | | } |
| | | if (allotInfos.Count > 1) |
| | | { |
| | | throw new Exception($"{palletNo}托盘上存在多条相同的分配信息,请核实"); |
| | | } |
| | | var allotInfo = allotInfos.First(); |
| | | var comInfo = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allotInfo.Id).ToList(); |
| | | if (comInfo.Count != 0) |
| | | { |
| | | if (type == "0") |
| | | { |
| | | foreach (var demo in list) |
| | | // } |
| | | |
| | | //} |
| | | var com = comInfo.FirstOrDefault(m => m.IsDel == "0" && m.BoxNo3 != null && m.BoxNo3 == demo.BoxNo); |
| | | if (com != null) |
| | | { |
| | | //if (!string.IsNullOrWhiteSpace(boxNo3)) |
| | | //{ |
| | | // var com = comInfo.FirstOrDefault(m => m.IsDel == "0" && m.BoxNo3 == demo.BoxNo); |
| | | //} |
| | | //else if (!string.IsNullOrWhiteSpace(boxNo)) |
| | | //{ |
| | | // if (expr) |
| | | // { |
| | | |
| | | // } |
| | | |
| | | //} |
| | | var com = comInfo.FirstOrDefault(m => m.IsDel == "0" && m.BoxNo3 != null && m.BoxNo3 == demo.BoxNo); |
| | | if (com != null) |
| | | { |
| | | demo.PickedQty = com.CompleteQty; |
| | | } |
| | | } |
| | | } |
| | | if (type == "1") |
| | | { |
| | | var com = comInfo.Where(m => m.IsDel == "0").GroupBy(m => m.BoxNo).Select(it => new BoxInfo |
| | | { |
| | | BoxNo = it.Key, |
| | | PickedQty = it.Sum(a => a.CompleteQty) |
| | | }).ToList(); |
| | | foreach (var demo in list) |
| | | { |
| | | |
| | | var com2 = com.FirstOrDefault(m => m.BoxNo == demo.BoxNo); |
| | | if (com2 != null) |
| | | { |
| | | demo.PickedQty = com2.PickedQty; |
| | | } |
| | | demo.PickedQty = com.CompleteQty; |
| | | } |
| | | } |
| | | } |
| | | if (type == "1") |
| | | { |
| | | var com = comInfo.Where(m => m.IsDel == "0").GroupBy(m => m.BoxNo).Select(it => new BoxInfo |
| | | { |
| | | BoxNo = it.Key, |
| | | PickedQty = it.Sum(a => a.CompleteQty) |
| | | }).ToList(); |
| | | foreach (var demo in list) |
| | | { |
| | | |
| | | var com2 = com.FirstOrDefault(m => m.BoxNo == demo.BoxNo); |
| | | if (com2 != null) |
| | | { |
| | | demo.PickedQty = com2.PickedQty; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | return list; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | throw new Exception(e.Message); |
| | | } |
| | | |
| | | return list; |
| | | } |
| | | |
| | | //获取库内无箱码的托盘分配信息 |
| | | public List<Model.ModelDto.BoxInfo> GetAllotPlnInfo(string soDetailId, string palletNo) |
| | | public async Task<List<BoxInfo>> GetAllotPlnInfo(string soDetailId, string palletNo) |
| | | { |
| | | try |
| | | #region 判断 |
| | | |
| | | //根据id及托盘获取出库单和托盘拣货信息 |
| | | if (string.IsNullOrWhiteSpace(palletNo)) |
| | | { |
| | | #region 判断 |
| | | |
| | | //根据id及托盘获取出库单和托盘拣货信息 |
| | | if (string.IsNullOrWhiteSpace(palletNo)) |
| | | { |
| | | throw new Exception("托盘号不能为空"); |
| | | } |
| | | //获取对应托盘下是否存在箱码信息 |
| | | var boxInfo = Db.Queryable<DataBoxInfo>().First(b => b.IsDel == "0" && b.PalletNo == palletNo); |
| | | if (boxInfo != null) |
| | | { |
| | | throw new Exception($"{palletNo}托盘上存在箱码信息,无法在数量拣货进行操作!"); |
| | | } |
| | | |
| | | BllExportAllot allot = null; |
| | | if (!string.IsNullOrWhiteSpace(soDetailId)) |
| | | { |
| | | //出库单明细 |
| | | var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(a => a.Id == int.Parse(soDetailId) && a.IsDel == "0"); |
| | | if (noticeDetail == null) |
| | | { |
| | | throw new Exception($"未查询到对应出库单明细信息,请核实!"); |
| | | } |
| | | //出库单总单 |
| | | var notice = Db.Queryable<BllExportNotice>().First(a => a.IsDel == "0" && a.SONo == noticeDetail.SONo); |
| | | if (notice == null) |
| | | { |
| | | throw new Exception($"未查询到对应出库单总单信息,请核实!"); |
| | | } |
| | | //分配信息 |
| | | allot = Db.Queryable<BllExportAllot>().First(a => a.IsDel == "0" && a.SONo == notice.SONo && a.SODetailNo == noticeDetail.Id && a.PalletNo == palletNo && (a.Status == "2" || a.Status == "3")); |
| | | if (allot == null) |
| | | { |
| | | throw new Exception($"未查询到对应分配信息,请核实!"); |
| | | } |
| | | } |
| | | |
| | | //库存明细 |
| | | var detail = Db.Queryable<DataStockDetail>().First(a => a.IsDel == "0" && a.PalletNo == palletNo); |
| | | if (detail == null) |
| | | { |
| | | throw new Exception($"未查询到库存明细信息,请核实!"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | List<BoxInfo> pdaInfo = new List<BoxInfo>(); |
| | | |
| | | BoxInfo info = new BoxInfo() |
| | | { |
| | | SkuNo = detail.SkuNo, |
| | | BoxNo = detail.SkuNo, |
| | | Qty = allot == null ? (int)(detail.Qty - detail.LockQty) : (int)allot.Qty, |
| | | PickedQty = allot == null ? 0 : (int)allot.CompleteQty, |
| | | }; |
| | | |
| | | pdaInfo.Add(info); |
| | | return pdaInfo; |
| | | |
| | | throw Oops.Bah("托盘号不能为空"); |
| | | } |
| | | catch (Exception e) |
| | | //获取对应托盘下是否存在箱码信息 |
| | | var boxInfo = await Db.Queryable<DataBoxInfo>().FirstAsync(b => b.IsDel == "0" && b.PalletNo == palletNo); |
| | | if (boxInfo != null) |
| | | { |
| | | throw new Exception(e.Message); |
| | | throw Oops.Bah($"{palletNo}托盘上存在箱码信息,无法在数量拣货进行操作!"); |
| | | } |
| | | |
| | | BllExportAllot allot = null; |
| | | if (!string.IsNullOrWhiteSpace(soDetailId)) |
| | | { |
| | | //出库单明细 |
| | | var noticeDetail = await Db.Queryable<BllExportNoticeDetail>().FirstAsync(a => a.Id == int.Parse(soDetailId) && a.IsDel == "0"); |
| | | if (noticeDetail == null) |
| | | { |
| | | throw Oops.Bah($"未查询到对应出库单明细信息,请核实!"); |
| | | } |
| | | //出库单总单 |
| | | var notice = await Db.Queryable<BllExportNotice>().FirstAsync(a => a.IsDel == "0" && a.SONo == noticeDetail.SONo); |
| | | if (notice == null) |
| | | { |
| | | throw Oops.Bah($"未查询到对应出库单总单信息,请核实!"); |
| | | } |
| | | //分配信息 |
| | | allot = await Db.Queryable<BllExportAllot>().FirstAsync(a => a.IsDel == "0" && a.SONo == notice.SONo && a.SODetailNo == noticeDetail.Id && a.PalletNo == palletNo && (a.Status == "2" || a.Status == "3")); |
| | | if (allot == null) |
| | | { |
| | | throw Oops.Bah($"未查询到对应分配信息,请核实!"); |
| | | } |
| | | } |
| | | |
| | | //库存明细 |
| | | var detail = await Db.Queryable<DataStockDetail>().FirstAsync(a => a.IsDel == "0" && a.PalletNo == palletNo); |
| | | if (detail == null) |
| | | { |
| | | throw Oops.Bah($"未查询到库存明细信息,请核实!"); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | List<BoxInfo> pdaInfo = new List<BoxInfo>(); |
| | | |
| | | BoxInfo info = new BoxInfo() |
| | | { |
| | | SkuNo = detail.SkuNo, |
| | | BoxNo = detail.SkuNo, |
| | | Qty = allot == null ? (int)(detail.Qty - detail.LockQty) : (int)allot.Qty, |
| | | PickedQty = allot == null ? 0 : (int)allot.CompleteQty, |
| | | }; |
| | | |
| | | pdaInfo.Add(info); |
| | | return pdaInfo; |
| | | } |
| | | |
| | | //出库pda拣货 |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | else |
| | | { |
| | |
| | | if (notice.IsWave == "1") |
| | | { |
| | | var waveNum = Db.Queryable<BllExportNotice>() |
| | | .Count(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo && m.Status !="4"); |
| | | .Count(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo && m.Status != "4"); |
| | | if (waveNum == 0) |
| | | { |
| | | var wave = Db.Queryable<BllWaveMage>().First(m => m.IsDel == "0" && m.WaveNo == notice.WaveNo); |
| | | if (wave!= null) |
| | | if (wave != null) |
| | | { |
| | | wave.Status = "4"; |
| | | wave.UpdateUser = userId; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | //添加操作日志记录 |
| | | var k = new OperationSOServer().AddLogOperationSo("PDA模块", "拣货出库", soNo, "拣货", $"在PDA上对出库单号为:{soNo}的托盘码为:{palletNo}的拣货操作", userId); |
| | |
| | | |
| | | #region 验证储位状态是否正常 |
| | | |
| | | var locat = Db.Queryable<SysStorageLocat>().First(a=>a.IsDel == "0" && a.LocatNo == result.LocatNo); |
| | | var locat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.LocatNo == result.LocatNo); |
| | | if (locat == null) |
| | | { |
| | | throw new Exception("未获取到对应储位信息,请检查!"); |
| | |
| | | CreateUser = userId |
| | | }; |
| | | comList.Add(completeDetail); |
| | | |
| | | |
| | | if (palletNo != palletNoNew) |
| | | { |
| | | item.StockDetailId = sdId; |
| | |
| | | stockDetail.SONo = soNo; |
| | | Db.Updateable(stockDetail).ExecuteCommand(); |
| | | } |
| | | |
| | | |
| | | //修改出库单明细拣货数量 |
| | | noticeDetail.CompleteQty += pickQty; |
| | | Db.Updateable(noticeDetail).ExecuteCommand(); |
| | |
| | | Db.Updateable(pinStockDetail).ExecuteCommand(); |
| | | } |
| | | } |
| | | |
| | | |
| | | //添加操作日志记录 |
| | | var k = new OperationSOServer().AddLogOperationSo("PDA模块", "拣货拼托", soNo, "拣货", $"在PDA上对出库单号为:{soNo}的原托盘码为:{palletNo},新托盘码为:{palletNoNew}的拣货拼托操作", userId); |
| | | Db.CommitTran(); |
| | |
| | | throw new Exception("当前托盘未在库存中"); |
| | | } |
| | | |
| | | var boxInfo = Db.Queryable<DataBoxInfo>().Count(m=>m.IsDel == "0" && m.StockDetailId == detail.Id); |
| | | var boxInfo = Db.Queryable<DataBoxInfo>().Count(m => m.IsDel == "0" && m.StockDetailId == detail.Id); |
| | | |
| | | //判断托盘上是否有箱码信息 |
| | | if (boxInfo > 0) |
| | |
| | | { |
| | | try |
| | | { |
| | | var data = Db.Queryable<BllQualityInspectionRequest>().Where(m => m.IsDel == "0" && (m.Status == "1" || m.Status == "2")).OrderByDescending(m => m.QcNo).Select(m=>m.QcNo).ToList(); |
| | | var data = Db.Queryable<BllQualityInspectionRequest>().Where(m => m.IsDel == "0" && (m.Status == "1" || m.Status == "2")).OrderByDescending(m => m.QcNo).Select(m => m.QcNo).ToList(); |
| | | return data; |
| | | } |
| | | catch (Exception e) |
| | |
| | | try |
| | | { |
| | | var data = new InspectionRequestDto(); |
| | | var inspectionRequest = Db.Queryable<BllQualityInspectionRequest>().First(m=>m.IsDel == "0" && m.QcNo == qcNo); |
| | | var samplingQty = Db.Queryable<BllSamplingDetails>().Where(m => m.IsDel == "0" && m.QcNo == qcNo).Sum(m=>m.CompleteQty); |
| | | var inspectionRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.QcNo == qcNo); |
| | | var samplingQty = Db.Queryable<BllSamplingDetails>().Where(m => m.IsDel == "0" && m.QcNo == qcNo).Sum(m => m.CompleteQty); |
| | | |
| | | data.QcNo = qcNo; |
| | | data.Sku = inspectionRequest.SkuNo; |
| | | data.LotNo = inspectionRequest.LotNo; |
| | | data.Qty = inspectionRequest.SamplingQty.ToString(); |
| | | data.SamplingQty = samplingQty == null? "0": samplingQty.ToString(); |
| | | data.SamplingQty = samplingQty == null ? "0" : samplingQty.ToString(); |
| | | |
| | | return data; |
| | | } |
| | |
| | | |
| | | //if (isAddSampld) //添加取样明细 |
| | | //{ |
| | | var sampleDetail = new BllSamplingDetails() |
| | | { |
| | | QcNo = qcNo, |
| | | ASNNo = inspecd.ASNNo, |
| | | PalletNo = palletNo, |
| | | BoxNo = boxInfo.BoxNo, |
| | | BoxNo2 = boxInfo.BoxNo2, |
| | | BoxNo3 = boxInfo.BoxNo3, |
| | | SkuNo = boxInfo.SkuNo, |
| | | SkuName = boxInfo.SkuName, |
| | | Standard = boxInfo.Standard, |
| | | LotNo = boxInfo.LotNo, |
| | | SupplierLot = boxInfo.SupplierLot, |
| | | CompleteQty = decimal.Parse(pickQty), |
| | | CreateTime = DateTime.Now, |
| | | CreateUser = userId |
| | | }; |
| | | Db.Insertable(sampleDetail).ExecuteCommand(); |
| | | var sampleDetail = new BllSamplingDetails() |
| | | { |
| | | QcNo = qcNo, |
| | | ASNNo = inspecd.ASNNo, |
| | | PalletNo = palletNo, |
| | | BoxNo = boxInfo.BoxNo, |
| | | BoxNo2 = boxInfo.BoxNo2, |
| | | BoxNo3 = boxInfo.BoxNo3, |
| | | SkuNo = boxInfo.SkuNo, |
| | | SkuName = boxInfo.SkuName, |
| | | Standard = boxInfo.Standard, |
| | | LotNo = boxInfo.LotNo, |
| | | SupplierLot = boxInfo.SupplierLot, |
| | | CompleteQty = decimal.Parse(pickQty), |
| | | CreateTime = DateTime.Now, |
| | | CreateUser = userId |
| | | }; |
| | | Db.Insertable(sampleDetail).ExecuteCommand(); |
| | | //} |
| | | //else |
| | | //{ |
| | |
| | | { |
| | | item.BitBoxMark = "1"; |
| | | item.InspectMark = "1"; |
| | | |
| | | |
| | | if (unpackWarranty > 0 && boxInfoList.Count(m => m.ProductionTime != null) > 0) |
| | | { |
| | | if (item.ProductionTime != null) |
| | |
| | | |
| | | } |
| | | Db.Updateable(boxInfoList).ExecuteCommand(); |
| | | |
| | | |
| | | //库存箱码 |
| | | boxInfo.Qty -= decimal.Parse(pickQty); |
| | | if (boxInfo.Qty == 0) |
| | |
| | | |
| | | //if (isAddSampld) //添加取样明细 |
| | | //{ |
| | | var sampleDetail = new BllSamplingDetails() |
| | | { |
| | | QcNo = qcNo, |
| | | ASNNo = inspecd.ASNNo, |
| | | PalletNo = palletNo, |
| | | BoxNo = boxInfo.BoxNo, |
| | | BoxNo2 = boxInfo.BoxNo2, |
| | | BoxNo3 = boxInfo.BoxNo3, |
| | | SkuNo = boxInfo.SkuNo, |
| | | SkuName = boxInfo.SkuName, |
| | | Standard = boxInfo.Standard, |
| | | LotNo = boxInfo.LotNo, |
| | | SupplierLot = boxInfo.SupplierLot, |
| | | CompleteQty = boxInfo.Qty, |
| | | CreateTime = DateTime.Now, |
| | | CreateUser = userId |
| | | }; |
| | | Db.Insertable(sampleDetail).ExecuteCommand(); |
| | | var sampleDetail = new BllSamplingDetails() |
| | | { |
| | | QcNo = qcNo, |
| | | ASNNo = inspecd.ASNNo, |
| | | PalletNo = palletNo, |
| | | BoxNo = boxInfo.BoxNo, |
| | | BoxNo2 = boxInfo.BoxNo2, |
| | | BoxNo3 = boxInfo.BoxNo3, |
| | | SkuNo = boxInfo.SkuNo, |
| | | SkuName = boxInfo.SkuName, |
| | | Standard = boxInfo.Standard, |
| | | LotNo = boxInfo.LotNo, |
| | | SupplierLot = boxInfo.SupplierLot, |
| | | CompleteQty = boxInfo.Qty, |
| | | CreateTime = DateTime.Now, |
| | | CreateUser = userId |
| | | }; |
| | | Db.Insertable(sampleDetail).ExecuteCommand(); |
| | | //} |
| | | //else |
| | | //{ |
| | |
| | | |
| | | //拆包有效期更改 |
| | | var unpackWarranty = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo).UnpackWarranty; |
| | | |
| | | |
| | | foreach (var item in boxInfoList) |
| | | { |
| | | item.BitBoxMark = "1"; |
| | |
| | | #endregion |
| | | |
| | | //取样明细记录表 |
| | | var sampld = Db.Queryable<BllSamplingDetails>().Where(m => m.IsDel == "0" && m.QcNo == qcNo ).ToList(); |
| | | var sampld = Db.Queryable<BllSamplingDetails>().Where(m => m.IsDel == "0" && m.QcNo == qcNo).ToList(); |
| | | var qty = decimal.Parse(pickQty); |
| | | //var isAddSampld = sampld.Count(m => m.PalletNo == palletNo) == 0; |
| | | |
| | | |
| | | |
| | | #region 判断数量 |
| | | |
| | |
| | | |
| | | #region 添加或修改取样明细 |
| | | |
| | | Db.BeginTran(); |
| | | Db.BeginTran(); |
| | | |
| | | //if (isAddSampld) //添加取样明细 |
| | | //{ |
| | | var sampleDetail = new BllSamplingDetails() |
| | | { |
| | | QcNo = qcNo, |
| | | ASNNo = inspecd.ASNNo, |
| | | PalletNo = palletNo, |
| | | SkuNo = stockDetail.SkuNo, |
| | | SkuName = stockDetail.SkuName, |
| | | Standard = stockDetail.Standard, |
| | | LotNo = stockDetail.LotNo, |
| | | SupplierLot = stockDetail.SupplierLot, |
| | | CompleteQty = qty, |
| | | CreateTime = DateTime.Now, |
| | | CreateUser = userId |
| | | }; |
| | | Db.Insertable(sampleDetail).ExecuteCommand(); |
| | | var sampleDetail = new BllSamplingDetails() |
| | | { |
| | | QcNo = qcNo, |
| | | ASNNo = inspecd.ASNNo, |
| | | PalletNo = palletNo, |
| | | SkuNo = stockDetail.SkuNo, |
| | | SkuName = stockDetail.SkuName, |
| | | Standard = stockDetail.Standard, |
| | | LotNo = stockDetail.LotNo, |
| | | SupplierLot = stockDetail.SupplierLot, |
| | | CompleteQty = qty, |
| | | CreateTime = DateTime.Now, |
| | | CreateUser = userId |
| | | }; |
| | | Db.Insertable(sampleDetail).ExecuteCommand(); |
| | | //} |
| | | //else |
| | | //{ |
| | |
| | | } |
| | | Db.Updateable(inspecd).ExecuteCommand(); |
| | | #endregion |
| | | |
| | | |
| | | |
| | | |
| | | //添加操作日志记录 |