HTML/views/ASNSetting/PalletBindFrom.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Pda/View/SoSetting/SampleOut.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/WMS.Entity/BllSoEntity/BLLExportNotice.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/WMS.Entity/BllSoEntity/BllCompleteDetail.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/WMS.Entity/BllSoEntity/BllExportAllot.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Wms/Wms/Controllers/BllAsnController.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
HTML/views/ASNSetting/PalletBindFrom.html
@@ -299,6 +299,7 @@ AsnNo: $("#BillCode").val(), PalletNo: $("#palletNo").val(), AsnDetailId: parseInt($("#detail").val()), LotNo: $("#detail").find("option:selected").text(), BoxNo: $("#boxNo").val(), IsContinue :IsContinue, TailBoxNo: $("#boxNo2").val(), Pda/View/SoSetting/SampleOut.html
@@ -243,7 +243,7 @@ <div id="layout-bill" class="layui-form-item layout-dropdownlist"> <label class="layui-form-label lableWidth">入库单:</label> <div class="layui-input-block" id="selectDiv"> <select id="bar" lay-filter="getbar" lay-search> <select id="AsnBar" lay-filter="getAsnBar" lay-search> <option value=""></option> </select> <img src="/assets/down_arraw.png"> @@ -296,7 +296,7 @@ </table> </div> <div id="" class="layout-tab-page"> <table class="layout-tab-content" border="" cellspacing="" cellpadding=""> <table id="kuneiQty" class="layout-tab-content" border="" cellspacing="" cellpadding=""> <tr> <td> <table class="tbl-box-sim-info" border="" cellspacing="" cellpadding=""> @@ -380,63 +380,74 @@ <div id="" class="layout-bill-info"> <form class="layui-form" action="" style="height: auto;"> <div id="kuneilabel2" > <div id="layout-bill2" class="layui-form-item layout-dropdownlist"> <label class="layui-form-label lableWidth">出库单:</label> <div class="layui-input-block" id="selectDiv2"> <select id="bar2" lay-filter="getbar2" lay-search> <option value=""></option> </select> <img src="/assets/down_arraw.png"> </div> </div> <div id="layout-skuLotNo2" class="layui-form-item layout-dropdownlist"> <label class="layui-form-label lableWidth">物料 - 批次:</label> <div class="layui-input-block"> <select id="skuLotNo2" lay-filter="getSkuLotNo2" lay-search> <option value=""></option> </select> <img src="/assets/down_arraw.png"> </div> </div> <div id="" class="layout-tab-page"> <table class="tbl-box-sim-info" border="" cellspacing="" cellpadding=""> <tr> <td> <div class="layui-form-item"> <label class="layui-form-label" style="width: 50%;">计划数量:</label> <div class="layui-input-block" style="width: 50%;margin-left:50%;"> <input id="planQty2" type="text" lay-verify="" disabled placeholder="" class="layui-input"> </div> </div> </td> <td> <div class="layui-form-item"> <label class="layui-form-label" style="width: 50%">完成数量:</label> <div class="layui-input-block" style="width: 50%;margin-left:50%;"> <input id="finishQty2" type="text" lay-verify="" disabled placeholder="" class="layui-input"> </div> </div> <div id="layout-bill2" class="layui-form-item layout-dropdownlist"> <label class="layui-form-label lableWidth">出库单:</label> <div class="layui-input-block" id="selectDiv2"> <select id="bar2" lay-filter="getbar2" lay-search> <option value=""></option> </select> <img src="/assets/down_arraw.png"> </div> </div> <div id="layout-skuLotNo2" class="layui-form-item layout-dropdownlist"> <label class="layui-form-label lableWidth">物料 - 批次:</label> <div class="layui-input-block"> <select id="skuLotNo2" lay-filter="getSkuLotNo2" lay-search> <option value=""></option> </select> <img src="/assets/down_arraw.png"> </div> </div> <div id="" class="layout-tab-page"> <table class="tbl-box-sim-info" border="" cellspacing="" cellpadding=""> <tr> <td> <div class="layui-form-item"> <label class="layui-form-label" style="width: 50%;">计划数量:</label> <div class="layui-input-block" style="width: 50%;margin-left:50%;"> <input id="planQty2" type="text" lay-verify="" disabled placeholder="" class="layui-input"> </div> </div> </td> <td> <div class="layui-form-item"> <label class="layui-form-label" style="width: 50%">完成数量:</label> <div class="layui-input-block" style="width: 50%;margin-left:50%;"> <input id="finishQty2" type="text" lay-verify="" disabled placeholder="" class="layui-input"> </div> </div> </td> </tr> <tr> <td colspan="3"> <div class="layui-form-item"> <label class="layui-form-label" style="width: 17%;">规格:</label> <div class="layui-input-block" style="width: 83%;margin-left:17%;"> <input id="standard2" type="text" lay-verify="" disabled placeholder="" class="layui-input"> </div> </div> </td> </tr> </table> </div> </td> </tr> <tr> <td colspan="3"> <div class="layui-form-item"> <label class="layui-form-label" style="width: 17%;">规格:</label> <div class="layui-input-block" style="width: 83%;margin-left:17%;"> <input id="standard2" type="text" lay-verify="" disabled placeholder="" class="layui-input"> </div> </div> </td> </tr> </table> </div> </div> <div id="kuqianlabel2" > <div id="layout-bill" class="layui-form-item layout-dropdownlist"> <label class="layui-form-label lableWidth">入库单:</label> <div class="layui-input-block" id="selectDiv"> <select id="AsnBar2" lay-filter="getAsnBar2" lay-search> <option value=""></option> </select> <img src="/assets/down_arraw.png"> </div> </div> </div> <div id="layout-pallet" class="layui-form-item layout-input"> <label class="layui-form-label lableWidth">托盘条码:</label> <div class="layui-input-block"> @@ -543,6 +554,11 @@ $('#kuneilabel').hide(); $('#kuqianlabel').hide(); $('#kuneilabel2').hide(); $('#kuqianlabel2').hide(); $('#kuneiQty').hide(); $('#option1').attr("style", "background-color: aqua;width: 45.77%;float: left;text-align: center;"); //选中后颜色 $('#option2').attr("style", "background-color: #999;width: 45.77%;float: right;text-align: center;"); //默认颜色 $('#content2').hide(); @@ -637,11 +653,15 @@ if (res.code == 0){ if (res.data == "0") {//库内取样 $('#kuneilabel').show(); $('#kuneiQty').show(); $('#kuqianlabel').hide(); } if (res.data == "1") {//库前取样 $('#kuqianlabel').show(); $('#kuneilabel').hide(); $('#kuneiQty').hide(); updateAsnBillList(); } // updateBillList(); // if ($('#bar').val() == "") { @@ -672,21 +692,21 @@ //初始化渲染 入库单 function updateAsnBillList() { $("#bar").empty() $("#bar").append('<option value =>' + '</option>'); $("#AsnBar").empty() $("#AsnBar").append('<option value =>' + '</option>'); form.render('select'); var param = { PalletNo: $("#palletNo").val(), palletNo: $("#palletNo").val(), }; synData(IP + "/PdaSo/GetRunSoNoticeList", param, 'post', function (res) { synData(IP + "/PdaSo/GetAsnNoByPallet", param, 'get', function (res) { if (res.code == 0) { //成功 console.log(res.data); for (var i = 0; i < res.data.length; i++) { if (i == 0) { $("#bar").append('<option value =' + res.data[i] + ' selected>' + res.data[i] + '</option>'); $("#AsnBar").append('<option value =' + res.data[i] + ' selected>' + res.data[i] + '</option>'); } else { $("#bar").append('<option value =' + res.data[i] + '>' + res.data[i] + '</option>'); $("#AsnBar").append('<option value =' + res.data[i] + '>' + res.data[i] + '</option>'); } } form.render('select'); @@ -1209,27 +1229,76 @@ } checkPalletState2() }) //初始化渲染 入库单 function updateAsnBillList2() { $("#AsnBar2").empty() $("#AsnBar2").append('<option value =>' + '</option>'); form.render('select'); console.log("afdsaf") var param = { palletNo: $("#palletNo2").val(), }; synData(IP + "/PdaSo/GetAsnNoByPallet", param, 'get', function (res) { if (res.code == 0) { //成功 console.log(res.data); for (var i = 0; i < res.data.length; i++) { if (i == 0) { $("#AsnBar2").append('<option value =' + res.data[i] + ' selected>' + res.data[i] + '</option>'); } else { $("#AsnBar2").append('<option value =' + res.data[i] + '>' + res.data[i] + '</option>'); } } form.render('select'); } else { //不成功 layer.msg(res.msg, { icon: 2, time: 2000 //2秒关闭(如果不配置,默认是3秒) }); } }); } //检查托盘状态 function checkPalletState2() { var param = { "PalletNo": $("#palletNo2").val() } } synData(IP + "/PdaSo/IsEnableOkPalletNo", param, 'post', function (res) { if (res.code == 0) { //成功 updateBillList2(); console.log($('#bar2').val()) if ($('#bar2').val() == "") { console.log(1) clear21(); return; } else { console.log(2) updateSkuLotNoList2(); updateQtyList2(); getBar2(); GetDataInfo(); } synData(IP + "/PdaSo/GetSampleType", param, 'get', function (res) { if (res.code == 0){ if (res.data == "0") {//库内取样 $('#kuneilabel2').show(); $('#kuqianlabel2').hide(); } if (res.data == "1") {//库前取样 $('#kuqianlabel2').show(); $('#kuneilabel2').hide(); updateAsnBillList2(); } // updateBillList2(); // console.log($('#bar2').val()) // if ($('#bar2').val() == "") { // console.log(1) // clear21(); // return; // } else { // console.log(2) // updateSkuLotNoList2(); // updateQtyList2(); // getBar2(); // GetDataInfo(); // } }else { //不成功 layer.msg(res.msg, { icon: 2, time: 2000 //2秒关闭(如果不配置,默认是3秒) }, function () { }); } }); } else { //不成功 layer.msg(res.msg, { icon: 2, Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs
@@ -681,12 +681,13 @@ { throw new Exception("当前单据明细还未生成标签,请选择重置批次选项为‘是’;"); } maxLotNoStr = label.Max(a => a.LotNo); maxBoxCode = label.Max(a => a.BoxNo); maxLotNoStr = labelCount.Max(a => a.LotNo); if (string.IsNullOrWhiteSpace(maxLotNoStr)) { maxLotNoStr = toDayTime.Substring(2, 6) + "0001"; } maxBoxCode = label.Where(m => m.LotNo == maxLotNoStr).Max(a => a.BoxNo); } } @@ -846,13 +847,14 @@ { throw new Exception("当前单据明细还未生成标签,请选择重置批次选项为‘是’;"); } maxCodestr2 = label.Max(a => a.LotNo); ; maxboxcode2 = label.Max(a => a.BoxNo);//箱号; maxboxcode3 = label.Max(a => a.BoxNo3);//支号; maxCodestr2 = labelCount.Max(a => a.LotNo); ; if (string.IsNullOrWhiteSpace(maxCodestr2)) { maxCodestr2 = toDayTime2.Substring(2, 6) + "0001"; } maxboxcode2 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo);//箱号; maxboxcode3 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo3);//支号; } } Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
@@ -341,7 +341,6 @@ { throw new Exception(e.Message); } throw new NotImplementedException(); } //出库pda拣货 @@ -1314,6 +1313,7 @@ } else { //判断当前托盘是否是在平库或库外 type = "1";//库前取样 } return type; @@ -1350,6 +1350,563 @@ } } //取样出库拣货(标签) public void SampleSoSetPick(string soType,string soNo, string soDetailId, string palletNo, string boxNo, string boxNo3, string pickQty1, string asnNo, int userId) { Db.BeginTran(); try { if (string.IsNullOrWhiteSpace(soType)) { throw new Exception("取样标识不能为空"); } //soType: 0库内取样,有出库单及分配信息; 1库前取样,反向添加出库单及分配信息 if (soType == "1") { #region 判断 if (string.IsNullOrWhiteSpace(asnNo)) { throw new Exception("入库单不能为空"); } if (string.IsNullOrWhiteSpace(palletNo)) { throw new Exception("托盘码不能为空"); } if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0) { throw new Exception("追溯条码和拣货数量不能同时输入"); } //先判断是否是库外取样托盘 var allot = Db.Queryable<BllExportAllot>().First(m => m.IsDel == "0" && m.PalletNo == palletNo && m.Status != "5" && m.Status != "6"); if (allot != null) { throw new Exception("当前托盘不属于库前取样"); } //出库单 var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.AsnSampleNo == asnNo); BllExportNoticeDetail noticeDetail2; if (notice != null && notice.Status != "6") { } else { //创建出库单及明细 } //出库单明细 var noticeDetail = Db.Queryable<BllExportNoticeDetail>() .First(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId)); if (noticeDetail == null) { throw new Exception("未查询到该出库单明细的信息"); } //出库分配信息 var allot2 = Db.Queryable<BllExportAllot>().First(m => m.IsDel == "0" && m.Status == "5" && m.SONo == soNo && m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo); if (allot2 == null) { throw new Exception("未查询到该托盘的分配信息"); } //库存明细 var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.Id == allot.StockId); if (stockDetail == null) { throw new Exception("未查询到该托盘分配的库存明细信息!"); } //库存总表 var stock = Db.Queryable<DataStock>().First(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo); if (stock == null) { throw new Exception("未查询到该托盘分配的库存信息!"); } #endregion //判断是散支拣货还是数量拣货 var biaoShi = "0";//0:整箱拣货、1:散支拣货、2:数量拣货 List<DataBoxInfo> boxInfos; var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo); if (boxInfo.Count() == 0) { throw new Exception("未查询到该箱码及追溯码的信息"); } boxInfos = boxInfo.ToList(); if (!string.IsNullOrWhiteSpace(boxNo3)) //散支拣货 { boxInfos = boxInfos.Where(m => m.BoxNo3 == boxNo3).ToList(); if (boxInfos.Count() == 0) { throw new Exception("未查询到该箱码及追溯码的信息"); } if (boxInfos.Count() > 1) { throw new Exception("该追溯支码的信息大于1条,信息错误,请核实!"); } if (boxInfos.Any(m => m.PalletNo != palletNo)) { throw new Exception("该托盘与箱码没有绑定关系"); } biaoShi = "1"; } else if (!string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0)//数量拣货 { if (boxInfo.Count() > 1) { throw new Exception("该箱码内存在支码不能进行数量拣货"); } int boxQty = boxInfo.First().Qty; if (Convert.ToInt32(pickQty1) > boxQty) { throw new Exception("拣货数量不能大于箱内数量"); } biaoShi = "2"; } else //整箱拣货 { if (boxInfo.Count() == 0) { throw new Exception("未查询到该箱码的信息"); } if (boxInfo.Any(m => m.PalletNo != palletNo)) { throw new Exception("该托盘与箱码没有绑定关系"); } } var pickQty = 0;//拣货的数量 var comDetailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToList(); var comList = new List<BllCompleteDetail>(); foreach (var item in boxInfos) { if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo3 == item.BoxNo3)) { throw new Exception($"当前{item.BoxNo}中{item.BoxNo3}已拣货完成,请勿重复拣货"); } //添加拣货明细 var completeDetail = new BllCompleteDetail() { SONo = soNo, SODetailNo = int.Parse(soDetailId), ExportAllotId = allot.Id, StockId = allot.StockId, BoxNo = item.BoxNo, BoxNo2 = item.BoxNo2, BoxNo3 = item.BoxNo3, LotNo = allot.LotNo, LotText = allot.LotText, SupplierLot = allot.SupplierLot, SkuNo = allot.SkuNo, SkuName = allot.SkuName, Standard = allot.Standard, PalletNo = palletNo, CompleteQty = biaoShi == "2" ? int.Parse(pickQty1) : item.Qty, InspectMark = "1", CreateUser = userId }; comList.Add(completeDetail); if (biaoShi != "2") { //删除库存箱码明细 Db.Deleteable(item).ExecuteCommand(); } else//数量拣货 { if (int.Parse(pickQty1) == item.Qty) { //删除库存箱码明细 Db.Deleteable(item).ExecuteCommand(); } else { item.Qty -= int.Parse(pickQty1); item.BitBoxMark = "1";//零箱标识 item.InspectMark = "1";//抽检箱标识 Db.Updateable(item).ExecuteCommand(); } } pickQty += item.Qty; } //改变库内箱码是否零箱信息 if (biaoShi == "1") { var boxSurplusList = boxInfo.Where(m => m.BoxNo3 != boxNo3).ToList(); foreach (var item in boxSurplusList) { item.BitBoxMark = "1"; item.InspectMark = "1"; Db.Updateable(item).ExecuteCommand(); } } Db.Insertable(comList).ExecuteCommand(); //修改出库分配信息 allot.CompleteQty += pickQty; allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3"; if (allot.Status == "5") { //判断该托盘是否还存在物料 存在改为待回库 待回库完成后改为已完成 } Db.Updateable(allot).ExecuteCommand(); //删除或修改库存明细 stockDetail.BitPalletMark = "1";//修改为零托标识 stockDetail.Qty -= pickQty; stockDetail.LockQty -= 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 { Db.Updateable(stockDetail).ExecuteCommand(); } stock.Qty -= pickQty; stock.LockQty -= pickQty; if (stock.Qty <= 0) { Db.Deleteable(stock).ExecuteCommand(); } else { Db.Updateable(stock).ExecuteCommand(); } var num2 = Db.Queryable<DataStockDetail>().Count(m => m.IsDel == "0" && m.PalletNo == palletNo); if (num2 <= 0) { //改变托盘状态 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(); } //修改出库单明细拣货数量 noticeDetail.CompleteQty += pickQty; Db.Updateable(noticeDetail).ExecuteCommand(); var num = Db.Queryable<BllExportNoticeDetail>() .Count(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty); if (num <= 0) { notice.Status = "4"; //更改为执行完成 } //修改出库单信息 Db.Updateable(notice).ExecuteCommand(); } else if(soType == "0") { #region 判断 if (string.IsNullOrWhiteSpace(soNo)) { throw new Exception("出库单据不能为空"); } if (string.IsNullOrWhiteSpace(soDetailId)) { throw new Exception("出库物料-批次不能为空"); } if (string.IsNullOrWhiteSpace(palletNo)) { throw new Exception("托盘码不能为空"); } if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0) { throw new Exception("追溯条码和拣货数量不能同时输入"); } //出库单 var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == soNo); if (notice == null) { throw new Exception("未查询到该出库单的信息"); } if (notice.Status != "3") { throw new Exception("出库单的状态不是正在执行,不能拣货"); } //出库单明细 var noticeDetail = Db.Queryable<BllExportNoticeDetail>() .First(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId)); if (noticeDetail == null) { throw new Exception("未查询到该出库单明细的信息"); } //出库分配信息 var allot = Db.Queryable<BllExportAllot>().First(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.SONo == soNo && m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo); if (allot == null) { throw new Exception("未查询到该托盘的分配信息"); } //剩余拣货数量(待拣减去已拣) var needQty = allot.Qty - allot.CompleteQty; //库存明细 var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.Id == allot.StockId); if (stockDetail == null) { throw new Exception("未查询到该托盘分配的库存明细信息!"); } //库存总表 var stock = Db.Queryable<DataStock>().First(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo); if (stock == null) { throw new Exception("未查询到该托盘分配的库存信息!"); } #endregion var biaoShi = "0";//0:整箱拣货、1:散支拣货、2:数量拣货 List<DataBoxInfo> boxInfos; var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo); if (boxInfo.Count() == 0) { throw new Exception("未查询到该箱码及追溯码的信息"); } boxInfos = boxInfo.ToList(); if (!string.IsNullOrWhiteSpace(boxNo3)) //散支拣货 { boxInfos = boxInfos.Where(m => m.BoxNo3 == boxNo3).ToList(); if (boxInfos.Count() == 0) { throw new Exception("未查询到该箱码及追溯码的信息"); } if (boxInfos.Count() > 1) { throw new Exception("该追溯支码的信息大于1条,信息错误,请核实!"); } if (boxInfos.Any(m => m.PalletNo != palletNo)) { throw new Exception("该托盘与箱码没有绑定关系"); } var boxQty = boxInfos.First().Qty; if (boxQty > needQty) { throw new Exception("拣货数量不能大于剩余待拣数量"); } biaoShi = "1"; } else if (!string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0)//数量拣货 { if (boxInfo.Count() > 1) { throw new Exception("该箱码内存在支码不能进行数量拣货"); } int boxQty = boxInfo.First().Qty; if (Convert.ToInt32(pickQty1) > boxQty) { throw new Exception("拣货数量不能大于箱内数量"); } if (Convert.ToInt32(pickQty1) > needQty) { throw new Exception("拣货数量不能大于剩余待拣数量"); } biaoShi = "2"; } else //整箱拣货 { if (boxInfo.Count() == 0) { throw new Exception("未查询到该箱码的信息"); } if (boxInfo.Any(m => m.PalletNo != palletNo)) { throw new Exception("该托盘与箱码没有绑定关系"); } var boxQty = boxInfo.GroupBy(m => m.BoxNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToList(); if (boxQty[0] > needQty) { throw new Exception("拣货数量不能大于箱内剩余待拣数量"); } } var pickQty = 0;//拣货的数量 var comDetailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == palletNo).ToList(); var comList = new List<BllCompleteDetail>(); foreach (var item in boxInfos) { if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo3 == item.BoxNo3)) { throw new Exception($"当前{item.BoxNo}中{item.BoxNo3}已拣货完成,请勿重复拣货"); } //添加拣货明细 var completeDetail = new BllCompleteDetail() { SONo = soNo, SODetailNo = int.Parse(soDetailId), ExportAllotId = allot.Id, StockId = allot.StockId, BoxNo = item.BoxNo, BoxNo2 = item.BoxNo2, BoxNo3 = item.BoxNo3, LotNo = allot.LotNo, LotText = allot.LotText, SupplierLot = allot.SupplierLot, SkuNo = allot.SkuNo, SkuName = allot.SkuName, Standard = allot.Standard, PalletNo = palletNo, CompleteQty = biaoShi == "2" ? int.Parse(pickQty1) : item.Qty, CreateUser = userId }; comList.Add(completeDetail); if (biaoShi != "2") { //删除库存箱码明细 Db.Deleteable(item).ExecuteCommand(); } else//数量拣货 { if (int.Parse(pickQty1) == item.Qty) { //删除库存箱码明细 Db.Deleteable(item).ExecuteCommand(); } else { item.Qty -= int.Parse(pickQty1); item.BitBoxMark = "1";//零箱标识 Db.Updateable(item).ExecuteCommand(); } } pickQty += item.Qty; } //改变库内箱码是否零箱信息 if (biaoShi == "1") { var boxSurplusList = boxInfo.Where(m => m.BoxNo3 != boxNo3).ToList(); foreach (var item in boxSurplusList) { item.BitBoxMark = "1"; Db.Updateable(item).ExecuteCommand(); } } Db.Insertable(comList).ExecuteCommand(); //修改出库分配信息 allot.CompleteQty += pickQty; allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3"; if (allot.Status == "5") { //判断该托盘是否还存在物料 存在改为待回库 待回库完成后改为已完成 } Db.Updateable(allot).ExecuteCommand(); //删除或修改库存明细 stockDetail.BitPalletMark = "1";//修改为零托标识 stockDetail.Qty -= pickQty; stockDetail.LockQty -= 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 { Db.Updateable(stockDetail).ExecuteCommand(); } stock.Qty -= pickQty; stock.LockQty -= pickQty; if (stock.Qty <= 0) { Db.Deleteable(stock).ExecuteCommand(); } else { Db.Updateable(stock).ExecuteCommand(); } var num2 = Db.Queryable<DataStockDetail>().Count(m => m.IsDel == "0" && m.PalletNo == palletNo); if (num2 <= 0) { //改变托盘状态 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(); } //修改出库单明细拣货数量 noticeDetail.CompleteQty += pickQty; Db.Updateable(noticeDetail).ExecuteCommand(); var num = Db.Queryable<BllExportNoticeDetail>() .Count(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty); if (num <= 0) { notice.Status = "4"; //更改为执行完成 } //修改出库单信息 Db.Updateable(notice).ExecuteCommand(); } //添加操作日志记录 var k = new OperationSOServer().AddLogOperationSo("PDA模块", "拣货出库", soNo, "拣货", $"在PDA上对出库单号为:{soNo}的托盘码为:{palletNo}的拣货操作", userId); Db.CommitTran(); } catch (Exception e) { Db.RollbackTran(); throw new Exception(e.Message); } } } } Wms/WMS.Entity/BllSoEntity/BLLExportNotice.cs
@@ -112,6 +112,13 @@ public string Demo { get; set; } /// <summary> /// Desc:入库前取样出库的入库单据标识 /// Default: /// Nullable:True /// </summary> public string AsnSampleNo { get; set; } /// <summary> /// 完成时间 /// </summary> public DateTime? CompleteTime { get; set; } Wms/WMS.Entity/BllSoEntity/BllCompleteDetail.cs
@@ -124,6 +124,14 @@ public string NowPalletNo {get;set;} /// <summary> /// 是否抽检箱 0:否 1:是 /// Default: /// Nullable:True /// </summary> public string InspectMark { get; set; } [Navigate(NavigateType.OneToOne, nameof(CreateUser))] public SysUserInfor CreateUserInfo { get; set; } Wms/WMS.Entity/BllSoEntity/BllExportAllot.cs
@@ -168,6 +168,14 @@ public string UnstackingMode { get; set; } /// <summary> /// 是否抽检托 0:否 1:是 /// Default: /// Nullable:True /// </summary> public string InspectMark { get; set; } [Navigate(NavigateType.OneToOne, nameof(LogisticsId))] public SysLogisticsInfo LogisticsInfoInfo { get; set; } Wms/Wms/Controllers/BllAsnController.cs
@@ -979,7 +979,7 @@ return Ok(new { code = 1, msg = "未获取到当前操作人信息" }); } _BoxInfoSvc.DelLabelByAsnNo(model.AsnNo,model.LotNo,int.Parse(userId)); return Ok(new { code = 0, msg = "成功获取单据下所有批次号信息", data = "" }); return Ok(new { code = 0, msg = "删除成功", data = "" }); } catch (Exception e) {