From aa63e0401cea4e367c9d9fd620d996a688c0a01f Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期三, 21 五月 2025 15:18:51 +0800
Subject: [PATCH] 添加PDA人工入库功能
---
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarJob.cs | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 104 insertions(+), 8 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarJob.cs"
index e229c15..1b571a4 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ShuttleCarJob/ShuttleCarJob.cs"
@@ -1,30 +1,57 @@
锘縰sing AutoMapper;
+using HslCommunication;
+using Newtonsoft.Json;
+using OfficeOpenXml.Drawing.Chart;
using Quartz;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using WIDESEAWCS_Common.ShuttleCarEnum;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.Caches;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_DTO.System;
+using WIDESEAWCS_DTO.TaskInfo;
+using WIDESEAWCS_DTO.WMSInfo;
+using WIDESEAWCS_IShuttleCar;
+using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
+using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.DTO;
using WIDESEAWCS_QuartzJob.Service;
using WIDESEAWCS_QuartzJob.StackerCrane.Enum;
+using WIDESEAWCS_TaskInfoService;
+using WIDESEAWCS_Tasks.ConveyorLineJob;
+using WIDESEAWCS_Tasks.ShuttleCarJob;
+using WIDESEAWCS_Tasks.StackerCraneJob;
namespace WIDESEAWCS_Tasks
{
[DisallowConcurrentExecution]
- public class ShuttleCarJob : IJob
+ partial class CommonShuttleCarJob : JobBase, IJob
{
private readonly ITaskService _taskService;
+ private readonly ITaskRepository _taskRepository;
+ private readonly ITaskHtyService _taskHtyService;
+ private readonly IShuttleCarService _shuttleCarService;
private readonly ITaskExecuteDetailService _taskExecuteDetailService;
private readonly IRouterService _routerService;
+ private readonly ICacheService _cacheService;
private readonly IMapper _mapper;
- public ShuttleCarJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IMapper mapper)
+ public CommonShuttleCarJob(ITaskService taskService, ITaskRepository taskRepository, ITaskHtyService taskHtyService, IShuttleCarService shuttleCarService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, ICacheService cacheService, IMapper mapper)
{
_taskService = taskService;
+ _taskRepository = taskRepository;
+ _taskHtyService = taskHtyService;
+ _shuttleCarService = shuttleCarService;
_taskExecuteDetailService = taskExecuteDetailService;
_routerService = routerService;
+ _cacheService = cacheService;
_mapper = mapper;
}
@@ -35,16 +62,85 @@
ShuttleCar shuttleCar = (ShuttleCar)context.JobDetail.JobDataMap.Get("JobParams");
if (shuttleCar != null)
{
-
+ shuttleCar.Communicator.IsReadAfterWrite = false;
+ ShuttleCarTaskCommandR command = ReadCustomer<ShuttleCarTaskCommandR>(shuttleCar, shuttleCar.DeviceCode);//璇诲彇绌挎杞︿俊鎭�
+ _cacheService.AddOrUpdate(shuttleCar.DeviceCode, command);
+ if (command != null && command.JoinStatus == 1)
+ {
+ #region 绌挎杞︿换鍔″畬鎴�
+ var complete = shuttleCar.GetValue<ShuttleCarDBName, bool>(ShuttleCarDBName.TaskComplete);
+ if (complete && command.TaskTypeComplete > (short)ShuttleCarTaskComplete.Standby)
+ {
+ _taskService.ShuttleCarTaskCompleted(command.number, command.TaskTypeComplete);
+ shuttleCar.SetValue(ShuttleCarDBName.ConfirmComplete, true, shuttleCar.DeviceCode);
+ }
+ #endregion
+
+ #region 鑾峰彇鍫嗗灈鏈虹Щ杞�/绉诲簱瀹屾垚浠诲姟
+ GetSC_CarFinish();
+ #endregion
+
+ #region 鍒涘缓绉昏溅鍏呯數浠诲姟
+ if (command.Err_Status == (short)ShuttleCarErr.LowBattery || command.ElectricQuantity <= (short)ShuttleCarErr.LowBattery)
+ {
+ var ShuttleCar = QueryCode(shuttleCar.DeviceCode);//鍦ㄥ厖鐢典綅鐩存帴璁╃┛姊溅鍘诲厖鐢�
+ //鐢熸垚鍫嗗灈鏈虹Щ杞︿换鍔�&绌挎杞﹀厖鐢典换鍔�,鍒ゆ柇鏄惁鏈夌┛姊溅鍦ㄥ厖鐢�
+ Dt_Task _Task = _taskRepository.QueryFirst(x => x.TaskType == TaskOtherTypeEnum.RelocationCarCharging.ObjToInt());
+ if (_Task != null)
+ {
+ if (_Task.ShuttleCarCode != shuttleCar.DeviceCode)
+ {
+ ShuttleCar shuttleCar1 = Storage.Devices.Where(x => x.DeviceCode.Equals(_Task.ShuttleCarCode)).FirstOrDefault() as ShuttleCar;
+ ShuttleCarTaskCommandR command1 = ReadCustomer<ShuttleCarTaskCommandR>(shuttleCar1, shuttleCar1.DeviceCode);//璇诲彇绌挎杞︿俊鎭�
+ if (command1 != null && command1.JoinStatus == 1)
+ {
+ if (command1.Status == (short)ShuttleCarStatus.Charging && command1.ElectricQuantity /*> command.ElectricQuantity*/ >= 50)
+ {
+ shuttleCar1.SetValue(ShuttleCarDBName.TaskType, (short)ShuttleCarStatus.QuitCharging);
+ }
+ }
+ }
+ }
+ else
+ {
+ string CarChargingStation = AppSettings.Configuration[nameof(CarChargingStation)];//鍏呯數浣�
+ //鍒ゆ柇鍏呯數浣嶆槸鍚︽湁杞�
+ var ShuttleCar1 = _shuttleCarService.QueryShuttleCar(CarChargingStation);
+ if (ShuttleCar1 != null && ShuttleCar1.ShuttleCarCode != shuttleCar.DeviceCode)
+ {
+ if (_taskRepository.QueryFirst(x => x.ShuttleCarCode == ShuttleCar1.ShuttleCarCode) == null)
+ _taskService.AddRelocationCarTask(ShuttleCar1.ShuttleCarPosition, "", ShuttleCar1.ShuttleCarCode);
+ }
+ else
+ {
+ _taskService.AddRelocationCarTask(ShuttleCar.ShuttleCarPosition, CarChargingStation, ShuttleCar.ShuttleCarCode, ShuttleCarTaskType.Charging.ToString());
+ }
+ }
+ }
+ #endregion
+
+ #region 鑾峰彇绉昏溅/鍑哄叆搴撲换鍔�
+ if (command != null &&
+ (command.Status == (short)ShuttleCarStatus.Standby ||
+ command.Status == (short)ShuttleCarStatus.Charging) &&
+ command.TaskTypeComplete == (short)ShuttleCarTaskComplete.Standby &&
+ (command.Err_Status == (short)ShuttleCarErr.Normal ||
+ command.Err_Status == (short)ShuttleCarErr.LowBattery)
+ )
+ {
+ var dt_Task = GetTask(TaskRelocationStatusEnum.SC_RelocationFinish.ObjToInt(), TaskRelocationTypeEnum.Relocation.ObjToInt());//绉诲簱浠诲姟
+ if (dt_Task != null && shuttleCar.DeviceCode == dt_Task.ShuttleCarCode)
+ SendTask(dt_Task);
+ else
+ Get_CarTask(shuttleCar, command);
+ }
+ #endregion
+ }
}
}
catch (Exception ex)
{
-
- }
- finally
- {
-
+ //Console.Out.WriteLine(nameof(CommonShuttleCarJob) + ":" + ex.ToString());
}
return Task.CompletedTask;
}
--
Gitblit v1.9.3