From 0128fce75a5e7cc9afc4bd89ce1966eb2231b69f Mon Sep 17 00:00:00 2001
From: yanjinhui <3306209981@qq.com>
Date: 星期二, 31 三月 2026 10:55:33 +0800
Subject: [PATCH] 编写海康跨楼层接口
---
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile1.pubxml | 17
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs | 115 +++++
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/AGVCartInfoService.cs | 160 ++++++++
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs | 18
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs | 39 +
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs | 1
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IAGVCartInfoService.cs | 24 +
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs | 80 +++
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/ScheduledTaskJob.cs | 478 +++++++++++-----------
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs | 20
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_AGVCartInfo.cs | 31 +
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs | 27 +
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs | 31 +
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/AGVCartInfoController.cs | 29 +
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/AGV/HIKROBOT/HIKROBOTQuery.cs | 38 +
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs | 4
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs | 31 +
17 files changed, 881 insertions(+), 262 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/AGVCartInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/AGVCartInfoService.cs"
new file mode 100644
index 0000000..6c71744
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_BasicInfoService/AGVCartInfoService.cs"
@@ -0,0 +1,160 @@
+锘縰sing OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection.Emit;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_DTO;
+using WIDESEAWCS_DTO.AGV.HIKROBOT;
+using WIDESEAWCS_IBasicInfoService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_BasicInfoService
+{
+ public class AGVCartInfoService : ServiceBase<Dt_AGVCartInfo, IRepository<Dt_AGVCartInfo>>, IAGVCartInfoService
+ {
+
+ IApiInfoService _repository;
+ ITrackloginfoService _trackloginfoService;
+
+ public AGVCartInfoService(IRepository<Dt_AGVCartInfo> BaseDal, IApiInfoService repository, ITrackloginfoService ITrackloginfo) : base(BaseDal)
+ {
+ _repository = repository;
+ _trackloginfoService = ITrackloginfo;
+ }
+
+ public IRepository<Dt_AGVCartInfo> Repository => BaseDal;
+
+
+ /// <summary>
+ /// 鏌ユ捣搴峰皬杞﹀湪閭d釜妤煎眰
+ /// </summary>
+ /// <param name="agvcode"></param>
+ /// <returns></returns>
+ public WebResponseContent CheckTheCar()
+ {
+ WebResponseContent content = new WebResponseContent();
+ List<HIKROBOTQueryData> dataList = new List<HIKROBOTQueryData>();
+ HIKROBOTReturn hIKROBOTReturn = null;
+
+ var apiInfo = _repository.Repository.QueryFirst(it => it.ApiCode == nameof(HIKROBOTQuery));
+ if (apiInfo == null)
+ {
+ throw new Exception("鏈壘鍒版捣搴峰皬杞︿俊鎭帴鍙i厤缃俊鎭紒璇锋鏌ユ帴鍙i厤缃紒");
+ }
+
+ try
+ {
+ var agvInfo = Repository.QueryData();
+ if (agvInfo == null || !agvInfo.Any())
+ {
+ content.Error("鏈煡璇㈠埌AGV灏忚溅淇℃伅");
+ return content;
+ }
+
+ List<string> failedAgvCodes = new List<string>();
+ List<string> successMessages = new List<string>();
+
+ foreach (var item in agvInfo)
+ {
+ var headers = new Dictionary<string, string>
+ {
+ { "X-lr-request-id", DateTimeOffset.Now.ToUnixTimeSeconds().ToString() + item.AGVCode }
+ };
+
+ HIKROBOTQuery hIKROBOTQuery = new HIKROBOTQuery()
+ {
+ singleRobotCode = item.AGVCode
+ };
+
+ string requestData = hIKROBOTQuery.Serialize();
+
+ try
+ {
+ string response = HttpHelper.Post(apiInfo.ApiAddress, requestData, headers: headers);
+ hIKROBOTReturn = response.DeserializeObject<HIKROBOTReturn>();
+
+ // 鍒ゆ柇鎺ュ彛杩斿洖鏄惁鎴愬姛
+ if (hIKROBOTReturn != null && hIKROBOTReturn.code == "SUCCESS" && hIKROBOTReturn.message == "鎴愬姛")
+ {
+ // 灏� data 鍙嶅簭鍒楀寲涓哄叿浣撶殑 HIKROBOTQueryData 绫诲瀷
+ var queryData = Newtonsoft.Json.JsonConvert.DeserializeObject<HIKROBOTQueryData>(
+ Newtonsoft.Json.JsonConvert.SerializeObject(hIKROBOTReturn.data)
+ );
+
+ dataList.Add(new HIKROBOTQueryData
+ {
+ singleRobotCode = item.AGVCode,
+ mapCode = queryData?.mapCode ?? string.Empty
+ });
+
+ successMessages.Add($"AGV灏忚溅-{item.AGVCode}鎵�鍦ㄦゼ灞倇queryData?.mapCode}鏌ヨ鎴愬姛");
+ }
+ else
+ {
+ // 璁板綍澶辫触鐨勫皬杞�
+ failedAgvCodes.Add(item.AGVCode);
+ string errorMsg = hIKROBOTReturn?.message ?? "鑾峰彇灏忚溅淇℃伅澶辫触";
+ }
+ }
+ catch (Exception ex)
+ {
+ // 鎹曡幏鍗曚釜灏忚溅鏌ヨ鐨勫紓甯�
+ failedAgvCodes.Add(item.AGVCode);
+ string errorMsg = $"鏌ヨAGV灏忚溅{item.AGVCode}鏃跺彂鐢熷紓甯革細{ex.Message}";
+
+ _trackloginfoService.AddTrackLog(
+ requestData,
+ new WebResponseContent { Status = false, Message = errorMsg },
+ $"鏌ョ湅娴峰悍AGV灏忚溅淇℃伅-寮傚父-{item.AGVCode}",
+ "",
+ errorMsg
+ );
+ }
+ }
+
+ // 鏍规嵁鏌ヨ缁撴灉璁剧疆杩斿洖鐘舵��
+ if (dataList.Any())
+ {
+ if (failedAgvCodes.Any())
+ {
+ // 閮ㄥ垎鎴愬姛锛岄儴鍒嗗け璐�
+ string message = $"閮ㄥ垎灏忚溅鏌ヨ鎴愬姛锛屽け璐ョ殑灏忚溅锛歿string.Join(",", failedAgvCodes)}";
+ content.OK(message, dataList);
+ // 濡傛灉闇�瑕佹爣璁颁负閮ㄥ垎鎴愬姛锛屽彲浠ュ湪杩欓噷璁剧疆棰濆鐨勬爣蹇�
+ //content.Status = true; // 淇濇寔 true锛屼絾閫氳繃 Message 鍛婄煡閮ㄥ垎澶辫触
+ }
+ else
+ {
+ // 鍏ㄩ儴鎴愬姛
+ content.OK("鎵�鏈堿GV灏忚溅淇℃伅鏌ヨ鎴愬姛", dataList);
+ }
+ }
+ else
+ {
+ // 鍏ㄩ儴澶辫触
+ string errorMsg = failedAgvCodes.Any()
+ ? $"鎵�鏈堿GV灏忚溅鏌ヨ澶辫触锛屽け璐ュ垪琛細{string.Join(",", failedAgvCodes)}"
+ : "鏈煡璇㈠埌浠讳綍AGV灏忚溅淇℃伅";
+ content.Error(errorMsg);
+ }
+
+ return content;
+ }
+ catch (Exception ex)
+ {
+ content.Error($"鎵归噺鏌ヨAGV灏忚溅淇℃伅澶辫触锛歿ex.Message}");
+ return content;
+ }
+ }
+
+
+
+ }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
index 868d94c..e30139c 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
@@ -121,6 +121,33 @@
///// </summary>
//[Description("AGV鍙�/鏀捐揣涓�")]
//AGV_ToPuting,
+
+
+ /// <summary>
+ /// 鍛煎彨娴峰悍鎼繍涓� 19
+ /// </summary>
+ [Description("绛夊緟娴峰悍AGV鎼繍鍒颁綅")]
+ WaitingHkAGVMovePosition,
+
+
+ /// <summary>
+ /// 鍛煎彨娴峰悍鎼繍涓�
+ /// </summary>
+ [Description("鍛煎彨娴峰悍AGV鎼繍")]
+ CallingHKtransportation,
+
+ /// <summary>
+ /// 娴峰悍AGV鎼繍涓�
+ /// </summary>
+ [Description("娴峰悍AGV鎼繍涓�")]
+ HktransportIng,
+
+ /// <summary>
+ /// 娴峰悍AGV鎼繍瀹屾垚 22
+ /// </summary>
+ [Description("娴峰悍AGV鎼繍瀹屾垚")]
+ HkTransportCompleted,
+
#endregion
#region 鍥涘悜杞﹀叾浠栦换鍔$姸鎬�
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/AGV/HIKROBOT/HIKROBOTQuery.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/AGV/HIKROBOT/HIKROBOTQuery.cs"
new file mode 100644
index 0000000..eadf542
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_DTO/AGV/HIKROBOT/HIKROBOTQuery.cs"
@@ -0,0 +1,38 @@
+锘縰sing Newtonsoft.Json;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_DTO
+{
+ /// <summary>
+ /// 娴峰悍灏忚溅淇℃伅
+ /// </summary>
+ public class HIKROBOTQuery
+ {
+ /// <summary>
+ /// 灏忚溅缂栧彿
+ /// </summary>
+ public string singleRobotCode { get; set; }
+ }
+
+
+ public class HIKROBOTQueryData
+ {
+ /// <summary>
+ /// 閫氳繃杩斿洖鐨�"mapCode"鏉ュ尯鍒嗘ゼ灞� AA鏄�1妤硷紝BB鏄�2妤硷紝CC鏄�3妤硷紝DD鏄�4妤硷紝EE鏄�5妤硷紝FF鏄�6妤�
+ /// </summary>
+ public string mapCode { get; set; }
+
+
+ /// <summary>
+ /// 灏忚溅缂栧彿
+ /// </summary>
+ public string singleRobotCode { get; set; }
+ }
+
+
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IAGVCartInfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IAGVCartInfoService.cs"
new file mode 100644
index 0000000..3041606
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_IBasicInfoService/IAGVCartInfoService.cs"
@@ -0,0 +1,24 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseRepository;
+using WIDESEAWCS_Core.BaseServices;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_IBasicInfoService
+{
+ public interface IAGVCartInfoService : IService<Dt_AGVCartInfo>
+ {
+ public IRepository<Dt_AGVCartInfo> Repository { get; }
+
+
+ /// <summary>
+ /// 妫�鏌ユ捣搴峰皬杞�
+ /// </summary>
+ /// <returns></returns>
+ WebResponseContent CheckTheCar();
+ }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_AGVCartInfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_AGVCartInfo.cs"
new file mode 100644
index 0000000..05c5b34
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/BasicInfo/Dt_AGVCartInfo.cs"
@@ -0,0 +1,31 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.DB.Models;
+
+namespace WIDESEAWCS_Model.Models
+{
+ [SugarTable(nameof(Dt_AGVCartInfo), "娴峰悍AGV灏忚溅淇℃伅")]
+ public class Dt_AGVCartInfo : BaseEntity
+ {
+ /// <summary>
+ /// 涓婚敭
+ /// </summary>
+ [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+ public int Id { get; set; }
+
+ /// <summary>
+ /// 灏忚溅缂栧彿
+ /// </summary>
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "绔欏彴缂栧彿")]
+ public string AGVCode { get; set; }
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "澶囨敞")]
+ public string Remark { get; set; }
+ }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/AGVCartInfoController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/AGVCartInfoController.cs"
new file mode 100644
index 0000000..1703ffe
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/BasicInfo/AGVCartInfoController.cs"
@@ -0,0 +1,29 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.BaseController;
+using WIDESEAWCS_IBasicInfoService;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_Server.Controllers.BasicInfo
+{
+ /// <summary>
+ ///娴峰悍灏忚溅淇℃伅
+ /// </summary>
+ [Route("api/AGVCartInfo")]
+ [ApiController]
+ public class AGVCartInfoController : ApiBaseController<IAGVCartInfoService, Dt_AGVCartInfo>
+ {
+ public AGVCartInfoController(IAGVCartInfoService service) : base(service)
+ {
+
+ }
+
+ [HttpPost,Route("CheckTheCar"), AllowAnonymous]
+ public WebResponseContent CheckTheCar()
+ {
+ return Service.CheckTheCar();
+ }
+
+ }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile1.pubxml" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile1.pubxml"
new file mode 100644
index 0000000..4cf8e5b
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile1.pubxml"
@@ -0,0 +1,17 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+https://go.microsoft.com/fwlink/?LinkID=208121.
+-->
+<Project>
+ <PropertyGroup>
+ <DeleteExistingFiles>false</DeleteExistingFiles>
+ <ExcludeApp_Data>false</ExcludeApp_Data>
+ <LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
+ <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
+ <LastUsedPlatform>Any CPU</LastUsedPlatform>
+ <PublishProvider>FileSystem</PublishProvider>
+ <PublishUrl>C:\Users\Administrator\Desktop\涔変箤鎯犳櫘\鍚庣鍙戝竷鏂囦欢</PublishUrl>
+ <WebPublishMethod>FileSystem</WebPublishMethod>
+ <_TargetId>Folder</_TargetId>
+ </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs"
index f61e389..6aec781 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/HKTaskMethods.cs"
@@ -308,10 +308,26 @@
}
break;
case TaskTypeEnum.Q3RK:
- break;
case TaskTypeEnum.Q3CK:
- break;
case TaskTypeEnum.Move:
+ {
+ TargetRouteDto target = new TargetRouteDto()
+ {
+ code = task.CurrentAddress,
+ operation = "DELIVERY",//鍙栬揣
+ seq = 0,
+ type = "SITE",
+ };
+ TargetRouteDto targetRoute = new TargetRouteDto()
+ {
+ code = task.NextAddress,
+ operation = "DELIVERY",//閫佽揣
+ seq = 1,
+ type = "SITE",
+ };
+ hIKROBOTTaskSubmit.targetRoute.Add(target);
+ hIKROBOTTaskSubmit.targetRoute.Add(targetRoute);
+ }
break;
case TaskTypeEnum.CPMoveInventory:
break;
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs"
index 2f36005..3bf1406 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/KLSTaskMethods.cs"
@@ -13,6 +13,7 @@
using WIDESEAWCS_DTO;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_QuartzJob;
namespace WIDESEAWCS_TaskInfoService
{
@@ -201,18 +202,91 @@
}
#endregion
- #region 5 璺ㄦゼ灞傝繍杈撲换鍔″垱寤�
+ #region 5 璺ㄦゼ灞傝繍杈撲换鍔″垱寤� 锛堥兘鏄偣鍒扮偣锛�
public WebResponseContent CarryTask(TaskDTO taskDTO, int taskType)
{
+ WebResponseContent content = new WebResponseContent();
try
{
+ Dt_HKLocationInfo? hKLocationInfo = null;
+ Dt_StationInfo? stationInfo = null;
+ Dt_Task dt_Task = null;
+ //鍏ュ簱 鍒颁竴妤间笁涓珯鍙扮殑浣嶇疆
+ if (taskType == (int)TaskTypeEnum.Q3RK)
+ {
+ //璇诲彇鍏夌數淇″彿
+ var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "F1") as OtherDevice;
+ if (device == null) throw new Exception("鏈壘鍒�1妤艰川妫�闂ㄨ澶囦俊鎭�");
+ if (!device.IsConnected) throw new Exception("PLC1妤艰川妫�闂ㄨ澶囪繛鎺ュけ璐�");
+ bool value = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_StockAvailableSymbol, taskDTO.toLocationCode);
+ if (value)
+ {
+ content.Error($"{taskDTO.toLocationCode}绔欏彴鏈夎揣锛屾棤娉曞叆搴�");
+ }
+ dt_Task = new Dt_Task()
+ {
+ TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+ WMSTaskNum = taskDTO.taskCode,
+ Grade = taskDTO.taskPriority,
+ PalletCode = taskDTO.containerCode,
+ Roadway = hKLocationInfo.RoadwayNo,
+ TaskState = (int)TaskStatusEnum.New,
+ TaskType = taskType,
+ SourceAddress = taskDTO.fromLocationCode,
+ CurrentAddress = taskDTO.fromLocationCode,
+ NextAddress = taskDTO.toLocationCode,
+ TargetAddress = taskDTO.toLocationCode,
+ Creater = "WMS",
+ };
- return WebResponseContent.Instance.OK();
+ }
+ //鍑哄簱
+ if (taskType == (int)TaskTypeEnum.Q3CK)
+ {
+ stationInfo = _stationInfo.Repository.QueryFirst(x => x.StationName == taskDTO.toLocationCode) ?? throw new Exception($"鏈壘鍒拌捣鐐瑰簱浣嶃�恵taskDTO.toLocationCode}銆戯紒");
+ if (stationInfo.StationName != LocationStatusEnum.InStock.ToString()) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.toLocationCode}銆戝綋鍓嶅簱浣嶇姸鎬佷笉鍙嚭搴擄紒");
+ if (stationInfo.PalletCode != taskDTO.containerCode) throw new Exception($"璧风偣搴撲綅銆恵taskDTO.toLocationCode}銆戠粦瀹氭枡绠卞彿銆恵stationInfo.PalletCode}銆戜笌浠诲姟鏂欑鍙枫�恵taskDTO.containerCode}銆戜笉鍖归厤锛�");
+ dt_Task = new Dt_Task()
+ {
+ TaskNum = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+ WMSTaskNum = taskDTO.taskCode,
+ //WMSId = GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+ Grade = taskDTO.taskPriority,
+ PalletCode = taskDTO.containerCode,
+ Roadway = hKLocationInfo.RoadwayNo,
+ TaskState = (int)TaskStatusEnum.New,
+ TaskType = taskType,
+ SourceAddress = taskDTO.fromLocationCode,
+ CurrentAddress = taskDTO.fromLocationCode,
+ NextAddress = taskDTO.toLocationCode,
+ TargetAddress = taskDTO.toLocationCode,
+ Creater = "WMS",
+ };
+ }
+ try
+ {
+ Db.Ado.BeginTran();
+ BaseDal.AddData(dt_Task);
+ _hKLocationInfoService.Repository.UpdateData(hKLocationInfo);
+ _stationInfo.Repository.UpdateData(stationInfo);
+ Db.Ado.CommitTran();
+ }
+ catch (Exception ex)
+ {
+ Db.Ado.RollbackTran();
+ throw new Exception(ex.Message);
+ }
+ return content.OK(data: new
+ {
+ taskCode = taskDTO.taskCode,
+ Message = "鎴愬姛锛�"
+ });
}
catch (Exception ex)
{
- throw new Exception(ex.Message);
+ content.Error(ex.Message);
}
+ return content;
}
#endregion
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs"
index b035582..6241af5 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskMethods.cs"
@@ -78,13 +78,20 @@
switch (hIKROBOT.extra.values.method)
{
case "start":
- task.TaskState = (int)TaskStatusEnum.Takeing;
- TaskFeedback(task, 1);
+ if (task.TaskState==(int)TaskStatusEnum.CallingHKtransportation&& task.TaskType == (int)TaskTypeEnum.Move)
+ {
+ task.TaskState = (int)TaskStatusEnum.HktransportIng;
+ }
+ else
+ {
+ task.TaskState = (int)TaskStatusEnum.Takeing;
+ TaskFeedback(task, 1);
+ }
break;
case "outbin"://绂诲紑璧风偣
{
///鍒ゆ柇浠诲姟鏄惁璺熻澶囨湁鍏�
- TaskFromCompleted(task, deviceTypeEnum);
+ TaskFromCompleted(task, deviceTypeEnum); //浠诲姟鐘朵綋鏀逛负3鍙栬揣瀹屾垚锛屾洿鏂拌捣鐐硅揣浣嶇姸鎬侊紝骞跺弽棣圵MS璧风偣瀹屾垚
}
break;
case "finish"://绂诲紑鎻愬崌鏈�
@@ -145,6 +152,19 @@
task.ExceptionMessage = "鎻愬崌鏈轰俊鎭澶囪繛鎺ュけ璐�";
}
}
+ else if (task.TaskType == TaskTypeEnum.Q3RK.ObjToInt() || task.TaskType == TaskTypeEnum.Q3CK.ObjToInt() && task.TaskState == (int)TaskStatusEnum.AGV_ToExecute)
+ {
+ if (task.TaskType == TaskTypeEnum.Q3RK.ObjToInt())
+ {
+ //濡傛灉鏄叚妤煎埌涓�妤煎氨鍐欎竴涓俊鍙风粰1妤紁lc鍛婅瘔浠栨垜鏉ュ叆搴撲簡
+
+ }
+ else
+ {
+ //杩欎釜灏卞啓涓�涓浣嶇姸鎬侊紝鍛婅瘔瀹冩垜鍑哄簱浜�
+
+ }
+ }
}
break;
case "into"://鐢宠杩涘叆鎻愬崌鏈�
@@ -161,8 +181,17 @@
break;
case "end"://浠诲姟瀹屾垚閫氱煡
{
- ///鍒ゆ柇浠诲姟鏄惁璺熻澶囨湁鍏�
- TaskCompleted(task, deviceTypeEnum);
+ if (task.TaskType==(int)TaskTypeEnum.Move &&task.TaskState==(int)TaskStatusEnum.HkTransportCompleted)
+ {
+ task.TaskState = TaskStatusEnum.Finish.ObjToInt();
+ TaskFeedback(task, 2);
+ BaseDal.DeleteAndMoveIntoHty(task,OperateTypeEnum.鑷姩瀹屾垚);
+ }
+ else
+ {
+ ///鍒ゆ柇浠诲姟鏄惁璺熻澶囨湁鍏�
+ TaskCompleted(task, deviceTypeEnum);
+ }
}
break;
default:
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
index f7b5dbf..e51a226 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -318,9 +318,14 @@
robotTaskCode = dt_Task.WMSTaskNum,
cancelType = "CANCEL"//鍘熻蒋鍙栨秷锛孌ROP浜哄伐浠嬪叆锛堝師纭彇娑堬級
};
+ var headers = new Dictionary<string, string>
+ {
+ { "X-lr-request-id", DateTimeOffset.Now.ToUnixTimeSeconds().ToString() + wMSCancelTask.TaskCode }
+ };
+
Dt_ApiInfo? apiInfo = _apiInfoService.Repository.QueryFirst(x => x.ApiCode == nameof(CancelHIKROBOTTask));
if (apiInfo == null) throw new Exception("鏈壘鍒板洓鍚戣溅AGV浠诲姟涓嬪彂鎺ュ彛閰嶇疆淇℃伅锛佽妫�鏌ユ帴鍙i厤缃�");
- string response = HttpHelper.Post(apiInfo.ApiAddress, cancelHIKROBOTTask.Serialize());
+ string response = HttpHelper.Post(apiInfo.ApiAddress, cancelHIKROBOTTask.Serialize(),headers:headers);
HIKROBOTReturn hIKROBOTReturn = response.DeserializeObject<HIKROBOTReturn>();
content.OK(data: hIKROBOTReturn);
if (hIKROBOTReturn.code == "SUCCESS" && hIKROBOTReturn.message == "鎴愬姛")
@@ -1114,7 +1119,9 @@
{
LoctionCode = item.LocationCode,
LocationStatus = item.LocationStatus,
- EnableStatus = item.EnableStatus
+ EnableStatus = item.EnableStatus,
+ PalletCode = item.PalletCode
+
});
}
content.OK(data: list);
@@ -1132,7 +1139,8 @@
{
LoctionCode = item.LocationCode,
LocationStatus = item.LocationStatus,
- EnableStatus = item.EnableStatus
+ EnableStatus = item.EnableStatus,
+ PalletCode = item.PalletCode
});
}
content.OK(data: list);
@@ -1153,7 +1161,22 @@
}
else if (getLocationInfo.WarehouseId == 4)
{
-
+ List<Dt_HKLocationInfo> rGVLocationInfos = new List<Dt_HKLocationInfo>();
+ if (!string.IsNullOrEmpty(getLocationInfo.AreaCode))
+ rGVLocationInfos = _hKLocationInfoService.Repository.QueryData(x => x.WarehouseId == getLocationInfo.AreaCode.ObjToInt());
+ else
+ rGVLocationInfos = _hKLocationInfoService.Repository.QueryData();
+ foreach (var item in rGVLocationInfos)
+ {
+ list.Add(new
+ {
+ LoctionCode = item.LocationCode,
+ LocationStatus = item.LocationStatus,
+ EnableStatus = item.EnableStatus,
+ PalletCode = item.PalletCode
+ });
+ }
+ content.OK(data: list);
}
else if (getLocationInfo.WarehouseId == 5)
{
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs"
index b0b4028..d5f3a6b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TSJJob.cs"
@@ -162,6 +162,7 @@
task.ExceptionMessage = "";
Uptasks.Add(task);
}
+
}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs"
index 7063598..0dbd942 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs"
@@ -4,6 +4,8 @@
using System.Reflection.Metadata;
using System.Text;
using System.Threading.Tasks;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_DTO;
@@ -24,7 +26,7 @@
{
foreach (var item in tasks)
{
- var content =_taskService.SendHIKROBOTTask(item);
+ var content = _taskService.SendHIKROBOTTask(item);
}
}
#endregion
@@ -36,6 +38,117 @@
{
var content = _taskService.SendHIKROBOTTask(item);
}
+
+ }
+ #endregion
+
+ #region 涓嬪彂娴峰悍1-6妤肩殑AGV浠诲姟
+ public void SendAGVTask(List<Dt_Task> tasks)
+ {
+ foreach (var item in tasks)
+ {
+ if (item.TaskState == (int)TaskTypeEnum.Q3CK)
+ {
+ // 璋冪敤鎺ュ彛鑾峰彇灏忚溅淇℃伅
+ var result = _agvcartInfoService.CheckTheCar();
+
+ // 鍒ゆ柇鏄惁鏈� AA 鎴� FF
+ bool hasAAOrFF = false;
+
+ if (item.TaskState == (int)TaskTypeEnum.Q3CK)
+ {
+ if (result != null && result.Status)
+ {
+ var dataList = result.Data as List<HIKROBOTQueryData>;
+ if (dataList != null && dataList.Any())
+ {
+ // 妫�鏌ヨ繑鍥炵殑 mapCode 鍒楄〃涓槸鍚︽湁 AA
+ hasAAOrFF = dataList.Any(d => d.mapCode == "AA");
+ if (hasAAOrFF)
+ {
+ var content = _taskService.SendHIKROBOTTask(item);
+ item.TaskState = (int)TaskStatusEnum.Execut;
+ }
+ else//杩欓噷鎴戝氨瑕佸懠鍙┖杞︽潵
+ {
+ //娣诲姞绌鸿溅杩愯緭浠诲姟
+ AddAGVCartInfo(item);
+ item.TaskState = (int)TaskStatusEnum.WaitingHkAGVMovePosition;
+ }
+ }
+
+ }
+ }
+ else
+ {
+ if (result != null && result.Status)
+ {
+ if (hasAAOrFF)
+ {
+ var content = _taskService.SendHIKROBOTTask(item);
+ item.TaskState = (int)TaskStatusEnum.Execut;
+ }
+ else//杩欓噷鎴戝氨瑕佸懠鍙┖杞︽潵
+ {
+ //娣诲姞绌鸿溅杩愯緭浠诲姟
+ AddAGVCartInfo(item);
+ item.TaskState = (int)TaskStatusEnum.WaitingHkAGVMovePosition;
+ }
+ }
+ }
+ }
+ }
+ _taskService.UpdateData(tasks);
+ }
+ #endregion
+
+
+ #region 澶勭悊娴峰悍agv鎼繍浠诲姟
+ public WebResponseContent AddAGVCartInfo(Dt_Task task)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ task.TaskNum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
+ task.WMSTaskNum = null;
+ task.TaskType = (int)TaskTypeEnum.Move;//鎹㈠眰浠诲姟
+ task.TaskState = (int)TaskStatusEnum.CallingHKtransportation;
+ var result = _taskService.SendHIKROBOTTask(task);
+ _taskService.AddData(task);
+ }
+ catch (Exception ex)
+ {
+ content.Error($"鍒涘缓澶辫触锛歿ex.Message}");
+ }
+ return content;
+ }
+ #endregion
+
+ #region 澶勭悊agv寰呯┖杞︽惉杩愪换鍔�
+ public void SendHKWaitTask()
+ {
+ try
+ {
+ List<Dt_Task> reslut = _taskService.Repository.QueryData(x => x.TaskType == (int)TaskTypeEnum.Move);
+ if (reslut.Count<0)
+ {
+ foreach (var item in reslut)
+ {
+ var content = _taskService.SendHIKROBOTTask(item);
+ }
+ reslut.ForEach(x =>
+ {
+ x.TaskState =(int)TaskStatusEnum.Execut;
+ });
+
+ }
+ _taskService.UpdateData(reslut);
+
+ }
+ catch (Exception ex)
+ {
+ WriteError(nameof(TaskJob), ex.Message, ex);
+ }
}
#endregion
}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/ScheduledTaskJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/ScheduledTaskJob.cs"
index 13df29c..d7769dc 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/ScheduledTaskJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/ScheduledTaskJob.cs"
@@ -37,255 +37,255 @@
public Task Execute(IJobExecutionContext context)
{
- try
- {
- #region 涓夋ゼ鑷姩浠诲姟
- List<string> StationCodes = new() { "0348840CC0315690", "0349350CC0315686" };
- var stations = _StationInfoService.Repository.QueryData(x => StationCodes.Contains(x.StationCode));
- #region 鍏ユ彁鍗囨満浠诲姟
- var station = stations.FirstOrDefault(x => x.StationStatus == (int)LocationStatusEnum.InStock && x.IsOccupied == 0);
- if (station != null)
- {
- var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
- Dt_Task dt_Task = new Dt_Task()
- {
+ //try
+ //{
+ // #region 涓夋ゼ鑷姩浠诲姟
+ // List<string> StationCodes = new() { "0348840CC0315690", "0349350CC0315686" };
+ // var stations = _StationInfoService.Repository.QueryData(x => StationCodes.Contains(x.StationCode));
+ // #region 鍏ユ彁鍗囨満浠诲姟
+ // var station = stations.FirstOrDefault(x => x.StationStatus == (int)LocationStatusEnum.InStock && x.IsOccupied == 0);
+ // if (station != null)
+ // {
+ // var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
+ // Dt_Task dt_Task = new Dt_Task()
+ // {
- TaskNum = tasknum,
- WMSTaskNum = "GP" + tasknum,
- Grade = 60,
- PalletCode = station.PalletCode,
- Roadway = "",
- TaskState = (int)TaskStatusEnum.New,
- TaskType = TaskTypeEnum.RK3F.ObjToInt(),
- SourceAddress = station.StationCode,
- CurrentAddress = station.StationCode,
- NextAddress = "TSJR3F",
- TargetAddress = "TSJR3F",
- Creater = "WCS",
- };
- var content = _taskService.SendHIKROBOTTask(dt_Task);
- if (content.Status)
- {
- dt_Task.TaskState = (int)TaskStatusEnum.Execut;
- dt_Task.Dispatchertime = DateTime.Now;
- station.StationStatus = (int)LocationStatusEnum.OutLock;
- _taskService.AddData(dt_Task);
- _StationInfoService.UpdateData(station);
- }
- }
- #endregion
+ // TaskNum = tasknum,
+ // WMSTaskNum = "GP" + tasknum,
+ // Grade = 60,
+ // PalletCode = station.PalletCode,
+ // Roadway = "",
+ // TaskState = (int)TaskStatusEnum.New,
+ // TaskType = TaskTypeEnum.RK3F.ObjToInt(),
+ // SourceAddress = station.StationCode,
+ // CurrentAddress = station.StationCode,
+ // NextAddress = "TSJR3F",
+ // TargetAddress = "TSJR3F",
+ // Creater = "WCS",
+ // };
+ // var content = _taskService.SendHIKROBOTTask(dt_Task);
+ // if (content.Status)
+ // {
+ // dt_Task.TaskState = (int)TaskStatusEnum.Execut;
+ // dt_Task.Dispatchertime = DateTime.Now;
+ // station.StationStatus = (int)LocationStatusEnum.OutLock;
+ // _taskService.AddData(dt_Task);
+ // _StationInfoService.UpdateData(station);
+ // }
+ // }
+ // #endregion
- #region 鍑烘彁鍗囨満浠诲姟
- var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice;
- if (device != null && device.IsConnected)
- {
- if (device.GetValue<HoistEnum, short>(HoistEnum.SOutboundmaterialbox, "TSJC3F") == 1)
- {
- Dt_Task dt_Task = _taskService.Repository.QueryFirst(x => x.SourceAddress == "TSJC3F" /*&& x.TaskState < TaskStatusEnum.TakeFinish.ObjToInt()*/);
- if (dt_Task == null)
- {
- station = stations.FirstOrDefault(x => x.StationStatus == (int)LocationStatusEnum.Free && x.IsOccupied == 0);
- if (station != null)
- {
- var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
- dt_Task = new Dt_Task()
- {
- TaskNum = tasknum,
- WMSTaskNum = "GP" + tasknum,
- Grade = 60,
- PalletCode = "LXM" + tasknum,
- Roadway = "",
- TaskState = (int)TaskStatusEnum.New,
- TaskType = TaskTypeEnum.CK3F.ObjToInt(),
- SourceAddress = "TSJC3F",
- CurrentAddress = "TSJC3F",
- NextAddress = station.StationCode,
- TargetAddress = station.StationCode,
- Creater = "WCS",
- };
- var content = _taskService.SendHIKROBOTTask(dt_Task);
- if (content.Status)
- {
- dt_Task.TaskState = (int)TaskStatusEnum.Execut;
- dt_Task.Dispatchertime = DateTime.Now;
- station.StationStatus = (int)LocationStatusEnum.InLock;
- _taskService.AddData(dt_Task);
- _StationInfoService.UpdateData(station);
- }
- }
- }
- }
- }
- #endregion
+ // #region 鍑烘彁鍗囨満浠诲姟
+ // var device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice;
+ // if (device != null && device.IsConnected)
+ // {
+ // if (device.GetValue<HoistEnum, short>(HoistEnum.SOutboundmaterialbox, "TSJC3F") == 1)
+ // {
+ // Dt_Task dt_Task = _taskService.Repository.QueryFirst(x => x.SourceAddress == "TSJC3F" /*&& x.TaskState < TaskStatusEnum.TakeFinish.ObjToInt()*/);
+ // if (dt_Task == null)
+ // {
+ // station = stations.FirstOrDefault(x => x.StationStatus == (int)LocationStatusEnum.Free && x.IsOccupied == 0);
+ // if (station != null)
+ // {
+ // var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
+ // dt_Task = new Dt_Task()
+ // {
+ // TaskNum = tasknum,
+ // WMSTaskNum = "GP" + tasknum,
+ // Grade = 60,
+ // PalletCode = "LXM" + tasknum,
+ // Roadway = "",
+ // TaskState = (int)TaskStatusEnum.New,
+ // TaskType = TaskTypeEnum.CK3F.ObjToInt(),
+ // SourceAddress = "TSJC3F",
+ // CurrentAddress = "TSJC3F",
+ // NextAddress = station.StationCode,
+ // TargetAddress = station.StationCode,
+ // Creater = "WCS",
+ // };
+ // var content = _taskService.SendHIKROBOTTask(dt_Task);
+ // if (content.Status)
+ // {
+ // dt_Task.TaskState = (int)TaskStatusEnum.Execut;
+ // dt_Task.Dispatchertime = DateTime.Now;
+ // station.StationStatus = (int)LocationStatusEnum.InLock;
+ // _taskService.AddData(dt_Task);
+ // _StationInfoService.UpdateData(station);
+ // }
+ // }
+ // }
+ // }
+ // }
+ // #endregion
- #endregion
+ // #endregion
- #region 4F
- List<string> stationCodes = new() { "0319882DD0313240", "0319882DD0313750"};
- var Stations = _StationInfoService.Repository.QueryData(x => stationCodes.Contains(x.StationCode));
- #region 鍏ユ彁鍗囨満浠诲姟
- var Station = Stations.FirstOrDefault(x => x.StationStatus == (int)LocationStatusEnum.InStock && x.IsOccupied == 0);
- if (Station != null)
- {
- var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
- Dt_Task dt_Task = new Dt_Task()
- {
- TaskNum = tasknum,
- WMSTaskNum = "GP" + tasknum,
- Grade = 60,
- PalletCode = Station.PalletCode,
- Roadway = "",
- TaskState = (int)TaskStatusEnum.New,
- TaskType = TaskTypeEnum.F04.ObjToInt(),
- SourceAddress = Station.StationCode,
- CurrentAddress = Station.StationCode,
- NextAddress = "TSJR4F",
- TargetAddress = "TSJR4F",
- Creater = "WCS",
- };
- var content = _taskService.SendHIKROBOTTask(dt_Task);
- if (content.Status)
- {
- dt_Task.TaskState = (int)TaskStatusEnum.Execut;
- dt_Task.Dispatchertime = DateTime.Now;
- Station.StationStatus = (int)LocationStatusEnum.OutLock;
- _taskService.AddData(dt_Task);
- _StationInfoService.UpdateData(Station);
- }
- }
- #endregion
+ // #region 4F
+ // List<string> stationCodes = new() { "0319882DD0313240", "0319882DD0313750"};
+ // var Stations = _StationInfoService.Repository.QueryData(x => stationCodes.Contains(x.StationCode));
+ // #region 鍏ユ彁鍗囨満浠诲姟
+ // var Station = Stations.FirstOrDefault(x => x.StationStatus == (int)LocationStatusEnum.InStock && x.IsOccupied == 0);
+ // if (Station != null)
+ // {
+ // var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
+ // Dt_Task dt_Task = new Dt_Task()
+ // {
+ // TaskNum = tasknum,
+ // WMSTaskNum = "GP" + tasknum,
+ // Grade = 60,
+ // PalletCode = Station.PalletCode,
+ // Roadway = "",
+ // TaskState = (int)TaskStatusEnum.New,
+ //TaskType = TaskTypeEnum.F04.ObjToInt(),
+ // SourceAddress = Station.StationCode,
+ // CurrentAddress = Station.StationCode,
+ // NextAddress = "TSJR4F",
+ // TargetAddress = "TSJR4F",
+ // Creater = "WCS",
+ // };
+ // var content = _taskService.SendHIKROBOTTask(dt_Task);
+ // if (content.Status)
+ // {
+ // dt_Task.TaskState = (int)TaskStatusEnum.Execut;
+ // dt_Task.Dispatchertime = DateTime.Now;
+ // Station.StationStatus = (int)LocationStatusEnum.OutLock;
+ // _taskService.AddData(dt_Task);
+ // _StationInfoService.UpdateData(Station);
+ // }
+ // }
+ // #endregion
- #region 鍑烘彁鍗囨満浠诲姟
- device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice;
- if (device != null && device.IsConnected)
- {
- var reslur = device.GetValue<HoistEnum, short>(HoistEnum.FOutboundmaterialbox, "TSJC4F");
- if (device.GetValue<HoistEnum, short>(HoistEnum.FOutboundmaterialbox, "TSJC4F") == 1)
- {
- Dt_Task dt_Task = _taskService.Repository.QueryFirst(x => x.SourceAddress == "TSJC4F" /*&& x.TaskState < TaskStatusEnum.TakeFinish.ObjToInt()*/);
- if (dt_Task == null)
- {
- Station = Stations.FirstOrDefault(x => x.StationStatus == (int)LocationStatusEnum.Free && x.IsOccupied == 0);
- if (Station != null)
- {
- var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
- dt_Task = new Dt_Task()
- {
- TaskNum = tasknum,
- WMSTaskNum = "GP" + tasknum,
- Grade = 60,
- PalletCode = "LXM" + tasknum,
- Roadway = "",
- TaskState = (int)TaskStatusEnum.New,
- TaskType = TaskTypeEnum.F03.ObjToInt(),
- SourceAddress = "TSJC4F",
- CurrentAddress = "TSJC4F",
- NextAddress = Station.StationCode,
- TargetAddress = Station.StationCode,
- Creater = "WCS",
- };
- var content = _taskService.SendHIKROBOTTask(dt_Task);
- if (content.Status)
- {
- dt_Task.TaskState = (int)TaskStatusEnum.Execut;
- dt_Task.Dispatchertime = DateTime.Now;
- Station.StationStatus = (int)LocationStatusEnum.InLock;
- _taskService.AddData(dt_Task);
- _StationInfoService.UpdateData(Station);
- }
- }
- }
- }
- }
- #endregion
+ // #region 鍑烘彁鍗囨満浠诲姟
+ // device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ") as OtherDevice;
+ // if (device != null && device.IsConnected)
+ // {
+ // var reslur = device.GetValue<HoistEnum, short>(HoistEnum.FOutboundmaterialbox, "TSJC4F");
+ // if (device.GetValue<HoistEnum, short>(HoistEnum.FOutboundmaterialbox, "TSJC4F") == 1)
+ // {
+ // Dt_Task dt_Task = _taskService.Repository.QueryFirst(x => x.SourceAddress == "TSJC4F" /*&& x.TaskState < TaskStatusEnum.TakeFinish.ObjToInt()*/);
+ // if (dt_Task == null)
+ // {
+ // Station = Stations.FirstOrDefault(x => x.StationStatus == (int)LocationStatusEnum.Free && x.IsOccupied == 0);
+ // if (Station != null)
+ // {
+ // var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
+ // dt_Task = new Dt_Task()
+ // {
+ // TaskNum = tasknum,
+ // WMSTaskNum = "GP" + tasknum,
+ // Grade = 60,
+ // PalletCode = "LXM" + tasknum,
+ // Roadway = "",
+ // TaskState = (int)TaskStatusEnum.New,
+ // TaskType = TaskTypeEnum.F03.ObjToInt(),
+ // SourceAddress = "TSJC4F",
+ // CurrentAddress = "TSJC4F",
+ // NextAddress = Station.StationCode,
+ // TargetAddress = Station.StationCode,
+ // Creater = "WCS",
+ // };
+ // var content = _taskService.SendHIKROBOTTask(dt_Task);
+ // if (content.Status)
+ // {
+ // dt_Task.TaskState = (int)TaskStatusEnum.Execut;
+ // dt_Task.Dispatchertime = DateTime.Now;
+ // Station.StationStatus = (int)LocationStatusEnum.InLock;
+ // _taskService.AddData(dt_Task);
+ // _StationInfoService.UpdateData(Station);
+ // }
+ // }
+ // }
+ // }
+ // }
+ // #endregion
- #endregion
+ // #endregion
- #region 鍥涙ゼ鑷姩浠诲姟
- //List<string> LocationCodes = new() { "RGD0303A04041", "RG0302A05041", "RG0304A05041", "RG0205A05031" };
- List<string> LocationCodes = new() { "RGD0302A05041", "RGD0304A05041", "R3CG0106A04031", "RGD0307A05012" };
- var hKLocationInfos = _HKLocationInfoService.Repository.QueryData(x => LocationCodes.Contains(x.LocationCode));
- #region 鍏ユ彁鍗囨満浠诲姟
- var hKLocation = hKLocationInfos.FirstOrDefault(x => x.LocationStatus == (int)LocationStatusEnum.InStock);
- if (hKLocation != null)
- {
- var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
- Dt_Task dt_Task = new Dt_Task()
- {
- TaskNum = tasknum,
- WMSTaskNum = "GP" + tasknum,
- Grade = 60,
- PalletCode = hKLocation.PalletCode,
- Roadway = "",
- TaskState = (int)TaskStatusEnum.New,
- TaskType = TaskTypeEnum.CHUKU1.ObjToInt(),
- SourceAddress = hKLocation.LocationCode,
- CurrentAddress = hKLocation.LocationCode,
- NextAddress = "TSJR4F",
- TargetAddress = "TSJR4F",
- Creater = "WCS",
- };
- var content = _taskService.SendHIKROBOTTask(dt_Task);
- if (content.Status)
- {
- dt_Task.TaskState = (int)TaskStatusEnum.Execut;
- dt_Task.Dispatchertime = DateTime.Now;
- hKLocation.LocationStatus = (int)LocationStatusEnum.OutLock;
- _taskService.AddData(dt_Task);
- _HKLocationInfoService.UpdateData(hKLocation);
- }
- }
- #endregion
+ // #region 鍥涙ゼ鑷姩浠诲姟
+ // //List<string> LocationCodes = new() { "RGD0303A04041", "RG0302A05041", "RG0304A05041", "RG0205A05031" };
+ // List<string> LocationCodes = new() { "RGD0302A05041", "RGD0304A05041", "R3CG0106A04031", "RGD0307A05012" };
+ // var hKLocationInfos = _HKLocationInfoService.Repository.QueryData(x => LocationCodes.Contains(x.LocationCode));
+ // #region 鍏ユ彁鍗囨満浠诲姟
+ // var hKLocation = hKLocationInfos.FirstOrDefault(x => x.LocationStatus == (int)LocationStatusEnum.InStock);
+ // if (hKLocation != null)
+ // {
+ // var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
+ // Dt_Task dt_Task = new Dt_Task()
+ // {
+ // TaskNum = tasknum,
+ // WMSTaskNum = "GP" + tasknum,
+ // Grade = 60,
+ // PalletCode = hKLocation.PalletCode,
+ // Roadway = "",
+ // TaskState = (int)TaskStatusEnum.New,
+ //TaskType = TaskTypeEnum.CHUKU1.ObjToInt(),
+ // SourceAddress = hKLocation.LocationCode,
+ // CurrentAddress = hKLocation.LocationCode,
+ // NextAddress = "TSJR4F",
+ // TargetAddress = "TSJR4F",
+ // Creater = "WCS",
+ // };
+ // var content = _taskService.SendHIKROBOTTask(dt_Task);
+ // if (content.Status)
+ // {
+ // dt_Task.TaskState = (int)TaskStatusEnum.Execut;
+ // dt_Task.Dispatchertime = DateTime.Now;
+ // hKLocation.LocationStatus = (int)LocationStatusEnum.OutLock;
+ // _taskService.AddData(dt_Task);
+ // _HKLocationInfoService.UpdateData(hKLocation);
+ // }
+ // }
+ // #endregion
- #region 鍑烘彁鍗囨満浠诲姟
- //if (device != null && device.IsConnected)
- //{
- // if (device.GetValue<HoistEnum, short>(HoistEnum.FOutboundmaterialbox, "TSJC4F") == 1)
- // {
- // Dt_Task dt_Task = _taskService.Repository.QueryFirst(x => x.SourceAddress == "TSJC4F");
- // if (dt_Task == null)
- // {
- // hKLocation = hKLocationInfos.FirstOrDefault(x => x.LocationStatus == (int)LocationStatusEnum.Free);
- // if (hKLocation != null)
- // {
- // var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
- // dt_Task = new Dt_Task()
- // {
- // TaskNum = tasknum,
- // WMSTaskNum = "GP" + tasknum,
- // Grade = 60,
- // PalletCode = "LXM" + tasknum,
- // Roadway = "",
- // TaskState = (int)TaskStatusEnum.New,
- // TaskType = TaskTypeEnum.Q1TSJ4.ObjToInt(),
- // SourceAddress = "TSJC4F",
- // CurrentAddress = "TSJC4F",
- // NextAddress = hKLocation.LocationCode,
- // TargetAddress = hKLocation.LocationCode,
- // Creater = "WCS",
- // };
- // var content = _taskService.SendHIKROBOTTask(dt_Task);
- // if (content.Status)
- // {
- // dt_Task.TaskState = (int)TaskStatusEnum.Execut;
- // dt_Task.Dispatchertime = DateTime.Now;
- // hKLocation.LocationStatus = (int)LocationStatusEnum.InLock;
- // _taskService.AddData(dt_Task);
- // _HKLocationInfoService.UpdateData(hKLocation);
- // }
- // }
- // }
+ // #region 鍑烘彁鍗囨満浠诲姟
+ // //if (device != null && device.IsConnected)
+ // //{
+ // // if (device.GetValue<HoistEnum, short>(HoistEnum.FOutboundmaterialbox, "TSJC4F") == 1)
+ // // {
+ // // Dt_Task dt_Task = _taskService.Repository.QueryFirst(x => x.SourceAddress == "TSJC4F");
+ // // if (dt_Task == null)
+ // // {
+ // // hKLocation = hKLocationInfos.FirstOrDefault(x => x.LocationStatus == (int)LocationStatusEnum.Free);
+ // // if (hKLocation != null)
+ // // {
+ // // var tasknum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum));
+ // // dt_Task = new Dt_Task()
+ // // {
+ // // TaskNum = tasknum,
+ // // WMSTaskNum = "GP" + tasknum,
+ // // Grade = 60,
+ // // PalletCode = "LXM" + tasknum,
+ // // Roadway = "",
+ // // TaskState = (int)TaskStatusEnum.New,
+ // // TaskType = TaskTypeEnum.Q1TSJ4.ObjToInt(),
+ // // SourceAddress = "TSJC4F",
+ // // CurrentAddress = "TSJC4F",
+ // // NextAddress = hKLocation.LocationCode,
+ // // TargetAddress = hKLocation.LocationCode,
+ // // Creater = "WCS",
+ // // };
+ // // var content = _taskService.SendHIKROBOTTask(dt_Task);
+ // // if (content.Status)
+ // // {
+ // // dt_Task.TaskState = (int)TaskStatusEnum.Execut;
+ // // dt_Task.Dispatchertime = DateTime.Now;
+ // // hKLocation.LocationStatus = (int)LocationStatusEnum.InLock;
+ // // _taskService.AddData(dt_Task);
+ // // _HKLocationInfoService.UpdateData(hKLocation);
+ // // }
+ // // }
+ // // }
- // }
- //}
- #endregion
+ // // }
+ // //}
+ // #endregion
- #endregion
- }
- catch (Exception ex)
- {
- Console.Out.WriteLine(nameof(TaskJob) + ":" + ex.Message);
- }
+ // #endregion
+ //}
+ //catch (Exception ex)
+ //{
+ // Console.Out.WriteLine(nameof(TaskJob) + ":" + ex.Message);
+ //}
return Task.CompletedTask;
}
}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs"
index 6528366..b6c133b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskExtend.cs"
@@ -1,4 +1,5 @@
-锘縰sing OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
+锘縰sing OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -41,6 +42,13 @@
//Tasks = newTasks.Where(x => x.TaskType == (int)TaskTypeEnum.F01 || x.TaskType == (int)TaskTypeEnum.RK3F || x.TaskType == (int)TaskTypeEnum.CK3F || x.TaskType == (int)TaskTypeEnum.Q1TSJ4 || x.TaskType == (int)TaskTypeEnum.STU0003 || x.TaskType == (int)TaskTypeEnum.F02 || x.TaskType == (int)TaskTypeEnum.CHUKU1 || x.TaskType == (int)TaskTypeEnum.Q3RK || x.TaskType == (int)TaskTypeEnum.Q3CK).OrderByDescending(x => x.Grade).ToList();
//if (Tasks.Count > 0) HIKROBOTTask(Tasks);
//#endregion
+
+ #region 涓嬪彂娴峰悍1鍒�6妤肩殑AGV浠诲姟/涓嬪彂娴峰悍6鍒�1妤肩殑AGV浠诲姟
+ Tasks = newTasks.Where(x => (x.TaskType == (int)TaskTypeEnum.Q3CK) || x.TaskType == (int)TaskTypeEnum.Q3RK).OrderByDescending(x => x.Grade).ToList();
+ if (Tasks.Count > 0) SendAGVTask(Tasks);
+
+
+ #endregion
}
}
catch (Exception ex)
@@ -102,6 +110,14 @@
//Tasks = ExecutTasks.Where(x => x.TaskState == (int)TaskStatusEnum.CheckPalletCodeFinish).OrderByDescending(x => x.Grade).ToList();
//if (Tasks.Count > 0) SendAGVWaitToExecuteTask(Tasks);
#endregion
+
+
+ #region 澶勭悊agv寰呯┖杞︽惉杩愪换鍔�
+ Tasks = ExecutTasks.Where(x => x.TaskState == (int)TaskStatusEnum.WaitingHkAGVMovePosition).OrderByDescending(x => x.Grade).ToList();
+ if (Tasks.Count > 0) SendHKWaitTask();
+ #endregion
+
+
}
}
catch (Exception ex)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs"
index 62f4f3c..a402251 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/TaskJob.cs"
@@ -34,8 +34,9 @@
private readonly IStationMangerService _stationMangerService;
private readonly ITrackloginfoService _trackloginfoService;
private readonly IUnitOfWorkManage _unitOfWorkManage;
+ private readonly IAGVCartInfoService _agvcartInfoService;
- public TaskJob(ITaskService taskService, IApiInfoService apiInfoService, IRGVLocationInfoService rGVLocationInfoService, IStationMangerService stationMangerService, ITrackloginfoService trackloginfoService, IUnitOfWorkManage unitOfWorkManage)
+ public TaskJob(ITaskService taskService, IApiInfoService apiInfoService, IRGVLocationInfoService rGVLocationInfoService, IStationMangerService stationMangerService, ITrackloginfoService trackloginfoService, IUnitOfWorkManage unitOfWorkManage, IAGVCartInfoService agvcartInfoService)
{
_taskService = taskService;//娉ㄥ叆
_apiInfoService = apiInfoService;
@@ -43,6 +44,7 @@
_stationMangerService = stationMangerService;
_trackloginfoService = trackloginfoService;
_unitOfWorkManage = unitOfWorkManage;
+ _agvcartInfoService = agvcartInfoService;
}
public Task Execute(IJobExecutionContext context)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs"
index 1debf07..fdf3f1f 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs"
@@ -52,6 +52,7 @@
{
List<Dt_Task> Uptasks = new List<Dt_Task>();
var taskList = _taskService.Repository.QueryData(x => x.TaskType == TaskTypeEnum.CPInbound.ObjToInt() && x.TaskState == TaskStatusEnum.CheckShapeing.ObjToInt());
+ var AGVtaskList = _taskService.Repository.QueryData(x => x.TaskState == TaskStatusEnum.AGV_WaitToExecute.ObjToInt()&& (x.TaskType == TaskTypeEnum.Q3RK.ObjToInt() || x.TaskType == TaskTypeEnum.Q3CK.ObjToInt()));//1-6鍜�6-1妤间换鍔�
//浠诲姟鐨勭洰鏍囧湴鍧�瀵逛簬绔欏彴鍙凤紱
foreach (var task in taskList)
{
@@ -89,12 +90,30 @@
//device.SetValue(QualityInspectionCommandEnum.FaultReset, true, task.SourceAddress);
}
}
- else
- {
- //鍐欏叆鍋滄璐ㄦ淇″彿
- device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, false, task.SourceAddress);
- device.SetValue(QualityInspectionCommandEnum.StartqualityInspection, true, task.SourceAddress);
- }
+ //else
+ //{
+ // //鍐欏叆鍋滄璐ㄦ淇″彿
+ // device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, false, task.SourceAddress);
+ // device.SetValue(QualityInspectionCommandEnum.StartqualityInspection, true, task.SourceAddress);
+ //}
+ }
+ foreach (var item in AGVtaskList)
+ {
+
+ var result = _taskService.Hikvisiontaskscontinue(item.WMSTaskNum);
+ if (result.Status == false)
+ {
+ if (item.ExceptionMessage != result.Message)
+ {
+ item.ExceptionMessage = result.Message;
+ Uptasks.Add(item);
+ }
+ continue;
+ }
+ item.TaskState = (int)TaskStatusEnum.AGV_ToExecute;
+ item.ExceptionMessage = "";
+ Uptasks.Add(item);
+
}
_taskService.UpdateData(Uptasks);
WriteInfo(device.DeviceName, "infoLog");
--
Gitblit v1.9.3