From 2b8a51779ff7107c9423e21935c169d6bb877d64 Mon Sep 17 00:00:00 2001 From: hwh <332078369@qq.com> Date: 星期三, 11 九月 2024 14:47:15 +0800 Subject: [PATCH] Merge branch 'master' of http://47.95.120.53:8083/r/WCSNet6 --- Admin.NET/WCS.Application/Service/WcsTask/WcsTaskService.cs | 66 +++++++++++++++++++++ Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs | 3 Admin.NET/WCS.Application/Entity/WcsTask.cs | 2 Admin.NET/WCS.Application/Service/WcsCheckTask/Dto/WcsCheckTaskInput.cs | 2 Web/src/views/wcs/wcsTask/component/editDialog.vue | 31 ++++++++++ Web/src/views/device/sortPallet/index.vue | 8 +- Admin.NET/WCS.Application/Service/WcsCheckTask/WcsCheckTaskService.cs | 13 +++- Admin.NET/WCS.Application/Enum/TaskEnum.cs | 18 ++++++ Admin.NET/WCS.Application/Service/WcsTask/Dto/WcsTaskInput.cs | 2 Admin.NET/WCS.Application/Entity/WcsCheckTask.cs | 18 +++++- Web/src/views/device/wcsOderTask/component/editDialog.vue | 2 Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceTaskOrderDto.cs | 3 12 files changed, 151 insertions(+), 17 deletions(-) diff --git a/Admin.NET/WCS.Application/Entity/WcsCheckTask.cs b/Admin.NET/WCS.Application/Entity/WcsCheckTask.cs index 9b0970e..4e618f3 100644 --- a/Admin.NET/WCS.Application/Entity/WcsCheckTask.cs +++ b/Admin.NET/WCS.Application/Entity/WcsCheckTask.cs @@ -15,11 +15,23 @@ public class WcsCheckTask : EntityBaseData { /// <summary> + /// 浠诲姟鍙� + /// </summary> + [SugarColumn(ColumnName = "TaskNo", ColumnDescription = "浠诲姟鍙�", Length = 20)] + public string? TaskNo { get; set; } + + /// <summary> /// WMS涓嬪彂鍗曞彿 /// </summary> [SugarColumn(ColumnName = "OrderNo", ColumnDescription = "WMS涓嬪彂鍗曞彿", Length = 20)] public string? OrderNo { get; set; } - + + /// <summary> + /// 鏈哄櫒浜虹被鍨� + /// </summary> + [SugarColumn(ColumnName = "RoboatType", ColumnDescription = "鏈哄櫒浜虹被鍨�", Length = 5)] + public string? RoboatType { get; set; } + /// <summary> /// 鏈哄櫒浜虹紪鍙� /// </summary> @@ -29,8 +41,8 @@ /// <summary> /// 鍒嗘嫞绾跨紪鍙� /// </summary> - [SugarColumn(ColumnName = "LineNO", ColumnDescription = "鍒嗘嫞绾跨紪鍙�", Length = 5)] - public string? LineNO { get; set; } + [SugarColumn(ColumnName = "LineNo", ColumnDescription = "鍒嗘嫞绾跨紪鍙�", Length = 5)] + public string? LineNo { get; set; } /// <summary> /// 鐮佺洏宸ヤ綅鍙� diff --git a/Admin.NET/WCS.Application/Entity/WcsTask.cs b/Admin.NET/WCS.Application/Entity/WcsTask.cs index 8119603..4a3b69b 100644 --- a/Admin.NET/WCS.Application/Entity/WcsTask.cs +++ b/Admin.NET/WCS.Application/Entity/WcsTask.cs @@ -113,7 +113,7 @@ /// 鎷h揣鏂瑰紡 /// </summary> [SugarColumn(ColumnName = "UnstackingMode", ColumnDescription = "鎷h揣鏂瑰紡", Length = 10)] - public string? UnstackingMode { get; set; } + public UnstackingModeEnum? UnstackingMode { get; set; } /// <summary> /// 鍙栨秷鏃堕棿 diff --git a/Admin.NET/WCS.Application/Enum/TaskEnum.cs b/Admin.NET/WCS.Application/Enum/TaskEnum.cs index d35bae5..c59998b 100644 --- a/Admin.NET/WCS.Application/Enum/TaskEnum.cs +++ b/Admin.NET/WCS.Application/Enum/TaskEnum.cs @@ -85,4 +85,22 @@ /// </summary> [Description("鍥炰紶澶辫触")] Fail = 1 +} +/// <summary> +/// 鎷h揣鏂瑰紡 +/// </summary> +[Description("鎷h揣鏂瑰紡")] +public enum UnstackingModeEnum +{ + /// <summary> + /// 鏈哄櫒鎷嗘墭鍑� + /// </summary> + [Description("鏈哄櫒鎷嗘墭鍑�")] + Machine = 0, + + /// <summary> + /// 浜哄伐鎷h揣鍑� + /// </summary> + [Description("浜哄伐鎷h揣鍑�")] + Artificial = 1, } \ No newline at end of file diff --git a/Admin.NET/WCS.Application/Service/WcsCheckTask/Dto/WcsCheckTaskInput.cs b/Admin.NET/WCS.Application/Service/WcsCheckTask/Dto/WcsCheckTaskInput.cs index f9ec4c8..b478f73 100644 --- a/Admin.NET/WCS.Application/Service/WcsCheckTask/Dto/WcsCheckTaskInput.cs +++ b/Admin.NET/WCS.Application/Service/WcsCheckTask/Dto/WcsCheckTaskInput.cs @@ -169,7 +169,7 @@ /// <summary> /// 鍒嗘嫞绾跨紪鍙� /// </summary> - public string? LineNO { get; set; } + public string? LineNo { get; set; } /// <summary> /// 鐮佺洏宸ヤ綅鍙� diff --git a/Admin.NET/WCS.Application/Service/WcsCheckTask/WcsCheckTaskService.cs b/Admin.NET/WCS.Application/Service/WcsCheckTask/WcsCheckTaskService.cs index 5d9c864..2f85b2f 100644 --- a/Admin.NET/WCS.Application/Service/WcsCheckTask/WcsCheckTaskService.cs +++ b/Admin.NET/WCS.Application/Service/WcsCheckTask/WcsCheckTaskService.cs @@ -45,7 +45,7 @@ .WhereIF(!string.IsNullOrEmpty(input.SearchKey), u => u.OrderNo.Contains(input.SearchKey) || u.RoboatNo.Contains(input.SearchKey) - || u.LineNO.Contains(input.SearchKey) + || u.LineNo.Contains(input.SearchKey) || u.Port.Contains(input.SearchKey) || u.LotNo.Contains(input.SearchKey) || u.SkuNo.Contains(input.SearchKey) @@ -57,7 +57,7 @@ ) .WhereIF(!string.IsNullOrWhiteSpace(input.OrderNo), u => u.OrderNo.Contains(input.OrderNo.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.RoboatNo), u => u.RoboatNo.Contains(input.RoboatNo.Trim())) - .WhereIF(!string.IsNullOrWhiteSpace(input.LineNO), u => u.LineNO.Contains(input.LineNO.Trim())) + .WhereIF(!string.IsNullOrWhiteSpace(input.LineNo), u => u.LineNo.Contains(input.LineNo.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.Port), u => u.Port.Contains(input.Port.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.LotNo), u => u.LotNo.Contains(input.LotNo.Trim())) .WhereIF(!string.IsNullOrWhiteSpace(input.SkuNo), u => u.SkuNo.Contains(input.SkuNo.Trim())) @@ -196,6 +196,10 @@ checkTaskInfo.PZNo = skuInfo.PZNo; //鏇存柊鍒嗘嫞浠诲姟 await _wcsCheckTaskRep.AsUpdateable(checkTaskInfo).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); + + #region#缁橮LC鍐欐暟鎹� + + #endregion } [HttpPost] @@ -203,18 +207,21 @@ [DisplayName("浠诲姟缁撴壒")] public async Task CloseTaskForPLC(BindTaskPLCInput input) { - #region 璇锋眰PLC鎺ュ彛 + #region 璇锋眰PLC鎺ュ彛锛堣繖涓柟娉曞疄闄呮槸棰勭粨鎵癸紝缁橮LC鍙戦�侀缁撴壒淇℃伅锛岀劧鍚嶱LC鍐嶇粰WCS鍙戦�佺粨鎵逛俊鍙峰啀灏嗗垎鎷d俊鎭竻绌猴級 + #endregion //鍒嗘嫞浠诲姟淇℃伅 var checkTaskList = _wcsCheckTaskRep.Context.Queryable<WcsCheckTask>().Where(w => w.LotNo == input.lotNo && w.Status == "1").ToList(); foreach (var item in checkTaskList) { item.OrderNo = ""; + item.TaskNo = ""; item.LotNo = ""; item.SkuNo = ""; item.SkuName = ""; item.BoxType = ""; item.Qty = 0; + item.PZNo = ""; item.Status = "0";//鏈粦瀹� } //鏇存柊鍒嗘嫞浠诲姟 diff --git a/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceTaskOrderDto.cs b/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceTaskOrderDto.cs index 116d386..87420b4 100644 --- a/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceTaskOrderDto.cs +++ b/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceTaskOrderDto.cs @@ -9,6 +9,7 @@ { public long Id { get; set; } public string Text { get; set; } + public string? TaskNo { get; set; } public string? OrderNo { get; set; } public string? LotNo { get; set; } public string? SkuNo { get; set; } @@ -18,6 +19,6 @@ /// 鎬荤鏁�/璁″垝绠辨暟/棰勪及绠辨暟 /// </summary> public int? Qty { get; set; } - public string? LineNO { get; set; } + public string? LineNo { get; set; } public string? PZNo { get; set; } } diff --git a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs index 403432f..032a946 100644 --- a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs +++ b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs @@ -405,11 +405,12 @@ { Id=device.Id, Text=device.Text, + TaskNo=task.TaskNo, OrderNo=task.OrderNo, LotNo=task.LotNo, SkuNo=task.SkuNo, SkuName=task.SkuName, - LineNO=task.LineNO, + LineNo=task.LineNo, Status =task.Status, PZNo=task.PZNo, Qty=task.Qty diff --git a/Admin.NET/WCS.Application/Service/WcsTask/Dto/WcsTaskInput.cs b/Admin.NET/WCS.Application/Service/WcsTask/Dto/WcsTaskInput.cs index 1fd8664..30ed7df 100644 --- a/Admin.NET/WCS.Application/Service/WcsTask/Dto/WcsTaskInput.cs +++ b/Admin.NET/WCS.Application/Service/WcsTask/Dto/WcsTaskInput.cs @@ -102,7 +102,7 @@ /// <summary> /// 鎷h揣鏂瑰紡 /// </summary> - public virtual string? UnstackingMode { get; set; } + public virtual UnstackingModeEnum? UnstackingMode { get; set; } /// <summary> /// 鍙栨秷鏃堕棿 diff --git a/Admin.NET/WCS.Application/Service/WcsTask/WcsTaskService.cs b/Admin.NET/WCS.Application/Service/WcsTask/WcsTaskService.cs index d3408f7..3f2e706 100644 --- a/Admin.NET/WCS.Application/Service/WcsTask/WcsTaskService.cs +++ b/Admin.NET/WCS.Application/Service/WcsTask/WcsTaskService.cs @@ -1,7 +1,9 @@ 锘� using AngleSharp.Dom; +using Elastic.Clients.Elasticsearch.Tasks; using Furion.DatabaseAccessor; using Microsoft.AspNetCore.SignalR; +using WCS.Application.Entity; namespace WCS.Application; @@ -13,11 +15,15 @@ { private readonly SqlSugarRepository<WcsTask> _wcsTaskRep; private readonly IHubContext<TaskLogHub, ITaskLogHub> _taskLogHubContext; + private readonly SqlSugarRepository<WcsCheckTask> _wcsCheckTaskRep; + private readonly SqlSugarRepository<WcsMateialPzInfo> _wcsMateialPzInfoRep; - public WcsTaskService(SqlSugarRepository<WcsTask> wcsTaskRep, IHubContext<TaskLogHub, ITaskLogHub> taskLogHubContext) + public WcsTaskService(SqlSugarRepository<WcsTask> wcsTaskRep, IHubContext<TaskLogHub, ITaskLogHub> taskLogHubContext, SqlSugarRepository<WcsCheckTask> wcsCheckTaskRep, SqlSugarRepository<WcsMateialPzInfo> wcsMateialPzInfoRep) { _wcsTaskRep = wcsTaskRep; _taskLogHubContext = taskLogHubContext; + _wcsCheckTaskRep = wcsCheckTaskRep; + _wcsMateialPzInfoRep = wcsMateialPzInfoRep; } /// <summary> @@ -56,9 +62,48 @@ { throw Oops.Bah("浠诲姟鍙烽噸澶�"); } + if (input.UnstackingMode == UnstackingModeEnum.Machine) + { + if (string.IsNullOrEmpty(input.SkuNo) || string.IsNullOrEmpty(input.SkuName)) + { + throw Oops.Bah("鏈哄櫒浜烘嫞璐э紝鐗╂枡鍜屾壒娆′俊鎭笉鑳戒负绌�"); + } + } var entity = input.Adapt<WcsTask>(); entity.Origin = "WCS"; await _wcsTaskRep.InsertAsync(entity); + + #region 缁戝畾鍨涙満 + + //鐗╂枡鍝佺淇℃伅 + var skuInfo = await _wcsMateialPzInfoRep.Context.Queryable<WcsMateialPzInfo>().Where(w => w.SkuNo == input.SkuNo).FirstAsync(); + if (skuInfo == null) + { + throw Oops.Oh("鐗╂枡鍝佺淇℃伅涓嶅瓨鍦�"); + } + //鍒嗘嫞浠诲姟淇℃伅 + var checkTaskInfo = await _wcsCheckTaskRep.Context.Queryable<WcsCheckTask>().Where(w => w.Status == "0" && w.RoboatType == "0").OrderBy(o => o.LineNo).FirstAsync(); + if (checkTaskInfo == null) + { + throw Oops.Oh("鍒嗘嫞浠诲姟淇℃伅涓嶅瓨鍦�"); + } + if (checkTaskInfo.Status != "0") + { + throw Oops.Oh("璇ュ伐浣嶅凡缁戝畾浠诲姟锛岃鍕垮啀娆$粦瀹�"); + } + checkTaskInfo.OrderNo = ""; + checkTaskInfo.TaskNo = entity.TaskNo; + checkTaskInfo.LotNo = entity.LotNo; + checkTaskInfo.SkuNo = entity.SkuNo; + checkTaskInfo.SkuName = entity.SkuName; + checkTaskInfo.BoxType = ""; + checkTaskInfo.Qty = entity.Qty; + checkTaskInfo.Status = "1";//宸茬粦瀹� + checkTaskInfo.PZNo = skuInfo.PZNo; + //鏇存柊鍒嗘嫞浠诲姟 + await _wcsCheckTaskRep.AsUpdateable(checkTaskInfo).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); + #endregion + return entity.Id; } @@ -155,6 +200,25 @@ await _wcsTaskRep.Context.Insertable(modTaskMonitor).ExecuteCommandAsync(); //await _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>()); //await _taskLogHubContext.Clients.All.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>()); + + #region + //鍒嗘嫞浠诲姟淇℃伅 + var checkTaskList = _wcsCheckTaskRep.Context.Queryable<WcsCheckTask>().Where(w => w.TaskNo == modTask.TaskNo && w.Status == "1").ToList(); + foreach (var item in checkTaskList) + { + item.OrderNo = ""; + item.TaskNo = ""; + item.LotNo = ""; + item.SkuNo = ""; + item.SkuName = ""; + item.BoxType = ""; + item.Qty = 0; + item.PZNo = ""; + item.Status = "0";//鏈粦瀹� + } + //鏇存柊鍒嗘嫞浠诲姟 + await _wcsCheckTaskRep.AsUpdateable(checkTaskList).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); + #endregion } else { diff --git a/Web/src/views/device/sortPallet/index.vue b/Web/src/views/device/sortPallet/index.vue index 5bdd4f7..a4aba31 100644 --- a/Web/src/views/device/sortPallet/index.vue +++ b/Web/src/views/device/sortPallet/index.vue @@ -27,9 +27,9 @@ <el-form-item label="WMS鏄庣粏鍗曞彿"> <el-input v-model="deviceInfo.orderNo" readonly></el-input> </el-form-item> - <!-- <el-form-item label="浠诲姟鍙�"> - <el-input v-model=""></el-input> - </el-form-item> --> + <el-form-item label="浠诲姟鍙�"> + <el-input v-model="deviceInfo.taskNo"></el-input> + </el-form-item> <el-form-item label="鎵规鍙�"> <el-input v-model="deviceInfo.lotNo" readonly></el-input> </el-form-item> @@ -40,7 +40,7 @@ <el-input v-model="deviceInfo.skuName" readonly></el-input> </el-form-item> <el-form-item label="鍒嗘嫞绾跨紪鍙�"> - <el-input v-model="deviceInfo.lineNO" readonly></el-input> + <el-input v-model="deviceInfo.lineNo" readonly></el-input> </el-form-item> <el-form-item label="缁戝畾鐘舵��"> <el-input :value="deviceInfo.status === '0' ? '鏈粦瀹�' : '宸茬粦瀹�'" readonly></el-input> diff --git a/Web/src/views/device/wcsOderTask/component/editDialog.vue b/Web/src/views/device/wcsOderTask/component/editDialog.vue index d0d0468..652ccb2 100644 --- a/Web/src/views/device/wcsOderTask/component/editDialog.vue +++ b/Web/src/views/device/wcsOderTask/component/editDialog.vue @@ -115,7 +115,7 @@ </template> </el-dialog> - <!-- 缁戝畾浠诲姟寮规 --> + <!-- 閫夋嫨鐗╂枡寮规 --> <el-dialog v-model="bindDialogVisible" title="閫夋嫨鏁版嵁"> <el-table :data="bindBoxData" diff --git a/Web/src/views/wcs/wcsTask/component/editDialog.vue b/Web/src/views/wcs/wcsTask/component/editDialog.vue index 12cb215..7b112e6 100644 --- a/Web/src/views/wcs/wcsTask/component/editDialog.vue +++ b/Web/src/views/wcs/wcsTask/component/editDialog.vue @@ -64,6 +64,37 @@ </el-form-item> </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> + <el-form-item label="鎷h揣鏂瑰紡" prop="unstackingMode"> + <el-select clearable v-model="ruleForm.unstackingMode" placeholder="璇烽�夋嫨鎷h揣鏂瑰紡"> + <el-option v-for="(item,index) in dl('UnstackingModeEnum')" :key="index" :value="Number(item.value)" :label="`${item.name} (${item.code}) [${item.value}]`"></el-option> + + </el-select> + + </el-form-item> + + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> + <el-form-item label="鐗╂枡缂栫爜" prop="skuNo"> + <el-input v-model="ruleForm.skuNo" placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" maxlength="20" show-word-limit clearable /> + + </el-form-item> + + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> + <el-form-item label="鐗╂枡鍚嶇О" prop="skuName"> + <el-input v-model="ruleForm.skuName" placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" maxlength="50" show-word-limit clearable/> + + </el-form-item> + + </el-col> + <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> + <el-form-item label="鎵规鍙�" prop="lotNo"> + <el-input v-model="ruleForm.lotNo" placeholder="璇疯緭鍏ユ壒娆″彿" maxlength="50" show-word-limit clearable /> + + </el-form-item> + + </el-col> </el-row> </el-form> <template #footer> -- Gitblit v1.8.0