From 3d6ef3897a77dec54be7057299e1be1d10589336 Mon Sep 17 00:00:00 2001 From: chengsc <11752@DESKTOP-DS49RCP> Date: 星期六, 10 五月 2025 17:15:43 +0800 Subject: [PATCH] 修改密集库申请入库 --- Wms/WMS.BLL/HttpServer.cs | 681 +++++++++++++++++++++++++++++++++++++++++++++++- Wms/WMS.IBLL/IHttpServer.cs | 17 + HTML/views/QualityControl/InspectionRequest.html | 19 + Wms/Model/InterFaceModel/HttpModel.cs | 25 - Wms/WMS.BLL/Logic/AllotLocation.cs | 1 Wms/Wms/Controllers/DownApiController.cs | 26 - Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs | 22 7 files changed, 715 insertions(+), 76 deletions(-) diff --git a/HTML/views/QualityControl/InspectionRequest.html b/HTML/views/QualityControl/InspectionRequest.html index fd0a743..bc69a24 100644 --- a/HTML/views/QualityControl/InspectionRequest.html +++ b/HTML/views/QualityControl/InspectionRequest.html @@ -245,9 +245,9 @@ var html = ''; switch (d.Status) { case "0" : - html += `<a class="layui-btn layui-btn-normal layui-btn-xs addClass" lay-event="upImage"> + html += `<a class="layui-btn layui-btn-normal layui-btn-xs shangClass" lay-event="upImage"> <i class="layui-icon layui-icon-add"></i>涓婁紶</a> `; - html += `<a class="layui-btn layui-btn-normal layui-btn-xs addClass" lay-event="ViewImage"> + html += `<a class="layui-btn layui-btn-normal layui-btn-xs chaClass" lay-event="ViewImage"> <i class="layui-icon layui-icon-add"></i>鏌ョ湅</a> `; html += `<a class="layui-btn layui-btn-normal layui-btn-xs addClass" lay-event="add"> <i class="layui-icon layui-icon-add"></i>璇烽獙</a> `; @@ -418,7 +418,7 @@ { field: 'UpdateTime', title: '瀹屾垚鏃ユ湡', align: 'center', width: 165, templet: '#templetUpdateTime' }, { field: 'UpdateUserName', title: '鍏冲崟浜�', align: 'center', width: 165 }, - { field: 'caozuo', title: '鎿嶄綔', fixed: 'right', width: 180, align: 'center', toolbar: '#InspectionRequestList', "disabled": true } + { field: 'caozuo', title: '鎿嶄綔', fixed: 'right', width: 270, align: 'center', toolbar: '#InspectionRequestList', "disabled": true } ]]; var TotalColsSysArr = encodeURIComponent(encodeURIComponent(JSON.stringify(TotalColsArr)))//灏嗚〃澶存暟鎹繘琛寀rl缂栫爜 //#endregion @@ -480,6 +480,8 @@ // 娣诲姞鎸夐挳鏉冮檺 function setRight() { $(function () { + $(".shangClass").hide(); + $(".chaClass").hide(); $(".addClass").hide(); $(".editClass").hide(); $(".delClass").hide(); @@ -488,6 +490,17 @@ sendData(IP + "/Basis/GetRoleRightList", {}, 'get', function (res) { if (res.code == 0) { //鎴愬姛 for (var k = 0; k < res.data.length; k++) { + + if (res.data[k].MenuName == "涓婁紶") { + $(function () { + $(".shangClass").show(); + }); + } + if (res.data[k].MenuName == "鏌ョ湅") { + $(function () { + $(".chaClass").show(); + }); + } if (res.data[k].MenuName == "璇烽獙") { $(function () { $(".addClass").show(); diff --git a/Wms/Model/InterFaceModel/HttpModel.cs b/Wms/Model/InterFaceModel/HttpModel.cs index a3db8e2..7e703c5 100644 --- a/Wms/Model/InterFaceModel/HttpModel.cs +++ b/Wms/Model/InterFaceModel/HttpModel.cs @@ -93,6 +93,12 @@ public enum PLCTypeEnum { + + /// <summary> + /// 杈撻�佺嚎 + /// </summary> + [Description("杈撻�佺嚎")] + ConveyorLine = 1, /// <summary> /// AGV灏忚溅 /// </summary> @@ -156,24 +162,7 @@ /// 椤哄簭-浼樺厛绾� /// </summary> public int Order { get; set; } - - - /// <summary> - /// 鎵樼洏绫诲瀷锛�0:鐗╂枡 1:鎵樼洏 - /// </summary> - public string PalletType { get; set; } - /// <summary> - /// 鎷h揣鏂瑰紡锛�0:鏈哄櫒浜烘媶鍨� 1:PDA鎷嗗灈 - /// </summary> - public string UnstackingMode { get; set; } - /// <summary> - /// 鎵樼洏涓婃�绘暟閲� - /// </summary> - public decimal? BoxexQty { get; set; } - /// <summary> - /// 鎷h揣鏁伴噺 - /// </summary> - public decimal? CompleteQty { get; set; } + } /// <summary> /// 鎺ュ彈wcs浠诲姟鍙嶉淇℃伅Model diff --git a/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs b/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs index d088c20..54de8b1 100644 --- a/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs +++ b/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs @@ -2589,21 +2589,21 @@ try { var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss") - //response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍏ュ簱鍛戒护", "WCS"); + response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍏ュ簱鍛戒护", "WCS"); var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss") var list = new List<string>() { model.TaskNo }; - ////瑙f瀽杩斿洖鏁版嵁 - //var wcsModel = JsonConvert.DeserializeObject<WcsModel2>(response); - //if (wcsModel.code == 200) - //{ + //瑙f瀽杩斿洖鏁版嵁 + var wcsModel = JsonConvert.DeserializeObject<WcsModel2>(response); + if (wcsModel.code == 200) + { //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�// new TaskServer().EditTaskIssueOk(list, time1, time2); - - //}else - //{ - // new TaskServer().EditTaskIssueNo(list, time1, time2, wcsModel.message); - // throw new Exception("WCS鍙嶉锛�"+wcsModel.message); - //} + } + else + { + new TaskServer().EditTaskIssueNo(list, time1, time2, wcsModel.message); + throw new Exception("WCS鍙嶉锛�" + wcsModel.message); + } } catch (Exception ex) { diff --git a/Wms/WMS.BLL/HttpServer.cs b/Wms/WMS.BLL/HttpServer.cs index 1fee251..61228b3 100644 --- a/Wms/WMS.BLL/HttpServer.cs +++ b/Wms/WMS.BLL/HttpServer.cs @@ -61,7 +61,7 @@ throw new Exception("鎵樼洏鏉$爜涓嶅彈WMS绠$悊锛屼笉鍙叆搴擄紒"); #region - var upShelfOld = Db.Queryable<BllPalletUpShelf>().First(m => m.IsDel == "0" && m.PalletNo == palletNo && (m.Status == "0" || m.Status == "1")); + var skuList = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0").ToList(); //鐗╂枡绫诲埆淇℃伅 @@ -79,8 +79,10 @@ throw new Exception("鎴愬搧鐗╂枡璇峰叆鎴愬搧搴�"); } } - if (upShelfOld != null) //鏌ヨ鍒板叆搴撲俊鎭� + var upShelfOldList = Db.Queryable<BllPalletUpShelf>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo && (m.Status == "0" || m.Status == "1")).ToList(); + if (upShelfOldList != null) //鏌ヨ鍒板叆搴撲俊鎭� { + var upShelfOld = upShelfOldList.First(); var beingTask = Db.Queryable<LogTask>().First(m => m.IsDel == "0" && m.TaskNo == upShelfOld.TaskNo); if (beingTask == null) { @@ -90,15 +92,17 @@ { comDto = new OutCommandDto() { + TaskNo = beingTask.TaskNo, // 浠诲姟鍙� + TaskType = "0",// 浠诲姟绫诲瀷 PalletNo = palletNo,//鎵樼洏鍙� + StartRoadway = beingTask.StartRoadway, // 璧峰宸烽亾 StartLocate = beingTask.StartLocat, // 璧峰浣嶇疆 EndLocate = beingTask.EndLocat, // 鐩爣浣嶇疆 EndRoadway = beingTask.EndRoadway, // 鐩爣宸烽亾 - TaskNo = beingTask.TaskNo, // 浠诲姟鍙� - TaskType = "0",// 浠诲姟绫诲瀷 (鍑哄簱) - OutMode = "", //鐩爣鍦板潃 - Order = 1 + + Order = 999, + Type = PLCTypeEnum.AGV }; if (beingTask.IsSuccess == 0) { @@ -106,11 +110,16 @@ } beingTask.Status = "1"; Db.Updateable(beingTask).ExecuteCommand(); - if (upShelfOld.Status == "0") + + foreach (var item in upShelfOldList) { - upShelfOld.Status = "1"; - Db.Updateable(upShelfOld).ExecuteCommand(); + if (item.Status == "0") + { + upShelfOld.Status = "1"; + Db.Updateable(upShelfOld).ExecuteCommand(); + } } + return comDto; } else @@ -251,7 +260,7 @@ }; Db.Insertable(log).ExecuteCommand(); var taskNo = new Common().GetMaxNo("TK"); - var exTask = new LogTask //鍏ュ簱浠诲姟 + var inTask = new LogTask //鍏ュ簱浠诲姟 { TaskNo = taskNo, Sender = "WMS", @@ -273,7 +282,7 @@ Msg = "鍏ュ簱鍙e埌=>>" + locate.LocatNo + "鐨勫叆搴撲换鍔�", //鍏抽敭淇℃伅 }; - Db.Insertable(exTask).ExecuteCommand(); + Db.Insertable(inTask).ExecuteCommand(); var asnNo = ""; // 娣诲姞鎵樼洏缁戝畾琛ㄦ墭鐩樺叆搴撲换鍔″彿 liudl foreach (DataStockDetail stockModel in stockDetail) @@ -295,7 +304,7 @@ //娣诲姞鎵樼洏涓婃灦璁板綍 var upShelf = new BllPalletUpShelf() { - TaskNo = exTask.TaskNo, + TaskNo = inTask.TaskNo, TraceNo = asnNo, PalletNo = palletNo, SkuNo = stockModel.SkuNo, @@ -320,16 +329,649 @@ Db.CommitTran(); comDto = new OutCommandDto() { + TaskNo = taskNo, // 浠诲姟鍙� + TaskType = "0",// 浠诲姟绫诲瀷 PalletNo = palletNo,//鎵樼洏鍙� + + StartRoadway = inTask.StartRoadway, + StartLocate = inTask.StartLocat, // 璧峰浣嶇疆 + EndLocate = inTask.EndLocat, // 鐩爣浣嶇疆 + EndRoadway = inTask.EndRoadway, // 鐩爣宸烽亾 + + Order = 999, + Type = PLCTypeEnum.AGV + }; + + } + catch (Exception ex) + { + Db.RollbackTran(); + throw new Exception(ex.Message); + } + #endregion + + + return comDto; + } + catch (Exception e) + { + throw new Exception(e.Message); + } + } + + /// <summary> + /// 鐢宠宸烽亾(瀵嗛泦搴�) + /// </summary> + /// <param name="palletNo"></param> + /// <param name="houseNo"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + public OutCommandDto RequestMiJiRoadWay(string palletNo, string houseNo) + { + try + { + #region 楠岃瘉鎵樼洏鍚堟硶鎬� + //楠岃瘉鎵樼洏鏉$爜鏄惁涓虹┖ + if (string.IsNullOrEmpty(palletNo)) + { + throw new Exception("璇疯緭鍏ヨ鐢宠鐨勬墭鐩樻潯鐮�"); + } + //楠岃瘉鎵�灞炰粨搴撴槸鍚︿负绌� + if (string.IsNullOrEmpty(houseNo)) + { + throw new Exception("璇烽�夋嫨鎵�灞炰粨搴�"); + } + //鑾峰彇浠撳簱绫诲瀷 + var houseType = Db.Queryable<SysWareHouse>().First(a => a.WareHouseNo == houseNo); + //楠岃瘉鏄惁涓哄瘑闆嗗簱 + if (houseType.Type != "3") + { + throw new Exception("浠撳簱涓嶆槸瀵嗛泦搴�"); + } + + var stock = Db.Queryable<SysPallets>().First(a => a.PalletNo == palletNo);//鎵樼洏淇℃伅 + //鍒ゆ柇鎵樼洏鏉$爜鏄惁鏈夋晥 + if (stock == null) + { + throw new Exception("鎵樼洏鏉$爜涓嶅彈WMS绠$悊锛屼笉鍙叆搴擄紒"); + } + #endregion + + OutCommandDto comDto;//杩斿洖wcs鐨勫叆搴撳懡浠� + + #region 浠g爜鍧� + + //鏌ヨ鎵樼洏缁戝畾淇℃伅(鐘舵�佷负绛夊緟鍏ュ簱/姝e湪鎵ц鐨�) + + var skuNo = ""; //鍏ュ簱鐗╂枡 + var lotNo = ""; //鍏ュ簱鎵规 + + //鐗╂枡淇℃伅 + var skuList = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0").ToList(); + //鐗╂枡绫诲埆淇℃伅 + var skuCategoryList = Db.Queryable<SysMaterialCategory>().Where(m => m.IsDel == "0").ToList(); + //鎵樼洏搴撳瓨淇℃伅 + var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == palletNo).ToList(); + //楠岃瘉鐗╂枡鏄惁鏈夋垚鍝� + foreach (var item in stockDetail) + { + var skuItem = skuList.First(m => m.SkuNo == item.SkuNo); + if (skuItem.Type != "2") + { + throw new Exception("鎵樼洏涓婃湁涓嶆槸鎴愬搧鐨勭墿鏂�"); + } + } + var upShelfOld = Db.Queryable<BllPalletUpShelf>().First(m => m.IsDel == "0" && m.PalletNo == palletNo && (m.Status == "0" || m.Status == "1")); + + if (upShelfOld != null) //姝e父鍏ュ簱 + { + var beingTask = Db.Queryable<LogTask>().First(m => m.IsDel == "0" && m.TaskNo == upShelfOld.TaskNo); + if (beingTask == null) + { + throw new Exception("璇ユ墭鐩樻鍦ㄥ叆搴擄紝浣嗘湭鏌ヨ鍒颁换鍔′俊鎭�"); + } + if (!string.IsNullOrWhiteSpace(beingTask.EndRoadway)) + { + comDto = new OutCommandDto() + { + TaskNo = beingTask.TaskNo, // 浠诲姟鍙� + TaskType = "0",// 浠诲姟绫诲瀷 + PalletNo = palletNo,//鎵樼洏鍙� + + StartRoadway = beingTask.StartRoadway, // 璧峰宸烽亾 + StartLocate = beingTask.StartLocat, // 璧峰浣嶇疆 + EndLocate = beingTask.EndLocat, // 鐩爣浣嶇疆 + EndRoadway = beingTask.EndRoadway, // 鐩爣宸烽亾 + + Order = 999, + Type = PLCTypeEnum.ConveyorLine + }; + if (beingTask.IsSuccess == 0) + { + beingTask.IsSuccess = 1; + } + beingTask.Status = "1"; + Db.Updateable(beingTask).ExecuteCommand(); + if (upShelfOld.Status == "0") + { + upShelfOld.Status = "1"; + Db.Updateable(upShelfOld).ExecuteCommand(); + } + return comDto; + } + else + { + throw new Exception("鏌ヨ鍒颁换鍔′絾鐩殑宸烽亾涓虹┖"); + } + } + else //鐢宠鍏ュ簱 + { + if (stockDetail.Count == 0) + { + throw new Exception($"{palletNo}鎵樼洏涓嶅瓨鍦ㄥ簱瀛樹俊鎭紝涓嶅彲鍏ュ簱锛�"); + } + if (stockDetail.Count(m => !string.IsNullOrWhiteSpace(m.LocatNo)) > 0) + { + throw new Exception("褰撳墠鎵樼洏宸插湪搴撳唴锛岃鏍稿疄"); + } + skuNo = stockDetail.First().SkuNo; + lotNo = stockDetail.First().LotNo; + + #region 鍒ゆ柇璇ユ墭鐩橈紝鏄惁绗﹀悎鍥炲簱鍔熻兘璁惧畾鐨勫洖搴撹鍒� + //鑾峰彇瀵瑰簲鍥炲簱瑙勫垯 + var function = Db.Queryable<SysFunSetting>().First(a => a.IsDel == "0"&& a.FunSetNo == "Fun041" && a.IsEnable == "NO"); + if (function != null) + { + //鎷h揣瀹屾垚鍚庡厑璁告墭鐩樺洖搴� + var allot = Db.Queryable<BllExportAllot>().First(a => a.IsDel == "0"&& a.LotNo == stockDetail[0].LotNo && a.PalletNo == palletNo && a.SkuNo == stockDetail[0].SkuNo); + + //楠岃瘉鎷h揣鏄庣粏鏄惁瀛樺湪 + if (allot != null) + { + //楠岃瘉褰撳墠鎵樼洏鎷h揣淇℃伅鏄惁宸插畬鎴� + if (allot.Status != "5") + { + throw new Exception("褰撳墠鎵樼洏鎷h揣淇℃伅鏈畬鎴愶紝璇峰畬鎴愬悗鍥炲簱锛�"); + } + } + } + #endregion + } + + var allotLocate = new AllotLocation(); + + #region 鏍规嵁sku纭鍖哄煙鍒掑垎 + + //鐗╂枡淇℃伅 + var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == skuNo); + if (sku == null) + { + throw new Exception("鐗╂枡缂栫爜涓嶅瓨鍦紝涓嶅彲鍏ュ簱"); + } + //鍒ゆ柇鐗╂枡鏄惁鍚湁绫诲埆淇℃伅 + if (string.IsNullOrWhiteSpace(sku.CategoryNo)) + { + throw new Exception($"鐗╂枡锛歿sku.SkuNo}鏈缃被鍒�,涓嶅彲鍏ュ簱"); + } + //鐗╂枡绫诲埆淇℃伅 + var skuCategory = Db.Queryable<SysMaterialCategory>().First(m => m.IsDel == "0" && m.CategoryNo == sku.CategoryNo); + if (skuCategory == null) + { + throw new Exception($"{sku.SkuNo}鐗╂枡绫诲埆涓嶅瓨鍦紝涓嶅彲鍏ュ簱"); + } + //鏁寸悊鍖哄煙淇℃伅 + var areaStr = skuCategory.AreaNo.Split(","); + var areaList = new List<string>(); + foreach (var item in areaStr) + { + areaList.Add(item); + } + + //宸烽亾缁勪俊鎭� + var roadList = Db.Queryable<SysStorageLocat>().Where(m => m.WareHouseNo == houseNo && areaList.Contains(m.AreaNo)) + .GroupBy(m => m.RoadwayNo).OrderBy(m => m.RoadwayNo).Select(m => m.RoadwayNo).ToList(); + + #endregion + + //鑾峰彇鐢宠鐨勫瘑闆嗗簱宸烽亾 + var roadNo = allotLocate.GetMiJiSuiTableRoad(houseNo, roadList, areaList, skuNo, lotNo); + + if (string.IsNullOrWhiteSpace(roadNo)) + { + throw new Exception("鏈煡璇㈠埌瀛樺湪绌哄偍浣嶅贩閬�"); + } + + Db.BeginTran(); + try + { + //娣诲姞宸烽亾浣跨敤璁板綍 + var log = new SysRoadwayUseLog + { + RoadwayNo = roadNo, + WareHouseNo = houseNo, + Row = 0, + Column = 0, + Layer = 0, + }; + Db.Insertable(log).ExecuteCommand(); + + // 娣诲姞鍏ュ簱鏃ュ織璁板綍 + var taskNo = new Common().GetMaxNo("TK"); + var inTask = new LogTask //鍏ュ簱浠诲姟 + { + TaskNo = taskNo, + Sender = "WMS", + Receiver = "WCS", + IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 + SendDate = DateTime.Now, //鍙戦�佹椂闂� + BackDate = DateTime.Now, //杩斿洖鏃堕棿 + StartRoadway = "", // 璧峰宸烽亾 + StartLocat = "",//璧峰浣嶇疆 + EndLocat = "",//鐩爣浣嶇疆 + EndRoadway = roadNo, // 鐩爣宸烽亾 + PalletNo = palletNo,//鎵樼洏鐮� + IsSend = 1,//鏄惁鍙啀娆′笅鍙� + IsCancel = 1,//鏄惁鍙彇娑� + IsFinish = 1,//鏄惁鍙畬鎴� + Type = "0",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 + OrderType = "0",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� + Msg = "鍏ュ簱鍙e埌=>>" + roadNo + "宸烽亾鐨勫叆搴撲换鍔�", //鍏抽敭淇℃伅 + + }; + Db.Insertable(inTask).ExecuteCommand(); + + var asnNo = ""; + // 娣诲姞鎵樼洏缁戝畾琛ㄦ墭鐩樺叆搴撲换鍔″彿 liudl + + foreach (DataStockDetail stockModel in stockDetail) + { + var bindModel = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.Status == "2" + && m.PalletNo == stockModel.PalletNo && m.ASNNo == stockModel.ASNNo && m.ASNDetailNo == stockModel.ASNDetailNo); + if (bindModel != null && string.IsNullOrWhiteSpace(bindModel.TaskNo)) + { + bindModel.TaskNo = taskNo; + bindModel.WareHouseNo = houseNo; + bindModel.RoadwayNo = roadNo; + Db.Updateable(bindModel).ExecuteCommand(); + asnNo = stockModel.ASNNo; + } + + } + + foreach (DataStockDetail stockModel in stockDetail) + { + //娣诲姞鎵樼洏涓婃灦璁板綍 + var upShelf = new BllPalletUpShelf() + { + TaskNo = inTask.TaskNo, + TraceNo = asnNo, + PalletNo = palletNo, + SkuNo = stockModel.SkuNo, + SkuName = stockModel.SkuName, + LotNo = stockModel.LotNo, + Status = "1", + + WareHouseNo = houseNo, + RoadwayNo = roadNo, + AreaNo = "", + LocatNo = "", + + CreateUser = 0, + }; + Db.Insertable(upShelf).ExecuteCommand(); + } + + Db.CommitTran(); + + comDto = new OutCommandDto() + { + TaskNo = taskNo, // 浠诲姟鍙� + TaskType = "0",// 浠诲姟绫诲瀷:鍏ュ簱浠诲姟 + PalletNo = palletNo,//鎵樼洏鍙� + + StartRoadway = inTask.StartRoadway,// 璧峰宸烽亾 + StartLocate = inTask.StartLocat, // 璧峰浣嶇疆 + EndLocate = inTask.EndLocat, // 鐩爣浣嶇疆 + EndRoadway = inTask.EndRoadway, // 鐩爣宸烽亾 + + Order = 999, + Type = PLCTypeEnum.ConveyorLine + }; + } + catch (Exception ex) + { + Db.RollbackTran(); + throw new Exception(ex.Message); + } + #endregion + + return comDto; + } + catch (Exception e) + { + throw new Exception(e.Message); + } + } + + /// <summary> + /// 1 鐢宠鍌ㄤ綅 锛堢敵璇峰贩閬撳悗 鍐嶇敵璇峰偍浣嶅偍浣� 锛� + /// </summary> + /// <param name="palletNo"></param> + /// <param name="houseNo"></param> + /// <param name="roadwayNo"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + public OutCommandDto RequestMiJiLocation(string palletNo, string houseNo, string roadwayNo) + { + try + { + #region 楠岃瘉 + + //楠岃瘉鎵樼洏鏉$爜鏄惁涓虹┖ + if (string.IsNullOrEmpty(palletNo)) + { + throw new Exception("璇疯緭鍏ヨ鐢宠鐨勬墭鐩樻潯鐮�"); + } + //楠岃瘉鎵�灞炰粨搴撴槸鍚︿负绌� + if (string.IsNullOrEmpty(houseNo)) + { + throw new Exception("璇烽�夋嫨鎵�灞炰粨搴�"); + } + //楠岃瘉鎵�灞炰粨搴撴槸鍚︿负绌� + if (string.IsNullOrEmpty(roadwayNo)) + { + throw new Exception("宸烽亾涓嶈兘涓虹┖"); + } + //鑾峰彇浠撳簱绫诲瀷 + var houseType = Db.Queryable<SysWareHouse>().First(a => a.WareHouseNo == houseNo); + //楠岃瘉鏄惁涓哄瘑闆嗗簱 + if (houseType.Type != "3") + { + throw new Exception("浠撳簱涓嶆槸瀵嗛泦搴�"); + } + var stock = Db.Queryable<SysPallets>().First(a => a.PalletNo == palletNo);//鎵樼洏淇℃伅 + + //鍒ゆ柇鎵樼洏鏉$爜鏄惁鏈夋晥 + if (stock == null) + { + throw new Exception("鎵樼洏鏉$爜涓嶅彈WMS绠$悊锛屼笉鍙叆搴擄紒"); + } + + #endregion + + OutCommandDto comDto;//杩斿洖wcs鐨勫叆搴撳懡浠� + + #region + + //鏌ヨ鎵樼洏缁戝畾淇℃伅(鐘舵�佷负绛夊緟鍏ュ簱鐨�) + + + var skuList = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0").ToList(); + //鐗╂枡绫诲埆淇℃伅 + var skuCategoryList = Db.Queryable<SysMaterialCategory>().Where(m => m.IsDel == "0").ToList(); + + var skuNo = "";//鍏ュ簱鐗╂枡 + var isAddTask = true; //鏄惁娣诲姞鏂颁换鍔� + var oldTaskNo = ""; //鏃т换鍔″彿 + var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == palletNo).ToList(); + //楠岃瘉鐗╂枡鏄惁鏈夋垚鍝� + foreach (var item in stockDetail) + { + var skuItem = skuList.First(m => m.SkuNo == item.SkuNo); + if (skuItem.Type != "2") + { + throw new Exception("鎵樼洏涓婃湁涓嶆槸鎴愬搧鐨勭墿鏂�"); + } + } + + var upShelfOld = Db.Queryable<BllPalletUpShelf>().First(m => m.IsDel == "0" && m.PalletNo == palletNo && (m.Status == "0" || m.Status == "1")); + + if (upShelfOld != null) //鏈変笂鏋跺叆搴撲俊鎭� + { + + var beingTask = Db.Queryable<LogTask>().First(m => m.IsDel == "0" && m.TaskNo == upShelfOld.TaskNo); + if (beingTask == null) + { + throw new Exception("璇ユ墭鐩樻鍦ㄥ叆搴擄紝浣嗘湭鏌ヨ鍒颁换鍔′俊鎭�"); + } + if (!string.IsNullOrWhiteSpace(beingTask.EndLocat)) + { + comDto = new OutCommandDto() + { + TaskNo = beingTask.TaskNo, // 浠诲姟鍙� + TaskType = "0",// 浠诲姟绫诲瀷 + PalletNo = palletNo,//鎵樼洏鍙� + + StartRoadway = beingTask.StartRoadway, // 璧峰宸烽亾 + StartLocate = beingTask.StartRoadway, // 璧峰浣嶇疆 + EndLocate = beingTask.EndLocat, // 鐩爣浣嶇疆 + EndRoadway = beingTask.EndRoadway, // 鐩爣宸烽亾 + + Order = 999, + Type = PLCTypeEnum.ShuttleCar, + }; + if (beingTask.IsSuccess == 0) + { + beingTask.IsSuccess = 1; + Db.Updateable(beingTask).ExecuteCommand(); + } + if (upShelfOld.Status == "0") + { + upShelfOld.Status = "1"; + Db.Updateable(upShelfOld).ExecuteCommand(); + } + return comDto; + } + else + { + isAddTask = false; + oldTaskNo = beingTask.TaskNo; + skuNo = upShelfOld.SkuNo;//鍏ュ簱鐗╂枡 + } + + } + else //鐢宠鍏ュ簱 + { + if (stockDetail.Count == 0) + { + throw new Exception($"{palletNo}鎵樼洏鏉$爜娌℃湁搴撳瓨淇℃伅锛屼笉鍙叆搴擄紒"); + } + if (stockDetail.Count(m => !string.IsNullOrWhiteSpace(m.LocatNo)) > 0) + { + throw new Exception("褰撳墠鎵樼洏宸插湪搴撳唴锛岃鏍稿疄"); + } + skuNo = stockDetail.First().SkuNo;//鍏ュ簱鐗╂枡 + + //鑾峰彇瀵瑰簲鍥炲簱瑙勫垯 + var function = Db.Queryable<SysFunSetting>().First(a => a.IsDel == "0" && a.FunSetName == "鎵樼洏鍥炲簱楠岃瘉" && a.IsEnable == "NO"); + #region 鎵樼洏鍥炲簱瑙勫垯 + + if (function != null) + { + //鎷h揣瀹屾垚鍚庡厑璁告墭鐩樺洖搴� + if (function.SetValue == "CompletePick") + { + var allot = Db.Queryable<BllExportAllot>().First(a => a.IsDel == "0" && a.LotNo == stockDetail[0].LotNo && a.PalletNo == palletNo && a.SkuNo == stockDetail[0].SkuNo); + + //楠岃瘉鎷h揣鏄庣粏鏄惁瀛樺湪 + if (allot != null) + { + //楠岃瘉褰撳墠鎵樼洏鎷h揣淇℃伅鏄惁宸插畬鎴� + if (allot.Status != "5") + { + throw new Exception("褰撳墠鎵樼洏鎷h揣淇℃伅鏈畬鎴愶紝璇峰畬鎴愬悗鍥炲簱锛�"); + } + } + } + } + #endregion + } + + var allotLocate = new AllotLocation(); + + #region 鐢宠鍌ㄤ綅 + + SysStorageLocat locate; + + var sku = skuList.FirstOrDefault(m => m.SkuNo == skuNo); + if (sku == null) + { + throw new Exception("鐗╂枡淇℃伅涓湭鏌ヨ鍒板叆搴撳崟鏄庣粏鍖呭惈鐨勭墿鏂欎俊鎭紝涓嶅彲鍏ュ簱"); + } + //鍒ゆ柇鐗╂枡鏄惁鍚湁绫诲埆淇℃伅 + if (string.IsNullOrWhiteSpace(sku.CategoryNo)) + { + throw new Exception($"鐗╂枡锛歿sku.SkuNo}鏈煡璇㈠埌绫诲埆淇℃伅"); + } + + var skuCategory = skuCategoryList.FirstOrDefault(m => m.CategoryNo == sku.CategoryNo); + if (skuCategory == null) + { + throw new Exception($"鏈湪绫诲埆淇℃伅涓煡璇㈠埌鐗╂枡锛歿sku.SkuNo}鍖呭惈鐨勭被鍒�"); + } + + var areaStr = skuCategory.AreaNo.Split(","); + var areaList = new List<string>(); + foreach (var item in areaStr) + { + areaList.Add(item); + } + + locate = allotLocate.GetMiJiSuiTableLocate(roadwayNo, areaList); + + + #endregion + + Db.BeginTran(); + try + { + + if (isAddTask) + { + var taskNo = new Common().GetMaxNo("TK"); + var inTask = new LogTask //鍏ュ簱浠诲姟 + { + TaskNo = taskNo, + Sender = "WMS", + Receiver = "WCS", + IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 + SendDate = DateTime.Now, //鍙戦�佹椂闂� + BackDate = DateTime.Now, //杩斿洖鏃堕棿 + StartRoadway = "", // 璧峰宸烽亾 + StartLocat = "",//璧峰浣嶇疆 + EndLocat = locate.LocatNo,//鐩爣浣嶇疆 + EndRoadway = locate.RoadwayNo, // 鐩爣宸烽亾 + PalletNo = palletNo,//鎵樼洏鐮� + IsSend = 1,//鏄惁鍙啀娆′笅鍙� + IsCancel = 1,//鏄惁鍙彇娑� + IsFinish = 1,//鏄惁鍙畬鎴� + Type = "0",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 + OrderType = "0",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� + Msg = "鍏ュ簱鍙e埌=>>" + locate.LocatNo + "鐨勫叆搴撲换鍔�", //鍏抽敭淇℃伅 + + }; + Db.Insertable(inTask).ExecuteCommand(); + var asnNo = ""; + // 娣诲姞鎵樼洏缁戝畾琛ㄦ墭鐩樺叆搴撲换鍔″彿 liudl + foreach (DataStockDetail stockModel in stockDetail) + { + var bindModel = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.Status == "2" + && m.PalletNo == stockModel.PalletNo && m.ASNNo == stockModel.ASNNo && m.ASNDetailNo == stockModel.ASNDetailNo); + if (bindModel != null && string.IsNullOrWhiteSpace(bindModel.TaskNo)) + { + bindModel.TaskNo = taskNo; + bindModel.WareHouseNo = locate.WareHouseNo; + bindModel.RoadwayNo = locate.RoadwayNo; + bindModel.LocatNo = locate.LocatNo; + Db.Updateable(bindModel).ExecuteCommand(); + asnNo = stockModel.ASNNo; + } + } + foreach (DataStockDetail stockModel in stockDetail) + { + //娣诲姞鎵樼洏涓婃灦璁板綍 + var upShelf = new BllPalletUpShelf() + { + TaskNo = inTask.TaskNo, + TraceNo = asnNo, + PalletNo = palletNo, + SkuNo = stockModel.SkuNo, + SkuName = stockModel.SkuName, + LotNo = stockModel.LotNo, + Status = "1", + + WareHouseNo = houseNo, + RoadwayNo = locate.RoadwayNo, + AreaNo = locate.AreaNo, + LocatNo = locate.LocatNo, + + CreateUser = 0, + }; + Db.Insertable(upShelf).ExecuteCommand(); + } + + oldTaskNo = taskNo; + } + else + { + var oldTask = Db.Queryable<LogTask>().First(m => m.IsDel == "0" && m.TaskNo == oldTaskNo); + oldTask.EndLocat = locate.LocatNo; + oldTask.EndRoadway = locate.RoadwayNo; + if (oldTask.IsSuccess == 0) + { + oldTask.IsSuccess = 1; + oldTask.Status = "1"; + } + Db.Updateable(oldTask).ExecuteCommand(); + + + var bindModelList = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.Status == "2" + && m.PalletNo == oldTask.PalletNo && m.TaskNo == oldTaskNo).ToList(); + foreach (var bindModel in bindModelList) + { + if (string.IsNullOrWhiteSpace(bindModel.LocatNo)) + { + bindModel.TaskNo = oldTask.TaskNo; + bindModel.WareHouseNo = locate.WareHouseNo; + bindModel.RoadwayNo = locate.RoadwayNo; + bindModel.LocatNo = locate.LocatNo; + Db.Updateable(bindModel).ExecuteCommand(); + + } + } + //鏇存敼涓婃灦淇℃伅 + var upShelfList = Db.Queryable<BllPalletUpShelf>().Where(m => m.IsDel == "0" && m.TaskNo == oldTask.TaskNo && m.PalletNo == palletNo).ToList(); + foreach (var upShelf in upShelfList) + { + upShelf.WareHouseNo = locate.WareHouseNo; + upShelf.RoadwayNo = locate.RoadwayNo; + upShelf.LocatNo = locate.LocatNo; + upShelf.Status = "1"; + Db.Updateable(upShelf).ExecuteCommand(); + + } + + } + + locate.Status = "2"; + Db.Updateable(locate).ExecuteCommand(); + + Db.CommitTran(); + comDto = new OutCommandDto() + { + TaskNo = oldTaskNo, // 浠诲姟鍙� + TaskType = "0",// 浠诲姟绫诲瀷 + PalletNo = palletNo,//鎵樼洏鍙� + StartRoadway = "", - StartLocate = starLocate, // 璧峰浣嶇疆 + StartLocate = "", // 璧峰浣嶇疆 EndLocate = locate.LocatNo, // 鐩爣浣嶇疆 EndRoadway = locate.RoadwayNo, // 鐩爣宸烽亾 - TaskNo = taskNo, // 浠诲姟鍙� - TaskType = "0",// 浠诲姟绫诲瀷 (鍑哄簱) - OutMode = "", //鐩爣鍦板潃 - Order = 1, - Type = PLCTypeEnum.AGV + + Order = 999, //鐩爣鍦板潃 + Type = PLCTypeEnum.ShuttleCar }; } @@ -442,7 +1084,7 @@ } //鍒ゆ柇鏄惁鏄洖娴佸叆搴撳畬鎴� - if (stockDetail.Any()) + if (!stockDetail.Any()) { throw new Exception("娌℃湁鏌ヨ鍒板簱瀛樹俊鎭�"); } @@ -470,6 +1112,7 @@ } catch (Exception e) { + Db.RollbackTran(); throw new Exception(e.Message); } } diff --git a/Wms/WMS.BLL/Logic/AllotLocation.cs b/Wms/WMS.BLL/Logic/AllotLocation.cs index 4b4aff6..190b34e 100644 --- a/Wms/WMS.BLL/Logic/AllotLocation.cs +++ b/Wms/WMS.BLL/Logic/AllotLocation.cs @@ -56,7 +56,6 @@ //鑾峰彇搴撳瓨鍐呭凡鏈夌墿鏂欑殑宸烽亾 var dataStockRoad = db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.WareHouseNo == house).GroupBy(m => m.RoadwayNo).OrderBy(m => m.RoadwayNo).Select(m => m.RoadwayNo).ToList(); //鎺掗櫎鎺夊凡鏈夌墿鏂欑殑宸烽亾 - roadways = roadways.Where(m => !dataStockRoad.Contains(m)).ToList(); foreach (var l in roadways) { diff --git a/Wms/WMS.IBLL/IHttpServer.cs b/Wms/WMS.IBLL/IHttpServer.cs index f36233f..ec7aed5 100644 --- a/Wms/WMS.IBLL/IHttpServer.cs +++ b/Wms/WMS.IBLL/IHttpServer.cs @@ -17,6 +17,23 @@ OutCommandDto RequestLocation(string palletNo, string houseNo); /// <summary> + /// 鐢宠宸烽亾(瀵嗛泦搴�) + /// </summary> + /// <param name="palletNo"></param> + /// <param name="houseNo"></param> + /// <returns></returns> + OutCommandDto RequestMiJiRoadWay(string palletNo, string houseNo); + + /// <summary> + /// 1 鐢宠鍌ㄤ綅 锛堢敵璇峰贩閬撳悗 鍐嶇敵璇峰偍浣嶅偍浣� 锛� + /// </summary> + /// <param name="palletNo"></param> + /// <param name="houseNo"></param> + /// <param name="roadwayNo"></param> + /// <returns></returns> + OutCommandDto RequestMiJiLocation(string palletNo, string houseNo, string roadwayNo); + + /// <summary> /// agv璧板嚭鍌ㄤ綅淇敼鍌ㄤ綅淇℃伅锛屼粎闄愬钩搴撳偍浣� /// </summary> /// <param name="taskNo"></param> diff --git a/Wms/Wms/Controllers/DownApiController.cs b/Wms/Wms/Controllers/DownApiController.cs index fe33f06..9418cc4 100644 --- a/Wms/Wms/Controllers/DownApiController.cs +++ b/Wms/Wms/Controllers/DownApiController.cs @@ -334,19 +334,15 @@ var jsonData = JsonConvert.SerializeObject(model); LogFile.SaveLogToFile($"WCS鐢宠宸烽亾锛�( {jsonData} ),", logStr); - var list = _asnPalletBindSvc.RequestMiJiRoadWay(model.PalletNo, model.HouseNo); + var list = _http.RequestMiJiRoadWay(model.PalletNo, model.HouseNo); LogFile.SaveLogToFile($"WCS鐢宠宸烽亾杩斿洖锛�( {JsonConvert.SerializeObject(list)} ),", logStr); - //new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鍏ュ簱鏃ュ織", model.PalletNo.Substring(0, 8), - // "鐢宠宸烽亾", $"鐢宠宸烽亾鎵樼洏鍙凤細{model.PalletNo.Substring(0, 8)}鐨勬垚鍔熶俊鎭�", 2); return Ok(new { Success = 0, Message = "鐢宠宸烽亾鎴愬姛", TaskList = list }); } catch (Exception e) { LogFile.SaveLogToFile($"WCS鐢宠宸烽亾杩斿洖锛�( {e.Message} ),", logStr); - //new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鍏ュ簱鏃ュ織", model.PalletNo.Substring(0, 8), - //"鐢宠宸烽亾", $"鐢宠宸烽亾鎵樼洏鍙凤細{model.PalletNo.Substring(0, 8)}鐨勫け璐ヤ俊鎭�", 2); return Ok(new ErpModel { Success = -1, Message = e.Message }); } @@ -361,37 +357,19 @@ [HttpPost] public IActionResult RequestMiJiLocation(RequestLocate model) { - - //鑾峰彇褰撳墠鐧诲綍鐨勭敤鎴稩D - //var claimsIdentity = this.User.Identity as ClaimsIdentity; - //if (claimsIdentity == null) - //{ - // return Ok(new { code = 1, msg = "鏈幏鍙栧埌褰撳墠鎿嶄綔浜轰俊鎭�" }); - //} - //var userId = claimsIdentity.FindFirst(ClaimTypes.Name)?.Value; - //if (string.IsNullOrWhiteSpace(userId)) - //{ - // return Ok(new { code = 1, msg = "鏈幏鍙栧埌褰撳墠鎿嶄綔浜轰俊鎭�" }); - //} - - //string palletno = model.PalletNo; var logStr = ""; logStr = $@".\log\WCS\WCS鐢宠鍌ㄤ綅" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; - try { - var jsonData = JsonConvert.SerializeObject(model); LogFile.SaveLogToFile($"WCS鐢宠鍌ㄤ綅锛�( {jsonData} ),", logStr); string pallet = model.PalletNo.Substring(0, 8); - var list = _asnPalletBindSvc.RequestMiJiLocation(pallet, model.HouseNo, model.RoadwayNo); + var list = _http.RequestMiJiLocation(pallet, model.HouseNo, model.RoadwayNo); LogFile.SaveLogToFile($"WCS鐢宠鍌ㄤ綅杩斿洖锛�( {JsonConvert.SerializeObject(list)} ),", logStr); - //new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鍏ュ簱鏃ュ織", model.PalletNo.Substring(0, 8), "鐢宠鍌ㄤ綅", $"鐢宠鍌ㄤ綅鎵樼洏鍙凤細{model.PalletNo.Substring(0, 8)}鐨勬垚鍔熶俊鎭�", 2);// int.Parse(userId) - //LogFile.SaveLogToFile($"WMS鐢宠鍌ㄤ綅鎴愬姛锛�( {JsonConvert.SerializeObject(list)} ),", logStr); return Ok(new { Success = 0, Message = "鐢宠鍌ㄤ綅鎴愬姛", TaskList = list }); } -- Gitblit v1.8.0