diff --git a/WcsMain/ApiServe/Controllers/Dto/WMSEntity/ElTag/GetElTagTaskRequest.cs b/WcsMain/ApiServe/Controllers/Dto/WMSEntity/ElTag/GetElTagTaskRequest.cs
index c577a3b..03c7de4 100644
--- a/WcsMain/ApiServe/Controllers/Dto/WMSEntity/ElTag/GetElTagTaskRequest.cs
+++ b/WcsMain/ApiServe/Controllers/Dto/WMSEntity/ElTag/GetElTagTaskRequest.cs
@@ -45,6 +45,12 @@ public class ElTagTaskdata
///
/// 任务号
///
+ [JsonPropertyName("eTaskId")]
+ public string? ETaskId { get; set; }
+
+ ///
+ /// WMS任务号
+ ///
[JsonPropertyName("taskId")]
public string? TaskId { get; set; }
diff --git a/WcsMain/ApiServe/Service/WmsService/ElTagService.cs b/WcsMain/ApiServe/Service/WmsService/ElTagService.cs
index 75ace3d..d8272b4 100644
--- a/WcsMain/ApiServe/Service/WmsService/ElTagService.cs
+++ b/WcsMain/ApiServe/Service/WmsService/ElTagService.cs
@@ -43,7 +43,8 @@ public class ElTagService(DataBaseData dataBaseData, AppElTagTaskDao elTagTaskDa
{
elTagTasks.Add(new AppElTagTask()
{
- TaskId = string.IsNullOrEmpty(elTagTask.TaskId) ? dataBaseData.GetNewUUID() : elTagTask.TaskId,
+ TaskId = string.IsNullOrEmpty(elTagTask.ETaskId) ? dataBaseData.GetNewUUID() : elTagTask.ETaskId,
+ WmsTaskId = elTagTask.TaskId,
TaskGroup = request.TaskGroup,
TaskType = request.TaskType,
Location = elTagTask.Location,
diff --git a/WcsMain/Business/CirculationTask/CommonCirculation/DataClear.cs b/WcsMain/Business/CirculationTask/CommonCirculation/DataClear.cs
index 04ea1a1..5e2317e 100644
--- a/WcsMain/Business/CirculationTask/CommonCirculation/DataClear.cs
+++ b/WcsMain/Business/CirculationTask/CommonCirculation/DataClear.cs
@@ -14,7 +14,7 @@ public class DataClear(ClearData clearData)
/// 定时清理无用数据, ---- 每隔10分钟清理一次
///
///
- [CirculationTime(["14:34"], "数据清理")]
+ [CirculationTime(["03:00"], "数据清理")]
public void ClearDataCirculate()
{
try
diff --git a/WcsMain/Business/CirculationTask/Convey/UploadBoxArrive.cs b/WcsMain/Business/CirculationTask/Convey/UploadBoxArrive.cs
index 3bb7c98..300786e 100644
--- a/WcsMain/Business/CirculationTask/Convey/UploadBoxArrive.cs
+++ b/WcsMain/Business/CirculationTask/Convey/UploadBoxArrive.cs
@@ -14,7 +14,7 @@ namespace WcsMain.Business.CirculationTask.Convey;
[Circulation]
-public class UploadBoxArrive(AppConveyStandDao conveyStandDao, ConveyOperation conveyOperation, WmsWebApiPost wmsWebApiPost, AppConveyTaskDao conveyTaskDao)
+public class UploadBoxArrive(AppConveyStandDao conveyStandDao, ConveyOperation conveyOperation, WmsWebApiPost wmsWebApiPost, AppConveyTaskDao conveyTaskDao, AppElTagTaskDao elTagTaskDao)
{
private static List? _pickStands; // 拣选站台
@@ -42,10 +42,8 @@ public class UploadBoxArrive(AppConveyStandDao conveyStandDao, ConveyOperation c
{
string code = conveyOperation.ReadStandCode(stand.StandId!);
code = Regex.Replace(code, "\\W", "");
- if (string.IsNullOrEmpty(code))
- {
- return;
- }
+ if (string.IsNullOrEmpty(code)) return;
+ elTagTaskDao.ClearNotCompleteTaskWithStand(stand.StandId); // 清理之前未完成的电子标签任务
ConsoleLog.Info($"【提示】料箱:{code} 已经到达拣选站台:{stand.StandId}");
conveyOperation.ClearStandCodeStatus(stand.StandId!);
@@ -55,42 +53,42 @@ public class UploadBoxArrive(AppConveyStandDao conveyStandDao, ConveyOperation c
VehicleNo = code,
TaskType = (int)ConveyTaskTypeEnum.pick,
Location = stand.StandId,
- //TaskStatus = (int)ConveyTaskStatusEnum.moved
+ TaskStatus = (int)ConveyTaskStatusEnum.create
});
if (pickTasks == default || pickTasks.Count < 1)
{
ConsoleLog.Error($"【异常】拣选站台{stand.StandId} 料箱:{code} 找不到对应任务");
- return;
}
- var pickTask = pickTasks[0]; // 拣选任务
- // 更新表内拣选时间和状态
- conveyTaskDao.Update(new AppConveyTask()
+ else
{
- TaskId = pickTask.TaskId,
- TaskStatus = (int)ConveyTaskStatusEnum.arrive,
- ArriveLocation = stand.StandId,
- CompleteTime = DateTime.Now,
- Remark = "PLC上报料箱到达"
- });
- //return; // 测试
-
+ var pickTask = pickTasks[0]; // 拣选任务
+ conveyTaskDao.Update(new AppConveyTask()
+ {
+ TaskId = pickTask.TaskId,
+ TaskStatus = (int)ConveyTaskStatusEnum.arrive,
+ ArriveLocation = stand.StandId,
+ CompleteTime = DateTime.Now,
+ Remark = "PLC上报料箱到达"
+ }); // 更新表内拣选时间和状态
+ }
// 发送wms料箱到达
UploadPickStandRequest request = new()
{
Location = stand.StandId,
- VehicleNo = pickTask.VehicleNo,
- Remark = ""
+ VehicleNo = code,
+ Remark = $"料箱:{code} 已经到达站台:{stand.StandId}"
};
-
- var responseEntity = wmsWebApiPost.HttpPost(request,
- CommonData.AppApiBaseInfos.GetAddress("UploadBoxArrive") ?? "", 2000);
+ var responseEntity = wmsWebApiPost.HttpPost(request, CommonData.AppApiBaseInfos.GetAddress("UploadBoxArrive") ?? "", 2000);
if (responseEntity.IsSend) // 发送失败不处理,下一次循环在发送
{
// 只要发送成功则不再发送
- ConsoleLog.Info(
- $"拣选站台{stand.Area} 获得对应料箱:{pickTask.VehicleNo} 上报成功,WMS返回:{responseEntity.ResponseMsg}");
- var result = responseEntity.ResponseEntity;
+ ConsoleLog.Info($"拣选站台{stand.Area} 获得对应料箱:{code} 上报成功,WMS返回:{responseEntity.ResponseMsg}");
conveyOperation.ClearStandCodeStatus(stand.Area!);
+ //var result = responseEntity.ResponseEntity;
+ //if (result != null && result.Code == 0) // 上报成功
+ //{
+ // conveyOperation.ClearStandCodeStatus(stand.Area!);
+ //}
}
});
task.Start();
diff --git a/WcsMain/Business/CirculationTask/Stacker/RecordErr.cs b/WcsMain/Business/CirculationTask/Stacker/RecordErr.cs
new file mode 100644
index 0000000..1538d6c
--- /dev/null
+++ b/WcsMain/Business/CirculationTask/Stacker/RecordErr.cs
@@ -0,0 +1,71 @@
+using CirculateTool.Attribute;
+using WcsMain.ApiServe.Controllers.Dto.WcsDto.Stacker;
+using WcsMain.ApiServe.Factory;
+using WcsMain.Common;
+using WcsMain.DataBase.Dao;
+using WcsMain.DataBase.TableEntity;
+using WcsMain.DataService;
+using WcsMain.EquipOperation.Stacker;
+using WcsMain.ExtendMethod;
+
+namespace WcsMain.Business.CirculationTask.Stacker;
+
+///
+/// 本类主要用于采集堆垛机报警信息
+///
+[Circulation]
+public class RecordErr(StackerOperation stackerOperation, AppErrRecorDao errRecorDao, DataBaseData dataBaseData)
+{
+
+ Dictionary errData = []; // 用于存储故障
+
+ ///
+ /// 采集堆垛机报警信息
+ ///
+ ///
+ [Circulation("采集堆垛机报警信息", 1000)]
+ public bool RecordErrMethod()
+ {
+ List stackers = CommonData.AppStackers.Open();
+ if (stackers.Count < 1) return true;
+ foreach (AppStacker stacker in stackers)
+ {
+ /* 获取堆垛机状态 */
+ var (errMsg, stackerInfo) = stackerOperation.GetStackerInfo((int)stacker.StackerId!);
+ if (string.IsNullOrEmpty(errMsg) && stackerInfo != default)
+ {
+ short errCode = stackerInfo.ErrCode;
+ if (errCode != 0) // 有故障
+ {
+ bool isGet = errData.TryGetValue((int)stacker.StackerId, out short oldErrCode);
+ if(!isGet || oldErrCode != errCode) // 发生了一个新故障
+ {
+ AddStackerErr($"Stacker{stacker.StackerId}", errCode); // 添加故障
+ }
+ }
+ errData[(int)stacker.StackerId] = errCode; // 添加或者更新值
+ }
+ }
+ return true;
+ }
+
+ ///
+ /// 记录新故障
+ ///
+ ///
+ ///
+ private void AddStackerErr(string equipmentId, short errNo)
+ {
+ ConsoleLog.Error($"【报警】堆垛机设备:{equipmentId},发生新报警:{errNo}");
+ errRecorDao.Insert(new AppErrRecord
+ {
+ RecordId = dataBaseData.GetNewUUID2(),
+ Area = "S",
+ ErrNo = errNo,
+ EquipmentId = equipmentId,
+ CreateTime = DateTime.Now,
+ Remark = ""
+ });
+ }
+
+}
diff --git a/WcsMain/Business/CommonAction/ClearData.cs b/WcsMain/Business/CommonAction/ClearData.cs
index 47b2c30..4d146ae 100644
--- a/WcsMain/Business/CommonAction/ClearData.cs
+++ b/WcsMain/Business/CommonAction/ClearData.cs
@@ -34,7 +34,7 @@ public class ClearData(AppWmsTaskDao wmsTaskDao, AppWcsTaskDao wcsTaskDao, AppAp
var saveDays = clearTableAttribute.SaveDays; // 需要保存的天数
try
{
- int deleteCount = CommonTool.DbServe.Deleteable