| | |
| | | <script type="text/html" id="table-content-list2"> |
| | | {{# function GetBtn2(d){ |
| | | var html = ''; |
| | | if(d.SkuNo != "100099"){ |
| | | if(d.SkuNo != "100099" && d.BoxNo != ''){ |
| | | html =`<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="sel"> |
| | | <i class="layui-icon layui-icon-edit"></i>详情</a>`; |
| | | } |
| | |
| | | { field: 'LotText', title: '批次描述', align: 'center', width: 150, }, |
| | | { field: 'SupplierLot', title: '供货批次', align: 'center', width: 110, }, |
| | | { field: 'Standard', title: '物料规格', align: 'center', width: 120, }, |
| | | {field: 'CreateTime',align: 'center',title: '拣货',width: 165,templet: '#templetCreateTime2'}, |
| | | //{field: 'CreateTime',align: 'center',title: '拣货时间',width: 165,templet: '#templetCreateTime2'}, |
| | | { field: 'caozuo', title: '操作', fixed: 'right', width: 100, align: 'left', toolbar: '#table-content-list2', "disabled": true } |
| | | ]]; |
| | | var DetailColsSysArr = encodeURIComponent(encodeURIComponent(JSON.stringify(DetailColsArr)))//将表头数据进行url编码 |
| | |
| | | <p>已入库</p> |
| | | {{# } else if(d.Status == '3') { }} |
| | | <p>已出库</p> |
| | | {{# } }} |
| | | {{# } else if(d.Status == '4') { }} |
| | | <p>已分配</p> |
| | | {{# } else if(d.Status == '5') { }} |
| | | <p>已拣货</p> |
| | | {{# } }} |
| | | |
| | | </script> |
| | | <script type="text/html" id="InspectMarkStatus"> |
| | | {{# if(d.InspectMark=='0'){ }} |
| | |
| | | }, function () { |
| | | clearTable() |
| | | $("#PalletNo").val('') |
| | | $("#LocatNo").val('') |
| | | }); |
| | | } else { //不成功 |
| | | layer.msg(res.msg, { |
| | |
| | | try |
| | | { |
| | | #region 验证信息 |
| | | if (string.IsNullOrEmpty(model.ASNNo)) |
| | | { |
| | | throw new Exception("入库单不能为空!"); |
| | | } |
| | | //if (string.IsNullOrEmpty(model.ASNNo)) |
| | | //{ |
| | | // throw new Exception("入库单不能为空!"); |
| | | //} |
| | | if (string.IsNullOrEmpty(model.PalletNo)) |
| | | { |
| | | throw new Exception("托盘条码不能为空!"); |
| | |
| | | IsFinish = 0,//是否可完成 |
| | | Type = "0",//任务类型 0 入库任务 1 出库任务 2 移库任务 |
| | | Status = "2",//任务状态0:等待执行1正在执行2执行完成 |
| | | OrderType = "0",//0 入库单 1 出库单 2 盘点单 3 移库单 |
| | | OrderType = "3",//0 入库单 1 出库单 2 盘点单 3 移库单 |
| | | Msg = "力诺平库的回库任务", |
| | | }; |
| | | Db.Insertable(exTask).ExecuteCommand(); |
| | |
| | | //修改储位信息 |
| | | Db.Updateable(storageLocat).ExecuteCommand(); |
| | | |
| | | new OperationASNServer().AddLogOperationAsn("PDA模块", "平库入库", model.PalletNo, "完成", $"在PDA上完成单据号为:{model.ASNNo}的托盘码为:{model.PalletNo}的平库入库操作", (int)model.CreateUser); |
| | | |
| | | if (iscount == 1) |
| | | { |
| | | new OperationASNServer().AddLogOperationAsn("PDA模块", "平库入库", model.PalletNo, "完成", $"在PDA上完成托盘码为:{model.PalletNo}的平库回流入库操作", (int)model.CreateUser); |
| | | } |
| | | else |
| | | { |
| | | new OperationASNServer().AddLogOperationAsn("PDA模块", "平库入库", model.PalletNo, "完成", $"在PDA上完成单据号为:{model.ASNNo}的托盘码为:{model.PalletNo}的平库入库操作", (int)model.CreateUser); |
| | | } |
| | | Db.CommitTran(); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | |
| | | var comList = new List<BllCompleteDetail>(); |
| | | //判断是否存在拣货明细 |
| | | isComplete = 0;// 所有无箱码或一级箱码拣货时,拣货明细应重新插入数据(体现多次拣货流程记录) |
| | | if (isComplete == 0) |
| | | { |
| | | //添加拣货明细 |
| | |
| | | |
| | | Db.Updateable(complete).ExecuteCommand(); |
| | | } |
| | | |
| | | |
| | | |
| | | //修改出库分配信息 |
| | | allot.CompleteQty += int.Parse(PickQty); |
| | |
| | | { |
| | | throw new Exception("新托盘码不能为空"); |
| | | } |
| | | if (palletNo == palletNoNew)//原托盘与新托盘一致 |
| | | { |
| | | if (!string.IsNullOrEmpty(boxNo)) |
| | | { |
| | | throw new Exception("原托盘与新托盘一致,请选择整托出库"); |
| | | } |
| | | } |
| | | |
| | | //出库单 |
| | | var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == soNo); |
| | |
| | | var pinStockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew); |
| | | if (pinStockDetail != null) |
| | | { |
| | | if (pinStockDetail.SONo != notice.SONo) |
| | | if (palletNo != palletNoNew)//非整托拣货 |
| | | { |
| | | throw new Exception("拼托托盘上只能放同一个出库单下的物料!"); |
| | | } |
| | | if (pinStockDetail.SkuName != stockDetail.SkuName || pinStockDetail.LotNo != stockDetail.LotNo) |
| | | { |
| | | isNew = true; |
| | | if (pinStockDetail.SONo != notice.SONo) |
| | | { |
| | | throw new Exception("拼托托盘上只能放同一个出库单下的物料!"); |
| | | } |
| | | if (pinStockDetail.SkuName != stockDetail.SkuName || pinStockDetail.LotNo != stockDetail.LotNo) |
| | | { |
| | | isNew = true; |
| | | } |
| | | } |
| | | sdId = pinStockDetail.Id; |
| | | } |
| | |
| | | CreateUser = userId |
| | | }; |
| | | comList.Add(completeDetail); |
| | | |
| | | |
| | | if (palletNo != palletNoNew) |
| | | { |
| | | item.StockDetailId = sdId; |
| | | item.BindNo = null;//托盘绑定号 |
| | | item.PalletNo = palletNoNew; |
| | | } |
| | | item.Status = "5";//箱支状态,0:未组托 1:已组托 2:已入库 3:已出库 4:已分配 5:已拣货 |
| | | //修改库存箱码明细 |
| | | item.StockDetailId = sdId; |
| | | item.BindNo = null;//托盘绑定号 |
| | | item.PalletNo = palletNoNew; |
| | | Db.Updateable(item).ExecuteCommand(); |
| | | |
| | | pickQty += item.Qty; |
| | |
| | | allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3"; |
| | | allot.UpdateTime = DateTime.Now; |
| | | Db.Updateable(allot).ExecuteCommand(); |
| | | //删除原托盘库存明细 |
| | | Db.Deleteable(stockDetail).ExecuteCommand(); |
| | | |
| | | //改变托盘状态为:未使用 |
| | | var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0"); |
| | | if (pallet == null) |
| | | if (palletNo != palletNoNew) |
| | | { |
| | | throw new Exception("未在托盘表中查询到托盘信息"); |
| | | //删除原托盘库存明细 |
| | | Db.Deleteable(stockDetail).ExecuteCommand(); |
| | | |
| | | //改变原托盘状态为:未使用 |
| | | var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0"); |
| | | if (pallet == null) |
| | | { |
| | | throw new Exception("未在托盘表中查询到托盘信息"); |
| | | } |
| | | pallet.Status = "0"; |
| | | Db.Updateable(pallet).ExecuteCommand(); |
| | | } |
| | | pallet.Status = "0"; |
| | | Db.Updateable(pallet).ExecuteCommand(); |
| | | else |
| | | { |
| | | stockDetail.SONo = soNo; |
| | | Db.Updateable(stockDetail).ExecuteCommand(); |
| | | } |
| | | |
| | | //修改出库单明细拣货数量 |
| | | noticeDetail.CompleteQty += pickQty; |
| | | Db.Updateable(noticeDetail).ExecuteCommand(); |
| | |
| | | item.StockDetailId = sdId; |
| | | item.BindNo = null;//托盘绑定号 |
| | | item.PalletNo = palletNoNew; |
| | | item.Status = "5";//箱支状态,0:未组托 1:已组托 2:已入库 3:已出库 4:已分配 5:已拣货 |
| | | Db.Updateable(item).ExecuteCommand(); |
| | | |
| | | pickQty += item.Qty; |
| | |
| | | item.BindNo = null;//托盘绑定号 |
| | | item.PalletNo = palletNoNew; |
| | | item.BoxNo = item.BoxNo3;//将支码赋给箱码 |
| | | item.BitBoxMark = "1"; |
| | | item.BitBoxMark = "1";//零箱标记 |
| | | item.Status = "5";//箱支状态,0:未组托 1:已组托 2:已入库 3:已出库 4:已分配 5:已拣货 |
| | | Db.Updateable(item).ExecuteCommand(); |
| | | |
| | | pickQty += item.Qty; |
| | |
| | | item.StockDetailId = sdId; |
| | | item.BindNo = null;//托盘绑定号 |
| | | item.PalletNo = palletNoNew; |
| | | item.Status = "5";//箱支状态,0:未组托 1:已组托 2:已入库 3:已出库 4:已分配 5:已拣货 |
| | | Db.Updateable(item).ExecuteCommand(); |
| | | } |
| | | else |
| | |
| | | } |
| | | else |
| | | { |
| | | //修改拼托托盘库存明细 |
| | | pinStockDetail.Qty += pickQty; |
| | | pinStockDetail.LockQty += pickQty; |
| | | Db.Updateable(pinStockDetail).ExecuteCommand(); |
| | | if (palletNo != palletNoNew) |
| | | { |
| | | //修改拼托托盘库存明细 |
| | | pinStockDetail.Qty += pickQty; |
| | | pinStockDetail.LockQty += pickQty; |
| | | Db.Updateable(pinStockDetail).ExecuteCommand(); |
| | | } |
| | | } |
| | | |
| | | //添加操作日志记录 |
| | |
| | | { |
| | | throw new Exception("未查询到该托盘分配的库存信息!"); |
| | | } |
| | | if (palletNo == palletNoNew)//原托盘与新托盘一致 |
| | | { |
| | | if (int.Parse(PickQty) != stockDetail.Qty) |
| | | { |
| | | throw new Exception("原托盘与新托盘一致,需要把托盘上所有数量拣货"); |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region 拼托信息 |
| | |
| | | var pinStockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew); |
| | | if (pinStockDetail != null) |
| | | { |
| | | if (pinStockDetail.SONo != notice.SONo) |
| | | if (palletNo != palletNoNew)//非整托拣货 |
| | | { |
| | | throw new Exception("拼托托盘上只能放同一个出库单下的物料!"); |
| | | } |
| | | if (pinStockDetail.SkuName != stockDetail.SkuName || pinStockDetail.LotNo != stockDetail.LotNo) |
| | | { |
| | | isNew = true; |
| | | if (pinStockDetail.SONo != notice.SONo) |
| | | { |
| | | throw new Exception("拼托托盘上只能放同一个出库单下的物料!"); |
| | | } |
| | | if (pinStockDetail.SkuName != stockDetail.SkuName || pinStockDetail.LotNo != stockDetail.LotNo) |
| | | { |
| | | isNew = true; |
| | | } |
| | | } |
| | | } |
| | | else |
| | |
| | | } |
| | | else |
| | | { |
| | | //修改拼托托盘库存明细 |
| | | pinStockDetail.Qty += int.Parse(PickQty); |
| | | pinStockDetail.LockQty += int.Parse(PickQty); |
| | | Db.Updateable(pinStockDetail).ExecuteCommand(); |
| | | if (palletNo != palletNoNew) |
| | | { |
| | | //修改拼托托盘库存明细 |
| | | pinStockDetail.Qty += int.Parse(PickQty); |
| | | pinStockDetail.LockQty += int.Parse(PickQty); |
| | | Db.Updateable(pinStockDetail).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | pinStockDetail.SONo = soNo; |
| | | Db.Updateable(pinStockDetail).ExecuteCommand(); |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | |
| | | |
| | | var comList = new List<BllCompleteDetail>(); |
| | | //判断是否存在拣货明细 |
| | | isComplete = 0;//所有无箱码或一级箱码拣货时,拣货明细应重新插入数据(体现多次拣货流程记录) |
| | | if (isComplete == 0) |
| | | { |
| | | //添加拣货明细 |
| | |
| | | |
| | | int isDel = 0; |
| | | |
| | | //删除或修改库存明细 |
| | | stockDetail.BitPalletMark = "1";//修改为零托标识 |
| | | stockDetail.Qty -= int.Parse(PickQty); |
| | | stockDetail.LockQty -= int.Parse(PickQty); |
| | | if (stockDetail.Qty == stockDetail.LockQty) |
| | | if (palletNo != palletNoNew) |
| | | { |
| | | stockDetail.Status = "2"; |
| | | } |
| | | else if (stockDetail.Qty > stockDetail.LockQty && stockDetail.LockQty > 0) |
| | | { |
| | | stockDetail.Status = "1"; |
| | | } |
| | | else |
| | | { |
| | | stockDetail.Status = "0"; |
| | | } |
| | | if (stockDetail.Qty <= 0) |
| | | { |
| | | Db.Deleteable(stockDetail).ExecuteCommand(); |
| | | //删除或修改库存明细 |
| | | stockDetail.BitPalletMark = "1";//修改为零托标识 |
| | | stockDetail.Qty -= int.Parse(PickQty); |
| | | stockDetail.LockQty -= int.Parse(PickQty); |
| | | if (stockDetail.Qty == stockDetail.LockQty) |
| | | { |
| | | stockDetail.Status = "2"; |
| | | } |
| | | else if (stockDetail.Qty > stockDetail.LockQty && stockDetail.LockQty > 0) |
| | | { |
| | | stockDetail.Status = "1"; |
| | | } |
| | | else |
| | | { |
| | | stockDetail.Status = "0"; |
| | | } |
| | | if (stockDetail.Qty <= 0) |
| | | { |
| | | Db.Deleteable(stockDetail).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | isDel = 1; |
| | | Db.Updateable(stockDetail).ExecuteCommand(); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | isDel = 1; |
| | | Db.Updateable(stockDetail).ExecuteCommand(); |
| | | } |
| | | |
| | | //判断托盘上物料是否拣货完毕 |
| | | if (isDel == 0) |
| | | { |
| | |
| | | try |
| | | { |
| | | var total = 0; |
| | | Expression<Func<BllCompleteDetail, bool>> item = Expressionable.Create<BllCompleteDetail>() |
| | | var detailInfo = Db.Queryable<BllCompleteDetail>().First(w => string.IsNullOrEmpty(w.BoxNo) || string.IsNullOrEmpty(w.BoxNo3)); |
| | | if (detailInfo == null) |
| | | { |
| | | Expression<Func<BllCompleteDetail, bool>> item = Expressionable.Create<BllCompleteDetail>() |
| | | .And(it => it.ExportAllotId == id) |
| | | .And(it => it.IsDel == "0") |
| | | .ToExpression();//注意 这一句 不能少 |
| | | var data = GetAllWhereAsync(item) |
| | | .GroupBy(m=>new |
| | | { |
| | | m.SONo, |
| | | m.SODetailNo, |
| | | m.StockId, |
| | | m.ExportAllotId, |
| | | var data = GetAllWhereAsync(item) |
| | | .GroupBy(m => new |
| | | { |
| | | m.SONo, |
| | | m.SODetailNo, |
| | | m.StockId, |
| | | m.ExportAllotId, |
| | | |
| | | m.BoxNo, |
| | | m.LotNo, |
| | | m.LotText, |
| | | m.SupplierLot, |
| | | m.SkuNo, |
| | | m.SkuName, |
| | | m.Standard, |
| | | m.PalletNo, |
| | | m.NowPalletNo, |
| | | }) |
| | | .Select(a => new CompleteDetailDto() |
| | | { |
| | | SONo = a.SONo, |
| | | SODetailNo = a.SODetailNo, |
| | | StockId = a.StockId, |
| | | ExportAllotId = a.ExportAllotId, |
| | | m.BoxNo, |
| | | m.LotNo, |
| | | m.LotText, |
| | | m.SupplierLot, |
| | | m.SkuNo, |
| | | m.SkuName, |
| | | m.Standard, |
| | | m.PalletNo, |
| | | m.NowPalletNo, |
| | | }) |
| | | .Select(a => new CompleteDetailDto() |
| | | { |
| | | SONo = a.SONo, |
| | | SODetailNo = a.SODetailNo, |
| | | StockId = a.StockId, |
| | | ExportAllotId = a.ExportAllotId, |
| | | |
| | | BoxNo = a.BoxNo, |
| | | LotNo = a.LotNo, |
| | | LotText = a.LotText, |
| | | SupplierLot = a.SupplierLot, |
| | | SkuNo = a.SkuNo, |
| | | SkuName = a.SkuName, |
| | | Standard = a.Standard, |
| | | PalletNo = a.PalletNo, |
| | | CompleteQty = SqlFunc.AggregateSum(a.CompleteQty), |
| | | NowPalletNo = a.NowPalletNo, |
| | | BoxNo = a.BoxNo, |
| | | LotNo = a.LotNo, |
| | | LotText = a.LotText, |
| | | SupplierLot = a.SupplierLot, |
| | | SkuNo = a.SkuNo, |
| | | SkuName = a.SkuName, |
| | | Standard = a.Standard, |
| | | PalletNo = a.PalletNo, |
| | | CompleteQty = SqlFunc.AggregateSum(a.CompleteQty), |
| | | NowPalletNo = a.NowPalletNo, |
| | | //CreateTime = a.CreateTime |
| | | }).ToOffsetPage(page, limit, ref total); |
| | | count = total; |
| | | return data; |
| | | } |
| | | else //箱码或支码为空说明是按数量拣货,增加 CreateTime 分组条件 |
| | | { |
| | | Expression<Func<BllCompleteDetail, bool>> item = Expressionable.Create<BllCompleteDetail>() |
| | | .And(it => it.ExportAllotId == id) |
| | | .And(it => it.IsDel == "0") |
| | | .ToExpression();//注意 这一句 不能少 |
| | | var data = GetAllWhereAsync(item) |
| | | .GroupBy(m => new |
| | | { |
| | | m.SONo, |
| | | m.SODetailNo, |
| | | m.StockId, |
| | | m.ExportAllotId, |
| | | |
| | | m.BoxNo, |
| | | m.LotNo, |
| | | m.LotText, |
| | | m.SupplierLot, |
| | | m.SkuNo, |
| | | m.SkuName, |
| | | m.Standard, |
| | | m.PalletNo, |
| | | m.NowPalletNo, |
| | | m.CreateTime |
| | | }) |
| | | .Select(a => new CompleteDetailDto() |
| | | { |
| | | SONo = a.SONo, |
| | | SODetailNo = a.SODetailNo, |
| | | StockId = a.StockId, |
| | | ExportAllotId = a.ExportAllotId, |
| | | |
| | | BoxNo = a.BoxNo, |
| | | LotNo = a.LotNo, |
| | | LotText = a.LotText, |
| | | SupplierLot = a.SupplierLot, |
| | | SkuNo = a.SkuNo, |
| | | SkuName = a.SkuName, |
| | | Standard = a.Standard, |
| | | PalletNo = a.PalletNo, |
| | | CompleteQty = SqlFunc.AggregateSum(a.CompleteQty), |
| | | NowPalletNo = a.NowPalletNo, |
| | | //CreateTime = a.CreateTime |
| | | }).ToOffsetPage(page, limit, ref total); |
| | | count = total; |
| | | return data; |
| | | count = total; |
| | | return data; |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | |
| | | "where bind.IsDel = '0' and notice.IsDel = '0' and bind.LotNo in (select LotNo from DataStock where IsDel = '0') "; |
| | | //出库 |
| | | string cstr = "select notice.SONo,allot.LotNo,allot.TaskNo CTaskNo,allot.SkuNo,allot.SkuName,allot.PalletNo," + |
| | | "allot.CreateTime CCreateTime,allot.Qty CQty,allot.Qty CAllotQty,Allot.Qty CFactQty,Allot.CompleteQty CompleteQty," + |
| | | "allot.UpdateTime CCreateTime,allot.Qty CQty,allot.Qty CAllotQty,Allot.Qty CFactQty,Allot.CompleteQty CompleteQty," + |
| | | "allot.LotText,allot.SupplierLot " + |
| | | "from BllExportAllot allot left join BllExportNoticeDetail notice on allot.SODetailNo = notice.Id " + |
| | | "where allot.IsDel = '0' and notice.IsDel = '0' " + |