From f65bfbd6e84fdffc71353acfe7c9ccca5b117c45 Mon Sep 17 00:00:00 2001
From: xiazhengtongxue <133085197+xiazhengtongxue@users.noreply.github.com>
Date: 星期五, 23 一月 2026 17:28:41 +0800
Subject: [PATCH] 手动取消、异常上报和数据库维护脚本
---
项目代码/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs | 172 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 172 insertions(+), 0 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
index fe591f7..062769d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -22,6 +22,7 @@
using NPOI.XSSF.UserModel;
using RYB_PTL_API;
using SqlSugar;
+using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.DirectoryServices.Protocols;
using System.Linq;
@@ -808,6 +809,176 @@
return content;
}
/// <summary>
+ /// 浜哄伐鎵嬪姩鍙栨秷鎸囧畾浠诲姟
+ /// </summary>
+ /// <param name="taskNum">浠诲姟缂栧彿</param>
+ /// <returns>鎿嶄綔缁撴灉</returns>
+ public WebResponseContent ManualTaskCancellation(int taskNum)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ // 1. 鑾峰彇浠诲姟淇℃伅
+ Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+ if (task == null)return content.Error($"浠诲姟{taskNum}涓嶅瓨鍦�");
+
+ TaskTypeGroup group = task.TaskType.GetTaskTypeGroup();
+ if (group == TaskTypeGroup.InboundGroup)// 鍏ュ簱浠诲姟鍙栨秷
+ {
+ // 鑾峰彇鐩爣璐т綅
+ Dt_LocationInfo locationInfo = _locationInfoRepository.QueryFirst(x => x.LocationCode == task.TargetAddress);
+ if (locationInfo == null)return content.Error($"鐩爣璐т綅{task.TargetAddress}涓嶅瓨鍦�");
+ // 楠岃瘉璐т綅鐘舵��
+ if (locationInfo.LocationStatus != LocationStatusEnum.Lock.ObjToInt())
+ return content.Error($"{task.TargetAddress}璐т綅鐘舵�佸紓甯革紝鏃犳硶鍙栨秷");
+
+ // 鎭㈠璐т綅鐘舵��
+ locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt(); // 鎭㈠涓虹┖闂茬姸鎬�
+ locationInfo.PalletCode = ""; // 娓呯┖鎵樼洏鍙�
+ // 鏇存柊鏁版嵁搴�
+ _unitOfWorkManage.BeginTran();
+ _locationInfoRepository.UpdateData(locationInfo);
+ BaseDal.DeleteAndMoveIntoHty(task, OperateTypeEnum.浜哄伐鍒犻櫎);
+ _unitOfWorkManage.CommitTran();
+ // 璁板綍鐘舵�佸彉鏇�
+ _locationStatusChangeRecordService.AddLocationStatusChangeRecord(
+ locationInfo,
+ LocationStatusEnum.Lock,
+ LocationStatusEnum.Free,
+ LocationChangeType.InboundCancelled,
+ task.TaskNum
+ );
+ content.OK("浠诲姟鍙栨秷鎴愬姛");
+ }
+ else
+ {
+ content.Error("鍙兘鍏ュ簱浠诲姟鍙栨秷锛�");
+ }
+ }
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ content.Error($"鍙栨秷澶辫触: {ex.Message}");
+ // 璁板綍璇︾粏閿欒
+ _taskExecuteDetailService.AddTaskExecuteDetail(
+ new Dt_Task { TaskNum = taskNum },
+ $"浠诲姟鍙栨秷寮傚父: {ex.Message}"
+ );
+ }
+ return content;
+ }
+ /// <summary>
+ /// 浠诲姟鍙栨秷
+ /// </summary>
+ /// <returns></returns>
+ public WebResponseContent TaskCancelCompleted(int taskNum)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+ if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)//鍑哄簱浠诲姟瀹屾垚閫昏緫
+ {
+ Dt_LocationInfo locationInfo = _locationInfoRepository.QueryFirst(x => x.PalletCode == task.PalletCode);
+ if (locationInfo.LocationStatus != LocationStatusEnum.Lock.ObjToInt())
+ {
+ return content.Error($"{locationInfo.LocationCode}璐т綅鐘舵�佷笉姝g‘");
+ }
+ task.TaskState = TaskStatusEnum.Cancel.ObjToInt();
+ locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
+ _unitOfWorkManage.BeginTran();
+ _locationInfoRepository.UpdateData(locationInfo);
+ BaseDal.DeleteAndMoveIntoHty(task, App.User?.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
+ _unitOfWorkManage.CommitTran();
+ _locationStatusChangeRecordService.AddLocationStatusChangeRecord(locationInfo, LocationStatusEnum.Lock, LocationStatusEnum.InStock, LocationChangeType.InboundCompleted, task.TaskNum);
+ content.OK();
+ }
+ else
+ {
+ content.Error($"鏈壘鍒板嚭搴撲换鍔taskNum}");
+ }
+ }
+ catch (Exception ex)
+ {
+ content.Error(ex.Message);
+ }
+ return content;
+ }
+ /// <summary>
+ /// 浠诲姟鍙栨秷
+ /// </summary>
+ /// <returns></returns>
+ public WebResponseContent TaskCancel(List<TaskCancel> taskCancels)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ if (taskCancels==null || taskCancels.Count<=0)
+ {
+ return content.Error("浼犲叆涓嶈兘涓虹┖");
+ }
+ //鑾峰彇鎵�鏈夋枡绠�
+ List<Dt_Task> outTasks = BaseDal.QueryData(x=>x.TaskType==TaskTypeEnum.Outbound.ObjToInt());
+ List<Dt_Task> cancelTasks = new List<Dt_Task>();
+ List<Dt_Task> cancelTasksCompleted = new List<Dt_Task>();
+ //鍒ゆ柇鏄惁鏈変换鍔″瓨鍦�
+ foreach (var item in taskCancels)
+ {
+ Dt_Task? taskExist = outTasks.FirstOrDefault(x=>x.PalletCode== item.ContainerCode);
+ if (taskExist==null)
+ {
+ content.Message += $"{item.ContainerCode}浠诲姟涓嶅瓨鍦�";
+ continue;
+ }
+ if (taskExist.TaskState==TaskStatusEnum.AGV_TakeFinish.ObjToInt())
+ {
+ taskExist.IsCancel = 1;
+ cancelTasks.Add(taskExist);
+ }
+ else if(taskExist.TaskState == TaskStatusEnum.AGV_Executing.ObjToInt())
+ {
+ cancelTasksCompleted.Add(taskExist);
+ }
+ else
+ {
+ return content.Error($"浠诲姟鍙栨秷澶辫触{item.TaskCode}浠诲姟鐘舵�佷笉鍙彇娑堬紒");
+ }
+
+ }
+ _unitOfWorkManage.BeginTran();
+ BaseDal.UpdateData(cancelTasks);
+ foreach (var item in cancelTasksCompleted)
+ {
+ WebResponseContent responseContent = TaskCancelCompleted(item.TaskNum);
+ if (!responseContent.Status)
+ {
+ throw new Exception(responseContent.Message);
+ }
+ }
+ _unitOfWorkManage.CommitTran();
+ cancelTasks.AddRange(cancelTasksCompleted);
+ foreach (var item in cancelTasks)
+ {
+ AgvTaskCancelDTO agvTaskCancel = new AgvTaskCancelDTO()
+ {
+ RequestId= DateTime.Now.ToString("yyMMddHHmmssfff"),
+ MissionCode=item.GroupId,
+ ContainerCode=item.PalletCode,
+ Position="",
+ CancelMode= "CTU_REDIRECT_START",
+ Reason=""
+ };
+ AgvCancelTask(agvTaskCancel);
+ }
+ content.OK();
+ }
+ catch (Exception ex)
+ {
+ content.Error(ex.Message);
+ }
+ return content;
+ }
+ /// <summary>
/// 浜屾湡鎾澧欏洖浼�
/// </summary>
/// <returns></returns>
@@ -965,5 +1136,6 @@
}
return content;
}
+
}
}
--
Gitblit v1.9.3