diff --git a/WcsMain/ApiServe/Controllers/Dto/WMSEntity/Convey/GetConveyTaskRequest.cs b/WcsMain/ApiServe/Controllers/Dto/WMSEntity/Convey/GetConveyTaskRequest.cs
new file mode 100644
index 0000000..e5bb912
--- /dev/null
+++ b/WcsMain/ApiServe/Controllers/Dto/WMSEntity/Convey/GetConveyTaskRequest.cs
@@ -0,0 +1,37 @@
+using System.Text.Json.Serialization;
+
+namespace WcsMain.ApiServe.Controllers.Dto.WMSEntity.Convey;
+
+public class GetConveyTaskRequest
+{
+ ///
+ /// 任务组
+ ///
+ [JsonPropertyName("taskGroup")]
+ public string? TaskGroup { get; set; }
+
+ ///
+ /// 载具号
+ ///
+ [JsonPropertyName("vehicleNo")]
+ public string? VehicleNo { get; set; }
+
+ ///
+ /// 任务类型
+ ///
+ [JsonPropertyName("taskType")]
+ public int? TaskType { get; set; }
+
+ ///
+ /// 点位
+ ///
+ [JsonPropertyName("location")]
+ public string[]? Locations { get; set; }
+
+ ///
+ /// 备注
+ ///
+ [JsonPropertyName("remark")]
+ public string? Remark { get; set; }
+
+}
diff --git a/WcsMain/ApiServe/Controllers/Dto/WMSEntity/ElTag/GetElTagTaskRequest.cs b/WcsMain/ApiServe/Controllers/Dto/WMSEntity/ElTag/GetElTagTaskRequest.cs
new file mode 100644
index 0000000..c577a3b
--- /dev/null
+++ b/WcsMain/ApiServe/Controllers/Dto/WMSEntity/ElTag/GetElTagTaskRequest.cs
@@ -0,0 +1,76 @@
+using DataCheck;
+using System.Text.Json.Serialization;
+
+namespace WcsMain.ApiServe.Controllers.Dto.WMSEntity.ElTag;
+
+public class GetElTagTaskRequest
+{
+ ///
+ /// 任务组
+ ///
+ [JsonPropertyName("taskGroup")]
+ public string? TaskGroup { get; set; }
+
+ ///
+ /// 任务类型
+ ///
+ [JsonPropertyName("taskType")]
+ [DataRules]
+ public int? TaskType { get; set; }
+
+ ///
+ /// 载具号
+ ///
+ [JsonPropertyName("vehicleNo")]
+ [DataRules]
+ public string? VehicleNo { get; set; }
+
+ ///
+ /// 订单号
+ ///
+ [JsonPropertyName("orderId")]
+ public string? OrderId { get; set; }
+
+ ///
+ /// 任务信息
+ ///
+ [JsonPropertyName("taskData")]
+ public ElTagTaskdata[]? TaskData { get; set; }
+
+
+}
+
+public class ElTagTaskdata
+{
+ ///
+ /// 任务号
+ ///
+ [JsonPropertyName("taskId")]
+ public string? TaskId { get; set; }
+
+ ///
+ /// 点位
+ ///
+ [JsonPropertyName("location")]
+ [DataRules]
+ public string? Location { get; set; }
+
+ ///
+ /// 物品编号
+ ///
+ [JsonPropertyName("goodsId")]
+ public string? GoodsId { get; set; }
+
+ ///
+ /// 物品名称
+ ///
+ [JsonPropertyName("goodsName")]
+ public string? GoodsName { get; set; }
+
+ ///
+ /// 需求数量
+ ///
+ [JsonPropertyName("needNum")]
+ [DataRules]
+ public int? NeedNum { get; set; }
+}
diff --git a/WcsMain/ApiServe/Controllers/WmsController/ConveyController.cs b/WcsMain/ApiServe/Controllers/WmsController/ConveyController.cs
new file mode 100644
index 0000000..9b00be3
--- /dev/null
+++ b/WcsMain/ApiServe/Controllers/WmsController/ConveyController.cs
@@ -0,0 +1,29 @@
+using Microsoft.AspNetCore.Mvc;
+using WcsMain.ApiServe.ControllerFilter;
+using WcsMain.ApiServe.Controllers.Dto.WMSEntity;
+using WcsMain.ApiServe.Controllers.Dto.WMSEntity.Convey;
+using WcsMain.ApiServe.Service.WmsService;
+
+namespace WcsMain.ApiServe.Controllers.WmsController;
+
+[Route("api/wms/convey")]
+[ApiController]
+[ServiceFilter]
+[WmsApiExceptionFilter]
+public class ConveyController(ConveyService conveyService) : ControllerBase
+{
+
+ private readonly ConveyService _conveyService = conveyService;
+
+ ///
+ /// 接受上位系统发送过来的输送任务
+ ///
+ ///
+ ///
+ [HttpPost("conveyTask")]
+ public WmsApiResponse GetConveyTask([FromBody] GetConveyTaskRequest request)
+ {
+ return _conveyService.GetConveyTask(request);
+ }
+
+}
diff --git a/WcsMain/ApiServe/Controllers/WmsController/ElTagController.cs b/WcsMain/ApiServe/Controllers/WmsController/ElTagController.cs
new file mode 100644
index 0000000..942947a
--- /dev/null
+++ b/WcsMain/ApiServe/Controllers/WmsController/ElTagController.cs
@@ -0,0 +1,36 @@
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WcsMain.ApiServe.ControllerFilter;
+using WcsMain.ApiServe.Controllers.Dto.WMSEntity;
+using WcsMain.ApiServe.Controllers.Dto.WMSEntity.ElTag;
+using WcsMain.ApiServe.Service.WmsService;
+
+namespace WcsMain.ApiServe.Controllers.WmsController;
+
+
+///
+/// 电子标签 WMS 外部接口类
+///
+[Route("api/wms/elTag")]
+[ApiController]
+[ServiceFilter]
+[WmsApiExceptionFilter]
+public class ElTagController(ElTagService elTagService) : ControllerBase
+{
+
+ private readonly ElTagService _elTagService = elTagService;
+
+ ///
+ /// 接收 上位系统发来的 电子标签任务
+ ///
+ ///
+ ///
+ [HttpPost("elTagTask")]
+ public WmsApiResponse GetElTagTask([FromBody] GetElTagTaskRequest request)
+ {
+ return _elTagService.GetElTagTask(request);
+ }
+
+
+
+}
diff --git a/WcsMain/ApiServe/Service/WcsService/ElTagService.cs b/WcsMain/ApiServe/Service/WcsService/ElTagService.cs
index 13d2992..4c1dc78 100644
--- a/WcsMain/ApiServe/Service/WcsService/ElTagService.cs
+++ b/WcsMain/ApiServe/Service/WcsService/ElTagService.cs
@@ -48,12 +48,28 @@ public class ElTagService(AppElTagTaskDao tagTaskDao, DataBaseData dataBaseData)
///
public WcsApiResponse EditTaskInfo(EditTaskInfoRequest request)
{
- var updateResult = _tagTaskDao.Update(new AppElTagTask
+ AppElTagTask elTagTask = new()
{
TaskId = request.TaskId,
TaskStatus = request.TaskStatus,
- Remark = "WCS变更信息"
- });
+ Remark = $"WCS变更信息 - {request.TaskStatus}"
+ };
+ switch(request.TaskStatus)
+ {
+ case (int)ElTagTaskStatusEnum.Lighting:
+ elTagTask.LightTime = DateTime.Now;
+ elTagTask.Remark = "WCS变更信息 - 点亮";
+ break;
+ case (int)ElTagTaskStatusEnum.Confirm:
+ elTagTask.ConfirmTime = DateTime.Now;
+ elTagTask.Remark = "WCS变更信息 - 确认";
+ break;
+ case (int)ElTagTaskStatusEnum.Off:
+ elTagTask.OffTime = DateTime.Now;
+ elTagTask.Remark = "WCS变更信息 - 熄灭";
+ break;
+ }
+ var updateResult = _tagTaskDao.Update(elTagTask);
return updateResult > 0 ? WcsApiResponseFactory.Success() : WcsApiResponseFactory.DataBaseErr();
}
diff --git a/WcsMain/ApiServe/Service/WmsService/ConveyService.cs b/WcsMain/ApiServe/Service/WmsService/ConveyService.cs
new file mode 100644
index 0000000..4594d72
--- /dev/null
+++ b/WcsMain/ApiServe/Service/WmsService/ConveyService.cs
@@ -0,0 +1,52 @@
+using WcsMain.ApiServe.Controllers.Dto.WMSEntity;
+using WcsMain.ApiServe.Controllers.Dto.WMSEntity.Convey;
+using WcsMain.ApiServe.Factory;
+using WcsMain.DataBase.Dao;
+using WcsMain.DataBase.TableEntity;
+using WcsMain.DataService;
+using WcsMain.Enum.TaskEnum;
+using WcsMain.WcsAttribute.AutoFacAttribute;
+
+namespace WcsMain.ApiServe.Service.WmsService;
+
+[Service]
+public class ConveyService(DataBaseData dataBaseData, AppConveyTaskDao conveyTaskDao)
+{
+ private readonly DataBaseData _databseData = dataBaseData;
+ private readonly AppConveyTaskDao _conveyTaskDao = conveyTaskDao;
+
+ ///
+ /// 接收WMS发送过来的输送线任务
+ ///
+ ///
+ ///
+ public WmsApiResponse GetConveyTask(GetConveyTaskRequest request)
+ {
+ if(string.IsNullOrEmpty(request.VehicleNo) || request.TaskType == default || request.Locations == default || request.Locations.Length < 1)
+ {
+ return WmsApiResponseFactory.RequestErr("存在必填项未填");
+ }
+ if (request.TaskGroup == default)
+ {
+ request.TaskGroup = _databseData.GetNewUUID2(); // 当任务组为空时生成一个新的
+ }
+ List conveyTasks = [];
+ DateTime now = DateTime.Now;
+ foreach(var location in request.Locations)
+ {
+ conveyTasks.Add(new AppConveyTask
+ {
+ TaskId = _databseData.GetNewUUID(),
+ TaskGroup = request.TaskGroup,
+ VehicleNo = request.VehicleNo,
+ TaskType = request.TaskType,
+ TaskStatus = (int)ConveyTaskStatusEnum.create,
+ Location = location,
+ CreatePerson = StaticData.StaticString.WMS,
+ CreateTime = now,
+ });
+ }
+ var insertResult = _conveyTaskDao.Insert(conveyTasks);
+ return insertResult > 0 ? WmsApiResponseFactory.Success() : WmsApiResponseFactory.DataBaseErr();
+ }
+}
diff --git a/WcsMain/ApiServe/Service/WmsService/ElTagService.cs b/WcsMain/ApiServe/Service/WmsService/ElTagService.cs
new file mode 100644
index 0000000..a28fc96
--- /dev/null
+++ b/WcsMain/ApiServe/Service/WmsService/ElTagService.cs
@@ -0,0 +1,66 @@
+using DataCheck;
+using WcsMain.ApiServe.Controllers.Dto.WMSEntity;
+using WcsMain.ApiServe.Controllers.Dto.WMSEntity.ElTag;
+using WcsMain.ApiServe.Factory;
+using WcsMain.Common;
+using WcsMain.DataBase.Dao;
+using WcsMain.DataBase.TableEntity;
+using WcsMain.DataService;
+using WcsMain.Enum.TaskEnum;
+using WcsMain.WcsAttribute.AutoFacAttribute;
+
+namespace WcsMain.ApiServe.Service.WmsService;
+
+[Service]
+public class ElTagService(DataBaseData dataBaseData, AppElTagTaskDao elTagTaskDao)
+{
+ private readonly DataBaseData _dataBaseData = dataBaseData;
+ private readonly AppElTagTaskDao _elTagTaskDao = elTagTaskDao;
+
+ ///
+ /// 接收电子标签任务
+ ///
+ ///
+ ///
+ public WmsApiResponse GetElTagTask(GetElTagTaskRequest request)
+ {
+ if (!CheckData.CheckDataRules(request) || request.TaskData == default || request.TaskData.Length < 1)
+ {
+ return WmsApiResponseFactory.RequestErr();
+ }
+ foreach (var elTagTask in request.TaskData)
+ {
+ if (!CheckData.CheckDataRules(elTagTask))
+ {
+ return WmsApiResponseFactory.RequestErr();
+ }
+ }
+ if(request.TaskGroup == default)
+ {
+ request.TaskGroup = _dataBaseData.GetNewUUID2();
+ }
+ /* 插入任务 */
+ List elTagTasks = [];
+ DateTime now = DateTime.Now;
+ foreach (var elTagTask in request.TaskData)
+ {
+ elTagTasks.Add(new AppElTagTask()
+ {
+ TaskId = string.IsNullOrEmpty(elTagTask.TaskId) ? _dataBaseData.GetNewUUID() : elTagTask.TaskId,
+ TaskGroup = request.TaskGroup,
+ TaskType = request.TaskType,
+ Location = elTagTask.Location,
+ OrderId = request.OrderId,
+ VehicleNo = request.VehicleNo,
+ GoodsId = elTagTask.GoodsId,
+ GoodsName = elTagTask.GoodsName,
+ TaskStatus = (int)ElTagTaskStatusEnum.NeedLight,
+ NeedNum = elTagTask.NeedNum ?? 0,
+ CreatePerson = StaticData.StaticString.WMS,
+ CreateTime = now
+ });
+ }
+ var insertResult = _elTagTaskDao.Insert(elTagTasks.ToArray());
+ return insertResult > 0 ? WmsApiResponseFactory.Success() : WmsApiResponseFactory.DataBaseErr();
+ }
+}
diff --git a/WcsMain/DataBase/Dao/AppConveyTaskDao.cs b/WcsMain/DataBase/Dao/AppConveyTaskDao.cs
new file mode 100644
index 0000000..4e4a7f4
--- /dev/null
+++ b/WcsMain/DataBase/Dao/AppConveyTaskDao.cs
@@ -0,0 +1,37 @@
+using WcsMain.Common;
+using WcsMain.DataBase.TableEntity;
+using WcsMain.WcsAttribute.AutoFacAttribute;
+
+namespace WcsMain.DataBase.Dao;
+
+[Component]
+public class AppConveyTaskDao
+{
+ ///
+ /// 插入数据
+ ///
+ ///
+ ///
+ public int Insert(List conveyTasks) => Insert(conveyTasks.ToArray());
+
+ ///
+ /// 插入数据
+ ///
+ ///
+ ///
+ public int Insert(params AppConveyTask[] conveyTasks)
+ {
+ try
+ {
+ var sqlFuc = CommonTool.DbServe.Insertable(conveyTasks);
+ return sqlFuc.ExecuteCommand();
+ }
+ catch (Exception ex)
+ {
+ _ = ex;
+ return 0;
+ }
+ }
+
+
+}
diff --git a/WcsMain/DataBase/TableEntity/AppConveyTask.cs b/WcsMain/DataBase/TableEntity/AppConveyTask.cs
new file mode 100644
index 0000000..ead067d
--- /dev/null
+++ b/WcsMain/DataBase/TableEntity/AppConveyTask.cs
@@ -0,0 +1,81 @@
+using SqlSugar;
+
+namespace WcsMain.DataBase.TableEntity;
+
+///
+/// 输送线任务表
+///
+[SugarTable("tbl_app_convey_task")]
+public class AppConveyTask
+{
+ ///
+ /// 任务号
+ ///
+ [SugarColumn(ColumnName = "task_id", IsPrimaryKey = true)]
+ public string? TaskId { get; set; }
+
+ ///
+ /// 任务组
+ ///
+ [SugarColumn(ColumnName = "task_group")]
+ public string? TaskGroup { get; set; }
+
+ ///
+ /// 载具号
+ ///
+ [SugarColumn(ColumnName = "vehicle_no")]
+ public string? VehicleNo { get; set; }
+
+ ///
+ /// 任务类型
+ ///
+ [SugarColumn(ColumnName = "task_type")]
+ public int? TaskType { get; set; }
+
+ ///
+ /// 任务状态
+ ///
+ [SugarColumn(ColumnName = "task_status")]
+ public int? TaskStatus { get; set; }
+
+ ///
+ /// 点位
+ ///
+ [SugarColumn(ColumnName = "location")]
+ public string? Location { get; set; }
+
+
+ ///
+ /// 实际到达的点位
+ ///
+ [SugarColumn(ColumnName = "arrive_location")]
+ public string? ArriveLocation { get; set; }
+
+ ///
+ /// 创建人
+ ///
+ [SugarColumn(ColumnName = "create_person")]
+ public string? CreatePerson { get; set; }
+
+ ///
+ /// 创建时间
+ ///
+ [SugarColumn(ColumnName = "create_time")]
+ public DateTime? CreateTime { get; set; }
+
+ ///
+ /// 移栽时间
+ ///
+ [SugarColumn(ColumnName = "move_time")]
+ public DateTime? MoveTime { get; set; }
+
+ ///
+ /// 完成时间
+ ///
+ [SugarColumn(ColumnName = "complete_time")]
+ public DateTime? CompleteTime { get; set; }
+
+
+
+
+}
diff --git a/WcsMain/Enum/TaskEnum/ConveyTaskStatusEnum.cs b/WcsMain/Enum/TaskEnum/ConveyTaskStatusEnum.cs
new file mode 100644
index 0000000..927c40c
--- /dev/null
+++ b/WcsMain/Enum/TaskEnum/ConveyTaskStatusEnum.cs
@@ -0,0 +1,14 @@
+namespace WcsMain.Enum.TaskEnum;
+
+///
+/// 输送机任务状态枚举
+///
+public enum ConveyTaskStatusEnum
+{
+ create = 0, // 新创建
+ noved = 1, // 已经移栽
+ arrive = 2, // 到达
+
+
+
+}