zhangchengsong
10 小时以前 2381da9301f2a269e763b1325fb1ea0d5dfd1005
ÏîÄ¿´úÂë/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
@@ -64,6 +64,8 @@
        private static readonly Dictionary<string, bool> _deviceLastStatus = new Dictionary<string, bool>();
        public string urlWMSdeverror = WIDESEAWCS_Core.Helper.AppSettings.Configuration["urlWMSdeverror"];
        private static readonly StackerFault[] _stackerFaultEnumCache = Enum.GetValues(typeof(StackerFault)).Cast<StackerFault>().ToArray();
        // ç”¨æ¥è®°å½•哪些任务已经上报过放货中
        private static readonly HashSet<int> _reportedPickupTaskIds = new HashSet<int>();
@@ -473,13 +475,27 @@
                {
                    var dtTask = _taskRepository.QueryFirst(x => x.TaskNum == taskNum);
                    if (dtTask == null) return;
                //堆垛机放货中是任务状态回调拿pickup
                if (dtTask.TaskType == 200 && stackerCraneWorkStatusDes == "放货中")
                    //堆垛机放货中是任务状态回调拿pickup
                    // ===================== å‡ºåº“放货中:只上报1次 =====================
                    if (dtTask.TaskType == (int)TaskTypeEnum.Inbound && stackerCraneWorkStatusDes == "放货中")
                    {
                        // åˆ¤æ–­æ˜¯å¦å·²ç»ä¸ŠæŠ¥è¿‡
                        if (_reportedPickupTaskIds.Contains(taskNum))
                        {
                            return; // å·²ä¸ŠæŠ¥ï¼Œç›´æŽ¥è·³è¿‡
                        }
                        // ç¬¬ä¸€æ¬¡ä¸ŠæŠ¥
                        string Result = WMSTaskStatusEnum.pickup.GetDescription();
                        Dt_roadwayinfo roadwayinfo = _Dt_roadwayinfoService.GetRoadwayinfo(dtTask.Roadway);
                        CommandResult command = _taskService.taskreturn(int.Parse(dtTask.WMStaskid), Result, roadwayinfo.WarehouseInvType, "");
                        return;
                        // æ ‡è®°ä¸ºå·²ä¸ŠæŠ¥
                        _reportedPickupTaskIds.Add(taskNum);
                    }
                    // ä»»åŠ¡å®Œæˆæ—¶æ¸…ç†è®°å½•
                    if (stackerCraneWorkStatusDes == "任务完成")
                    {
                        _reportedPickupTaskIds.Remove(taskNum);
                    }
                    string[] targets = { "G02", "G03", "G04", "C02", "C01" };
                    if (dtTask.TaskType != 100 || !targets.Contains(dtTask.TargetAddress)) return;