| | |
| | | public List<BoxInfoDto> GetBoxInfos(BoxInfoVm model) |
| | | { |
| | | try |
| | | { |
| | | { |
| | | string sqlString = string.Empty; |
| | | if (model.IsHuiKu == 0) |
| | | { |
| | |
| | | #region 是否回流入库 |
| | | int iscount = 0; |
| | | //库存明细信息 |
| | | var stockDetail = Db.Queryable<DataStockDetail>().Where(a => a.IsDel == "0" && a.PalletNo == model.PalletNo).ToList(); |
| | | var stockDetail = Db.Queryable<DataStockDetail>().Where(a => a.IsDel == "0" && a.PalletNo == model.PalletNo).ToList(); |
| | | //验证库存是否拥有该托信息 |
| | | if (stockDetail != null && stockDetail.Count > 0) |
| | | { |
| | |
| | | strMsg = "-1:箱码信息不存在,请核查!"; |
| | | return strMsg; |
| | | } |
| | | else |
| | | else |
| | | { |
| | | // 改变箱支关系表状态:已入库 |
| | | sqlString = $"Update BllBoxInfo set Status = '2' where PalletNo = '{model.PalletNo}' and ASNNo = '{model.ASNNo}' and Status = '1'"; |
| | |
| | | pallQty = boxinfo2.Sum(w => w.Qty); |
| | | //入库单明细完成数量增加 |
| | | noticeItem.CompleteQty += pallQty; |
| | | } |
| | | } |
| | | //判断入库数量增加后是否大于等于单据数量 |
| | | if (noticeItem.CompleteQty >= noticeItem.Qty) |
| | | { |
| | |
| | | sqlString = "select sum(qty) from BllBoxInfo where isdel = 0 and "; |
| | | sqlString += $"BindNo = '{palletbindInfo.Id}'"; |
| | | int inspectQty = Db.Ado.GetInt(sqlString); |
| | | |
| | | |
| | | // 添加库存明细表 |
| | | detailModel = new DataStockDetail() |
| | | { |
| | |
| | | try |
| | | { |
| | | //入库中 |
| | | var aSNNoList= Db.Ado.SqlQuery<string>($"SELECT DISTINCT ASNNo from BllPalletBind where IsDel=0 and Status=0 and PalletNo='{palletNo}' ").ToList(); |
| | | var aSNNoList = Db.Ado.SqlQuery<string>($"SELECT DISTINCT ASNNo from BllPalletBind where IsDel=0 and Status=0 and PalletNo='{palletNo}' ").ToList(); |
| | | if (aSNNoList.Count <= 0) |
| | | { |
| | | //库外托盘或平库托盘 |
| | |
| | | //拼托入库 |
| | | public void CompleteInStockLing(PdaLingAsnVm model, int userId) |
| | | { |
| | | try |
| | | try |
| | | { |
| | | if (string.IsNullOrWhiteSpace(model.AsnNo)) |
| | | { |
| | |
| | | foreach (var item in boxinfo) |
| | | { |
| | | if (!string.IsNullOrEmpty(item.PalletNo)) |
| | | { |
| | | { |
| | | throw new Exception("-1:该箱码已绑定其他托盘,请先解绑托盘!"); |
| | | } |
| | | bNum += item.Qty; |
| | | bNum += item.Qty; |
| | | } |
| | | if (bNum == boxinfo[0].FullQty) |
| | | { |
| | |
| | | //修改入库单总单信息 |
| | | arrival.Status = "2"; |
| | | arrival.CompleteTime = serverTime; |
| | | arrival.UpdateUser =userId; |
| | | arrival.UpdateUser = userId; |
| | | arrival.UpdateTime = serverTime; |
| | | Db.Updateable(arrival).ExecuteCommand(); |
| | | } |
| | |
| | | |
| | | #region 库存明细表 |
| | | var boxinfoItem = boxinfo.First(); |
| | | var detailModel = Db.Queryable<DataStockDetail>() .First(it => it.PalletNo == model.PalletNo && it.LotNo == arrivalnotice.LotNo |
| | | var detailModel = Db.Queryable<DataStockDetail>().First(it => it.PalletNo == model.PalletNo && it.LotNo == arrivalnotice.LotNo |
| | | && it.SkuNo == arrivalnotice.SkuNo && it.Standard == arrivalnotice.Standard && it.IsDel == "0"); |
| | | var stId = 0; |
| | | if (detailModel == null || detailModel.Id == 0) |
| | |
| | | { |
| | | 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) |
| | | { |
| | |
| | | { |
| | | throw new Exception("-1:托盘号不可为空!"); |
| | | } |
| | | if (string.IsNullOrEmpty(model.BoxNo)) |
| | | //判断物料数量是否为0 为0判断箱码信息 不为0继续 |
| | | if (model.SkuQty == 0) |
| | | { |
| | | throw new Exception("-1:箱码信息不可为空!"); |
| | | } |
| | | |
| | | if (model.IsContinue == "1") |
| | | { |
| | | if (string.IsNullOrWhiteSpace(model.TailBoxNo)) |
| | | if (string.IsNullOrEmpty(model.BoxNo)) |
| | | { |
| | | throw new Exception("-1:开启连续组托时,尾箱码信息不可为空!"); |
| | | throw new Exception("-1:箱码信息不可为空!"); |
| | | } |
| | | |
| | | if (model.IsContinue == "1") |
| | | { |
| | | if (string.IsNullOrWhiteSpace(model.TailBoxNo)) |
| | | { |
| | | throw new Exception("-1:开启连续组托时,尾箱码信息不可为空!"); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | #endregion |
| | | // 验证入库单总表 |
| | | var notice = Db.Queryable<BllArrivalNotice>().First(m => m.IsDel == "0" && m.ASNNo == model.AsnNo); |
| | |
| | | //入库单类型,0:成品入库 1:采购入库 2:中间品入库 3:退货入库 4:车间余料退回入库 5:其它入库 6:代储入库 |
| | | if (notice.Type == "0" || notice.Type == "3" || notice.Type == "5" || notice.Type == "6") |
| | | { |
| | | BindPalletForBox(model,userId,origin); |
| | | BindPalletForBox(model, userId, origin); |
| | | } |
| | | else |
| | | { |
| | | BindPalletForLabelBox(model,userId); |
| | | BindPalletForLabelBox(model, userId); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | |
| | | |
| | | // 更改入库单明细已组数量 |
| | | var sqlString = string.Empty; |
| | | sqlString += $"update BllArrivalNoticeDetail set FactQty = FactQty + '{factQty}' where id = '{model.AsnDetailId}';"; |
| | | sqlString += $"update BllArrivalNoticeDetail set FactQty = FactQty + '{bind.Qty}' where id = '{model.AsnDetailId}';"; |
| | | Db.Ado.ExecuteCommand(sqlString); |
| | | |
| | | // 更改入库单及入库明细状态 |
| | |
| | | { |
| | | 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(); |
| | | |
| | | //托盘是否存在 |
| | |
| | | PalletNo = model.PalletNo, |
| | | PalletNo2 = "", |
| | | PalletNo3 = "", |
| | | Qty = 0, |
| | | Qty = model.SkuQty, |
| | | FullQty = pNum, |
| | | Status = "0", |
| | | Type = "0", |
| | |
| | | } |
| | | |
| | | #region 箱码信息 |
| | | |
| | | var msgStr = $"箱号为{model.BoxNo}"; |
| | | var boxInfoList = new List<BllLabelBoxNo>(); |
| | | var msgStr = $"箱号为{model.BoxNo}"; |
| | | //首箱 |
| | | 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); |
| | | boxInfoList.AddRange(list); |
| | | |
| | | //找到相关的二级码 |
| | | foreach (var item in boxInfoList) |
| | |
| | | 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(); |
| | | |
| | | // 更新托盘绑定表 |
| | |
| | | |
| | | // 更改入库单明细已组数量 |
| | | var sqlString = string.Empty; |
| | | sqlString += $"update BllArrivalNoticeDetail set FactQty = FactQty + '{factQty}' where id = '{model.AsnDetailId}';"; |
| | | sqlString += $"update BllArrivalNoticeDetail set FactQty = FactQty + '{bind.Qty}' where id = '{model.AsnDetailId}';"; |
| | | Db.Ado.ExecuteCommand(sqlString); |
| | | |
| | | // 更改入库单及入库明细状态 |