From e46aa927d231af83724683c7286d9db503e24cf7 Mon Sep 17 00:00:00 2001
From: z8018 <1282578289@qq.com>
Date: 星期二, 10 六月 2025 11:46:20 +0800
Subject: [PATCH] 1
---
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineOutJob.cs | 182 ++++++++++++++++++++++++++++++++++++++-------
1 files changed, 153 insertions(+), 29 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineOutJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineOutJob.cs"
index 9fe9210..560b8f8 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineOutJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineOutJob.cs"
@@ -22,47 +22,74 @@
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
+using System.Threading.Tasks;
using WIDESEA_Common.Log;
+using WIDESEAWCS_BasicInfoService;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_DTO.BasicInfo;
+using WIDESEAWCS_IBasicInfoRepository;
using WIDESEAWCS_IBasicInfoService;
+using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_Model.Models.System;
using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.DTO;
using WIDESEAWCS_QuartzJob.Service;
using WIDESEAWCS_Tasks.ConveyorLineJob;
namespace WIDESEAWCS_Tasks
{
+ /// <summary>
+ /// 杈撻�佺嚎鍑烘枡浣滀笟绫伙紝璐熻矗澶勭悊杈撻�佺嚎鍑烘枡绔欑殑PLC璇锋眰鍜學CS鍝嶅簲閫昏緫
+ /// </summary>
+ /// <remarks>
+ /// 1. 閫氳繃鎵弿鏉$爜鑾峰彇璁㈠崟淇℃伅 <br/>
+ /// 2. 鏍规嵁璁㈠崟灏哄鍒ゆ柇鏄惁鍦ㄥ厑璁歌寖鍥村唴 <br/>
+ /// 3. 鐢熸垚浠诲姟骞惰缃甈LC绔欑偣鐨勭洰鏍囦綅缃拰浠诲姟缂栧彿 <br/>
+ /// 4. 澶勭悊寮傚父鎯呭喌骞惰褰曢敊璇棩蹇� <br/>
+ /// 5. 浣跨敤[DisallowConcurrentExecution]鐗规�х‘淇濅綔涓氫笉浼氬苟鍙戞墽琛�
+ /// </remarks>
[DisallowConcurrentExecution]
public class CommonConveyorLineOutJob : JobBase, IJob
{
private readonly ITaskService _taskService;
- private readonly ITaskExecuteDetailService _taskExecuteDetailService;
- private readonly IRouterService _routerService;
- private readonly IOrderDetailsService _OrderDetailsService;
private readonly IMapper _mapper;
- public CommonConveyorLineOutJob(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, IRouterService routerService, IOrderDetailsService orderDetails, IMapper mapper)
+ private readonly IOrderDetailsService _orderDetailsService;
+ private readonly ITaskRepository _taskRepository;
+ private readonly IContainerRepository _containerRepository;
+
+ private static Dt_Container DischargeContainer;
+
+ private static int dischargeStation = 8;
+
+ public CommonConveyorLineOutJob(ITaskService taskService, IMapper mapper, IOrderDetailsService orderDetailsService, ITaskRepository taskRepository, IContainerRepository containerRepository)
{
_taskService = taskService;
- _taskExecuteDetailService = taskExecuteDetailService;
- _routerService = routerService;
- _OrderDetailsService = orderDetails;
_mapper = mapper;
+ _orderDetailsService = orderDetailsService;
+ _taskRepository = taskRepository;
+ _containerRepository = containerRepository;
}
-
- static string barcode = string.Empty; //鏉$爜
public Task Execute(IJobExecutionContext context)
{
- try
+ if (DischargeContainer == null)
{
- bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
- if (flag && value != null && value is OtherDevice)
+ DischargeContainer = _containerRepository.QueryFirst(x => x.ContainerEnable && x.ContainerType == ContainerTypeEnum.DischargeContainer.ObjToInt());
+ if (DischargeContainer != null)
{
- OtherDevice otherDevice = (OtherDevice)value;
+ dischargeStation = DischargeContainer.ContainerNo;
+ }
+ }
+ bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
+ if (flag && value != null && value is OtherDevice otherDevice)
+ {
+ try
+ {
bool request = otherDevice.GetValue<ConveyorLineStationDBName, bool>(ConveyorLineStationDBName.PLCStationRequest); //鐢宠
bool response = otherDevice.GetValue<ConveyorLineStationDBName, bool>(ConveyorLineStationDBName.PLCStationResponse); //搴旂瓟
@@ -70,33 +97,130 @@
if (request && !response && !wcsResponse)
{
+ DeviceProDTO? devicePro = otherDevice.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == ConveyorLineStationDBName.PLCStationBarcode.ToString());
+ if (devicePro != null)
+ {
+ string barcode = otherDevice.GetValue<ConveyorLineStationDBName, string>(ConveyorLineStationDBName.PLCStationBarcode);
+
+ if (!string.IsNullOrEmpty(barcode))
+ {
+ OrderInfo orderInfo = _orderDetailsService.GetOrderInfoByBarcode(barcode);
+
+ Task.Run(() =>
+ {
+ _orderDetailsService.ToMes(barcode, 3);
+ });
+
+ if (orderInfo.Width >= AppSettings.Get("MinWidth").ObjToInt() && orderInfo.Width <= AppSettings.Get("MaxWidth").ObjToInt() && orderInfo.Length >= AppSettings.Get("MinLength").ObjToInt() && orderInfo.Length <= AppSettings.Get("MaxLength").ObjToInt() || orderInfo.Length >= AppSettings.Get("MinWidth").ObjToInt() && orderInfo.Length <= AppSettings.Get("MaxWidth").ObjToInt() && orderInfo.Width >= AppSettings.Get("MinLength").ObjToInt() && orderInfo.Width <= AppSettings.Get("MaxLength").ObjToInt())
+ {
+ Dt_Task task = _taskRepository.QueryFirst(x => x.PalletCode == barcode);
+ if (task == null)
+ {
+ try
+ {
+ var (taskFlag, gTask, message) = _taskService.GenerateTask(orderInfo);
+ if (taskFlag && gTask != null)
+ {
+ task = gTask;
+ if (!string.IsNullOrEmpty(task.ItemInfo))
+ {
+ string[] itemInfos = task.ItemInfo.Split("*");
+ if (itemInfos.Length == 3)
+ {
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTarget, Convert.ToInt32(itemInfos[0]));
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTarget, Convert.ToInt32(itemInfos[1]));
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTarget, Convert.ToInt32(itemInfos[2]));
+ }
+ }
+
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTarget, Convert.ToInt32(task.TargetAddress));
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTaskNum, task.TaskNum);
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationResponse, true);
+ }
+ else
+ {
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTarget, Convert.ToInt32(orderInfo.Length));
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTarget, Convert.ToInt32(orderInfo.Width));
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTarget, Convert.ToInt32(orderInfo.Thickness));
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTarget, dischargeStation);
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTaskNum, 998);
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationResponse, true);
+
+ WriteError(nameof(CommonConveyorLineOutJob), message);
+
+ WriteError("鏉垮瓙鎺掑嚭閿欒鍘熷洜璁板綍鏃ュ織", message);
+ }
+ }
+ catch (Exception ex)
+ {
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTarget, Convert.ToInt32(orderInfo.Length));
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTarget, Convert.ToInt32(orderInfo.Width));
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTarget, Convert.ToInt32(orderInfo.Thickness));
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTarget, dischargeStation);
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTaskNum, 999);
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationResponse, true);
+ WriteError("鏀炬澘閫昏緫杩愮畻閿欒璁板綍鏃ュ織", ex.Message, ex);
+ }
+ }
+ else
+ {
+ if (!string.IsNullOrEmpty(task.ItemInfo))
+ {
+ string[] itemInfos = task.ItemInfo.Split("*");
+ if (itemInfos.Length == 3)
+ {
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTarget, Convert.ToInt32(itemInfos[0]));
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTarget, Convert.ToInt32(itemInfos[1]));
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTarget, Convert.ToInt32(itemInfos[2]));
+ }
+ }
+
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTarget, Convert.ToInt32(task.TargetAddress));
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTaskNum, task.TaskNum);
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationResponse, true);
+ }
+ }
+ else
+ {
+ //todo 瓒呭澶勭悊
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTarget, Convert.ToInt32(orderInfo.Length));
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTarget, Convert.ToInt32(orderInfo.Width));
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTarget, Convert.ToInt32(orderInfo.Thickness));
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTarget, dischargeStation);
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTaskNum, 999);
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationResponse, true);
+ }
+ }
+ else
+ {
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTarget, dischargeStation);
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTaskNum, 997);
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationResponse, true);
+ }
+ }
}
else
{
- if (wcsResponse)
+ if (wcsResponse && !request)
otherDevice.SetValue(ConveyorLineStationDBName.WCSStationResponse, false); //娓呴櫎鍝嶅簲
}
+
+ }
+ catch (Exception ex)
+ {
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTarget, dischargeStation);
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationTaskNum, 996);
+ otherDevice.SetValue(ConveyorLineStationDBName.WCSStationResponse, true);
+
+ WriteError($"{otherDevice.DeviceCode}-{otherDevice.DeviceName}", ex.Message, ex);
}
}
- catch (Exception ex)
+ else
{
- WriteError(nameof(CommonConveyorLineJob), ex.ToString(), ex);
+ WriteError(nameof(CommonConveyorLineOutJob), "鍙傛暟閿欒,鏈紶閫掕澶囧弬鏁版垨璁惧绫诲瀷閿欒");
}
return Task.CompletedTask;
- }
-
- public int[] GetIndexArray<T>(T[] values, T value)
- {
- List<int> result = new List<int>();
- for (int i = 0; i < values.Length; i++)
- {
- if (value.Equals(values[i]))
- {
- result.Add(i);
- }
- }
- return result.ToArray();
}
}
}
--
Gitblit v1.9.3