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