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