From a815f0c44f8e435b0261c469f07654f0114726b9 Mon Sep 17 00:00:00 2001 From: liudl <673013083@qq.com> Date: 星期一, 14 四月 2025 16:10:37 +0800 Subject: [PATCH] 问题修改 --- Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs | 252 +++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 216 insertions(+), 36 deletions(-) diff --git a/Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs b/Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs index 312164b..4c0934c 100644 --- a/Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs +++ b/Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs @@ -1,5 +1,6 @@ 锘縰sing Dm.filter; using DocumentFormat.OpenXml.Drawing.Charts; +using DocumentFormat.OpenXml.Office.CustomUI; using DocumentFormat.OpenXml.Presentation; using Elastic.Clients.Elasticsearch; using Furion.Logging; @@ -79,6 +80,8 @@ ResponseModel result = new ResponseModel(); try { + string str = JsonConvert.SerializeObject(models); + Log.Information("鎺ユ敹WMS鍑哄叆搴撲换鍔★紝浠诲姟鍙凤細" + models.TaskNo + ",鎵樼洏鍙凤細"+ models.PalletNo); // 楠岃瘉浠诲姟鏄惁宸插瓨鍦� var taskInfo = _db.Queryable<WcsTask>().First(w => w.TaskNo == models.TaskNo); if (taskInfo != null) @@ -371,26 +374,129 @@ return new ResponseFuMaModel() { Success = "-1", Message = "璇ユ壒娆℃湭杩涜鍒嗘嫞鎴栧凡缁撴壒" }; } - //鑾峰彇鍖呰鏁伴噺 int Fqty = int.Parse(models.FinishQty); - var boxinfolog = _db.Queryable<WcsBoxInfoLog>().Where(m => m.SkuNo == models.SkuNo && m.LotNo == models.LotNo && m.BitBoxMark == "0").First(); - if (boxinfolog == null) - { - var boxinfo = _db.Queryable<WcsBoxInfo>().Where(m => m.SkuNo == models.SkuNo && m.LotNo == models.LotNo && m.BitBoxMark == "0").First(); - Fqty = (int)(Fqty /boxinfo.QtyCount); - } - else - { - Fqty = (int)(Fqty / boxinfolog.QtyCount); - } - + int Jpqty = 0; //鍐欏叆璇ヤ换鍔″畬鎴愭暟閲� foreach (var item in num) { + int jp = 0;//缁撴壒鏄惁闇�瑕佺粍鐩�0锛氫笉闇�瑕侊紝1锛氶渶瑕併�備笉闇�瑕佺粍鐩樺垯鐩存帴閲婃斁鍒嗛亾锛岄渶瑕佺粍鐩樺垯涓嬪彂PLC棰勭粨鎵逛俊鍙� item.FinishQty = Fqty; - } - _db.Updateable(num).ExecuteCommand(); + //鍒ゆ柇褰撳墠鍗曟嵁鐮佸灈鏁伴噺鏄惁鍜屽畬宸ユ暟閲忕浉绛夛紝鏄垯缁撴壒璇ュ崟鎹� + //鑾峰彇宸茬粍鐩樻暟閲� + var checkNum = _db.Queryable<WcsBoxInfoLog>().Where(m => m.SkuNo == models.SkuNo && m.LotNo == models.LotNo && m.OrderCode == item.OrderNo).ToList();//缁勭洏琛ㄧ鐮佷俊鎭� + if (checkNum.Count>0) + { + if (!(string.IsNullOrEmpty(checkNum.First().BoxNo2))||!(string.IsNullOrEmpty(checkNum.First().BoxNo3)))//鏈夋敮鐮� + { + foreach (var item2 in checkNum) + { + Jpqty = (int)(Jpqty + item2.Qty); + } + } + else//鏃犳敮鐮� + { + foreach (var item2 in checkNum) + { + Jpqty = (int)(Jpqty + item2.QtyCount); + } + } + } + + //鑾峰彇宸叉彃鐮佹暟閲� + var checkNum2 = _db.Queryable<WcsBoxInfo>().Where(m =>m.BitBoxMark != "1" && m.SkuNo == models.SkuNo && m.LotNo == models.LotNo &&(m.PalletNo != null || m.PalletNo != "") && m.OrderCode == item.OrderNo).ToList();//绠辩爜琛ㄥ凡鐮佸灈绠辩爜淇℃伅 + if (checkNum2.Count>0) + { + jp = 1;//绠辩爜琛ㄨ繕鏈夋湭缁勭洏绠憋紝闇�瑕佺粍鐩� + if (!string.IsNullOrEmpty(checkNum2.First().BoxNo2)||!string.IsNullOrEmpty(checkNum2.First().BoxNo3))//鏈夋敮鐮� + { + foreach (var item2 in checkNum2) + { + Jpqty = (int)(Jpqty + item2.Qty); + } + } + else//鏃犳敮鐮� + { + foreach (var item2 in checkNum2) + { + Jpqty = (int)(Jpqty + item2.QtyCount); + } + } + } + //鑾峰彇闆剁鏁伴噺 + var checkNum3 = _db.Queryable<WcsBoxInfo>().Where(m => m.BitBoxMark == "1" && m.SkuNo == models.SkuNo && m.LotNo == models.LotNo).ToList(); + if (checkNum3.Count > 0) + { + if (!string.IsNullOrEmpty(checkNum3.First().BoxNo2) || !string.IsNullOrEmpty(checkNum3.First().BoxNo3))//鏈夋敮鐮� + { + foreach (var item3 in checkNum3) + { + Jpqty = (int)(Jpqty + item3.Qty); + } + } + else//鏃犳敮鐮� + { + foreach (var item3 in checkNum3) + { + Jpqty = (int)(Jpqty + item3.QtyCount); + } + } + } + + if (Jpqty == Fqty) + { + var modPlc = _db.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.ConveyorLine && s.Text == ("2灞傛墭鐩樿緭閫佺嚎")).First(); + if (modPlc == null) + throw Oops.Bah("鏈壘鍒拌緭閫佺嚎PLC"); + PLCUtil plcConn = new PLCUtil(modPlc); + //鍒ゆ柇褰撳墠鍒嗛亾鏄惁鏈夋湭缁勭洏绠� + if (jp == 0) + { + // 鍒嗛亾瑙g粦锛屾姄绠卞搧绉嶅啓鍏�0 + var ret1 = plcConn.SetPlcDBValue(item.PosTypeLot, item.DbNumber, item.PlcPos, "0"); + if (ret1.IsSucceed) + { + //鏇存柊鍏ュ簱璁㈠崟 + var orderTask = _db.Queryable<WcsOderTask>().Where(w => w.SkuNo == item.SkuNo && w.LotNo == item.LotNo && w.IsDelete == false).ToList(); + if (orderTask.Count > 0) + { + foreach (var item2 in orderTask) + { + item2.Status = TaskStatusEnum.Complete; + _db.Updateable(item2).ExecuteCommand(); + } + } + //鍐欏叆娴佺▼瀛楁垚鍔熷悗鏇存柊鍒嗘嫞浠诲姟 liudl 鏈�鍚庝竴鎵樼洏鐢宠瀹屽叆搴撴墠鍙竻绌� + item.OrderNo = ""; + item.TaskNo = ""; + item.LotNo = ""; + item.SkuNo = ""; + item.SkuName = ""; + item.BoxType = ""; + item.Qty = 0; + item.PZNo = ""; + item.Status = "0"; // 缁戝畾鍒嗛亾 0锛氳В缁� 1锛氱粦瀹� + item.FinishQty = 0; + + //鏇存柊鍒嗘嫞浠诲姟 + _db.Updateable(item).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); + } + } + else + { + //棰勭粨鎵逛俊鍙蜂笅鍙� + + var ret2 = plcConn.SetPlcDBValue(item.PosType, item.DbNumber, item.PosLot, "1");//鍐欏叆寮�濮嬬粨鎵逛俊鍙� + if (ret2.IsSucceed) + { + item.Status = "2";//缁撴壒涓� + } + else { throw new Exception("瀹屽伐缁撴壒淇″彿涓嬪彂缁橮LC閿欒"); } + } + _db.Updateable(item).ExecuteCommand(); + } + } + return new ResponseFuMaModel() { Success = "0", Message = "鎺ュ彈瀹屽伐缁撴壒鏁伴噺鎴愬姛" }; } catch (Exception ex) @@ -415,16 +521,43 @@ string str = JsonConvert.SerializeObject(models); Log.Information("鎺ユ敹WMS鍏ュ簱鏀捐揣纭锛屾斁璐у彛锛�" + models.Port+"鍏ュ簱鍙�"); + var portno = models.Port; + var layer = "3"; + switch (models.Port) + { + case "033": + portno = "33"; + layer = "1"; + break; + case "039": + portno = "39"; + layer = "1"; + break; + case "044": + portno = "44"; + layer = "1"; + break; + case "051": + portno = "51"; + layer = "1"; + break; + } + //妫�娴嬪叆搴撳彛鐘舵�侊紝120涓哄彲鏀撅紝鍗犵敤鍒欎慨鏀逛负130 - WcsDeviceDto modDevice = new WcsDeviceDto(); - var modPosTask = modDevice.listStation.FirstOrDefault(m => m.Text == "PLC娴佺▼瀛�"); - var plcConn = modDevice.PLCUtil; - var (res1, val) = plcConn.GetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos); + var modPlc = _db.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.ConveyorLine && s.Text == (layer + "灞傛墭鐩樿緭閫佺嚎")).First(); + if (modPlc == null) + throw Oops.Bah("鏈壘鍒拌緭閫佺嚎PLC"); + PLCUtil plcConn = new PLCUtil(modPlc); + //鑾峰彇宸ヤ綅鐐逛綅淇℃伅 + var listPlcDevice = _db.Queryable<WcsDevice>().Where(s => s.LedIP != null && s.StationNum == portno).First(); + var modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "PLC").First(); + + var (res1, val) = plcConn.GetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos); if (val.ToString() == "120") { - modPosTask = modDevice.listStation.FirstOrDefault(m => m.Text == "WCS娴佺▼瀛�"); //璇诲彇鎴愬姛鍚庡啓鍏�130 - var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "130");//鍗犵敤姝ゅ伐浣� + modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "WCS").First(); + var ret = plcConn.SetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos, "130");//鍗犵敤姝ゅ伐浣� if (ret.IsSucceed) { //鍥炰紶WMS鍙斁淇″彿 @@ -452,18 +585,41 @@ try { string str = JsonConvert.SerializeObject(models); - Log.Information("鎺ユ敹WMS鍏ュ簱鏀捐揣纭锛屾斁璐у彛锛�" + models.Port + "鍏ュ簱鍙�"); + Log.Information("鎺ユ敹WMS鍏ュ簱鏀捐揣璇锋眰锛屾斁璐у彛锛�" + models.Port + "鍏ュ簱鍙�"); - WcsDeviceDto modDevice = new WcsDeviceDto(); - var plcConn = modDevice.PLCUtil; + var portno = models.Port; + var layer = "3"; + switch (models.Port) + { + case "033": + portno = "33"; + layer = "1"; + break; + case "039": + portno = "39"; + layer = "1"; + break; + case "044": + portno = "44"; + layer = "1"; + break; + case "051": + portno = "51"; + layer = "1"; + break; + } + + var modPlc = _db.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.ConveyorLine && s.Text == (layer + "灞傛墭鐩樿緭閫佺嚎")).First(); + if (modPlc == null) + throw Oops.Bah("鏈壘鍒拌緭閫佺嚎PLC"); + PLCUtil plcConn = new PLCUtil(modPlc); //鑾峰彇宸ヤ綅鐐逛綅淇℃伅 - //modDevice = ......=models.Port - var modPosTask = modDevice.listStation.FirstOrDefault(m => m.Text == "浠诲姟鍙�"); - plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, models.TaskNo);//鍐欏叆浠诲姟鍙� - // - modPosTask = modDevice.listStation.FirstOrDefault(m => m.Text == "WCS娴佺▼瀛�"); - - var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "140");//寮�濮嬫斁璐� + var listPlcDevice = _db.Queryable<WcsDevice>().Where(s=>s.LedIP != null && s.StationNum == portno).First(); + var modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "浠诲姟鍙�").First(); + plcConn.SetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos, models.TaskNo);//鍐欏叆浠诲姟鍙� + // + modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "WCS").First(); + var ret = plcConn.SetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos, "140");//鍐欏叆寮�濮嬫斁璐т俊鍙� if (ret.IsSucceed) { //鍥炰紶WMS鏀捐揣淇″彿 @@ -492,15 +648,39 @@ try { string str = JsonConvert.SerializeObject(models); - Log.Information("鎺ユ敹WMS鍏ュ簱鏀捐揣纭锛屾斁璐у彛锛�" + models.Port + "鍏ュ簱鍙�"); + Log.Information("鎺ユ敹WMS鍏ュ簱鏀捐揣瀹屾垚锛屾斁璐у彛锛�" + models.Port + "鍏ュ簱鍙�"); - WcsDeviceDto modDevice = new WcsDeviceDto(); + var portno = models.Port; + var layer = "3"; + switch (models.Port) + { + case "033": + portno = "33"; + layer = "1"; + break; + case "039": + portno = "39"; + layer = "1"; + break; + case "044": + portno = "44"; + layer = "1"; + break; + case "051": + portno = "51"; + layer = "1"; + break; + } + + var modPlc = _db.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.ConveyorLine && s.Text == (layer + "灞傛墭鐩樿緭閫佺嚎")).First(); + if (modPlc == null) + throw Oops.Bah("鏈壘鍒拌緭閫佺嚎PLC"); + PLCUtil plcConn = new PLCUtil(modPlc); //鑾峰彇宸ヤ綅鐐逛綅淇℃伅 - //modDevice = ......=models.Port + var listPlcDevice = _db.Queryable<WcsDevice>().Where(s => s.LedIP != null && s.StationNum == portno).First(); + var modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "WCS").First(); - var modPosTask = modDevice.listStation.FirstOrDefault(m => m.Text == "WCS娴佺▼瀛�"); - var plcConn = modDevice.PLCUtil; - var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "140");//寮�濮嬫斁璐� + var ret = plcConn.SetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos, "160");//鏀惧畬鎴� if (ret.IsSucceed) { //鍥炰紶WMS鏀捐揣淇″彿 -- Gitblit v1.8.0