From fd9ce381b904a22593de2ab242fb8f65cee45efa Mon Sep 17 00:00:00 2001 From: chengsc <11752@DESKTOP-DS49RCP> Date: 星期四, 22 五月 2025 15:27:48 +0800 Subject: [PATCH] 修改问题 --- Wms/WMS.BLL/HttpServer.cs | 416 +++++++++++ Pda/View/SoSetting/ExNoticeOut.html | 7 Pda/js/public.js | 16 Wms/WMS.BLL/BllQualityServer/InspectionRequestServer.cs | 172 +--- Wms/WMS.IBLL/IHttpServer.cs | 25 Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | 10 Pda/View/AsnSetting/requestRuku.html | 18 Wms/WMS.Entity/LogEntity/LogTask.cs | 2 Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs | 1314 +++++++++++++++++----------------- HTML/views/HouseWithinSetting/CRLogTask.html | 17 Wms/Wms/Controllers/BllSoController.cs | 2 HTML/views/QualityControl/InspectionRequest.html | 6 Wms/Model/InterFaceModel/AsnModels.cs | 1 Wms/WMS.BLL/Logic/AllotLocation.cs | 26 Wms/Wms/Controllers/DownApiController.cs | 153 ++++ 15 files changed, 1,352 insertions(+), 833 deletions(-) diff --git a/HTML/views/HouseWithinSetting/CRLogTask.html b/HTML/views/HouseWithinSetting/CRLogTask.html index 00fa7f6..bfe161a 100644 --- a/HTML/views/HouseWithinSetting/CRLogTask.html +++ b/HTML/views/HouseWithinSetting/CRLogTask.html @@ -682,15 +682,14 @@ layer.confirm('纭畾瀹屾垚閫変腑鐨勫嚭搴撲换鍔★紵', function (index) { var param = { taskNo: data.TaskNo, - }; - var postUrl="/BllCheck/FinishCheckTask" - if(data.OrderType=='3'){ - postUrl='/BllCheck/FinishMoveTask' - } - sendData(IP + postUrl, param, 'post', function (res) { + TaskStatus:"2", + TaskType:data.Type + }; + + sendData(IP + "/DownApi/ReceiveRenGongSignal", param, 'post', function (res) { console.log(res); - if (res.code == 0) { //鎴愬姛 - layer.msg(res.msg, { + if (res.Success == "0") { //鎴愬姛 + layer.msg(res.Message, { icon: 1, time: 1000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級 }, function () { @@ -701,7 +700,7 @@ }); }); } else { //涓嶆垚鍔� - layer.msg(res.msg, { + layer.msg(res.Message, { icon: 2, time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級 }, function () { }); diff --git a/HTML/views/QualityControl/InspectionRequest.html b/HTML/views/QualityControl/InspectionRequest.html index 30cefc5..b452057 100644 --- a/HTML/views/QualityControl/InspectionRequest.html +++ b/HTML/views/QualityControl/InspectionRequest.html @@ -149,10 +149,8 @@ <div class="layui-input-inline" style="width: 220px;"> <select name="PickingArea" id="PickingArea" lay-search> <option value=""></option> - <option value="1">1</option> - <option value="2">2</option> - <option value="3">3</option> - <option value="4">4</option> + <option value="B020101">B020101</option> + <option value="B050101">B050101</option> </select> </div> </div> diff --git a/Pda/View/AsnSetting/requestRuku.html b/Pda/View/AsnSetting/requestRuku.html index 3c66790..aa57c55 100644 --- a/Pda/View/AsnSetting/requestRuku.html +++ b/Pda/View/AsnSetting/requestRuku.html @@ -88,7 +88,17 @@ autocomplete="off" class="layui-input"> </div> </div> - + <div id="" class="layui-form-item layout-dropdownlist"> + <label class="layui-form-label" lang>灞傛暟锛�</label> + <div class="layui-input-block" id="cengDiv"> + <select id="ceng" lay-filter="cengSelect" lay-search> + <option value=""></option> + <option value="1">1灞�</option> + <option value="2">2灞�</option> + </select> + <img src="/assets/down_arraw.png"> + </div> + </div> <!-- <table class="layout-tbl-input" border="" cellspacing="" cellpadding=""> <tr> <td colspan="2"> @@ -192,9 +202,10 @@ } var param1 = { "PalletNo": $("#PalletNo").val() - } + } //鑾峰彇鎵樼洏涓婃灦淇℃伅 sendData(IP + "/PdaAsn/IsEnablePalletNo", param1, 'post', function (res) { + if (res.code == 0) { //鎴愬姛 } else { //涓嶆垚鍔� @@ -204,7 +215,7 @@ }, function () { }); - return + //return } }); } @@ -220,6 +231,7 @@ } var param = { PalletNo: $("#PalletNo").val(), + Ceng: $("#ceng").val(), HouseNo:"W02" } sendData(IP + "/DownApi/RequestLocation", param, 'post', function (res) { diff --git a/Pda/View/SoSetting/ExNoticeOut.html b/Pda/View/SoSetting/ExNoticeOut.html index 8493134..46e0d74 100644 --- a/Pda/View/SoSetting/ExNoticeOut.html +++ b/Pda/View/SoSetting/ExNoticeOut.html @@ -105,6 +105,13 @@ <div class="layui-input-block"> <select id="endSelect" lay-filter="endSelect" lay-search> <option value=""></option> + <option value="B020101">涓�妤�-1</option> + <option value="B020102">涓�妤�-2</option> + <option value="B020103">涓�妤�-3</option> + <option value="B020104">涓�妤�-4</option> + <option value="B050101">浜屾ゼ-1</option> + <option value="B050102">浜屾ゼ-2</option> + <option value="B050103">浜屾ゼ-3</option> </select> <img src="/assets/down_arraw.png"> </div> diff --git a/Pda/js/public.js b/Pda/js/public.js index 345f420..f523964 100644 --- a/Pda/js/public.js +++ b/Pda/js/public.js @@ -18,19 +18,19 @@ if (!$.cookie('token')) { callbackFun("鐧诲綍浜轰俊鎭凡澶辨晥"); try { - parent.window.location.href = '/views/Login.html'; + parent.window.location.href = '/View/login.html'; } catch (error) { - window.location.href = '/views/Login.html'; + window.location.href = '/View/login.html'; } return; } if (isTokenExpired($.cookie('token'))) { try { - parent.window.location.href = '/views/Login.html'; + parent.window.location.href = '/View/login.html'; } catch (error) { - window.location.href = '/views/Login.html'; + window.location.href = '/View/login.html'; } return; } @@ -68,19 +68,19 @@ if (!$.cookie('token')) { callbackFun("鐧诲綍浜轰俊鎭凡澶辨晥"); try { - parent.window.location.href = '/view/Login.html'; + parent.window.location.href = '/View/login.html'; } catch (error) { - window.location.href = '/view/Login.html'; + window.location.href = '/View/login.html'; } return; } if (isTokenExpired($.cookie('token'))) { try { - parent.window.location.href = '/view/Login.html'; + parent.window.location.href = '/View/login.html'; } catch (error) { - window.location.href = '/view/Login.html'; + window.location.href = '/View/login.html'; } return; } diff --git a/Wms/Model/InterFaceModel/AsnModels.cs b/Wms/Model/InterFaceModel/AsnModels.cs index a029066..c46db3c 100644 --- a/Wms/Model/InterFaceModel/AsnModels.cs +++ b/Wms/Model/InterFaceModel/AsnModels.cs @@ -77,6 +77,7 @@ public string PalletNo { get; set; } public string HouseNo { get; set; } public string RoadwayNo { get; set; } + public string Ceng { get; set; } } diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs index 9b50a79..9a70f3e 100644 --- a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs +++ b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs @@ -800,6 +800,666 @@ } } + //鍙栨牱鍑哄簱鎷h揣(鏍囩) + public async Task SampleSetPick(string qcNo, string palletNo, string boxNo, string boxNo3, string pickQty, int userId) + { + try + { + #region 鍒ゆ柇 + + if (string.IsNullOrWhiteSpace(qcNo)) + { + throw Oops.Bah("璇烽獙鍗曟嵁涓嶈兘涓虹┖"); + } + if (string.IsNullOrWhiteSpace(palletNo)) + { + throw Oops.Bah("鎵樼洏鍙蜂笉鑳戒负绌�"); + } + var type = await GetSampleType2(palletNo); + if (type != "0") + { + throw Oops.Bah("褰撳墠鎵樼洏璇峰湪鏁伴噺椤电鍙栨牱"); + } + if (string.IsNullOrEmpty(boxNo)) + { + throw Oops.Bah("澶栫鏉$爜涓嶈兘涓虹┖"); + } + //if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty) && int.Parse(pickQty) > 0) + //{ + // throw new Exception("杩芥函鏉$爜鍜屾嫞璐ф暟閲忎笉鑳藉悓鏃惰緭鍏�"); + //} + + //璇烽獙鍗� + var inspecd = await Db.Queryable<BllQualityInspectionRequest>().FirstAsync(m => m.IsDel == "0" && m.QcNo == qcNo); + if (inspecd == null) + { + throw Oops.Bah("鏈煡璇㈠埌璇烽獙鍗曚俊鎭�"); + } + if (inspecd.Status == "0" || inspecd.Status == "3") + { + throw Oops.Bah("璇烽獙鍗曠姸鎬侀敊璇紝璇锋牳瀹�"); + } + //搴撳瓨鏄庣粏淇℃伅 + var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); + if (stockDetail == null) + { + throw Oops.Bah("鏈湪搴撳瓨涓煡璇㈠嚭褰撳墠鎵樼洏淇℃伅"); + } + // 鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱鍐� + if (!string.IsNullOrWhiteSpace(stockDetail.LocatNo)) + { + var wareHouseData = await Db.Queryable<SysWareHouse>().FirstAsync(m => m.IsDel == "0" && m.WareHouseNo == stockDetail.WareHouseNo); + if (wareHouseData.Type != "2") + { + throw Oops.Bah("褰撳墠鎵樼洏涓嶆槸搴撳鎵樼洏锛岃鏍稿疄"); + } + } + //绠辨敮淇℃伅 + var boxInfoList = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo).ToListAsync(); + //搴撳瓨鎬昏〃 + var stock = await Db.Queryable<DataStock>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); + if (stock == null) + { + throw Oops.Bah("鏈煡璇㈠嚭搴撳瓨鎬讳俊鎭�"); + } + //鍏ュ簱鍗� + var notice = await Db.Queryable<BllArrivalNotice>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo); + if (notice == null) + { + throw Oops.Bah("鏈煡璇㈠埌鍏ュ簱鍗曚俊鎭�"); + } + + #endregion + + //鍙栨牱鏄庣粏璁板綍琛� + var sampld = await Db.Queryable<BllSamplingDetails>().Where(m => m.IsDel == "0" && m.QcNo == qcNo).ToListAsync(); + + var isAddSampld = false; + var PickType = ""; //0鏁伴噺鎷h揣 1 绠辨敮鎷h揣 + var EditboxInfo = new DataBoxInfo(); + var EditboxInfoList = new List<DataBoxInfo>(); + + #region 鍒ゆ柇鎷h揣鏂瑰紡 鏁f敮 鏁伴噺 + + if (!string.IsNullOrEmpty(pickQty) && decimal.Parse(pickQty) > 0) //鏁伴噺鎷h揣 + { + PickType = "0"; + + if (!string.IsNullOrWhiteSpace(boxNo3)) //鏀腑鎷f暟閲� + { + if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) == 0) + { + throw Oops.Bah("鏈煡璇㈠埌鏀爜淇℃伅"); + } + if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) > 1) + { + throw Oops.Bah("鏀爜淇℃伅鏁版嵁淇℃伅閿欒锛岃鏍稿疄"); + } + EditboxInfo = await Db.Queryable<DataBoxInfo>().FirstAsync(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo && m.BoxNo3 == boxNo3); + if (EditboxInfo.Qty < decimal.Parse(pickQty)) + { + throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺"); + } + isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo && m.BoxNo3 == EditboxInfo.BoxNo3) == 0; + } + else //绠变腑鎷f暟閲� + { + + if (boxInfoList.Count == 0) + { + throw Oops.Bah("鏈湪鎵樼洏涓婃煡璇㈠埌绠辩爜淇℃伅锛岃鏍稿疄"); + } + if (boxInfoList.Count > 1) + { + throw Oops.Bah("绠辩爜鏁版嵁淇℃伅閿欒锛岃鏍稿疄"); + } + if (boxInfoList.Count(m => !string.IsNullOrWhiteSpace(m.BoxNo3)) > 0) + { + throw Oops.Bah("褰撳墠绠辩爜涓惈鏈夋敮鐮侊紝璇疯緭鍏ユ敮鐮佷俊鎭彇鏍�"); + } + EditboxInfo = await Db.Queryable<DataBoxInfo>().FirstAsync(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo); + + if (EditboxInfo.Qty < decimal.Parse(pickQty)) + { + throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺"); + } + isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo) == 0; + + } + if (sampld.Sum(m => m.CompleteQty) + decimal.Parse(pickQty) > inspecd.SamplingQty) + { + throw Oops.Bah("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺"); + } + //鍒ゆ柇绠变腑鏄惁鍚湁鏀爜锛屾湁锛氫笉璁╂嫞鏁伴噺 + if (stockDetail.Qty - stockDetail.LockQty - stockDetail.FrozenQty < decimal.Parse(pickQty)) + { + throw Oops.Bah("鎵樼洏涓婂彲鐢ㄦ暟閲忓皬浜庡彇鏍锋暟閲忥紝璇锋牳瀹為攣瀹氥�佸喕缁撴暟閲�"); + } + } + else //绠辨敮鎷h揣 + { + PickType = "1"; + var qty = 0m; + + if (!string.IsNullOrWhiteSpace(boxNo3)) //鎷f敮 + { + + if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) == 0) + { + throw Oops.Bah("鏈煡璇㈠埌鏀爜淇℃伅"); + } + if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) > 1) + { + throw Oops.Bah("鏀爜鏁版嵁淇℃伅閿欒锛岃鏍稿疄"); + } + EditboxInfoList = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo && m.BoxNo3 == boxNo3).ToListAsync(); + if (EditboxInfoList.Sum(m => m.Qty) + sampld.Sum(m => m.CompleteQty) > inspecd.SamplingQty) + { + throw Oops.Bah("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺"); + } + qty = EditboxInfoList.Sum(m => m.Qty); + //isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo && m.BoxNo3 == EditboxInfo.BoxNo3) == 0; + } + else //鎷g + { + + if (boxInfoList.Count == 0) + { + throw Oops.Bah("鏈湪鎵樼洏涓婃煡璇㈠埌绠辩爜淇℃伅锛岃鏍稿疄"); + } + if (boxInfoList.Count > 1) + { + throw Oops.Bah("绠辩爜鏁版嵁淇℃伅閿欒锛岃鏍稿疄"); + } + if (boxInfoList.Count(m => !string.IsNullOrWhiteSpace(m.BoxNo3)) > 0) + { + throw Oops.Bah("褰撳墠绠辩爜涓惈鏈夋敮鐮侊紝璇疯緭鍏ユ敮鐮佷俊鎭彇鏍�"); + } + EditboxInfoList = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo).ToListAsync(); + + if (EditboxInfo.Qty < decimal.Parse(pickQty)) + { + throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺"); + } + qty = EditboxInfoList.Sum(m => m.Qty); + //isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo) == 0; + } + if (sampld.Sum(m => m.CompleteQty) + qty > inspecd.SamplingQty) + { + throw Oops.Bah("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺"); + } + if (stockDetail.Qty - stockDetail.LockQty - stockDetail.FrozenQty < qty) + { + throw Oops.Bah("鎵樼洏涓婂彲鐢ㄦ暟閲忓皬浜庡彇鏍锋暟閲忥紝璇锋牳瀹為攣瀹氥�佸喕缁撴暟閲�"); + } + } + #endregion + + Db.BeginTran(); + #region + + + if (PickType == "0") + { + + #region 娣诲姞鎴栦慨鏀瑰彇鏍锋槑缁� + + var boxInfo = EditboxInfo; + + //if (isAddSampld) //娣诲姞鍙栨牱鏄庣粏 + //{ + var sampleDetail = new BllSamplingDetails() + { + QcNo = qcNo, + ASNNo = inspecd.ASNNo, + PalletNo = palletNo, + BoxNo = boxInfo.BoxNo, + BoxNo2 = boxInfo.BoxNo2, + BoxNo3 = boxInfo.BoxNo3, + SkuNo = boxInfo.SkuNo, + SkuName = boxInfo.SkuName, + Standard = boxInfo.Standard, + LotNo = boxInfo.LotNo, + SupplierLot = boxInfo.SupplierLot, + CompleteQty = decimal.Parse(pickQty), + CreateTime = DateTime.Now, + CreateUser = userId + }; + Db.Insertable(sampleDetail).ExecuteCommand(); + //} + //else + //{ + // var sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo); + // if (!string.IsNullOrWhiteSpace(boxNo3)) + // { + // sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo && m.BoxNo3 == boxInfo.BoxNo3); + // } + // sampldFirst.CompleteQty += decimal.Parse(pickQty); + // sampldFirst.UpdateTime = DateTime.Now; + // sampldFirst.UpdateUser = userId; + // Db.Updateable(sampldFirst).ExecuteCommand(); + //} + + #endregion + + #region 淇敼搴撳瓨涓夎〃 + + //鎷嗗寘鏈夋晥鏈熸洿鏀� + var unpackWarranty = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo).UnpackWarranty; + foreach (var item in boxInfoList) + { + item.BitBoxMark = "1"; + item.InspectMark = "1"; + + if (unpackWarranty > 0 && boxInfoList.Count(m => m.ProductionTime != null) > 0) + { + if (item.ProductionTime != null) + { + var time = DateTime.Parse(item.ProductionTime.ToString()).AddDays((double)unpackWarranty); + if (time < item.ExpirationTime) + { + item.ExpirationTime = time; + } + } + } + + } + Db.Updateable(boxInfoList).ExecuteCommand(); + + //搴撳瓨绠辩爜 + boxInfo.Qty -= decimal.Parse(pickQty); + if (boxInfo.Qty == 0) + { + Db.Deleteable(boxInfo).ExecuteCommand(); + } + else + { + Db.Updateable(boxInfo).ExecuteCommand(); + } + //搴撳瓨鏄庣粏 + stockDetail.Qty -= decimal.Parse(pickQty); + if (stockDetail.Qty == 0) + { + Db.Deleteable(stockDetail).ExecuteCommand(); + } + else + { + Db.Updateable(stockDetail).ExecuteCommand(); + } + //搴撳瓨鎬昏〃 + stock.Qty -= decimal.Parse(pickQty); + if (stock.Qty == 0) + { + Db.Deleteable(stock).ExecuteCommand(); + } + else + { + Db.Updateable(stock).ExecuteCommand(); + } + + #endregion + + #region 淇敼鍏ュ簱鍗� + + //涓嶆槸涓婁紶瀹屾瘯鐨勪慨鏀瑰彇鏍风姸鎬� + if (notice.Status != "4") + { + var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); + if (noticeDetail.IsSampling == "0") + { + noticeDetail.IsSampling = "1"; + + Db.Updateable(noticeDetail).ExecuteCommand(); + } + + } + + + #endregion + + #region 淇敼璇烽獙鍗� + + inspecd.Status = "2"; + inspecd.UpdateTime = DateTime.Now; + if (sampld.Sum(m => m.CompleteQty) + decimal.Parse(pickQty) >= inspecd.SamplingQty) + { + inspecd.Status = "3"; + } + Db.Updateable(inspecd).ExecuteCommand(); + #endregion + + } + else + { + var sumQty = 0m; + foreach (var boxInfo in EditboxInfoList) + { + #region 娣诲姞鎴栦慨鏀瑰彇鏍锋槑缁� + + //if (isAddSampld) //娣诲姞鍙栨牱鏄庣粏 + //{ + var sampleDetail = new BllSamplingDetails() + { + QcNo = qcNo, + ASNNo = inspecd.ASNNo, + PalletNo = palletNo, + BoxNo = boxInfo.BoxNo, + BoxNo2 = boxInfo.BoxNo2, + BoxNo3 = boxInfo.BoxNo3, + SkuNo = boxInfo.SkuNo, + SkuName = boxInfo.SkuName, + Standard = boxInfo.Standard, + LotNo = boxInfo.LotNo, + SupplierLot = boxInfo.SupplierLot, + CompleteQty = boxInfo.Qty, + CreateTime = DateTime.Now, + CreateUser = userId + }; + await Db.Insertable(sampleDetail).ExecuteCommandAsync(); + //} + //else + //{ + // var sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo); + // if (!string.IsNullOrWhiteSpace(boxNo3)) + // { + // sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo && m.BoxNo3 == boxInfo.BoxNo3); + // } + // sampldFirst.CompleteQty += boxInfo.Qty; + // sampldFirst.UpdateTime = DateTime.Now; + // sampldFirst.UpdateUser = userId; + // Db.Updateable(sampldFirst).ExecuteCommand(); + //} + #endregion + + #region 淇敼搴撳瓨涓夎〃 + + //鎷嗗寘鏈夋晥鏈熸洿鏀� + var unpackWarranty = (await Db.Queryable<SysMaterials>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo)).UnpackWarranty; + + foreach (var item in boxInfoList) + { + item.BitBoxMark = "1"; + item.InspectMark = "1"; + if (unpackWarranty > 0 && boxInfoList.Count(m => m.ProductionTime != null) > 0) + { + if (item.ProductionTime != null) + { + var time = DateTime.Parse(item.ProductionTime.ToString()).AddDays((double)unpackWarranty); + if (time < item.ExpirationTime) + { + item.ExpirationTime = time; + } + } + } + } + await Db.Updateable(boxInfoList).ExecuteCommandAsync(); + + //搴撳瓨绠辩爜 + + await Db.Deleteable(boxInfo).ExecuteCommandAsync(); + + //搴撳瓨鏄庣粏 + stockDetail.Qty -= boxInfo.Qty; + if (stockDetail.Qty == 0) + { + await Db.Deleteable(stockDetail).ExecuteCommandAsync(); + } + else + { + await Db.Updateable(stockDetail).ExecuteCommandAsync(); + } + //搴撳瓨鎬昏〃 + stock.Qty -= boxInfo.Qty; + if (stock.Qty == 0) + { + await Db.Deleteable(stock).ExecuteCommandAsync(); + } + else + { + await Db.Updateable(stock).ExecuteCommandAsync(); + } + + #endregion + + #region 淇敼鍏ュ簱鍗� + + //涓嶆槸涓婁紶瀹屾瘯鐨勪慨鏀瑰彇鏍风姸鎬� + if (notice.Status != "4") + { + var noticeDetail = await Db.Queryable<BllArrivalNoticeDetail>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); + if (noticeDetail.IsSampling == "0") + { + noticeDetail.IsSampling = "1"; + + await Db.Updateable(noticeDetail).ExecuteCommandAsync(); + } + + } + + #endregion + + sumQty += boxInfo.Qty; + } + + #region 淇敼璇烽獙鍗� + inspecd.Status = "2"; + inspecd.UpdateTime = DateTime.Now; + if (sampld.Sum(m => m.CompleteQty) + sumQty >= inspecd.SamplingQty) + { + inspecd.Status = "3"; + } + + await Db.Updateable(inspecd).ExecuteCommandAsync(); + #endregion + } + + #endregion + + + //娣诲姞鎿嶄綔鏃ュ織璁板綍 + var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "鍙栨牱鎷h揣", qcNo, "鎷h揣", $"鍦≒DA涓婂璇烽獙鍗曞彿涓猴細{qcNo}鐨勬墭鐩樼爜涓猴細{palletNo}鐨勬嫞璐ф搷浣�", userId); + Db.CommitTran(); + } + catch (Exception e) + { + Db.RollbackTran(); + throw e; + } + } + + + //鍙栨牱鍑哄簱鎷h揣(鏁伴噺) + public async Task SampleSetQtyPick(string qcNo, string palletNo, string pickQty, int userId) + { + try + { + #region 鍒ゆ柇 + + if (string.IsNullOrWhiteSpace(qcNo)) + { + throw Oops.Bah("璇烽獙鍗曟嵁涓嶈兘涓虹┖"); + } + if (string.IsNullOrWhiteSpace(palletNo)) + { + throw Oops.Bah("鎵樼洏鍙蜂笉鑳戒负绌�"); + } + var type = await GetSampleType2(palletNo); + if (type != "1") + { + throw Oops.Bah("褰撳墠鎵樼洏璇峰湪鏍囩椤电鍙栨牱"); + } + if (string.IsNullOrWhiteSpace(pickQty)) + { + throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘涓虹┖"); + } + if (decimal.Parse(pickQty) <= 0) + { + throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘灏忎簬绛変簬0"); + } + + //璇烽獙鍗� + var inspecd = await Db.Queryable<BllQualityInspectionRequest>().FirstAsync(m => m.IsDel == "0" && m.QcNo == qcNo); + if (inspecd == null) + { + throw Oops.Bah("鏈煡璇㈠埌璇烽獙鍗曚俊鎭�"); + } + if (inspecd.Status == "0" || inspecd.Status == "3") + { + throw Oops.Bah("璇烽獙鍗曠姸鎬侀敊璇紝璇锋牳瀹�"); + } + //搴撳瓨鏄庣粏淇℃伅 + var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo + && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); + if (stockDetail == null) + { + throw Oops.Bah("鏈湪搴撳瓨涓煡璇㈠嚭褰撳墠鎵樼洏淇℃伅"); + } + // 鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱鍐� + if (!string.IsNullOrWhiteSpace(stockDetail.LocatNo)) + { + var wareHouseData = await Db.Queryable<SysWareHouse>().FirstAsync(m => m.IsDel == "0" && m.WareHouseNo == stockDetail.WareHouseNo); + if (wareHouseData.Type != "2") + { + throw Oops.Bah("褰撳墠鎵樼洏涓嶆槸搴撳鎵樼洏锛岃鏍稿疄"); + } + } + //搴撳瓨鎬昏〃 + var stock = await Db.Queryable<DataStock>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); + if (stock == null) + { + throw Oops.Bah("鏈煡璇㈠嚭搴撳瓨鎬讳俊鎭�"); + } + //鍏ュ簱鍗� + var notice = await Db.Queryable<BllArrivalNotice>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo); + if (notice == null) + { + throw Oops.Bah("鏈煡璇㈠埌鍏ュ簱鍗曚俊鎭�"); + } + + #endregion + + //鍙栨牱鏄庣粏璁板綍琛� + var sampld = await Db.Queryable<BllSamplingDetails>().Where(m => m.IsDel == "0" && m.QcNo == qcNo).ToListAsync(); + var qty = decimal.Parse(pickQty); + //var isAddSampld = sampld.Count(m => m.PalletNo == palletNo) == 0; + + + #region 鍒ゆ柇鏁伴噺 + + if (sampld.Sum(m => m.CompleteQty) + qty > inspecd.SamplingQty) + { + throw Oops.Bah("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺"); + } + //鍒ゆ柇绠变腑鏄惁鍚湁鏀爜锛屾湁锛氫笉璁╂嫞鏁伴噺 + if (stockDetail.Qty - stockDetail.LockQty - stockDetail.FrozenQty < qty) + { + throw Oops.Bah("鎵樼洏涓婂彲鐢ㄦ暟閲忓皬浜庡彇鏍锋暟閲忥紝璇锋牳瀹為攣瀹氥�佸喕缁撴暟閲�"); + } + + + #endregion + + #region 娣诲姞鎴栦慨鏀瑰彇鏍锋槑缁� + + Db.BeginTran(); + + //if (isAddSampld) //娣诲姞鍙栨牱鏄庣粏 + //{ + var sampleDetail = new BllSamplingDetails() + { + QcNo = qcNo, + ASNNo = inspecd.ASNNo, + PalletNo = palletNo, + SkuNo = stockDetail.SkuNo, + SkuName = stockDetail.SkuName, + Standard = stockDetail.Standard, + LotNo = stockDetail.LotNo, + SupplierLot = stockDetail.SupplierLot, + CompleteQty = qty, + CreateTime = DateTime.Now, + CreateUser = userId + }; + await Db.Insertable(sampleDetail).ExecuteCommandAsync(); + //} + //else + //{ + // var sampldFirst = sampld.First(m => m.PalletNo == palletNo); + // sampldFirst.CompleteQty += qty; + // sampldFirst.UpdateTime = DateTime.Now; + // sampldFirst.UpdateUser = userId; + // Db.Updateable(sampldFirst).ExecuteCommand(); + //} + + #endregion + + #region 淇敼搴撳瓨涓夎〃 + + //搴撳瓨鏄庣粏 + stockDetail.Qty -= qty; + if (stockDetail.Qty == 0) + { + await Db.Deleteable(stockDetail).ExecuteCommandAsync(); + } + else + { + stockDetail.BitPalletMark = "1"; + stockDetail.InspectMark = "1"; + + await Db.Updateable(stockDetail).ExecuteCommandAsync(); + } + //搴撳瓨鎬昏〃 + stock.Qty -= qty; + if (stock.Qty == 0) + { + await Db.Deleteable(stock).ExecuteCommandAsync(); + } + else + { + await Db.Updateable(stock).ExecuteCommandAsync(); + } + + #endregion + + #region 淇敼鍏ュ簱鍗� + + //涓嶆槸涓婁紶瀹屾瘯鐨勪慨鏀瑰彇鏍风姸鎬� + if (notice.Status != "4") + { + var noticeDetail = await Db.Queryable<BllArrivalNoticeDetail>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); + if (noticeDetail.IsSampling == "0") + { + noticeDetail.IsSampling = "1"; + + await Db.Updateable(noticeDetail).ExecuteCommandAsync(); + } + + } + + + #endregion + + #region 淇敼璇烽獙鍗� + inspecd.Status = "2"; + inspecd.UpdateTime = DateTime.Now; + if (sampld.Sum(m => m.CompleteQty) + qty >= inspecd.SamplingQty) + { + inspecd.Status = "3"; + } + await Db.Updateable(inspecd).ExecuteCommandAsync(); + #endregion + + //娣诲姞鎿嶄綔鏃ュ織璁板綍 + var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "鍙栨牱鎷h揣", qcNo, "鎷h揣", $"鍦≒DA涓婂璇烽獙鍗曞彿涓猴細{qcNo}鐨勬墭鐩樼爜涓猴細{palletNo}鐨勬嫞璐ф搷浣�", userId); + Db.CommitTran(); + } + catch (Exception e) + { + Db.RollbackTran(); + throw e; + } + } + + #endregion //楠岃瘉鎵樼洏鏄惁瀛樺湪骞舵槸鍚﹀彲鍑哄簱 @@ -4269,659 +4929,7 @@ return data; } - //鍙栨牱鍑哄簱鎷h揣(鏍囩) - public async Task SampleSetPick(string qcNo, string palletNo, string boxNo, string boxNo3, string pickQty, int userId) - { - try - { - #region 鍒ゆ柇 - - if (string.IsNullOrWhiteSpace(qcNo)) - { - throw Oops.Bah("璇烽獙鍗曟嵁涓嶈兘涓虹┖"); - } - if (string.IsNullOrWhiteSpace(palletNo)) - { - throw Oops.Bah("鎵樼洏鍙蜂笉鑳戒负绌�"); - } - var type = await GetSampleType2(palletNo); - if (type != "0") - { - throw Oops.Bah("褰撳墠鎵樼洏璇峰湪鏁伴噺椤电鍙栨牱"); - } - if (string.IsNullOrEmpty(boxNo)) - { - throw Oops.Bah("澶栫鏉$爜涓嶈兘涓虹┖"); - } - //if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty) && int.Parse(pickQty) > 0) - //{ - // throw new Exception("杩芥函鏉$爜鍜屾嫞璐ф暟閲忎笉鑳藉悓鏃惰緭鍏�"); - //} - - //璇烽獙鍗� - var inspecd = await Db.Queryable<BllQualityInspectionRequest>().FirstAsync(m => m.IsDel == "0" && m.QcNo == qcNo); - if (inspecd == null) - { - throw Oops.Bah("鏈煡璇㈠埌璇烽獙鍗曚俊鎭�"); - } - if (inspecd.Status == "0" || inspecd.Status == "3") - { - throw Oops.Bah("璇烽獙鍗曠姸鎬侀敊璇紝璇锋牳瀹�"); - } - //搴撳瓨鏄庣粏淇℃伅 - var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); - if (stockDetail == null) - { - throw Oops.Bah("鏈湪搴撳瓨涓煡璇㈠嚭褰撳墠鎵樼洏淇℃伅"); - } - if (!string.IsNullOrWhiteSpace(stockDetail.LocatNo)) - { - throw Oops.Bah("褰撳墠鎵樼洏涓嶆槸搴撳鎵樼洏锛岃鏍稿疄"); - } - //绠辨敮淇℃伅 - var boxInfoList = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo).ToListAsync(); - //搴撳瓨鎬昏〃 - var stock = await Db.Queryable<DataStock>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); - if (stock == null) - { - throw Oops.Bah("鏈煡璇㈠嚭搴撳瓨鎬讳俊鎭�"); - } - //鍏ュ簱鍗� - var notice = await Db.Queryable<BllArrivalNotice>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo); - if (notice == null) - { - throw Oops.Bah("鏈煡璇㈠埌鍏ュ簱鍗曚俊鎭�"); - } - - #endregion - - //鍙栨牱鏄庣粏璁板綍琛� - var sampld = await Db.Queryable<BllSamplingDetails>().Where(m => m.IsDel == "0" && m.QcNo == qcNo).ToListAsync(); - - var isAddSampld = false; - var PickType = ""; //0鏁伴噺鎷h揣 1 绠辨敮鎷h揣 - var EditboxInfo = new DataBoxInfo(); - var EditboxInfoList = new List<DataBoxInfo>(); - - #region 鍒ゆ柇鎷h揣鏂瑰紡 鏁f敮 鏁伴噺 - - if (!string.IsNullOrEmpty(pickQty) && decimal.Parse(pickQty) > 0) //鏁伴噺鎷h揣 - { - PickType = "0"; - - if (!string.IsNullOrWhiteSpace(boxNo3)) //鏀腑鎷f暟閲� - { - if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) == 0) - { - throw Oops.Bah("鏈煡璇㈠埌鏀爜淇℃伅"); - } - if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) > 1) - { - throw Oops.Bah("鏀爜淇℃伅鏁版嵁淇℃伅閿欒锛岃鏍稿疄"); - } - EditboxInfo = await Db.Queryable<DataBoxInfo>().FirstAsync(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo && m.BoxNo3 == boxNo3); - if (EditboxInfo.Qty < decimal.Parse(pickQty)) - { - throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺"); - } - isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo && m.BoxNo3 == EditboxInfo.BoxNo3) == 0; - } - else //绠变腑鎷f暟閲� - { - - if (boxInfoList.Count == 0) - { - throw Oops.Bah("鏈湪鎵樼洏涓婃煡璇㈠埌绠辩爜淇℃伅锛岃鏍稿疄"); - } - if (boxInfoList.Count > 1) - { - throw Oops.Bah("绠辩爜鏁版嵁淇℃伅閿欒锛岃鏍稿疄"); - } - if (boxInfoList.Count(m => !string.IsNullOrWhiteSpace(m.BoxNo3)) > 0) - { - throw Oops.Bah("褰撳墠绠辩爜涓惈鏈夋敮鐮侊紝璇疯緭鍏ユ敮鐮佷俊鎭彇鏍�"); - } - EditboxInfo = await Db.Queryable<DataBoxInfo>().FirstAsync(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo); - - if (EditboxInfo.Qty < decimal.Parse(pickQty)) - { - throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺"); - } - isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo) == 0; - - } - if (sampld.Sum(m => m.CompleteQty) + decimal.Parse(pickQty) > inspecd.SamplingQty) - { - throw Oops.Bah("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺"); - } - //鍒ゆ柇绠变腑鏄惁鍚湁鏀爜锛屾湁锛氫笉璁╂嫞鏁伴噺 - if (stockDetail.Qty - stockDetail.LockQty - stockDetail.FrozenQty < decimal.Parse(pickQty)) - { - throw Oops.Bah("鎵樼洏涓婂彲鐢ㄦ暟閲忓皬浜庡彇鏍锋暟閲忥紝璇锋牳瀹為攣瀹氥�佸喕缁撴暟閲�"); - } - } - else //绠辨敮鎷h揣 - { - PickType = "1"; - var qty = 0m; - - if (!string.IsNullOrWhiteSpace(boxNo3)) //鎷f敮 - { - - if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) == 0) - { - throw Oops.Bah("鏈煡璇㈠埌鏀爜淇℃伅"); - } - if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) > 1) - { - throw Oops.Bah("鏀爜鏁版嵁淇℃伅閿欒锛岃鏍稿疄"); - } - EditboxInfoList = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo && m.BoxNo3 == boxNo3).ToListAsync(); - if (EditboxInfoList.Sum(m => m.Qty) + sampld.Sum(m => m.CompleteQty) > inspecd.SamplingQty) - { - throw Oops.Bah("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺"); - } - qty = EditboxInfoList.Sum(m => m.Qty); - //isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo && m.BoxNo3 == EditboxInfo.BoxNo3) == 0; - } - else //鎷g - { - - if (boxInfoList.Count == 0) - { - throw Oops.Bah("鏈湪鎵樼洏涓婃煡璇㈠埌绠辩爜淇℃伅锛岃鏍稿疄"); - } - if (boxInfoList.Count > 1) - { - throw Oops.Bah("绠辩爜鏁版嵁淇℃伅閿欒锛岃鏍稿疄"); - } - if (boxInfoList.Count(m => !string.IsNullOrWhiteSpace(m.BoxNo3)) > 0) - { - throw Oops.Bah("褰撳墠绠辩爜涓惈鏈夋敮鐮侊紝璇疯緭鍏ユ敮鐮佷俊鎭彇鏍�"); - } - EditboxInfoList = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo).ToListAsync(); - - if (EditboxInfo.Qty < decimal.Parse(pickQty)) - { - throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺"); - } - qty = EditboxInfoList.Sum(m => m.Qty); - //isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo) == 0; - } - if (sampld.Sum(m => m.CompleteQty) + qty > inspecd.SamplingQty) - { - throw Oops.Bah("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺"); - } - if (stockDetail.Qty - stockDetail.LockQty - stockDetail.FrozenQty < qty) - { - throw Oops.Bah("鎵樼洏涓婂彲鐢ㄦ暟閲忓皬浜庡彇鏍锋暟閲忥紝璇锋牳瀹為攣瀹氥�佸喕缁撴暟閲�"); - } - } - #endregion - - Db.BeginTran(); - #region - - - if (PickType == "0") - { - - #region 娣诲姞鎴栦慨鏀瑰彇鏍锋槑缁� - - var boxInfo = EditboxInfo; - - //if (isAddSampld) //娣诲姞鍙栨牱鏄庣粏 - //{ - var sampleDetail = new BllSamplingDetails() - { - QcNo = qcNo, - ASNNo = inspecd.ASNNo, - PalletNo = palletNo, - BoxNo = boxInfo.BoxNo, - BoxNo2 = boxInfo.BoxNo2, - BoxNo3 = boxInfo.BoxNo3, - SkuNo = boxInfo.SkuNo, - SkuName = boxInfo.SkuName, - Standard = boxInfo.Standard, - LotNo = boxInfo.LotNo, - SupplierLot = boxInfo.SupplierLot, - CompleteQty = decimal.Parse(pickQty), - CreateTime = DateTime.Now, - CreateUser = userId - }; - Db.Insertable(sampleDetail).ExecuteCommand(); - //} - //else - //{ - // var sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo); - // if (!string.IsNullOrWhiteSpace(boxNo3)) - // { - // sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo && m.BoxNo3 == boxInfo.BoxNo3); - // } - // sampldFirst.CompleteQty += decimal.Parse(pickQty); - // sampldFirst.UpdateTime = DateTime.Now; - // sampldFirst.UpdateUser = userId; - // Db.Updateable(sampldFirst).ExecuteCommand(); - //} - - #endregion - - #region 淇敼搴撳瓨涓夎〃 - - //鎷嗗寘鏈夋晥鏈熸洿鏀� - var unpackWarranty = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo).UnpackWarranty; - foreach (var item in boxInfoList) - { - item.BitBoxMark = "1"; - item.InspectMark = "1"; - - if (unpackWarranty > 0 && boxInfoList.Count(m => m.ProductionTime != null) > 0) - { - if (item.ProductionTime != null) - { - var time = DateTime.Parse(item.ProductionTime.ToString()).AddDays((double)unpackWarranty); - if (time < item.ExpirationTime) - { - item.ExpirationTime = time; - } - } - } - - } - Db.Updateable(boxInfoList).ExecuteCommand(); - - //搴撳瓨绠辩爜 - boxInfo.Qty -= decimal.Parse(pickQty); - if (boxInfo.Qty == 0) - { - Db.Deleteable(boxInfo).ExecuteCommand(); - } - else - { - Db.Updateable(boxInfo).ExecuteCommand(); - } - //搴撳瓨鏄庣粏 - stockDetail.Qty -= decimal.Parse(pickQty); - if (stockDetail.Qty == 0) - { - Db.Deleteable(stockDetail).ExecuteCommand(); - } - else - { - Db.Updateable(stockDetail).ExecuteCommand(); - } - //搴撳瓨鎬昏〃 - stock.Qty -= decimal.Parse(pickQty); - if (stock.Qty == 0) - { - Db.Deleteable(stock).ExecuteCommand(); - } - else - { - Db.Updateable(stock).ExecuteCommand(); - } - - #endregion - - #region 淇敼鍏ュ簱鍗� - - //涓嶆槸涓婁紶瀹屾瘯鐨勪慨鏀瑰彇鏍风姸鎬� - if (notice.Status != "4") - { - var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); - if (noticeDetail.IsSampling == "0") - { - noticeDetail.IsSampling = "1"; - - Db.Updateable(noticeDetail).ExecuteCommand(); - } - - } - - - #endregion - - #region 淇敼璇烽獙鍗� - - inspecd.Status = "2"; - inspecd.UpdateTime = DateTime.Now; - if (sampld.Sum(m => m.CompleteQty) + decimal.Parse(pickQty) >= inspecd.SamplingQty) - { - inspecd.Status = "3"; - } - Db.Updateable(inspecd).ExecuteCommand(); - #endregion - - } - else - { - var sumQty = 0m; - foreach (var boxInfo in EditboxInfoList) - { - #region 娣诲姞鎴栦慨鏀瑰彇鏍锋槑缁� - - //if (isAddSampld) //娣诲姞鍙栨牱鏄庣粏 - //{ - var sampleDetail = new BllSamplingDetails() - { - QcNo = qcNo, - ASNNo = inspecd.ASNNo, - PalletNo = palletNo, - BoxNo = boxInfo.BoxNo, - BoxNo2 = boxInfo.BoxNo2, - BoxNo3 = boxInfo.BoxNo3, - SkuNo = boxInfo.SkuNo, - SkuName = boxInfo.SkuName, - Standard = boxInfo.Standard, - LotNo = boxInfo.LotNo, - SupplierLot = boxInfo.SupplierLot, - CompleteQty = boxInfo.Qty, - CreateTime = DateTime.Now, - CreateUser = userId - }; - await Db.Insertable(sampleDetail).ExecuteCommandAsync(); - //} - //else - //{ - // var sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo); - // if (!string.IsNullOrWhiteSpace(boxNo3)) - // { - // sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo && m.BoxNo3 == boxInfo.BoxNo3); - // } - // sampldFirst.CompleteQty += boxInfo.Qty; - // sampldFirst.UpdateTime = DateTime.Now; - // sampldFirst.UpdateUser = userId; - // Db.Updateable(sampldFirst).ExecuteCommand(); - //} - #endregion - - #region 淇敼搴撳瓨涓夎〃 - - //鎷嗗寘鏈夋晥鏈熸洿鏀� - var unpackWarranty = (await Db.Queryable<SysMaterials>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo)).UnpackWarranty; - - foreach (var item in boxInfoList) - { - item.BitBoxMark = "1"; - item.InspectMark = "1"; - if (unpackWarranty > 0 && boxInfoList.Count(m => m.ProductionTime != null) > 0) - { - if (item.ProductionTime != null) - { - var time = DateTime.Parse(item.ProductionTime.ToString()).AddDays((double)unpackWarranty); - if (time < item.ExpirationTime) - { - item.ExpirationTime = time; - } - } - } - } - await Db.Updateable(boxInfoList).ExecuteCommandAsync(); - - //搴撳瓨绠辩爜 - - await Db.Deleteable(boxInfo).ExecuteCommandAsync(); - - //搴撳瓨鏄庣粏 - stockDetail.Qty -= boxInfo.Qty; - if (stockDetail.Qty == 0) - { - await Db.Deleteable(stockDetail).ExecuteCommandAsync(); - } - else - { - await Db.Updateable(stockDetail).ExecuteCommandAsync(); - } - //搴撳瓨鎬昏〃 - stock.Qty -= boxInfo.Qty; - if (stock.Qty == 0) - { - await Db.Deleteable(stock).ExecuteCommandAsync(); - } - else - { - await Db.Updateable(stock).ExecuteCommandAsync(); - } - - #endregion - - #region 淇敼鍏ュ簱鍗� - - //涓嶆槸涓婁紶瀹屾瘯鐨勪慨鏀瑰彇鏍风姸鎬� - if (notice.Status != "4") - { - var noticeDetail = await Db.Queryable<BllArrivalNoticeDetail>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); - if (noticeDetail.IsSampling == "0") - { - noticeDetail.IsSampling = "1"; - - await Db.Updateable(noticeDetail).ExecuteCommandAsync(); - } - - } - - #endregion - - sumQty += boxInfo.Qty; - } - - #region 淇敼璇烽獙鍗� - inspecd.Status = "2"; - inspecd.UpdateTime = DateTime.Now; - if (sampld.Sum(m => m.CompleteQty) + sumQty >= inspecd.SamplingQty) - { - inspecd.Status = "3"; - } - - await Db.Updateable(inspecd).ExecuteCommandAsync(); - #endregion - } - - #endregion - - - //娣诲姞鎿嶄綔鏃ュ織璁板綍 - var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "鍙栨牱鎷h揣", qcNo, "鎷h揣", $"鍦≒DA涓婂璇烽獙鍗曞彿涓猴細{qcNo}鐨勬墭鐩樼爜涓猴細{palletNo}鐨勬嫞璐ф搷浣�", userId); - Db.CommitTran(); - } - catch (Exception e) - { - Db.RollbackTran(); - throw e; - } - } - - - //鍙栨牱鍑哄簱鎷h揣(鏁伴噺) - public async Task SampleSetQtyPick(string qcNo, string palletNo, string pickQty, int userId) - { - try - { - #region 鍒ゆ柇 - - if (string.IsNullOrWhiteSpace(qcNo)) - { - throw Oops.Bah("璇烽獙鍗曟嵁涓嶈兘涓虹┖"); - } - if (string.IsNullOrWhiteSpace(palletNo)) - { - throw Oops.Bah("鎵樼洏鍙蜂笉鑳戒负绌�"); - } - var type = await GetSampleType2(palletNo); - if (type != "1") - { - throw Oops.Bah("褰撳墠鎵樼洏璇峰湪鏍囩椤电鍙栨牱"); - } - if (string.IsNullOrWhiteSpace(pickQty)) - { - throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘涓虹┖"); - } - if (decimal.Parse(pickQty) <= 0) - { - throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘灏忎簬绛変簬0"); - } - - //璇烽獙鍗� - var inspecd = await Db.Queryable<BllQualityInspectionRequest>().FirstAsync(m => m.IsDel == "0" && m.QcNo == qcNo); - if (inspecd == null) - { - throw Oops.Bah("鏈煡璇㈠埌璇烽獙鍗曚俊鎭�"); - } - if (inspecd.Status == "0" || inspecd.Status == "3") - { - throw Oops.Bah("璇烽獙鍗曠姸鎬侀敊璇紝璇锋牳瀹�"); - } - //搴撳瓨鏄庣粏淇℃伅 - var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo - && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); - if (stockDetail == null) - { - throw Oops.Bah("鏈湪搴撳瓨涓煡璇㈠嚭褰撳墠鎵樼洏淇℃伅"); - } - // 鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱鍐� - if (!string.IsNullOrWhiteSpace(stockDetail.LocatNo)) - { - var wareHouseData = await Db.Queryable<SysWareHouse>().FirstAsync(m => m.IsDel == "0" && m.WareHouseNo == stockDetail.WareHouseNo); - if (wareHouseData.Type != "2") - { - throw Oops.Bah("褰撳墠鎵樼洏涓嶆槸搴撳鎵樼洏锛岃鏍稿疄"); - } - } - //搴撳瓨鎬昏〃 - var stock = await Db.Queryable<DataStock>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); - if (stock == null) - { - throw Oops.Bah("鏈煡璇㈠嚭搴撳瓨鎬讳俊鎭�"); - } - //鍏ュ簱鍗� - var notice = await Db.Queryable<BllArrivalNotice>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo); - if (notice == null) - { - throw Oops.Bah("鏈煡璇㈠埌鍏ュ簱鍗曚俊鎭�"); - } - - #endregion - - //鍙栨牱鏄庣粏璁板綍琛� - var sampld = await Db.Queryable<BllSamplingDetails>().Where(m => m.IsDel == "0" && m.QcNo == qcNo).ToListAsync(); - var qty = decimal.Parse(pickQty); - //var isAddSampld = sampld.Count(m => m.PalletNo == palletNo) == 0; - - - #region 鍒ゆ柇鏁伴噺 - - if (sampld.Sum(m => m.CompleteQty) + qty > inspecd.SamplingQty) - { - throw Oops.Bah("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺"); - } - //鍒ゆ柇绠变腑鏄惁鍚湁鏀爜锛屾湁锛氫笉璁╂嫞鏁伴噺 - if (stockDetail.Qty - stockDetail.LockQty - stockDetail.FrozenQty < qty) - { - throw Oops.Bah("鎵樼洏涓婂彲鐢ㄦ暟閲忓皬浜庡彇鏍锋暟閲忥紝璇锋牳瀹為攣瀹氥�佸喕缁撴暟閲�"); - } - - - #endregion - - #region 娣诲姞鎴栦慨鏀瑰彇鏍锋槑缁� - - Db.BeginTran(); - - //if (isAddSampld) //娣诲姞鍙栨牱鏄庣粏 - //{ - var sampleDetail = new BllSamplingDetails() - { - QcNo = qcNo, - ASNNo = inspecd.ASNNo, - PalletNo = palletNo, - SkuNo = stockDetail.SkuNo, - SkuName = stockDetail.SkuName, - Standard = stockDetail.Standard, - LotNo = stockDetail.LotNo, - SupplierLot = stockDetail.SupplierLot, - CompleteQty = qty, - CreateTime = DateTime.Now, - CreateUser = userId - }; - await Db.Insertable(sampleDetail).ExecuteCommandAsync(); - //} - //else - //{ - // var sampldFirst = sampld.First(m => m.PalletNo == palletNo); - // sampldFirst.CompleteQty += qty; - // sampldFirst.UpdateTime = DateTime.Now; - // sampldFirst.UpdateUser = userId; - // Db.Updateable(sampldFirst).ExecuteCommand(); - //} - - #endregion - - #region 淇敼搴撳瓨涓夎〃 - - //搴撳瓨鏄庣粏 - stockDetail.Qty -= qty; - if (stockDetail.Qty == 0) - { - await Db.Deleteable(stockDetail).ExecuteCommandAsync(); - } - else - { - stockDetail.BitPalletMark = "1"; - stockDetail.InspectMark = "1"; - - await Db.Updateable(stockDetail).ExecuteCommandAsync(); - } - //搴撳瓨鎬昏〃 - stock.Qty -= qty; - if (stock.Qty == 0) - { - await Db.Deleteable(stock).ExecuteCommandAsync(); - } - else - { - await Db.Updateable(stock).ExecuteCommandAsync(); - } - - #endregion - - #region 淇敼鍏ュ簱鍗� - - //涓嶆槸涓婁紶瀹屾瘯鐨勪慨鏀瑰彇鏍风姸鎬� - if (notice.Status != "4") - { - var noticeDetail = await Db.Queryable<BllArrivalNoticeDetail>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); - if (noticeDetail.IsSampling == "0") - { - noticeDetail.IsSampling = "1"; - - await Db.Updateable(noticeDetail).ExecuteCommandAsync(); - } - - } - - - #endregion - - #region 淇敼璇烽獙鍗� - inspecd.Status = "2"; - inspecd.UpdateTime = DateTime.Now; - if (sampld.Sum(m => m.CompleteQty) + qty >= inspecd.SamplingQty) - { - inspecd.Status = "3"; - } - await Db.Updateable(inspecd).ExecuteCommandAsync(); - #endregion - - //娣诲姞鎿嶄綔鏃ュ織璁板綍 - var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "鍙栨牱鎷h揣", qcNo, "鎷h揣", $"鍦≒DA涓婂璇烽獙鍗曞彿涓猴細{qcNo}鐨勬墭鐩樼爜涓猴細{palletNo}鐨勬嫞璐ф搷浣�", userId); - Db.CommitTran(); - } - catch (Exception e) - { - Db.RollbackTran(); - throw e; - } - } + #endregion diff --git a/Wms/WMS.BLL/BllQualityServer/InspectionRequestServer.cs b/Wms/WMS.BLL/BllQualityServer/InspectionRequestServer.cs index 1480f41..74c2f51 100644 --- a/Wms/WMS.BLL/BllQualityServer/InspectionRequestServer.cs +++ b/Wms/WMS.BLL/BllQualityServer/InspectionRequestServer.cs @@ -358,98 +358,8 @@ var Locats = Db.Queryable<SysStorageLocat>() .Where(m => m.LocatNo == pallet.LocatNo && m.WareHouseNo == pallet.WareHouseNo && m.IsDel == "0").ToList().FirstOrDefault(); - - if (Locats.Depth == "02") - { - // 鑾峰彇澶栦晶鍌ㄤ綅鍦板潃 - string locatNo = Locats.LocatNo.Substring(0, 6) + "01"; - var Locatwc = Db.Queryable<SysStorageLocat>() - .Where(m => m.LocatNo == locatNo && m.WareHouseNo == pallet.WareHouseNo - && m.IsDel == "0").ToList().FirstOrDefault(); - - if (Locatwc.Status == "1") - { - // 澶栦晶鏈夎揣鐗� - var Locatwcsku = Db.Queryable<DataStockDetail>() - .Where(m => m.LocatNo == locatNo - && m.IsDel == "0" - && m.WareHouseNo== Locatwc.WareHouseNo).ToList().FirstOrDefault(); - - // 鑾峰彇绉诲簱鍦板潃 - var newSlot = com.MoveAddress(locatNo, Locatwc.RoadwayNo, Locatwcsku.SkuNo); - - var taskNo1 = new Common().GetMaxNo("TK"); - var exTask1 = new LogTask(); //鍑哄簱浠诲姟 - exTask1.TaskNo = taskNo1; - exTask1.Sender = "WMS"; - exTask1.Receiver = "WCS"; - exTask1.IsSuccess = 0; //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 - exTask1.StartLocat = locatNo; //璧峰浣嶇疆 - exTask1.PalletNo = Locatwcsku.PalletNo; //鎵樼洏鐮� - exTask1.IsSend = 1;//鏄惁鍙啀娆′笅鍙� - exTask1.IsCancel = 1;//鏄惁鍙彇娑� - exTask1.IsFinish = 1;//鏄惁鍙畬鎴� - exTask1.Status = "0";//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 - exTask1.OrderType = "4"; //0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� 4 鍙栨牱鍑哄簱鍗� - - - OutCommandDto taskModel = new OutCommandDto(); - taskModel.TaskNo = com.GetMaxNo("TK"); // 浠诲姟鍙� - taskModel.StartRoadway = Locatwc.RoadwayNo; - taskModel.PalletNo = Locatwcsku.PalletNo; // 鎵樼洏鍙� - taskModel.StartLocate = locatNo; // 璧峰浣嶇疆 - taskModel.Order = 1; - if (newSlot == "") - { - exTask1.EndLocat = model.Code; //鐩爣浣嶇疆 - exTask1.Type = "1"; //浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 - exTask1.Msg = Locats.LocatNo +"鎵樼洏鍑哄簱鍒涘缓鐨�"+locatNo + "鎵樼洏鐨勫嚭搴撲换鍔�"; - - // 娌℃湁澶氫綑鐨勭┖鍌ㄤ綅 - taskModel.EndLocate = model.Code; // 鍑哄簱鍙� - taskModel.EndRoadway = ""; // 鐩爣宸烽亾 - taskModel.TaskType = "1";// 浠诲姟绫诲瀷 (鍑哄簱) - taskModel.OutMode = model.Code; //鐩爣鍦板潃 - - // 鏇存柊鍌ㄤ綅鍦板潃 - Locatwc.Status = "3"; - Db.Updateable(Locatwc).ExecuteCommand(); - } - else - { - // 鑾峰彇绉诲簱宸烽亾鍙� - var Locatyk = Db.Queryable<SysStorageLocat>() - .Where(m => m.LocatNo == newSlot && m.WareHouseNo == pallet.WareHouseNo - && m.IsDel == "0").ToList().FirstOrDefault(); - - exTask1.EndLocat = newSlot; //鐩爣浣嶇疆 - exTask1.Type = "2"; //浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 - exTask1.Msg = Locats.LocatNo + "鎵樼洏鍑哄簱鍒涘缓鐨�" + locatNo + "鎵樼洏鐨勭Щ搴撲换鍔�"; - - taskModel.EndLocate = newSlot; // 鐩爣鍦板潃 - taskModel.EndRoadway = Locatyk.RoadwayNo; // 鐩爣宸烽亾 - taskModel.TaskType = "2"; // 浠诲姟绫诲瀷 (绉诲簱) - taskModel.OutMode = newSlot; - - // 鏇存柊鍌ㄤ綅鍦板潃 - Locatwc.Status = "5"; // 绉诲嚭涓� - Locatyk.Status = "4"; // 绉诲叆涓� - Db.Updateable(Locatyk).ExecuteCommand(); - } - Db.Updateable(Locatwc).ExecuteCommand(); - - // 鎻掑叆浠诲姟鏃ュ織 - Db.Insertable(exTask1).ExecuteCommand(); - outWhs.Add(taskModel); - } - if (Locatwc.Status == "2" || Locatwc.Status == "4") - { - numberQty = numberQty + pallet.Qty; - continue; - } - } - - + var Locats2 = Db.Queryable<SysStorageLocat>().Where(m => m.LocatNo == model.Code && m.IsDel == "0").ToList().FirstOrDefault(); + var taskNo2 = new Common().GetMaxNo("TK"); var exTask2 = new LogTask(); //鍑哄簱浠诲姟 exTask2.TaskNo = taskNo2; @@ -464,7 +374,7 @@ exTask2.Status = "0";//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 exTask2.OrderType = "4"; //0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� 4 鍙栨牱鍑哄簱鍗� exTask2.EndLocat = model.Code; //鐩爣浣嶇疆 - exTask2.Type = "1"; //浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + exTask2.Type = "2"; //浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 exTask2.Msg = pallet.LocatNo + "鎵樼洏鍑哄簱浠诲姟"; // 鎻掑叆浠诲姟鏃ュ織 Db.Insertable(exTask2).ExecuteCommand(); @@ -476,51 +386,53 @@ taskModel1.Order = 1; taskModel1.EndLocate = model.Code; // 鐩爣鍦板潃 taskModel1.EndRoadway = ""; // 鐩爣宸烽亾 - taskModel1.TaskNo = com.GetMaxNo("TK"); // 浠诲姟鍙� - taskModel1.TaskType = "1";// 浠诲姟绫诲瀷 (鍑哄簱) - taskModel1.OutMode = model.Code; + taskModel1.TaskNo = taskNo2; // 浠诲姟鍙� + taskModel1.TaskType = "2";// 浠诲姟绫诲瀷 (鍑哄簱) + taskModel1.Type = PLCTypeEnum.AGV; // 鏇存柊鍌ㄤ綅鐘舵�� - Locats.Status = "3"; + Locats.Status = "5"; Db.Updateable(Locats).ExecuteCommand(); + Locats2.Status = "4"; + Db.Updateable(Locats2).ExecuteCommand(); outWhs.Add(taskModel1); - // 鍚慦CS涓嬪彂鍑哄簱浠诲姟 - if (outWhs.Count > 0) - { - // 姝e紡杩愯绋嬪簭鏀惧紑 - var list2 = outWhs.Select(m => m.TaskNo).ToList(); - var jsonData = JsonConvert.SerializeObject(outWhs); - //string response = ""; - - try - { - //var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss") - //response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS"); - //var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss") - - ////瑙f瀽杩斿洖鏁版嵁 - //var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response); - //if (wcsModel.StatusCode == 0) - //{ - // //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�// - //new TaskServer().EditTaskIssueOk(list2, time1, time2); - //} - //if (wcsModel.StatusCode == -1) - //{ - // new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg); - // throw new Exception(wcsModel.Msg); - //} - } - catch (Exception ex) - { - throw new Exception(ex.Message); - } - - } + } + // 鍚慦CS涓嬪彂鍑哄簱浠诲姟 + if (outWhs.Count > 0) + { + // 姝e紡杩愯绋嬪簭鏀惧紑 + var list2 = outWhs.Select(m => m.TaskNo).ToList(); + var jsonData = JsonConvert.SerializeObject(outWhs); + string response = ""; + try + { + var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss") + response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS"); + var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss") + + //瑙f瀽杩斿洖鏁版嵁 + var wcsModel = JsonConvert.DeserializeObject<WcsModel2>(response); + if (wcsModel.code == 200) + { + //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�// + new TaskServer().EditTaskIssueOk(list2, time1, time2); + } + else + { + new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.message); + throw new Exception(wcsModel.message); + } + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + + } //娣诲姞鎿嶄綔鏃ュ織璁板綍 var k = new OperationCrServer() .AddLogOperationCr("璐ㄩ噺绠$悊", "璐ㄦ璇烽獙", data.QcNo, "鍑哄簱", $"鐐瑰嚮浜嗗嚭搴撴搷浣滐紱璇烽獙鍗�:{data.QcNo}!", userId); diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs index a0243b2..c83fc82 100644 --- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs +++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs @@ -4330,12 +4330,12 @@ try { - task.Status = "5";//浠诲姟鐘舵�� - //鍒ゆ柇璧峰鐩爣浣嶇疆閮芥槸骞冲簱 - if (pingKuList.Contains(task.StartLocat) && pingKuList.Contains(task.EndLocat)) - { + //task.Status = "5";//浠诲姟鐘舵�� + ////鍒ゆ柇璧峰鐩爣浣嶇疆閮芥槸骞冲簱 + //if (pingKuList.Contains(task.StartLocat) && pingKuList.Contains(task.EndLocat)) + //{ task.Status = "2"; - } + //} task.IsSend = 0; task.IsCancel = 0; diff --git a/Wms/WMS.BLL/HttpServer.cs b/Wms/WMS.BLL/HttpServer.cs index 4d9c3e5..0f5f9a3 100644 --- a/Wms/WMS.BLL/HttpServer.cs +++ b/Wms/WMS.BLL/HttpServer.cs @@ -6,6 +6,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using Utility.Tools; using WMS.BLL.Logic; using WMS.BLL.LogServer; using WMS.DAL; @@ -30,10 +31,10 @@ /// </summary> /// <param name="palletNo"></param> /// <param name="houseNo"></param> - /// <param name="roadwayNo"></param> + /// <param name="ceng"></param> /// <returns></returns> /// <exception cref="Exception"></exception> - public OutCommandDto RequestLocation(string palletNo, string houseNo) + public OutCommandDto RequestLocation(string palletNo, string houseNo,string ceng) { try { @@ -242,7 +243,7 @@ areaList.Add(item); } - locate = allotLocate.GetSuiTableLocate(houseNo, areaList, ""); + locate = allotLocate.GetSuiTableLocate(houseNo, areaList, "",ceng); #endregion @@ -1140,9 +1141,8 @@ } } - /// <summary> - /// 绉诲簱浠诲姟瀹屾垚JC34 + /// 绉诲簱鍗曠殑 绉诲簱浠诲姟瀹屾垚JC34 鍏煎AGV灏忚溅绉诲簱 /// </summary> /// <param name="taskNo"></param> /// <param name="userId"></param> @@ -1191,7 +1191,7 @@ if (userId != 0) { //娣诲姞鎿嶄綔鏃ュ織璁板綍 - var k = new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鍏ュ簱鏃ュ織", taskNo, "瀹屾垚", $"鐐瑰嚮瀹屾垚鎸夐挳銆佸畬鎴愪换鍔″彿涓猴細{taskNo}鐨勪换鍔�", userId); + var k = new OperationASNServer().AddLogOperationAsn("搴撳唴浣滀笟", "搴撳唴鏃ュ織", taskNo, "瀹屾垚", $"鐐瑰嚮瀹屾垚鎸夐挳銆佸畬鎴愪换鍔″彿涓猴細{taskNo}鐨勪换鍔�", userId); } foreach (var item in stockDetail) @@ -1245,6 +1245,410 @@ } } + /// <summary> + /// 鍑哄簱鍗曠殑绉诲簱浠诲姟锛孞C34 璐ф灦鎵樼洏涓嬫灦 + /// </summary> + /// <param name="taskNo">浠诲姟鍙�</param> + /// <param name="userId">鎿嶄綔浜�</param> + /// <exception cref="Exception"></exception> + public void ExMoveSuccess(string taskNo, int userId) + { + try + { + //褰撳墠浠诲姟淇℃伅 + var task = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0"); + if (task == null) + { + throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹taskNo}鈥欑殑浠诲姟淇℃伅"); + } + if (task.Status == "2") + { + throw new Exception("褰撳墠浠诲姟宸插畬鎴�"); + } + Db.BeginTran(); + //搴撳瓨涓綋鍓嶆墭鐩樼殑淇℃伅 + var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList(); + //褰撳墠浠诲姟涓殑鐩爣鍌ㄤ綅淇℃伅 + //褰撳墠浠诲姟涓殑鍘熷偍浣� + var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.StartLocat); + if (locate == null) + { + throw new Exception($"WMS绯荤粺涓病鏈夎{task.StartLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�"); + } + var locate2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.EndLocat); + if (locate2 == null) + { + throw new Exception($"WMS绯荤粺涓病鏈夎{task.EndLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�"); + } + //骞冲簱涓偍浣嶉泦鍚� + var pingKuLocate = Db.Queryable<SysStorageLocat>().Where(m => m.WareHouseNo == "W04" && m.IsDel == "0").ToList(); + var pingKuList = pingKuLocate.Select(m => m.LocatNo).ToList(); + try + { + + //task.Status = "5";//浠诲姟鐘舵�� + ////鍒ゆ柇璧峰鐩爣浣嶇疆閮芥槸骞冲簱 + //if (pingKuList.Contains(task.StartLocat) && pingKuList.Contains(task.EndLocat)) + //{ + task.Status = "2"; + //} + + task.IsSend = 0; + task.IsCancel = 0; + task.IsFinish = 0; + task.FinishDate = DateTime.Now;//瀹屾垚鏃堕棿 + Db.Updateable(task).ExecuteCommand(); + + #region 淇敼鍌ㄤ綅鐘舵�� + + if (!pingKuList.Contains(task.StartLocat)) + { + //鍘熷偍浣嶆敼涓虹┖鍌ㄤ綅 0 + locate.Status = "0"; + Db.Updateable(locate).ExecuteCommand(); + } + + + //鐩爣鍌ㄤ綅鏀逛负鏈夎揣鐗� 1 + locate2.Status = "1"; + Db.Updateable(locate2).ExecuteCommand(); + + foreach (var item in stockDetail) + { + item.WareHouseNo = locate2.WareHouseNo; + item.AreaNo = locate2.AreaNo; + item.RoadwayNo = locate2.RoadwayNo; + item.LocatNo = locate2.LocatNo; + } + Db.Updateable(stockDetail).ExecuteCommand(); + + + + #endregion + + Db.CommitTran(); + } + catch (Exception ex) + { + Db.RollbackTran(); + throw new Exception(ex.Message); + } + } + catch (Exception ex) + { + throw new Exception("瀹屾垚鍙嶉澶辫触锛�" + ex.Message); + } + } + + + + /// <summary> + /// PDA涓嬪彂鍑哄簱 + /// </summary> + /// <param name="soNo"></param> + /// <param name="detailId"></param> + /// <param name="outMode"></param> + /// <param name="userId"></param> + /// <param name="url"></param> + /// <param name="str"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + public List<OutCommandDto> IssueOutHouseLk(string soNo, string detailId,string outMode, int userId, string url, out string str) + { + try + { + var outDto1 = new List<OutCommandDto>(); //鍑哄簱鏁版嵁鐨勯泦鍚堬紙娣卞害涓�1鐨勫偍浣嶏級 + //璁板綍閿欒淇℃伅鐨勯泦鍚� //1:褰撳墠瑕佸嚭搴撶殑鍌ㄤ綅姝e湪绉诲嚭銆�2 鍑哄簱鐨勬墭鐩樺偍浣嶄俊鎭敊璇�(鍦ㄥ偍浣嶈〃涓湭鏌ヨ鍒�)銆�3鍌ㄤ綅鎹熷潖涓嶈兘鍑哄簱銆�4 瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱 + + + var com = new Common(); + var notice = Db.Queryable<BllExportNotice>().First(m => m.SONo == soNo && m.IsDel == "0"); + if (notice == null) + { + throw new Exception($"鏈壘鍒皗soNo}鍑哄簱鍗曚俊鎭�"); + } + if (notice.WareHouseNo != "W02") + { + throw new Exception("浠撳簱鍙烽敊璇�"); + } + var intDetailId = int.Parse(detailId); + if (intDetailId <=0) + { + throw new Exception("閫夋嫨鐨勫嚭搴撳崟鏄庣粏鍙傛暟閿欒"); + } + //鎵�鏈夎鍑哄簱鐨勫嚭搴撳垎閰嶄俊鎭�(鏈笅鍙戠殑淇℃伅鍜屽緟鎷h揣鐨勪俊鎭�) + var item = Db.Queryable<BllExportAllot>().First(a => a.IsDel == "0" && a.SONo == soNo && a.SODetailNo == intDetailId && a.Status == "0" ); + if (item == null) //鍒ゆ柇鏄惁鏈夐渶瑕佷笅鍙戠殑鍑哄簱娴佹按 + { + throw new Exception("褰撳墠鍑哄簱鍗曟嵁鏃犻渶瑕佷笅鍙戠殑鎵樼洏"); + } + + #region 闆嗗悎 + + //瑕佸嚭搴撶殑鏄庣粏闆嗗悎 + var outStockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == item.PalletNo).ToList(); + //鐗╂枡缂栫爜琛� + var skuList = Db.Queryable<SysMaterials>().Where(w => w.IsDel == "0"); + //鍖呰琛� + var packagList = Db.Queryable<SysPackag>().Where(w => w.IsDel == "0"); + Db.BeginTran(); + try + { + List<LogTask> logTaskList = new List<LogTask>();//姝ゆ鍑哄簱浠诲姟闆嗗悎锛屼负搴斿鍚屾墭鐩樹笉鍚岀墿鏂欏嚭搴� + var i = 0; + str = string.Empty; + var outLocatelist1 = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.AreaNo == "B02" && m.Flag == "0").ToList(); + var outLocatelist2 = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.AreaNo == "B05" && m.Flag == "0").ToList(); + //寰幆鍒嗛厤鐨勪俊鎭敓鎴愬嚭搴撲换鍔� + + var outModeLocate = outMode; + + var taskNoStr = ""; + + // 鍌ㄤ綅鍙� + var locateNo = outStockDetail.First(m => m.PalletNo == item.PalletNo).LocatNo; + + #region 鍒ゆ柇 + + //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱鍐� + if (string.IsNullOrWhiteSpace(locateNo)) //搴撳 + { + //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ叆搴撲腑 + var imBl = com.GetImTask(item.PalletNo); + if (imBl != null) + { + str = "瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱"; + return outDto1; + } + //鍒ゆ柇鏄惁鏄凡缁忓嚭杩囧簱鍙堝洖搴� + if (item.Status == "0") + { + //濡傛灉涓嶅湪浠撳簱鍐咃紝褰撳墠鍒嗛厤淇℃伅鐩存帴鏇存柊鍑哄簱瀹屾垚 + item.Status = "2";//鐘舵�� + item.OutMode = outModeLocate;//鍑哄簱鍙� + Db.Updateable(item).ExecuteCommand(); + var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.SODetailNo); + if (noticeDetail != null) //鏇存柊鍑哄簱鍗曟嵁鐨勪笅鍙戞暟閲� + { + noticeDetail.FactQty += item.Qty; + Db.Updateable(noticeDetail).ExecuteCommand(); + } + + //var notice2 = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == item.SONo); + if (notice.Status == "0" || notice.Status == "1" || notice.Status == "2") + { + var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo).ToList(); + if (detailList.Count(m => m.Qty >= m.AllotQty) > 0) + { + notice.Status = "3"; //鍙樻洿鐘舵�佷负姝e湪鎵ц + Db.Updateable(notice).ExecuteCommand(); + } + } + str = "瑕佸嚭搴撶殑鎵樼洏宸插湪搴撳"; + return outDto1; + } + str = "瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱"; + return outDto1; + } + + var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == locateNo && m.IsDel == "0");//褰撳墠鍑哄簱鐨勫偍浣嶄俊鎭� + if (locate == null) + { + str = "鍑哄簱鐨勬墭鐩樺偍浣嶄俊鎭敊璇�(鍦ㄥ偍浣嶈〃涓湭鏌ヨ鍒�)"; + return outDto1; + } + //鍒ゆ柇鍌ㄤ綅鏍囧織鏄惁涓烘崯鍧� + if (locate.Flag == "2") + { + str = "鍌ㄤ綅鎹熷潖涓嶈兘鍑哄簱"; + return outDto1; + } + + #endregion + + if (locate.Status == "1") //鏈夌墿鍝� + { + #region 娣诲姞鍑哄簱浠诲姟 + + var taskNo = new Common().GetMaxNo("TK"); + var exTask = new LogTask //鍑哄簱浠诲姟 + { + TaskNo = taskNo, + Sender = "WMS", + Receiver = "WCS", + IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 + + StartLocat = locate.LocatNo,//璧峰浣嶇疆 + EndLocat = outModeLocate,//鐩爣浣嶇疆 + PalletNo = item.PalletNo,//鎵樼洏鐮� + IsSend = 1,//鏄惁鍙啀娆′笅鍙� + IsCancel = 1,//鏄惁鍙彇娑� + IsFinish = 1,//鏄惁鍙畬鎴� + Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 + OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� + Msg = "浠�" + locate.LocatNo + "鍒�" + outModeLocate + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅 + }; + Db.Insertable(exTask).ExecuteCommand(); + logTaskList.Add(exTask); + + outDto1.Add(new OutCommandDto() + { + TaskNo = exTask.TaskNo, // 浠诲姟鍙� + TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)0鍏� 1鍑� 2绉� + + PalletNo = item.PalletNo,//鎵樼洏鍙� + StartLocate = locate.LocatNo, // 璧峰浣嶇疆 + StartRoadway = locate.RoadwayNo,//鍏跺疄宸烽亾 + EndLocate = outModeLocate, // 鐩爣浣嶇疆 + + Order = 999, + Type = PLCTypeEnum.AGV + + }); + taskNoStr = exTask.TaskNo; + + #endregion + + #region 鏀瑰彉鏁版嵁 + if (item.Status == "0")//鍒ゆ柇鎵樼洏鏄惁涓嬪彂杩� + { + var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.SODetailNo); + if (noticeDetail != null) //鏇存柊鍑哄簱鍗曟嵁鐨勪笅鍙戞暟閲� + { + noticeDetail.FactQty += item.Qty; + Db.Updateable(noticeDetail).ExecuteCommand(); + } + + //var notice2 = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == item.SONo); + if (notice.Status == "0" || notice.Status == "1" || notice.Status == "2") + { + var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo).ToList(); + if (detailList.Count(m => m.Qty >= m.AllotQty) > 0) + { + notice.Status = "3"; //鍙樻洿鐘舵�佷负姝e湪鎵ц + Db.Updateable(notice).ExecuteCommand(); + } + } + } + locate.Status = "3"; //瑕佸嚭搴撶殑鍌ㄤ綅鏀瑰彉鐘舵�� 姝e湪鍑哄簱 + Db.Updateable(locate).ExecuteCommand(); + var locate2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == outModeLocate && m.IsDel == "0");//褰撳墠鍑哄簱鐨勭洰鏍囧偍浣嶄俊鎭� + locate2.Status = "4"; + Db.Updateable(locate2).ExecuteCommand(); + + item.TaskNo = taskNoStr; // 鍑哄簱鍒嗛厤淇℃伅涓洿鏂颁换鍔″彿 + item.Status = "1"; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛� + //item.UnstackingMode = unstackingMode2;//鎷嗗灈鏂瑰紡 + item.OutMode = outModeLocate;//鍑哄簱鍙� + //item.LoadingAddre = unstackingMode2 == "0" ? loadingAddre : "";//瑁呰溅鍙� + Db.Updateable(item).ExecuteCommand(); + + #endregion + + } + else if (locate.Status == "3") //鍑哄簱涓� + { + #region 鏀瑰彉鏁版嵁 + //鍒ゆ柇鏄惁鏄凡缁忓嚭杩囧簱鍙堝洖搴擄紙鐘舵�佷负寰呮嫞璐х殑 1锛� + if (item.Status == "0") + { + var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.SODetailNo); + if (noticeDetail != null) //鏇存柊鍑哄簱鍗曟嵁鐨勪笅鍙戞暟閲� + { + noticeDetail.FactQty += item.Qty; + Db.Updateable(noticeDetail).ExecuteCommand(); + } + + //var notice2 = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == item.SONo); + if (notice.Status == "0" || notice.Status == "1" || notice.Status == "2") + { + var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo).ToList(); + if (detailList.Count(m => m.Qty >= m.AllotQty) > 0) + { + notice.Status = "3"; //鍙樻洿鐘舵�佷负姝e湪鎵ц + Db.Updateable(notice).ExecuteCommand(); + } + } + } + var taskNo = Db.Queryable<LogTask>().First(m => m.OrderType == "1" && m.TaskNo != item.TaskNo && m.Status == "1" && m.PalletNo == item.PalletNo); + if (taskNo == null) + { + taskNo = logTaskList.FirstOrDefault(m => m.PalletNo == item.PalletNo);//褰撳墠鏈夊悓鎵樼洏涓嶅悓鐗╂枡鍑哄簱 + } + if (taskNo == null) + { + throw new Exception($"鎵樼洏鍙凤細{item.PalletNo},鍑哄簱寮傚父"); + } + item.TaskNo = taskNo.TaskNo; + item.Status = "1"; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛� + item.OutMode = item.OutMode;//鍑哄簱鍙� + //item.UnstackingMode = unstackingMode2;//鎷嗗灈妯″紡 + Db.Updateable(item).ExecuteCommand(); + + #endregion + } + else if (locate.Status == "5") //绉诲嚭涓� + { + str = "褰撳墠瑕佸嚭搴撶殑鍌ㄤ綅姝e湪绉诲嚭"; + return outDto1; + } + + + //娣诲姞鎿嶄綔鏃ュ織璁板綍 + var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "涓嬪彂鍑哄簱", soNo, "鍑哄簱", $"鐐瑰嚮鍑哄簱鎸夐挳鍑哄簱鍗曞彿涓猴細{soNo}鐨勫嚭搴撳崟", userId); + Db.CommitTran(); + + if (outDto1.Count > 0) + { + // 姝e紡杩愯绋嬪簭鏀惧紑 + var list2 = outDto1.Select(m => m.TaskNo).ToList(); + var jsonData = JsonConvert.SerializeObject(outDto1); + string response = ""; + + try + { + var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss") + response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS"); + var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss") + + //瑙f瀽杩斿洖鏁版嵁 + var wcsModel = JsonConvert.DeserializeObject<WcsModel2>(response); + if (wcsModel.code == 0) + { + //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�// + new TaskServer().EditTaskIssueOk(list2, time1, time2); + str = "涓嬪彂鎴愬姛"; + } + else + { + new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.message); + throw new Exception(wcsModel.message); + } + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + + } + + return outDto1; + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + + + #endregion + } + catch (Exception e) + { + throw new Exception(e.Message); + } + } #region MyRegion diff --git a/Wms/WMS.BLL/Logic/AllotLocation.cs b/Wms/WMS.BLL/Logic/AllotLocation.cs index 8817d57..2a5c1f1 100644 --- a/Wms/WMS.BLL/Logic/AllotLocation.cs +++ b/Wms/WMS.BLL/Logic/AllotLocation.cs @@ -292,10 +292,14 @@ /// <param name="areaList">鍖哄煙闆嗗悎</param> /// <param name="roadwayNo">宸烽亾鍙�(鍙┖)</param> /// <returns></returns> - public SysStorageLocat GetSuiTableLocate(string houseNo, List<string> areaList,string roadwayNo = "") + public SysStorageLocat GetSuiTableLocate(string houseNo, List<string> areaList,string roadwayNo = "",string ceng = "") { try { + if (string.IsNullOrWhiteSpace(ceng)) + { + throw new Exception($"鐢宠璐ф灦搴撲綅灞傛暟涓嶈兘涓虹┖"); + } var db = DataContext.Db; /* 1.鍏堝垽鏂粨搴擄紙绔嬪簱鎴栬�呭钩搴擄級 * 2.濡傛灉鏄珛搴� 鍐嶅垽鏂槸鍚︽寚瀹氬贩閬撳彿 @@ -334,7 +338,7 @@ //鏌ヨ璇ュ贩閬撳苟涓旀爣蹇椾负姝e父鐨勭殑鍌ㄤ綅 roadwayList.Add(roadway); - var locate = GetLocateByRoadways(roadwayList,areaList,true,houseNo); + var locate = GetLocateByRoadways(roadwayList,areaList,true,houseNo, ceng); if (locate == null) { throw new Exception($"{roadwayNo}宸烽亾娌℃湁鍚堥�傜殑绌哄偍浣�"); @@ -346,7 +350,7 @@ { var roadwayList = db.Queryable<SysStorageRoadway>().Where(m => m.WareHouseNo == houseNo && m.Status == "0" && roadList.Contains(m.RoadwayNo)).OrderBy(m => new { m.Priority, m.RoadwayNo }).ToList(); - var locate = GetLocateByRoadways(roadwayList,areaList,false, houseNo); + var locate = GetLocateByRoadways(roadwayList,areaList,false, houseNo,ceng); if (locate == null) { throw new Exception($"{houseNo}浠撳簱宸插惎鐢ㄧ殑宸烽亾涓病鏈夊悎閫傜殑绌哄偍浣�"); @@ -380,7 +384,7 @@ /// <param name="areaList">鍖哄煙闆嗗悎</param> /// <param name="isRoadway">鏄惁鎸囧畾宸烽亾</param> /// <returns></returns> - private SysStorageLocat GetLocateByRoadways(List<SysStorageRoadway> roadways,List<string> areaList,bool isRoadway = false ,string houseNo = "W02") + private SysStorageLocat GetLocateByRoadways(List<SysStorageRoadway> roadways,List<string> areaList,bool isRoadway = false ,string houseNo = "W02",string ceng = "") { try { @@ -469,7 +473,7 @@ var count = 0; do { - locate = GetLocateByRoadway(l.RoadwayNo, topOrBom, leftOrRight, areaList, list, ref count); + locate = GetLocateByRoadway(l.RoadwayNo, topOrBom, leftOrRight, areaList, list, ref count, ceng); if (locate != null) { break; @@ -503,7 +507,7 @@ var count = 0; do { - locate = GetLocateByRoadway(log.RoadwayNo, topOrBom, leftOrRight, areaList, list, ref count); + locate = GetLocateByRoadway(log.RoadwayNo, topOrBom, leftOrRight, areaList, list, ref count,ceng); if (locate != null) { break; @@ -531,7 +535,7 @@ var count = 0; do { - locate = GetLocateByRoadway(item.RoadwayNo, topOrBom, leftOrRight, areaList, list, ref count); + locate = GetLocateByRoadway(item.RoadwayNo, topOrBom, leftOrRight, areaList, list, ref count,ceng); if (locate != null) { break; @@ -575,7 +579,7 @@ /// <param name="areaList">鍖哄煙闆嗗悎</param> /// <param name="locateNoStr">鎺掗櫎鐨勫偍浣嶉泦鍚�</param> /// <returns></returns> - private SysStorageLocat GetLocateByRoadway(string roadwayNo, int topOrBom, int leftOrRight,List<string> areaList,List<string> locateNoStr,ref int count) + private SysStorageLocat GetLocateByRoadway(string roadwayNo, int topOrBom, int leftOrRight,List<string> areaList,List<string> locateNoStr,ref int count,string ceng = "") { var db = DataContext.Db; var str = ""; @@ -596,7 +600,11 @@ foreach (var area in areaList) { - var sql = $@"select * from SysStorageLocat where IsDel = 0 and Flag = 0 and [Status] = 0 and RoadwayNo = '{roadwayNo}' and AreaNo = '{area}' and LocatNo not in({str}) "; + var sql = $@"select * from SysStorageLocat where IsDel = 0 and Layer!= '3' and Flag = 0 and [Status] = 0 and RoadwayNo = '{roadwayNo}' and AreaNo = '{area}' and LocatNo not in({str}) "; + if (!string.IsNullOrWhiteSpace(ceng)) + { + sql += $"and Layer = '{ceng}' "; + } sql += "order by "; sql += topOrBom == 0 ? "Layer desc, " : "Layer, "; sql += leftOrRight == 0 ? "[Column], " : "[Column] desc, "; diff --git a/Wms/WMS.Entity/LogEntity/LogTask.cs b/Wms/WMS.Entity/LogEntity/LogTask.cs index 35bcb33..ab9f71b 100644 --- a/Wms/WMS.Entity/LogEntity/LogTask.cs +++ b/Wms/WMS.Entity/LogEntity/LogTask.cs @@ -128,7 +128,7 @@ public int? IsFinish {get;set;} /// <summary> - /// Desc:鍗曟嵁绫诲瀷 0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� 4瑙嗚鐩樼偣 + /// Desc:鍗曟嵁绫诲瀷 0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� 4鍙栨牱鍑哄簱鍗� /// Default: /// Nullable:True /// </summary> diff --git a/Wms/WMS.IBLL/IHttpServer.cs b/Wms/WMS.IBLL/IHttpServer.cs index 7fe8239..8d428de 100644 --- a/Wms/WMS.IBLL/IHttpServer.cs +++ b/Wms/WMS.IBLL/IHttpServer.cs @@ -15,8 +15,9 @@ /// </summary> /// <param name="palletNo"></param> /// <param name="houseNo"></param> + /// <param name="ceng"></param> /// <returns></returns> - OutCommandDto RequestLocation(string palletNo, string houseNo); + OutCommandDto RequestLocation(string palletNo, string houseNo,string ceng); /// <summary> /// 鐢宠宸烽亾(瀵嗛泦搴�) @@ -56,7 +57,29 @@ /// <param name="userId"></param> void MoveSuccess(string taskNo, int userId); + /// <summary> + /// 鍑哄簱鍗曠殑绉诲簱浠诲姟瀹屾垚 + /// </summary> + /// <param name="taskNo"></param> + /// <param name="userId"></param> + void ExMoveSuccess(string taskNo, int userId); + + //---------------------------------------------------------------------------------------------------------- + + + + /// <summary> + /// PDA涓嬪彂鍑哄簱 + /// </summary> + /// <param name="soNo"></param> + /// <param name="detailId"></param> + /// <param name="outMode"></param> + /// <param name="userId"></param> + /// <param name="url"></param> + /// <param name="str"></param> + /// <returns></returns> + List<OutCommandDto> IssueOutHouseLk(string soNo, string detailId, string outMode, int userId, string url, out string str); #endregion diff --git a/Wms/Wms/Controllers/BllSoController.cs b/Wms/Wms/Controllers/BllSoController.cs index 0750860..3e3ace5 100644 --- a/Wms/Wms/Controllers/BllSoController.cs +++ b/Wms/Wms/Controllers/BllSoController.cs @@ -703,7 +703,7 @@ { try { - var type = new List<string>(){"1","4"}; + var type = new List<string>(){"1"}; RefAsync<int> count = new RefAsync<int>(); var bolls = await _taskSvc.GetTaskList( type, model.Type,model.Status,model.TaskNo,model.IsSuccess,model.PalletNo,model.Msg,model.Page, model.Limit, count); diff --git a/Wms/Wms/Controllers/DownApiController.cs b/Wms/Wms/Controllers/DownApiController.cs index 0bdcc9b..5446a99 100644 --- a/Wms/Wms/Controllers/DownApiController.cs +++ b/Wms/Wms/Controllers/DownApiController.cs @@ -151,6 +151,58 @@ } } + /// <summary> + /// PDA涓嬪彂鍑哄簱 + /// </summary> + /// <param name="soNo"></param> + /// <param name="soDetailId">鍑哄簱鍗曟槑缁咺D</param> + /// <param name="outMode">鍑哄簱鍦板潃锛堝钩搴撴嫞璐т綅锛�</param> + /// <returns></returns> + [HttpGet] + public IActionResult PDAIssueOut(string soNo, string soDetailId,string outMode) + { + try + { + //鑾峰彇褰撳墠鐧诲綍鐨勭敤鎴稩D + var claimsIdentity = this.User.Identity as ClaimsIdentity; + if (claimsIdentity == null) + { + return Ok(new HttpReturnModel { Success = "-1", Message = "鏈幏鍙栧埌褰撳墠鎿嶄綔浜轰俊鎭�"}); + } + var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value; + if (string.IsNullOrWhiteSpace(userId)) + { + return Ok(new HttpReturnModel { Success = "-1", Message = "鏈幏鍙栧埌褰撳墠鎿嶄綔浜轰俊鎭�"}); + } + //楠岃瘉鍑哄簱鍙� + if (string.IsNullOrWhiteSpace(outMode)) + { + return Ok(new HttpReturnModel { Success = "-1", Message = "璇烽�夋嫨鍑哄簱鍦板潃" }); + } + var house = _exNoticeSvc.GetHouseBySo(soNo); + if (house == "W01") + { + //var list = _exNoticeSvc.IssueOutHouseMk(soNo, outMode, int.Parse(userId), _config.WcsHost + _config.IssueComApiUrl, out string str); + + return Ok(new HttpReturnModel { Success = "0", Message = "str", Data = "list" }); + } + else if (house == "W02") + { + var list = _exNoticeSvc.IssueOutHouseLk(soNo, outMode, int.Parse(userId), _config.WcsHost + _config.IssueComApiUrl, out string str); + + return Ok(new HttpReturnModel { Success = "0", Message = str, Data = list}); + } + else + { + return Ok(new HttpReturnModel { Success = "-1", Message = "浠撳簱淇℃伅閿欒锛岃鏍稿疄鍗曟嵁淇℃伅" }); + } + + } + catch (Exception e) + { + return Ok(new HttpReturnModel { Success = "-1", Message = e.Message }); + } + } /// <summary> /// 閲嶆柊涓嬪彂鍑哄簱浠诲姟 @@ -301,7 +353,7 @@ try { - var list = _http.RequestLocation(model.PalletNo, model.HouseNo); + var list = _http.RequestLocation(model.PalletNo, model.HouseNo,model.Ceng); _asnPalletBindSvc.IssueAsnTask(list, _config.WcsHost+ _config.IssueComApiUrl2);//WCS璺緞 new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "鐢宠鍏ュ簱", model.PalletNo, "娣诲姞", $"鐢宠鍌ㄤ綅鎵樼洏鍙凤細{model.PalletNo}鐨勬垚鍔熶俊鎭�", int.Parse(userId)); @@ -420,7 +472,7 @@ } else if (model.TaskType == "2") { - _exNoticeSvc.RelocationSuccess(model.TaskNo, 0); + _http.ExMoveSuccess(model.TaskNo, 0); return Ok(new WcsModel { StatusCode = 0, Msg = "绉诲簱瀹屾垚" }); } break; @@ -436,11 +488,19 @@ return Ok(new WcsModel { StatusCode = 0, Msg = "鍏ュ簱瀹屾垚" }); } break; - case "3"://绉诲簱瀹屾垚浠诲姟銆佷紭鍖栧偍浣� + case "3"://绉诲簱鍗� AGV璧拌繖 if (model.TaskType == "2") //0锛氬叆搴� 1锛氬嚭搴� 2锛氱Щ搴� { //濉啓绉诲簱瀹屾垚浠g爜 _http.MoveSuccess(model.TaskNo, 0); + return Ok(new WcsModel { StatusCode = 0, Msg = "绉诲簱瀹屾垚" }); + } + break; + case "4"://璐ㄦ鍑哄簱 + if (model.TaskType == "2") //0锛氬叆搴� 1锛氬嚭搴� 2锛氱Щ搴� + { + //濉啓绉诲簱瀹屾垚浠g爜 + _http.ExMoveSuccess(model.TaskNo, 0); return Ok(new WcsModel { StatusCode = 0, Msg = "绉诲簱瀹屾垚" }); } break; @@ -483,6 +543,93 @@ } } + + /// <summary> + /// 鎺ュ彈wcs杩斿洖鐨勪俊鍙� //鎸囦护鍙嶉锛堟槸鍚﹀畬鎴愶級 + /// </summary> + /// <returns></returns> + [HttpPost] + public IActionResult ReceiveRenGongSignal(ReceiveWcsSignal model) + { + //鑾峰彇褰撳墠鐧诲綍鐨勭敤鎴稩D + var claimsIdentity = this.User.Identity as ClaimsIdentity; + if (claimsIdentity == null) + { + return Ok(new HttpReturnModel { Success = "1", Message = "鏈幏鍙栧埌褰撳墠鎿嶄綔浜轰俊鎭�" }); + } + var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value; + if (string.IsNullOrWhiteSpace(userId)) + { + return Ok(new HttpReturnModel { Success = "1", Message = "鏈幏鍙栧埌褰撳墠鎿嶄綔浜轰俊鎭�" }); + } + try + { + if (string.IsNullOrEmpty(model.TaskNo) || string.IsNullOrEmpty(model.TaskStatus) || string.IsNullOrEmpty(model.TaskType)) + { + return Ok(new HttpReturnModel { Success = "-1", Message = "鍙傛暟閿欒" }); + } + //鎺ユ敹鏃堕棿 + + var orderType = _taskSvc.GetTaskOrderType(model.TaskNo);// 鍒ゆ柇鍗曟嵁绫诲瀷鍏ュ嚭绉� + switch (orderType) + { + case "0"://鍏ュ簱瀹屾垚浠诲姟 + if (model.TaskType == "0")//0锛氬叆搴� 1锛氬嚭搴� 2锛氱Щ搴� + { + _http.ArrivalSuccess2(model.TaskNo, 0); + return Ok(new HttpReturnModel { Success = "0", Message = "鍏ュ簱瀹屾垚" }); + } + break; + case "1"://鍑哄簱瀹屾垚浠诲姟 + if (model.TaskType == "1")//0锛氬叆搴� 1锛氬嚭搴� 2锛氱Щ搴� + { + _exNoticeSvc.ExportSuccess(model.TaskNo, 0); + return Ok(new HttpReturnModel { Success = "0", Message = "鍑哄簱瀹屾垚" }); + } + else if (model.TaskType == "2") + { + _http.ExMoveSuccess(model.TaskNo, 0); + return Ok(new HttpReturnModel { Success = "0", Message = "绉诲簱瀹屾垚" }); + } + break; + case "2"://鐩樺簱瀹屾垚浠诲姟 + if (model.TaskType == "1")//0锛氬叆搴� 1锛氬嚭搴� 2锛氱Щ搴� + { + _crCheckSvc.CheckSuccess(model.TaskNo, 0); + return Ok(new HttpReturnModel { Success = "0", Message = "鐩樼偣鍑哄簱瀹屾垚" }); + } + else if (model.TaskType == "0")// 鐩樼偣鍑哄簱鎵樼洏鍥炲簱瀹屾垚 + { + _http.ArrivalSuccess2(model.TaskNo, 0); + return Ok(new HttpReturnModel { Success = "0", Message = "鍏ュ簱瀹屾垚" }); + } + break; + case "3"://绉诲簱鍗� + if (model.TaskType == "2") //0锛氬叆搴� 1锛氬嚭搴� 2锛氱Щ搴� + { + //濉啓绉诲簱瀹屾垚浠g爜 + _http.MoveSuccess(model.TaskNo, 0); + return Ok(new HttpReturnModel { Success = "0", Message = "绉诲簱瀹屾垚" }); + } + break; + case "4"://璐ㄦ鍑哄簱 + if (model.TaskType == "2") //0锛氬叆搴� 1锛氬嚭搴� 2锛氱Щ搴� + { + _http.ExMoveSuccess(model.TaskNo, 0); + return Ok(new HttpReturnModel { Success = "0", Message = "绉诲簱瀹屾垚" }); + } + break; + default: + return Ok(new HttpReturnModel { Success = "-1", Message = "浼犻�掔殑浠诲姟鐘舵�佷负澶辫触鐘舵��" }); + } + return Ok(new HttpReturnModel { Success = "-1", Message = "浼犻�掔殑浠诲姟鐘舵�佷负澶辫触鐘舵��" }); + } + catch (Exception ex) + { + return Ok(new HttpReturnModel { Success = "-1", Message = ex.Message }); + } + } + /// <summary> /// WCS鍙嶉AGV浠诲姟鍙栬揣瀹屾垚 /// </summary> -- Gitblit v1.8.0