From 0ea4a390d09679425cf3ad217a38a9e717641c95 Mon Sep 17 00:00:00 2001 From: wankeda <Administrator@DESKTOP-HAU3ST3> Date: 星期一, 14 四月 2025 16:23:12 +0800 Subject: [PATCH] 增加串行库位任务下发机制防呆 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/JobsPart/SendAgvTask.cs | 230 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 223 insertions(+), 7 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/JobsPart/SendAgvTask.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/JobsPart/SendAgvTask.cs" index 62a8970..507d21e 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/JobsPart/SendAgvTask.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/JobsPart/SendAgvTask.cs" @@ -30,10 +30,226 @@ { try { + List<Dt_Task> agvtasks = _taskService.GetTasks(); foreach (Dt_Task agvtask in agvtasks) { - if (agvtask != null) + bool text = true; + bool text1 = true; + bool text2 = true; + bool text3 = true; + Thread.Sleep(500); + Dt_CachePoint CachePointSO = _cachePointRepository.QueryFirst(x => x.PointCode == agvtask.SourceAddress);//鏌ヨ璧风偣 + Dt_CachePoint CachePoint = _cachePointRepository.QueryFirst(x => x.PointCode == agvtask.TargetAddress && x.PointCode.Contains("鎴愬搧搴�"));//|| x.PointCode.Contains("鍘熸潗鏂欏簱")) && x.Remark != null + + Dt_CachePoint dt_CachePoint = _cachePointRepository.QueryFirst(x => x.PointCode == agvtask.TargetAddress && x.Remark != null);//鏌ヨ缁堢偣 + Dt_CachePoint CachePointYCl = _cachePointRepository.QueryFirst(x => x.PointCode == agvtask.SourceAddress && x.Remark != null && x.PointCode.Contains("鍘熸潗鏂欏簱")); + if (CachePoint != null && CachePointSO != null) + { + var pointnames = _cachePointRepository.QueryData(x => x.Remark == CachePoint.Remark && x.Remark != "0").ToList(); + foreach (var item in pointnames) + { + var a = CachePoint.Depth.ObjToInt(); + var b = item.Depth.ObjToInt(); + if (a > b) + { + Dt_Task dt_Task = _taskRepository.QueryFirst(x => x.TargetAddress == item.PointCode); + if (dt_Task != null) + { + text = false; + continue; + } + } + } + if (CachePointSO.Remark != null) + { + var pointname = _cachePointRepository.QueryData(x => x.Remark == CachePointSO.Remark && x.Remark != "0").ToList(); + foreach (var item1 in pointname) + { + var c = CachePointSO.Depth.ObjToInt(); + var d = item1.Depth.ObjToInt(); + if (c > d) + { + Dt_Task dt_Task = _taskRepository.QueryFirst(x => x.SourceAddress == item1.PointCode); + if (dt_Task != null) + { + text1 = false; + continue; + } + } + } + } + if (text == true && text1 == true) + { + AGVTaskPend pend = new AGVTaskPend(); + //pend.requestType = pend.requestType; + //pend.accessId = pend.accessId; + //pend.requestId = pend.requestId; + Pend data = new Pend(); + TaskPend taskPend = new TaskPend(); + { + taskPend.taskNo = agvtask.TaskNum.ToString(); + taskPend.taskType = "MV"; + DateTime date = DateTime.Now; + taskPend.taskDate = date.ToString("yyyy-MM-dd HH:mm:ss"); + taskPend.taskState = "00"; + taskPend.priority = "1"; + taskPend.wareCode = "W01"; + taskPend.docNo = ""; + taskPend.sku = ""; + taskPend.uom = ""; + taskPend.qty = 0; + taskPend.trace = ""; + taskPend.fmLoc = agvtask.SourceAddress.ToString(); + taskPend.toLoc = agvtask.TargetAddress.ToString(); + taskPend.udf01 = ""; + taskPend.udf02 = ""; + } + data.detail.Add(taskPend); + pend.data = data; + + var time = new DateTimeOffset(DateTime.Now); + long timestampStr = time.ToUnixTimeMilliseconds();//鏃堕棿鎴� + string appkeystr = "appsalt=" + AGVopenApi.appsalt + "&appkey=" + AGVopenApi.appkey; + string appkeyEcrypt = GetMD5Hex(appkeystr); + string origin = appkeyEcrypt + "&appsecret=" + AGVopenApi.appsecret + "×tamp=" + timestampStr + "&uniquestr=" + timestampStr; + string signstr = GetMD5Hex(origin); + Dictionary<string, string> headers = new Dictionary<string, string>() + { + {"appkey",AGVopenApi.appkey }, + {"timestamp",timestampStr.ToString() }, + {"sign",signstr } + }; + string posy = JsonConvert.SerializeObject(pend); + var respone = HttpHelper.Post(url, posy, headers: headers); + var res = JsonConvert.DeserializeObject<WebResponseContent>(respone); + if (res.Code == 200) + { + agvtask.Dispatchertime = DateTime.Now; + agvtask.TaskStatus = AGVTaskStatusEnum.AGV_SendOut.ObjToInt(); + _taskService.UpdateData(agvtask); + Thread.Sleep(1000); + WriteLog.GetLog("鏃犱汉鍙夎溅浠诲姟涓嬪彂").Write("浠诲姟鍙凤細" + agvtask.TaskNum, "鏃犱汉鍙夎溅浠诲姟涓嬪彂"); + } + else + { + //_unitOfWorkManage.RollbackTran(); + content = WebResponseContent.Instance.Error($"{res.Message}"); + WriteLog.GetLog("鏃犱汉鍙夎溅浠诲姟涓嬪彂澶辫触").Write("浠诲姟鍙凤細" + agvtask.TaskNum + '\n' + "澶辫触淇℃伅" + res.Message, "鏃犱汉鍙夎溅浠诲姟涓嬪彂澶辫触"); + } + } + } + else if (CachePointYCl != null && dt_CachePoint != null) + { + var pointnames = _cachePointRepository.QueryData(x => x.Remark == CachePointYCl.Remark).ToList(); + foreach (var item in pointnames) + { + var a = CachePointYCl.Depth.ObjToInt(); + var b = item.Depth.ObjToInt(); + if (a > b) + { + Dt_Task dt_Task = _taskRepository.QueryFirst(x => x.SourceAddress == item.PointCode); + if (dt_Task != null) + { + text2 = false; + continue; + } + } + } + var pointname = _cachePointRepository.QueryData(x => x.Remark == dt_CachePoint.Remark).ToList(); + foreach (var item1 in pointname) + { + var c = dt_CachePoint.Depth.ObjToInt(); + var d = item1.Depth.ObjToInt(); + if (c > d) + { + Dt_Task dt_Task = _taskRepository.QueryFirst(x => x.TargetAddress == item1.PointCode); + if (dt_Task != null) + { + text3 = false; + continue; + } + } + } + if (text2 == true && text3 == true) + { + AGVTaskPend pend = new AGVTaskPend(); + //pend.requestType = pend.requestType; + //pend.accessId = pend.accessId; + //pend.requestId = pend.requestId; + Pend data = new Pend(); + TaskPend taskPend = new TaskPend(); + { + taskPend.taskNo = agvtask.TaskNum.ToString(); + taskPend.taskType = "MV"; + DateTime date = DateTime.Now; + taskPend.taskDate = date.ToString("yyyy-MM-dd HH:mm:ss"); + taskPend.taskState = "00"; + taskPend.priority = "1"; + taskPend.wareCode = "W01"; + taskPend.docNo = ""; + taskPend.sku = ""; + taskPend.uom = ""; + taskPend.qty = 0; + taskPend.trace = ""; + taskPend.fmLoc = agvtask.SourceAddress.ToString(); + taskPend.toLoc = agvtask.TargetAddress.ToString(); + taskPend.udf01 = ""; + taskPend.udf02 = ""; + } + data.detail.Add(taskPend); + pend.data = data; + + var time = new DateTimeOffset(DateTime.Now); + long timestampStr = time.ToUnixTimeMilliseconds();//鏃堕棿鎴� + string appkeystr = "appsalt=" + AGVopenApi.appsalt + "&appkey=" + AGVopenApi.appkey; + string appkeyEcrypt = GetMD5Hex(appkeystr); + string origin = appkeyEcrypt + "&appsecret=" + AGVopenApi.appsecret + "×tamp=" + timestampStr + "&uniquestr=" + timestampStr; + string signstr = GetMD5Hex(origin); + Dictionary<string, string> headers = new Dictionary<string, string>() + { + {"appkey",AGVopenApi.appkey }, + {"timestamp",timestampStr.ToString() }, + {"sign",signstr } + }; + string posy = JsonConvert.SerializeObject(pend); + var respone = HttpHelper.Post(url, posy, headers: headers); + var res = JsonConvert.DeserializeObject<WebResponseContent>(respone); + if (res.Code == 200) + { + agvtask.Dispatchertime = DateTime.Now; + agvtask.TaskStatus = AGVTaskStatusEnum.AGV_SendOut.ObjToInt(); + _taskService.UpdateData(agvtask); + Thread.Sleep(1000); + WriteLog.GetLog("鏃犱汉鍙夎溅浠诲姟涓嬪彂").Write("浠诲姟鍙凤細" + agvtask.TaskNum, "鏃犱汉鍙夎溅浠诲姟涓嬪彂"); + } + else + { + //_unitOfWorkManage.RollbackTran(); + content = WebResponseContent.Instance.Error($"{res.Message}"); + WriteLog.GetLog("鏃犱汉鍙夎溅浠诲姟涓嬪彂澶辫触").Write("浠诲姟鍙凤細" + agvtask.TaskNum + '\n' + "澶辫触淇℃伅" + res.Message, "鏃犱汉鍙夎溅浠诲姟涓嬪彂澶辫触"); + } + } + } + //if (dt_CachePoint != null) + //{ + // var pointname = _cachePointRepository.QueryData(x => x.Remark == dt_CachePoint.Remark).ToList(); + // foreach (var item in pointname) + // { + // var a = dt_CachePoint.Depth.ObjToInt(); + // var b = item.Depth.ObjToInt(); + // if (b > a) + // { + // //Dt_CachePoint c = _cachePointRepository.QueryFirst(x => x.PointCode == item.PointCode && x.PointStatus == 0); + // Dt_Task dt_Task = _taskRepository.QueryFirst(x => x.TargetAddress == item.PointCode); + // if (dt_Task != null) + // { + // continue; + // } + // } + // } + //} + else { AGVTaskPend pend = new AGVTaskPend(); //pend.requestType = pend.requestType; @@ -69,11 +285,11 @@ string origin = appkeyEcrypt + "&appsecret=" + AGVopenApi.appsecret + "×tamp=" + timestampStr + "&uniquestr=" + timestampStr; string signstr = GetMD5Hex(origin); Dictionary<string, string> headers = new Dictionary<string, string>() - { - {"appkey",AGVopenApi.appkey }, - {"timestamp",timestampStr.ToString() }, - {"sign",signstr } - }; + { + {"appkey",AGVopenApi.appkey }, + {"timestamp",timestampStr.ToString() }, + {"sign",signstr } + }; string posy = JsonConvert.SerializeObject(pend); var respone = HttpHelper.Post(url, posy, headers: headers); var res = JsonConvert.DeserializeObject<WebResponseContent>(respone); @@ -93,7 +309,7 @@ } } } - + } catch (Exception ex) { -- Gitblit v1.9.3