From a23691d54a0142ba9a0668788d366638bd82349e Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期二, 26 八月 2025 08:25:41 +0800
Subject: [PATCH] 更新最新代码,码垛,伸缩货叉等
---
项目代码/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs | 5
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/StackerCraneJob_CP.cs | 44
项目代码/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs | 68 +
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs | 71 +
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/R_MDDBName.cs | 60 +
项目资料/通信协议/龙利得机器人IO通讯表20250712.xlsx | 0
项目代码/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs | 215 ++++
项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs | 106 +
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPB.cs | 47
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPH.cs | 40
项目资料/通信协议/原料库输送线通讯协议.xlsx | 0
项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Completed.cs | 4
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/RetractDBName.cs | 59 +
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/W_MDDBName.cs | 52 +
项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs | 413 ++++++----
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/AGV_CPExtend.cs | 55 +
项目代码/WMS/WMSServices/WIDESEA_BasicService/Service/LocationInfoService_Common.cs | 4
项目资料/通信协议/伸缩货叉接驳台IP分配表.xlsx | 0
项目资料/通信协议/成品输送线通讯协议_20250707.xlsx | 0
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/码垛/MDJob_CP.cs | 165 ++++
项目代码/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs | 40 +
项目代码/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs | 12
项目资料/接口协议/一期BSTERP需求字段.xlsx | 0
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/原料库/ConveyorLineJob_YL1ndFloor.cs | 49 +
项目代码/龙利得PDA/common/config.js | 2
项目代码/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs | 31
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/接驳台/CoveryorJobYL.cs | 116 +++
项目资料/通信协议/印智云数据字典.xlsx | 0
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPC.cs | 11
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/伸缩货叉/RetractYSJob.cs | 114 +++
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPA.cs | 24
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/CoveryorDBName.cs | 60 +
项目代码/WMS/WMSServices/WIDESEA_Model/Models/Stock/Dt_ProCache.cs | 12
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/原料库/StackerCraneJob_YLSC2.cs | 49
项目代码/WMS/WMSServices/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs | 34
项目代码/WMS/WMSServices/WIDESEA_Common/TaskEnum/TaskStatusEnum.cs | 61 +
项目代码/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskSendDTO.cs | 2
项目代码/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvSecureApplyDTO.cs | 2
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/RGVJob_CP.cs | 56 +
项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs | 75 +
项目代码/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs | 21
项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Reloaction.cs | 63 +
42 files changed, 1,848 insertions(+), 394 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
index ccd5df8..87025f1 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs"
@@ -48,10 +48,10 @@
[Description("AGV寰呮墽琛�")]
AGV_Execute = 300,
/// <summary>
- /// AGV鍙栬揣涓�
+ /// AGV鍙栬揣瀹屾垚
/// </summary>
- [Description("AGV鍙栬揣涓�")]
- AGV_Takeing = 305,
+ [Description("AGV鍙栬揣瀹屾垚")]
+ AGV_TakeFinish = 305,
/// <summary>
/// AGV鎵ц涓�
/// </summary>
@@ -104,6 +104,12 @@
RGV_Executing = 510,
/// <summary>
+ /// 鐮佸灈鎵ц涓�
+ /// </summary>
+ [Description("鐮佸灈鎵ц涓�")]
+ MD_Executing = 520,
+
+ /// <summary>
/// 浠诲姟瀹屾垚
/// </summary>
[Description("浠诲姟瀹屾垚")]
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
index aa83b00..7f758b7 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs"
@@ -80,6 +80,19 @@
/// </summary>
[Description("鎴愬搧MES鎻愬簱")]
OutMesRworkProduct = 250,
+
+ /// <summary>
+ /// 鍗板埛鍑哄簱
+ /// </summary>
+ [Description("鍗板埛鍑哄簱")]
+ PrintOutbound = 310,
+
+ /// <summary>
+ /// 鏃犵汉甯冨嚭搴�
+ /// </summary>
+ [Description("鏃犵汉甯冨嚭搴�")]
+ OutWFB = 320,
+
/// <summary>
/// 閲囪喘鍏ュ簱
/// </summary>
@@ -155,6 +168,24 @@
EmptyProductBack = 630,
/// <summary>
+ /// 鎴愬搧鐮佸灈
+ /// </summary>
+ [Description("鎴愬搧鐮佸灈")]
+ ProductMD = 640,
+
+ /// <summary>
+ /// 鍗板埛鍗婃垚鍝佸叆搴�
+ /// </summary>
+ [Description("鍗板埛鍗婃垚鍝佸叆搴�")]
+ PrintInbound = 710,
+
+ /// <summary>
+ /// 鍗板埛鍘熸枡浣欐枡閫�搴�
+ /// </summary>
+ [Description("鍗板埛鍘熸枡浣欐枡閫�搴�")]
+ PrintBackInbound = 720,
+
+ /// <summary>
/// 宸烽亾鍐呯Щ搴�
/// </summary>
[Description("宸烽亾鍐呯Щ搴�")]
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvSecureApplyDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvSecureApplyDTO.cs"
index b94f32d..d7f0523 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvSecureApplyDTO.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvSecureApplyDTO.cs"
@@ -13,7 +13,7 @@
/// </summary>
public string ReceiveTaskID { get; set; }
/// <summary>
- /// 鎵规
+ /// 鍦板浘鍙�
/// </summary>
public string WbCode { get; set; }
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskSendDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskSendDTO.cs"
index b064b5c..2ed4cec 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskSendDTO.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskSendDTO.cs"
@@ -44,6 +44,6 @@
public class PointDetail
{
public string Code { get; set; }
- public string Value { get; set; }
+ public string? Value { get; set; }
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
index 2d1bf0a..d375bea 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
@@ -71,7 +71,15 @@
/// <param name="palletCode">鎵樼洏</param>
/// <param name="sourceAddress">璧风偣</param>
/// <returns></returns>
- WebResponseContent RequestYLWMSTaskSimple(string palletCode, string sourceAddress);
+ WebResponseContent RequestYLWMSTaskSimple(string palletCode, string sourceAddress, int taskNum = 0);
+
+ WebResponseContent AssignCPRoadwayNo();
+
+ // <summary>
+ /// 璇锋眰鍘熸枡鍏ュ簱宸烽亾
+ /// </summary>
+ /// <returns></returns>
+ WebResponseContent AssignYLRoadwayNo(string palletCode);
/// <summary>
/// 璇锋眰鍏ュ簱浠诲姟
/// </summary>
@@ -79,7 +87,7 @@
/// <param name="sourceAddress">璧峰鍦板潃</param>
/// /// <param name="roadWay">宸烽亾</param>
/// <returns></returns>
- WebResponseContent RequestWMSTaskSimple(string palletCode, string sourceAddress, string roadWay="", int taskType = 630);
+ WebResponseContent RequestWMSTaskSimple(string palletCode, string sourceAddress, string roadWay="", int taskType = 630,int taskNum=0,string targetAddress="");
/// <summary>
/// 鍚慦MS鐢宠浠诲姟
@@ -97,15 +105,6 @@
/// <param name="roadwayNo">宸烽亾鍙�</param>
/// <returns></returns>
string? RequestAssignLocation(int taskNum, string roadwayNo);
-
- /// <summary>
- /// 鍚慦MS鐢宠鍒嗛厤璐т綅
- /// </summary>
- /// <param name="taskNum">浠诲姟鍙�</param>
- /// <param name="roadwayNo">宸烽亾鍙�</param>
- /// <param name="heightType">楂樺害</param>
- /// <returns></returns>
- string? RequestAssignLocationByHeight(int taskNum, string roadwayNo, int heightType);
/// <summary>
/// 浠诲姟瀹屾垚
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs"
index 4724199..bd06e10 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs"
@@ -15,9 +15,12 @@
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
using WIDESEAWCS_QuartzJob.DTO;
+using WIDESEAWCS_QuartzJob.Models;
+using WIDESEAWCS_QuartzJob.Repository;
using WIDESEAWCS_Tasks;
using WIDESEAWCS_Tasks.ConveyorLineJob;
using WIDESEAWCS_Tasks.DBNames;
+using static Dm.net.buffer.ByteArrayBuffer;
namespace WIDESEAWCS_Server.Controllers
{
@@ -28,12 +31,14 @@
private readonly IStationMangerRepository _stationMangerRepository;
private readonly ITaskService _taskService;
private readonly ITaskRepository _taskRepository;
+ private readonly IRouterRepository _routerRepository;
- public AGVController(IStationMangerRepository stationMangerRepository, ITaskService taskService, ITaskRepository taskRepository)
+ public AGVController(IStationMangerRepository stationMangerRepository, ITaskService taskService, ITaskRepository taskRepository,IRouterRepository routerRepository)
{
_stationMangerRepository = stationMangerRepository;
_taskService = taskService;
_taskRepository = taskRepository;
+ _routerRepository = routerRepository;
}
@@ -53,22 +58,42 @@
if (task == null) throw new Exception("鏈壘鍒颁换鍔�");
if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
{
- var content = TakeRequest(task.CurrentAddress);
- if (!content.Status)
+ if (task.TaskState==TaskStatusEnum.AGV_Executing.ObjToInt())//鍑哄簱鍙栬揣璇锋眰
{
- throw new Exception(content.Message);
+ var content = TakeRequest(secureApplyModel.WbCode);
+ if (!content.Status)
+ {
+ throw new Exception(content.Message);
+ }
+ }
+ else//鍑哄簱鏀捐揣璇锋眰
+ {
+ var content = PutRequest(secureApplyModel.WbCode, task.PalletType);
+ if (!content.Status)
+ {
+ throw new Exception(content.Message);
+ }
}
}
else
{
- var content = PutRequest(task.NextAddress, task.PalletType);
- if (!content.Status)
+ if (task.TaskState == TaskStatusEnum.AGV_Executing.ObjToInt())//鍏ュ簱鍙栬揣璇锋眰
{
- throw new Exception(content.Message);
+ var content = TakeRequest(secureApplyModel.WbCode);
+ if (!content.Status)
+ {
+ throw new Exception(content.Message);
+ }
+ }
+ else//鍏ュ簱鏀捐揣璇锋眰
+ {
+ var content = PutRequest(secureApplyModel.WbCode, task.TaskNum);
+ if (!content.Status)
+ {
+ throw new Exception(content.Message);
+ }
}
}
- task.TaskState = TaskStatusEnum.AGV_Puting.ObjToInt();
- var up = _taskRepository.UpdateData(task);
agvResponse.OK("鎴愬姛","0");
}
catch (Exception ex)
@@ -201,6 +226,9 @@
switch (agvUpdateModel.GoodsState)
{
case "1"://鍑哄簱鏍规嵁杩欎釜淇″彿鍒ゆ柇鍙栬揣瀹屾垚
+
+ //鏇存柊浠诲姟鐘舵��
+ _taskService.UpdateTask(task, TaskStatusEnum.AGV_TakeFinish);
if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
{
var content = TakeFinish(task.CurrentAddress);
@@ -208,9 +236,19 @@
{
throw new Exception(content.Message);
};
- return agvResponse.OK("鎴愬姛", "0");
}
- break;
+ else
+ {
+ if (task.TaskType == TaskTypeEnum.PrintInbound.ObjToInt() || task.TaskType == TaskTypeEnum.PrintBackInbound.ObjToInt())
+ {
+ var content = TakeFinish(task.CurrentAddress);
+ if (!content.Status)
+ {
+ throw new Exception(content.Message);
+ };
+ }
+ }
+ return agvResponse.OK("鎴愬姛", "0");
case "2"://鍏ュ簱鏍规嵁杩欎釜淇″彿鍒ゆ柇鏀捐揣瀹屾垚
if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
{
@@ -219,19 +257,41 @@
{
throw new Exception($"{task.NextAddress}AGV绔欏彴鏈畾涔�");
}
- task.CurrentAddress = dt_Station.StationCode;
- task.NextAddress = "";
- task.TaskState = TaskStatusEnum.AGV_Finish.ObjToInt();
- task.DeviceCode = dt_Station.StationDeviceCode;
- var up = _taskRepository.UpdateData(task);
+ if (task.TaskType == TaskTypeEnum.PrintInbound.ObjToInt() || task.TaskType == TaskTypeEnum.PrintBackInbound.ObjToInt())
+ {
+ List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == task.TaskType && task.NextAddress == x.StartPosi);
+ Dt_Router router = routers.FirstOrDefault();
+ if (router == null)
+ {
+ throw new Exception($"浠诲姟鍙�:{task.TaskNum}鏈壘鍒拌矾鐢遍厤缃俊鎭�");
+ }
+ string oldAddress = task.NextAddress;
+ //鏇存柊浠诲姟鐘舵��
+ task.CurrentAddress = router.NextPosi;
+ task.NextAddress = "";
+ task.DeviceCode = router.ChildPosiDeviceCode;
+ _taskService.UpdateTask(task, TaskStatusEnum.AGV_Finish);
+ PutFinish(oldAddress, task.TaskNum);
+ }
+ else
+ {
+ task.CurrentAddress = dt_Station.StationCode;
+ task.NextAddress = "";
+ task.TaskState = TaskStatusEnum.AGV_Finish.ObjToInt();
+ task.DeviceCode = dt_Station.StationDeviceCode;
+ _taskRepository.UpdateData(task);
+ }
return agvResponse.OK("鎴愬姛","0");
}
- else if(task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+ else
{
_taskService.TaskCompleted(task.TaskNum);
+ if (task.TaskType==TaskTypeEnum.PrintOutbound.ObjToInt())
+ {
+ PutFinish(task.NextAddress);
+ }
return agvResponse.OK("鎴愬姛", "0");
}
- break;
default:
throw new Exception($"鏈畾涔夋柟娉曞悕銆恵agvUpdateModel.TaskState}銆�");
}
@@ -241,7 +301,6 @@
agvResponse.Error(ex.Message);
}
return agvResponse;
- //return _taskService.AgvUpdateTask(agvUpdateModel);
}
/// <summary>
@@ -251,12 +310,12 @@
/// <param name="palletType"></param>
/// <returns></returns>
[HttpPost, HttpGet, Route("PutRequest"), AllowAnonymous]
- public WebResponseContent PutRequest(string code, int palletType)
+ public WebResponseContent PutRequest(string code, int taskNum)
{
WebResponseContent content = new WebResponseContent();
try
{
- Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == code);
+ Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.AGVStationCode == code);
if (stationManger == null)
{
return content.Error($"鏈壘鍒扮珯鍙伴厤缃�");
@@ -269,15 +328,57 @@
OtherDevice otherDevice = (OtherDevice)device;
- short Command = otherDevice.GetValue<R_ConveyorLineCPDB, short>(R_ConveyorLineCPDB.Command, stationManger.StationCode);
- if (Command == 3)
+ if (device.DeviceCode.Contains("CP"))//鎴愬搧杈撻�佺嚎
{
- content.OK("鍏佽鏀炬枡");
+ short Command = otherDevice.GetValue<R_ConveyorLineCPDB, short>(R_ConveyorLineCPDB.Command, stationManger.StationCode);
+ if (Command == 3)
+ {
+ content.OK("鍏佽鏀炬枡");
+ }
+ else
+ {
+ return content.Error("绂佹鏀炬枡");
+ }
}
- else
+ else if (device.DeviceCode.Contains("Coveryor"))//鎺ラ┏鍙�
{
- return content.Error("绂佹鏀炬枡");
+ bool RequestPut = otherDevice.GetValue<CoveryorDB, bool>(CoveryorDB.C_RequestPut, stationManger.StationDeviceCode);
+ if (!RequestPut)
+ {
+ otherDevice.SetValue(CoveryorDB.C_InTaskNum, taskNum, stationManger.StationDeviceCode);
+ otherDevice.SetValue(CoveryorDB.C_RequestPut, true, stationManger.StationDeviceCode);
+ Thread.Sleep(1000);
+ }
+ bool AllowFinish = otherDevice.GetValue<CoveryorDB, bool>(CoveryorDB.C_AllowFinish, stationManger.StationDeviceCode);
+ if (AllowFinish)
+ {
+ content.OK("鍏佽鏀炬枡");
+ }
+ else
+ {
+ return content.Error("绂佹鏀炬枡");
+ }
}
+ else if (device.DeviceCode.Contains("Retract"))//浼哥缉璐у弶
+ {
+ bool RequestPut = otherDevice.GetValue<RetractDB, bool>(RetractDB.Ret_RequestPut, stationManger.StationDeviceCode);
+ if (!RequestPut)
+ {
+ otherDevice.SetValue(RetractDB.Ret_TargetAddress, Convert.ToInt16(stationManger.StationCode), stationManger.StationDeviceCode);
+ otherDevice.SetValue(RetractDB.Ret_RequestPut, true, stationManger.StationDeviceCode);
+ Thread.Sleep(1000);
+ }
+ bool AllowFinish = otherDevice.GetValue<RetractDB, bool>(RetractDB.Ret_AllowFinish, stationManger.StationDeviceCode);
+ if (AllowFinish)
+ {
+ content.OK("鍏佽鏀炬枡");
+ }
+ else
+ {
+ return content.Error("绂佹鏀炬枡");
+ }
+ }
+
return content;
}
catch (Exception ex)
@@ -293,11 +394,11 @@
/// <param name="code"></param>
/// <returns></returns>
[HttpPost, HttpGet, Route("PutFinish"), AllowAnonymous]
- public WebResponseContent PutFinish(string code)
+ public WebResponseContent PutFinish(string code,int taskNum=0)
{
try
{
- Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.AGVStationCode == code);
+ Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == code);
if (stationManger == null)
{
return WebResponseContent.Instance.Error($"鏈壘鍒扮珯鍙伴厤缃�");
@@ -309,7 +410,14 @@
}
OtherDevice otherDevice = (OtherDevice)device;
- otherDevice.SetValue(GroundStationDBName.W_PutFinish, true, stationManger.StationCode);
+ if (device.DeviceCode.Contains("Coveryor"))//鎺ラ┏鍙�
+ {
+ otherDevice.SetValue(CoveryorDB.C_PutFinish, true, stationManger.StationDeviceCode);
+ }
+ else if (device.DeviceCode.Contains("Retract"))//浼哥缉璐у弶
+ {
+ otherDevice.SetValue(RetractDB.Ret_PutFinish, true, stationManger.StationDeviceCode);
+ }
return WebResponseContent.Instance.OK();
}
catch (Exception ex)
@@ -330,7 +438,7 @@
WebResponseContent content = new WebResponseContent();
try
{
- Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == code);
+ Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.AGVStationCode == code);
if (stationManger == null)
{
return WebResponseContent.Instance.Error($"鏈壘鍒扮珯鍙伴厤缃畕code}");
@@ -343,15 +451,43 @@
OtherDevice otherDevice = (OtherDevice)device;
- short Command = otherDevice.GetValue<R_ConveyorLineCPDB, short>(R_ConveyorLineCPDB.Command, stationManger.StationCode);
- if (Command == 2)
+ if (otherDevice.DeviceCode.Contains("CP"))//鎴愬搧杈撻�佺嚎
{
- content.OK("鍏佽鍙栨枡");
+ short Command = otherDevice.GetValue<R_ConveyorLineCPDB, short>(R_ConveyorLineCPDB.Command, stationManger.StationCode);
+ if (Command == 2)
+ {
+ content.OK("鍏佽鍙栨枡");
+ }
+ else
+ {
+ return content.Error("绂佹鍙栨枡");
+ }
}
- else
+ else if (device.DeviceCode.Contains("Coveryor"))//鎺ラ┏鍙�
{
- return content.Error("绂佹鍙栨枡");
+ bool AllowTake = otherDevice.GetValue<CoveryorDB, bool>(CoveryorDB.C_AllowTake, stationManger.StationDeviceCode);
+ if (AllowTake)
+ {
+ content.OK("鍏佽鍙栨枡");
+ }
+ else
+ {
+ return content.Error("绂佹鍙栨枡");
+ }
}
+ else if (device.DeviceCode.Contains("Retract"))//浼哥缉璐у弶
+ {
+ bool AllowTake = otherDevice.GetValue<RetractDB, bool>(RetractDB.Ret_AllowTake, stationManger.StationDeviceCode);
+ if (AllowTake)
+ {
+ content.OK("鍏佽鍙栨枡");
+ }
+ else
+ {
+ return content.Error("绂佹鍙栨枡");
+ }
+ }
+
return content;
}
catch (Exception ex)
@@ -387,6 +523,15 @@
{
otherDevice.SetValue(W_ConveyorLineCPDB.W_Command, 2, stationManger.StationCode);
}
+ else if (device.DeviceCode.Contains("Coveryor"))
+ {
+ otherDevice.SetValue(CoveryorDB.C_TakeFinish, true, stationManger.StationDeviceCode);
+ }
+ else if (device.DeviceCode.Contains("Retract"))//浼哥缉璐у弶
+ {
+ otherDevice.SetValue(RetractDB.Ret_TakeFinish, true, stationManger.StationDeviceCode);
+ }
+
return WebResponseContent.Instance.OK();
}
catch (Exception ex)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
index 35a9f81..18a0ec3 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
@@ -102,6 +102,11 @@
};
return Service.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
}
+ [HttpPost, HttpGet, Route("AssignCPRoadwayNo"), AllowAnonymous]
+ public WebResponseContent AssignCPRoadwayNo()
+ {
+ return Service.AssignCPRoadwayNo();
+ }
/// <summary>
/// 璇锋眰鍏ュ簱浠诲姟
/// </summary>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
index f8398a4..8110c69 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -80,6 +80,8 @@
public List<int> TaskOutboundTypes => typeof(TaskTypeEnum).GetEnumIndexList().Where(x => x >= 100 && x < 500).ToList();
+ public List<int> TaskRelocationTypes => typeof(TaskTypeEnum).GetEnumIndexList().Where(x => x >= 900 && x < 1000).ToList();
+
public TaskService(ITaskRepository BaseDal, IMapper mapper, ICacheService cacheService, IRouterService routerService, ITaskExecuteDetailService taskExecuteDetailService, ITaskExecuteDetailRepository taskExecuteDetailRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IApiInfoRepository apiInfoRepository) : base(BaseDal)
{
_mapper = mapper;
@@ -206,6 +208,10 @@
task.CurrentAddress = router.StartPosi;
task.NextAddress = router.NextPosi;
task.DeviceCode = router.ChildPosiDeviceCode;
+ if (task.TaskType == TaskTypeEnum.ProductMD.ObjToInt())
+ {
+ task.TaskState = TaskStatusEnum.Line_Executing.ObjToInt();
+ }
}
else //鍑哄簱
{
@@ -312,7 +318,7 @@
/// <param name="sourceAddress">璧峰鍦板潃</param>
/// /// <param name="roadWay">宸烽亾</param>
/// <returns></returns>
- public WebResponseContent RequestYLWMSTaskSimple(string palletCode, string sourceAddress)
+ public WebResponseContent RequestYLWMSTaskSimple(string palletCode, string sourceAddress,int taskNum=0)
{
WebResponseContent content = new WebResponseContent();
try
@@ -322,7 +328,7 @@
{
return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
}
- string responseStr = HttpHelper.Get($"{address}/api/Task/RequestYLWMSTaskSimple?stationCode={sourceAddress}&palletCode={palletCode}");
+ string responseStr = HttpHelper.Get($"{address}/api/Task/RequestYLWMSTaskSimple?stationCode={sourceAddress}&palletCode={palletCode}&taskNum{taskNum}");
WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
if (responseContent != null && responseContent.Status && responseContent.Data != null)
{
@@ -340,6 +346,64 @@
}
return content;
}
+
+ // <summary>
+ /// 璇锋眰鎴愬搧鍏ュ簱宸烽亾
+ /// </summary>
+ /// <returns></returns>
+ public WebResponseContent AssignCPRoadwayNo()
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ string address = AppSettings.Get("WMSApiAddress");
+ if (string.IsNullOrEmpty(address))
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
+ }
+ string responseStr = HttpHelper.Get($"{address}/api/Task/AssignCPRoadwayNo");
+
+ if (!responseStr.IsNullOrEmpty())
+ {
+ content.OK("鎴愬姛", responseStr);
+ }
+
+ }
+ catch (Exception ex)
+ {
+ content = WebResponseContent.Instance.Error(ex.Message);
+ }
+ return content;
+ }
+
+ // <summary>
+ /// 璇锋眰鍘熸枡鍏ュ簱宸烽亾
+ /// </summary>
+ /// <returns></returns>
+ public WebResponseContent AssignYLRoadwayNo(string palletCode)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ string address = AppSettings.Get("WMSApiAddress");
+ if (string.IsNullOrEmpty(address))
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃");
+ }
+ string responseStr = HttpHelper.Get($"{address}/api/Task/AssignYLRoadwayNo?palletCode={palletCode}");
+ WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
+ if (responseContent != null && responseContent.Status && responseContent.Data != null)
+ {
+ content = responseContent;
+ }
+
+ }
+ catch (Exception ex)
+ {
+ content = WebResponseContent.Instance.Error(ex.Message);
+ }
+ return content;
+ }
// <summary>
/// 璇锋眰鍏ュ簱浠诲姟
/// </summary>
@@ -347,7 +411,7 @@
/// <param name="sourceAddress">璧峰鍦板潃</param>
/// /// <param name="roadWay">宸烽亾</param>
/// <returns></returns>
- public WebResponseContent RequestWMSTaskSimple(string palletCode, string sourceAddress, string roadWay="", int taskType=630)
+ public WebResponseContent RequestWMSTaskSimple(string palletCode, string sourceAddress,string roadWay="", int taskType=630, int taskNum = 0, string targetAddress = "")
{
WebResponseContent content = new WebResponseContent();
try
@@ -366,16 +430,15 @@
// {
WMSTaskDTO? taskDTO = new WMSTaskDTO()
{
- Id = 1,
- TaskNum = DateTime.Now.ToString("mmss").ObjToInt(),
+ TaskNum = taskNum ==0 ? DateTime.Now.ToString("mmss").ObjToInt(): taskNum,
PalletCode= palletCode,
- RoadWay= roadWay ?? "",
+ RoadWay= roadWay,
TaskType= taskType,
PalletType=1,
- TaskStatus=TaskStatusEnum.New.ObjToInt(),
+ TaskStatus= TaskStatusEnum.New.ObjToInt(),
SourceAddress= sourceAddress,
- TargetAddress="",
- WarehouseId=1,
+ TargetAddress= targetAddress,
+ WarehouseId=2,
Grade=0,
};
content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
@@ -574,29 +637,6 @@
}
/// <summary>
- /// 鍚慦MS鐢宠鍒嗛厤璐т綅
- /// </summary>
- /// <param name="taskNum"></param>
- /// <param name="roadwayNo"></param>
- /// <param name="heightType"></param>
- /// <returns></returns>
- /// <exception cref="Exception"></exception>
- public string? RequestAssignLocationByHeight(int taskNum, string roadwayNo, int heightType)
- {
- string address = AppSettings.Get("WMSApiAddress");
- if (string.IsNullOrEmpty(address)) throw new Exception("鏈壘鍒癢MSApi鍦板潃");
- string responseStr = HttpHelper.Get($"{address}/api/Task/AssignInboundTaskLocationByHeight?taskNum={taskNum}&roadwayNo={roadwayNo}&heightType={heightType}");
-
- WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr);
- if (responseContent != null && responseContent.Status && responseContent.Data != null)
- {
- return responseContent.Data.ToString();
- }
-
- return "";
- }
-
- /// <summary>
/// 鏍规嵁璁惧缂栧彿銆佷换鍔$被鍨嬪垎缁�(鍙��)鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鏂板鐨勪换鍔�
/// </summary>
/// <param name="deviceNo">璁惧缂栧彿</param>
@@ -610,6 +650,8 @@
return BaseDal.QueryFirst(x => x.DeviceCode == deviceNo && TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskStatusEnum.SC_Execute, TaskOrderBy);
if (taskTypeGroup.Value == TaskTypeGroup.OutbondGroup)
return BaseDal.QueryFirst(x => x.DeviceCode == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskStatusEnum.SC_Execute, TaskOrderBy);
+ if (taskTypeGroup.Value == TaskTypeGroup.RelocationGroup)
+ return BaseDal.QueryFirst(x => x.DeviceCode == deviceNo && TaskRelocationTypes.Contains(x.TaskType) && x.TaskState == (int)TaskStatusEnum.SC_Execute, TaskOrderBy);
return null;
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs"
index 5fbd015..4224dae 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs"
@@ -62,7 +62,7 @@
///7锛氱敵璇锋枡妗�
///8锛氭枡妗嗗埌浣�
///9锛氭墽琛屽懡浠や腑
- ///11锛氬紓甯�
+ ///11锛氭弧鐩樺噯澶�
/// </summary>
public short Command { get; set; }
/// <summary>
@@ -261,7 +261,8 @@
public short WR_Height { get; set; }
/// <summary>
- /// 鐢宠
+ /// 鐢宠<br/>
+ /// 86涓虹敵璇�
/// </summary>
public short WR_Request { get; set; }
@@ -350,4 +351,70 @@
/// </summary>
public short TaskReceivedDone { get; set; }
}
+
+ /// <summary>
+ /// 鎺ラ┏鍙版湁鏃犺揣
+ /// </summary>
+ public class C_RequestTakeStatus
+ {
+ /// <summary>
+ /// 鏈敵璇峰彇鏂�
+ /// </summary>
+ [BoolIndex(0)]
+ public bool NoTakeRequest { get; set; }
+
+ /// <summary>
+ /// 宸茬敵璇峰彇鏂�
+ /// </summary>
+ [BoolIndex(1)]
+ public bool OkTakeRequest { get; set; }
+ }
+
+ public class CoveryorInfo : DeviceCommand
+ {
+ /// <summary>
+ /// 鏈夋棤璐х姸鎬�
+ /// </summary>
+ public byte C_GoodsStatus { get; set; }
+ /// <summary>
+ /// 鏁呴殰鐘舵��
+ /// </summary>
+ public short C_Error { get; set; }
+ /// <summary>
+ /// 鍏ュ簱鐢宠鏀捐揣
+ /// </summary>
+ public byte C_RequestPut { get; set; }
+ /// <summary>
+ /// 鍏ュ簱鏀捐揣瀹屾垚
+ /// </summary>
+ public byte C_PutFinish { get; set; }
+ /// <summary>
+ /// 鍏ュ簱鍏佽鏀捐揣
+ /// </summary>
+ public byte C_AllowFinish { get; set; }
+ /// <summary>
+ /// 鍑哄簱鐢宠鍙栬揣
+ /// </summary>
+ public byte C_RequestTake { get; set; }
+ /// <summary>
+ /// 鍑哄簱鍏佽鍙栬揣
+ /// </summary>
+ public byte C_AllowTake { get; set; }
+ /// <summary>
+ /// 鍑哄簱浠诲姟鍙�
+ /// </summary>
+ public int C_OutTaskNum { get; set; }
+ /// <summary>
+ /// 鍑哄簱鐢宠鍥炲簲
+ /// </summary>
+ public byte C_OutResponse { get; set; }
+ /// <summary>
+ /// 鍑哄簱鍙栨枡瀹屾垚
+ /// </summary>
+ public byte C_TakeFinish { get; set; }
+ /// <summary>
+ /// 鍏ュ簱浠诲姟鍙�
+ /// </summary>
+ public int C_InTaskNum { get; set; }
+ }
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/CoveryorDBName.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/CoveryorDBName.cs"
new file mode 100644
index 0000000..81bbc9a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/CoveryorDBName.cs"
@@ -0,0 +1,60 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Tasks.DBNames
+{
+ /// <summary>
+ /// 鎺ラ┏鍙颁俊鍙�
+ /// </summary>
+ public enum CoveryorDB
+ {
+ /// <summary>
+ /// 鏈夋棤璐х姸鎬�
+ /// </summary>
+ C_GoodsStatus,
+ /// <summary>
+ /// 鏁呴殰鐘舵��
+ /// </summary>
+ C_Error,
+ /// <summary>
+ /// 鍏ュ簱鐢宠鏀捐揣
+ /// </summary>
+ C_RequestPut,
+ /// <summary>
+ /// 鍏ュ簱鏀捐揣瀹屾垚
+ /// </summary>
+ C_PutFinish,
+ /// <summary>
+ /// 鍏ュ簱鍏佽鏀捐揣
+ /// </summary>
+ C_AllowFinish,
+ /// <summary>
+ /// 鍑哄簱鐢宠鍙栬揣
+ /// </summary>
+ C_RequestTake,
+ /// <summary>
+ /// 鍑哄簱鍏佽鍙栬揣
+ /// </summary>
+ C_AllowTake,
+ /// <summary>
+ /// 鍑哄簱浠诲姟鍙�
+ /// </summary>
+ C_OutTaskNum,
+ /// <summary>
+ /// 鍑哄簱鐢宠鍥炲簲
+ /// </summary>
+ C_OutResponse,
+ /// <summary>
+ /// 鍑哄簱鍙栨枡瀹屾垚
+ /// </summary>
+ C_TakeFinish,
+ /// <summary>
+ /// 鍏ュ簱浠诲姟鍙�
+ /// </summary>
+ C_InTaskNum,
+ }
+
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/R_MDDBName.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/R_MDDBName.cs"
new file mode 100644
index 0000000..c0546ee
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/R_MDDBName.cs"
@@ -0,0 +1,60 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Tasks.DBNames
+{
+ public enum R_MDDB
+ {
+ /// <summary>
+ /// 1鍏佽鐮佸灈
+ /// </summary>
+ R_MDAllow,
+ /// <summary>
+ /// 鐮佸灈1鐘舵��<br/>
+ /// 1鐮佸灈涓�<br/>
+ /// 2鐮佸灈瀹屾垚<br/>
+ /// 4鐮佸灈娓呮墭<br/>
+ /// </summary>
+ R_MDStatus1,
+ /// <summary>
+ /// 鐮佸灈2鐘舵��<br/>
+ /// 1鐮佸灈涓�<br/>
+ /// 2鐮佸灈瀹屾垚<br/>
+ /// 4鐮佸灈娓呮墭<br/>
+ /// </summary>
+ R_MDStatus2,
+ /// <summary>
+ /// 鐮佸灈3鐘舵��<br/>
+ /// 1鐮佸灈涓�<br/>
+ /// 2鐮佸灈瀹屾垚<br/>
+ /// 4鐮佸灈娓呮墭<br/>
+ /// </summary>
+ R_MDStatus3,
+ /// <summary>
+ /// 鐮佸灈4鐘舵��<br/>
+ /// 1鐮佸灈涓�<br/>
+ /// 2鐮佸灈瀹屾垚<br/>
+ /// 4鐮佸灈娓呮墭<br/>
+ /// </summary>
+ R_MDStatus4,
+ /// <summary>
+ /// 鐮佸灈1鏁伴噺
+ /// </summary>
+ R_MDQtys1,
+ /// <summary>
+ /// 鐮佸灈2鏁伴噺
+ /// </summary>
+ R_MDQtys2,
+ /// <summary>
+ /// 鐮佸灈3鏁伴噺
+ /// </summary>
+ R_MDQtys3,
+ /// <summary>
+ /// 鐮佸灈4鏁伴噺
+ /// </summary>
+ R_MDQtys4
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/RetractDBName.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/RetractDBName.cs"
new file mode 100644
index 0000000..6851a63
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/RetractDBName.cs"
@@ -0,0 +1,59 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Tasks.DBNames
+{
+ /// <summary>
+ /// 浼哥缉璐у弶淇″彿
+ /// </summary>
+ public enum RetractDB
+ {
+ /// <summary>
+ /// 鏈夋棤璐х姸鎬�
+ /// </summary>
+ Ret_GoodsStatus,
+ /// <summary>
+ /// 鏁呴殰鐘舵��
+ /// </summary>
+ Ret_Error,
+ /// <summary>
+ /// 涓婃枡鐢宠鏀捐揣
+ /// </summary>
+ Ret_RequestPut,
+ /// <summary>
+ /// 涓婃枡鏀捐揣瀹屾垚
+ /// </summary>
+ Ret_PutFinish,
+ /// <summary>
+ /// 涓婃枡鐩殑绔欏彴
+ /// </summary>
+ Ret_TargetAddress,
+ /// <summary>
+ /// 涓婃枡鍏佽鏀捐揣
+ /// </summary>
+ Ret_AllowFinish,
+ /// <summary>
+ /// 涓嬫枡鐢宠鍙栬揣
+ /// </summary>
+ Ret_RequestTake,
+ /// <summary>
+ /// 涓嬫枡鍏佽鍙栬揣
+ /// </summary>
+ Ret_AllowTake,
+ /// <summary>
+ /// 涓嬫枡鏉ユ簮绔欏彴
+ /// </summary>
+ Ret_SourceAddress,
+ /// <summary>
+ /// 涓嬫枡鐢宠鍥炲簲
+ /// </summary>
+ Ret_OutResponse,
+ /// <summary>
+ /// 涓嬫枡鍙栨枡瀹屾垚
+ /// </summary>
+ Ret_TakeFinish
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/W_MDDBName.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/W_MDDBName.cs"
new file mode 100644
index 0000000..a7fc602
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/DBNames/W_MDDBName.cs"
@@ -0,0 +1,52 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_Tasks.DBNames
+{
+ public enum W_MDDB
+ {
+ /// <summary>
+ /// 浠诲姟涓嬪彂鏍囪瘑
+ /// </summary>
+ W_MDReceiveDone,
+ /// <summary>
+ /// 浠诲姟宸ヤ綅1
+ /// </summary>
+ W_MDSend1,
+ /// <summary>
+ /// 浠诲姟宸ヤ綅2
+ /// </summary>
+ W_MDSend2,
+ /// <summary>
+ /// 浠诲姟宸ヤ綅3
+ /// </summary>
+ W_MDSend3,
+ /// <summary>
+ /// 浠诲姟宸ヤ綅4
+ /// </summary>
+ W_MDSend4,
+ /// <summary>
+ /// 浠诲姟宸ヤ綅鍙�
+ /// </summary>
+ W_MDSendID,
+ /// <summary>
+ /// 浠诲姟宸ヤ綅X
+ /// </summary>
+ W_MDX,
+ /// <summary>
+ /// 浠诲姟宸ヤ綅Y
+ /// </summary>
+ W_MDY,
+ /// <summary>
+ /// 浠诲姟宸ヤ綅Z
+ /// </summary>
+ W_MDZ,
+ /// <summary>
+ /// 浠诲姟宸ヤ綅A
+ /// </summary>
+ W_MDA
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\344\274\270\347\274\251\350\264\247\345\217\211/RetractYSJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\344\274\270\347\274\251\350\264\247\345\217\211/RetractYSJob.cs"
new file mode 100644
index 0000000..7b1a9f8
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\344\274\270\347\274\251\350\264\247\345\217\211/RetractYSJob.cs"
@@ -0,0 +1,114 @@
+锘縰sing Microsoft.AspNetCore.Components.Routing;
+using Newtonsoft.Json;
+using Quartz;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection.Metadata;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Common.Helper;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Communicator;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_IBasicInfoRepository;
+using WIDESEAWCS_ITaskInfoRepository;
+using WIDESEAWCS_ITaskInfoService;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.ConveyorLine.Enum;
+using WIDESEAWCS_QuartzJob.DTO;
+using WIDESEAWCS_QuartzJob.Models;
+using WIDESEAWCS_QuartzJob.Repository;
+using WIDESEAWCS_QuartzJob.Service;
+using WIDESEAWCS_Tasks.ConveyorLineJob;
+using WIDESEAWCS_Tasks.DBNames;
+using ICacheService = WIDESEAWCS_Core.Caches.ICacheService;
+
+namespace WIDESEAWCS_Tasks
+{
+ [DisallowConcurrentExecution]
+ public class RetractYSJob : JobBase, IJob
+ {
+ private readonly ICacheService _cacheService;
+ private readonly ITaskService _taskService;
+ private readonly ITaskExecuteDetailService _taskExecuteDetailService;
+ private readonly ITaskRepository _taskRepository;
+ private readonly IStationMangerRepository _stationMangerRepository;
+ private readonly IRouterRepository _routerRepository;
+ private readonly IRouterService _routerService;
+ private readonly IRouterExtension _routerExtension;
+ private readonly List<Dt_WarehouseDevice> warehouseDevices;
+
+ public RetractYSJob(ICacheService cacheService, ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IRouterService routerService, IRouterExtension routerExtension)
+ {
+ _cacheService = cacheService;
+ _taskService = taskService;
+ _taskExecuteDetailService = taskExecuteDetailService;
+ _taskRepository = taskRepository;
+ _stationMangerRepository = stationMangerRepository;
+ _routerRepository = routerRepository;
+ _routerService = routerService;
+ _routerExtension = routerExtension;
+
+ string? warehouseDevicesStr = _cacheService.Get<string>(nameof(Dt_WarehouseDevice));
+ if (!string.IsNullOrEmpty(warehouseDevicesStr))
+ {
+ warehouseDevices = JsonConvert.DeserializeObject<List<Dt_WarehouseDevice>>(warehouseDevicesStr) ?? new List<Dt_WarehouseDevice>();
+ }
+ else
+ {
+ warehouseDevices = new List<Dt_WarehouseDevice>();
+ }
+ }
+
+ public Task Execute(IJobExecutionContext context)
+ {
+ bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
+ if (flag && value != null)
+ {
+ OtherDevice device = (OtherDevice)value;
+ List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode);
+ foreach (var item in stationMangers)
+ {
+ //鑾峰彇鍗忚
+ DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationDeviceCode && x.DeviceProParamType == nameof(RetractDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+ if (deviceProRead != null)
+ {
+ bool RequestTake = device.GetValue<RetractDB, bool>(RetractDB.Ret_RequestTake, item.StationDeviceCode);
+ short SourceAddress = device.GetValue<RetractDB, short>(RetractDB.Ret_SourceAddress, item.StationDeviceCode);
+ if (RequestTake && SourceAddress > 0) //涓�妤煎嵃鍒蜂笅鏂欑敵璇�
+ {
+ //鑾峰彇褰撳墠浠诲姟
+ Dt_Task task = _taskRepository.QueryFirst(x => x.CurrentAddress == SourceAddress.ToString() && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.New.ObjToInt() && x.DeviceCode== device.DeviceCode);
+ if (task != null)
+ {
+ //鍒嗛厤宸烽亾 瀛樺叆鎵樼洏鏁版嵁
+ List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == task.TaskType && task.CurrentAddress == x.StartPosi && x.ChildPosi==device.DeviceCode);
+ Dt_Router router = routers.FirstOrDefault();
+ if (router == null)
+ {
+ WriteError(item.StationName, $"浠诲姟鍙�:{task.TaskNum}鏈壘鍒拌矾鐢遍厤缃俊鎭�");
+ return Task.CompletedTask;
+ }
+ device.SetValue(RetractDB.Ret_OutResponse, true, item.StationDeviceCode);
+ //鏇存柊浠诲姟淇℃伅
+ task.DeviceCode = item.StackerCraneCode;
+ _taskService.UpdateTask(task, TaskStatusEnum.AGV_Execute);
+ WriteInfo(item.StationName, $"浠诲姟鍙穥task.TaskNum}浼哥缉璐у弶涓嬫枡");
+ }
+ }
+
+ }
+ else
+ {
+ WriteError(item.StationName, $"鏈壘鍒拌澶囧瓙缂栧彿{item.StationCode}鐨勫崗璁俊鎭�");
+ }
+ }
+ }
+ return Task.CompletedTask;
+ }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/ConveyorLineJob_YL1ndFloor.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/ConveyorLineJob_YL1ndFloor.cs"
index 2267256..e2fc1d9 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/ConveyorLineJob_YL1ndFloor.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/ConveyorLineJob_YL1ndFloor.cs"
@@ -82,7 +82,7 @@
device.SetValue(WR_CLineYLDB.WR_Reresult, 86, item.StationCode);
WriteInfo(item.StationCode, $"璇锋眰鍏ュ簱鏉$爜:{conveyorLineInfoRead.WR_TMID}");
}
- else if (conveyorLineInfoRead != null && item.StationType == StationTypeEnum.StationType_InboundAndOutbound.ObjToInt() && conveyorLineInfoRead.WR_ToHode <= 0 && conveyorLineInfoRead.WR_Request == 86 && !string.IsNullOrEmpty(conveyorLineInfoRead.WR_TMID)) //涓�妤煎垎閰嶇珯鍙板叆搴撳垎閰嶇洰鏍囩偣
+ else if (conveyorLineInfoRead != null && item.StationType == StationTypeEnum.StationType_InboundAndOutbound.ObjToInt() && conveyorLineInfoRead.WR_ToHode <= 0 && conveyorLineInfoRead.WR_Request == 86 && conveyorLineInfoRead.WR_Task <= 0 && !string.IsNullOrEmpty(conveyorLineInfoRead.WR_TMID)) //涓�妤煎垎閰嶇珯鍙板叆搴撳垎閰嶇洰鏍囩偣
{
Dt_Task task = _taskRepository.QueryFirst(x => x.PalletCode == conveyorLineInfoRead.WR_TMID && x.CurrentAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.New.ObjToInt() && x.DeviceCode == device.DeviceCode);
if (task == null)
@@ -99,7 +99,45 @@
device.SetValue(WR_CLineYLDB.WR_ToHode, task.NextAddress, item.StationCode);
device.SetValue(WR_CLineYLDB.WR_Reresult, 86, item.StationCode);
_taskService.UpdateTask(task, TaskStatusEnum.Line_Executing);
- WriteInfo(item.StationCode, conveyorLineInfoRead.Serialize());
+ WriteInfo(item.StationCode, $"{conveyorLineInfoRead.Serialize()}");
+ }
+ }
+ else if (conveyorLineInfoRead != null && item.StationType == StationTypeEnum.StationType_InboundAndOutbound.ObjToInt() && conveyorLineInfoRead.WR_ToHode <= 0 && conveyorLineInfoRead.WR_Request == 86 && conveyorLineInfoRead.WR_Task > 0) //涓�妤煎垎閰嶇珯鍙板叆搴撳垎閰嶇洰鏍囩偣
+ {
+ Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == conveyorLineInfoRead.WR_Task && x.CurrentAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.AGV_Finish.ObjToInt() && x.DeviceCode == device.DeviceCode);
+ //鍙戦�佷换鍔�
+ if (task != null)
+ {
+ if (string.IsNullOrEmpty(task.Roadway) && string.IsNullOrEmpty(task.NextAddress))
+ {
+ WebResponseContent content = _taskService.AssignYLRoadwayNo(task.PalletCode);
+ if (!content.Status)
+ {
+ WriteError(item.StationCode, $"璇锋眰鍏ュ簱澶辫触锛歿content.Message}");
+ }
+ string roadWay = content.Data.ToString();
+ //鑾峰彇璺敱閰嶇疆
+ List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == task.TaskType && task.CurrentAddress == x.StartPosi && x.ChildPosiDeviceCode== roadWay);
+ Dt_Router router = routers.FirstOrDefault();
+ if (router == null)
+ {
+ WriteError(item.StationName, $"浠诲姟鍙�:{task.TaskNum}鏈壘鍒拌矾鐢遍厤缃俊鎭�");
+ return Task.CompletedTask;
+ }
+ task.Roadway = roadWay;
+ task.NextAddress = router.NextPosi;
+ _taskService.UpdateTask(task,TaskStatusEnum.AGV_Finish);
+ }
+ else
+ {
+ device.SetValue(WR_CLineYLDB.WR_Task, task.TaskNum, item.StationCode);
+ device.SetValue(WR_CLineYLDB.WR_ToHode, task.NextAddress, item.StationCode);
+ device.SetValue(WR_CLineYLDB.WR_Width, task.TaskLength, item.StationCode);
+ device.SetValue(WR_CLineYLDB.WR_TMID, task.PalletCode, item.StationCode);
+ device.SetValue(WR_CLineYLDB.WR_Reresult, 86, item.StationCode);
+ _taskService.UpdateTask(task, TaskStatusEnum.Line_Executing);
+ WriteInfo(item.StationCode, $"璇锋眰鍏ュ簱鎴愬姛:{conveyorLineInfoRead.Serialize()}");
+ }
}
}
else if (conveyorLineInfoRead != null && item.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt() && conveyorLineInfoRead.WR_ToHode > 0 && conveyorLineInfoRead.WR_Request == 86 && !string.IsNullOrEmpty(conveyorLineInfoRead.WR_TMID) && conveyorLineInfoRead.WR_Task>0) //鍏ュ簱绔欏彴鐢宠
@@ -137,7 +175,14 @@
device.SetValue(WR_CLineYLDB.WR_TMID, task.PalletCode, item.StationCode);
device.SetValue(WR_CLineYLDB.WR_ToHode, task.NextAddress, item.StationCode);
device.SetValue(WR_CLineYLDB.WR_Reresult, 86, item.StationCode);
+ if (task.TaskType==TaskTypeEnum.OutPick.ObjToInt())
+ {
+ task.Roadway = task.TargetAddress;
+ task.TargetAddress = "";
+ task.TaskType=TaskTypeEnum.InPick.ObjToInt();
+ }
_taskService.UpdateTask(task,TaskStatusEnum.Line_Executing);
+ WriteInfo(item.StationCode, $"浠诲姟鍙�:{task.TaskNum}鍑哄簱鑷硔task.NextAddress}");
}
}
else if (conveyorLineInfoRead != null && item.StationType == StationTypeEnum.StationType_InboundAndOutbound.ObjToInt() && conveyorLineInfoRead.WR_Task > 0 && conveyorLineInfoRead.WR_Request == 98) //涓�妤艰�佸巶鍑哄簱鍙e畬鎴�
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC2.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC2.cs"
index 4c1a6ca..04b620f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC2.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC2.cs"
@@ -60,22 +60,26 @@
commonStackerCrane.CheckStackerCraneTaskCompleted();//闃叉浠诲姟瀹屾垚浜嬩欢鐩戞祴瓒呮椂锛屽啀鎵嬪姩瑙﹀彂涓�娆�
if (commonStackerCrane.StackerCraneAutoStatusValue == StackerCraneAutoStatus.Automatic && commonStackerCrane.StackerCraneStatusValue == StackerCraneStatus.Normal && commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.Standby)
{
- Dt_Task? task = GetTask(commonStackerCrane);
- if (task != null)
+ short stackerError = commonStackerCrane.Communicator.Read<short>("DB1000.54.0");
+ if (stackerError==0)
{
- StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task);
- if (stackerCraneTaskCommand != null)
+ Dt_Task? task = GetTask(commonStackerCrane);
+ if (task != null)
{
- bool sendFlag = commonStackerCrane.SendCommand(stackerCraneTaskCommand);
- if (sendFlag)
+ StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task);
+ if (stackerCraneTaskCommand != null)
{
- commonStackerCrane.LastTaskType = task.TaskType;
- task.Dispatchertime = DateTime.Now;
- task.ExceptionMessage = "";
- _taskService.UpdateTask(task, TaskStatusEnum.SC_Executing);
- commonStackerCrane.Communicator.Write("DB1000.20.0", true);
- //寤舵椂1s
- Thread.Sleep(1000);
+ bool sendFlag = commonStackerCrane.SendCommand(stackerCraneTaskCommand);
+ if (sendFlag)
+ {
+ commonStackerCrane.LastTaskType = task.TaskType;
+ task.Dispatchertime = DateTime.Now;
+ task.ExceptionMessage = "";
+ _taskService.UpdateTask(task, TaskStatusEnum.SC_Executing);
+ commonStackerCrane.Communicator.Write("DB1000.20.0", true);
+ //寤舵椂1s
+ Thread.Sleep(1000);
+ }
}
}
}
@@ -112,7 +116,7 @@
{
try
{
- Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == taskNum);
+ Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == taskNum && x.TaskState == TaskStatusEnum.SC_Executing.ObjToInt());
if (task != null)
{
if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
@@ -132,7 +136,7 @@
return WebResponseContent.Instance.Error($"鏈壘鍒拌矾鐢变俊鎭�,{task.NextAddress}");
}
int oldStatus = task.TaskState;
- //todo 鍫嗗灈鏈哄畬鎴愬畬鎴�
+ // 鍫嗗灈鏈哄畬鎴�
_taskService.UpdateTask(task, TaskStatusEnum.Line_Execute, deviceCode: stationManger.StationDeviceCode, currentAddress: stationManger.StationCode, nextAddress: router.NextPosi);
_taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"绯荤粺鑷姩娴佺▼,浠诲姟鐘舵�佷粠銆恵oldStatus}銆戣浆鍒般�恵task.TaskState}銆�");
WriteInfo(deviceCode, $"鍫嗗灈鏈哄嚭搴撲换鍔″畬鎴�,浠诲姟鍙�:{taskNum}");
@@ -172,7 +176,7 @@
/// <returns></returns>
private Dt_Task? GetTask(CommonStackerCrane commonStackerCrane)
{
- Dt_Task task;
+ Dt_Task? task;
if (commonStackerCrane.LastTaskType == null)
{
task = _taskService.QueryStackerCraneTask(commonStackerCrane.DeviceCode);
@@ -181,6 +185,7 @@
{
if (commonStackerCrane.LastTaskType.GetValueOrDefault().GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
{
+ //涓婁竴涓负鍑哄簱鍒欐煡鏄惁瀛樺湪鍏ュ簱浠诲姟 浜ゆ浛鎵ц
task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
if (task == null)
{
@@ -189,6 +194,7 @@
}
else
{
+ //涓婁竴涓负鍏ュ簱鍒欐煡鏄惁瀛樺湪鍑哄簱浠诲姟 浜ゆ浛鎵ц
task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode);
if (task == null)
{
@@ -199,6 +205,7 @@
if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
{
+ //鍒ゆ柇鍑哄簱绔欏彴鍗犵敤
if (OutTaskStationIsOccupied(task) == null)
{
bool flag = false;
@@ -218,7 +225,11 @@
}
}
}
- task = _taskService.QueryStackerCraneTask(commonStackerCrane.DeviceCode);
+ if (task == null)
+ {
+ task = _taskService.QuertStackerCraneTask(commonStackerCrane.DeviceCode, TaskTypeGroup.RelocationGroup);
+ }
+
return task;
}
@@ -298,7 +309,7 @@
return null;
}
}
- else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+ else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)//鍒ゆ柇鏄惁鏄嚭搴撲换鍔�
{
string[] targetCodes = task.NextAddress.Split("-");
if (targetCodes.Length == 3)
@@ -327,7 +338,7 @@
return null;
}
}
- else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
+ else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)//鍒ゆ柇鏄惁鏄Щ搴撲换鍔�
{
string[] targetCodes = task.NextAddress.Split("-");
if (targetCodes.Length == 5)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/AGV_CPExtend.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/AGV_CPExtend.cs"
index 06e8917..0af81dc 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/AGV_CPExtend.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/AGV_CPExtend.cs"
@@ -22,7 +22,7 @@
{
try
{
- var newTasks = _taskService.Db.Queryable<Dt_Task>().Where(x => (x.TaskState == TaskStatusEnum.AGV_Execute.ObjToInt()|| x.TaskState == TaskStatusEnum.New.ObjToInt()) && x.DeviceCode=="AGV" && x.TaskType!=999).ToList().OrderBy(x => x.Grade).ThenBy(x => x.CreateDate).ToList();
+ var newTasks = _taskService.Db.Queryable<Dt_Task>().Where(x => (x.TaskState == TaskStatusEnum.AGV_Execute.ObjToInt()|| x.TaskState == TaskStatusEnum.New.ObjToInt()) && x.DeviceCode=="AGV").ToList().OrderBy(x => x.Grade).ThenBy(x => x.CreateDate).ToList();
if (newTasks.Count>0)
{
@@ -48,6 +48,7 @@
Code= "GoodPoint",
Value=stationMangerStart.AGVStationCode
};
+ //鍒ゆ柇鏄惁鏈夊墠缃偣
if (!string.IsNullOrEmpty(stationMangerStart.AGVFrontCode))
{
PointDetail pointDetail2 = new PointDetail()
@@ -62,7 +63,8 @@
Code = "PointB",
Value = stationMangerEnd.AGVStationCode
};
- if (!string.IsNullOrEmpty(stationMangerStart.AGVFrontCode))
+ //鍒ゆ柇鏄惁鏈夊墠缃偣
+ if (!string.IsNullOrEmpty(stationMangerEnd.AGVFrontCode))
{
PointDetail pointDetail4 = new PointDetail()
{
@@ -90,17 +92,61 @@
{
throw new Exception("鏈壘鍒癆GV绔欑偣");
}
- if (!stationMangerStart.StationCode.Contains("PNT") && stationMangerEnd.StationCode.Contains("PNT"))
+ //鍙栨斁浠诲姟妯$増
+ if (stationMangerStart.StationCode.Contains("PNT") && !stationMangerEnd.StationCode.Contains("PNT"))//璇锋眰鏀�
+ {
+ agvTaskSend.TaskCode = "DUIGAO1";
+ if (stationMangerStart.StationType == 998 || stationMangerEnd.StationType == 998)//娼滀紡椤跺崌杞�
+ {
+ agvTaskSend.TaskCode = "DUOLUN1";
+ }
+ }
+ else if (!stationMangerStart.StationCode.Contains("PNT") && stationMangerEnd.StationCode.Contains("PNT"))//璇锋眰鍙�
{
agvTaskSend.TaskCode = "DUIGAO2";
+ if (stationMangerStart.StationType==998 || stationMangerEnd.StationType == 998)//娼滀紡椤跺崌杞�
+ {
+ agvTaskSend.TaskCode = "DUOLUN2";
+ }
}
+ else if (!stationMangerStart.StationCode.Contains("PNT") && !stationMangerEnd.StationCode.Contains("PNT"))//璇锋眰鍙栨斁
+ {
+ agvTaskSend.TaskCode = "DUIGAO3";
+ if (stationMangerStart.StationType == 998 || stationMangerEnd.StationType == 998)//娼滀紡椤跺崌杞�
+ {
+ agvTaskSend.TaskCode = "DUOLUN3";
+ }
+ }
+ else if (stationMangerStart.StationCode.Contains("PNT") && stationMangerEnd.StationCode.Contains("PNT"))//鏃犺姹�
+ {
+ agvTaskSend.TaskCode = "DUIGAO4";
+ if (stationMangerStart.StationType == 998 || stationMangerEnd.StationType == 998)//娼滀紡椤跺崌杞�
+ {
+ agvTaskSend.TaskCode = "DUOLUN4";
+ }
+ }
+ if (stationMangerStart.StationType == 998 || stationMangerEnd.StationType == 998)//娼滀紡椤跺崌杞�
+ {
+ agvTaskSend.Variables.FirstOrDefault(x => x.Code == "FHMH").Value = "0";
+ agvTaskSend.Variables.FirstOrDefault(x => x.Code == "GoodPoint").Value = "";
+ //涓嬪彂浠诲姟AGV浠诲姟闆嗙兢
+ agvTaskSend.AgvGroupCode = "QianF";
+ PointDetail pointDetail2 = new PointDetail()
+ {
+ Code = "CostPoint",
+ Value = stationMangerStart.AGVStationCode
+ };
+ agvTaskSend.Variables.Add(pointDetail2);
+ }
+ //寤舵椂
+ Thread.Sleep(500);
//鍙戦�丄GV浠诲姟
WebResponseContent content = _taskService.AgvSendTask(agvTaskSend, APIEnum.AgvSendTask);
if (!content.Status)
throw new Exception(content.Message);
task.Dispatchertime = DateTime.Now;
_taskService.UpdateTask(task, TaskStatusEnum.AGV_Executing);
- Thread.Sleep(500);
+ Thread.Sleep(200);
}
catch (Exception ex)
{
@@ -108,6 +154,7 @@
task.ExceptionMessage = ex.Message;
}
}
+ //鏇存柊浠诲姟
if (newTasks.Count > 0)
{
_taskService.UpdateData(newTasks);
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPA.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPA.cs"
index 1fb0fa4..2584f47 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPA.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPA.cs"
@@ -67,9 +67,8 @@
{
OtherDevice device = (OtherDevice)value;
List<string> deviceStations = device.DeviceProDTOs.Select(x => x.DeviceChildCode).ToList();
- //鑾峰彇鏈夊崗璁殑杈撻�佺嚎-z
+ //鑾峰彇鏈夊崗璁殑杈撻�佺嚎
List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode);
- //璁╂瘡涓緭閫佺嚎鍚姩-z
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_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
@@ -83,22 +82,17 @@
Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == conveyorLineInfoRead.TaskNo && x.NextAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode);
if (task != null)
{
- string local = "";
//鍒嗛厤璐т綅
- if (task.HeightType==1)
+ string? local = _taskService.RequestAssignLocation(task.TaskNum, task.Roadway);
+ if (!string.IsNullOrEmpty(local))
{
- local = "SC02_CP-001-064-001-01";
+ task.CurrentAddress = item.StackerCraneStationCode;
+ task.TargetAddress = local;
+ task.NextAddress = local;
+ task.DeviceCode = item.StackerCraneCode;
+ _taskService.UpdateTask(task, TaskStatusEnum.SC_Execute);
+ WriteInfo(item.StationName, $"浠诲姟鍙�:{task.TaskNum}杩涜鍫嗗灈鏈哄叆搴�");
}
- else if (task.HeightType == 2)
- {
- local = "SC02_CP-001-063-001-01";
- }
- task.CurrentAddress = item.StackerCraneStationCode;
- task.TargetAddress= local;
- task.NextAddress = local;
- task.DeviceCode = item.StackerCraneCode;
- _taskService.UpdateTask(task, TaskStatusEnum.SC_Execute);
- WriteInfo(item.StationName, $"浠诲姟鍙�:{task.TaskNum}杩涜鍫嗗灈鏈哄叆搴�");
}
}
else if (conveyorLineInfoRead != null && conveyorLineInfoRead.Command == 4 && conveyorLineInfoRead.TaskNo <= 0 && item.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt()) //浜屾ゼ绾夸綋鍑哄簱绔欏彴
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPB.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPB.cs"
index 0810c02..d04c373 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPB.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPB.cs"
@@ -77,36 +77,39 @@
{
R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress);
//浜屾ゼ鍏ュ簱鎵爜璇锋眰宸ヤ綅
- if (conveyorLineInfoRead != null && conveyorLineInfoRead.Command == 5 && conveyorLineInfoRead.TaskNo > 0 && !string.IsNullOrEmpty(conveyorLineInfoRead.PalletCode))
+ if (conveyorLineInfoRead != null && conveyorLineInfoRead.Command == 5 && conveyorLineInfoRead.TaskNo > 0)//&& !string.IsNullOrEmpty(conveyorLineInfoRead.PalletCode) todo涓存椂鍒犻櫎鏉′欢闄愬埗
{
//鏌ユ壘瀵瑰簲浠诲姟
Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == conveyorLineInfoRead.TaskNo && x.NextAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode);
if (task != null)
{
//鍒嗛厤宸烽亾 瀛樺叆鎵樼洏鏁版嵁
- List<Dt_Router> routers = _routerService.QueryNextRoutes(item.StationCode, "SC02_CP", task.TaskType);
- Dt_Router? router = routers.FirstOrDefault();
- if (routers == null || routers.Count == 0 || router == null)
+ string roadWay = _taskService.AssignCPRoadwayNo().Data.ToString();
+ if (!string.IsNullOrEmpty(roadWay))
{
- WriteError(item.StationName, $"鏈壘鍒板搴旇矾鐢变俊鎭�,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
- continue;
+ List<Dt_Router> routers = _routerService.QueryNextRoutes(item.StationCode, roadWay, task.TaskType);
+ Dt_Router? router = routers.FirstOrDefault();
+ if (routers == null || routers.Count == 0 || router == null)
+ {
+ WriteError(item.StationName, $"鏈壘鍒板搴旇矾鐢变俊鎭�,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
+ continue;
+ }
+ if (routers.Count > 1)
+ {
+ WriteError(item.StationName, $"璺敱淇℃伅閰嶇疆閿欒,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
+ continue;
+ }
+ device.SetValue(W_ConveyorLineCPDB.W_TargetAddress, router.NextPosi, item.StationCode);
+ device.SetValue(W_ConveyorLineCPDB.W_TaskNo, task.TaskNum, item.StationCode);
+ device.SetValue(W_ConveyorLineCPDB.W_Command, 1, item.StationCode);
+ task.CurrentAddress = item.StationCode;
+ task.NextAddress = router.NextPosi;
+ task.PalletCode = DateTime.Now.ToString("yyMMddHHmmss");//todo涓存椂
+ task.Roadway = roadWay;
+ task.DeviceCode = router.ChildPosiDeviceCode;
+ _taskService.UpdateTask(task, TaskStatusEnum.Line_Executing);
+ WriteInfo(item.StationName, $"浠诲姟鍙穥conveyorLineInfoRead.TaskNo}涓嬩竴姝�");
}
- if (routers.Count > 1)
- {
- WriteError(item.StationName, $"璺敱淇℃伅閰嶇疆閿欒,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
- continue;
- }
- device.SetValue(W_ConveyorLineCPDB.W_TargetAddress, router.NextPosi, item.StationCode);
- device.SetValue(W_ConveyorLineCPDB.W_TaskNo, task.TaskNum, item.StationCode);
- device.SetValue(W_ConveyorLineCPDB.W_Command, 1, item.StationCode);
- task.CurrentAddress = item.StationCode;
- task.NextAddress = router.NextPosi;
- task.PalletType = 1;
- task.PalletCode = conveyorLineInfoRead.PalletCode;
- task.Roadway = "SC02_CP";
- task.DeviceCode = router.ChildPosiDeviceCode;
- _taskService.UpdateTask(task, TaskStatusEnum.Line_Executing);
- WriteInfo(item.StationName, $"浠诲姟鍙穥conveyorLineInfoRead.TaskNo}涓嬩竴姝�");
}
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPC.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPC.cs"
index 28f4d66..a662580 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPC.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPC.cs"
@@ -82,7 +82,7 @@
if (task == null)
{
//鑾峰彇绔欏彴鐢熸垚浠诲姟
- WebResponseContent content = _taskService.RequestWMSTaskSimple("", item.StationCode);
+ WebResponseContent content = _taskService.RequestWMSTaskSimple("", item.StationCode,taskType:TaskTypeEnum.InProduct.ObjToInt());
if (content.Status)
{
Dt_Task taskNew = _taskRepository.QueryFirst(x => x.SourceAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && (x.TaskState == TaskStatusEnum.New.ObjToInt()));
@@ -94,9 +94,18 @@
Thread.Sleep(1000);
}
}
+ if (conveyorLineInfoRead != null && conveyorLineInfoRead.StatusPV == 2 && conveyorLineInfoRead.Command == 10)
+ {
+ item.IsOccupied = 0;
+ }
+ else
+ {
+ item.IsOccupied = 1;
+ }
}
}
+ _stationMangerRepository.UpdateData(stationMangers);
}
return Task.CompletedTask;
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPH.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPH.cs"
index 742eb6b..2f9369c 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPH.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPH.cs"
@@ -1,5 +1,6 @@
锘縰sing Microsoft.AspNetCore.Components.Routing;
using Newtonsoft.Json;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
using Quartz;
using SqlSugar.Extensions;
using System;
@@ -80,11 +81,24 @@
//鐮佸灈鐜嚎璇锋眰浠诲姟
if (conveyorLineInfoRead != null && (conveyorLineInfoRead.R_State == 2 || conveyorLineInfoRead.R_State == 3) && conveyorLineInfoRead.R_TaskNo <= 0 && !string.IsNullOrEmpty(conveyorLineInfoRead.R_BoxCode) && conveyorLineInfoRead.R_Request==1)
{
- WebResponseContent content = _taskService.RequestWMSTaskSimple(conveyorLineInfoRead.R_BoxCode, item.StationCode);
- //鍚慦MS璇锋眰浠诲姟
- if (true)
- {
+ //WebResponseContent content = _taskService.RequestWMSTaskSimple(conveyorLineInfoRead.R_BoxCode, item.StationCode);
+ ////鍚慦MS璇锋眰浠诲姟
+ //if (true)
+ //{
+ //}
+ if (conveyorLineInfoRead.R_BoxCode=="1")
+ {
+ int taskNum = Convert.ToInt32(DateTime.Now.ToString("ddHHmmss"));
+ WebResponseContent content = _taskService.RequestWMSTaskSimple(taskNum.ToString(), item.StationCode,taskType:TaskTypeEnum.ProductMD.ObjToInt(),taskNum: taskNum, targetAddress:"2554");
+ //璇锋眰浠诲姟
+ if (content.Status)
+ {
+ //鍐欏叆鍑哄簱绾夸綋鍦板潃
+ device.SetValue(W_CLineCPHDB.W_TaskNo, 5, item.StationCode);
+ device.SetValue(W_CLineCPHDB.W_TaskNo, taskNum, item.StationCode);
+ device.SetValue(W_ConveyorLineCPDB.W_Command, 1, item.StationCode);
+ }
}
}
}
@@ -94,16 +108,14 @@
//鑾峰彇鐮佸灈鍙d换鍔℃洿鏂颁换鍔$姸鎬�
if (conveyorLineInfoRead != null && (conveyorLineInfoRead.R_State == 2 || conveyorLineInfoRead.R_State == 3) && conveyorLineInfoRead.R_TaskNo > 0)
{
-
- }
- }
- else if (item.StationType == StationTypeEnum.StationType_InboundAndOutbound.ObjToInt() && deviceProRead != null)
- {
- R_CLineCPHInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_CLineCPHInfo>(deviceProRead.DeviceProAddress);
- //鐮佸灈鐜嚎鎺掑嚭鍙h姹傚彇娑堜换鍔�
- if (conveyorLineInfoRead != null && (conveyorLineInfoRead.R_State == 2 || conveyorLineInfoRead.R_State == 3) && conveyorLineInfoRead.R_TaskNo > 0 && conveyorLineInfoRead.R_Request == 2)
- {
-
+ Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == conveyorLineInfoRead.R_TaskNo && x.NextAddress==item.StationCode && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt());
+ if (task != null)
+ {
+ task.CurrentAddress = item.StationCode;
+ task.NextAddress = task.TargetAddress;
+ task.DeviceCode = item.StackerCraneCode;
+ _taskService.UpdateTask(task, TaskStatusEnum.MD_Executing);
+ }
}
}
else
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/RGVJob_CP.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/RGVJob_CP.cs"
index 7d9a407..b9bb207 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/RGVJob_CP.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/RGVJob_CP.cs"
@@ -78,66 +78,88 @@
W_RGVCPInfo rgvInfoWrite = device.Communicator.ReadCustomer<W_RGVCPInfo>(deviceProWrite.DeviceProAddress);
if ((rgvInfoRead.Mode == 5 || rgvInfoRead.Mode == 4) && rgvInfoRead.State == 0 && rgvInfoRead.TaskDone==1)
{
+ //鑾峰彇浠诲姟 鏄惁鏈塕GV鎵ц鐨勪换鍔�
List<Dt_Task> tasks = _taskRepository.QueryData(x => _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState != TaskStatusEnum.RGV_Execute.ObjToInt() && x.DeviceCode == device.DeviceCode);
- //鑾峰彇浠诲姟
+
Dt_Task? task1 = tasks.FirstOrDefault(x => x.HeightType == 1);
Dt_Task? task2 = tasks.FirstOrDefault(x => x.HeightType == 2);
Dt_Task? task3 = tasks.FirstOrDefault(x => x.HeightType == 3);
List<Dt_Task> tasksDown = _taskRepository.QueryData(x => _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.RGV_Execute.ObjToInt() && x.DeviceCode == device.DeviceCode).OrderBy(x=>x.CreateDate).Take(3).ToList();
- //鍒嗛厤RGV宸ヤ綅浠诲姟
- if (tasksDown.Count>=2)
+ if (tasksDown.Count>0)
{
- device.SetValue(W_RgvCPDB.TaskType, 4);
- //鍗犵敤涓や釜宸ヤ綅
- if (tasksDown.Count==2)
+ bool ReceivedDone = false;
+ //鍒嗛厤RGV宸ヤ綅浠诲姟鍗犵敤涓�涓伐浣�
+ if (tasksDown.Count == 1)
{
- device.SetValue(W_RgvCPDB.WorkStation, 4);
if (task1 == null)
{
+ //涓嬪彂鎵ц宸ヤ綅
+ device.SetValue(W_RgvCPDB.WorkStation, 1);
device.SetValue(W_RgvCPDB.WcsTask1, tasksDown[0].TaskNum);
device.SetValue(W_RgvCPDB.Qu1, tasksDown[0].CurrentAddress);
device.SetValue(W_RgvCPDB.Fang1, tasksDown[0].NextAddress);
tasksDown[0].HeightType = 1;
_taskService.UpdateTask(tasksDown[0], TaskStatusEnum.RGV_Executing);
+ Thread.Sleep(100);
+ ReceivedDone=true;
}
- if (task2 == null)
+ }
+ else if (tasksDown.Count == 2)//鍗犵敤涓や釜宸ヤ綅
+ {
+
+ if (task1 == null && task2 == null)
{
+ //涓嬪彂鎵ц宸ヤ綅
+ device.SetValue(W_RgvCPDB.WorkStation, 4);
+
+ device.SetValue(W_RgvCPDB.WcsTask1, tasksDown[0].TaskNum);
+ device.SetValue(W_RgvCPDB.Qu1, tasksDown[0].CurrentAddress);
+ device.SetValue(W_RgvCPDB.Fang1, tasksDown[0].NextAddress);
+ tasksDown[0].HeightType = 1;
+ _taskService.UpdateTask(tasksDown[0], TaskStatusEnum.RGV_Executing);
+ Thread.Sleep(100);
device.SetValue(W_RgvCPDB.WcsTask2, tasksDown[1].TaskNum);
device.SetValue(W_RgvCPDB.Qu2, tasksDown[1].CurrentAddress);
device.SetValue(W_RgvCPDB.Fang2, tasksDown[1].NextAddress);
tasksDown[1].HeightType = 2;
_taskService.UpdateTask(tasksDown[1], TaskStatusEnum.RGV_Executing);
+ Thread.Sleep(100);
+ ReceivedDone = true;
}
}
else //鍗犵敤涓変釜宸ヤ綅
{
- device.SetValue(W_RgvCPDB.WorkStation, 7);
- if ( task1 == null)
+ if (task1 == null && task2 == null && task3 == null)
{
+ //涓嬪彂鎵ц宸ヤ綅
+ device.SetValue(W_RgvCPDB.WorkStation, 7);
+
device.SetValue(W_RgvCPDB.WcsTask1, tasksDown[0].TaskNum);
device.SetValue(W_RgvCPDB.Qu1, tasksDown[0].CurrentAddress);
device.SetValue(W_RgvCPDB.Fang1, tasksDown[0].NextAddress);
tasksDown[0].HeightType = 1;
_taskService.UpdateTask(tasksDown[0], TaskStatusEnum.RGV_Executing);
- }
- if (task2 == null)
- {
+ Thread.Sleep(100);
device.SetValue(W_RgvCPDB.WcsTask2, tasksDown[1].TaskNum);
device.SetValue(W_RgvCPDB.Qu2, tasksDown[1].CurrentAddress);
device.SetValue(W_RgvCPDB.Fang2, tasksDown[1].NextAddress);
tasksDown[1].HeightType = 2;
_taskService.UpdateTask(tasksDown[1], TaskStatusEnum.RGV_Executing);
- }
- if (task3 == null)
- {
+ Thread.Sleep(100);
device.SetValue(W_RgvCPDB.WcsTask3, tasksDown[2].TaskNum);
device.SetValue(W_RgvCPDB.Qu3, tasksDown[2].CurrentAddress);
device.SetValue(W_RgvCPDB.Fang3, tasksDown[2].NextAddress);
tasksDown[2].HeightType = 3;
_taskService.UpdateTask(tasksDown[2], TaskStatusEnum.RGV_Executing);
+ Thread.Sleep(100);
+ ReceivedDone = true;
}
}
- device.SetValue(W_RgvCPDB.TaskReceivedDone, 1);
+ if (ReceivedDone)
+ {
+ device.SetValue(W_RgvCPDB.TaskType, 4);
+ device.SetValue(W_RgvCPDB.TaskReceivedDone, 1);
+ }
}
}
else if((rgvInfoRead.Mode == 5 || rgvInfoRead.Mode == 4) && rgvInfoRead.TaskDone == 3)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/StackerCraneJob_CP.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/StackerCraneJob_CP.cs"
index 789ddf7..35e320b 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/StackerCraneJob_CP.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/StackerCraneJob_CP.cs"
@@ -60,22 +60,26 @@
commonStackerCrane.CheckStackerCraneTaskCompleted();//闃叉浠诲姟瀹屾垚浜嬩欢鐩戞祴瓒呮椂锛屽啀鎵嬪姩瑙﹀彂涓�娆�
if (commonStackerCrane.StackerCraneAutoStatusValue == StackerCraneAutoStatus.Automatic && commonStackerCrane.StackerCraneStatusValue == StackerCraneStatus.Normal && commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.Standby)
{
- Dt_Task? task = GetTask(commonStackerCrane);
- if (task != null)
+ short stackerError = commonStackerCrane.Communicator.Read<short>("DB1000.54.0");
+ if (stackerError == 0)
{
- StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task);
- if (stackerCraneTaskCommand != null)
+ Dt_Task? task = GetTask(commonStackerCrane);
+ if (task != null)
{
- bool sendFlag = commonStackerCrane.SendCommand(stackerCraneTaskCommand);
- if (sendFlag)
+ StackerCraneTaskCommand? stackerCraneTaskCommand = ConvertToStackerCraneTaskCommand(task);
+ if (stackerCraneTaskCommand != null)
{
- commonStackerCrane.LastTaskType = task.TaskType;
- task.Dispatchertime = DateTime.Now;
- task.ExceptionMessage = "";
- _taskService.UpdateTask(task, TaskStatusEnum.SC_Executing);
- commonStackerCrane.Communicator.Write("DB1000.20.0", true);
- //寤舵椂1s
- Thread.Sleep(1000);
+ bool sendFlag = commonStackerCrane.SendCommand(stackerCraneTaskCommand);
+ if (sendFlag)
+ {
+ commonStackerCrane.LastTaskType = task.TaskType;
+ task.Dispatchertime = DateTime.Now;
+ task.ExceptionMessage = "";
+ _taskService.UpdateTask(task, TaskStatusEnum.SC_Executing);
+ commonStackerCrane.Communicator.Write("DB1000.20.0", true);
+ //寤舵椂1s
+ Thread.Sleep(1000);
+ }
}
}
}
@@ -112,7 +116,7 @@
{
try
{
- Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == taskNum);
+ Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == taskNum && x.TaskState==TaskStatusEnum.SC_Executing.ObjToInt());
if (task != null)
{
if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
@@ -131,13 +135,14 @@
WriteError(deviceCode, $"鏈壘鍒拌矾鐢变俊鎭�,{task.NextAddress}");
return WebResponseContent.Instance.Error($"鏈壘鍒拌矾鐢变俊鎭�,{task.NextAddress}");
}
+ //鍫嗗灈鏈哄畬鎴愬畬鎴�
int oldStatus = task.TaskState;
task.DeviceCode = stationManger.StationDeviceCode;
task.TaskState = TaskStatusEnum.Line_Execute.ObjToInt();
task.CurrentAddress = stationManger.StationCode;
task.NextAddress = router.NextPosi;
_taskService.UpdateTask(task, TaskStatusEnum.Line_Execute);
- //todo 鍫嗗灈鏈哄畬鎴愬畬鎴�
+
//_taskService.UpdateTask(task, TaskStatusEnum.Line_Execute, deviceCode: stationManger.StationDeviceCode, currentAddress: stationManger.StationCode, nextAddress: router.NextPosi, targetAddress: router.NextPosi);
_taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"绯荤粺鑷姩娴佺▼,浠诲姟鐘舵�佷粠銆恵oldStatus}銆戣浆鍒般�恵task.TaskState}銆�");
WriteInfo(deviceCode, $"鍫嗗灈鏈轰换鍔″畬鎴�,浠诲姟鍙�:{taskNum}");
@@ -186,6 +191,7 @@
{
if (commonStackerCrane.LastTaskType.GetValueOrDefault().GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
{
+ //涓婁竴涓负鍑哄簱鍒欐煡鏄惁瀛樺湪鍏ュ簱浠诲姟 浜ゆ浛鎵ц
task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
if (task == null)
{
@@ -194,6 +200,7 @@
}
else
{
+ //涓婁竴涓负鍏ュ簱鍒欐煡鏄惁瀛樺湪鍑哄簱浠诲姟 浜ゆ浛鎵ц
task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode);
if (task == null)
{
@@ -204,6 +211,7 @@
if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
{
+ //鍒ゆ柇鍑哄簱绔欏彴鍗犵敤
if (OutTaskStationIsOccupied(task) == null)
{
bool flag = false;
@@ -234,7 +242,7 @@
/// <returns>濡傛灉鏈鍗犵敤锛岃繑鍥炰紶鍏ョ殑浠诲姟淇℃伅锛屽惁鍒欙紝杩斿洖null</returns>
private Dt_Task? OutTaskStationIsOccupied([NotNull] Dt_Task task)
{
- Dt_StationManger? stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == task.NextAddress && x.StackerCraneCode == task.DeviceCode);
+ Dt_StationManger? stationManger = _stationMangerRepository.QueryFirst(x => (x.StationCode == task.NextAddress) && x.StackerCraneCode == task.DeviceCode);
if (stationManger != null)
{
IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManger.StationDeviceCode);
@@ -303,7 +311,7 @@
return null;
}
}
- else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+ else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)//鍒ゆ柇鏄惁鏄嚭搴撲换鍔�
{
string[] targetCodes = task.NextAddress.Split("-");
if (targetCodes.Length == 3)
@@ -332,7 +340,7 @@
return null;
}
}
- else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
+ else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)//鍒ゆ柇鏄惁鏄Щ搴撲换鍔�
{
string[] targetCodes = task.NextAddress.Split("-");
if (targetCodes.Length == 5)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\216\245\351\251\263\345\217\260/CoveryorJobYL.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\216\245\351\251\263\345\217\260/CoveryorJobYL.cs"
new file mode 100644
index 0000000..f4e1ec9
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\216\245\351\251\263\345\217\260/CoveryorJobYL.cs"
@@ -0,0 +1,116 @@
+锘縰sing Microsoft.AspNetCore.Components.Routing;
+using Newtonsoft.Json;
+using Quartz;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection.Metadata;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Common.Helper;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Communicator;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_IBasicInfoRepository;
+using WIDESEAWCS_ITaskInfoRepository;
+using WIDESEAWCS_ITaskInfoService;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.ConveyorLine.Enum;
+using WIDESEAWCS_QuartzJob.DTO;
+using WIDESEAWCS_QuartzJob.Models;
+using WIDESEAWCS_QuartzJob.Repository;
+using WIDESEAWCS_QuartzJob.Service;
+using WIDESEAWCS_Tasks.ConveyorLineJob;
+using WIDESEAWCS_Tasks.DBNames;
+using ICacheService = WIDESEAWCS_Core.Caches.ICacheService;
+
+namespace WIDESEAWCS_Tasks
+{
+ [DisallowConcurrentExecution]
+ public class CoveryorJobYL : JobBase, IJob
+ {
+ private readonly ICacheService _cacheService;
+ private readonly ITaskService _taskService;
+ private readonly ITaskExecuteDetailService _taskExecuteDetailService;
+ private readonly ITaskRepository _taskRepository;
+ private readonly IStationMangerRepository _stationMangerRepository;
+ private readonly IRouterRepository _routerRepository;
+ private readonly IRouterService _routerService;
+ private readonly IRouterExtension _routerExtension;
+ private readonly List<Dt_WarehouseDevice> warehouseDevices;
+
+ public CoveryorJobYL(ICacheService cacheService, ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IRouterService routerService, IRouterExtension routerExtension)
+ {
+ _cacheService = cacheService;
+ _taskService = taskService;
+ _taskExecuteDetailService = taskExecuteDetailService;
+ _taskRepository = taskRepository;
+ _stationMangerRepository = stationMangerRepository;
+ _routerRepository = routerRepository;
+ _routerService = routerService;
+ _routerExtension = routerExtension;
+
+ string? warehouseDevicesStr = _cacheService.Get<string>(nameof(Dt_WarehouseDevice));
+ if (!string.IsNullOrEmpty(warehouseDevicesStr))
+ {
+ warehouseDevices = JsonConvert.DeserializeObject<List<Dt_WarehouseDevice>>(warehouseDevicesStr) ?? new List<Dt_WarehouseDevice>();
+ }
+ else
+ {
+ warehouseDevices = new List<Dt_WarehouseDevice>();
+ }
+ }
+
+ public Task Execute(IJobExecutionContext context)
+ {
+ bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
+ if (flag && value != null)
+ {
+ OtherDevice device = (OtherDevice)value;
+ List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode);
+ foreach (var item in stationMangers)
+ {
+ //鑾峰彇鍗忚
+ DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationDeviceCode && x.DeviceProParamType == nameof(CoveryorDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+ if (deviceProRead != null)
+ {
+ bool RequestTake = device.GetValue<CoveryorDB, bool>(CoveryorDB.C_RequestTake, item.StationDeviceCode);
+ int OutTaskNum = device.GetValue<CoveryorDB, int>(CoveryorDB.C_OutTaskNum, item.StationDeviceCode);
+ if (RequestTake && OutTaskNum>0) //涓�妤煎嚭搴撶敵璇�
+ {
+ //鑾峰彇褰撳墠浠诲姟
+ Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum ==OutTaskNum && x.NextAddress == item.StationCode && _taskService.TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt());
+ if (task != null)
+ {
+ //鍒嗛厤宸烽亾 瀛樺叆鎵樼洏鏁版嵁
+ List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == task.TaskType && task.NextAddress == x.StartPosi);
+ Dt_Router router = routers.FirstOrDefault();
+ if (router == null)
+ {
+ WriteError(item.StationName, $"浠诲姟鍙�:{task.TaskNum}鏈壘鍒拌矾鐢遍厤缃俊鎭�");
+ return Task.CompletedTask;
+ }
+ device.SetValue(CoveryorDB.C_OutResponse, true, item.StationDeviceCode);
+ //鏇存柊浠诲姟淇℃伅
+ task.CurrentAddress = router.StartPosi;
+ task.NextAddress = task.TargetAddress;
+ task.DeviceCode = router.NextPosi;
+ _taskService.UpdateTask(task, TaskStatusEnum.AGV_Execute);
+ WriteInfo(item.StationName, $"浠诲姟鍙穥OutTaskNum}鎺ラ┏鍙板嚭搴�");
+ }
+ }
+
+ }
+ else
+ {
+ WriteError(item.StationName, $"鏈壘鍒拌澶囧瓙缂栧彿{item.StationCode}鐨勫崗璁俊鎭�");
+ }
+ }
+ }
+ return Task.CompletedTask;
+ }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\347\240\201\345\236\233/MDJob_CP.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\347\240\201\345\236\233/MDJob_CP.cs"
new file mode 100644
index 0000000..7551321
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\347\240\201\345\236\233/MDJob_CP.cs"
@@ -0,0 +1,165 @@
+锘縰sing Microsoft.AspNetCore.Components.Routing;
+using Newtonsoft.Json;
+using Quartz;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection.Metadata;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Common;
+using WIDESEAWCS_Common.Helper;
+using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_Communicator;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_IBasicInfoRepository;
+using WIDESEAWCS_ITaskInfoRepository;
+using WIDESEAWCS_ITaskInfoService;
+using WIDESEAWCS_Model.Models;
+using WIDESEAWCS_QuartzJob;
+using WIDESEAWCS_QuartzJob.ConveyorLine.Enum;
+using WIDESEAWCS_QuartzJob.DTO;
+using WIDESEAWCS_QuartzJob.Models;
+using WIDESEAWCS_QuartzJob.Repository;
+using WIDESEAWCS_QuartzJob.Service;
+using WIDESEAWCS_Tasks.ConveyorLineJob;
+using WIDESEAWCS_Tasks.DBNames;
+using ICacheService = WIDESEAWCS_Core.Caches.ICacheService;
+
+namespace WIDESEAWCS_Tasks
+{
+ [DisallowConcurrentExecution]
+ public class MDJob_CP : JobBase, IJob
+ {
+ private readonly ICacheService _cacheService;
+ private readonly ITaskService _taskService;
+ private readonly ITaskExecuteDetailService _taskExecuteDetailService;
+ private readonly ITaskRepository _taskRepository;
+ private readonly IStationMangerRepository _stationMangerRepository;
+ private readonly IRouterRepository _routerRepository;
+ private readonly IRouterService _routerService;
+ private readonly IRouterExtension _routerExtension;
+ private readonly List<Dt_WarehouseDevice> warehouseDevices;
+
+ public MDJob_CP(ICacheService cacheService, ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IRouterService routerService, IRouterExtension routerExtension)
+ {
+ _cacheService = cacheService;
+ _taskService = taskService;
+ _taskExecuteDetailService = taskExecuteDetailService;
+ _taskRepository = taskRepository;
+ _stationMangerRepository = stationMangerRepository;
+ _routerRepository = routerRepository;
+ _routerService = routerService;
+ _routerExtension = routerExtension;
+
+ string? warehouseDevicesStr = _cacheService.Get<string>(nameof(Dt_WarehouseDevice));
+ if (!string.IsNullOrEmpty(warehouseDevicesStr))
+ {
+ warehouseDevices = JsonConvert.DeserializeObject<List<Dt_WarehouseDevice>>(warehouseDevicesStr) ?? new List<Dt_WarehouseDevice>();
+ }
+ else
+ {
+ warehouseDevices = new List<Dt_WarehouseDevice>();
+ }
+ }
+
+ public Task Execute(IJobExecutionContext context)
+ {
+ bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
+ if (flag && value != null)
+ {
+ OtherDevice device = (OtherDevice)value;
+ List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StackerCraneCode == device.DeviceCode);
+ foreach (var item in stationMangers)
+ {
+ //鑾峰彇鍗忚
+ DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StackerCraneCode && x.DeviceProParamType == nameof(R_MDDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+ DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StackerCraneCode && x.DeviceProParamType == nameof(W_MDDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+ if (deviceProRead != null && deviceProWrite != null && item.IsOccupied==0)
+ {
+ short Allow = device.GetValue<R_MDDB, short>(R_MDDB.R_MDAllow, item.StackerCraneCode);
+ short R_MDStatus1 = device.GetValue<R_MDDB, short>(R_MDDB.R_MDStatus1, item.StackerCraneCode);
+ short R_MDStatus2 = device.GetValue<R_MDDB, short>(R_MDDB.R_MDStatus2, item.StackerCraneCode);
+ short R_MDStatus3 = device.GetValue<R_MDDB, short>(R_MDDB.R_MDStatus3, item.StackerCraneCode);
+ short R_MDStatus4 = device.GetValue<R_MDDB, short>(R_MDDB.R_MDStatus4, item.StackerCraneCode);
+ short R_MDQtys1 = device.GetValue<R_MDDB, short>(R_MDDB.R_MDQtys1, item.StackerCraneCode);
+ short R_MDQtys2 = device.GetValue<R_MDDB, short>(R_MDDB.R_MDQtys2, item.StackerCraneCode);
+ short R_MDQtys3 = device.GetValue<R_MDDB, short>(R_MDDB.R_MDQtys3, item.StackerCraneCode);
+ short R_MDQtys4 = device.GetValue<R_MDDB, short>(R_MDDB.R_MDQtys4, item.StackerCraneCode);
+ if (R_MDStatus1 == 1 || R_MDStatus2 == 1 || R_MDStatus3 == 1 || R_MDStatus4 == 1)
+ {
+ Thread.Sleep(500);
+ device.Communicator.Write<short>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == W_MDDB.W_MDReceiveDone.ToString()).DeviceProDataBlock, 0);
+ }
+ //鑾峰彇褰撳墠浠诲姟
+ Dt_Task task = _taskRepository.QueryData(x => x.NextAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.MD_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode).OrderBy(x=>x.TaskNum).First();
+ if (task!=null) //鐮佸灈鐢宠
+ {
+ if ((Allow==3 || Allow == 7)&& item.StackerCraneStationCode == "1")
+ {
+ if ( R_MDQtys1 / 6 ==1)
+ {
+ device.Communicator.Write<float>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == W_MDDB.W_MDZ.ToString()).DeviceProDataBlock, 400);
+ }
+ else if (R_MDQtys1 / 6 == 2)
+ {
+ device.Communicator.Write<float>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == W_MDDB.W_MDZ.ToString()).DeviceProDataBlock, 800);
+ }
+ else
+ {
+ device.Communicator.Write<float>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == W_MDDB.W_MDZ.ToString()).DeviceProDataBlock, 0);
+ }
+ device.Communicator.Write<short>(device.DeviceProDTOs.FirstOrDefault(x=>x.DeviceProParamName== W_MDDB.W_MDSend1.ToString()).DeviceProDataBlock,1);
+ device.Communicator.Write<short>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == W_MDDB.W_MDSendID.ToString()).DeviceProDataBlock, 1);
+ if (R_MDQtys1 % 6==0)
+ {
+ device.Communicator.Write<float>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == W_MDDB.W_MDX.ToString()).DeviceProDataBlock, 1675);
+ device.Communicator.Write<float>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == W_MDDB.W_MDY.ToString()).DeviceProDataBlock, 1137);
+ }
+ else if (R_MDQtys1 % 6 == 1)
+ {
+ device.Communicator.Write<float>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == W_MDDB.W_MDX.ToString()).DeviceProDataBlock, 1675);
+ device.Communicator.Write<float>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == W_MDDB.W_MDY.ToString()).DeviceProDataBlock, 1462);
+ }
+ else if (R_MDQtys1 % 6 == 2)
+ {
+ device.Communicator.Write<float>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == W_MDDB.W_MDX.ToString()).DeviceProDataBlock, 1675);
+ device.Communicator.Write<float>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == W_MDDB.W_MDY.ToString()).DeviceProDataBlock, 1787);
+ }
+ else if (R_MDQtys1 % 6 == 3)
+ {
+ device.Communicator.Write<float>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == W_MDDB.W_MDX.ToString()).DeviceProDataBlock, 1250);
+ device.Communicator.Write<float>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == W_MDDB.W_MDY.ToString()).DeviceProDataBlock, 1137);
+ }
+ else if (R_MDQtys1 % 6 == 4)
+ {
+ device.Communicator.Write<float>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == W_MDDB.W_MDX.ToString()).DeviceProDataBlock, 1250);
+ device.Communicator.Write<float>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == W_MDDB.W_MDY.ToString()).DeviceProDataBlock, 1462);
+ }
+ else if (R_MDQtys1 % 6 == 5)
+ {
+ device.Communicator.Write<float>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == W_MDDB.W_MDX.ToString()).DeviceProDataBlock, 1250);
+ device.Communicator.Write<float>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == W_MDDB.W_MDY.ToString()).DeviceProDataBlock, 1787);
+ }
+ device.Communicator.Write<float>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == W_MDDB.W_MDA.ToString()).DeviceProDataBlock, 1);
+ device.Communicator.Write<short>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == W_MDDB.W_MDReceiveDone.ToString()).DeviceProDataBlock, 3);
+ //鏇存柊浠诲姟淇℃伅
+ //_taskService.TaskCompleted(task.TaskNum);
+ task.TaskState = TaskStatusEnum.Finish.ObjToInt();
+ _taskRepository.UpdateData(task);
+ Thread.Sleep(1500);
+ WriteInfo(item.StationName, $"浠诲姟鍙穥task.TaskNum}鐮佸灈");
+ }
+ }
+ }
+ else
+ {
+ WriteError(item.StationName, $"鏈壘鍒拌澶囧瓙缂栧彿{item.StationCode}鐨勫崗璁俊鎭�");
+ }
+ }
+ }
+ return Task.CompletedTask;
+ }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicService/Service/LocationInfoService_Common.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicService/Service/LocationInfoService_Common.cs"
index b4f28e1..c3e5351 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicService/Service/LocationInfoService_Common.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_BasicService/Service/LocationInfoService_Common.cs"
@@ -25,7 +25,9 @@
{
public partial class LocationInfoService
{
-
+ /// <summary>
+ /// 鍒嗛厤璐т綅
+ /// </summary>
public Dt_LocationInfo? AssignLocation(string roadwayNo, int palletType, int warehouseId, string beRelocationCode = "", int heightType = 0)
{
Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == warehouseId);
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/TaskEnum/TaskStatusEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/TaskEnum/TaskStatusEnum.cs"
index d48c3fa..eabcb6e 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/TaskEnum/TaskStatusEnum.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/TaskEnum/TaskStatusEnum.cs"
@@ -37,33 +37,17 @@
SC_Finish = 220,
/// <summary>
- /// 杈撻�佺嚎寰呮墽琛�
- /// </summary>
- [Description("杈撻�佺嚎寰呮墽琛�")]
- Line_Execute = 400,
-
- /// <summary>
- /// 杈撻�佺嚎鎵ц涓�
- /// </summary>
- [Description("杈撻�佺嚎鎵ц涓�")]
- Line_Executing = 410,
-
- /// <summary>
- /// 杈撻�佺嚎瀹屾垚
- /// </summary>
- [Description("杈撻�佺嚎瀹屾垚")]
- Line_Finish = 420,
-
- /// <summary>
/// AGV寰呮墽琛�
/// </summary>
[Description("AGV寰呮墽琛�")]
AGV_Execute = 300,
+
/// <summary>
- /// AGV鍙栬揣涓�
+ /// AGV鍙栬揣瀹屾垚
/// </summary>
- [Description("AGV鍙栬揣涓�")]
- AGV_Takeing =305,
+ [Description("AGV鍙栬揣瀹屾垚")]
+ AGV_TakeFinish = 305,
+
/// <summary>
/// AGV鎵ц涓�
/// </summary>
@@ -88,6 +72,41 @@
AGV_Finish = 330,
/// <summary>
+ /// 杈撻�佺嚎寰呮墽琛�
+ /// </summary>
+ [Description("杈撻�佺嚎寰呮墽琛�")]
+ Line_Execute = 400,
+
+ /// <summary>
+ /// 杈撻�佺嚎鎵ц涓�
+ /// </summary>
+ [Description("杈撻�佺嚎鎵ц涓�")]
+ Line_Executing = 410,
+
+ /// <summary>
+ /// 杈撻�佺嚎瀹屾垚
+ /// </summary>
+ [Description("杈撻�佺嚎瀹屾垚")]
+ Line_Finish = 420,
+
+ /// <summary>
+ /// RGV寰呮墽琛�
+ /// </summary>
+ [Description("RGV寰呮墽琛�")]
+ RGV_Execute = 500,
+ /// <summary>
+ /// RGV鎵ц涓�
+ /// </summary>
+ [Description("RGV鎵ц涓�")]
+ RGV_Executing = 510,
+
+ /// <summary>
+ /// 鐮佸灈鎵ц涓�
+ /// </summary>
+ [Description("鐮佸灈鎵ц涓�")]
+ MD_Executing = 520,
+
+ /// <summary>
/// 浠诲姟瀹屾垚
/// </summary>
[Description("浠诲姟瀹屾垚")]
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs"
index 2cd97a0..a52ade1 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs"
@@ -80,21 +80,37 @@
/// </summary>
[Description("鎴愬搧MES鎻愬簱")]
OutMesRworkProduct =250,
+
+ /// <summary>
+ /// 鍗板埛鍑哄簱
+ /// </summary>
+ [Description("鍗板埛鍑哄簱")]
+ PrintOutbound = 310,
+
+ /// <summary>
+ /// 鏃犵汉甯冨嚭搴�
+ /// </summary>
+ [Description("鏃犵汉甯冨嚭搴�")]
+ OutWFB = 320,
+
/// <summary>
/// 閲囪喘鍏ュ簱
/// </summary>
[Description("閲囪喘鍏ュ簱")]
Inbound = 510,
+
/// <summary>
/// 鐩樼偣鍏ュ簱
/// </summary>
[Description("鐩樼偣鍏ュ簱")]
InInventory = 520,
+
/// <summary>
/// 鍒嗘嫞鍏ュ簱
/// </summary>
[Description("鍒嗘嫞鍏ュ簱")]
InPick = 530,
+
/// <summary>
/// 璐ㄦ鍏ュ簱
/// </summary>
@@ -155,6 +171,24 @@
EmptyProductBack = 630,
/// <summary>
+ /// 鎴愬搧鐮佸灈
+ /// </summary>
+ [Description("鎴愬搧鐮佸灈")]
+ ProductMD = 640,
+
+ /// <summary>
+ /// 鍗板埛鍗婃垚鍝佸叆搴�
+ /// </summary>
+ [Description("鍗板埛鍗婃垚鍝佸叆搴�")]
+ PrintInbound = 710,
+
+ /// <summary>
+ /// 鍗板埛鍘熸枡浣欐枡閫�搴�
+ /// </summary>
+ [Description("鍗板埛鍘熸枡浣欐枡閫�搴�")]
+ PrintBackInbound = 720,
+
+ /// <summary>
/// 宸烽亾鍐呯Щ搴�
/// </summary>
[Description("宸烽亾鍐呯Щ搴�")]
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs"
index 238ea19..856fcba 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs"
@@ -167,6 +167,14 @@
/// <param name="Count"></param>
/// <returns></returns>
WebResponseContent RequestCPWMSTaskOut(int Count);
+
+ /// <summary>
+ /// 鏃犵汉甯冨嚭搴�
+ /// </summary>
+ /// <param name="Count"></param>
+ /// <returns></returns>
+ WebResponseContent RequestWFBWMSTaskOut(int Count);
+
/// <summary>
/// 鍘熸枡鍑哄簱浠诲姟
/// </summary>
@@ -174,8 +182,38 @@
/// <param name="materielWide">鐗╂枡骞呭</param>
/// <param name="Count">鍗锋暟</param>
/// <returns></returns>
- WebResponseContent RequestYLWMSTaskOut(string materielCode, int materielWide, int Count);
+ WebResponseContent RequestYLWMSTaskOut(string materielCode, int materielWide, int Count, string address = "");
+ /// <summary>
+ /// 鍘熸枡绉诲簱
+ /// </summary>
+ /// <param name="startAddress"></param>
+ /// <param name="endAddress"></param>
+ /// <param name="roadWay"></param>
+ /// <returns></returns>
WebResponseContent IsRelocation(string startAddress, string endAddress, string roadWay);
+ /// <summary>
+ /// 鍘熸枡宸烽亾闂寸Щ搴撲换鍔�
+ /// </summary>
+ WebResponseContent RelocationRoadWay(string roadWay,int Count);
+
+ /// <summary>
+ /// 鍒嗛厤宸烽亾
+ /// </summary>
+ /// <returns></returns>
+ string AssignCPRoadwayNo();
+ /// <summary>
+ /// 鍗板埛浣欐枡閫�鏂欎换鍔�
+ /// </summary>
+ /// <param name="saveModel"></param>
+ /// <returns></returns>
+ WebResponseContent PrintBackInbound(SaveModel saveModel);
+
+ /// <summary>
+ /// 鍗板埛涓嬫枡浠诲姟
+ /// </summary>
+ /// <param name="saveModel"></param>
+ /// <returns></returns>
+ WebResponseContent PrintInbound(SaveModel saveModel);
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Stock/Dt_ProCache.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Stock/Dt_ProCache.cs"
index ab93e6a..2f61471 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Stock/Dt_ProCache.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Stock/Dt_ProCache.cs"
@@ -45,6 +45,18 @@
public string MdQtys { get; set; }
/// <summary>
+ /// 鐮佸灈涓暟閲忥紙鍚凡鐮佸灈锛�
+ /// </summary>
+ [SugarColumn(IsNullable = false, ColumnDescription = "鐮佸灈涓暟閲�")]
+ public string MdingQtys { get; set; }
+
+ /// <summary>
+ /// 鐮佸灈缁撴墭鏁伴噺
+ /// </summary>
+ [SugarColumn(IsNullable = false, ColumnDescription = "鐮佸灈缁撴墭鏁伴噺")]
+ public string MdEndQtys { get; set; }
+
+ /// <summary>
/// 鍗曞彿
/// </summary>
[SugarColumn(IsNullable = true, Length = 30, ColumnDescription = "鍗曞彿")]
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Completed.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Completed.cs"
index 1ddd8a0..eb453f5 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Completed.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Completed.cs"
@@ -98,10 +98,14 @@
Dt_Task wmsTask = BaseDal.QueryFirst(x=>x.TaskNum == task.TaskNum);
if (wmsTask != null)
{
+ wmsTask.PalletCode= task.PalletCode;
+ wmsTask.Roadway = task.Roadway;
wmsTask.TaskStatus = task.TaskState;
wmsTask.CurrentAddress = task.CurrentAddress;
wmsTask.NextAddress = task.NextAddress;
wmsTask.Dispatchertime = task.Dispatchertime;
+ wmsTask.TaskType = task.TaskType;
+ wmsTask.TargetAddress = task.TargetAddress;
BaseDal.UpdateData(wmsTask);
}
return WebResponseContent.Instance.OK();
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
index 16142da..1f7d0db 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
@@ -10,6 +10,7 @@
using System.Threading.Tasks;
using WIDESEA_Common.CommonEnum;
using WIDESEA_Common.LocationEnum;
+using WIDESEA_Common.MaterielEnum;
using WIDESEA_Common.OrderEnum;
using WIDESEA_Common.StockEnum;
using WIDESEA_Common.TaskEnum;
@@ -127,61 +128,78 @@
/// <returns></returns>
public WebResponseContent RequestYLWMSTaskSimple(string stationCode, string palletCode)
{
- Dt_Task task = Repository.QueryFirst(x => x.PalletCode == palletCode);
- if (task != null)
+ WebResponseContent content = new WebResponseContent();
+ try
{
- PushTasksToWCS(new List<Dt_Task> { task });
- return WebResponseContent.Instance.OK($"璇ユ墭鐩樺凡鐢熸垚浠诲姟", _mapper.Map<WMSTaskDTO>(task));
- }
+ Dt_Task task = Repository.QueryFirst(x => x.PalletCode == palletCode);
+ if (task != null)
+ {
+ PushTasksToWCS(new List<Dt_Task> { task });
+ return content.OK($"璇ユ墭鐩樺凡鐢熸垚浠诲姟", _mapper.Map<WMSTaskDTO>(task));
+ }
- if (Repository.QueryFirst(x => x.SourceAddress == stationCode && x.TaskStatus == TaskStatusEnum.New.ObjToInt()) != null)
- {
- return WebResponseContent.Instance.Error($"璇ョ珯鐐瑰凡鏈夋湭鎵ц鐨勪换鍔�");
- }
- Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == palletCode);
- if (stockInfo == null)
- {
- return WebResponseContent.Instance.Error($"鏈壘鍒扮粍鐩樹俊鎭�");
- }
- if (stockInfo.StockStatus != StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt())
- {
- return WebResponseContent.Instance.Error($"璇ユ墭鐩樼姸鎬佷笉姝g‘,涓嶅彲鐢宠鍏ュ簱");
- }
- string rowWay = AssignYLRoadwayNo(stockInfo.PalletCode);
- Dt_Task newTask = new Dt_Task()
- {
- CurrentAddress = stationCode,
- Grade = 0,
- NextAddress = "",
- PalletCode = palletCode,
- Roadway = rowWay,
- SourceAddress = stationCode,
- TargetAddress = "",
- TaskType = TaskTypeEnum.Inbound.ObjToInt(),
- TaskStatus = TaskStatusEnum.New.ObjToInt(),
- WarehouseId = stockInfo.WarehouseId,
- PalletType = stockInfo.PalletType,
- };
+ if (Repository.QueryFirst(x => x.SourceAddress == stationCode && x.TaskStatus == TaskStatusEnum.New.ObjToInt()) != null)
+ {
+ return content.Error($"璇ョ珯鐐瑰凡鏈夋湭鎵ц鐨勪换鍔�");
+ }
+ Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == palletCode);
+ if (stockInfo == null)
+ {
+ return content.Error($"鏈壘鍒扮粍鐩樹俊鎭�");
+ }
+ if (stockInfo.StockStatus != StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt())
+ {
+ return content.Error($"璇ユ墭鐩樼姸鎬佷笉姝g‘,涓嶅彲鐢宠鍏ュ簱");
+ }
+ string rowWay = AssignYLRoadwayNo(stockInfo.PalletCode);
+ if (string.IsNullOrEmpty(rowWay))
+ {
+ return content.Error($"鏈壘鍒板彲鍒嗛厤宸烽亾");
+ }
+ Dt_Task newTask = new Dt_Task()
+ {
+ CurrentAddress = stationCode,
+ Grade = 0,
+ NextAddress = "",
+ PalletCode = palletCode,
+ Roadway = rowWay,
+ SourceAddress = stationCode,
+ TargetAddress = "",
+ TaskType = TaskTypeEnum.Inbound.ObjToInt(),
+ TaskStatus = TaskStatusEnum.New.ObjToInt(),
+ WarehouseId = stockInfo.WarehouseId,
+ PalletType = stockInfo.PalletType,
+ };
- if (stockInfo.StockStatus == StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt())
- {
- stockInfo.StockStatus = StockStatusEmun.鎵嬪姩缁勭洏鍏ュ簱纭.ObjToInt();
+ if (stockInfo.StockStatus == StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt())
+ {
+ stockInfo.StockStatus = StockStatusEmun.鎵嬪姩缁勭洏鍏ュ簱纭.ObjToInt();
+ }
+ _unitOfWorkManage.BeginTran();
+ int taskId = BaseDal.AddData(newTask);
+ newTask.TaskId = taskId;
+ _stockRepository.StockInfoRepository.UpdateData(stockInfo);
+ _unitOfWorkManage.CommitTran();
+ PushTasksToWCS(new List<Dt_Task> { newTask });
+ WMSTaskDTO wMSTaskDTO = _mapper.Map<WMSTaskDTO>(newTask);
+ return content.OK(data: wMSTaskDTO);
}
- _unitOfWorkManage.BeginTran();
- int taskId = BaseDal.AddData(newTask);
- newTask.TaskId = taskId;
- _stockRepository.StockInfoRepository.UpdateData(stockInfo);
- _unitOfWorkManage.CommitTran();
- PushTasksToWCS(new List<Dt_Task> { newTask });
- WMSTaskDTO wMSTaskDTO = _mapper.Map<WMSTaskDTO>(newTask);
- return WebResponseContent.Instance.OK(data: wMSTaskDTO);
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ content.Error(ex.Message);
+ }
+ return content;
}
public string AssignYLRoadwayNo(string palletCode)
{
try
{
Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == palletCode);
-
+ if (stockInfo==null)
+ {
+ throw new Exception($"缁勭洏搴撳瓨涓嶅瓨鍦�");
+ }
Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == stockInfo.WarehouseId);
if (warehouse == null)
@@ -192,11 +210,11 @@
string roadwayNo = "";
if (stockInfo.MaterielThickness > 800)
{
- List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo.Contains("YL")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
+ List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo.Contains("YL")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
roadwayNo = locationCounts.OrderByDescending(x => x.Count).FirstOrDefault()?.RoadwayNo ?? "";
if (stockInfo.MaterielWide > 2200)
{
- locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && !x.RoadwayNo.Contains("SC01_YL")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
+ locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo=="SC02_YL").GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
roadwayNo = locationCounts.OrderByDescending(x => x.Count).FirstOrDefault()?.RoadwayNo ?? "";
}
}
@@ -223,7 +241,7 @@
{
return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑缁堢偣璐т綅淇℃伅");
}
- Dt_AGVStationInfo agvstation = _agvStationInfoRepository.QueryFirst(x => x.AGVStationCode == task.SourceAddress && x.StationArea == AGVStationAreaEnum.AreaA.ObjToInt());
+ Dt_AGVStationInfo agvstation = _agvStationInfoRepository.QueryFirst(x => x.AGVStationCode == task.SourceAddress && ( x.StationArea == AGVStationAreaEnum.AreaA.ObjToInt() || x.StationArea == AGVStationAreaEnum.AreaC.ObjToInt()));
if (agvstation != null)
{
agvstation.IsOccupied = WhetherEnum.False.ObjToInt();
@@ -261,8 +279,14 @@
{
return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑缁堢偣璐т綅淇℃伅");
}
+
task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
_unitOfWorkManage.BeginTran();
+ if (task.TaskType == TaskTypeEnum.InPick.ObjToInt())
+ {
+ Dt_LocationInfo locationInfoStart = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress);
+ _basicService.LocationInfoService.UpdateLocationStatus(locationInfoStart, stockInfo.PalletType, LocationStatusEnum.Free, stockInfo.WarehouseId);
+ }
stockInfo.LocationCode = locationInfoEnd.LocationCode;
stockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
_stockService.StockInfoService.Repository.UpdateData(stockInfo);
@@ -293,9 +317,8 @@
}
string roadwayNo = "";
- List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo.Contains("CP")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
-
- //鑾峰彇褰撳墠鍏ュ簱浠诲姟涓凡鍒嗛厤宸烽亾浠诲姟鏁伴噺
+ List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo.Contains("CP")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList();
+ //绛涢�夊綋鍓嶅叆搴撲换鍔′腑宸插垎閰嶅贩閬撲换鍔℃暟閲�
List<LocationCount> useLocationCounts = Db.Queryable<Dt_Task>().Where(x => x.WarehouseId == warehouse.WarehouseId
&& locationCounts.Select(j=>j.RoadwayNo).Contains(x.Roadway)
&& TaskInboundTypes.Contains(x.TaskType)).GroupBy(x => x.Roadway).Select(x => new LocationCount { RoadwayNo = x.Roadway, Count = SqlFunc.AggregateCount(x) }).ToList();
@@ -336,7 +359,7 @@
{
return WebResponseContent.Instance.OK(data: task.TargetAddress);
}
-
+ //鍒嗛厤璐т綅
Dt_LocationInfo? locationInfo = _basicService.LocationInfoService.AssignLocation(roadwayNo, task.PalletType, task.WarehouseId);
if (locationInfo == null)
{
@@ -356,7 +379,7 @@
LocationStatusEnum lastStatus = (LocationStatusEnum)locationInfo.LocationStatus;
-
+ //鏇存柊閿佸畾璐т綅
_unitOfWorkManage.BeginTran();
_recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, lastStatus, LocationStatusEnum.Lock, LocationChangeType.InboundAssignLocation);
_basicService.LocationInfoService.UpdateLocationStatus(locationInfo, task.PalletType, LocationStatusEnum.Lock, task.WarehouseId);
@@ -418,119 +441,6 @@
return WebResponseContent.Instance.Error(ex.Message);
}
}
- public readonly string[] OutStartPonits = { "5230", "5237", "5244" };
- /// <summary>
- /// 鎴愬搧浣欐枡閫�搴撳叆浠�
- /// </summary>
- /// <param name="barCode"></param>
- /// <param name="startPoint"></param>
- /// <returns></returns>
- //public WebResponseContent BackProductTask(string barCode, string startPoint)
- //{
- // WebResponseContent content = new WebResponseContent();
- // try
- // {
- // string palletCode = @"^C\d{5}$"; // 姝e垯琛ㄨ揪寮�
- // bool isValid = Regex.IsMatch(barCode, palletCode);
- // if (!isValid)
- // {
- // return content.Error($"妗嗙爜鏍煎紡閿欒{barCode}");
- // }
- // if (!OutStartPonits.Contains(startPoint))
- // {
- // return content.Error($"璧风偣閿欒{startPoint}");
- // }
- // //鍒ゆ柇褰撳墠鐐逛綅鏄惁閲嶅
- // Dt_Task taskOldPoint = BaseDal.QueryFirst(x=>x.SourceAddress==startPoint && (x.TaskStatus == TaskStatusEnum.New.ObjToInt()||x.TaskStatus==TaskStatusEnum.Line_Execute.ObjToInt()|| x.TaskStatus == TaskStatusEnum.Line_Executing.ObjToInt() || x.TaskStatus == TaskStatusEnum.AGV_Takeing.ObjToInt()));
- // if (taskOldPoint != null)
- // {
- // return content.Error($"绔欑偣{startPoint}宸插瓨鍦ㄤ换鍔�");
- // }
- // Dt_Task taskOld = BaseDal.QueryFirst(x => x.PalletCode == barCode);
- // if (taskOld != null)
- // {
- // return content.Error($"鑳舵{barCode}浠诲姟宸插瓨鍦�");
- // }
- // //鑾峰彇鑳舵浣欐枡
- // Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>().Where(x=>x.PalletCode== barCode).Includes(x=>x.proStockInfoDetails).First();
- // if (proStockInfo==null)
- // {
- // return content.Error($"鏈壘鍒皗barCode}鑳舵淇℃伅");
- // }
- // if (proStockInfo.proStockInfoDetails==null || proStockInfo.proStockInfoDetails.Count<=0)
- // {
- // return content.Error($"{barCode}鑳舵淇℃伅涓虹┖");
- // }
- // if (proStockInfo.StockStatus!=StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt())
- // {
- // return content.Error($"{barCode}鑳舵淇℃伅鐘舵�佸紓甯�");
- // }
- // //鑾峰彇鎴愬搧骞冲簱
- // Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA101.ToString());
- // if (proStockInfo.WarehouseId != warehouse.WarehouseId && proStockInfo.LocationCode!= "鎴愬搧鍖呰鎷h揣鍖�")
- // {
- // return content.Error($"{barCode}鑳舵淇℃伅涓嶅湪鎷h揣鍖�");
- // }
- // //鑾峰彇褰撳墠鐨勫簱瀛樺睘鎬�
- // Dt_Warehouse? warePoint = null;
- // switch (proStockInfo.ProStockAttribute)
- // {
- // case (int)ProStockAttributeEnum.鎴愬搧:
- // warePoint = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA71.ToString());
- // break;
- // case (int)ProStockAttributeEnum.灏炬暟:
- // warePoint = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA72.ToString());
- // break;
- // case (int)ProStockAttributeEnum.鐮斿彂:
- // warePoint = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA73.ToString());
- // break;
- // default:
- // throw new Exception($"鏈壘鍒皗barCode}鑳舵淇℃伅搴撳瓨灞炴��");
- // }
- // Dt_Warehouse warehouseLocation = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA71.ToString());
- // Dt_LocationInfo locationInfo = _basicRepository.LocationInfoRepository.QueryFirst(x => x.WarehouseId == warehouseLocation.WarehouseId);
- // if (locationInfo == null)
- // {
- // return content.Error($"鏈壘鍒皗warehouse.WarehouseCode}璐т綅淇℃伅");
- // }
- // proStockInfo.StockStatus = StockStatusEmun.鎴愬搧浣欐枡鍥炲簱.ObjToInt();
- // proStockInfo.proStockInfoDetails.ForEach(x =>
- // {
- // x.ProOutDetailStatus = StockStatusEmun.鎴愬搧浣欐枡鍥炲簱.ObjToInt();
- // });
- // Dt_Task newTask = new Dt_Task()
- // {
- // CurrentAddress = startPoint,
- // Grade = 0,
- // NextAddress = "",
- // PalletCode = proStockInfo.PalletCode,
- // Roadway = locationInfo.RoadwayNo,
- // SourceAddress = startPoint,
- // TargetAddress = "",
- // TaskType = TaskTypeEnum.InProductBack.ObjToInt(),
- // TaskStatus = TaskStatusEnum.New.ObjToInt(),
- // WarehouseId = warePoint.WarehouseId,
- // PalletType = proStockInfo.PalletType,
- // MaterielCode = proStockInfo.proStockInfoDetails.Where(x => x.ProStockId == proStockInfo.Id).FirstOrDefault()?.ProductCode,
- // Quantity = (float)proStockInfo.proStockInfoDetails.Where(x => x.ProStockId == proStockInfo.Id).Sum(x => x.StockPcsQty)
- // };
- // _unitOfWorkManage.BeginTran();
- // int taskId = BaseDal.AddData(newTask);
- // newTask.TaskId = taskId;
- // _stockRepository.ProStockInfoRepository.UpdateData(proStockInfo);
- // _stockRepository.ProStockInfoDetailRepository.UpdateData(proStockInfo.proStockInfoDetails);
- // _unitOfWorkManage.CommitTran();
- // //鎺ㄩ�佷换鍔�
- // PushTasksToWCS(new List<Dt_Task> { newTask });
- // content.OK("鍙戦�佹垚鍔�");
- // }
- // catch (Exception ex)
- // {
- // _unitOfWorkManage.RollbackTran();
- // content.Error(ex.Message);
- // }
- // return content;
- //}
/// <summary>
/// 绌烘鍥炲簱
/// </summary>
@@ -551,7 +461,7 @@
return content.Error($"璧风偣閿欒{startPoint}");
}
//鍒ゆ柇褰撳墠鐐逛綅鏄惁閲嶅
- Dt_Task taskOldPoint = BaseDal.QueryFirst(x => x.SourceAddress == startPoint && x.TaskStatus == TaskStatusEnum.New.ObjToInt());
+ Dt_Task taskOldPoint = BaseDal.QueryFirst(x => x.SourceAddress == startPoint &&( x.TaskStatus == TaskStatusEnum.New.ObjToInt() || x.TaskStatus==TaskStatusEnum.AGV_Executing.ObjToInt()));
if (taskOldPoint != null)
{
return content.Error($"绔欑偣{startPoint}宸插瓨鍦ㄤ换鍔�");
@@ -606,6 +516,175 @@
}
catch (Exception ex)
{
+ _unitOfWorkManage.RollbackTran();
+ content.Error(ex.Message);
+ }
+ return content;
+ }
+ /// <summary>
+ /// 鍗板埛浣欐枡閫�鏂欎换鍔�
+ /// </summary>
+ public WebResponseContent PrintBackInbound(SaveModel saveModel)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ var barcode = saveModel.MainData["palletCode"].ToString();
+ var warehouseId = saveModel.MainData["warehouseId"].ObjToInt();
+ var materSn = saveModel.MainData["materSn"];
+ //鐩村緞
+ var thickness = saveModel.MainData["thickness"].ObjToInt();
+ var weight = saveModel.MainData["weight"].ObjToInt();
+ var address = saveModel.MainData["address"].ToString();
+ //骞呭
+ var wide = saveModel.MainData["wide"].ObjToInt();
+ Dt_MaterielInfo? materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == materSn);
+ if (materielInfo == null)
+ {
+ return content.Error("鏈壘鍒扮墿鏂欎俊鎭�");
+ }
+ Dt_StockInfo stockInfoOld = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == barcode);
+ if (stockInfoOld != null)
+ {
+ return content.Error("鎵樼洏淇℃伅宸插瓨鍦�");
+ }
+ //鐢熸垚搴撳瓨缁勭洏淇℃伅
+ Dt_StockInfo stockInfo = new Dt_StockInfo()
+ {
+ MaterielInvOrgId = materielInfo.MaterielInvOrgId,
+ PalletCode = barcode,
+ LocationCode = "",
+ PalletType = 1,
+ WarehouseId = warehouseId,
+ StockAttribute = materielInfo.MaterielSourceType,
+ StockStatus = StockStatusEmun.鎵嬪姩缁勭洏鍏ュ簱纭.ObjToInt(),
+ MaterielSpec = materielInfo.MaterielSpec,
+ Unit = materielInfo.MaterielUnit,
+ MaterielThickness = thickness,
+ MaterielWide = wide,
+ MaterielWeight = weight,
+ MaterielCode = materielInfo.MaterielCode,
+ MaterielName = materielInfo.MaterielName,
+ };
+ if (wide > 1200)
+ {
+ stockInfo.PalletType = 2;
+ }
+
+ //鐢熸垚鍗板埛浣欐枡閫�鏂欎换鍔�
+ Dt_Task newTask = new Dt_Task()
+ {
+ CurrentAddress = address,
+ Grade = 0,
+ NextAddress = "",
+ PalletCode = barcode,
+ Roadway = "",
+ SourceAddress = address,
+ TargetAddress = "",
+ TaskType = TaskTypeEnum.PrintBackInbound.ObjToInt(),
+ TaskStatus = TaskStatusEnum.New.ObjToInt(),
+ WarehouseId = warehouseId,
+ PalletType = 1,
+ TaskLength= wide
+ };
+ _unitOfWorkManage.BeginTran();
+ int taskId = BaseDal.AddData(newTask);
+ _stockRepository.StockInfoRepository.AddData(stockInfo);
+ newTask.TaskId = taskId;
+ _unitOfWorkManage.CommitTran();
+ //鎺ㄩ�佷换鍔�
+ PushTasksToWCS(new List<Dt_Task> { newTask });
+ content.OK("鍙戦�佹垚鍔�");
+ }
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ content.Error(ex.Message);
+ }
+ return content;
+ }
+ /// <summary>
+ /// 鍗板埛涓嬫枡浠诲姟
+ /// </summary>
+ public WebResponseContent PrintInbound(SaveModel saveModel)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ var barcode = saveModel.MainData["palletCode"].ToString();
+ var warehouseId = saveModel.MainData["warehouseId"].ObjToInt();
+ var materSn = saveModel.MainData["materSn"];
+ //鐩村緞
+ var thickness = saveModel.MainData["thickness"].ObjToInt();
+ var weight = saveModel.MainData["weight"].ObjToInt();
+ var address = saveModel.MainData["address"].ToString();
+ //骞呭
+ var wide = saveModel.MainData["wide"].ObjToInt();
+ Dt_MaterielInfo? materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == materSn);
+ if (materielInfo == null)
+ {
+ return content.Error("鏈壘鍒扮墿鏂欎俊鎭�");
+ }
+ if (materielInfo.MaterielSourceType!=MaterielTypeEnum.鍗婃垚鍝�.ObjToInt())
+ {
+ return content.Error($"鏈壘鍒扮墿鏂檣materielInfo.MaterielCode}鍗婃垚鍝佷俊鎭�");
+ }
+ Dt_StockInfo stockInfoOld = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == barcode);
+ if (stockInfoOld != null)
+ {
+ return content.Error("鎵樼洏淇℃伅宸插瓨鍦�");
+ }
+ //鐢熸垚搴撳瓨缁勭洏淇℃伅
+ Dt_StockInfo stockInfo = new Dt_StockInfo()
+ {
+ MaterielInvOrgId = materielInfo.MaterielInvOrgId,
+ PalletCode = barcode,
+ LocationCode = "",
+ PalletType = 1,
+ WarehouseId = warehouseId,
+ StockAttribute = materielInfo.MaterielSourceType,
+ StockStatus = StockStatusEmun.鎵嬪姩缁勭洏鍏ュ簱纭.ObjToInt(),
+ MaterielSpec = materielInfo.MaterielSpec,
+ Unit = materielInfo.MaterielUnit,
+ MaterielThickness = thickness,
+ MaterielWide = wide,
+ MaterielWeight = weight,
+ MaterielCode = materielInfo.MaterielCode,
+ MaterielName = materielInfo.MaterielName,
+ };
+ if (wide > 1200)
+ {
+ stockInfo.PalletType = 2;
+ }
+
+ //鐢熸垚鍗板埛鍗婃垚鍝佸叆搴撲换鍔�
+ Dt_Task newTask = new Dt_Task()
+ {
+ CurrentAddress = address,
+ Grade = 0,
+ NextAddress = "",
+ PalletCode = barcode,
+ Roadway = "",
+ SourceAddress = address,
+ TargetAddress = "",
+ TaskType = TaskTypeEnum.PrintInbound.ObjToInt(),
+ TaskStatus = TaskStatusEnum.New.ObjToInt(),
+ WarehouseId = warehouseId,
+ PalletType = 1,
+ TaskLength = wide
+ };
+ _unitOfWorkManage.BeginTran();
+ int taskId = BaseDal.AddData(newTask);
+ _stockRepository.StockInfoRepository.AddData(stockInfo);
+ newTask.TaskId = taskId;
+ _unitOfWorkManage.CommitTran();
+ //鎺ㄩ�佷换鍔�
+ PushTasksToWCS(new List<Dt_Task> { newTask });
+ content.OK("鍙戦�佹垚鍔�");
+ }
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
content.Error(ex.Message);
}
return content;
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
index fb613e5..e9c6340 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
@@ -284,13 +284,77 @@
return content;
}
/// <summary>
+ /// 鏃犵汉甯冨嚭搴�
+ /// </summary>
+ /// <param name="Count"></param>
+ /// <returns></returns>
+ public WebResponseContent RequestWFBWMSTaskOut(int Count)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ List<Dt_AGVStationInfo> aGVStationInfos = _agvStationInfoRepository.QueryData(x => x.StationArea == AGVStationAreaEnum.AreaC.ObjToInt() && x.IsOccupied == WhetherEnum.False.ObjToInt());
+ if (aGVStationInfos.Count < Count)
+ {
+ return content.Error($"鍙敤缂撳瓨鏁颁笉瓒�");
+ }
+ List<Dt_ProStockInfo> stockInfos = _stockRepository.ProStockInfoRepository.QueryData(x => x.ProStockAttribute == ProStockAttributeEnum.绌烘墭.ObjToInt() && x.StockStatus == StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt()).OrderBy(x => x.CreateDate).Take(Count).ToList();
+ List<Dt_LocationInfo> locationInfos = _basicRepository.LocationInfoRepository.QueryData(x => stockInfos.Select(x => x.LocationCode).Contains(x.LocationCode));
+ if (stockInfos.Count < Count)
+ {
+ return content.Error($"搴撳瓨鏁伴噺涓嶈冻");
+ }
+ foreach (var item in stockInfos)
+ {
+ Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.LocationCode == item.LocationCode);
+ if (locationInfo != null && (locationInfo.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || locationInfo.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && locationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt())
+ {
+ item.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt();
+ }
+ else
+ {
+ return content.Error($"璐т綅鐘舵�佷笉姝g‘");
+ }
+ }
+ List<Dt_Task> tasks = GetTasks(stockInfos, TaskTypeEnum.OutWFB);
+ if (tasks == null || tasks.Count <= 0)
+ {
+ return content.Error($"鐢熸垚浠诲姟澶辫触");
+ }
+ for (int i = 0; i < tasks.Count; i++)
+ {
+ aGVStationInfos[i].IsOccupied = WhetherEnum.True.ObjToInt();
+ tasks[i].TargetAddress = aGVStationInfos[i].AGVStationCode;
+ }
+ //鍒ゆ柇鏄惁鏈夊嚭搴撳崟淇℃伅
+ _unitOfWorkManage.BeginTran();
+ //鏇存柊搴撳瓨鐘舵��
+ _stockRepository.ProStockInfoRepository.UpdateData(stockInfos);
+ _agvStationInfoRepository.UpdateData(aGVStationInfos);
+ //鏇存柊璐т綅鐘舵��
+ _basicRepository.LocationInfoRepository.UpdateLocationStatus(locationInfos, LocationStatusEnum.Lock);
+ //鍔犲叆璐т綅鍙樺姩璁板綍
+ _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfos, LocationStatusEnum.Lock, LocationChangeType.OutboundAssignLocation, taskNums: tasks.Select(x => x.TaskNum).ToList());
+ //鏂板缓浠诲姟
+ BaseDal.AddData(tasks);
+ _unitOfWorkManage.CommitTran();
+ PushTasksToWCS(tasks);
+ content.OK();
+ }
+ catch (Exception ex)
+ {
+ content.Error(ex.Message);
+ }
+ return content;
+ }
+ /// <summary>
/// 鍘熸枡鍑哄簱浠诲姟
/// </summary>
/// <param name="materielCode">鐗╂枡浠g爜</param>
/// <param name="materielWide">鐗╂枡骞呭</param>
/// <param name="Count">鍗锋暟</param>
/// <returns></returns>
- public WebResponseContent RequestYLWMSTaskOut(string materielCode, int materielWide, int Count)
+ public WebResponseContent RequestYLWMSTaskOut(string materielCode, int materielWide, int Count, string address = "")
{
WebResponseContent content = new WebResponseContent();
try
@@ -323,13 +387,20 @@
}
else
{
- taskTypeEnum = TaskTypeEnum.Outbound;
+ taskTypeEnum = TaskTypeEnum.PrintOutbound;
}
List<Dt_Task> tasks = GetTasks(stockInfos, taskTypeEnum);
if (tasks == null || tasks.Count <= 0)
{
return content.Error($"鐢熸垚浠诲姟澶辫触");
}
+ if (!string.IsNullOrEmpty(address))
+ {
+ tasks.ForEach(x =>
+ {
+ x.TargetAddress= address;
+ });
+ }
//鍒ゆ柇鏄惁鏈夊嚭搴撳崟淇℃伅
_unitOfWorkManage.BeginTran();
//鏇存柊搴撳瓨鐘舵��
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Reloaction.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Reloaction.cs"
index 10f4bb0..7968781 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Reloaction.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Reloaction.cs"
@@ -1,10 +1,12 @@
-锘縰sing System;
+锘縰sing OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common.CommonEnum;
using WIDESEA_Common.LocationEnum;
+using WIDESEA_Common.MaterielEnum;
using WIDESEA_Common.OtherEnum;
using WIDESEA_Common.StockEnum;
using WIDESEA_Common.TaskEnum;
@@ -176,8 +178,10 @@
Dt_LocationInfo startLocationInfo = _basicRepository.LocationInfoRepository.QueryFirst(x => x.LocationCode == startAddress);
Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.LocationCode == startAddress);
Dt_LocationInfo endLocationInfo = _basicRepository.LocationInfoRepository.QueryFirst(x => x.LocationCode == endAddress);
+ //鍒ゆ柇鏉′欢
if (startLocationInfo != null && startLocationInfo.LocationStatus==LocationStatusEnum.InStock.ObjToInt() && endLocationInfo != null && endLocationInfo.LocationStatus==LocationStatusEnum.Free.ObjToInt() && endLocationInfo.EnableStatus==EnableStatusEnum.Normal.ObjToInt() && stockInfo!=null)
{
+ //鐢熸垚浠诲姟
Dt_Task newTask = new Dt_Task()
{
Roadway = roadWay,
@@ -191,7 +195,7 @@
SourceAddress = startLocationInfo.LocationCode,
TargetAddress = endLocationInfo.LocationCode,
TaskNum = Repository.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
- TaskStatus = 0,
+ TaskStatus = TaskStatusEnum.SC_Execute.ObjToInt(),
TaskType = TaskTypeEnum.Relocation.ObjToInt()
};
stockInfo.StockStatus = StockStatusEmun.绉诲簱閿佸畾.ObjToInt();
@@ -216,5 +220,60 @@
}
return content;
}
+ /// <summary>
+ /// 鍘熸枡宸烽亾闂寸Щ搴撲换鍔� todo:涓存椂
+ /// </summary>
+ public WebResponseContent RelocationRoadWay(string roadWay, int Count)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ //鑾峰彇瀵瑰簲搴撳瓨
+ List<Dt_StockInfo> stockInfos = _stockRepository.StockInfoRepository.QueryData(x => x.MaterielWide <2200 && x.StockStatus == StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt()).OrderBy(x => x.CreateDate).Take(Count).ToList();
+
+ //鑾峰彇璐т綅
+ List<Dt_LocationInfo> locationInfos = _basicRepository.LocationInfoRepository.QueryData(x => stockInfos.Select(x => x.LocationCode).Contains(x.LocationCode));
+ foreach (var item in stockInfos)
+ {
+ Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.LocationCode == item.LocationCode);
+ if (locationInfo != null && (locationInfo.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || locationInfo.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && locationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt())
+ {
+ item.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt();
+ }
+ else
+ {
+ return content.Error($"璐т綅鐘舵�佷笉姝g‘");
+ }
+ }
+
+ List<Dt_Task> tasks = GetTasks(stockInfos, TaskTypeEnum.OutPick);
+ if (tasks == null || tasks.Count <= 0)
+ {
+ return content.Error($"鐢熸垚浠诲姟澶辫触");
+ }
+ tasks.ForEach(x =>
+ {
+ x.TargetAddress = roadWay;
+ });
+ //鍒ゆ柇鏄惁鏈夊嚭搴撳崟淇℃伅
+ _unitOfWorkManage.BeginTran();
+ //鏇存柊搴撳瓨鐘舵��
+ _stockRepository.StockInfoRepository.UpdateData(stockInfos);
+ //鏇存柊璐т綅鐘舵��
+ _basicRepository.LocationInfoRepository.UpdateLocationStatus(locationInfos, LocationStatusEnum.Lock);
+ //鍔犲叆璐т綅鍙樺姩璁板綍
+ _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfos, LocationStatusEnum.Lock, LocationChangeType.OutboundAssignLocation, taskNums: tasks.Select(x => x.TaskNum).ToList());
+ //鏂板缓浠诲姟
+ BaseDal.AddData(tasks);
+ _unitOfWorkManage.CommitTran();
+ PushTasksToWCS(tasks);
+ content.OK();
+ }
+ catch (Exception ex)
+ {
+ content.Error(ex.Message);
+ }
+ return content;
+ }
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
index 1d03895..90a0e24 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
@@ -172,6 +172,21 @@
{
return Service.RequestYLWMSTaskSimple(stationCode,palletCode);
}
+ /// <summary>
+ /// 鍒嗛厤鍘熸枡鍏ュ簱宸烽亾
+ /// </summary>
+ /// <param name="palletCode"></param>
+ /// <returns></returns>
+ [HttpPost, HttpGet, Route("AssignYLRoadwayNo"), AllowAnonymous]
+ public WebResponseContent AssignYLRoadwayNo(string palletCode)
+ {
+ string roadWay= Service.AssignYLRoadwayNo(palletCode);
+ if (string.IsNullOrEmpty(roadWay))
+ {
+ return WebResponseContent.Instance.Error("鏈壘鍒板彲鍒嗛厤宸烽亾");
+ }
+ return WebResponseContent.Instance.OK(data: roadWay);
+ }
/// <summary>
/// 鎴愬搧鍑哄簱浠诲姟璇锋眰
@@ -182,6 +197,17 @@
{
return Service.RequestCPWMSTaskOut(Count);
}
+
+ /// <summary>
+ /// 鏃犵汉甯冨嚭搴�
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, HttpGet, Route("RequestWFBWMSTaskOut"), AllowAnonymous]
+ public WebResponseContent RequestWFBWMSTaskOut(int Count)
+ {
+ return Service.RequestWFBWMSTaskOut(Count);
+ }
+
/// <summary>
/// 鍘熸枡鍑哄簱浠诲姟
/// </summary>
@@ -190,9 +216,9 @@
/// <param name="Count">鍗锋暟</param>
/// <returns></returns>
[HttpPost, HttpGet, Route("RequestYLWMSTaskOut"), AllowAnonymous]
- public WebResponseContent RequestYLWMSTaskOut(string materielCode,int materielWide, int Count)
+ public WebResponseContent RequestYLWMSTaskOut(string materielCode,int materielWide, int count,string address="")
{
- return Service.RequestYLWMSTaskOut(materielCode, materielWide, Count);
+ return Service.RequestYLWMSTaskOut(materielCode, materielWide, count, address);
}
/// <summary>
/// 鍘熸枡绉诲簱浠诲姟
@@ -206,5 +232,43 @@
{
return Service.IsRelocation(startAddress, endAddress, roadWay);
}
+ /// <summary>
+ /// 鍘熸枡宸烽亾闂寸Щ搴撲换鍔�
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, HttpGet, Route("RelocationRoadWay"), AllowAnonymous]
+ public WebResponseContent RelocationRoadWay(string roadWay,int Count)
+ {
+ return Service.RelocationRoadWay(roadWay, Count);
+ }
+ /// <summary>
+ /// 鍒嗛厤鎴愬搧宸烽亾
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, HttpGet, Route("AssignCPRoadwayNo"), AllowAnonymous]
+ public string AssignCPRoadwayNo()
+ {
+ return Service.AssignCPRoadwayNo();
+ }
+ /// <summary>
+ /// 鍗板埛浣欐枡閫�鏂欎换鍔�
+ /// </summary>
+ /// <param name="saveModel"></param>
+ /// <returns></returns>
+ [HttpPost, HttpGet, Route("PrintBackInbound"), AllowAnonymous]
+ public WebResponseContent PrintBackInbound([FromBody]SaveModel saveModel)
+ {
+ return Service.PrintBackInbound(saveModel);
+ }
+ /// <summary>
+ /// 鍗板埛涓嬫枡浠诲姟
+ /// </summary>
+ /// <param name="saveModel"></param>
+ /// <returns></returns>
+ [HttpPost, HttpGet, Route("PrintInbound"), AllowAnonymous]
+ public WebResponseContent PrintInbound([FromBody] SaveModel saveModel)
+ {
+ return Service.PrintInbound(saveModel);
+ }
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\351\276\231\345\210\251\345\276\227PDA/common/config.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\351\276\231\345\210\251\345\276\227PDA/common/config.js"
index 31aeea7..e8ba20c 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\351\276\231\345\210\251\345\276\227PDA/common/config.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/\351\276\231\345\210\251\345\276\227PDA/common/config.js"
@@ -1,5 +1,5 @@
let config = {
- baseUrl: 'http://127.0.0.1:9293',
+ baseUrl: 'http://192.168.35.3:9283',
urls: [
'http://192.168.35.3:9283',
'http://192.168.35.3:9283'
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\344\270\200\346\234\237BSTERP\351\234\200\346\261\202\345\255\227\346\256\265.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\344\270\200\346\234\237BSTERP\351\234\200\346\261\202\345\255\227\346\256\265.xlsx"
new file mode 100644
index 0000000..f743eb2
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\344\270\200\346\234\237BSTERP\351\234\200\346\261\202\345\255\227\346\256\265.xlsx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\344\274\270\347\274\251\350\264\247\345\217\211\346\216\245\351\251\263\345\217\260IP\345\210\206\351\205\215\350\241\250.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\344\274\270\347\274\251\350\264\247\345\217\211\346\216\245\351\251\263\345\217\260IP\345\210\206\351\205\215\350\241\250.xlsx"
new file mode 100644
index 0000000..3fd91ef
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\344\274\270\347\274\251\350\264\247\345\217\211\346\216\245\351\251\263\345\217\260IP\345\210\206\351\205\215\350\241\250.xlsx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\345\215\260\346\231\272\344\272\221\346\225\260\346\215\256\345\255\227\345\205\270.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\345\215\260\346\231\272\344\272\221\346\225\260\346\215\256\345\255\227\345\205\270.xlsx"
new file mode 100644
index 0000000..4028ae6
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\345\215\260\346\231\272\344\272\221\346\225\260\346\215\256\345\255\227\345\205\270.xlsx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\345\216\237\346\226\231\345\272\223\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\345\216\237\346\226\231\345\272\223\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256.xlsx"
index a1adcea..7313fdd 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\345\216\237\346\226\231\345\272\223\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256.xlsx"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\345\216\237\346\226\231\345\272\223\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256.xlsx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\210\220\345\223\201\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256_20250707.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\210\220\345\223\201\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256_20250707.xlsx"
index a745a85..dc6a722 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\210\220\345\223\201\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256_20250707.xlsx"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\210\220\345\223\201\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256_20250707.xlsx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\346\234\272\345\231\250\344\272\272IO\351\200\232\350\256\257\350\241\25020250712.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\346\234\272\345\231\250\344\272\272IO\351\200\232\350\256\257\350\241\25020250712.xlsx"
index 9f35452..b93e12b 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\346\234\272\345\231\250\344\272\272IO\351\200\232\350\256\257\350\241\25020250712.xlsx"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\346\234\272\345\231\250\344\272\272IO\351\200\232\350\256\257\350\241\25020250712.xlsx"
Binary files differ
--
Gitblit v1.9.3