| | |
| | | { |
| | | try |
| | | { |
| | | if (string.IsNullOrEmpty(model.ASNNo)) |
| | | { |
| | | throw new Exception("请选择入库单据!"); |
| | | } |
| | | if (string.IsNullOrEmpty(model.BoxNo)) |
| | | { |
| | | throw new Exception("箱码不能为空!"); |
| | | } |
| | | var order = Db.Queryable<BllArrivalNotice>().First(a => a.IsDel == "0" && a.ASNNo == model.ASNNo); |
| | | if (order == null) |
| | | { |
| | | throw new Exception("入库单据不存在!"); |
| | | throw new Exception("请扫描外箱条码!"); |
| | | } |
| | | string sqlString = string.Empty; |
| | | //入库单类型,0:成品入库 1:采购入库 2:中间品入库 3:退货入库 4:车间余料退回入库 5:其它入库 6:代储入库 |
| | | if (order.Type == "0" || order.Type == "3" || order.Type == "5" || order.Type == "6") |
| | | sqlString = "select ASNNo,BoxNo, SkuNo,SkuName, LotNo, Qty from BLLLabelBoxNo where IsDel = '0' "; |
| | | sqlString += $"and BoxNo = '{model.BoxNo}' "; |
| | | var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); |
| | | if (models == null || models.Count <= 0) |
| | | { |
| | | sqlString = "select BoxNo, SkuNo,SkuName, LotNo, SUM(Qty) as Qty from BllBoxInfo where IsDel = '0' "; |
| | | sqlString += $"and BoxNo = '{model.BoxNo}' and Status='0' "; |
| | | sqlString += $"group by BoxNo,SkuNo,SkuName,LotNo; "; |
| | | } |
| | | else |
| | | { |
| | | sqlString = "select BoxNo, SkuNo,SkuName, LotNo, SUM(Qty) as Qty from BLLLabelBoxNo where IsDel = '0' "; |
| | | sqlString += $"and BoxNo = '{model.BoxNo}' and IsUse='0' "; |
| | | sqlString += $"group by BoxNo,SkuNo,SkuName,LotNo; "; |
| | | } |
| | | var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); |
| | | |
| | | models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); |
| | | } |
| | | if (models == null) |
| | | { |
| | | throw new Exception("箱码信息不存在!"); |
| | |
| | | throw ex; |
| | | } |
| | | } |
| | | |
| | | |
| | | public void BindPallet(PdaPalletBindVm model, int userId, string origin) |
| | | { |
| | |
| | | { |
| | | try |
| | | { |
| | | #region 判断 |
| | | |
| | | if (string.IsNullOrEmpty(model.AsnNo)) |
| | | { |
| | | throw new Exception("-1:单据号不可为空!"); |
| | | } |
| | | if (model.AsnDetailId == null || model.AsnDetailId == 0) |
| | | { |
| | | throw new Exception("-1:物料不可为空!"); |
| | | } |
| | | if (string.IsNullOrEmpty(model.PalletNo)) |
| | | { |
| | | throw new Exception("-1:托盘号不可为空!"); |
| | | } |
| | | if (string.IsNullOrEmpty(model.BoxNo)) |
| | | { |
| | | throw new Exception("-1:箱码信息不可为空!"); |
| | | } |
| | | |
| | | if (model.IsContinue == "1") |
| | | { |
| | | if (string.IsNullOrWhiteSpace(model.TailBoxNo)) |
| | | { |
| | | throw new Exception("-1:开启连续组托时,尾箱码信息不可为空!"); |
| | | } |
| | | |
| | | } |
| | | if (model.IsContinue == "0" && model.IsContinue2 == "1") |
| | | { |
| | | if (string.IsNullOrWhiteSpace(model.TailBoxNo01)) |
| | | { |
| | | throw new Exception("-1:开启连续组托时,二级码尾码信息不可为空!"); |
| | | } |
| | | |
| | | } |
| | | #endregion |
| | | |
| | | Db.BeginTran(); |
| | | |
| | | //托盘是否存在 |
| | |
| | | var msgStr = $"箱号为{model.BoxNo}"; |
| | | var boxInfoList = new List<BllLabelBoxNo>(); |
| | | //首箱 |
| | | var boxInfo = Db.Queryable<BllLabelBoxNo>().Where(m => m.IsDel == "0" && m.BoxNo == model.BoxNo && m.IsUse == "0" && m.Level == "1").ToList(); |
| | | var boxInfo = Db.Queryable<BllLabelBoxNo>().Where(m => m.IsDel == "0" && m.BoxNo == model.BoxNo && m.Level == "1").ToList(); |
| | | if (boxInfo.Count == 0) |
| | | { |
| | | throw new Exception("-1:箱码信息不存在!"); |
| | |
| | | { |
| | | boxInfoList.AddRange(boxInfo); |
| | | //尾箱 |
| | | var boxInfo2 = Db.Queryable<BllLabelBoxNo>().Where(m => m.IsDel == "0" && m.BoxNo == model.TailBoxNo && m.IsUse == "0" && m.Level == "1").ToList(); |
| | | var boxInfo2 = Db.Queryable<BllLabelBoxNo>().Where(m => m.IsDel == "0" && m.BoxNo == model.TailBoxNo && m.Level == "1").ToList(); |
| | | if (boxInfo2.Count == 0) |
| | | { |
| | | throw new Exception("-1:尾箱码信息不存在!"); |
| | | } |
| | | boxInfoList.AddRange(boxInfo2); |
| | | var sql = $"select * from BllLabelBoxNo where IsDel = '0' and IsUse = '0' and boxNo>'{model.BoxNo}' and boxNo<'{model.TailBoxNo}' and Level='1'; "; |
| | | var sql = $"select * from BllLabelBoxNo where IsDel = '0' and boxNo>'{model.BoxNo}' and boxNo<'{model.TailBoxNo}' and Level='1'; "; |
| | | var list = Db.Ado.SqlQuery<BllLabelBoxNo>(sql); |
| | | boxInfoList.AddRange(list); |
| | | |
| | |
| | | boxInfoList2.AddRange(box01Info2); |
| | | //中间码 |
| | | var sql = $"select * from BllLabelBoxNo where IsDel = '0' and IsUse = '0' and boxNo>'{model.BoxNo}' and boxNo<'{model.TailBoxNo}' and Level='2' and (ParentBoxNo='' || ParentBoxNo='{model.BoxNo}'); "; |
| | | var list = Db.Ado.SqlQuery<BllLabelBoxNo>(sql); |
| | | boxInfoList2.AddRange(list); |
| | | var list = Db.Ado.SqlQuery<BllLabelBoxNo>(sql); |
| | | boxInfoList2.AddRange(list); |
| | | } |
| | | foreach (var item in boxInfoList2) |
| | | { |
| | |
| | | boxInfoList.AddRange(boxInfoList2); |
| | | foreach (var item in boxInfo) |
| | | { |
| | | item.Qty = boxQty; |
| | | item.Qty += boxQty; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //找到相关的二级码 |
| | | foreach (var item in boxInfo) |
| | | { |
| | | string sql = $"select * from BllLabelBoxNo where IsDel = '0' and IsUse = '0' and ParentBoxNo='{item.BoxNo}' and Level = '2' "; |
| | | var list = Db.Ado.SqlQuery<BllLabelBoxNo>(sql); |
| | | boxInfoList.AddRange(list); |
| | | } |
| | | } |
| | | boxInfoList.AddRange(boxInfo); |
| | | } |
| | | #endregion |
| | | |
| | | #endregion |
| | | // 更改箱支关系表 |
| | | decimal factQty = 0.00m;//托盘总数量 |
| | | var boxGroup = boxInfoList.GroupBy(m => m.BoxNo).ToList(); |
| | | foreach (var g in boxGroup) |
| | | decimal factQty = 0.00m;//托盘总数量 |
| | | foreach (var box in boxInfoList) |
| | | { |
| | | decimal boxFullQty = 0.00m;//箱内总数量 |
| | | foreach (var box in g) |
| | | //箱内物料批次与单据明细不符合 |
| | | if (box.SkuNo != detail.SkuNo || box.LotNo != detail.LotNo) |
| | | { |
| | | if (box.IsUse != "0") |
| | | { |
| | | continue; |
| | | } |
| | | //箱内物料批次与单据明细不符合 |
| | | if (box.SkuNo != detail.SkuNo || box.LotNo != detail.LotNo) |
| | | { |
| | | throw new Exception($"-1:{box.BoxNo}箱内物料及批次与单据不一致,请核实!"); |
| | | } |
| | | |
| | | box.ASNNo = model.AsnNo; |
| | | box.ASNDetailNo = model.AsnDetailId; |
| | | box.IsUse = "1"; |
| | | box.CompleteTime = DateTime.Now; |
| | | box.UpdateTime = DateTime.Now; |
| | | box.UpdateUser = userId; |
| | | |
| | | if (box.ParentBoxNo == "" && box.Level == "1") |
| | | { |
| | | factQty += box.Qty; |
| | | boxFullQty += box.Qty; |
| | | } |
| | | throw new Exception($"-1:{box.BoxNo}箱内物料及批次与单据不一致,请核实!"); |
| | | } |
| | | if (boxFullQty > bNum) |
| | | if (box.IsUse != "0") |
| | | { |
| | | throw new Exception($"绑定失败,{g.Key}箱码绑定数量大于该物品包装数量!"); |
| | | continue; |
| | | } |
| | | } |
| | | if (box.Level == "1") |
| | | { |
| | | if (box.Qty > bNum) |
| | | { |
| | | throw new Exception($"绑定失败,{box.BoxNo}箱码绑定数量大于该物品包装数量!"); |
| | | } |
| | | factQty += box.Qty; |
| | | } |
| | | //box.ASNNo = model.AsnNo; |
| | | //box.ASNDetailNo = model.AsnDetailId; |
| | | box.IsUse = "1"; |
| | | box.CompleteTime = DateTime.Now; |
| | | box.UpdateTime = DateTime.Now; |
| | | box.UpdateUser = userId; |
| | | } |
| | | Db.Updateable(boxInfoList).ExecuteCommand(); |
| | | |
| | | // 更新托盘绑定表 |