From 217a65fe8eb2612b7d61e9ce5f450e76bfc318f6 Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期一, 09 六月 2025 17:13:15 +0800 Subject: [PATCH] 添加数据库接口日志记录 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_AGV.cs | 297 ++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 234 insertions(+), 63 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_AGV.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_AGV.cs" index 74a7584..15e927b 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_AGV.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_AGV.cs" @@ -1,6 +1,7 @@ 锘縰sing System; using System.Collections.Generic; using System.Linq; +using System.Reflection.Metadata; using System.Text; using System.Threading.Tasks; using WIDESEA_Common; @@ -20,6 +21,7 @@ /// <returns></returns> public WebResponseContent ShelfOutboundCarry(Dt_Task outTask) { + //鍒ゆ柇鏄惁涓虹數鑺簱锛岃緟鏂欏簱浜哄伐澶勭悊(绔嬪簱鐩爣鍦板潃杞崲鎴怉GV绔欑偣鍦板潃) Dt_CachePoint cachePoint = GetCachePointByStartPoint(outTask.TargetAddress); Dt_Task task = new() @@ -34,7 +36,7 @@ TargetAddress = cachePoint.PointCode, SourceKey = outTask.TaskId, TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), - TaskStatus = AGVTaskStatusEnum.AGV_New.ObjToInt(), + TaskStatus = AGVTaskStatusEnum.Create.ObjToInt(), TaskType = TaskTypeEnum.AGVCarry.ObjToInt(), CreateDate = DateTime.Now, Creater = App.User.UserId > 0 ? App.User.UserName : "System", @@ -47,6 +49,61 @@ } /// <summary> + /// 璐т綅缁戝畾 + /// </summary> + /// <param name="qty"></param> + /// <param name="Point"></param> + /// <returns></returns> + public WebResponseContent Bind(string qty, string point) + { + try + { + if (Repository.QueryFirst(x => x.SourceAddress == point && + x.TaskStatus < AGVTaskStatusEnum.DoneFetch.ObjToInt() || + x.TargetAddress == point) != null) + throw new Exception($"绔欑偣銆恵point}銆戝瓨鍦ㄤ换鍔★紒"); + Dt_CachePoint? cachePoint = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode == point); + if (cachePoint == null) throw new Exception("鏈壘鍒扮紦瀛樼偣!"); + if (cachePoint.AreaId != 4) throw new Exception("褰撳墠缂撳瓨鐐瑰尯鍩熸棤缁戝畾鏉冮檺!"); + cachePoint.PointStatus = LocationStatusEnum.InStock.ObjToInt(); + cachePoint.Remark = qty; + cachePoint.Modifier = App.User.UserName; + _basicService.CachePointService.Repository.UpdateData(cachePoint); + return WebResponseContent.Instance.OK(); + } + catch (Exception ex) + { + return WebResponseContent.Instance.Error(ex.Message); + } + } + /// <summary> + /// 閲婃斁缂撳瓨鐐� + /// </summary> + /// <param name="point"></param> + /// <returns></returns> + public WebResponseContent AcrossFloorCallMat(string point) + { + try + { + if (Repository.QueryFirst(x => x.SourceAddress == point && + x.TaskStatus < AGVTaskStatusEnum.DoneFetch.ObjToInt() || + x.TargetAddress == point) != null) + throw new Exception($"绔欑偣銆恵point}銆戝瓨鍦ㄤ换鍔★紒"); + Dt_CachePoint? cachePoint = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode == point); + if (cachePoint == null) throw new Exception("鏈壘鍒扮紦瀛樼偣!"); + if (cachePoint.AreaId != 2 && cachePoint.AreaId != 5 && cachePoint.AreaId != 8) + throw new Exception("褰撳墠缂撳瓨鐐瑰尯鍩熸棤閲婃斁鏉冮檺!"); + cachePoint.PointStatus = LocationStatusEnum.Free.ObjToInt(); + _basicService.CachePointService.Repository.UpdateData(cachePoint); + return WebResponseContent.Instance.OK(); + } + catch (Exception ex) + { + return WebResponseContent.Instance.Error(ex.Message); + } + } + + /// <summary> /// 鍙枡 /// </summary> /// <param name="endPoint"></param> @@ -55,6 +112,11 @@ { try { + if (Repository.QueryFirst(x => x.SourceAddress == endPoint && + x.TaskStatus < AGVTaskStatusEnum.DoneFetch.ObjToInt() || + x.TargetAddress == endPoint) != null) + throw new Exception($"绔欑偣銆恵endPoint}銆戝瓨鍦ㄤ换鍔★紒"); + Dt_CachePoint cachePoint = GetCachePointByEndPoint(endPoint); Dt_Task task = new Dt_Task() @@ -69,20 +131,29 @@ TargetAddress = endPoint, SourceKey = 0, TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), - TaskStatus = AGVTaskStatusEnum.AGV_New.ObjToInt(), + TaskStatus = AGVTaskStatusEnum.Create.ObjToInt(), TaskType = TaskTypeEnum.AGVCarry.ObjToInt(), }; cachePoint.PointStatus = LocationStatusEnum.Lock.ObjToInt(); + Db.Ado.BeginTran(); + var response = SendAGVTask(task, cachePoint); + if (!response.Status) + { + _unitOfWorkManage.RollbackTran(); + return WebResponseContent.Instance.Error($"{response.Message}"); + } _basicService.CachePointService.Repository.UpdateData(cachePoint); Repository.AddData(task); + Db.Ado.CommitTran(); return WebResponseContent.Instance.OK(); } catch (Exception ex) { + Db.Ado.RollbackTran(); return WebResponseContent.Instance.Error(ex.Message); } - + } /// <summary> @@ -94,6 +165,11 @@ { try { + if (Repository.QueryFirst(x => x.SourceAddress == startPoint && + x.TaskStatus < AGVTaskStatusEnum.DoneFetch.ObjToInt() || + x.TargetAddress == startPoint) != null) + throw new Exception($"绔欑偣銆恵startPoint}銆戝瓨鍦ㄤ换鍔★紒"); + Dt_CachePoint cachePoint = GetCachePointByStartPoint(startPoint); Dt_Task task = new() @@ -108,88 +184,183 @@ TargetAddress = cachePoint.PointCode, SourceKey = 0, TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), - TaskStatus = AGVTaskStatusEnum.AGV_New.ObjToInt(), + TaskStatus = AGVTaskStatusEnum.Create.ObjToInt(), TaskType = TaskTypeEnum.AGVCarry.ObjToInt(), }; cachePoint.PointStatus = LocationStatusEnum.Lock.ObjToInt(); + Db.Ado.BeginTran(); + var response = SendAGVTask(task, cachePoint); + if (!response.Status) + { + _unitOfWorkManage.RollbackTran(); + return WebResponseContent.Instance.Error($"{response.Message}"); + } _basicService.CachePointService.Repository.UpdateData(cachePoint); Repository.AddData(task); + Db.Ado.CommitTran(); + return WebResponseContent.Instance.OK(); + } + catch (Exception ex) + { + Db.Ado.RollbackTran(); + return WebResponseContent.Instance.Error(ex.Message); + } + } + /// <summary> + /// 鎼繍 + /// </summary> + /// <param name="startPoint"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + private Dt_CachePoint GetCachePointByStartPoint(string startPoint) + { + #region MyRegion + Dt_CachePoint? StartcachePoint = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode == startPoint); + if (StartcachePoint == null) throw new Exception("鏈壘鍒扮紦瀛樼偣!"); + + Dt_AreaRouter areaRouter = _basicService.AreaRouterService.Repository.QueryFirst(x => x.StartArea == StartcachePoint.AreaId.ToString()); + if (areaRouter == null) throw new Exception("鏈壘鍒拌矾鐢变俊鎭�!"); + + Dt_CachePoint? cachePoint = _basicService.CachePointService.AssignCachePoint(areaRouter.NextArea.ObjToInt()); + if (cachePoint == null) + { + throw new Exception("鏈壘鍒扮┖闂茬紦瀛樼偣!"); + } + #endregion + + return cachePoint; + } + /// <summary> + /// 鍙枡 + /// </summary> + /// <param name="endPoint"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + private Dt_CachePoint GetCachePointByEndPoint(string endPoint) + { + #region MyRegion + Dt_CachePoint? StartcachePoint = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode == endPoint); + if (StartcachePoint == null) throw new Exception("鏈壘鍒扮紦瀛樼偣!"); + + Dt_AreaRouter areaRouter = _basicService.AreaRouterService.Repository.QueryFirst(x => x.NextArea == StartcachePoint.AreaId.ToString()); + if (areaRouter == null) throw new Exception("鏈壘鍒拌矾鐢变俊鎭�!"); + + Dt_CachePoint? cachePoint = _basicService.CachePointService.GetIbStockCachePoint(areaRouter.StartArea.ObjToInt()); + if (cachePoint == null) + { + throw new Exception("鏈壘鍒版湁璐х紦瀛樼偣!"); + } + #endregion + return cachePoint; + } + + /// <summary> + /// 涓嬪彂AGV浠诲姟 + /// </summary> + /// <param name="task"></param> + public WebResponseContent SendAGVTask(Dt_Task task, Dt_CachePoint? cachePoint = null) + { + try + { + AGVSendTaskModel aGVSendTask = new AGVSendTaskModel + { + task_id = task.TaskNum.ToString(), + src_pos = task.CurrentAddress, + site_value_type = 1, + dst_pos = task.NextAddress + }; + if (cachePoint != null && cachePoint.AreaId == 4) aGVSendTask.src_level = cachePoint.Remark.ObjToInt() - 1; + var response = HttpHelper.Post<WebResponseContent>(AGVurl + "sendTask/", aGVSendTask, "鍙枡浠诲姟涓嬪彂"); + if (response.Code != 200) throw new Exception(response.Message); return WebResponseContent.Instance.OK(); } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } -} - - private Dt_CachePoint GetCachePointByStartPoint(string startPoint) - { - Dt_AreaRouter areaRouter = _basicService.AreaRouterService.Repository.QueryFirst(x => x.StartArea == startPoint); - if (areaRouter == null) - { - throw new Exception("鏈壘鍒拌矾鐢变俊鎭�!"); - } - Dt_AreaInfo areaInfo = _basicService.AreaInfoService.Repository.QueryFirst(x => x.AreaCode == areaRouter.NextArea); - if (areaInfo == null) - { - throw new Exception("鏈壘鍒颁笅涓�鍖哄煙淇℃伅!"); - } - - Dt_CachePoint? cachePoint = _basicService.CachePointService.AssignCachePoint(areaInfo.Id); - if (cachePoint == null) - { - throw new Exception("鏈壘鍒扮┖闂茬紦瀛樼偣!"); - } - - return cachePoint; } - private Dt_CachePoint GetCachePointByEndPoint(string endPoint) - { - Dt_AreaRouter areaRouter = _basicService.AreaRouterService.Repository.QueryFirst(x => x.NextArea == endPoint); - if (areaRouter == null) - { - throw new Exception("鏈壘鍒拌矾鐢变俊鎭�!"); - } - Dt_AreaInfo areaInfo = _basicService.AreaInfoService.Repository.QueryFirst(x => x.AreaCode == areaRouter.StartArea); - if (areaInfo == null) - { - throw new Exception("鏈壘鍒拌捣鐐圭紦瀛樺尯鍩熶俊鎭�!"); - } - - Dt_CachePoint? cachePoint = _basicService.CachePointService.GetIbStockCachePoint(areaInfo.Id); - if (cachePoint == null) - { - throw new Exception("鏈壘鍒版湁璐х紦瀛樼偣!"); - } - return cachePoint; - } - + /// <summary> + /// 浠诲姟鐘舵�佷笂鎶� + /// </summary> + /// <param name="model"></param> + /// <returns></returns> public object AGVTaskFeedBack(AGVTaskFeedBackModel model) { - Dt_Task task = BaseDal.QueryFirst(x => x.TaskId == Convert.ToInt32(model.Task_id)); + Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == Convert.ToInt32(model.Task_id)); if (task == null) { return new { code = 404, message = "鏈壘鍒拌浠诲姟!" }; } - - Dt_CachePoint startCachePoint = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode == task.SourceAddress); - if (startCachePoint != null) + if (task.TaskStatus == ((AGVTaskStatusEnum)Enum.Parse(typeof(AGVTaskStatusEnum), model.Task_status)).ObjToInt()) + return new { code = 200, message = "鎴愬姛" }; + switch ((AGVTaskStatusEnum)Enum.Parse(typeof(AGVTaskStatusEnum), model.Task_status)) { - startCachePoint.PointStatus = LocationStatusEnum.Free.ObjToInt(); - _basicService.CachePointService.Repository.UpdateData(startCachePoint); + case AGVTaskStatusEnum.Create: + break; + case AGVTaskStatusEnum.Queuing: + task.TaskStatus = AGVTaskStatusEnum.Queuing.ObjToInt(); + break; + case AGVTaskStatusEnum.Running: + task.TaskStatus = AGVTaskStatusEnum.Running.ObjToInt(); + break; + case AGVTaskStatusEnum.DoneFetch: + { + task.TaskStatus = AGVTaskStatusEnum.DoneFetch.ObjToInt(); + Dt_CachePoint startCachePoint = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode == task.SourceAddress); + if (startCachePoint != null) + { + startCachePoint.PointStatus = LocationStatusEnum.Free.ObjToInt(); + if (startCachePoint.AreaId == 4)//鍒ゆ柇鏄惁涓烘ā缁勭┖鏍堟澘鍖哄煙 + { + var qty = (startCachePoint.Remark.ObjToInt() - 1); + if (qty > 0) startCachePoint.PointStatus = LocationStatusEnum.InStock.ObjToInt(); + startCachePoint.Remark = qty.ToString(); + } + _basicService.CachePointService.Repository.UpdateData(startCachePoint); + } + } + break; + case AGVTaskStatusEnum.DonePut: + { + task.TaskStatus = AGVTaskStatusEnum.DonePut.ObjToInt(); + Dt_CachePoint endCachePoint = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode == task.TargetAddress); + if (endCachePoint != null) + { + endCachePoint.PointStatus = LocationStatusEnum.InStock.ObjToInt(); + _basicService.CachePointService.Repository.UpdateData(endCachePoint); + } + } + break; + case AGVTaskStatusEnum.Finish: + { + task.TaskStatus = AGVTaskStatusEnum.Finish.ObjToInt(); + BaseDal.DeleteAndMoveIntoHty(task, /*App.User.UserId == 0 ?*/ OperateType.鑷姩瀹屾垚 /*: OperateType.浜哄伐瀹屾垚*/); + return new { code = 200, message = "鎴愬姛" }; + } + case AGVTaskStatusEnum.Cancel: + { + if (task.TaskStatus < AGVTaskStatusEnum.DoneFetch.ObjToInt()) + { + Dt_CachePoint startCachePoint = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode == task.SourceAddress); + startCachePoint.PointStatus = LocationStatusEnum.InStock.ObjToInt(); + _basicService.CachePointService.Repository.UpdateData(startCachePoint); + } + task.TaskStatus = AGVTaskStatusEnum.Cancel.ObjToInt(); + BaseDal.DeleteAndMoveIntoHty(task, OperateType.鑷姩鍒犻櫎); + return new { code = 200, message = "鎴愬姛" }; + } + case AGVTaskStatusEnum.Terminate: + task.TaskStatus = AGVTaskStatusEnum.Terminate.ObjToInt(); + break; + case AGVTaskStatusEnum.Error: + task.TaskStatus = AGVTaskStatusEnum.Error.ObjToInt(); + break; + default: + return new { code = 404, message = "鏈畾涔変换鍔$被鍨�!" }; } - - Dt_CachePoint endCachePoint = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode == task.TargetAddress); - if (endCachePoint != null) - { - endCachePoint.PointStatus = LocationStatusEnum.InStock.ObjToInt(); - _basicService.CachePointService.Repository.UpdateData(endCachePoint); - } - BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateType.鑷姩瀹屾垚 : OperateType.浜哄伐瀹屾垚); - //BaseDal.DeleteData(task); - + BaseDal.UpdateData(task); return new { code = 200, message = "鎴愬姛" }; } } -- Gitblit v1.9.3