From 21cd52c5592aad3687be74599a932012d9dd77a4 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期二, 15 四月 2025 10:03:38 +0800
Subject: [PATCH] 条码上传冠宏
---
代码管理/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/UpdateTaskAGV.cs | 61 +++++++++++++++++++
代码管理/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/CommonAGVJob.cs | 6 +
代码管理/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskCZService.cs | 25 ++++++++
代码管理/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs | 8 +-
代码管理/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_DTO/TaskInfo/CZTaskDto.cs | 29 +++++++++
代码管理/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/DtCZTask.cs | 6 ++
6 files changed, 126 insertions(+), 9 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_DTO/TaskInfo/CZTaskDto.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_DTO/TaskInfo/CZTaskDto.cs"
index a256fb1..fd2d500 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_DTO/TaskInfo/CZTaskDto.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_DTO/TaskInfo/CZTaskDto.cs"
@@ -65,5 +65,34 @@
/// 鍙枡鏈哄彴
/// </summary>
public string Tags { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡鏉$爜
+ /// </summary>
+ public string MaterialBarcode { get; set; }
+ }
+
+ public class CZTaskBarCodeDto
+ {
+ /// <summary>
+ /// 1鍙锋潯鐮�
+ /// </summary>
+ public string BarCode1 { get; set; }
+
+ /// <summary>
+ /// 2鍙锋潯鐮�
+ /// </summary>
+ public string BarCode2 { get; set; }
+
+ /// <summary>
+ /// 3鍙锋潯鐮�
+ /// </summary>
+ public string BarCode3 { get; set; }
+
+ /// <summary>
+ /// 4鍙锋潯鐮�
+ /// </summary>
+ public string BarCode4 { get; set; }
+
}
}
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/DtCZTask.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/DtCZTask.cs"
index 09fbda6..0417d6d 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/DtCZTask.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Model/Models/TaskInfo/DtCZTask.cs"
@@ -107,5 +107,11 @@
/// </summary>
[SugarColumn( IsNullable = true)]
public int TaskFJFinishNumber { get; set; }
+
+ /// <summary>
+ /// 浠诲姟璇︽儏(json鏍煎紡,瀛樺偍浠诲姟鐨勮缁嗕俊鎭疊arcode)
+ /// </summary>
+ [SugarColumn(IsNullable = true)]
+ public string DtCZTaskDetails { get; set; }
}
}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskCZService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskCZService.cs"
index 342bfba..d485293 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskCZService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskCZService.cs"
@@ -18,6 +18,7 @@
#endregion << 鐗� 鏈� 娉� 閲� >>
using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;
+using System.Text.Json;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseServices;
@@ -31,6 +32,7 @@
public class TaskCZService : ServiceBase<DtCZTask, ITaskCZRepository>, ITaskCZService
{
private readonly ITaskRepository _taskRepository;
+
public TaskCZService(ITaskCZRepository BaseDal, ITaskRepository taskRepository) : base(BaseDal)
{
_taskRepository = taskRepository;
@@ -109,6 +111,28 @@
{
czTask.TaskStatus = TaskInStatusEnum.Line_InExecuting.ToString();
}
+
+
+ if (dto.FinishNum is < 1 or > 4)
+ throw new ArgumentException("鍙傛暟閿欒锛丗inishNum 蹇呴』涓� 1-4");
+
+ var detail = dto.FinishNum == 1
+ ? new CZTaskBarCodeDto()
+ : JsonSerializer.Deserialize<CZTaskBarCodeDto>(czTask.DtCZTaskDetails) ?? new CZTaskBarCodeDto();
+
+ var property = dto.FinishNum switch
+ {
+ 1 => nameof(CZTaskBarCodeDto.BarCode1),
+ 2 => nameof(CZTaskBarCodeDto.BarCode2),
+ 3 => nameof(CZTaskBarCodeDto.BarCode3),
+ 4 => nameof(CZTaskBarCodeDto.BarCode4),
+ _ => throw new ArgumentOutOfRangeException("鍙傛暟閿欒锛佽妫�鏌ャ�怓inishNum銆戯紒")
+ };
+
+ typeof(CZTaskBarCodeDto).GetProperty(property)?.SetValue(detail, dto.MaterialBarcode);
+
+ czTask.DtCZTaskDetails = JsonSerializer.Serialize(detail);
+
var isTrue = BaseDal.UpdateData(czTask);
if (isTrue)
{
@@ -125,6 +149,7 @@
}
return Task.FromResult(response);
}
+
/// <summary>
/// 杈撻�佺嚎鍥炴祦
/// </summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/CommonAGVJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/CommonAGVJob.cs"
index 764488b..582298d 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/CommonAGVJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/CommonAGVJob.cs"
@@ -8,10 +8,12 @@
public class CommonAGVJob : JobBase, IJob, IDisposable
{
private readonly ITaskRepository _taskRepository;
+ private readonly ITaskCZRepository _taskCZRepository;
- public CommonAGVJob(ITaskRepository taskRepository)
+ public CommonAGVJob(ITaskRepository taskRepository, ITaskCZRepository taskCZRepository)
{
_taskRepository = taskRepository;
+ _taskCZRepository = taskCZRepository;
}
public void Dispose()
@@ -23,7 +25,7 @@
{
AGV agv = (AGV)context.JobDetail.JobDataMap.Get("JobParams");
SendTaskAGV.SendAGVTask(agv, _taskRepository);
- UpdateTaskAGV.UpdateTask(agv, _taskRepository);
+ UpdateTaskAGV.UpdateTask(agv, _taskRepository, _taskCZRepository);
return Task.CompletedTask;
}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/UpdateTaskAGV.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/UpdateTaskAGV.cs"
index 157560b..1f66fc7 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/UpdateTaskAGV.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/AGVJob/UpdateTaskAGV.cs"
@@ -1,6 +1,7 @@
锘縰sing Newtonsoft.Json;
using WIDESEAWCS_Common.AGVEnum;
using WIDESEAWCS_Common.TaskEnum;
+using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
@@ -202,7 +203,7 @@
if (WMSbackresult.Code > 0) { new Exception(WMSbackresult.Message); return; }
}
}
-
+
//agvtask_HtyRepository.AddTaskHistory(agvTask, OperateType.Finished.ToString());
_taskRepository.DeleteData(agvTask);
@@ -258,7 +259,7 @@
}
}
- public static void UpdateTask(AGV plcClient, ITaskRepository taskRepository)
+ public static void UpdateTask(AGV plcClient, ITaskRepository taskRepository, ITaskCZRepository _taskCZRepository)
{
// 浣跨敤Interlocked.Exchange淇濊瘉鍚屼竴鏃堕棿鍙湁涓�涓嚎绋嬪彲浠ユ墽琛屼换鍔℃洿鏂�
if (Interlocked.Exchange(ref _readUpdateAGVTaskSignalso, 1) == 0)
@@ -349,6 +350,49 @@
throw new Exception($"浠诲姟鐘舵�佹洿鏀逛负4缁堢偣宸插畬鎴愬け璐�,浠诲姟ID:{taskId},褰撳墠鐘舵��:{agvTask.TaskState}");
}
+ if (agvTask.TargetAddress.Contains("HXWLX"))
+ {
+ if (agvTask.SourceAddress.Contains("KPHLX"))
+ {
+ // 绌虹洏绾胯繘鐑樼
+ // TODO: 浠诲姟鎴彇瀹屾暣鏉$爜
+ var materials = new List<BakingClass>();
+
+ MESback WMSbackresult = MESAPIInvoke.BakingFeedingBinding(agvTask.TargetAddress, materials);
+ if (WMSbackresult.Code > 0) { new Exception(WMSbackresult.Message); return; }
+ }
+ else
+ {
+ // 鎻愬崌鏈鸿繘鐑樼
+ // TODO: 璋冪敤鍒涙櫤鎺ュ彛鑾峰彇瀹屾暣鏉$爜
+ var czTask = _taskCZRepository.QueryFirst(x => x.Id == agvTask.WMSId);
+ CZTaskBarCodeDto barCodeDto = JsonConvert.DeserializeObject<CZTaskBarCodeDto>(czTask.DtCZTaskDetails);
+ var materials = Enumerable.Range(0, 2)
+ .Select(i => new BakingClass
+ {
+ MaterialType = czTask.TaskProductCode,
+ BarCode = GetBarCodeByIndex(barCodeDto, i, hasDesc: !string.IsNullOrEmpty(czTask.TaskDesc))
+ })
+ .ToList();
+
+ MESback WMSbackresult = MESAPIInvoke.BakingFeedingBinding(agvTask.TargetAddress, materials);
+ if (WMSbackresult.Code > 0) { new Exception(WMSbackresult.Message); return; }
+ else
+ {
+ if (!string.IsNullOrEmpty(czTask.TaskDesc))
+ {
+ czTask.TaskDesc = "浠诲姟瀹屾垚涓ゆ娆�";
+ _taskCZRepository.DeleteData(czTask);
+ }
+ else
+ {
+ czTask.TaskDesc = "浠诲姟瀹屾垚涓�娆�";
+ _taskCZRepository.UpdateData(czTask);
+ }
+ }
+ }
+ }
+
// 鍒犻櫎宸插畬鎴愮殑浠诲姟
taskRepository.DeleteData(agvTask);
plcClient.Communicator.Write(taskFbInteractive2, 1);
@@ -411,6 +455,19 @@
}
}
}
+
+ // 杈呭姪鏂规硶
+ private static string GetBarCodeByIndex(CZTaskBarCodeDto dto, int index, bool hasDesc)
+ {
+ return (index, hasDesc) switch
+ {
+ (0, false) => dto.BarCode1,
+ (1, false) => dto.BarCode2,
+ (0, true) => dto.BarCode3,
+ (1, true) => dto.BarCode4,
+ _ => throw new IndexOutOfRangeException()
+ };
+ }
}
public class BakingFeedingClass
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs"
index 68847ca..93f0168 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/NEWCode/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs"
@@ -53,8 +53,6 @@
public Task Execute(IJobExecutionContext context)
-
-
{
try
{
@@ -131,7 +129,7 @@
}
// 鍒涘缓骞舵坊鍔犳柊浠诲姟鍒颁换鍔′粨搴�
- task = CreateTask(fromAdd, czTask.TaskEndAddress, czTask.TaskOrderNo, czTask.TaskProductCode, taskType);
+ task = CreateTask(fromAdd, czTask.TaskEndAddress, czTask.TaskOrderNo, czTask.TaskProductCode, taskType, czTask.Id);
_taskRepository.AddData(task);
ConsoleHelper.WriteInfoLine($"{nameof(CommonConveyorLineJob)}: {taskType}{requestType},浠诲姟宸茬敓鎴愶紝绛夊緟鎵ц......");
}
@@ -191,7 +189,7 @@
}
// 杈呭姪鏂规硶锛氬垱寤轰换鍔″璞�
- private Dt_Task CreateTask(string currentAddress, string targetAddress, string remark, string palletCode, string taskType)
+ private Dt_Task CreateTask(string currentAddress, string targetAddress, string remark, string palletCode, string taskType, int czTaskID = 0)
{
Dt_Task dt_Task = _taskRepository.QueryFirst(x => x.SourceAddress == currentAddress);
if (dt_Task != null)
@@ -213,7 +211,7 @@
NextAddress = targetAddress,
Barcode = "",
Roadway = $"{taskType}AGV",
- WMSId = 0,
+ WMSId = czTaskID > 0 ? czTaskID : 0,
Remark = remark
};
}
--
Gitblit v1.9.3