From 639f5a744312de88aa27fbba2e7f27eb52287ed6 Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期三, 10 四月 2024 15:38:32 +0800 Subject: [PATCH] 代码优化 --- 项目资料/技术协议/方案介绍.pptx | 0 代码管理/WMS/WMS_Server/WIDESEA_WMS/ToMes/GetStation.cs | 49 ++++++++++++ 代码管理/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/RestockHCJ.cs | 2 代码管理/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/HandleTask.cs | 15 +++ 代码管理/WMS/WMS_Server/WIDESEA_WebApi/Controllers/JobTask.cs | 2 项目资料/技术协议/信息化部分.docx | 0 代码管理/WMS/WMS_Server/WIDESEA_WMS/ToMes/agvTransferList.cs | 4 代码管理/WMS/WMS_Server/WIDESEA_WMS/ToMes/shiftingparking.cs | 107 ++++++++++++++++++++++++++ 代码管理/WMS/WMS_Server/WIDESEA_WebApi/Controllers/ToWms/ToWMSController.cs | 39 ++++++++- 9 files changed, 207 insertions(+), 11 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/RestockHCJ.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/RestockHCJ.cs" index 787ff0d..410a9c6 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/RestockHCJ.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/JobsPart/Common/RestockHCJ.cs" @@ -36,7 +36,7 @@ { if (task.agv_tasktype == "TaskType_EmptyPallet")//绌烘墭浠诲姟 { - if (task.agv_fromaddress == "") + if (task.agv_fromaddress == "" && DateTime.Now - task.agv_createtime >= TimeSpan.FromMinutes(5)) { var Pipeline_client = PLCClient.Clients.FirstOrDefault(t => t.PLCName == "閾炬潯鏈�"); if (Pipeline_client == null) throw new Exception("閾炬潯鏈鸿皟搴︽湇鍔℃湭寮�鍚紒"); diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/HandleTask.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/HandleTask.cs" index 71cfa50..b1824b5 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/HandleTask.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/AGVTask/HandleTask.cs" @@ -67,7 +67,18 @@ /// <param name="task"></param> public static void Updateinventory(dt_agvtask task) { - if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString() || task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceCarry.ToString()) + VOLContext context = new VOLContext(); + Idt_inventoryRepository inventoryRepository = new dt_inventoryRepository(context); + if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Carry.ToString()) + { + var inventorys = inventoryRepository.Find(x => x.stationCode == task.agv_fromaddress).ToList(); + foreach (var inventory in inventorys) + { + inventory.stationCode = task.agv_toaddress; + inventoryRepository.Update(inventory, true); + } + } + else if (task.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString() || task.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceCarry.ToString()) { string[] bindSNs = task.bindSN.Split(","); int count = 0; @@ -171,7 +182,7 @@ station2.stationType = task.agv_materielid; station2.tray_status = task.agv_TrayStatus;//妯斁/绔栨斁 station2.tray_type = task.agv_Traytype; - station2.lastUpdateTime=DateTime.Now; + station2.lastUpdateTime = DateTime.Now; stationinfoRepository.Update(station2, true); } else if (task.agv_taskstate == AGVTaskStateEnum.Complete.ToString()) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/GetStation.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/GetStation.cs" new file mode 100644 index 0000000..013431f --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/GetStation.cs" @@ -0,0 +1,49 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WIDESEA_Core.EFDbContext; +using WIDESEA_Core.Utilities; +using WIDESEA_Entity.DomainModels; +using WIDESEA_WMS.IRepositories; +using WIDESEA_WMS.Repositories; + +namespace WIDESEA_WMS +{ + public partial class ToMesServer + { + /// <summary> + /// 閫氳繃SN鍙疯幏鍙栬揣浣� + /// </summary> + /// <param name="saveModel"></param> + /// <returns></returns> + public WebResponseContent GetStation(SaveModel saveModel) + { + WebResponseContent content = new WebResponseContent(); + VOLContext context = new VOLContext(); + Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(context); + Idt_agvtaskRepository agvtaskRepository = new dt_agvtaskRepository(context); + Idt_inventoryRepository inventoryRepository = new dt_inventoryRepository(context); + try + { + string sn = saveModel.MainData["from_address"].ToString(); + dt_inventory inventory = inventoryRepository.Find(x => x.SN.Contains(sn)).FirstOrDefault(); + if (inventory == null) + { + return content.Error($"鏈壘鍒皗sn}搴撳瓨淇℃伅,璇锋牳鏌ュ簱瀛樿褰�!"); + } + var station = stationinfoRepository.Find(x => x.stationCode == inventory.stationCode).FirstOrDefault(); + if (agvtaskRepository.Find(x => x.agv_fromaddress == station.stationCode || x.agv_toaddress == station.stationCode).Any()) + return content.Error($"搴撲綅{station.stationCode}瀛樺湪AGV浠诲姟锛岃鏍稿疄锛�"); + content.Code = station.stationCode; + content.OK(); + } + catch (Exception ex) + { + + } + return content; + } + } +} diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/agvTransferList.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/agvTransferList.cs" index 4be7204..933f469 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/agvTransferList.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/agvTransferList.cs" @@ -54,8 +54,8 @@ return content.Error($"鏃犳杞﹁疆{sn}SN鍙�,璇锋牳鏌ュ簱瀛樿褰�!"); } var station = stationinfoRepository.Find(x => x.stationCode == inventory.stationCode).FirstOrDefault(); - if (!station.enable) return content.Error($"搴撲綅{station.stationCode}鏈惎鐢紝璇锋牳瀹烇紒"); - if (agvtaskRepository.Find(x => x.agv_fromaddress == station.stationCode).Any()) + //if (!station.enable) return content.Error($"搴撲綅{station.stationCode}鏈惎鐢紝璇锋牳瀹烇紒"); + if (agvtaskRepository.Find(x => x.agv_fromaddress == station.stationCode || x.agv_toaddress == station.stationCode).Any()) return content.Error($"搴撲綅{station.stationCode}瀛樺湪AGV浠诲姟锛岃鏍稿疄锛�"); List<detail> list = new List<detail>(); //杞﹁疆淇℃伅 foreach (var item in station.bindSN.Split(",")) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/shiftingparking.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/shiftingparking.cs" new file mode 100644 index 0000000..dfc9c30 --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToMes/shiftingparking.cs" @@ -0,0 +1,107 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WIDESEA_Comm; +using WIDESEA_Comm.TaskNo; +using WIDESEA_Common; +using WIDESEA_Core.EFDbContext; +using WIDESEA_Core.Utilities; +using WIDESEA_Entity.DomainModels; +using WIDESEA_WMS.IRepositories; +using WIDESEA_WMS.Repositories; +using static FreeSql.Internal.GlobalFilter; +using static System.Collections.Specialized.BitVector32; + +namespace WIDESEA_WMS +{ + public partial class ToMesServer + { + /// <summary> + /// 搴撳唴绉诲簱 + /// </summary> + /// <param name="saveModel"></param> + /// <returns></returns> + /// <exception cref="NotImplementedException"></exception> + public WebResponseContent shiftingparking(SaveModel saveModel) + { + WebResponseContent content = new WebResponseContent(); + VOLContext context = new VOLContext(); + Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(context); + Idt_agvtaskRepository agvtaskRepository = new dt_agvtaskRepository(context); + Idt_inventoryRepository inventoryRepository = new dt_inventoryRepository(context); + try + { + string user = saveModel.MainData["creator"].ToString(); + string from_address = saveModel.MainData["from_address"].ToString(); + string to_address = saveModel.MainData["to_address"].ToString(); + var station1 = stationinfoRepository.Find(t => t.stationCode == from_address).FirstOrDefault(); + if (station1 == null) return content.Error("璇疯緭鍏ユ纭殑璧风偣鍦板潃锛�"); + var station2 = stationinfoRepository.Find(t => t.stationCode == to_address).FirstOrDefault(); + if (station2 == null) return content.Error("璇疯緭鍏ユ纭殑璧风偣鍦板潃锛�"); + if (!station1.tray_type.Contains("Small") && station2.area != "4") + throw new Exception($"澶ф墭鐩樺彧鑳藉瓨鏀惧湪搴撳尯4锛�"); + if (agvtaskRepository.Find(x => x.agv_fromaddress.Contains(from_address) || x.agv_toaddress.Contains(from_address)).Any()) + throw new Exception($"璧风偣{from_address}宸插瓨鍦ㄤ换鍔★紒"); + if (agvtaskRepository.Find(x => x.agv_fromaddress.Contains(to_address) || x.agv_toaddress.Contains(to_address)).Any()) + throw new Exception($"缁堢偣{to_address}宸插瓨鍦ㄤ换鍔★紒"); + if (station1.location_state != LocationStateEnum.Stroge.ToString()) + throw new Exception($"璧风偣{from_address}涓嶆槸鏈夎揣锛�"); + if (station2.location_state != LocationStateEnum.Empty.ToString()) + throw new Exception($"缁堢偣{to_address}涓嶆槸绌鸿揣浣嶏紒"); + if (string.IsNullOrEmpty(station1.stationType)) + throw new Exception($"璧风偣{from_address}鏈粦瀹氱墿鏂欑被鍨嬶紒"); + + if (station2.area == "1") + { + if (stationinfoRepository.Find(x => x.area == station2.area && x.column == station2.column && x.location_state != LocationStateEnum.Empty.ToString() && x.stationType != station1.stationType).Any()) + throw new Exception($"缁堢偣{to_address}鍚屽垪瀛樺湪涓庤捣鐐圭墿鏂欑被鍨嬩笉鍖归厤锛�"); + } + else + { + if (stationinfoRepository.Find(x => x.area == station2.area && x.line == station2.line && x.location_state != LocationStateEnum.Empty.ToString() && x.stationType != station1.stationType).Any()) + throw new Exception($"缁堢偣{to_address}鍚岃瀛樺湪涓庤捣鐐圭墿鏂欑被鍨嬩笉鍖归厤锛�"); + } + var inventory = inventoryRepository.Find(x => x.stationCode == station1.stationCode).FirstOrDefault(); + if (inventory == null) throw new Exception($"璧风偣{from_address}鏈壘鍒板簱瀛樹俊鎭紒"); + + dt_agvtask agvtask = new dt_agvtask() + { + agv_fromaddress = station1.stationCode, + agv_id = Guid.NewGuid(), + agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"), + agv_grade = 1, + agv_createtime = DateTime.Now, + agv_taskstate = "Create", + agv_materielid = station1.stationType, + agv_qty = station1.quantity, + agv_tasktype = AGVTaskTypeEnum.TaskType_Carry.ToString(), + agv_toaddress = station2.stationCode, + agv_userid = user,//"绯荤粺", + jobID = station1.Number,// mes_head.jobID, + bindSN = station1.bindSN, + agv_worktype = 0, //Convert.ToInt32(mes_head.processCode), + agv_materbarcode = inventory.materialCode, + agv_Traytype = station1.tray_type, + agv_TrayStatus = station1.tray_status + }; + agvtaskRepository.Add(agvtask, true); + station1.location_state = LocationStateEnum.OutBusy.ToString(); + stationinfoRepository.Update(station1, true); + station2.location_state = LocationStateEnum.InBusy.ToString(); + station2.heatNumber = station1.heatNumber; + station2.Number = station1.Number; + station2.stationType = station1.stationType; + stationinfoRepository.Update(station2, true); + content.OK(); + + } + catch (Exception ex) + { + content.Error($"鍛煎彨AGV澶辫触:{ex.Message}"); + } + return content; + } + } +} diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/JobTask.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/JobTask.cs" index 371f541..16b2404 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/JobTask.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/JobTask.cs" @@ -12,7 +12,7 @@ [Invoke(Begin = "2024-01-01 00:00", Interval = 1000 * 5, /*IsEnabled = true,*/ SkipWhileExecuting = true)] public void TaskTime() { - AGVServer.SendAgvTask(); + //AGVServer.SendAgvTask(); } } } diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/ToWms/ToWMSController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/ToWms/ToWMSController.cs" index a486605..605c66e 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/ToWms/ToWMSController.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/ToWms/ToWMSController.cs" @@ -12,7 +12,9 @@ public class ToWMSController : ControllerBase { private static readonly object OutsourceInboundobj = new object(); - private static readonly object agvTransferListbj = new object(); + private static readonly object agvTransferListobj = new object(); + private static readonly object shiftingparkingobj = new object(); + private static readonly object GetStationobj = new object(); /// <summary> /// 绉诲簱锛堟墜鍔紝涓存椂锛� /// </summary> @@ -24,22 +26,49 @@ return new ToMesServer().AddToFloat3(request); } - /// <summary> - /// 澶栧崗绉诲簱 + /// 绉诲簱澶栧崗 /// </summary> - /// <param name="request"></param> + /// <param name="saveModel"></param> /// <returns></returns> [HttpPost, Route("agvTransferList")] public WebResponseContent agvTransferList([FromBody] SaveModel saveModel) { - lock (agvTransferListbj) + lock (agvTransferListobj) { return new ToMesServer().agvTransferList(saveModel); } } /// <summary> + /// 鑾峰彇璐т綅 + /// </summary> + /// <param name="request"></param> + /// <returns></returns> + [HttpPost, Route("GetStation")] + public WebResponseContent GetStation([FromBody] SaveModel saveModel) + { + lock (GetStationobj) + { + return new ToMesServer().GetStation(saveModel); + } + } + + /// <summary> + /// 搴撳唴绉诲簱 + /// </summary> + /// <param name="request"></param> + /// <returns></returns> + [HttpPost, Route("shiftingparking")] + public WebResponseContent shiftingparking([FromBody] SaveModel saveModel) + { + lock (shiftingparkingobj) + { + return new ToMesServer().shiftingparking(saveModel); + } + } + + /// <summary> /// 澶栧崗鍑哄簱(妫�娴嬩笂鏂�) /// </summary> /// <param name="request"></param> diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\344\277\241\346\201\257\345\214\226\351\203\250\345\210\206.docx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\344\277\241\346\201\257\345\214\226\351\203\250\345\210\206.docx" new file mode 100644 index 0000000..6da1f40 --- /dev/null +++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\344\277\241\346\201\257\345\214\226\351\203\250\345\210\206.docx" Binary files differ diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\346\226\271\346\241\210\344\273\213\347\273\215.pptx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\346\226\271\346\241\210\344\273\213\347\273\215.pptx" new file mode 100644 index 0000000..24f33a5 --- /dev/null +++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\346\226\271\346\241\210\344\273\213\347\273\215.pptx" Binary files differ -- Gitblit v1.9.3