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