From 1e7283cacb5eb6de492c6c6874aeaa316063989c Mon Sep 17 00:00:00 2001 From: Demo <Demo@DESKTOP-CPA90BF> Date: 星期三, 13 三月 2024 16:46:35 +0800 Subject: [PATCH] Merge branch 'csc' --- HTML/views/ASNSetting/PalletBindFrom.html | 1 Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs | 12 Wms/WMS.Entity/BllSoEntity/BllExportAllot.cs | 8 Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs | 559 +++++++++++++++++++++++++++++++++++++++ Wms/WMS.Entity/BllSoEntity/BllCompleteDetail.cs | 8 Wms/Wms/Controllers/BllAsnController.cs | 2 Pda/View/SoSetting/SampleOut.html | 227 ++++++++++----- Wms/WMS.Entity/BllSoEntity/BLLExportNotice.cs | 7 8 files changed, 738 insertions(+), 86 deletions(-) diff --git a/HTML/views/ASNSetting/PalletBindFrom.html b/HTML/views/ASNSetting/PalletBindFrom.html index bf81733..b3d50ff 100644 --- a/HTML/views/ASNSetting/PalletBindFrom.html +++ b/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(), diff --git a/Pda/View/SoSetting/SampleOut.html b/Pda/View/SoSetting/SampleOut.html index 4fc9be3..e54a94e 100644 --- a/Pda/View/SoSetting/SampleOut.html +++ b/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, diff --git a/Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs b/Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs index 8c2988c..a78bdc4 100644 --- a/Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs +++ b/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);//鏀彿; } } diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs index f2b5cc7..211d77a 100644 --- a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs +++ b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs @@ -341,7 +341,6 @@ { throw new Exception(e.Message); } - throw new NotImplementedException(); } //鍑哄簱pda鎷h揣 @@ -1314,6 +1313,7 @@ } else { + //鍒ゆ柇褰撳墠鎵樼洏鏄惁鏄湪骞冲簱鎴栧簱澶� type = "1";//搴撳墠鍙栨牱 } return type; @@ -1350,6 +1350,563 @@ } } + //鍙栨牱鍑哄簱鎷h揣(鏍囩) + 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)) //鏁f敮鎷h揣 + { + 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)//鏁伴噺鎷h揣 + { + if (boxInfo.Count() > 1) + { + throw new Exception("璇ョ鐮佸唴瀛樺湪鏀爜涓嶈兘杩涜鏁伴噺鎷h揣"); + } + int boxQty = boxInfo.First().Qty; + if (Convert.ToInt32(pickQty1) > boxQty) + { + throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺"); + } + + biaoShi = "2"; + } + else //鏁寸鎷h揣 + { + if (boxInfo.Count() == 0) + { + throw new Exception("鏈煡璇㈠埌璇ョ鐮佺殑淇℃伅"); + } + if (boxInfo.Any(m => m.PalletNo != palletNo)) + { + throw new Exception("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴"); + } + + } + var pickQty = 0;//鎷h揣鐨勬暟閲� + 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}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣"); + } + //娣诲姞鎷h揣鏄庣粏 + 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//鏁伴噺鎷h揣 + { + 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("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣"); + } + //鍑哄簱鍗曟槑缁� + 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("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅"); + } + //鍓╀綑鎷h揣鏁伴噺锛堝緟鎷e噺鍘诲凡鎷o級 + 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)) //鏁f敮鎷h揣 + { + 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("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺"); + } + + biaoShi = "1"; + } + else if (!string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0)//鏁伴噺鎷h揣 + { + if (boxInfo.Count() > 1) + { + throw new Exception("璇ョ鐮佸唴瀛樺湪鏀爜涓嶈兘杩涜鏁伴噺鎷h揣"); + } + int boxQty = boxInfo.First().Qty; + if (Convert.ToInt32(pickQty1) > boxQty) + { + throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺"); + } + if (Convert.ToInt32(pickQty1) > needQty) + { + throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺"); + } + + biaoShi = "2"; + } + else //鏁寸鎷h揣 + { + 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("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺"); + } + } + var pickQty = 0;//鎷h揣鐨勬暟閲� + 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}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣"); + } + //娣诲姞鎷h揣鏄庣粏 + 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//鏁伴噺鎷h揣 + { + 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妯″潡", "鎷h揣鍑哄簱", soNo, "鎷h揣", $"鍦≒DA涓婂鍑哄簱鍗曞彿涓猴細{soNo}鐨勬墭鐩樼爜涓猴細{palletNo}鐨勬嫞璐ф搷浣�", userId); + Db.CommitTran(); + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + } + } } diff --git a/Wms/WMS.Entity/BllSoEntity/BLLExportNotice.cs b/Wms/WMS.Entity/BllSoEntity/BLLExportNotice.cs index 0fe0ca2..b8549d4 100644 --- a/Wms/WMS.Entity/BllSoEntity/BLLExportNotice.cs +++ b/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; } diff --git a/Wms/WMS.Entity/BllSoEntity/BllCompleteDetail.cs b/Wms/WMS.Entity/BllSoEntity/BllCompleteDetail.cs index 95eb98c..c13d2d5 100644 --- a/Wms/WMS.Entity/BllSoEntity/BllCompleteDetail.cs +++ b/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; } diff --git a/Wms/WMS.Entity/BllSoEntity/BllExportAllot.cs b/Wms/WMS.Entity/BllSoEntity/BllExportAllot.cs index 2e7369d..0718c18 100644 --- a/Wms/WMS.Entity/BllSoEntity/BllExportAllot.cs +++ b/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; } diff --git a/Wms/Wms/Controllers/BllAsnController.cs b/Wms/Wms/Controllers/BllAsnController.cs index d6db2ab..badb7b4 100644 --- a/Wms/Wms/Controllers/BllAsnController.cs +++ b/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) { -- Gitblit v1.8.0