From 51af2794f47d5b68496edbc09d0ccb168347f02b Mon Sep 17 00:00:00 2001
From: HuBingJie <3146306518@qq.com>
Date: 星期六, 22 十一月 2025 10:19:05 +0800
Subject: [PATCH] 1
---
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs | 145 ++++++++++++++++++++++++++++++++----------------
1 files changed, 97 insertions(+), 48 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs"
index fd7ff4b..c87ba04 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs"
@@ -1,4 +1,5 @@
-锘縰sing Microsoft.AspNetCore.Routing;
+锘縰sing Autofac.Core;
+using Microsoft.AspNetCore.Routing;
using Quartz;
using SqlSugar;
using System.Threading.Tasks;
@@ -17,6 +18,7 @@
using WIDESEAWCS_QuartzJob.Models;
using WIDESEAWCS_QuartzJob.Repository;
using WIDESEAWCS_QuartzJob.Service;
+using WIDESEAWCS_TaskInfoService;
using WIDESEAWCS_Tasks.ConveyorLineJob;
using ICacheService = WIDESEAWCS_Core.Caches.ICacheService;
@@ -50,39 +52,39 @@
bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
if (flag && value != null)
{
- OtherDevice device = (OtherDevice)value;
- List<string> deviceStations = device.DeviceProDTOs.Select(x => x.DeviceChildCode).Distinct().ToList();
- List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode);
+ OtherDevice device = (OtherDevice)value;
+ List<string> deviceStations = device.DeviceProDTOs.Select(x => x.DeviceChildCode).Distinct().ToList();//鑾峰彇璁惧涓嬬殑绔欏彴
+ List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode); //鑾峰彇璁惧涓嬬殑绔欏彴
try
{
- foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode)))
+ foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode))) //寰幆璁惧涓嬬殑绔欏彴
{
- DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_ConveyorLineDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); //璇诲彇
+ DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_ConveyorLineDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); //杈撻�佺嚎璇诲彇鐨勫叏閮ㄥ崗璁�
- DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(W_ConveyorLineDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); //鍐欏叆
+ DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(W_ConveyorLineDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); //杈撻�佺嚎鍐欏叆鐨勫叏閮ㄥ崗璁�
- if (deviceProRead != null && deviceProWrite != null) //璇诲彇鍐欏叆
+ if (deviceProRead != null && deviceProWrite != null) //璇诲彇鍐欏叆鐨勫崗璁垽鏂槸鍚︿负null
{
- R_ConveyorLineInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineInfo>(deviceProRead.DeviceProAddress);
+ R_ConveyorLineInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineInfo>(deviceProRead.DeviceProAddress); //璇诲彇鍗忚
- W_ConveyorLineInfo conveyorLineInfoWrite = device.Communicator.ReadCustomer<W_ConveyorLineInfo>(deviceProWrite.DeviceProAddress);
+ W_ConveyorLineInfo conveyorLineInfoWrite = device.Communicator.ReadCustomer<W_ConveyorLineInfo>(deviceProWrite.DeviceProAddress); //鍐欏叆鍗忚
if (conveyorLineInfoRead == null || conveyorLineInfoWrite == null)
{
continue;
}
- R_ConveyorLineStatus conveyorLineStatus = conveyorLineInfoRead.Status.ByteToBoolObject<R_ConveyorLineStatus>();
+ R_ConveyorLineStatus conveyorLineStatus = conveyorLineInfoRead.Status.ByteToBoolObject<R_ConveyorLineStatus>(); //鑾峰彇璁惧鐘舵��
- ConveyorLineSignal conveyorLineSignalRead = conveyorLineInfoRead.Signal.ByteToBoolObject<ConveyorLineSignal>();
- bool ACK = device.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.ACK, item.StationCode);
+ ConveyorLineSignal conveyorLineSignalRead = conveyorLineInfoRead.Signal.ByteToBoolObject<ConveyorLineSignal>(); //鑾峰彇璁惧淇″彿
+ bool ACK = device.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.ACK, item.StationCode); //鑾峰彇ACK纭淇℃伅
- bool STB = device.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.STB, item.StationCode);
+ bool STB = device.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.STB, item.StationCode); //鑾峰彇STB璇锋眰淇℃伅
//ConveyorLineSignal conveyorLineSignalWrite = conveyorLineInfoWrite.Signal.ByteToBoolObject<ConveyorLineSignal>();
//鍑哄簱绔欏彴
- if (item.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt())
+ if (item.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt()) //2007浜や簰鍙h繘鍏�
{
// 鍑哄簱
- if (conveyorLineSignalRead.STB && !conveyorLineSignalRead.ACK && conveyorLineStatus.Online && conveyorLineStatus.Goods && !conveyorLineStatus.Alarm && !STB && !ACK)//鍑哄簱
+ if (conveyorLineSignalRead.STB && !conveyorLineSignalRead.ACK && conveyorLineStatus.Online && conveyorLineStatus.Goods && !conveyorLineStatus.Alarm && !STB && !ACK)//2妤煎嚭搴�
{
if (!string.IsNullOrEmpty(conveyorLineInfoRead.Barcode))
{
@@ -90,9 +92,10 @@
Dt_Task dt_Ta = _taskService.GetOutTaskInfo2(conveyorLineInfoRead.Barcode);
if (dt_Ta != null)
{
- device.SetValue(W_ConveyorLineDB.ACK, true, item.StationCode);
- device.SetValue(W_ConveyorLineDB.EndPos, dt_Ta.OutboundPlatform, item.StationCode);
device.SetValue(W_ConveyorLineDB.TaskNo, dt_Ta.TaskNum, item.StationCode);
+ bool endpos = device.SetValue(W_ConveyorLineDB.EndPos, dt_Ta.OutboundPlatform, item.StationCode);
+ device.SetValue(W_ConveyorLineDB.ACK, true, item.StationCode);
+
//鍒犻櫎浠诲姟
_taskRepository.DeleteData(dt_Ta);
@@ -107,16 +110,18 @@
//鍑哄叆搴撶珯鍙�
else if (item.StationType == StationTypeEnum.StationType_InboundAndOutbound.ObjToInt())
{
- //鍏ュ簱鐢熸垚鍫嗗灈鏈哄叆搴撲换鍔�
+ //杈撻�佺嚎瀹屾垚淇敼鎴愯緭閫佺嚎瀹屾垚鐘舵�佸緟鍫嗗灈鏈烘墽琛屼换鍔�
if (conveyorLineSignalRead.STB && conveyorLineStatus.Online && conveyorLineStatus.Goods && !conveyorLineStatus.Alarm && !ACK)
{
- if (!string.IsNullOrEmpty(conveyorLineInfoRead.Barcode))//閲囪喘鍏ュ簱
+ Dt_Task dt_Task = _taskService.GetTaskIninfo(conveyorLineInfoRead.Barcode);
+ if (!string.IsNullOrEmpty(conveyorLineInfoRead.Barcode)&& dt_Task !=null)
{
- WebResponseContent contentweb = _taskService.UpdateTaskIninfo(conveyorLineInfoRead.Barcode,item.StationCode);
+ bool ack = device.SetValue(W_ConveyorLineDB.ACK, true, item.StationCode);
+ bool taskno = device.SetValue(W_ConveyorLineDB.TaskNo,1, item.StationCode);
+ WebResponseContent contentweb = _taskService.UpdateTaskIninfo(conveyorLineInfoRead.Barcode,item.StationCode); //鏍规嵁鏉$爜璺熻澶囩紪鍙峰幓鏌ヨ骞朵慨鏀逛换鍔�
if (contentweb.Status)
{
- device.SetValue(W_ConveyorLineDB.ACK, true, item.StationCode);
- device.SetValue(W_ConveyorLineDB.TaskNo,1, item.StationCode);
+
}
}
}
@@ -155,22 +160,34 @@
}
}
}*/
- else if (!conveyorLineSignalRead.STB && !conveyorLineSignalRead.ACK && conveyorLineStatus.Online && conveyorLineStatus.Goods && !conveyorLineStatus.Alarm && !STB && !ACK)//鍑哄簱
+ else if (!conveyorLineSignalRead.STB && !conveyorLineSignalRead.ACK && conveyorLineStatus.Online && conveyorLineStatus.Goods && !conveyorLineStatus.Alarm && !STB && !ACK)//鍏朵粬妤煎眰鍑哄簱
{
- Dt_Task dt_Ta = _taskService.GetOutTaskInfo(item.StationCode);
- if (dt_Ta != null)
- {.1111
- device.SetValue(W_ConveyorLineDB.TaskNo, dt_Ta.TaskNum, item.StationCode);
- device.SetValue(W_ConveyorLineDB.EndPos, dt_Ta.OutboundPlatform, item.StationCode);
- device.SetValue(W_ConveyorLineDB.STB, true, item.StationCode);
- //鍫嗗灈鏈轰换鍔″畬鎴愪笅涓�鍦板潃鏀规垚杈撻�佺嚎涓嬩竴鍦板潃锛岃澶囩紪鍙锋敼鎴愯緭閫佺嚎
- _taskService.UpdateTaskStatusToNext(dt_Ta.TaskNum);
+ Dt_Task dt_Ta = _taskService.GetOutTaskInfo(item.StationCode); //鑾峰彇鍑哄簱浠诲姟
- if (dt_Ta.TargetAddress !="2021" && dt_Ta.TargetAddress != "2020")
- {
- //鍒犻櫎浠诲姟
- _taskRepository.DeleteData(dt_Ta);
+
+ if (dt_Ta != null)
+ {
+ bool taskno = device.SetValue(W_ConveyorLineDB.TaskNo, dt_Ta.TaskNum, item.StationCode);
+ bool endpos = device.SetValue(W_ConveyorLineDB.EndPos, dt_Ta.OutboundPlatform, item.StationCode);
+ bool stb = device.SetValue(W_ConveyorLineDB.STB, true, item.StationCode);
+
+ if (taskno && endpos && stb)
+ {
+ //鍫嗗灈鏈轰换鍔″畬鎴愪笅涓�鍦板潃鏀规垚杈撻�佺嚎涓嬩竴鍦板潃锛岃澶囩紪鍙锋敼鎴愯緭閫佺嚎
+ WebResponseContent webResponse = _taskService.UpdateTaskStatusToNext(dt_Ta.TaskNum);
+ if (webResponse.Status)
+ {
+ if (dt_Ta.TargetAddress != "2021" && dt_Ta.TargetAddress != "2020")
+ {
+ //鍒犻櫎浠诲姟
+ bool res = _taskRepository.DeleteData(dt_Ta);
+ if (res)
+ {
+ TaskService.AddTaskHistory(dt_Ta);
+ }
+ }
+ }
}
}
@@ -180,23 +197,36 @@
else if (!conveyorLineSignalRead.STB && conveyorLineSignalRead.ACK && conveyorLineStatus.Online && conveyorLineStatus.Goods && !conveyorLineStatus.Alarm && STB && !ACK)
{
device.SetValue(W_ConveyorLineDB.STB, false, item.StationCode);
- }
+ }//娓呮纭淇″彿
}
//鍏ュ簱绔欏彴
- else if (item.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt())
+ else if (item.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt()) //2014浜や簰鍙�
{
if (conveyorLineSignalRead.STB && conveyorLineStatus.Online && conveyorLineStatus.Goods && !conveyorLineStatus.Alarm && !ACK)
{
- if (conveyorLineInfoRead.TaskNo == 0 && !string.IsNullOrEmpty(conveyorLineInfoRead.Barcode))//閲囪喘鍏ュ簱
+ Dt_Task dt_Task = _taskService.GetTaskIninfo(conveyorLineInfoRead.Barcode);
+
+ if (conveyorLineInfoRead.TaskNo == 0 && !string.IsNullOrEmpty(conveyorLineInfoRead.Barcode)&& dt_Task != null)//閲囪喘鍏ュ簱
{
- Dt_Task dt_Ta = _taskService.GetTaskIninfo(conveyorLineInfoRead.Barcode);
- if(dt_Ta != null)
+ Dt_Task dt_Ta = _taskService.GetTaskIninfo(conveyorLineInfoRead.Barcode); //閫氳繃鏉$爜鍘绘煡璇换鍔�
+ //if (dt_Ta.SourceAddress == "2021" || dt_Ta.SourceAddress == "2020")
+ //{
+ // bool IsOccupied2008 = device.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2008");
+ // bool IsOccupied2009 = device.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2009");
+ // bool IsOccupied2015 = device.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2015");
+ // bool IsOccupied2016 = device.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2016");
+ // //鍒ゆ柇鏄惁鎴愮珛
+ // if (IsOccupied2008 || IsOccupied2009 || IsOccupied2015 || IsOccupied2016)
+ // {
+ // return null;
+ // }
+ //}
+ if (dt_Ta != null)
{
-
- device.SetValue(W_ConveyorLineDB.EndPos, dt_Ta.SourceAddress, item.StationCode);
- device.SetValue(W_ConveyorLineDB.TaskNo, dt_Ta.TaskNum, item.StationCode);
- device.SetValue(W_ConveyorLineDB.ACK, true, item.StationCode);
+ bool endpos = device.SetValue(W_ConveyorLineDB.EndPos, dt_Ta.SourceAddress, item.StationCode);
+ bool taskno = device.SetValue(W_ConveyorLineDB.TaskNo, dt_Ta.TaskNum, item.StationCode);
+ bool ack = device.SetValue(W_ConveyorLineDB.ACK, true, item.StationCode);
}
}
@@ -210,10 +240,8 @@
}
}
}
-
}
-
-
+
catch (Exception ex)
{
}
@@ -223,5 +251,26 @@
}
return Task.CompletedTask;
}
+
+ //鑾峰彇鎷i�夌姸鎬佹湁鏃犺揣鐘舵��
+ public static bool GetPick()
+ {
+ //bool IsOccupied2008 = device.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2008");
+ //bool IsOccupied2009 = device.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2009");
+ //bool IsOccupied2015 = device.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2015");
+ //bool IsOccupied2016 = device.GetValue<W_ConveyorLineDB, bool>(W_ConveyorLineDB.IsOccupied, "2016");
+
+ ////鍒ゆ柇鏄惁鎴愮珛
+ //if (IsOccupied2008&&IsOccupied2009&&IsOccupied2015&&IsOccupied2016)
+ //{
+ // return false;
+ //}
+ //else
+ //{
+ // return true;
+ //}
+
+ return true;
+ }
}
}
--
Gitblit v1.9.3