Compare commits
10 Commits
03c600bc70
...
6d98f3b987
| Author | SHA1 | Date | |
|---|---|---|---|
| 6d98f3b987 | |||
| 2492eaa9df | |||
| 461095beaa | |||
| 585f0e256e | |||
| ad19053505 | |||
| ac52f86fc4 | |||
| 9a391e47a3 | |||
| 3abbe9a470 | |||
| 4f8bb3316a | |||
| 21ea775325 |
|
|
@ -1,8 +1,8 @@
|
||||||
using ApiTool;
|
using ApiTool;
|
||||||
using WcsMain.ApiClient.General;
|
using WcsMain.ApiClient.General;
|
||||||
using WcsMain.Common;
|
using WcsMain.Common;
|
||||||
using WcsMain.ExtendMethod;
|
|
||||||
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
|
|
||||||
namespace WcsMain.ApiClient.AGV;
|
namespace WcsMain.ApiClient.AGV;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,9 @@
|
||||||
using WcsMain.Common;
|
using WcsMain.Common;
|
||||||
using WcsMain.Constant;
|
using WcsMain.Constant;
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
using WcsMain.ExtendMethod;
|
|
||||||
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace WcsMain.ApiClient.AGV;
|
namespace WcsMain.ApiClient.AGV;
|
||||||
|
|
||||||
|
|
@ -13,7 +14,7 @@ namespace WcsMain.ApiClient.AGV;
|
||||||
[Component]
|
[Component]
|
||||||
public class AGVWebApiAction(AGVBaseWebApi webApiPost)
|
public class AGVWebApiAction(AGVBaseWebApi webApiPost)
|
||||||
{
|
{
|
||||||
|
private readonly string[] stand = ["FaaZHG", "kzxhes", "yDN8ZZ", "6cDXzi", "ranQyi", "SxjX8e", "jC6x3C", "MSP3te"];
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 发送点对点搬运的任务
|
/// 发送点对点搬运的任务
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -21,52 +22,43 @@ public class AGVWebApiAction(AGVBaseWebApi webApiPost)
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public string Send_NO_VERIFY_BUCKET_MOVE(AppWmsTask wmsTask)
|
public string Send_NO_VERIFY_BUCKET_MOVE(AppWmsTask wmsTask)
|
||||||
{
|
{
|
||||||
AGVRequestLayout<AGVTaskRequest<AGVBucketMove>> request = new()
|
string vehicleNo = wmsTask.VehicleNo ?? "";
|
||||||
|
AGVTaskRequest<AGVBucketMove> request = new()
|
||||||
{
|
{
|
||||||
Header = new()
|
RobotJobId = wmsTask.TaskId,
|
||||||
|
WareHouseId = 1,
|
||||||
|
RobotJobGroupNum = 1,
|
||||||
|
JobPriority = 1,
|
||||||
|
JobProorytyType = 0,
|
||||||
|
JobType = "NO_VERIFY_BUCKET_MOVE",
|
||||||
|
OrderSource = "BK",
|
||||||
|
JobData = new()
|
||||||
{
|
{
|
||||||
AppKey = ApplicationBaseConfig.APP_KEY,
|
StartPoint = wmsTask.Origin,
|
||||||
AppSecret = ApplicationBaseConfig.APP_SECRET,
|
StartPointName = null,
|
||||||
RequestId = wmsTask.TaskId,
|
WorkFaces = "0",
|
||||||
TimeStamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
|
EndArea = wmsTask.Destination,
|
||||||
version = "2.9"
|
EndPoint = wmsTask.Destination,
|
||||||
},
|
EndPointName = null,
|
||||||
Body = new()
|
BucketTypeCode = vehicleNo.StartsWith("TP") ? "TP" : "ZYLJ", //
|
||||||
{
|
LetDownFlag = 2,
|
||||||
RobotJobId = wmsTask.TaskId,
|
NeedOut = stand.Contains(wmsTask.Destination) ? 1 : 0,
|
||||||
WareHouseId = 100,
|
CheckCode = vehicleNo.StartsWith("TP") ? null : 1,
|
||||||
RobotJobGroupId = wmsTask.TaskId,
|
|
||||||
Sequence = 1,
|
|
||||||
RobotJobGroupNum = 1,
|
|
||||||
JobPriority = 1,
|
|
||||||
JobProorytyType = 0,
|
|
||||||
JobType = "NO_VERIFY_BUCKET_MOVE",
|
|
||||||
JobData = new()
|
|
||||||
{
|
|
||||||
StartPoint = wmsTask.Origin,
|
|
||||||
StartPointName = null,
|
|
||||||
WorkFaces = "0",
|
|
||||||
EndArea = wmsTask.Destination,
|
|
||||||
EndPoint = wmsTask.Destination,
|
|
||||||
EndPointName = null,
|
|
||||||
BucketTypeCode = "00",
|
|
||||||
LetDownFlag = 2,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
var response = webApiPost.HttpPost<AGVRequestLayout<AGVTaskRequest<AGVBucketMove>>, AGVResponseLayout<AGVTaskResponse>>(request, CommonData.AppApiBaseInfos.GetAddress("AGV_NO_VERIFY_BUCKET_MOVE") ?? "");
|
var response = webApiPost.HttpPost<List<AGVTaskRequest<AGVBucketMove>>, AGVResponseBody<List<AGVTaskResponse>>> ([request], CommonData.AppApiBaseInfos.GetAddress("AGV_NO_VERIFY_BUCKET_MOVE") ?? "");
|
||||||
var responseData = response.ResponseEntity;
|
var responseData = response.ResponseEntity;
|
||||||
if (!response.IsSend || responseData == null)
|
if (!response.IsSend || responseData == null)
|
||||||
{
|
{
|
||||||
return "请求失败,网络故障";
|
return "请求失败,网络故障";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (responseData.Body!.Success == true && responseData.Body!.Code?.ToLower() == "success")
|
if (responseData.Success == true && responseData.Code?.ToLower() == "success")
|
||||||
{
|
{
|
||||||
// 发送成功
|
// 发送成功
|
||||||
return string.Empty;
|
return string.Empty;
|
||||||
}
|
}
|
||||||
return responseData.Body.Message ?? "请求失败,未知原因";
|
return responseData.Message ?? "请求失败,未知原因";
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -76,54 +68,54 @@ public class AGVWebApiAction(AGVBaseWebApi webApiPost)
|
||||||
/// <param name="origin"></param>
|
/// <param name="origin"></param>
|
||||||
/// <param name="destination"></param>
|
/// <param name="destination"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public string Send_AGV_TASK(string? taskId, string? origin, string? destination)
|
public string Send_AGV_TASK(string? taskId, string? origin, string? destination, int needOut = 0)
|
||||||
{
|
{
|
||||||
AGVRequestLayout<AGVTaskRequest<AGVBucketMove>> request = new()
|
AGVTaskRequest<AGVBucketMove> request = new()
|
||||||
{
|
{
|
||||||
Header = new()
|
RobotJobId = taskId,
|
||||||
|
WareHouseId = 1,
|
||||||
|
RobotJobGroupNum = 1,
|
||||||
|
JobPriority = 1,
|
||||||
|
JobProorytyType = 0,
|
||||||
|
JobType = "NO_VERIFY_BUCKET_MOVE",
|
||||||
|
OrderSource = "BK",
|
||||||
|
JobData = new()
|
||||||
{
|
{
|
||||||
AppKey = ApplicationBaseConfig.APP_KEY,
|
StartPoint = origin,
|
||||||
AppSecret = ApplicationBaseConfig.APP_SECRET,
|
StartPointName = null,
|
||||||
RequestId = taskId,
|
WorkFaces = "0",
|
||||||
TimeStamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
|
EndPoint = destination,
|
||||||
version = "2.9"
|
EndPointName = null,
|
||||||
},
|
BucketTypeCode = "TP",
|
||||||
Body = new()
|
LetDownFlag = 2,
|
||||||
{
|
NeedOut = needOut
|
||||||
RobotJobId = taskId,
|
|
||||||
WareHouseId = 100,
|
|
||||||
RobotJobGroupId = taskId,
|
|
||||||
Sequence = 1,
|
|
||||||
RobotJobGroupNum = 1,
|
|
||||||
JobPriority = 1,
|
|
||||||
JobProorytyType = 0,
|
|
||||||
JobType = "NO_VERIFY_BUCKET_MOVE",
|
|
||||||
JobData = new()
|
|
||||||
{
|
|
||||||
StartPoint = origin,
|
|
||||||
StartPointName = null,
|
|
||||||
WorkFaces = "0",
|
|
||||||
EndArea = destination,
|
|
||||||
EndPoint = destination,
|
|
||||||
EndPointName = null,
|
|
||||||
BucketTypeCode = "00",
|
|
||||||
LetDownFlag = 2,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
var response = webApiPost.HttpPost<AGVRequestLayout<AGVTaskRequest<AGVBucketMove>>, AGVResponseLayout<AGVTaskResponse>>(request, CommonData.AppApiBaseInfos.GetAddress("AGV_NO_VERIFY_BUCKET_MOVE") ?? "");
|
|
||||||
|
var response = webApiPost.HttpPost<List<AGVTaskRequest<AGVBucketMove>>, AGVResponseBody<List<AGVTaskResponse>>>([request], CommonData.AppApiBaseInfos.GetAddress("AGV_NO_VERIFY_BUCKET_MOVE") ?? "");
|
||||||
var responseData = response.ResponseEntity;
|
var responseData = response.ResponseEntity;
|
||||||
if (!response.IsSend || responseData == null)
|
if (!response.IsSend || responseData == null)
|
||||||
{
|
{
|
||||||
return "请求失败,网络故障";
|
return "请求失败,网络故障";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (responseData.Body!.Success == true && responseData.Body!.Code?.ToLower() == "success")
|
if (responseData.Success == true && responseData.Code?.ToLower() == "success")
|
||||||
{
|
{
|
||||||
// 发送成功
|
// 发送成功
|
||||||
return string.Empty;
|
return string.Empty;
|
||||||
}
|
}
|
||||||
return responseData.Body.Message ?? "请求失败,未知原因";
|
return responseData.Message ?? "请求失败,未知原因";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void Send_AGV_Action(string? agvCode, string? commond)
|
||||||
|
{
|
||||||
|
AGVActionRequest actionRequest = new()
|
||||||
|
{
|
||||||
|
AgvCode = agvCode,
|
||||||
|
FeedbackCommand = commond,
|
||||||
|
};
|
||||||
|
webApiPost.HttpPost<AGVActionRequest, object>(actionRequest, CommonData.AppApiBaseInfos.GetAddress("AGV_ACTION") ?? "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
14
WcsMain/ApiClient/AGV/Dto/AGVActionRequest.cs
Normal file
14
WcsMain/ApiClient/AGV/Dto/AGVActionRequest.cs
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace WcsMain.ApiClient.AGV.Dto;
|
||||||
|
|
||||||
|
public class AGVActionRequest
|
||||||
|
{
|
||||||
|
[JsonProperty("agvCode")]
|
||||||
|
public string? AgvCode { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty("feedbackCommand")]
|
||||||
|
public string? FeedbackCommand{ get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -46,7 +46,7 @@ public class AGVBucketMove
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 货架类型编码
|
/// 货架类型编码
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonProperty("buckTypeCode")]
|
[JsonProperty("bucketTypeCode")]
|
||||||
public string? BucketTypeCode { get; set; }
|
public string? BucketTypeCode { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ public class AGVResponseHeader
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
// {"code":"ERR_PARTIAL_FAILURE","message":"Partial failure","success":false,"data":[{"code":"ERR_ILLEGAL_WHI","message":"ERR_ILLEGAL_WHI","robotJobId":"1731831975323001000"}]}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// AGV 响应体
|
/// AGV 响应体
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
|
|
@ -97,6 +97,12 @@ public class AGVTaskRequest<T> where T : class, new()
|
||||||
[JsonProperty("jobType")]
|
[JsonProperty("jobType")]
|
||||||
public string? JobType { get; set; }
|
public string? JobType { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 订单来源
|
||||||
|
/// </summary>
|
||||||
|
[JsonProperty("orderSource")]
|
||||||
|
public string? OrderSource { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 任务数据
|
/// 任务数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
|
|
@ -25,5 +25,5 @@ public class AGVTaskResponse
|
||||||
[JsonProperty("robotJobId")]
|
[JsonProperty("robotJobId")]
|
||||||
public string? RobotJobId { get; set; }
|
public string? RobotJobId { get; set; }
|
||||||
|
|
||||||
|
// {"code":"ERR_PARTIAL_FAILURE","message":"Partial failure","success":false,"data":[{"code":"ERR_ILLEGAL_WHI","message":"ERR_ILLEGAL_WHI","robotJobId":"1731831975323001000"}]}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
namespace WcsMain.ApiClient.Shuttle.Dto;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace WcsMain.ApiClient.Shuttle.Dto;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 四向车库的响应
|
/// 四向车库的响应
|
||||||
|
|
@ -8,16 +10,19 @@ public class ContainerTaskResponse
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 响应码
|
/// 响应码
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[JsonProperty("code")]
|
||||||
public string? Code { get; set; }
|
public string? Code { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// WMS 任务号
|
/// WMS 任务号
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[JsonProperty("wmstaskid")]
|
||||||
public string? WmsTaskId { get; set; }
|
public string? WmsTaskId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 信息
|
/// 信息
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[JsonProperty("message")]
|
||||||
public string? Message { get; set; }
|
public string? Message { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
namespace WcsMain.ApiClient.Shuttle.Dto;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace WcsMain.ApiClient.Shuttle.Dto;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 四向车库出库移库请求
|
/// 四向车库出库移库请求
|
||||||
|
|
@ -8,31 +10,37 @@ public class ContainerTaskResqust
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 请求ID
|
/// 请求ID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[JsonProperty("requestid")]
|
||||||
public string? RequestId { get; set; }
|
public string? RequestId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 密钥
|
/// 密钥
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[JsonProperty("key")]
|
||||||
public string? Key { get; set; }
|
public string? Key { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// WMS 任务号
|
/// WMS 任务号
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[JsonProperty("wmstaskid")]
|
||||||
public string? WmsTaskId { get; set; }
|
public string? WmsTaskId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 载具号
|
/// 载具号
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[JsonProperty("palletno")]
|
||||||
public string? PalletNo { get; set; }
|
public string? PalletNo { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 起始位置
|
/// 起始位置
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[JsonProperty("fromcellno")]
|
||||||
public string? FromCellNo { get; set; }
|
public string? FromCellNo { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 目标位置
|
/// 目标位置
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[JsonProperty("tocellno")]
|
||||||
public string? ToCell { get; set; }
|
public string? ToCell { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -42,6 +50,7 @@ public class ContainerTaskResqust
|
||||||
/// 2 - 出库
|
/// 2 - 出库
|
||||||
/// 3 - 移库
|
/// 3 - 移库
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
|
[JsonProperty("tasktype")]
|
||||||
public string? TaskType { get; set; }
|
public string? TaskType { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
using ApiTool;
|
using ApiTool;
|
||||||
using WcsMain.ApiClient.General;
|
using WcsMain.ApiClient.General;
|
||||||
using WcsMain.Common;
|
using WcsMain.Common;
|
||||||
using WcsMain.ExtendMethod;
|
|
||||||
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
|
|
||||||
namespace WcsMain.ApiClient.Shuttle;
|
namespace WcsMain.ApiClient.Shuttle;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,13 @@
|
||||||
using WcsMain.Common;
|
using WcsMain.Common;
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
using WcsMain.ExtendMethod;
|
|
||||||
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
||||||
using WcsMain.ApiClient.Shuttle.Dto;
|
using WcsMain.ApiClient.Shuttle.Dto;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using EncryptTool;
|
||||||
|
using WcsMain.Constant;
|
||||||
|
using System.Text;
|
||||||
|
using WcsMain.ExtendMethod;
|
||||||
|
|
||||||
namespace WcsMain.ApiClient.Shuttle;
|
namespace WcsMain.ApiClient.Shuttle;
|
||||||
|
|
||||||
|
|
@ -19,11 +24,12 @@ public class ShuttleWebApiAction(ShuttleBaseWebApi webApiPost)
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public string ExecuteMoveTask(AppWmsTask wmsTask)
|
public string ExecuteMoveTask(AppWmsTask wmsTask)
|
||||||
{
|
{
|
||||||
|
string requestId = Guid.NewGuid().ToString();
|
||||||
ContainerTaskResqust containerTaskResqust = new()
|
ContainerTaskResqust containerTaskResqust = new()
|
||||||
{
|
{
|
||||||
RequestId = Guid.NewGuid().ToString(),
|
RequestId = requestId,
|
||||||
Key = "",
|
Key = (requestId + ApplicationBaseConfig.SHUTTLE_PWD).MD5Encrypt32(),
|
||||||
WmsTaskId = wmsTask.TaskId,
|
WmsTaskId = wmsTask.WcsId,
|
||||||
FromCellNo = wmsTask.Origin,
|
FromCellNo = wmsTask.Origin,
|
||||||
TaskType = "3",
|
TaskType = "3",
|
||||||
ToCell = wmsTask.Destination,
|
ToCell = wmsTask.Destination,
|
||||||
|
|
@ -52,10 +58,11 @@ public class ShuttleWebApiAction(ShuttleBaseWebApi webApiPost)
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public string ExecuteOutTask(string? taskId, string? origin, string? destination, string? vehicleNo)
|
public string ExecuteOutTask(string? taskId, string? origin, string? destination, string? vehicleNo)
|
||||||
{
|
{
|
||||||
|
string requestId = Guid.NewGuid().ToString();
|
||||||
ContainerTaskResqust containerTaskResqust = new()
|
ContainerTaskResqust containerTaskResqust = new()
|
||||||
{
|
{
|
||||||
RequestId = Guid.NewGuid().ToString(),
|
RequestId = requestId,
|
||||||
Key = "",
|
Key = (requestId + ApplicationBaseConfig.SHUTTLE_PWD).MD5Encrypt32(),
|
||||||
WmsTaskId = taskId,
|
WmsTaskId = taskId,
|
||||||
FromCellNo = origin,
|
FromCellNo = origin,
|
||||||
TaskType = "2",
|
TaskType = "2",
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@ using WcsMain.Common;
|
||||||
using WcsMain.Constant.Enum;
|
using WcsMain.Constant.Enum;
|
||||||
using WcsMain.DataBase.Dao;
|
using WcsMain.DataBase.Dao;
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
using WcsMain.ExtendMethod;
|
|
||||||
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
|
|
||||||
namespace WcsMain.ApiClient.WMS;
|
namespace WcsMain.ApiClient.WMS;
|
||||||
|
|
||||||
|
|
@ -71,6 +71,7 @@ public class SendWmsTaskStatus(AppWmsTaskDao wmsTaskDao, WmsBaseWebApi wmsWebApi
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ConsoleLog.Error($"【异常】发送WMS[任务异常]失败,WMS返回异常,任务号:{wmsTask.TaskId},载具号:{wmsTask.VehicleNo},参考信息:{responseObj.Message}");
|
ConsoleLog.Error($"【异常】发送WMS[任务异常]失败,WMS返回异常,任务号:{wmsTask.TaskId},载具号:{wmsTask.VehicleNo},参考信息:{responseObj.Message}");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -249,6 +250,7 @@ public class SendWmsTaskStatus(AppWmsTaskDao wmsTaskDao, WmsBaseWebApi wmsWebApi
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ConsoleLog.Error($"【异常】发送WMS[开始执行]失败,WMS返回异常,任务号:{wmsTask.TaskId},载具号:{wmsTask.VehicleNo},参考信息:{responseObj.Message}");
|
ConsoleLog.Error($"【异常】发送WMS[开始执行]失败,WMS返回异常,任务号:{wmsTask.TaskId},载具号:{wmsTask.VehicleNo},参考信息:{responseObj.Message}");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -309,6 +311,7 @@ public class SendWmsTaskStatus(AppWmsTaskDao wmsTaskDao, WmsBaseWebApi wmsWebApi
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ConsoleLog.Error($"【异常】发送WMS[任务完成]失败,WMS返回异常,任务号:{wmsTask.TaskId},载具号:{wmsTask.VehicleNo},参考信息:{responseObj.Message}");
|
ConsoleLog.Error($"【异常】发送WMS[任务完成]失败,WMS返回异常,任务号:{wmsTask.TaskId},载具号:{wmsTask.VehicleNo},参考信息:{responseObj.Message}");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -350,6 +353,7 @@ public class SendWmsTaskStatus(AppWmsTaskDao wmsTaskDao, WmsBaseWebApi wmsWebApi
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ConsoleLog.Error($"【异常】发送WMS[任务离开起始位置]失败,WMS返回异常,任务号:{wmsTask.TaskId},载具号:{wmsTask.VehicleNo},参考信息:{responseObj.Message}");
|
ConsoleLog.Error($"【异常】发送WMS[任务离开起始位置]失败,WMS返回异常,任务号:{wmsTask.TaskId},载具号:{wmsTask.VehicleNo},参考信息:{responseObj.Message}");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
using ApiTool;
|
using ApiTool;
|
||||||
using WcsMain.ApiClient.General;
|
using WcsMain.ApiClient.General;
|
||||||
using WcsMain.Common;
|
using WcsMain.Common;
|
||||||
using WcsMain.ExtendMethod;
|
|
||||||
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
|
|
||||||
namespace WcsMain.ApiClient.WMS;
|
namespace WcsMain.ApiClient.WMS;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,10 +20,16 @@ public class AGVController(AGVService agvService) : ControllerBase
|
||||||
/// <param name="request"></param>
|
/// <param name="request"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost("taskCallBack")]
|
[HttpPost("taskCallBack")]
|
||||||
public AGVResponseLayout<AGVResponseLayout<object>> TaskCallBack(ApiServe.Dto.AGV.AGVRequestLayout<AGVRequestBodyLayout<AGVNoVeBuckMoveRequest>> request) => agvService.TaskCallBack(request);
|
public AGVResponseLayout<AGVResponseLayout<object>> TaskCallBack([FromBody] Dto.AGV.AGVRequestLayout<AGVRequestBodyLayout<AGVNoVeBuckMoveRequest>> request) => agvService.TaskCallBack(request);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AGV在点位请求动作
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="request"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("requestAction")]
|
||||||
|
public AGVResponseLayout<AGVResponseLayout<object>> RequestAction([FromBody] Dto.AGV.AGVRequestLayout<AGVRequestBodyBaseLayout<AGVRequestActionRequest>> request) => agvService.RequestAction(request);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ namespace WcsMain.ApiServe.Controllers.ContainerController;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 提供给四向车的API接口
|
/// 提供给四向车的API接口
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Route("api/container")]
|
[Route("api/shuttle")]
|
||||||
[ApiController]
|
[ApiController]
|
||||||
[ServiceFilter<ResponseFilterAttribute>]
|
[ServiceFilter<ResponseFilterAttribute>]
|
||||||
public class ContainerController(ContainerService containerService) : ControllerBase
|
public class ContainerController(ContainerService containerService) : ControllerBase
|
||||||
|
|
|
||||||
|
|
@ -38,11 +38,20 @@ public class WmsTaskController(WmsTaskService wmsTaskService) : ControllerBase
|
||||||
public WcsApiResponse GetStackerTask([FromBody] SetWmsTask request) => wmsTaskService.GetStackerTask(request);
|
public WcsApiResponse GetStackerTask([FromBody] SetWmsTask request) => wmsTaskService.GetStackerTask(request);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Wms向Wcs请求修改任务状态
|
/// Wcs请求修改任务状态
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="request"></param>
|
/// <param name="request"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost("updateWmsTaskStatus")]
|
[HttpPost("updateWmsTaskStatus")]
|
||||||
public WcsApiResponse UpdateStackerTaskStatus([FromBody] UpdateStackerTaskStatusRequest request) => wmsTaskService.UpdateStackerTaskStatus(request);
|
public WcsApiResponse UpdateStackerTaskStatus([FromBody] UpdateStackerTaskStatusRequest request) => wmsTaskService.UpdateStackerTaskStatus(request);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///Wcs请求修改任务状态
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="request"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("modifyWmsTaskStatus")]
|
||||||
|
public WcsApiResponse UpdateWmsTaskStatus([FromBody] UpdateWmsTaskStatusRequest request) => wmsTaskService.UpdateWmsTaskStatus(request);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -22,7 +22,7 @@ public class WmsTaskController(WmsTaskService wmsTaskService) : ControllerBase
|
||||||
/// <param name="request"></param>
|
/// <param name="request"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost("setStackerTask")]
|
[HttpPost("setStackerTask")]
|
||||||
public WmsApiResponse<List<GetStackerRequest>> GetStackerTask([FromBody] List<GetStackerRequest> request) => wmsTaskService.GetStackerTask(request);
|
public WmsApiResponse<List<GetStackerRequest>> GetStackerTask([FromBody] GetStackerRequest request) => wmsTaskService.GetStackerTask(request);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Wms向Wcs请求修改任务状态
|
/// Wms向Wcs请求修改任务状态
|
||||||
|
|
|
||||||
16
WcsMain/ApiServe/Dto/AGV/AGVRequestActionRequest.cs
Normal file
16
WcsMain/ApiServe/Dto/AGV/AGVRequestActionRequest.cs
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace WcsMain.ApiServe.Dto.AGV;
|
||||||
|
|
||||||
|
public class AGVRequestActionRequest
|
||||||
|
{
|
||||||
|
[JsonPropertyName("agvCode")]
|
||||||
|
public string? AgvCode { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("command")]
|
||||||
|
public string? Command { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("jobId")]
|
||||||
|
public string? JobId { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -8,6 +8,32 @@ namespace WcsMain.ApiServe.Dto.AGV;
|
||||||
public class AGVRequestBodyLayout<T>
|
public class AGVRequestBodyLayout<T>
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 数据
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("event")]
|
||||||
|
public AGVRequestBodyDataLayout<T>? Event { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AGVRequestBodyBaseLayout<T>
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 数据
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("event")]
|
||||||
|
public T? Event { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class AGVRequestBodyDataLayout<T>
|
||||||
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 上游任务号
|
/// 上游任务号
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -18,7 +44,7 @@ public class AGVRequestBodyLayout<T>
|
||||||
/// 仓库编号
|
/// 仓库编号
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonPropertyName("warehouseId")]
|
[JsonPropertyName("warehouseId")]
|
||||||
public string? WarehouseId { get; set; }
|
public int? WarehouseId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 快仓系统内部任务号
|
/// 快仓系统内部任务号
|
||||||
|
|
@ -44,6 +70,4 @@ public class AGVRequestBodyLayout<T>
|
||||||
[JsonPropertyName("jobData")]
|
[JsonPropertyName("jobData")]
|
||||||
public T? JobData { get; set; }
|
public T? JobData { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ public class TaskStateNoticeRequest
|
||||||
/// WMS任务号
|
/// WMS任务号
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[JsonPropertyName("wmstaskid")]
|
[JsonPropertyName("wmstaskid")]
|
||||||
public string? WmsTaskId { get; set; }
|
public long? WmsTaskId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 最终到达位置
|
/// 最终到达位置
|
||||||
|
|
@ -39,7 +39,7 @@ public class TaskStateNoticeRequest
|
||||||
/// 21 - 取消
|
/// 21 - 取消
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
[JsonPropertyName("taskstate")]
|
[JsonPropertyName("taskstate")]
|
||||||
public string? TaskState { get; set; }
|
public int? TaskState { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,12 @@ public class SetWmsTask
|
||||||
[JsonPropertyName("priority")]
|
[JsonPropertyName("priority")]
|
||||||
public int? Priority { get; set; }
|
public int? Priority { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 任务状态
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("taskStatus")]
|
||||||
|
public int? TaskStatus { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 任务起点
|
/// 任务起点
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace WcsMain.ApiServe.Dto.WcsDto.WmsTask;
|
||||||
|
|
||||||
|
public class UpdateWmsTaskStatusRequest
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 任务号
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("wmsTaskId")]
|
||||||
|
public string? WmsTaskId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 任务状态
|
||||||
|
/// </summary>
|
||||||
|
[JsonPropertyName("status")]
|
||||||
|
public int? Status { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -5,10 +5,12 @@ using WcsMain.Constant.Enum.Stacker;
|
||||||
using WcsMain.DataBase.Dao;
|
using WcsMain.DataBase.Dao;
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
||||||
|
using WcsMain.EquipOperation.StackerConvey;
|
||||||
|
using WcsMain.ApiClient.AGV;
|
||||||
namespace WcsMain.ApiServe.Service.AGVService;
|
namespace WcsMain.ApiServe.Service.AGVService;
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
public class AGVService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent taskExecuteEvent)
|
public class AGVService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent taskExecuteEvent, StackerConveyOperation stackerConveyOperation, AGVWebApiAction webApiAction)
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// AGV 任务回告
|
/// AGV 任务回告
|
||||||
|
|
@ -26,8 +28,8 @@ public class AGVService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent taskExecut
|
||||||
Body = new() { Code = "ERROR", Success = false, Message = "Body 未能正确解析" }
|
Body = new() { Code = "ERROR", Success = false, Message = "Body 未能正确解析" }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
string? wmsTaskId = bodyData.RobotJobId; // 任务号
|
string? wmsTaskId = bodyData.Event?.RobotJobId; // 任务号
|
||||||
string? status = bodyData.State; // 状态
|
string? status = bodyData.Event?.State; // 状态
|
||||||
if(status == default || wmsTaskId == default)
|
if(status == default || wmsTaskId == default)
|
||||||
{
|
{
|
||||||
return new()
|
return new()
|
||||||
|
|
@ -78,7 +80,19 @@ public class AGVService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent taskExecut
|
||||||
// 若是出库位置则在上报任务完成时上报WMS任务完成
|
// 若是出库位置则在上报任务完成时上报WMS任务完成
|
||||||
if (status == "DONE" || status == "ABNORMAL_COMPLETED")
|
if (status == "DONE" || status == "ABNORMAL_COMPLETED")
|
||||||
{
|
{
|
||||||
if(wmsTask.TaskType == (int)WmsTaskTypeEnum.outTask || wmsTask.TaskType == (int)WmsTaskTypeEnum.agv)
|
Task.Factory.StartNew(() =>
|
||||||
|
{
|
||||||
|
// 如果是完成并且是入库任务或者agv任务则给放货位置写放货完成
|
||||||
|
if (status == "DONE" && (wmsTask.TaskType == (int)WmsTaskTypeEnum.inTask || wmsTask.TaskType == (int)WmsTaskTypeEnum.agv))
|
||||||
|
{
|
||||||
|
string? setLocation = wmsTask.TaskType == (int)WmsTaskTypeEnum.inTask ? wmsTask.MidPoint : wmsTask.Destination;
|
||||||
|
string plcLocation = setLocation == null ? "" : setLocation.Trim().Split('_')[0];
|
||||||
|
string? plcErrtext = stackerConveyOperation.SetVehicelComplete(plcLocation ?? "");
|
||||||
|
ConsoleLog.Info($"AGV 放货完成通知PLC结果:{(string.IsNullOrEmpty(plcErrtext) ? "成功" : plcErrtext)},站台:{plcLocation},箱号:{wmsTask.VehicleNo}");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if(wmsTask.TaskType == (int)WmsTaskTypeEnum.outTask || wmsTask.TaskType == (int)WmsTaskTypeEnum.agv) // 出库或移库
|
||||||
{
|
{
|
||||||
string? errText = taskExecuteEvent.CompleteTaskEvent(wmsTask, "AGV上报完成", wmsTask.Destination);
|
string? errText = taskExecuteEvent.CompleteTaskEvent(wmsTask, "AGV上报完成", wmsTask.Destination);
|
||||||
if (string.IsNullOrEmpty(errText))
|
if (string.IsNullOrEmpty(errText))
|
||||||
|
|
@ -95,7 +109,7 @@ public class AGVService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent taskExecut
|
||||||
Body = new() { Code = "ERROR", Success = false, Message = $"操作异常:{errText}" }
|
Body = new() { Code = "ERROR", Success = false, Message = $"操作异常:{errText}" }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
if(wmsTask.TaskType == (int)WmsTaskTypeEnum.inTask)
|
if(wmsTask.TaskType == (int)WmsTaskTypeEnum.inTask) // 入库
|
||||||
{
|
{
|
||||||
var updateResult = wmsTaskDao.Update(new() { TaskId = wmsTask.TaskId, TaskStatus = (int)WmsTaskStatusEnum.arriveMid, ModifyTime = DateTime.Now });
|
var updateResult = wmsTaskDao.Update(new() { TaskId = wmsTask.TaskId, TaskStatus = (int)WmsTaskStatusEnum.arriveMid, ModifyTime = DateTime.Now });
|
||||||
if(updateResult > 0)
|
if(updateResult > 0)
|
||||||
|
|
@ -145,4 +159,88 @@ public class AGVService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent taskExecut
|
||||||
Body = new() { Code = "ERROR", Success = false, Message = $"操作异常数据更新失败" }
|
Body = new() { Code = "ERROR", Success = false, Message = $"操作异常数据更新失败" }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// AGV请求动作
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="request"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public AGVResponseLayout<AGVResponseLayout<object>> RequestAction(Dto.AGV.AGVRequestLayout<AGVRequestBodyBaseLayout<AGVRequestActionRequest>> request)
|
||||||
|
{
|
||||||
|
string? agvCode = request.Body?.Event?.AgvCode;
|
||||||
|
string? location = request.Body?.Event?.Command;
|
||||||
|
if(string.IsNullOrWhiteSpace(agvCode)|| string.IsNullOrWhiteSpace(location))
|
||||||
|
{
|
||||||
|
return new()
|
||||||
|
{
|
||||||
|
Header = new() { RequestId = request.Header?.RequestId, Version = request.Header?.version, TimeStamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") },
|
||||||
|
Body = new() { Code = "ERROR", Success = false, Message = $"数据无法解析" }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
// [TODO]
|
||||||
|
webApiAction.Send_AGV_Action(agvCode, "TRUE");
|
||||||
|
return new()
|
||||||
|
{
|
||||||
|
Header = new() { RequestId = request.Header?.RequestId, Version = request.Header?.version, TimeStamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") },
|
||||||
|
Body = new() { Code = "SUCCESS", Success = true, Message = "操作成功" }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void test()
|
||||||
|
{
|
||||||
|
Dictionary<string, int> locationIndex = [];
|
||||||
|
/*--------------- 拣选站台 ----------------*/
|
||||||
|
locationIndex.TryAdd("WWYPYA", 0); // 1-1
|
||||||
|
locationIndex.TryAdd("wDj7k3", 1); // 1-2
|
||||||
|
locationIndex.TryAdd("5sNjZj", 2); // 1-3
|
||||||
|
locationIndex.TryAdd("x3hmTx", 3); // 1-4
|
||||||
|
locationIndex.TryAdd("TrkieR", 4); // 2-1
|
||||||
|
locationIndex.TryAdd("fED33G", 5); // 2-2
|
||||||
|
locationIndex.TryAdd("SAwJWb", 6); // 2-3
|
||||||
|
locationIndex.TryAdd("kSyBN2", 7); // 2-4
|
||||||
|
locationIndex.TryAdd("tZQJmY", 8); // 3-1
|
||||||
|
locationIndex.TryAdd("aHB3A4", 9); // 3-2
|
||||||
|
locationIndex.TryAdd("WAdrMA", 10);// 3-3
|
||||||
|
locationIndex.TryAdd("EdW8JH", 11);// 3-4
|
||||||
|
locationIndex.TryAdd("rK5RbX", 12);// 4-1
|
||||||
|
locationIndex.TryAdd("rThaME", 13);// 4-2
|
||||||
|
locationIndex.TryAdd("28PW7p", 14);// 4-3
|
||||||
|
locationIndex.TryAdd("rNH2Bb", 15);// 4-4
|
||||||
|
locationIndex.TryAdd("ZbkKHC", 16);// 5-1
|
||||||
|
locationIndex.TryAdd("YeSNEd", 17);// 5-2
|
||||||
|
locationIndex.TryAdd("QCECwK", 18);// 5-3
|
||||||
|
locationIndex.TryAdd("heYrie", 19);// 5-4
|
||||||
|
locationIndex.TryAdd("byBDnX", 20);// 6
|
||||||
|
/*----------------- 翻包区 -----------------*/
|
||||||
|
locationIndex.TryAdd("TQzNDN", 21);
|
||||||
|
locationIndex.TryAdd("SsNakz", 22);
|
||||||
|
locationIndex.TryAdd("TjtsJf", 23);
|
||||||
|
locationIndex.TryAdd("dM28J8", 24);
|
||||||
|
locationIndex.TryAdd("jAiFNS", 25);
|
||||||
|
locationIndex.TryAdd("AHQGKW", 26);
|
||||||
|
locationIndex.TryAdd("ACEMTS", 27);
|
||||||
|
locationIndex.TryAdd("6HbTKm", 28);
|
||||||
|
/*----------------- 出入库口 -----------------*/
|
||||||
|
locationIndex.TryAdd("FaaZHG", 29);
|
||||||
|
locationIndex.TryAdd("kzxhes", 30);
|
||||||
|
locationIndex.TryAdd("yDN8ZZ", 31);
|
||||||
|
locationIndex.TryAdd("6cDXzi", 32);
|
||||||
|
locationIndex.TryAdd("ranQyi", 33);
|
||||||
|
locationIndex.TryAdd("SxjX8e", 34);
|
||||||
|
locationIndex.TryAdd("jC6x3C", 35);
|
||||||
|
locationIndex.TryAdd("MSP3te", 36);
|
||||||
|
|
||||||
|
locationIndex.TryAdd("611", 29);
|
||||||
|
locationIndex.TryAdd("511", 30);
|
||||||
|
locationIndex.TryAdd("513", 31);
|
||||||
|
locationIndex.TryAdd("411", 32);
|
||||||
|
locationIndex.TryAdd("311", 33);
|
||||||
|
locationIndex.TryAdd("213", 34);
|
||||||
|
locationIndex.TryAdd("211", 35);
|
||||||
|
locationIndex.TryAdd("111", 36);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,16 @@ using WcsMain.Constant.Enum.Stacker;
|
||||||
using WcsMain.DataBase.Dao;
|
using WcsMain.DataBase.Dao;
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
||||||
|
using WcsMain.ApiClient.WMS;
|
||||||
|
using WcsMain.ApiClient.WMS.Dto;
|
||||||
|
using WcsMain.Common;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
|
using WcsMain.EquipOperation.StackerConvey;
|
||||||
|
|
||||||
namespace WcsMain.ApiServe.Service.ContainerService;
|
namespace WcsMain.ApiServe.Service.ContainerService;
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
public class ContainerService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent taskExecuteEvent)
|
public class ContainerService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent taskExecuteEvent, WmsBaseWebApi wmsBaseWebApi, StackerConveyOperation stackerConveyOperation)
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 请求四向车任务
|
/// 请求四向车任务
|
||||||
|
|
@ -23,23 +28,56 @@ public class ContainerService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent task
|
||||||
return new() { Code = "400", Message = "缺少必须参数" };
|
return new() { Code = "400", Message = "缺少必须参数" };
|
||||||
}
|
}
|
||||||
List<AppWmsTask>? wmsTasks = wmsTaskDao.Select(new() { VehicleNo = request.PalleetNo, TaskStatus = (int)WmsTaskStatusEnum.arriveMid })?.OrderByDescending(o => o.CreateTime).ToList();
|
List<AppWmsTask>? wmsTasks = wmsTaskDao.Select(new() { VehicleNo = request.PalleetNo, TaskStatus = (int)WmsTaskStatusEnum.arriveMid })?.OrderByDescending(o => o.CreateTime).ToList();
|
||||||
if(wmsTasks == null)
|
if (wmsTasks == null)
|
||||||
{
|
{
|
||||||
return new() { Code = "400", Message = "数据连接失败,请重试" };
|
return new() { Code = "400", Message = "数据连接失败,请重试" };
|
||||||
}
|
}
|
||||||
if(wmsTasks.Count == 0)
|
bool apply = false;
|
||||||
|
if (wmsTasks.Count == 0)
|
||||||
{
|
{
|
||||||
return new() { Code = "400", Message = "该载具暂无待执行的任务" };
|
/* 请求WMS获取任务 */
|
||||||
|
ApplyInRequest applyInRequest = new()
|
||||||
|
{
|
||||||
|
Point = request.FormCellNo,
|
||||||
|
VehicleNo = request.PalleetNo,
|
||||||
|
};
|
||||||
|
var response = wmsBaseWebApi.HttpPost<ApplyInRequest, WmsResponse>(applyInRequest, CommonData.AppApiBaseInfos.GetAddress("ApplyEnterApiAddress") ?? "");
|
||||||
|
if(response.IsSend && response.ResponseEntity != null && response.ResponseEntity.Code == 0)
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
while(i < 5)
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
Thread.Sleep(1000);
|
||||||
|
wmsTasks = wmsTaskDao.Select(new() { VehicleNo = request.PalleetNo, TaskStatus = (int)WmsTaskStatusEnum.create })?.OrderByDescending(o => o.CreateTime).ToList();
|
||||||
|
if (wmsTasks == null || wmsTasks.Count < 1) continue;
|
||||||
|
apply = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(wmsTasks == default || wmsTasks.Count < 1)
|
||||||
|
{
|
||||||
|
return new() { Code = "400", Message = "无任务,请重试" };
|
||||||
}
|
}
|
||||||
AppWmsTask wmsTask = wmsTasks.First();
|
AppWmsTask wmsTask = wmsTasks.First();
|
||||||
/* 更新状态为前往终点 */
|
/* 更新状态为前往终点 */
|
||||||
var updateResult = wmsTaskDao.Update(new() { TaskId = wmsTask.TaskId, TaskStatus = (int)WmsTaskStatusEnum.toMid, ModifyTime = DateTime.Now });
|
var updateResult = wmsTaskDao.Update(new() { TaskId = wmsTask.TaskId, StartTime = apply ? DateTime.Now : null, TaskStatus = (int)WmsTaskStatusEnum.toDestination, ModifyTime = DateTime.Now });
|
||||||
ConsoleLog.Success($"API更新任务状态结果:{(updateResult > 0 ? "成功" : "失败")},任务号:{wmsTask.TaskId}");
|
ConsoleLog.Success($"API更新任务状态结果:{(updateResult > 0 ? "成功" : "失败")},任务号:{wmsTask.TaskId}");
|
||||||
|
//Task.Factory.StartNew(() =>
|
||||||
|
//{
|
||||||
|
// // 给PLC写完成,原因是四向车给PLC经常写入失败。
|
||||||
|
// Thread.Sleep(500);
|
||||||
|
// for (int i = 0; i < 3; i++)
|
||||||
|
// {
|
||||||
|
// stackerConveyOperation.StandTaskApplyComplete(request.FormCellNo);
|
||||||
|
// }
|
||||||
|
//});
|
||||||
return new()
|
return new()
|
||||||
{
|
{
|
||||||
Code = "200",
|
Code = "200",
|
||||||
Message = "操作成功",
|
Message = "操作成功",
|
||||||
WmsTaskId = wmsTask.TaskId,
|
WmsTaskId = wmsTask.WcsId,
|
||||||
PalletNo = wmsTask.VehicleNo,
|
PalletNo = wmsTask.VehicleNo,
|
||||||
FromCellNo = request.FormCellNo,
|
FromCellNo = request.FormCellNo,
|
||||||
ToCellNo = wmsTask.Destination,
|
ToCellNo = wmsTask.Destination,
|
||||||
|
|
@ -53,11 +91,11 @@ public class ContainerService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent task
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public TaskStateNoticeResponse TaskStateNotice(TaskStateNoticeRequest request)
|
public TaskStateNoticeResponse TaskStateNotice(TaskStateNoticeRequest request)
|
||||||
{
|
{
|
||||||
if(string.IsNullOrEmpty(request.TaskState) || string.IsNullOrEmpty(request.WmsTaskId) || string.IsNullOrEmpty(request.FactendCell))
|
if(string.IsNullOrEmpty(request.TaskState?.ToString()) || string.IsNullOrEmpty(request.WmsTaskId?.ToString()) || string.IsNullOrEmpty(request.FactendCell))
|
||||||
{
|
{
|
||||||
return new() { Code = "400", Message = "缺少必须的参数" };
|
return new() { Code = "400", Message = "缺少必须的参数" };
|
||||||
}
|
}
|
||||||
List<AppWmsTask>? appWmsTasks = wmsTaskDao.Select(new() { TaskId = request.WmsTaskId });
|
List<AppWmsTask>? appWmsTasks = wmsTaskDao.Select(new() { WcsId = request.WmsTaskId?.ToString() });
|
||||||
if(appWmsTasks == null)
|
if(appWmsTasks == null)
|
||||||
{
|
{
|
||||||
return new() { Code = "400", Message = "数据连接异常,请稍后再试" };
|
return new() { Code = "400", Message = "数据连接异常,请稍后再试" };
|
||||||
|
|
@ -67,18 +105,29 @@ public class ContainerService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent task
|
||||||
return new() { Code = "400", Message = $"该任务号不存在:{request.WmsTaskId}" };
|
return new() { Code = "400", Message = $"该任务号不存在:{request.WmsTaskId}" };
|
||||||
}
|
}
|
||||||
AppWmsTask wmsTask = appWmsTasks.First();
|
AppWmsTask wmsTask = appWmsTasks.First();
|
||||||
if (wmsTask.TaskType == (int)WmsTaskTypeEnum.inTask || wmsTask.TaskType == (int)WmsTaskTypeEnum.moveTask)
|
if(request.TaskState?.ToString() == "20")
|
||||||
{
|
{
|
||||||
/* 入库/移库 完成需要反馈WMS任务完成,更新任务状态为完成 */
|
if (wmsTask.TaskType == (int)WmsTaskTypeEnum.inTask || wmsTask.TaskType == (int)WmsTaskTypeEnum.moveTask)
|
||||||
string? errText = taskExecuteEvent.CompleteTaskEvent(wmsTask, "四向车上报完成", request.FactendCell);
|
{
|
||||||
return new() { Code = string.IsNullOrEmpty(errText) ? "200" : "400", Message = string.IsNullOrEmpty(errText) ? "成功" : errText, WmsTaskId = request.WmsTaskId };
|
/* 入库/移库 完成需要反馈WMS任务完成,更新任务状态为完成 */
|
||||||
|
string? errText = taskExecuteEvent.CompleteTaskEvent(wmsTask, "四向车上报完成", request.FactendCell);
|
||||||
|
return new() { Code = string.IsNullOrEmpty(errText) ? "200" : "400", Message = string.IsNullOrEmpty(errText) ? "成功" : errText, WmsTaskId = request.WmsTaskId?.ToString() };
|
||||||
|
}
|
||||||
|
if (wmsTask.TaskType == (int)WmsTaskTypeEnum.outTask)
|
||||||
|
{
|
||||||
|
/* 更新任务状态为到达中间点 */
|
||||||
|
int updateResult = wmsTaskDao.Update(new() { TaskId = wmsTask.TaskId, TaskStatus = (int)WmsTaskStatusEnum.arriveMid, ModifyTime = DateTime.Now, TaskMsg = "四向车上报到达中间点" });
|
||||||
|
return new() { Code = updateResult > 0 ? "200" : "400", Message = updateResult > 0 ? "成功" : "数据异常", WmsTaskId = request.WmsTaskId?.ToString() };
|
||||||
|
}
|
||||||
|
return new() { Code = "400", Message = $"该任务不支持的类型:{request.WmsTaskId}" };
|
||||||
}
|
}
|
||||||
if(wmsTask.TaskType == (int)WmsTaskTypeEnum.outTask)
|
if (request.TaskState?.ToString() == "21")
|
||||||
{
|
{
|
||||||
/* 更新任务状态为到达中间点 */
|
/* 更新任务状态为取消 */
|
||||||
int updateResult = wmsTaskDao.Update(new() { TaskId = wmsTask.TaskId, TaskStatus = (int)WmsTaskStatusEnum.arriveMid, ModifyTime = DateTime.Now });
|
int updateResult = wmsTaskDao.Update(new() { TaskId = wmsTask.TaskId, TaskStatus = (int)WmsTaskStatusEnum.err, TaskMsg = "四向车取消", EndTime = DateTime.Now, ModifyTime = DateTime.Now });
|
||||||
return new() { Code = updateResult > 0 ? "200" : "400", Message = updateResult > 0 ? "成功" : "数据异常", WmsTaskId = request.WmsTaskId };
|
return new() { Code = updateResult > 0 ? "200" : "400", Message = updateResult > 0 ? "成功" : "数据异常", WmsTaskId = request.WmsTaskId?.ToString() };
|
||||||
}
|
}
|
||||||
return new() { Code = "400", Message = $"该任务不支持的类型:{request.WmsTaskId}" };
|
return new() { Code = "400", Message = $"不支持的状态类型:{request.TaskState}" };
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDa
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public WcsApiResponse GetStackerTask(SetWmsTask request)
|
public WcsApiResponse GetStackerTask(SetWmsTask request)
|
||||||
{
|
{
|
||||||
request.TaskId = dataBaseData.GetNewUUID();
|
request.TaskId = dataBaseData.GetNewUUID2();
|
||||||
bool checkData = CheckData.CheckDataRules(request);
|
bool checkData = CheckData.CheckDataRules(request);
|
||||||
if (!checkData)
|
if (!checkData)
|
||||||
{
|
{
|
||||||
|
|
@ -63,8 +63,9 @@ public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDa
|
||||||
AppWmsTask wmsTask = new()
|
AppWmsTask wmsTask = new()
|
||||||
{
|
{
|
||||||
TaskId = request.TaskId,
|
TaskId = request.TaskId,
|
||||||
|
WcsId = dataBaseData.GetNewUUID2(),
|
||||||
TaskType = request.TaskType,
|
TaskType = request.TaskType,
|
||||||
TaskStatus = (int)WmsTaskStatusEnum.create,
|
TaskStatus = request.TaskStatus == default ? (int)WmsTaskStatusEnum.create : request.TaskStatus,
|
||||||
Priority = request.Priority ?? 0,
|
Priority = request.Priority ?? 0,
|
||||||
Origin = request.Origin,
|
Origin = request.Origin,
|
||||||
MidPoint = request.Midpoint,
|
MidPoint = request.Midpoint,
|
||||||
|
|
@ -127,6 +128,25 @@ public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDa
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新任务状态
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="request"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public WcsApiResponse UpdateWmsTaskStatus(UpdateWmsTaskStatusRequest request)
|
||||||
|
{
|
||||||
|
if(request.WmsTaskId == default || request.Status == default)
|
||||||
|
{
|
||||||
|
return WcsApiResponseFactory.RequestErr();
|
||||||
|
}
|
||||||
|
var updateResult = wmsTaskDao.Update(new AppWmsTask { TaskId = request.WmsTaskId, TaskStatus = request.Status, TaskMsg = $"WCS界面修改状态:{request.Status}" });
|
||||||
|
if(updateResult > 0)
|
||||||
|
{
|
||||||
|
return WcsApiResponseFactory.Success();
|
||||||
|
}
|
||||||
|
return WcsApiResponseFactory.DataBaseErr();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -8,10 +8,12 @@ using WcsMain.Common;
|
||||||
using WcsMain.Constant.Enum.Stacker;
|
using WcsMain.Constant.Enum.Stacker;
|
||||||
using WcsMain.DataBase.Dao;
|
using WcsMain.DataBase.Dao;
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
using WcsMain.ExtendMethod;
|
|
||||||
using WcsMain.StaticData;
|
using WcsMain.StaticData;
|
||||||
using WcsMain.Utils.Plugins;
|
using WcsMain.Utils.Plugins;
|
||||||
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
|
using WcsMain.Common.DataService;
|
||||||
|
using WcsMain.DataBase.MixDao;
|
||||||
|
|
||||||
namespace WcsMain.ApiServe.Service.WmsService;
|
namespace WcsMain.ApiServe.Service.WmsService;
|
||||||
|
|
||||||
|
|
@ -19,76 +21,74 @@ namespace WcsMain.ApiServe.Service.WmsService;
|
||||||
/// Wms任务接口逻辑
|
/// Wms任务接口逻辑
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Service]
|
[Service]
|
||||||
public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDao)
|
public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDao, DataBaseData dataBaseData)
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 接收WMS任务数据处理
|
/// 接收WMS任务数据处理
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="request"></param>
|
/// <param name="request"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public WmsApiResponse<List<GetStackerRequest>> GetStackerTask(List<GetStackerRequest> request)
|
public WmsApiResponse<List<GetStackerRequest>> GetStackerTask(GetStackerRequest request)
|
||||||
{
|
{
|
||||||
if (request.Count < 1 || request.Count > 20) return WmsApiResponseFactory.RequestErr<List<GetStackerRequest>>(null, "请求的任务数量只能在 1 至 20 范围内");
|
//if (request.Count < 1 || request.Count > 20) return WmsApiResponseFactory.RequestErr<List<GetStackerRequest>>(null, "请求的任务数量只能在 1 至 20 范围内");
|
||||||
List<GetStackerRequest> errRequest = []; // 存放错误的请求
|
List<GetStackerRequest> errRequest = []; // 存放错误的请求
|
||||||
/* 插入库存信息 */ // ---- 库存由WMS管理,数据库表也无需操作
|
/* 插入库存信息 */ // ---- 库存由WMS管理,数据库表也无需操作
|
||||||
List<AppWmsTask> wmsTasks = [];
|
List<AppWmsTask> wmsTasks = [];
|
||||||
foreach (var taskData in request)
|
/* 检验传入的数据格式 */
|
||||||
|
bool checkData = CheckData.CheckDataRules(request);
|
||||||
|
if (!checkData)
|
||||||
{
|
{
|
||||||
/* 检验传入的数据格式 */
|
var errorRequest = ObjectCopy.CopyProperties<GetStackerRequest, GetStackerRequest>(request);
|
||||||
bool checkData = CheckData.CheckDataRules(taskData);
|
errRequest.Add(errorRequest);
|
||||||
if (!checkData)
|
|
||||||
{
|
|
||||||
var errorRequest = ObjectCopy.CopyProperties<GetStackerRequest, GetStackerRequest>(taskData);
|
|
||||||
errRequest.Add(errorRequest);
|
|
||||||
}
|
|
||||||
/* 检验起点和终点是否正常 */
|
|
||||||
if(taskData.TaskType == (int)WmsTaskTypeEnum.moveTask)
|
|
||||||
{
|
|
||||||
var existOringin = CommonData.AppLocations.ExistWmsLocation(taskData.Origin);
|
|
||||||
var existDestination = CommonData.AppLocations.ExistWmsLocation(taskData.Destination);
|
|
||||||
if (!existOringin || !existDestination)
|
|
||||||
{
|
|
||||||
var errorRequest = ObjectCopy.CopyProperties<GetStackerRequest, GetStackerRequest>(taskData);
|
|
||||||
errRequest.Add(errorRequest);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if(taskData.TaskType == (int)WmsTaskTypeEnum.inTask)
|
|
||||||
{
|
|
||||||
var existDestination = CommonData.AppLocations.ExistWmsLocation(taskData.Destination);
|
|
||||||
if (!existDestination)
|
|
||||||
{
|
|
||||||
var errorRequest = ObjectCopy.CopyProperties<GetStackerRequest, GetStackerRequest>(taskData);
|
|
||||||
errRequest.Add(errorRequest);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if(taskData.TaskType == (int)WmsTaskTypeEnum.outTask)
|
|
||||||
{
|
|
||||||
var existOringin = CommonData.AppLocations.ExistWmsLocation(taskData.Origin);
|
|
||||||
if (!existOringin)
|
|
||||||
{
|
|
||||||
var errorRequest = ObjectCopy.CopyProperties<GetStackerRequest, GetStackerRequest>(taskData);
|
|
||||||
errRequest.Add(errorRequest);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* 构造任务 */
|
|
||||||
wmsTasks.Add(new AppWmsTask()
|
|
||||||
{
|
|
||||||
TaskId = taskData.TaskId,
|
|
||||||
TaskType = taskData.TaskType,
|
|
||||||
TaskStatus = (int)WmsTaskStatusEnum.create,
|
|
||||||
Priority = taskData.Priority ?? -1,
|
|
||||||
Origin = taskData.Origin,
|
|
||||||
MidPoint = taskData.Midpoint,
|
|
||||||
Destination = taskData.Destination,
|
|
||||||
VehicleNo = taskData.VehicleNo,
|
|
||||||
VehicleSize = taskData.VehicleSize ?? -1,
|
|
||||||
Weight = taskData.Weight ?? -1,
|
|
||||||
CreateTime = DateTime.Now,
|
|
||||||
ModifyTime = DateTime.Now,
|
|
||||||
CreatePerson = StaticString.WMS,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
if(errRequest.Count > 0) // 如果有错误请求,则返回错误请求
|
///* 检验起点和终点是否正常 */
|
||||||
|
//if (request.TaskType == (int)WmsTaskTypeEnum.moveTask)
|
||||||
|
//{
|
||||||
|
// var existOringin = CommonData.AppLocations.ExistWmsLocation(request.Origin);
|
||||||
|
// var existDestination = CommonData.AppLocations.ExistWmsLocation(request.Destination);
|
||||||
|
// if (!existOringin || !existDestination)
|
||||||
|
// {
|
||||||
|
// var errorRequest = ObjectCopy.CopyProperties<GetStackerRequest, GetStackerRequest>(request);
|
||||||
|
// errRequest.Add(errorRequest);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
//else if (request.TaskType == (int)WmsTaskTypeEnum.inTask)
|
||||||
|
//{
|
||||||
|
// var existDestination = CommonData.AppLocations.ExistWmsLocation(request.Destination);
|
||||||
|
// if (!existDestination)
|
||||||
|
// {
|
||||||
|
// var errorRequest = ObjectCopy.CopyProperties<GetStackerRequest, GetStackerRequest>(request);
|
||||||
|
// errRequest.Add(errorRequest);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
//else if (request.TaskType == (int)WmsTaskTypeEnum.outTask)
|
||||||
|
//{
|
||||||
|
// var existOringin = CommonData.AppLocations.ExistWmsLocation(request.Origin);
|
||||||
|
// if (!existOringin)
|
||||||
|
// {
|
||||||
|
// var errorRequest = ObjectCopy.CopyProperties<GetStackerRequest, GetStackerRequest>(request);
|
||||||
|
// errRequest.Add(errorRequest);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
/* 构造任务 */
|
||||||
|
wmsTasks.Add(new AppWmsTask()
|
||||||
|
{
|
||||||
|
TaskId = request.TaskId,
|
||||||
|
WcsId = dataBaseData.GetNewUUID2(),
|
||||||
|
TaskType = request.TaskType,
|
||||||
|
TaskStatus = (int)WmsTaskStatusEnum.create,
|
||||||
|
Priority = request.Priority ?? -1,
|
||||||
|
Origin = request.Origin,
|
||||||
|
MidPoint = request.Midpoint,
|
||||||
|
Destination = request.Destination,
|
||||||
|
VehicleNo = request.VehicleNo,
|
||||||
|
VehicleSize = request.VehicleSize ?? -1,
|
||||||
|
Weight = request.Weight ?? -1,
|
||||||
|
CreateTime = DateTime.Now,
|
||||||
|
ModifyTime = DateTime.Now,
|
||||||
|
CreatePerson = StaticString.WMS,
|
||||||
|
});
|
||||||
|
if (errRequest.Count > 0) // 如果有错误请求,则返回错误请求
|
||||||
{
|
{
|
||||||
return WmsApiResponseFactory.RequestErr(errRequest, "请求的任务数据存在异常");
|
return WmsApiResponseFactory.RequestErr(errRequest, "请求的任务数据存在异常");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
using WcsMain.ExtendMethod;
|
using WcsMain.DataBase.Dao;
|
||||||
using WcsMain.DataBase.Dao;
|
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
using WcsMain.DataBase.MixDao;
|
using WcsMain.DataBase.MixDao;
|
||||||
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
||||||
|
|
@ -7,6 +6,7 @@ using WcsMain.StaticData;
|
||||||
using WcsMain.ApiClient.WMS;
|
using WcsMain.ApiClient.WMS;
|
||||||
using WcsMain.Constant.Enum.Stacker;
|
using WcsMain.Constant.Enum.Stacker;
|
||||||
using WcsMain.Constant.Enum.TaskEnum;
|
using WcsMain.Constant.Enum.TaskEnum;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
|
|
||||||
namespace WcsMain.Business.CommonAction;
|
namespace WcsMain.Business.CommonAction;
|
||||||
|
|
||||||
|
|
@ -159,6 +159,7 @@ public class WCSTaskExecuteEvent(TaskDao taskDao, SendWmsTaskStatus sendWmsTaskS
|
||||||
public string? CompleteTaskEvent(AppWmsTask task, string msg, string? destination)
|
public string? CompleteTaskEvent(AppWmsTask task, string msg, string? destination)
|
||||||
{
|
{
|
||||||
/* 更新任务信息,任务完成 */
|
/* 更新任务信息,任务完成 */
|
||||||
|
task.Destination = string.IsNullOrEmpty(destination) ? task.Destination : task.Destination + "_" + destination;
|
||||||
string? errText = taskDao.ComlpeteTask(task, msg);
|
string? errText = taskDao.ComlpeteTask(task, msg);
|
||||||
if (!string.IsNullOrEmpty(errText))
|
if (!string.IsNullOrEmpty(errText))
|
||||||
{
|
{
|
||||||
|
|
@ -172,6 +173,22 @@ public class WCSTaskExecuteEvent(TaskDao taskDao, SendWmsTaskStatus sendWmsTaskS
|
||||||
return errText;
|
return errText;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string? CancelTaskEvent(AppWmsTask task, string msg, string? destination)
|
||||||
|
{
|
||||||
|
/* 更新任务信息,任务完成 */
|
||||||
|
int updateResult = wmsTaskDao.Update(new() { TaskId = task.TaskId, TaskStatus = task.TaskType = (int)WmsTaskStatusEnum.err, TaskMsg = msg, ModifyTime = DateTime.Now });
|
||||||
|
if (updateResult < 1)
|
||||||
|
{
|
||||||
|
ConsoleLog.Warning($"【异常】任务取消更新WMS任务状态失败");
|
||||||
|
}
|
||||||
|
//if (task.CreatePerson == StaticData.StaticString.WMS)
|
||||||
|
//{
|
||||||
|
// /* 上报WMS */
|
||||||
|
// sendWmsTaskStatus.SendTaskComplete(task.TaskId, destination: destination);
|
||||||
|
//}
|
||||||
|
return "更新信息失败";
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 发送任务离开起始位置
|
/// 发送任务离开起始位置
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -182,7 +199,7 @@ public class WCSTaskExecuteEvent(TaskDao taskDao, SendWmsTaskStatus sendWmsTaskS
|
||||||
int updateResult = wmsTaskDao.Update(new() { TaskId = task.TaskId, TaskStatus = task.TaskType == (int)WmsTaskTypeEnum.moveTask ? (int)WmsTaskStatusEnum.toDestination : (int)WmsTaskStatusEnum.toMid, ModifyTime = DateTime.Now });
|
int updateResult = wmsTaskDao.Update(new() { TaskId = task.TaskId, TaskStatus = task.TaskType == (int)WmsTaskTypeEnum.moveTask ? (int)WmsTaskStatusEnum.toDestination : (int)WmsTaskStatusEnum.toMid, ModifyTime = DateTime.Now });
|
||||||
if (updateResult < 1)
|
if (updateResult < 1)
|
||||||
{
|
{
|
||||||
ConsoleLog.Warning($"【异常】任务完成更新WMS任务状态失败");
|
ConsoleLog.Warning($"【异常】任务离开起点更新WMS任务状态失败");
|
||||||
}
|
}
|
||||||
if (task.CreatePerson == StaticData.StaticString.WMS)
|
if (task.CreatePerson == StaticData.StaticString.WMS)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
using WcsMain.ApiClient.WMS.Dto;
|
using WcsMain.ApiClient.WMS.Dto;
|
||||||
using WcsMain.Business.Convey.HistoryDataHandler.HisGetData.I;
|
using WcsMain.Business.Convey.HistoryDataHandler.HisGetData.I;
|
||||||
using WcsMain.Common;
|
using WcsMain.Common;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
using WcsMain.ExtendMethod;
|
|
||||||
|
|
||||||
namespace WcsMain.Business.Convey.HistoryDataHandler.HisGetData;
|
namespace WcsMain.Business.Convey.HistoryDataHandler.HisGetData;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,11 @@ using WcsMain.Business.Convey.HistoryDataHandler.HisGetData.I;
|
||||||
using WcsMain.Common;
|
using WcsMain.Common;
|
||||||
using WcsMain.Common.DataService;
|
using WcsMain.Common.DataService;
|
||||||
using WcsMain.Constant.Enum.Convey;
|
using WcsMain.Constant.Enum.Convey;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
using WcsMain.DataBase.Dao;
|
using WcsMain.DataBase.Dao;
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
using WcsMain.EquipOperation.Convey;
|
using WcsMain.EquipOperation.Convey;
|
||||||
using WcsMain.EquipOperation.Entity;
|
using WcsMain.EquipOperation.Entity;
|
||||||
using WcsMain.ExtendMethod;
|
|
||||||
|
|
||||||
namespace WcsMain.Business.Convey.HistoryDataHandler.HisGetData;
|
namespace WcsMain.Business.Convey.HistoryDataHandler.HisGetData;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,11 @@ using WcsMain.Business.Convey.HistoryDataHandler.HisGetData.I;
|
||||||
using WcsMain.Common;
|
using WcsMain.Common;
|
||||||
using WcsMain.Common.DataService;
|
using WcsMain.Common.DataService;
|
||||||
using WcsMain.Constant.Enum.Convey;
|
using WcsMain.Constant.Enum.Convey;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
using WcsMain.DataBase.Dao;
|
using WcsMain.DataBase.Dao;
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
using WcsMain.EquipOperation.Convey;
|
using WcsMain.EquipOperation.Convey;
|
||||||
using WcsMain.EquipOperation.Entity;
|
using WcsMain.EquipOperation.Entity;
|
||||||
using WcsMain.ExtendMethod;
|
|
||||||
|
|
||||||
namespace WcsMain.Business.Convey.HistoryDataHandler.HisGetData;
|
namespace WcsMain.Business.Convey.HistoryDataHandler.HisGetData;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,11 @@ using WcsMain.Common;
|
||||||
using WcsMain.Common.DataService;
|
using WcsMain.Common.DataService;
|
||||||
using WcsMain.Constant.Enum.Convey;
|
using WcsMain.Constant.Enum.Convey;
|
||||||
using WcsMain.Constant.Enum.Stacker;
|
using WcsMain.Constant.Enum.Stacker;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
using WcsMain.DataBase.Dao;
|
using WcsMain.DataBase.Dao;
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
using WcsMain.EquipOperation.Convey;
|
using WcsMain.EquipOperation.Convey;
|
||||||
using WcsMain.EquipOperation.Entity;
|
using WcsMain.EquipOperation.Entity;
|
||||||
using WcsMain.ExtendMethod;
|
|
||||||
|
|
||||||
namespace WcsMain.Business.Convey.HistoryDataHandler.HisGetData;
|
namespace WcsMain.Business.Convey.HistoryDataHandler.HisGetData;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,11 @@ using WcsMain.Common;
|
||||||
using WcsMain.Common.DataService;
|
using WcsMain.Common.DataService;
|
||||||
using WcsMain.Constant.Enum.Convey;
|
using WcsMain.Constant.Enum.Convey;
|
||||||
using WcsMain.Constant.Enum.Stacker;
|
using WcsMain.Constant.Enum.Stacker;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
using WcsMain.DataBase.Dao;
|
using WcsMain.DataBase.Dao;
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
using WcsMain.EquipOperation.Convey;
|
using WcsMain.EquipOperation.Convey;
|
||||||
using WcsMain.EquipOperation.Entity;
|
using WcsMain.EquipOperation.Entity;
|
||||||
using WcsMain.ExtendMethod;
|
|
||||||
|
|
||||||
namespace WcsMain.Business.Convey.HistoryDataHandler.HisGetData;
|
namespace WcsMain.Business.Convey.HistoryDataHandler.HisGetData;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ using WcsMain.DataBase.TableEntity;
|
||||||
using WcsMain.EquipOperation.ElTag;
|
using WcsMain.EquipOperation.ElTag;
|
||||||
using WcsMain.ExtendMethod;
|
using WcsMain.ExtendMethod;
|
||||||
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
|
|
||||||
namespace WcsMain.Business.ElTag.Atop;
|
namespace WcsMain.Business.ElTag.Atop;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,10 @@ using WcsMain.ApiClient.WMS;
|
||||||
using WcsMain.ApiClient.WMS.Dto;
|
using WcsMain.ApiClient.WMS.Dto;
|
||||||
using WcsMain.Common;
|
using WcsMain.Common;
|
||||||
using WcsMain.Constant.Enum.Convey;
|
using WcsMain.Constant.Enum.Convey;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
using WcsMain.DataBase.Dao;
|
using WcsMain.DataBase.Dao;
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
using WcsMain.EquipOperation.Convey;
|
using WcsMain.EquipOperation.Convey;
|
||||||
using WcsMain.ExtendMethod;
|
|
||||||
|
|
||||||
namespace WcsMain.CirculationJob.Convey;
|
namespace WcsMain.CirculationJob.Convey;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,10 @@ using WcsMain.ApiClient.WMS;
|
||||||
using WcsMain.ApiClient.WMS.Dto;
|
using WcsMain.ApiClient.WMS.Dto;
|
||||||
using WcsMain.Common;
|
using WcsMain.Common;
|
||||||
using WcsMain.Constant.Enum.Convey;
|
using WcsMain.Constant.Enum.Convey;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
using WcsMain.DataBase.Dao;
|
using WcsMain.DataBase.Dao;
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
using WcsMain.EquipOperation.Convey;
|
using WcsMain.EquipOperation.Convey;
|
||||||
using WcsMain.ExtendMethod;
|
|
||||||
|
|
||||||
namespace WcsMain.CirculationJob.Convey;
|
namespace WcsMain.CirculationJob.Convey;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,11 @@
|
||||||
using WcsMain.Business.CommonAction;
|
using WcsMain.Business.CommonAction;
|
||||||
using WcsMain.Common;
|
using WcsMain.Common;
|
||||||
using WcsMain.Constant.Enum;
|
using WcsMain.Constant.Enum;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
using WcsMain.DataBase.Dao;
|
using WcsMain.DataBase.Dao;
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
using WcsMain.EquipOperation.Entity;
|
using WcsMain.EquipOperation.Entity;
|
||||||
using WcsMain.EquipOperation.Stacker;
|
using WcsMain.EquipOperation.Stacker;
|
||||||
using WcsMain.ExtendMethod;
|
|
||||||
|
|
||||||
namespace WcsMain.CirculationJob.Stacker;
|
namespace WcsMain.CirculationJob.Stacker;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ using WcsMain.Business.CommonAction;
|
||||||
using WcsMain.Common;
|
using WcsMain.Common;
|
||||||
using WcsMain.Common.DataService;
|
using WcsMain.Common.DataService;
|
||||||
using WcsMain.Constant.Enum.Stacker;
|
using WcsMain.Constant.Enum.Stacker;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
using WcsMain.DataBase.Dao;
|
using WcsMain.DataBase.Dao;
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
using WcsMain.EquipOperation.Convey;
|
using WcsMain.EquipOperation.Convey;
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ using WcsMain.Business.CommonAction;
|
||||||
using WcsMain.Common;
|
using WcsMain.Common;
|
||||||
using WcsMain.Constant.Enum.Stacker;
|
using WcsMain.Constant.Enum.Stacker;
|
||||||
using WcsMain.Constant.Enum.TaskEnum;
|
using WcsMain.Constant.Enum.TaskEnum;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
using WcsMain.DataBase.Dao;
|
using WcsMain.DataBase.Dao;
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
using WcsMain.EquipOperation.Entity.Stacker;
|
using WcsMain.EquipOperation.Entity.Stacker;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
using CirculateTool.Attribute;
|
using System.Runtime;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using CirculateTool.Attribute;
|
||||||
using WcsMain.ApiClient.AGV;
|
using WcsMain.ApiClient.AGV;
|
||||||
using WcsMain.ApiClient.Shuttle;
|
using WcsMain.ApiClient.Shuttle;
|
||||||
using WcsMain.Constant.Enum.General;
|
using WcsMain.Constant.Enum.General;
|
||||||
|
|
@ -67,6 +69,15 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta
|
||||||
/// <param name="wmsTask"></param>
|
/// <param name="wmsTask"></param>
|
||||||
private void ExecuteAGVTask(AppWmsTask wmsTask)
|
private void ExecuteAGVTask(AppWmsTask wmsTask)
|
||||||
{
|
{
|
||||||
|
string[] stand = ["FaaZHG", "kzxhes", "yDN8ZZ", "6cDXzi", "ranQyi", "SxjX8e", "jC6x3C", "MSP3te"];
|
||||||
|
if (string.IsNullOrEmpty(wmsTask.Destination)) return;
|
||||||
|
if (stand.Contains(wmsTask.Destination))
|
||||||
|
{
|
||||||
|
// 获取终点的任务,没有任务可以发送
|
||||||
|
List<AppWmsTask> tasks = [];
|
||||||
|
tasks.AddRange(wmsTaskDao.SelectRunningTask(wmsTask.Destination) ?? []);
|
||||||
|
if (tasks == default || tasks.Count > 0) return;
|
||||||
|
}
|
||||||
string errText = agvAction.Send_NO_VERIFY_BUCKET_MOVE(wmsTask);
|
string errText = agvAction.Send_NO_VERIFY_BUCKET_MOVE(wmsTask);
|
||||||
if (!string.IsNullOrEmpty(errText))
|
if (!string.IsNullOrEmpty(errText))
|
||||||
{
|
{
|
||||||
|
|
@ -75,21 +86,26 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta
|
||||||
}
|
}
|
||||||
ConsoleLog.Success($"AGV点对点搬运请求AGV服务成功,任务号:{wmsTask.TaskId}");
|
ConsoleLog.Success($"AGV点对点搬运请求AGV服务成功,任务号:{wmsTask.TaskId}");
|
||||||
/* 更新任务状态为执行中 */
|
/* 更新任务状态为执行中 */
|
||||||
var updateResult = wmsTaskDao.Update(new() { TaskId = wmsTask.TaskId, TaskStatus = (int)WmsTaskStatusEnum.running, ModifyTime = DateTime.Now });
|
var updateResult = wmsTaskDao.Update(new() { TaskId = wmsTask.TaskId, TaskStatus = (int)WmsTaskStatusEnum.running, StartTime = DateTime.Now, ModifyTime = DateTime.Now });
|
||||||
ConsoleLog.Success($"更新任务状态结果:{(updateResult > 0 ? "成功" : "失败")},任务号:{wmsTask.TaskId}");
|
ConsoleLog.Success($"更新任务状态结果:{(updateResult > 0 ? "成功" : "失败")},任务号:{wmsTask.TaskId}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 执行入库任务
|
/// 执行入库任务 --- AGV搬运
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="wmsTask"></param>
|
/// <param name="wmsTask"></param>
|
||||||
private void ExecuteInTask(AppWmsTask wmsTask)
|
private void ExecuteInTask(AppWmsTask wmsTask)
|
||||||
{
|
{
|
||||||
string? midPoint = GetEmptyInLift(wmsTask.Destination);
|
string? midPoint = wmsTask.MidPoint;
|
||||||
|
if (string.IsNullOrEmpty(wmsTask.Origin) || Regex.IsMatch(wmsTask.Origin, "^\\d+$")) return;
|
||||||
|
if (string.IsNullOrEmpty(midPoint))
|
||||||
|
{
|
||||||
|
midPoint = GetEmptyInLift(wmsTask.Destination);
|
||||||
|
}
|
||||||
if (string.IsNullOrEmpty(midPoint)) return; // 没有可用的站台
|
if (string.IsNullOrEmpty(midPoint)) return; // 没有可用的站台
|
||||||
/* 发送AGV 搬运任务 */
|
/* 发送AGV 搬运任务 */
|
||||||
string errText = agvAction.Send_AGV_TASK(wmsTask.TaskId, wmsTask.Origin, midPoint);
|
string errText = agvAction.Send_AGV_TASK(wmsTask.TaskId, wmsTask.Origin, midPoint, 1);
|
||||||
if (!string.IsNullOrEmpty(errText))
|
if (!string.IsNullOrEmpty(errText))
|
||||||
{
|
{
|
||||||
ConsoleLog.Warning($"【警告】入库请求AGV搬运失败,任务号:{wmsTask.TaskId},异常信息:{errText}");
|
ConsoleLog.Warning($"【警告】入库请求AGV搬运失败,任务号:{wmsTask.TaskId},异常信息:{errText}");
|
||||||
|
|
@ -97,7 +113,7 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta
|
||||||
}
|
}
|
||||||
ConsoleLog.Success($"入库搬运请求AGV成功,任务号:{wmsTask.TaskId}");
|
ConsoleLog.Success($"入库搬运请求AGV成功,任务号:{wmsTask.TaskId}");
|
||||||
/* 更新任务状态为前往中间点,更新中间点 */
|
/* 更新任务状态为前往中间点,更新中间点 */
|
||||||
var updateResult = wmsTaskDao.Update(new() { TaskId = wmsTask.TaskId, MidPoint = midPoint, TaskStatus = (int)WmsTaskStatusEnum.toMid, ModifyTime = DateTime.Now });
|
var updateResult = wmsTaskDao.Update(new() { TaskId = wmsTask.TaskId, MidPoint = midPoint, TaskStatus = (int)WmsTaskStatusEnum.toMid, StartTime = DateTime.Now, ModifyTime = DateTime.Now });
|
||||||
ConsoleLog.Success($"更新任务状态结果:{(updateResult > 0 ? "成功" : "失败")},任务号:{wmsTask.TaskId}");
|
ConsoleLog.Success($"更新任务状态结果:{(updateResult > 0 ? "成功" : "失败")},任务号:{wmsTask.TaskId}");
|
||||||
/* 四向车任务有接口返回给四向车 */
|
/* 四向车任务有接口返回给四向车 */
|
||||||
}
|
}
|
||||||
|
|
@ -108,18 +124,22 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta
|
||||||
/// <param name="wmsTask"></param>
|
/// <param name="wmsTask"></param>
|
||||||
private void ExecuteOutTask(AppWmsTask wmsTask)
|
private void ExecuteOutTask(AppWmsTask wmsTask)
|
||||||
{
|
{
|
||||||
string? midPoint = GetEmptyOutLift(wmsTask.Origin);
|
string? midPoint = wmsTask.MidPoint;
|
||||||
|
if(string.IsNullOrEmpty(midPoint))
|
||||||
|
{
|
||||||
|
midPoint = GetEmptyOutLift(wmsTask.Origin);
|
||||||
|
}
|
||||||
if (string.IsNullOrEmpty(midPoint)) return; // 没有可用站台
|
if (string.IsNullOrEmpty(midPoint)) return; // 没有可用站台
|
||||||
/* 发送四向车搬运任务 */
|
/* 发送四向车搬运任务 */
|
||||||
string? errText = containerAction.ExecuteOutTask(wmsTask.TaskId, wmsTask.Origin, midPoint, wmsTask.VehicleNo);
|
string? errText = containerAction.ExecuteOutTask(wmsTask.WcsId, wmsTask.Origin, midPoint, wmsTask.VehicleNo);
|
||||||
if (!string.IsNullOrEmpty(errText))
|
if (!string.IsNullOrEmpty(errText))
|
||||||
{
|
{
|
||||||
ConsoleLog.Warning($"【警告】入库请求四向车搬运失败,任务号:{wmsTask.TaskId},异常信息:{errText}");
|
ConsoleLog.Warning($"【警告】出库请求四向车搬运失败,任务号:{wmsTask.TaskId},异常信息:{errText}");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ConsoleLog.Success($"入库搬运请求四向车成功,任务号:{wmsTask.TaskId}");
|
ConsoleLog.Success($"出库搬运请求四向车成功,任务号:{wmsTask.TaskId}/{wmsTask.WcsId}");
|
||||||
/* 更新任务状态为前往中间点,更新中间点 */
|
/* 更新任务状态为前往中间点,更新中间点 */
|
||||||
var updateResult = wmsTaskDao.Update(new() { TaskId = wmsTask.TaskId, MidPoint = midPoint, TaskStatus = (int)WmsTaskStatusEnum.toMid, ModifyTime = DateTime.Now });
|
var updateResult = wmsTaskDao.Update(new() { TaskId = wmsTask.TaskId, MidPoint = midPoint, TaskStatus = (int)WmsTaskStatusEnum.toMid, StartTime = DateTime.Now, ModifyTime = DateTime.Now });
|
||||||
ConsoleLog.Success($"更新任务状态结果:{(updateResult > 0 ? "成功" : "失败")},任务号:{wmsTask.TaskId}");
|
ConsoleLog.Success($"更新任务状态结果:{(updateResult > 0 ? "成功" : "失败")},任务号:{wmsTask.TaskId}");
|
||||||
/* AGV接续任务由定时器触发 */
|
/* AGV接续任务由定时器触发 */
|
||||||
}
|
}
|
||||||
|
|
@ -134,12 +154,12 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta
|
||||||
string errText = containerAction.ExecuteMoveTask(wmsTask);
|
string errText = containerAction.ExecuteMoveTask(wmsTask);
|
||||||
if (!string.IsNullOrEmpty(errText))
|
if (!string.IsNullOrEmpty(errText))
|
||||||
{
|
{
|
||||||
ConsoleLog.Warning($"四向车移库任务请求四向车服务失败,任务号:{wmsTask.TaskId},异常信息:{errText}");
|
ConsoleLog.Warning($"四向车移库任务请求四向车服务失败,任务号:{wmsTask.TaskId}/{wmsTask.WcsId},异常信息:{errText}");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ConsoleLog.Success($"四向车移库任务请求四向车服务成功,任务号:{wmsTask.TaskId}");
|
ConsoleLog.Success($"四向车移库任务请求四向车服务成功,任务号:{wmsTask.TaskId}/{wmsTask.WcsId}");
|
||||||
/* 更新任务状态为执行中 */
|
/* 更新任务状态为执行中 */
|
||||||
var updateResult = wmsTaskDao.Update(new() { TaskId = wmsTask.TaskId, TaskStatus = (int)WmsTaskStatusEnum.running, ModifyTime = DateTime.Now });
|
var updateResult = wmsTaskDao.Update(new() { TaskId = wmsTask.TaskId, TaskStatus = (int)WmsTaskStatusEnum.running, StartTime = DateTime.Now, ModifyTime = DateTime.Now });
|
||||||
ConsoleLog.Success($"更新任务状态结果:{(updateResult > 0 ? "成功" : "失败")},任务号:{wmsTask.TaskId}");
|
ConsoleLog.Success($"更新任务状态结果:{(updateResult > 0 ? "成功" : "失败")},任务号:{wmsTask.TaskId}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -156,7 +176,7 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta
|
||||||
(string errText, short model, short allowAction, short errCode, string code) = stackerConveyOperation.GetLiftInfo(liftInfo.LiftId ?? "");
|
(string errText, short model, short allowAction, short errCode, string code) = stackerConveyOperation.GetLiftInfo(liftInfo.LiftId ?? "");
|
||||||
if (!string.IsNullOrEmpty(errText))
|
if (!string.IsNullOrEmpty(errText))
|
||||||
{
|
{
|
||||||
ConsoleLog.Warning($"【警告】提升机站台信息获取失败,异常信息:{errText}");
|
//ConsoleLog.Warning($"【警告】提升机站台信息获取失败,异常信息:{errText}");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (model != 2 || allowAction != (short)TrueFalseEnum.TRUE || errCode != 0) continue; // 不满足执行条件
|
if (model != 2 || allowAction != (short)TrueFalseEnum.TRUE || errCode != 0) continue; // 不满足执行条件
|
||||||
|
|
@ -164,8 +184,9 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta
|
||||||
List<AppWmsTask>? tasks = wmsTaskDao.Select(new() { VehicleNo = code, TaskStatus = (int)WmsTaskStatusEnum.arriveMid })?.OrderByDescending(o => o.CreateTime).ToList();
|
List<AppWmsTask>? tasks = wmsTaskDao.Select(new() { VehicleNo = code, TaskStatus = (int)WmsTaskStatusEnum.arriveMid })?.OrderByDescending(o => o.CreateTime).ToList();
|
||||||
if (tasks == null || tasks.Count == 0) continue;
|
if (tasks == null || tasks.Count == 0) continue;
|
||||||
var task = tasks.First();
|
var task = tasks.First();
|
||||||
|
if (string.IsNullOrEmpty(task.Destination)) continue;
|
||||||
/* 下发任务 */
|
/* 下发任务 */
|
||||||
string agvErrText = agvAction.Send_AGV_TASK(task.TaskId, task.MidPoint, task.Destination);
|
string agvErrText = agvAction.Send_AGV_TASK(task.TaskId, GetAgvNo(task.MidPoint), task.Destination);
|
||||||
if (!string.IsNullOrEmpty(agvErrText))
|
if (!string.IsNullOrEmpty(agvErrText))
|
||||||
{
|
{
|
||||||
ConsoleLog.Warning($"【警告】AGV出库任务请求AGV服务失败,任务号:{task.TaskId},异常信息:{agvErrText}");
|
ConsoleLog.Warning($"【警告】AGV出库任务请求AGV服务失败,任务号:{task.TaskId},异常信息:{agvErrText}");
|
||||||
|
|
@ -195,19 +216,28 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta
|
||||||
(string errText, short model, short allowAction, short errCode, string code) = stackerConveyOperation.GetLiftInfo(liftInfo.LiftId ?? "");
|
(string errText, short model, short allowAction, short errCode, string code) = stackerConveyOperation.GetLiftInfo(liftInfo.LiftId ?? "");
|
||||||
if (!string.IsNullOrEmpty(errText))
|
if (!string.IsNullOrEmpty(errText))
|
||||||
{
|
{
|
||||||
ConsoleLog.Warning($"【警告】提升机站台信息获取失败,异常信息:{errText}");
|
//ConsoleLog.Warning($"【警告】提升机站台信息获取失败,异常信息:{errText}");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (model != 1 || allowAction != (short)TrueFalseEnum.TRUE || errCode != 0) continue;
|
if (model != 1 || allowAction != (short)TrueFalseEnum.TRUE || errCode != 0) continue;
|
||||||
/* 检验任务是否是第一层,若是不是第一层不能分配第一层出入口 */
|
/* 检验任务是否是第一层,若是不是第一层不能分配第一层出入口 */
|
||||||
if (destination.StartsWith("1")) // [TODO]
|
if (!destination.EndsWith('1'))
|
||||||
{
|
{
|
||||||
if (liftInfo.LiftMode != 2) continue;
|
if (liftInfo.LiftMode == 2) continue;
|
||||||
}
|
}
|
||||||
/* 获取这个站台的任务.没有占用任务即可重新使用 */
|
/* 获取这个站台的任务.没有占用任务即可重新使用 */
|
||||||
List<AppWmsTask>? tasks = wmsTaskDao.Select(new() { MidPoint = liftInfo.Tag, TaskStatus = (int)WmsTaskStatusEnum.toMid });
|
List<AppWmsTask> tasks = [];
|
||||||
|
tasks.AddRange(wmsTaskDao.Select(new() { MidPoint = liftInfo.Tag!.Split(',')[0], TaskStatus = (int)WmsTaskStatusEnum.toMid }) ?? []);
|
||||||
|
tasks.AddRange(wmsTaskDao.Select(new() { MidPoint = liftInfo.Tag!.Split(',')[1], TaskStatus = (int)WmsTaskStatusEnum.toMid }) ?? []);
|
||||||
|
tasks.AddRange(wmsTaskDao.Select(new() { MidPoint = liftInfo.Tag!.Split(',')[0], TaskStatus = (int)WmsTaskStatusEnum.arriveMid }) ?? []);
|
||||||
|
tasks.AddRange(wmsTaskDao.Select(new() { MidPoint = liftInfo.Tag!.Split(',')[1], TaskStatus = (int)WmsTaskStatusEnum.arriveMid }) ?? []);
|
||||||
if (tasks == default || tasks.Count > 0) continue;
|
if (tasks == default || tasks.Count > 0) continue;
|
||||||
return liftInfo.Tag;
|
string location = "";
|
||||||
|
if (!string.IsNullOrEmpty(liftInfo.Tag))
|
||||||
|
{
|
||||||
|
location = liftInfo.Tag.Split(',')[1];
|
||||||
|
}
|
||||||
|
return location;
|
||||||
}
|
}
|
||||||
return default;
|
return default;
|
||||||
}
|
}
|
||||||
|
|
@ -228,19 +258,26 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta
|
||||||
(string errText, short model, short allowAction, short errCode, string code) = stackerConveyOperation.GetLiftInfo(liftInfo.LiftId ?? "");
|
(string errText, short model, short allowAction, short errCode, string code) = stackerConveyOperation.GetLiftInfo(liftInfo.LiftId ?? "");
|
||||||
if (!string.IsNullOrEmpty(errText))
|
if (!string.IsNullOrEmpty(errText))
|
||||||
{
|
{
|
||||||
ConsoleLog.Warning($"【警告】提升机站台信息获取失败,异常信息:{errText}");
|
//ConsoleLog.Warning($"【警告】提升机站台信息获取失败,异常信息:{errText}");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (model != 2 || allowAction != (short)TrueFalseEnum.TRUE || errCode != 0) continue;
|
if (model != 2 || allowAction != (short)TrueFalseEnum.FALSE || errCode != 0) continue;
|
||||||
/* 检验任务是否是第一层,若是不是第一层不能分配第一层出入口 */
|
/* 检验任务是否是第一层,若是不是第一层不能分配第一层出入口 */
|
||||||
if (origin.StartsWith("1")) // [TODO]
|
if (!origin.EndsWith('1'))
|
||||||
{
|
{
|
||||||
if (liftInfo.LiftMode != 2) continue;
|
if (liftInfo.LiftMode == 2) continue;
|
||||||
}
|
}
|
||||||
/* 获取这个站台的任务.并计数 */
|
/* 获取这个站台的任务.并计数 */
|
||||||
List<AppWmsTask>? tasks = wmsTaskDao.Select(new() { MidPoint = liftInfo.Tag, TaskStatus = (int)WmsTaskStatusEnum.toMid });
|
List<AppWmsTask> tasks = [];
|
||||||
|
tasks.AddRange(wmsTaskDao.Select(new() { MidPoint = liftInfo.Tag!.Split(',')[0], TaskStatus = (int)WmsTaskStatusEnum.toMid }) ?? []);
|
||||||
|
tasks.AddRange(wmsTaskDao.Select(new() { MidPoint = liftInfo.Tag!.Split(',')[1], TaskStatus = (int)WmsTaskStatusEnum.toMid }) ?? []);
|
||||||
if (tasks == default) continue;
|
if (tasks == default) continue;
|
||||||
liftTaskCount.TryAdd(liftInfo.Tag ?? "", tasks.Count);
|
string location = "";
|
||||||
|
if(!string.IsNullOrEmpty(liftInfo.Tag))
|
||||||
|
{
|
||||||
|
location = liftInfo.Tag.Split(',')[0];
|
||||||
|
}
|
||||||
|
liftTaskCount.TryAdd(location, tasks.Count);
|
||||||
}
|
}
|
||||||
var sortLiftInfos = liftTaskCount.OrderBy(o => o.Value).ToDictionary();
|
var sortLiftInfos = liftTaskCount.OrderBy(o => o.Value).ToDictionary();
|
||||||
if (sortLiftInfos.Count > 0) return sortLiftInfos.First().Key;
|
if (sortLiftInfos.Count > 0) return sortLiftInfos.First().Key;
|
||||||
|
|
@ -248,4 +285,15 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private string? GetAgvNo(string? lift)
|
||||||
|
{
|
||||||
|
List<AppLiftInfo>? liftInfos = liftInfoDao.Query(new() { Status = (int)TrueFalseEnum.TRUE });
|
||||||
|
if (liftInfos == default || liftInfos.Count < 1) return default;
|
||||||
|
AppLiftInfo? appLiftInfo = liftInfos.Find(f => f.Tag!.Contains(lift!));
|
||||||
|
if (appLiftInfo == null) return default;
|
||||||
|
return appLiftInfo.Tag?.Split(',')[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
using CirculateTool.Attribute;
|
using CirculateTool.Attribute;
|
||||||
using WcsMain.Common;
|
using WcsMain.Common;
|
||||||
using WcsMain.Common.DataService;
|
using WcsMain.Common.DataService;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
using WcsMain.DataBase.Dao;
|
using WcsMain.DataBase.Dao;
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
using WcsMain.EquipOperation.Stacker;
|
using WcsMain.EquipOperation.Stacker;
|
||||||
using WcsMain.ExtendMethod;
|
|
||||||
|
|
||||||
namespace WcsMain.CirculationJob.Stacker;
|
namespace WcsMain.CirculationJob.Stacker;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@ using WcsMain.ApiClient.WMS;
|
||||||
using WcsMain.ApiClient.WMS.Dto;
|
using WcsMain.ApiClient.WMS.Dto;
|
||||||
using WcsMain.Common;
|
using WcsMain.Common;
|
||||||
using WcsMain.Constant.Enum.Stacker;
|
using WcsMain.Constant.Enum.Stacker;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
using WcsMain.EquipOperation.Stacker;
|
using WcsMain.EquipOperation.Stacker;
|
||||||
using WcsMain.ExtendMethod;
|
|
||||||
|
|
||||||
namespace WcsMain.CirculationJob.Stacker;
|
namespace WcsMain.CirculationJob.Stacker;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ using WcsMain.ApiClient.WMS;
|
||||||
using WcsMain.Common.DataService;
|
using WcsMain.Common.DataService;
|
||||||
using WcsMain.Constant.Enum.Stacker;
|
using WcsMain.Constant.Enum.Stacker;
|
||||||
using WcsMain.Constant.Enum.TaskEnum;
|
using WcsMain.Constant.Enum.TaskEnum;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
|
|
||||||
namespace WcsMain.CirculationJob.TaskData;
|
namespace WcsMain.CirculationJob.TaskData;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -141,7 +141,7 @@ public class DataBaseData(AppSettingsDao settingsDao)
|
||||||
{
|
{
|
||||||
wcsId = "0";
|
wcsId = "0";
|
||||||
}
|
}
|
||||||
string timeTick = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString();
|
string timeTick = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
|
||||||
if (timeTick != lasTimeTick2)
|
if (timeTick != lasTimeTick2)
|
||||||
{
|
{
|
||||||
lasTimeTick2 = timeTick;
|
lasTimeTick2 = timeTick;
|
||||||
|
|
|
||||||
|
|
@ -11,4 +11,7 @@ public class ApplicationBaseConfig
|
||||||
/// AGV
|
/// AGV
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const string APP_SECRET = "";
|
public const string APP_SECRET = "";
|
||||||
|
|
||||||
|
|
||||||
|
public const string SHUTTLE_PWD = "safer*123";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
|
|
||||||
namespace WcsMain.ExtendMethod;
|
namespace WcsMain.Constant.ExtendMethod;
|
||||||
|
|
||||||
public static class AppApiBaseInfoExtendMethod
|
public static class AppApiBaseInfoExtendMethod
|
||||||
{
|
{
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
|
|
||||||
namespace WcsMain.ExtendMethod;
|
namespace WcsMain.Constant.ExtendMethod;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 库位的扩展方法
|
/// 库位的扩展方法
|
||||||
|
|
@ -15,10 +15,10 @@ public static class AppLocationExtendMethod
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static bool ExistWmsLocation(this List<AppLocation>? value, params string?[] wmsLocations)
|
public static bool ExistWmsLocation(this List<AppLocation>? value, params string?[] wmsLocations)
|
||||||
{
|
{
|
||||||
if(value == default || wmsLocations == default || wmsLocations.Length < 1) return false;
|
if (value == default || wmsLocations == default || wmsLocations.Length < 1) return false;
|
||||||
foreach (var wmsLocation in wmsLocations)
|
foreach (var wmsLocation in wmsLocations)
|
||||||
{
|
{
|
||||||
if(!value.Exists(e => e.WmsLocation == wmsLocation)) return false;
|
if (!value.Exists(e => e.WmsLocation == wmsLocation)) return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -31,7 +31,7 @@ public static class AppLocationExtendMethod
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static AppLocation? DetailWithWmsLocation(this List<AppLocation>? value, string? wmsLocation)
|
public static AppLocation? DetailWithWmsLocation(this List<AppLocation>? value, string? wmsLocation)
|
||||||
{
|
{
|
||||||
if(value == default || wmsLocation == default) return default;
|
if (value == default || wmsLocation == default) return default;
|
||||||
return value.Find(f => f.WmsLocation == wmsLocation);
|
return value.Find(f => f.WmsLocation == wmsLocation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
|
|
||||||
namespace WcsMain.ExtendMethod;
|
namespace WcsMain.Constant.ExtendMethod;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 堆垛机操作扩展方法
|
/// 堆垛机操作扩展方法
|
||||||
|
|
@ -14,7 +14,7 @@ public static class AppStackerExtendMethod
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static List<AppStacker> Open(this List<AppStacker>? value)
|
public static List<AppStacker> Open(this List<AppStacker>? value)
|
||||||
{
|
{
|
||||||
if(value == default) return [];
|
if (value == default) return [];
|
||||||
return value.FindAll(f => f.StackerStatus == 1);
|
return value.FindAll(f => f.StackerStatus == 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
using WcsMain.EquipOperation.Entity.Stacker;
|
using WcsMain.EquipOperation.Entity.Stacker;
|
||||||
|
|
||||||
namespace WcsMain.ExtendMethod;
|
namespace WcsMain.Constant.ExtendMethod;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// wcs 任务表的扩展方法
|
/// wcs 任务表的扩展方法
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
using WcsMain.Constant.Enum.Stacker;
|
using WcsMain.Constant.Enum.Stacker;
|
||||||
|
|
||||||
namespace WcsMain.ExtendMethod;
|
namespace WcsMain.Constant.ExtendMethod;
|
||||||
|
|
||||||
public static class StackerExtendMethod
|
public static class StackerExtendMethod
|
||||||
{
|
{
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
using HslCommunication;
|
using HslCommunication;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace WcsMain.ExtendMethod;
|
namespace WcsMain.ExtendMethod;
|
||||||
|
|
@ -97,4 +99,23 @@ public static partial class StringExtendMethod
|
||||||
|
|
||||||
[GeneratedRegex("^\\d+$")]
|
[GeneratedRegex("^\\d+$")]
|
||||||
private static partial Regex IsNumberRegex();
|
private static partial Regex IsNumberRegex();
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 32位加密
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="password"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static string MD5Encrypt32(this string password)
|
||||||
|
{
|
||||||
|
string cl = password;
|
||||||
|
string pwd = "";
|
||||||
|
//MD5 md5 = MD5.Create(); //实例化一个md5对像
|
||||||
|
byte[] s = MD5.HashData(Encoding.UTF8.GetBytes(cl));
|
||||||
|
for (int i = 0; i < s.Length; i++)
|
||||||
|
{
|
||||||
|
pwd = pwd + s[i].ToString("X2");
|
||||||
|
}
|
||||||
|
return pwd;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
namespace WcsMain.ExtendMethod;
|
namespace WcsMain.Constant.ExtendMethod;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 任务扩展方法
|
/// 任务扩展方法
|
||||||
|
|
@ -84,9 +84,11 @@ public class AppWmsTaskDao
|
||||||
{
|
{
|
||||||
var sqlFuc = CommonTool.DbServe.Queryable<AppWmsTask>()
|
var sqlFuc = CommonTool.DbServe.Queryable<AppWmsTask>()
|
||||||
.WhereIF(!string.IsNullOrEmpty(appWmsTask.TaskId), w => w.TaskId == appWmsTask.TaskId)
|
.WhereIF(!string.IsNullOrEmpty(appWmsTask.TaskId), w => w.TaskId == appWmsTask.TaskId)
|
||||||
|
.WhereIF(appWmsTask.WcsId != null, w => w.WcsId == appWmsTask.WcsId)
|
||||||
.WhereIF(appWmsTask.TaskType != null, w => w.TaskType == appWmsTask.TaskType)
|
.WhereIF(appWmsTask.TaskType != null, w => w.TaskType == appWmsTask.TaskType)
|
||||||
.WhereIF(appWmsTask.TaskStatus != null, w => w.TaskStatus == appWmsTask.TaskStatus)
|
.WhereIF(appWmsTask.TaskStatus != null, w => w.TaskStatus == appWmsTask.TaskStatus)
|
||||||
.WhereIF(!string.IsNullOrEmpty(appWmsTask.Origin), w => w.Origin == appWmsTask.Origin)
|
.WhereIF(!string.IsNullOrEmpty(appWmsTask.Origin), w => w.Origin == appWmsTask.Origin)
|
||||||
|
.WhereIF(!string.IsNullOrEmpty(appWmsTask.MidPoint), w => w.MidPoint == appWmsTask.MidPoint)
|
||||||
.WhereIF(!string.IsNullOrEmpty(appWmsTask.Destination),
|
.WhereIF(!string.IsNullOrEmpty(appWmsTask.Destination),
|
||||||
w => w.Destination == appWmsTask.Destination)
|
w => w.Destination == appWmsTask.Destination)
|
||||||
.WhereIF(!string.IsNullOrEmpty(appWmsTask.VehicleNo), w => w.VehicleNo == appWmsTask.VehicleNo)
|
.WhereIF(!string.IsNullOrEmpty(appWmsTask.VehicleNo), w => w.VehicleNo == appWmsTask.VehicleNo)
|
||||||
|
|
@ -108,6 +110,43 @@ public class AppWmsTaskDao
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public List<AppWmsTask>? SelectRunningTask(string? destination)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var sqlFuc = CommonTool.DbServe.Queryable<AppWmsTask>()
|
||||||
|
.Where(w => (w.MidPoint!.Contains(destination!) || w.Destination!.Contains(destination!))
|
||||||
|
&& (w.TaskStatus == (int)WmsTaskStatusEnum.toMid || w.TaskStatus == (int)WmsTaskStatusEnum.arriveMid))
|
||||||
|
.OrderBy(o => o.CreateTime);
|
||||||
|
_ = sqlFuc.ToSql();
|
||||||
|
return sqlFuc.ToList();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_ = ex;
|
||||||
|
return default;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<AppWmsTask>? SelectRunningTask2(string? location)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var sqlFuc = CommonTool.DbServe.Queryable<AppWmsTask>()
|
||||||
|
.Where(w => location!.Contains(w.MidPoint!)
|
||||||
|
&& (w.TaskStatus == (int)WmsTaskStatusEnum.toMid || w.TaskStatus == (int)WmsTaskStatusEnum.arriveMid))
|
||||||
|
.OrderBy(o => o.CreateTime);
|
||||||
|
_ = sqlFuc.ToSql();
|
||||||
|
return sqlFuc.ToList();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_ = ex;
|
||||||
|
return default;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 查找所有数据
|
/// 查找所有数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -208,6 +247,7 @@ public class AppWmsTaskDao
|
||||||
var sqlFuc = CommonTool.DbServe.Queryable<AppWmsTask>()
|
var sqlFuc = CommonTool.DbServe.Queryable<AppWmsTask>()
|
||||||
.WhereIF(!string.IsNullOrEmpty(pageRequest.SearchStr),
|
.WhereIF(!string.IsNullOrEmpty(pageRequest.SearchStr),
|
||||||
w => w.Destination!.Contains(pageRequest.SearchStr!)
|
w => w.Destination!.Contains(pageRequest.SearchStr!)
|
||||||
|
|| w.WcsId!.Contains(pageRequest.SearchStr!)
|
||||||
|| w.Origin!.Contains(pageRequest.SearchStr!)
|
|| w.Origin!.Contains(pageRequest.SearchStr!)
|
||||||
|| w.VehicleNo!.Contains(pageRequest.SearchStr!)
|
|| w.VehicleNo!.Contains(pageRequest.SearchStr!)
|
||||||
|| w.TaskId!.Contains(pageRequest.SearchStr!)
|
|| w.TaskId!.Contains(pageRequest.SearchStr!)
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
using WcsMain.Common;
|
using WcsMain.Common;
|
||||||
using WcsMain.Constant.Enum.Stacker;
|
using WcsMain.Constant.Enum.Stacker;
|
||||||
using WcsMain.DataBase.TableEntity;
|
using WcsMain.DataBase.TableEntity;
|
||||||
using WcsMain.ExtendMethod;
|
|
||||||
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
using WcsMain.Constant.WcsAttribute.AutoFacAttribute;
|
||||||
|
using WcsMain.Constant.ExtendMethod;
|
||||||
|
|
||||||
namespace WcsMain.DataBase.MixDao;
|
namespace WcsMain.DataBase.MixDao;
|
||||||
|
|
||||||
|
|
@ -218,7 +218,7 @@ public class TaskDao
|
||||||
{
|
{
|
||||||
var updateResult = CommonTool.DbServe
|
var updateResult = CommonTool.DbServe
|
||||||
.Updateable(new AppWmsTask()
|
.Updateable(new AppWmsTask()
|
||||||
{ TaskId = wmsTask.TaskId, TaskStatus = (int)WmsTaskStatusEnum.complete, EndTime = DateTime.Now, TaskMsg = msg })
|
{ TaskId = wmsTask.TaskId, TaskStatus = (int)WmsTaskStatusEnum.complete, Destination = wmsTask.Destination, EndTime = DateTime.Now, TaskMsg = msg })
|
||||||
.IgnoreColumns(ignoreAllNullColumns: true)
|
.IgnoreColumns(ignoreAllNullColumns: true)
|
||||||
.ExecuteCommand();
|
.ExecuteCommand();
|
||||||
return updateResult > 0 ? null : "失败";
|
return updateResult > 0 ? null : "失败";
|
||||||
|
|
|
||||||
|
|
@ -3,41 +3,49 @@
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 提升机信息
|
/// 提升机信息
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[SqlSugar.SugarTable("tbl_app_lift_info")]
|
||||||
public class AppLiftInfo
|
public class AppLiftInfo
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 提升机ID
|
/// 提升机ID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[SqlSugar.SugarColumn(ColumnName = "lift_id", IsPrimaryKey = true)]
|
||||||
public string? LiftId { get; set; }
|
public string? LiftId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 提升机名称
|
/// 提升机名称
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[SqlSugar.SugarColumn(ColumnName = "lift_name")]
|
||||||
public string? LiftName { get; set; }
|
public string? LiftName { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 提升机类型
|
/// 提升机类型
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[SqlSugar.SugarColumn(ColumnName = "lift_type")]
|
||||||
public string? LiftType { get; set; }
|
public string? LiftType { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 标记
|
/// 标记
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[SqlSugar.SugarColumn(ColumnName = "tag")]
|
||||||
public string? Tag { get; set; }
|
public string? Tag { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 状态
|
/// 状态
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[SqlSugar.SugarColumn(ColumnName = "status")]
|
||||||
public int? Status { get; set; }
|
public int? Status { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 提升机模式
|
/// 提升机模式
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[SqlSugar.SugarColumn(ColumnName = "lift_mode")]
|
||||||
public int? LiftMode { get; set; }
|
public int? LiftMode { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 备注
|
/// 备注
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[SqlSugar.SugarColumn(ColumnName = "remark")]
|
||||||
public string? Remark { get; set; }
|
public string? Remark { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,13 @@ public class AppWmsTask
|
||||||
[JsonPropertyName("taskId")]
|
[JsonPropertyName("taskId")]
|
||||||
public string? TaskId { get; set; }
|
public string? TaskId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// WCS 的任务Id,给四向车用的,他们必须int64格式
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(ColumnName = "wcs_id")]
|
||||||
|
[JsonPropertyName("wcsId")]
|
||||||
|
public string? WcsId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 任务类型
|
/// 任务类型
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
|
|
@ -73,6 +73,39 @@ public class StackerConveyOperation
|
||||||
return (string.Empty, model, allowAction, errCode, code);
|
return (string.Empty, model, allowAction, errCode, code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 通知PLC放货完成
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="location"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public string? SetVehicelComplete(string location)
|
||||||
|
{
|
||||||
|
if (!CommonData.IsConnectPlc || CommonTool.Siemens == default)
|
||||||
|
{
|
||||||
|
return "设备尚未连接"; // 未连接PLC
|
||||||
|
}
|
||||||
|
(var writeResult, byte[]? data) = CommonTool.Siemens.WritePlcWhithName($"站台放货完成{location}", (short)1);
|
||||||
|
if (writeResult.Success)
|
||||||
|
{
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
return writeResult.Message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string? StandTaskApplyComplete(string location)
|
||||||
|
{
|
||||||
|
if (!CommonData.IsConnectPlc || CommonTool.Siemens == default)
|
||||||
|
{
|
||||||
|
return "设备尚未连接"; // 未连接PLC
|
||||||
|
}
|
||||||
|
(var writeResult, byte[]? data) = CommonTool.Siemens.WritePlcWhithName($"站台任务申请完成{location}", (short)1);
|
||||||
|
if (writeResult.Success)
|
||||||
|
{
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
return writeResult.Message;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取输送机任务号
|
/// 获取输送机任务号
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
|
||||||
<_TargetId>Folder</_TargetId>
|
<_TargetId>Folder</_TargetId>
|
||||||
<SiteUrlToLaunchAfterPublish />
|
<SiteUrlToLaunchAfterPublish />
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<RuntimeIdentifier>win-x86</RuntimeIdentifier>
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||||
<PublishSingleFile>true</PublishSingleFile>
|
<PublishSingleFile>true</PublishSingleFile>
|
||||||
<ProjectGuid>ed59f010-b3e5-4e19-be65-18053645dfc5</ProjectGuid>
|
<ProjectGuid>ed59f010-b3e5-4e19-be65-18053645dfc5</ProjectGuid>
|
||||||
<SelfContained>true</SelfContained>
|
<SelfContained>true</SelfContained>
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,8 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
|
||||||
-->
|
-->
|
||||||
<Project>
|
<Project>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<_PublishTargetUrl>F:\AProject\A菲达宝开项目\(2023-11)徐州工厂立库\应用程序\wcs_serve_cs\wcs_serve_cs\bin\Release\net8.0\publish\</_PublishTargetUrl>
|
<_PublishTargetUrl>F:\A开发项目\A菲达宝开项目\2024-08_上汽试制仓\应用程序\WcsService\WcsMain\bin\Release\net8.0\publish\</_PublishTargetUrl>
|
||||||
<History>True|2023-12-21T07:04:28.6290873Z;True|2023-12-21T14:59:03.4454135+08:00;True|2023-12-21T14:51:08.6690406+08:00;True|2023-12-21T14:26:42.6801144+08:00;False|2023-12-21T14:26:14.3256943+08:00;True|2023-12-21T14:13:42.5511801+08:00;True|2023-12-21T13:56:38.5871005+08:00;True|2023-12-19T12:19:57.9900187+08:00;True|2023-12-19T11:53:33.6930379+08:00;True|2023-12-17T12:51:32.6510827+08:00;False|2023-12-17T12:49:32.9022541+08:00;</History>
|
<History>True|2024-11-24T07:54:22.8370880Z||;True|2024-11-24T13:25:56.1353533+08:00||;True|2024-11-24T11:18:32.6506847+08:00||;True|2024-11-24T10:50:39.8134466+08:00||;True|2024-11-23T15:05:38.5131893+08:00||;True|2024-11-23T14:13:58.0382497+08:00||;True|2024-11-23T14:12:00.7634049+08:00||;True|2024-11-23T13:14:24.2275063+08:00||;True|2024-11-23T12:53:07.7352348+08:00||;True|2024-11-23T12:48:43.3192685+08:00||;True|2024-11-23T12:01:19.9580187+08:00||;True|2024-11-23T11:57:28.7283976+08:00||;True|2024-11-22T12:34:16.7539579+08:00||;True|2024-11-22T12:31:12.2247208+08:00||;True|2024-11-22T10:08:38.6674414+08:00||;True|2024-11-22T09:58:07.3694815+08:00||;True|2024-11-22T09:40:25.3466460+08:00||;True|2024-11-21T16:33:23.0082958+08:00||;True|2024-11-21T16:21:46.1852307+08:00||;True|2024-11-21T13:56:06.5543719+08:00||;True|2024-11-21T11:41:50.4634584+08:00||;True|2024-11-21T11:30:54.9747290+08:00||;False|2024-11-21T11:30:18.2738127+08:00||;True|2024-11-21T10:45:42.5524544+08:00||;True|2024-11-20T17:08:23.7162943+08:00||;True|2024-11-20T16:54:01.3629057+08:00||;True|2024-11-20T16:40:49.6894280+08:00||;True|2024-11-20T16:37:47.3670812+08:00||;False|2024-11-20T16:37:04.0777763+08:00||;True|2024-11-20T16:25:26.3145915+08:00||;True|2024-11-20T16:10:13.7558526+08:00||;True|2024-11-20T16:07:37.8681228+08:00||;True|2024-11-20T15:55:28.7196074+08:00||;True|2024-11-20T15:52:40.6653904+08:00||;True|2024-11-20T15:30:21.5138564+08:00||;True|2024-11-20T15:24:40.6286995+08:00||;True|2024-11-18T21:16:47.1821173+08:00||;True|2024-11-18T21:14:40.1209255+08:00||;True|2024-11-18T21:11:32.0010536+08:00||;True|2024-11-18T21:10:56.2142485+08:00||;True|2024-11-18T20:59:50.6846634+08:00||;True|2024-11-16T14:31:14.2653894+08:00||;True|2024-11-16T14:16:17.4271635+08:00||;True|2024-11-16T14:16:08.1284507+08:00||;True|2024-11-16T14:08:02.8639352+08:00||;True|2024-11-16T14:07:06.6785776+08:00||;True|2024-11-16T13:14:33.8282571+08:00||;True|2024-11-16T13:14:09.9233077+08:00||;True|2024-11-16T12:49:45.5891890+08:00||;True|2024-11-16T12:19:05.5997384+08:00||;True|2024-11-16T11:49:43.2660430+08:00||;True|2024-11-16T11:49:12.7318514+08:00||;True|2024-11-16T11:43:41.8128931+08:00||;True|2024-11-16T10:39:25.1387254+08:00||;True|2024-11-16T10:24:19.4879139+08:00||;True|2024-11-15T17:47:10.4630939+08:00||;True|2024-11-15T17:42:25.6985733+08:00||;True|2024-11-15T17:39:43.9409305+08:00||;True|2024-11-15T17:26:18.2886475+08:00||;True|2024-11-15T17:23:05.3112513+08:00||;True|2024-11-15T17:16:40.2960771+08:00||;True|2024-11-15T17:14:12.3416383+08:00||;True|2024-11-15T17:09:43.2642034+08:00||;True|2024-11-15T17:05:04.4694932+08:00||;False|2024-11-15T17:04:34.2335564+08:00||;False|2024-11-15T17:04:12.5281280+08:00||;True|2024-11-15T17:01:49.4325408+08:00||;False|2024-11-15T17:01:29.1872712+08:00||;True|2024-11-15T16:00:18.8617729+08:00||;True|2024-11-15T15:56:13.9285180+08:00||;True|2024-11-15T15:50:53.6121456+08:00||;True|2024-11-15T15:17:41.0508047+08:00||;True|2024-11-15T13:50:06.8021767+08:00||;True|2024-11-15T13:17:48.2695650+08:00||;True|2023-12-21T15:04:28.6290873+08:00||;True|2023-12-21T14:59:03.4454135+08:00||;True|2023-12-21T14:51:08.6690406+08:00||;True|2023-12-21T14:26:42.6801144+08:00||;False|2023-12-21T14:26:14.3256943+08:00||;True|2023-12-21T14:13:42.5511801+08:00||;True|2023-12-21T13:56:38.5871005+08:00||;True|2023-12-19T12:19:57.9900187+08:00||;True|2023-12-19T11:53:33.6930379+08:00||;True|2023-12-17T12:51:32.6510827+08:00||;False|2023-12-17T12:49:32.9022541+08:00||;</History>
|
||||||
<LastFailureDetails />
|
<LastFailureDetails />
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<NameOfLastUsedPublishProfile>F:\A开发项目\A菲达宝开项目\2024-05_苏州卡特\应用程序\WcsService\WcsMain\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
|
<NameOfLastUsedPublishProfile>F:\A开发项目\A菲达宝开项目\2024-08_上汽试制仓\应用程序\WcsService\WcsMain\Properties\PublishProfiles\FolderProfile2.pubxml</NameOfLastUsedPublishProfile>
|
||||||
<Controller_SelectedScaffolderID>ApiControllerEmptyScaffolder</Controller_SelectedScaffolderID>
|
<Controller_SelectedScaffolderID>ApiControllerEmptyScaffolder</Controller_SelectedScaffolderID>
|
||||||
<Controller_SelectedScaffolderCategoryPath>root/Common/Api</Controller_SelectedScaffolderCategoryPath>
|
<Controller_SelectedScaffolderCategoryPath>root/Common/Api</Controller_SelectedScaffolderCategoryPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,8 @@
|
||||||
},
|
},
|
||||||
"AllowedHosts": "*",
|
"AllowedHosts": "*",
|
||||||
"Settings": {
|
"Settings": {
|
||||||
"DBMysql": "server=10.90.36.71;port=3306;user=developer;password=developer;database=wcs_kate_suzhou;",
|
"DBMysql": "server=192.168.234.128;port=3306;user=developer;password=developer;database=wcs_kate_suzhou;",
|
||||||
"DBMysqlLocal": "server=192.168.234.134;port=3306;user=developer;password=developer;database=app_wcs_shangqi;",
|
"DBMysqlLocal": "server=172.168.61.200;port=3306;user=developer;password=developer;database=app_wcs_shangqi;",
|
||||||
|
|
||||||
"DBMssql": "Data Source=192.168.142.131;Initial Catalog=wcs;User Id=sa;Password=Sa123;",
|
"DBMssql": "Data Source=192.168.142.131;Initial Catalog=wcs;User Id=sa;Password=Sa123;",
|
||||||
"DBMssqlLocal": "Data Source=192.168.142.131;Initial Catalog=wcs_stacker;User Id=sa;Password=Sa123;",
|
"DBMssqlLocal": "Data Source=192.168.142.131;Initial Catalog=wcs_stacker;User Id=sa;Password=Sa123;",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user