From 50f6cb0f96f04f505b9493f7621d8e49ad5add9d Mon Sep 17 00:00:00 2001
From: chengsc <Demo@DESKTOP-CPA90BF>
Date: 星期一, 04 十一月 2024 08:13:32 +0800
Subject: [PATCH] Merge branch 'master' of http://47.95.120.53:8083/r/WCSNet6
---
Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceInput.cs | 4
Web/src/api/wcs/wcsDevice.ts | 16
Admin.NET/WCS.Application/PLC/PLCService.cs | 327 +++++++-------
Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs | 119 +++++
Web/src/views/device/deviceInfo/index.vue | 189 +++++--
Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs | 362 ++++++++++++++--
Admin.NET/WCS.Application/Entity/WcsBoxInfo.cs | 27 +
Admin.NET/WCS.Application/Service/WcsCheckTask/WcsCheckTaskService.cs | 39
Admin.NET/WCS.Application/PLC/PLCCommon.cs | 3
Admin.NET/WCS.Application/PLC/PLCTaskAction.cs | 6
Web/src/views/device/deviceStartStop/index.vue | 39 +
Admin.NET/WCS.Application/Model/TaskRequest.cs | 128 +++++
Web/src/views/wcs/wcsTask/index.vue | 13
13 files changed, 968 insertions(+), 304 deletions(-)
diff --git a/Admin.NET/WCS.Application/Entity/WcsBoxInfo.cs b/Admin.NET/WCS.Application/Entity/WcsBoxInfo.cs
index 7d2b76e..c43cbdb 100644
--- a/Admin.NET/WCS.Application/Entity/WcsBoxInfo.cs
+++ b/Admin.NET/WCS.Application/Entity/WcsBoxInfo.cs
@@ -117,13 +117,19 @@
/// </summary>
[SugarColumn(ColumnName = "StoreTime", ColumnDescription = "瀛樺偍鏈熻嚦")]
public DateTime? StoreTime { get; set; }
-
+
+ /// <summary>
+ /// 鎶芥鏍囪
+ /// </summary>
+ [SugarColumn(ColumnName = "InsPectMark", ColumnDescription = "鎶芥鏍囪", Length = 3)]
+ public string? InsPectMark { get; set; }
+
/// <summary>
/// 闆剁鏍囪
/// </summary>
[SugarColumn(ColumnName = "BitBoxMark", ColumnDescription = "闆剁鏍囪", Length = 3)]
public string? BitBoxMark { get; set; }
-
+
/// <summary>
/// 绠辩爜
/// </summary>
@@ -166,9 +172,22 @@
[SugarColumn(ColumnName = "EndLotFlag", ColumnDescription = "缁撴壒鏍囪瘑", Length = 3)]
public string? EndLotFlag { get; set; }
+ /// <summary>
+ /// 鎬讳欢鏁�
+ /// </summary>
+ [SugarColumn(ColumnName = "QtyCount", ColumnDescription = "鎬讳欢鏁�")]
+ public int? QtyCount { get; set; }
+ /// <summary>
+ /// 绗嚑浠�
+ /// </summary>
+ [SugarColumn(ColumnName = "QtyOrd", ColumnDescription = "绗嚑浠�")]
+ public int? QtyOrd { get; set; }
-
-
+ /// <summary>
+ /// 鐘舵��
+ /// </summary>
+ [SugarColumn(ColumnName = "Status", ColumnDescription = "鐘舵��", Length = 3)]
+ public string? Status { get; set; }
}
diff --git a/Admin.NET/WCS.Application/Model/TaskRequest.cs b/Admin.NET/WCS.Application/Model/TaskRequest.cs
index fc7a5c1..105610b 100644
--- a/Admin.NET/WCS.Application/Model/TaskRequest.cs
+++ b/Admin.NET/WCS.Application/Model/TaskRequest.cs
@@ -305,3 +305,131 @@
public List<ResponseTasksModel> TaskList { get; set; }
}
+
+/// <summary>
+/// 杩斿洖璧嬬爜绯荤粺鍝嶅簲鍙傛暟
+/// </summary>
+public class ResponseFuMaModel
+{
+ /// <summary>
+ /// 鐘舵�佺爜 0鎴愬姛 -1锛氬け璐�
+ /// </summary>
+ public string Success { get; set; }
+ /// <summary>
+ /// 鎻愮ず淇℃伅
+ /// </summary>
+ public string Message { get; set; }
+}
+
+/// <summary>
+/// 璧嬬爜绯荤粺鎺ㄩ�佺鐮佷俊鎭�
+/// </summary>
+public class FumaBoxInfoInput
+{
+ /// <summary>
+ /// 绠辩爜
+ /// </summary>
+ public string BoxNo { get; set; }
+ /// <summary>
+ /// 鍗曟嵁鍙�
+ /// </summary>
+ public string OrderNo { get; set; }
+ /// <summary>
+ /// 鐗╂枡缂栫爜
+ /// </summary>
+ public string SkuNo { get; set; }
+ /// <summary>
+ /// 鐗╂枡鍚嶇О
+ /// </summary>
+ public string SkuName { get; set; }
+ /// <summary>
+ /// 鐗╂枡瑙勬牸
+ /// </summary>
+ public string Standard { get; set; }
+ /// <summary>
+ /// 鎵规鍙�
+ /// </summary>
+ public string LotNo { get; set; }
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ public decimal Qty { get; set; }
+ /// <summary>
+ /// 婊$鏁伴噺
+ /// </summary>
+ public decimal FullQty { get; set; }
+ /// <summary>
+ /// 渚涜揣鍟嗘壒娆�
+ /// </summary>
+ public string SupplierLot { get; set; }
+ /// <summary>
+ /// 鏄惁鎶芥绠� 0鍚� 1鏄�
+ /// </summary>
+ public string InsPectMark { get; set; }
+ /// <summary>
+ /// 鏄惁闆剁 0鍚� 1鏄�
+ /// </summary>
+ public string BitBoxMark { get; set; }
+ /// <summary>
+ /// 璐ㄦ鐘舵�� 0寰呮锛堥粯璁わ級 1鍚堟牸 2涓嶅悎鏍�
+ /// </summary>
+ public string InspectStatus { get; set; }
+ /// <summary>
+ /// 鐢熶骇鏃ユ湡
+ /// </summary>
+ public string ProductionTime { get; set; }
+ /// <summary>
+ /// 澶辨晥鏃ユ湡
+ /// </summary>
+ public string ExpirationTime { get; set; }
+ /// <summary>
+ /// 鍌ㄥ瓨鏈熻嚦
+ /// </summary>
+ public string StoreTime { get; set; }
+ /// <summary>
+ /// 鏉ユ簮 鍥哄畾鍊糩璧嬬爜]
+ /// </summary>
+ public string Origin { get; set; }
+ /// <summary>
+ /// 缁撴壒鏍囪瘑 0/绌猴細鍚� 1锛氭槸
+ /// </summary>
+ public string EndBatchMark { get; set; }
+ /// <summary>
+ /// 绠卞唴鏄庣粏
+ /// </summary>
+ public List<BoxList> DelistList { get; set; }
+
+}
+
+public class BoxList
+{
+ /// <summary>
+ /// 鐩掔爜
+ /// </summary>
+ public string BoxNo2 { get; set; }
+ /// <summary>
+ /// 鏀爜闆嗗悎
+ /// </summary>
+ public List<BoxList2> DelistList2 { get; set; }
+}
+
+public class BoxList2
+{
+ /// <summary>
+ /// 鏀爜
+ /// </summary>
+ public string BoxNo3 { get; set; }
+ /// <summary>
+ /// 鏁伴噺
+ /// </summary>
+ public decimal Qty { get; set; }
+ /// <summary>
+ /// 鎬讳欢鏁�
+ /// </summary>
+ public int? QtyCount { get; set; }
+ /// <summary>
+ /// 绗嚑浠�
+ /// </summary>
+ public int? QtyOrd { get; set; }
+}
+
diff --git a/Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs b/Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs
index 838dae2..6de853a 100644
--- a/Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs
+++ b/Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs
@@ -1,4 +1,8 @@
-锘縰sing Elastic.Clients.Elasticsearch;
+锘縰sing DocumentFormat.OpenXml.Presentation;
+using Elastic.Clients.Elasticsearch;
+using Furion.Logging;
+using Newtonsoft.Json;
+using System;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Text;
@@ -159,4 +163,117 @@
}
}
+
+ /// <summary>
+ /// WCS鎺ュ彈璧嬬爜绯荤粺鎺ㄩ�佺殑绠辩爜淇℃伅
+ /// </summary>
+ /// <param name="models">绠辩爜淇℃伅</param>
+ /// <returns>鍙嶉淇℃伅</returns>
+ [HttpPost]
+ [AllowAnonymous]
+ public ResponseFuMaModel AddHttpBoxInfo(FumaBoxInfoInput models)
+ {
+
+ try
+ {
+ string str = JsonConvert.SerializeObject(models);
+ Log.Information("鎺ユ敹璧嬬爜鎺ㄩ�佺殑绠辩爜淇℃伅锛�"+str);
+ if (models.Origin != "璧嬬爜")
+ {
+ throw new Exception("鏉ユ簮鏈瘑鍒�");
+ }
+ var num = _db.Queryable<WcsBoxInfo>().Where(m=>m.BoxNo == models.BoxNo && m.IsDelete == false).ToList();
+ var type = "add";
+ if (num.Count>0)
+ {
+ //WCS瀛樺湪绠辩爜淇℃伅锛屾洿鏂扮鐮佷俊鎭�(闇�鍒ゆ柇绠辩爜鏄惁宸茬粍鐩樺叆搴�)
+ var num2 = num.Count(m => m.Status != "0" || !string.IsNullOrWhiteSpace(m.PalletNo));
+ if (num2 > 0)
+ {
+ throw new Exception("璇ョ宸插叆鐩樺叆搴擄紝涓嶅彲鏇存柊淇℃伅");
+ }
+ type = "edit";
+ }
+
+ if (models.DelistList.Count == 0)
+ {
+ throw new Exception("鐩掔爜闆嗗悎涓嶈兘涓虹┖");
+ }
+
+ var listBox = new List<WcsBoxInfo>();
+ foreach (var item in models.DelistList)
+ {
+ var level = "3";
+ if (string.IsNullOrWhiteSpace(item.BoxNo2))
+ {
+ level = "2";
+ }
+ if (item.DelistList2.Count == 0)
+ {
+ throw new Exception("鍊肩爜闆嗗悎涓嶈兘涓虹┖");
+ }
+ //浜岀骇鐮�
+ foreach (var item2 in item.DelistList2)
+ {
+ if (string.IsNullOrWhiteSpace(models.ProductionTime) || string.IsNullOrWhiteSpace(models.ExpirationTime))
+ {
+ throw new Exception("鐢熶骇鏃ユ湡鎴栧け鏁堟棩鏈熶笉鑳戒负绌�");
+ }
+ DateTime proTime;
+ DateTime expTime;
+ var isValid = DateTime.TryParse(models.ProductionTime, out proTime);
+ var isValid2 = DateTime.TryParse(models.ExpirationTime, out expTime);
+ if (!isValid || !isValid2)
+ {
+ throw new Exception("鐢熶骇鏃ユ湡鎴栧け鏁堟棩鏈熸牸寮忛敊璇�");
+ };
+
+ var boxAdd = new WcsBoxInfo()
+ {
+ BoxNo = models.BoxNo,
+ //OrderNo = models.OrderNo,
+ SkuNo = models.SkuNo,
+ SkuName = models.SkuName,
+ Standard = models.Standard,
+ LotNo = models.LotNo,
+ Qty = item2.Qty,
+ FullQty = models.FullQty,
+ //SupplierLot = models.SupplierLot,
+ InsPectMark = models.InsPectMark,
+ BitBoxMark = models.BitBoxMark,
+ //InspectStatus = models.InspectStatus锛�
+ ProductionTime = proTime,
+ ExpirationTime = expTime,
+ StoreTime = DateTime.Parse(models.StoreTime),
+ EndLotFlag = string.IsNullOrWhiteSpace(models.EndBatchMark) ? "0" : models.EndBatchMark,
+
+ BoxNo2 = item.BoxNo2,
+ BoxNo3 = item2.BoxNo3,
+ QtyCount = item2.QtyCount,
+ QtyOrd = item2.QtyOrd,
+
+ Status = "0",
+ Level = level,
+
+ IsDelete = false
+ };
+ listBox.Add(boxAdd);
+ }
+
+ }
+ _db.Insertable(listBox).ExecuteCommand();
+ if (type == "edit")
+ {
+ //gen
+ _db.Deleteable(num).ExecuteCommand();
+ return new ResponseFuMaModel() { Success = "0", Message = "鏇存柊鎴愬姛" };
+ }
+ return new ResponseFuMaModel() { Success = "0", Message = "鎻掑叆鎴愬姛" };
+ }
+ catch (Exception ex)
+ {
+ return new ResponseFuMaModel() { Success = "-1", Message = ex.Message };
+ }
+ }
+
}
\ No newline at end of file
diff --git a/Admin.NET/WCS.Application/PLC/PLCCommon.cs b/Admin.NET/WCS.Application/PLC/PLCCommon.cs
index 2cc7b0b..9cb4230 100644
--- a/Admin.NET/WCS.Application/PLC/PLCCommon.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCCommon.cs
@@ -328,6 +328,7 @@
/// <returns></returns>
public static PLCUtil GetPlcIp(string startStation)
{
+ startStation = startStation.PadLeft(3, '0');
string strIp = "";
var conveyList1 = new List<string>() { "147", "145", "139", "137", "129", "127", "121", "119", "111", "109", "103", "101", "093", "091", "085", "083", "075", "073", "067", "065","033","039","044" ,"051","059"};
var conveyList2 = new List<string>() { "205", "234", "252", "254", "260", "262", "270", "272", "278", "280", "288", "290", "294", "301", "307", "309", "315", "317", "325", "327", "331", "337" };
@@ -604,6 +605,8 @@
/// <returns>璺烘満鑱旀満</returns>
public static string GetRoadwayByStation(string StationNum)
{
+ StationNum = StationNum.PadLeft(3, '0');
+
string value = "";
var conveyList1 = new List<string>() { "147", "145", "252", "254", "401", "402", };
var conveyList2 = new List<string>() { "139", "137", "260", "262", "405", "406", };
diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index c34b5ad..01ea309 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -20,6 +20,7 @@
namespace WCS.Application;
public static class PLCService
{
+ private static readonly object OLock = new object();
private static readonly ISqlSugarClient _db = SqlSugarSetup.ITenant.GetConnectionScope(SqlSugarConst.MainConfigId);
@@ -1705,7 +1706,7 @@
}
}
// 鏍规嵁绠卞唴鍝佺鍙疯幏鍙栫爜韬茬粦瀹氬伐浣嶅強瀵瑰簲鐨勫垎閬撳彿
- var checkTaskInfo = _db.Queryable<WcsCheckTask>().First(w => w.SkuNo == boxInfo.SkuNo && w.SkuName == boxInfo.SkuName && w.LotNo == boxInfo.LotNo);
+ var checkTaskInfo = _db.Queryable<WcsCheckTask>().First(w => w.SkuNo == boxInfo.SkuNo && w.SkuName == boxInfo.SkuName && w.LotNo == boxInfo.LotNo && w.Status == "1");
if (checkTaskInfo == null)
{
// 缁戝畾淇℃伅涓簄ull鍐欏叆鍓旈櫎閫氶亾鍙�
@@ -1868,181 +1869,184 @@
case "40":
// 璇锋眰缁勬墭锛岀敵璇峰叆搴�
{
- // 鏍规嵁宸ヤ綅鍙凤紝鑾峰彇鎵樼洏鍙�
- var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == modDevice.StationNum && m.IsDelete == false);
- // 鏍规嵁宸ヤ綅鍙疯幏鍙� 鎵樼洏绾胯宸ヤ綅鍙风殑閰嶇疆淇℃伅
- var numModel = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business && m.PlcId != modDevice.PlcId);
- var posModel = PLCTaskAction.plcPositions.First(m => m.DeviceId == numModel.Id && m.Text == "鐩殑宸ヤ綅" && m.IsDelete == false);
- if (checkTaskMedel == null)
+ lock (OLock)
{
- Log.Error(string.Format("缁勬墭澶辫触鏍规嵁鐮佸灈宸ヤ綅{0}锛岃幏鍙栨墭鐩樺彿澶辫触!", modDevice.StationNum));
-
- // 鍐欏叆浜や簰宸ヤ綅鐩爣鍦板潃
- var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, "234");
- if (retVal.IsSucceed)
+ // 鏍规嵁宸ヤ綅鍙凤紝鑾峰彇鎵樼洏鍙�
+ var checkTaskMedel = _db.Queryable<WcsCheckTask>().First(m => m.Port == modDevice.StationNum && m.IsDelete == false);
+ // 鏍规嵁宸ヤ綅鍙疯幏鍙� 鎵樼洏绾胯宸ヤ綅鍙风殑閰嶇疆淇℃伅
+ var numModel = PLCTaskAction.plcDevices.First(m => m.StationNum == modDevice.StationNum && m.IsDelete == false && m.DeviceType == DeviceTypeEnum.Business && m.PlcId != modDevice.PlcId);
+ var posModel = PLCTaskAction.plcPositions.First(m => m.DeviceId == numModel.Id && m.Text == "鐩殑宸ヤ綅" && m.IsDelete == false);
+ if (checkTaskMedel == null)
{
- // 鍐欏叆缁勬墭鍥炲娴佺▼瀛�
- retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50");
- }
- break;
- }
-
- // 鐮佸灈宸ヤ綅鎵樼洏鍙�
- string palletNo = checkTaskMedel.PalletNo;
-
- // 鏄惁婕旂ず妯″紡
- if (PLCTaskAction.boDemo)
- {
- // 鐩存帴绠眞ms鐢宠宸烽亾
- var http = new HttpService();
- string TaskNo = "", EndLocate = "";
- string strMsg = http.RequestRoadWay(palletNo, modDevice.StationNum, "1", "2", ref EndLocate, ref TaskNo);
- if (strMsg.Contains("-1"))
- {
- Log.Error(string.Format("鐢宠宸烽亾澶辫触锛岀爜鍨涘伐浣峽0};鍘熷洜{1}", modDevice.StationNum, strMsg));
- break;
- }
- else
- {
- // 鑾峰彇鍏ュ簱浠诲姟淇℃伅
- var taskModel = _db.Queryable<WcsTask>().First(m => m.TaskNo == TaskNo && m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing));
- if (taskModel != null)
- {
- // 鑾峰彇鍏ュ簱鍙栬揣宸ヤ綅
- string endLocatVlue = PLCCommon.RoadwayToStationNum(taskModel.EndRoadway, "2");
-
- var listResult = new List<Result>();
-
- // 鍐欏叆鎵樼洏杈撻�佺嚎鐮佸灈宸ヤ綅 鐩殑宸ヤ綅銆佷换鍔″彿锛屽啓鍏ヤ氦浜掓祦绋嬬粍鎵樻垚鍔� 鎵ц鍏ュ簱{鑻ラ渶瑕佸彲浠ュ啓鍏ヤ换鍔″彿绛夌瓑鍏朵粬淇℃伅}
- listResult.Add(plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, endLocatVlue)); // 鐩爣宸ヤ綅
- var modPosTask = PLCTaskAction.plcPositions.First(s => s.DeviceId == numModel.Id && s.Text == "浠诲姟鍙�" && s.IsDelete == false);
- listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, numModel.DbNumber, modPosTask.PlcPos, TaskNo));
- var modPosTaskType = PLCTaskAction.plcPositions.First(s => s.DeviceId == numModel.Id && s.Text == "浠诲姟绫诲瀷" && s.IsDelete == false);
- var taskTypeStr = (int)taskModel.TaskType;
- listResult.Add(plcConn.SetPlcDBValue(modPosTaskType.PosType, numModel.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString()));
-
- if (listResult.All(s => s.IsSucceed))
- {
- // 鍐欏叆缁勬墭鍥炲娴佺▼瀛�
- var retVal1 = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50");
- if (retVal1.IsSucceed)
- {
- // 灏嗗叆搴撲换鍔$敱姝e湪鎵ц鏀逛负姝e湪鎵ц
- taskModel.Status = TaskStatusEnum.Doing;
- _db.Updateable(taskModel).ExecuteCommand();
-
- // 鎻掑叆浠诲姟鏄庣粏
- var modInsertTaskMonitor = new WcsTaskMonitor()
- {
- TaskNo = TaskNo,
- PlcId = modDevice.Id,
- PlcName = modDevice.Text,
- InteractiveMsg = $"鍐欏叆鎸囦护50锛氱敵璇峰贩閬撴垚鍔�",
- PalletNo = palletNo,
- Status = TaskStatusEnum.Complete,
- StartLocat = modDevice.StationNum,
- EndLocat = strMsg,
- };
- // 鎻掑叆浜や簰鏃ュ織
- _db.Insertable(modInsertTaskMonitor).ExecuteCommand();
- // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈�
- HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
- }
- }
-
- //// 鍐欏叆鎵樼洏杈撻�佺嚎鐮佸灈宸ヤ綅 鐩殑宸ヤ綅锛屽啓鍏ヤ氦浜掓祦绋嬬粍鎵樻垚鍔� 鎵ц鍏ュ簱{鑻ラ渶瑕佸彲浠ュ啓鍏ヤ换鍔″彿绛夌瓑鍏朵粬淇℃伅}
- //var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, endLocatVlue);
- //if (retVal.IsSucceed)
- //{
- // // 鍐欏叆鐮佸灈浜や簰-缁勬墭鍥炲娴佺▼瀛�
- // retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50");
-
- // // 灏嗗叆搴撲换鍔$敱姝e湪鎵ц鏀逛负姝e湪鎵ц
- // taskModel.Status = TaskStatusEnum.Doing;
- // _db.Updateable(taskModel).ExecuteCommand();
- //}
- }
- }
- }
- else
- {
- // 鏍规嵁鎵樼洏鍙凤紝灏嗙粍鎵樹俊鎭彃鍏oxinfolog琛� 骞跺垹闄oxinfo琛ㄦ暟鎹�
- var boxInfoList = await _db.Queryable<WcsBoxInfo>().Where(w => w.IsDelete == false && w.PalletNo == palletNo).ToListAsync();
- if (boxInfoList.Count <= 0)
- {
- Log.Error(string.Format("鐢宠宸烽亾澶辫触锛岀爜鍨涘伐浣峽0}锛岀鐮佷俊鎭笉瀛樺湪", modDevice.StationNum));
+ Log.Error(string.Format("缁勬墭澶辫触鏍规嵁鐮佸灈宸ヤ綅{0}锛岃幏鍙栨墭鐩樺彿澶辫触!", modDevice.StationNum));
// 鍐欏叆浜や簰宸ヤ綅鐩爣鍦板潃
var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, "234");
- if (retVal.IsSucceed)
+ if (retVal.IsSucceed)
{
// 鍐欏叆缁勬墭鍥炲娴佺▼瀛�
retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50");
}
break;
}
- string sqlStr = $"insert into WCSBoxInfoLog select * from WCSBoxInfo where IsDelete=0 and PalletNo='{palletNo}'";
- int insertCount = _db.Ado.ExecuteCommand(sqlStr);
- if (insertCount > 0)
+
+ // 鐮佸灈宸ヤ綅鎵樼洏鍙�
+ string palletNo = checkTaskMedel.PalletNo;
+
+ // 鏄惁婕旂ず妯″紡
+ if (PLCTaskAction.boDemo)
{
- // 缁勬墭鎴愬姛鍚庡皢淇℃伅瀛樺埌log琛�
- string sqlStr2 = $"delete from WCSBoxInfoLog where IsDelete=0 and PalletNo='{palletNo}'";
- _db.Ado.ExecuteCommand(sqlStr2);
- }
- // 鍚慦MS鐢宠宸烽亾
- var http = new HttpService();
- string TaskNo = "", EndLocate = "";
- string strMsg = http.BindRequestRoadWay(checkTaskMedel.OrderNo,palletNo, checkTaskMedel.BoxCount.ToDecimal(),"0", checkTaskMedel.SkuNo, checkTaskMedel.LotNo, "","", boxInfoList,
- modDevice.StationNum, "1", "2", ref EndLocate, ref TaskNo);
- if (strMsg.Contains("-1"))
- {
- Log.Error(string.Format("鐢宠宸烽亾澶辫触锛岀爜鍨涘伐浣峽0};鍘熷洜{1}", modDevice.StationNum, strMsg));
- break;
- }
- else
- {
- // 鑾峰彇鍏ュ簱浠诲姟淇℃伅
- var taskModel = _db.Queryable<WcsTask>().First(m => m.TaskNo == TaskNo && m.IsDelete == false && m.Status == TaskStatusEnum.Wait);
- if (taskModel != null)
+ // 鐩存帴绠眞ms鐢宠宸烽亾
+ var http = new HttpService();
+ string TaskNo = "", EndLocate = "";
+ string strMsg = http.RequestRoadWay(palletNo, modDevice.StationNum, "1", "2", ref EndLocate, ref TaskNo);
+ if (strMsg.Contains("-1"))
{
- // 鑾峰彇鍏ュ簱鍙栬揣宸ヤ綅
- string endLocatVlue = PLCCommon.RoadwayToStationNum(taskModel.EndRoadway, "2");
+ Log.Error(string.Format("鐢宠宸烽亾澶辫触锛岀爜鍨涘伐浣峽0};鍘熷洜{1}", modDevice.StationNum, strMsg));
+ break;
+ }
+ else
+ {
+ // 鑾峰彇鍏ュ簱浠诲姟淇℃伅
+ var taskModel = _db.Queryable<WcsTask>().First(m => m.TaskNo == TaskNo && m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing));
+ if (taskModel != null)
+ {
+ // 鑾峰彇鍏ュ簱鍙栬揣宸ヤ綅
+ string endLocatVlue = PLCCommon.RoadwayToStationNum(taskModel.EndRoadway, "2");
- var listResult = new List<Result>();
- // 鍐欏叆鎵樼洏杈撻�佺嚎鐮佸灈宸ヤ綅 鐩殑宸ヤ綅銆佷换鍔″彿锛屽啓鍏ヤ氦浜掓祦绋嬬粍鎵樻垚鍔� 鎵ц鍏ュ簱{鑻ラ渶瑕佸彲浠ュ啓鍏ヤ换鍔″彿绛夌瓑鍏朵粬淇℃伅}
- listResult.Add(plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, endLocatVlue)); // 鐩爣宸ヤ綅
- var modPosTask = PLCTaskAction.plcPositions.First(s => s.DeviceId == numModel.Id && s.Text == "浠诲姟鍙�" && s.IsDelete == false);
- listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, numModel.DbNumber, modPosTask.PlcPos, TaskNo));
- var modPosTaskType = PLCTaskAction.plcPositions.First(s => s.DeviceId == numModel.Id && s.Text == "浠诲姟绫诲瀷" && s.IsDelete == false);
- var taskTypeStr = (int)taskModel.TaskType;
- listResult.Add(plcConn.SetPlcDBValue(modPosTaskType.PosType, numModel.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString()));
+ var listResult = new List<Result>();
- if (listResult.All(s => s.IsSucceed))
+ // 鍐欏叆鎵樼洏杈撻�佺嚎鐮佸灈宸ヤ綅 鐩殑宸ヤ綅銆佷换鍔″彿锛屽啓鍏ヤ氦浜掓祦绋嬬粍鎵樻垚鍔� 鎵ц鍏ュ簱{鑻ラ渶瑕佸彲浠ュ啓鍏ヤ换鍔″彿绛夌瓑鍏朵粬淇℃伅}
+ listResult.Add(plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, endLocatVlue)); // 鐩爣宸ヤ綅
+ var modPosTask = PLCTaskAction.plcPositions.First(s => s.DeviceId == numModel.Id && s.Text == "浠诲姟鍙�" && s.IsDelete == false);
+ listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, numModel.DbNumber, modPosTask.PlcPos, TaskNo));
+ var modPosTaskType = PLCTaskAction.plcPositions.First(s => s.DeviceId == numModel.Id && s.Text == "浠诲姟绫诲瀷" && s.IsDelete == false);
+ var taskTypeStr = (int)taskModel.TaskType;
+ listResult.Add(plcConn.SetPlcDBValue(modPosTaskType.PosType, numModel.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString()));
+
+ if (listResult.All(s => s.IsSucceed))
+ {
+ // 鍐欏叆缁勬墭鍥炲娴佺▼瀛�
+ var retVal1 = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50");
+ if (retVal1.IsSucceed)
+ {
+ // 灏嗗叆搴撲换鍔$敱姝e湪鎵ц鏀逛负姝e湪鎵ц
+ taskModel.Status = TaskStatusEnum.Doing;
+ _db.Updateable(taskModel).ExecuteCommand();
+
+ // 鎻掑叆浠诲姟鏄庣粏
+ var modInsertTaskMonitor = new WcsTaskMonitor()
+ {
+ TaskNo = TaskNo,
+ PlcId = modDevice.Id,
+ PlcName = modDevice.Text,
+ InteractiveMsg = $"鍐欏叆鎸囦护50锛氱敵璇峰贩閬撴垚鍔�",
+ PalletNo = palletNo,
+ Status = TaskStatusEnum.Complete,
+ StartLocat = modDevice.StationNum,
+ EndLocat = strMsg,
+ };
+ // 鎻掑叆浜や簰鏃ュ織
+ _db.Insertable(modInsertTaskMonitor).ExecuteCommand();
+ // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈�
+ HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
+ }
+ }
+
+ //// 鍐欏叆鎵樼洏杈撻�佺嚎鐮佸灈宸ヤ綅 鐩殑宸ヤ綅锛屽啓鍏ヤ氦浜掓祦绋嬬粍鎵樻垚鍔� 鎵ц鍏ュ簱{鑻ラ渶瑕佸彲浠ュ啓鍏ヤ换鍔″彿绛夌瓑鍏朵粬淇℃伅}
+ //var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, endLocatVlue);
+ //if (retVal.IsSucceed)
+ //{
+ // // 鍐欏叆鐮佸灈浜や簰-缁勬墭鍥炲娴佺▼瀛�
+ // retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50");
+
+ // // 灏嗗叆搴撲换鍔$敱姝e湪鎵ц鏀逛负姝e湪鎵ц
+ // taskModel.Status = TaskStatusEnum.Doing;
+ // _db.Updateable(taskModel).ExecuteCommand();
+ //}
+ }
+ }
+ }
+ else
+ {
+ // 鏍规嵁鎵樼洏鍙凤紝灏嗙粍鎵樹俊鎭彃鍏oxinfolog琛� 骞跺垹闄oxinfo琛ㄦ暟鎹�
+ var boxInfoList = _db.Queryable<WcsBoxInfo>().Where(w => w.IsDelete == false && w.PalletNo == palletNo).ToList();
+ if (boxInfoList.Count <= 0)
+ {
+ Log.Error(string.Format("鐢宠宸烽亾澶辫触锛岀爜鍨涘伐浣峽0}锛岀鐮佷俊鎭笉瀛樺湪", modDevice.StationNum));
+
+ // 鍐欏叆浜や簰宸ヤ綅鐩爣鍦板潃
+ var retVal = plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, "234");
+ if (retVal.IsSucceed)
{
// 鍐欏叆缁勬墭鍥炲娴佺▼瀛�
- var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50");
- if (retVal.IsSucceed)
- {
- // 灏嗗叆搴撲换鍔$敱姝e湪鎵ц鏀逛负姝e湪鎵ц
- taskModel.Status = TaskStatusEnum.Doing;
- _db.Updateable(taskModel).ExecuteCommand();
+ retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50");
+ }
+ break;
+ }
+ string sqlStr = $"insert into WCSBoxInfoLog select * from WCSBoxInfo where IsDelete=0 and PalletNo='{palletNo}'";
+ int insertCount = _db.Ado.ExecuteCommand(sqlStr);
+ if (insertCount > 0)
+ {
+ // 缁勬墭鎴愬姛鍚庡皢淇℃伅瀛樺埌log琛�
+ string sqlStr2 = $"delete from WCSBoxInfoLog where IsDelete=0 and PalletNo='{palletNo}'";
+ _db.Ado.ExecuteCommand(sqlStr2);
+ }
+ // 鍚慦MS鐢宠宸烽亾
+ var http = new HttpService();
+ string TaskNo = "", EndLocate = "";
+ string strMsg = http.BindRequestRoadWay(checkTaskMedel.OrderNo,palletNo, checkTaskMedel.BoxCount.ToDecimal(),"0", checkTaskMedel.SkuNo, checkTaskMedel.LotNo, "","", boxInfoList,
+ modDevice.StationNum, "1", "2", ref EndLocate, ref TaskNo);
+ if (strMsg.Contains("-1"))
+ {
+ Log.Error(string.Format("鐢宠宸烽亾澶辫触锛岀爜鍨涘伐浣峽0};鍘熷洜{1}", modDevice.StationNum, strMsg));
+ break;
+ }
+ else
+ {
+ // 鑾峰彇鍏ュ簱浠诲姟淇℃伅
+ var taskModel = _db.Queryable<WcsTask>().First(m => m.TaskNo == TaskNo && m.IsDelete == false && m.Status == TaskStatusEnum.Wait);
+ if (taskModel != null)
+ {
+ // 鑾峰彇鍏ュ簱鍙栬揣宸ヤ綅
+ string endLocatVlue = PLCCommon.RoadwayToStationNum(taskModel.EndRoadway, "2");
- // 鎻掑叆浠诲姟鏄庣粏
- var modInsertTaskMonitor = new WcsTaskMonitor()
+ var listResult = new List<Result>();
+ // 鍐欏叆鎵樼洏杈撻�佺嚎鐮佸灈宸ヤ綅 鐩殑宸ヤ綅銆佷换鍔″彿锛屽啓鍏ヤ氦浜掓祦绋嬬粍鎵樻垚鍔� 鎵ц鍏ュ簱{鑻ラ渶瑕佸彲浠ュ啓鍏ヤ换鍔″彿绛夌瓑鍏朵粬淇℃伅}
+ listResult.Add(plcConn.SetPlcDBValue(posModel.PosType, numModel.DbNumber, posModel.PlcPos, endLocatVlue)); // 鐩爣宸ヤ綅
+ var modPosTask = PLCTaskAction.plcPositions.First(s => s.DeviceId == numModel.Id && s.Text == "浠诲姟鍙�" && s.IsDelete == false);
+ listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, numModel.DbNumber, modPosTask.PlcPos, TaskNo));
+ var modPosTaskType = PLCTaskAction.plcPositions.First(s => s.DeviceId == numModel.Id && s.Text == "浠诲姟绫诲瀷" && s.IsDelete == false);
+ var taskTypeStr = (int)taskModel.TaskType;
+ listResult.Add(plcConn.SetPlcDBValue(modPosTaskType.PosType, numModel.DbNumber, modPosTaskType.PlcPos, taskTypeStr.ToString()));
+
+ if (listResult.All(s => s.IsSucceed))
+ {
+ // 鍐欏叆缁勬墭鍥炲娴佺▼瀛�
+ var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "50");
+ if (retVal.IsSucceed)
{
- TaskNo = TaskNo,
- PlcId = modDevice.Id,
- PlcName = modDevice.Text,
- InteractiveMsg = $"鍐欏叆鎸囦护50锛氱敵璇峰贩閬撴垚鍔�",
- PalletNo = palletNo,
- Status = TaskStatusEnum.Complete,
- StartLocat = modDevice.StationNum,
- EndLocat = strMsg,
- };
- // 鎻掑叆浜や簰鏃ュ織
- _db.Insertable(modInsertTaskMonitor).ExecuteCommand();
- // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈�
- HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
+ // 灏嗗叆搴撲换鍔$敱姝e湪鎵ц鏀逛负姝e湪鎵ц
+ taskModel.Status = TaskStatusEnum.Doing;
+ _db.Updateable(taskModel).ExecuteCommand();
+
+ // 鎻掑叆浠诲姟鏄庣粏
+ var modInsertTaskMonitor = new WcsTaskMonitor()
+ {
+ TaskNo = TaskNo,
+ PlcId = modDevice.Id,
+ PlcName = modDevice.Text,
+ InteractiveMsg = $"鍐欏叆鎸囦护50锛氱敵璇峰贩閬撴垚鍔�",
+ PalletNo = palletNo,
+ Status = TaskStatusEnum.Complete,
+ StartLocat = modDevice.StationNum,
+ EndLocat = strMsg,
+ };
+ // 鎻掑叆浜や簰鏃ュ織
+ _db.Insertable(modInsertTaskMonitor).ExecuteCommand();
+ // 閫氱煡浠诲姟鐣岄潰浠诲姟宸插瓨鍦ㄦ洿鏂� 璇锋洿鏂扮晫闈�
+ HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
+ }
}
}
}
@@ -2114,11 +2118,11 @@
}
/// <summary>
- /// 鑷姩缁撴壒
+ /// 鑷姩缁撴壒 骞� 瑙g粦鍒嗛亾
/// </summary>
/// <param name="lotNo">鎵规鍙�</param>
/// <param name="plcConn">Plc杩炴帴</param>
- /// <param name="status">鏄惁瑙g粦鍒嗛亾 0锛氳В缁� 1锛氱粦瀹�</param>
+ /// <param name="status">鏄惁瑙g粦鍒嗛亾 0锛氳В缁� 1锛氱粦瀹�</param>
private static void AutoEndLot(string lotNo,PLCUtil plcConn,string status)
{
try
@@ -2135,7 +2139,10 @@
foreach (var item in checkTaskList)
{
#region#缁橮LC鍐欏叆缁撴壒鎵规鍙�
+ // 鍐欏叆缁撴壒淇″彿
var ret = plcConn.SetPlcDBValue(item.PosTypeLot, item.DbNumber, item.PosLot, "1");
+ // 鍒嗛亾瑙g粦锛屾姄绠卞搧绉嶅啓鍏�0
+ var ret1 = plcConn.SetPlcDBValue(item.PosTypeLot, item.DbNumber, item.PlcPos, "0");
if (ret.IsSucceed)
{
//鍐欏叆娴佺▼瀛楁垚鍔熷悗鏇存柊鍒嗘嫞浠诲姟 liudl 鏈�鍚庝竴鎵樼洏鐢宠瀹屽叆搴撴墠鍙竻绌�
@@ -2146,7 +2153,7 @@
//item.SkuName = "";
//item.BoxType = "";
//item.Qty = 0;
- //item.PZNo = "";
+ item.PZNo = "";
item.Status = status; // 缁戝畾鍒嗛亾 0锛氳В缁� 1锛氱粦瀹�
//鏇存柊鍒嗘嫞浠诲姟
diff --git a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
index 504a4e7..390cd4c 100644
--- a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
@@ -141,7 +141,7 @@
}
if (!modPlcUtil.Connected)
{
- Thread.Sleep(10000);
+ Thread.Sleep(1000);
modPlcUtil.Open();
continue;
}
@@ -182,7 +182,7 @@
}
}
- Thread.Sleep(50000);
+ Thread.Sleep(1000);
}
catch (OperationCanceledException)
{
@@ -245,7 +245,7 @@
HubUtil.PublicPlcConn(modPlc);
}
}
- Thread.Sleep(1000);
+ Thread.Sleep(10000);
}
}
catch (OperationCanceledException)
diff --git a/Admin.NET/WCS.Application/Service/WcsCheckTask/WcsCheckTaskService.cs b/Admin.NET/WCS.Application/Service/WcsCheckTask/WcsCheckTaskService.cs
index 82a8859..b99dd08 100644
--- a/Admin.NET/WCS.Application/Service/WcsCheckTask/WcsCheckTaskService.cs
+++ b/Admin.NET/WCS.Application/Service/WcsCheckTask/WcsCheckTaskService.cs
@@ -233,26 +233,27 @@
[DisplayName("浠诲姟寮哄埗缁撴壒")]
public async Task CloseTaskForPLC(CloseTaskPLCInput input)
{
- if (PLCTaskAction.boDemo)
- {
- //婕旂ず妯″紡
- var checkTaskList2 = await _wcsCheckTaskRep.Context.Queryable<WcsCheckTask>().FirstAsync(w => w.Port == "208");
+ // 娉ㄩ噴锛氭紨绀烘ā寮忎笉缁戝畾鍒嗛亾銆俵iudl 2024-10-30
+ //if (PLCTaskAction.boDemo)
+ //{
+ // //婕旂ず妯″紡
+ // var checkTaskList2 = await _wcsCheckTaskRep.Context.Queryable<WcsCheckTask>().FirstAsync(w => w.Port == "208");
- var deviceInfo = await _wcsDeviceRep.Context.Queryable<WcsDevice>().FirstAsync(w => w.StationNum == "208");
- if (deviceInfo == null)
- {
- throw Oops.Bah($"鎵句笉鍒板伐浣嶅彿锛�208鐨勭爜鍨涘伐浣嶄俊鎭�");
- }
- var modPlc = await _wcsDeviceRep.Context.Queryable<WcsPlc>().FirstAsync(s => s.Id == deviceInfo.PlcId);
- if (modPlc == null)
- {
- throw Oops.Bah($"鎵句笉鍒板伐浣嶅彿锛�208鐨勮澶囦俊鎭�");
- }
- PLCUtil modUtil = new PLCUtil(modPlc);
+ // var deviceInfo = await _wcsDeviceRep.Context.Queryable<WcsDevice>().FirstAsync(w => w.StationNum == "208");
+ // if (deviceInfo == null)
+ // {
+ // throw Oops.Bah($"鎵句笉鍒板伐浣嶅彿锛�208鐨勭爜鍨涘伐浣嶄俊鎭�");
+ // }
+ // var modPlc = await _wcsDeviceRep.Context.Queryable<WcsPlc>().FirstAsync(s => s.Id == deviceInfo.PlcId);
+ // if (modPlc == null)
+ // {
+ // throw Oops.Bah($"鎵句笉鍒板伐浣嶅彿锛�208鐨勮澶囦俊鎭�");
+ // }
+ // PLCUtil modUtil = new PLCUtil(modPlc);
- var ret = modUtil.SetPlcDBValue(checkTaskList2.PosTypeLot, checkTaskList2.DbNumber, checkTaskList2.PosLot, "1");
- return;
- }
+ // var ret = modUtil.SetPlcDBValue(checkTaskList2.PosTypeLot, checkTaskList2.DbNumber, checkTaskList2.PosLot, "1");
+ // return;
+ //}
// 姝e父妯″紡
if (string.IsNullOrWhiteSpace(input.lotNo))
@@ -280,7 +281,7 @@
PLCUtil modUtil = new PLCUtil(modPlc);
if (modUtil.Connected)
{
- var ret = modUtil.SetPlcDBValue(item.PosTypeLot, item.DbNumber, item.PosLot, "1");
+ var ret = modUtil.SetPlcDBValue(item.PosTypeLot, item.DbNumber, item.PosLot, "0"); // 瑙g粦鍒嗛亾
if (ret.IsSucceed)
{
//鍐欏叆娴佺▼瀛楁垚鍔熷悗鏇存柊鍒嗘嫞浠诲姟
diff --git a/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceInput.cs b/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceInput.cs
index 2428bf4..8bcd3a2 100644
--- a/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceInput.cs
+++ b/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceInput.cs
@@ -373,6 +373,10 @@
/// 妤煎眰
/// </summary>
public string Layer { get; set; }
+ /// <summary>
+ /// 浜嬩欢缁撴灉 true/false
+ /// </summary>
+ public string FuncName { get; set; }
}
diff --git a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs
index ee6a929..dd5008e 100644
--- a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs
+++ b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs
@@ -27,6 +27,150 @@
#region 宸ヤ綔鍙版搷浣�
+
+ /// <summary>
+ /// 鎵嬪姩鎿嶄綔PLC閿佸畾鍐欏叆宸ヤ綅淇℃伅
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost]
+ [ApiDescriptionSettings(Name = "WriteLocationInfo")]
+ [DisplayName("鎵嬪姩鎿嶄綔PLC閿佸畾鍐欏叆宸ヤ綅淇℃伅")]
+ public async Task WriteLocationInfo(WcsDeviceUpInfo input)
+ {
+ WcsPlc modPlc;
+ string DbNum = "";// DB鍧�
+
+ if (string.IsNullOrWhiteSpace(input.LocatNo))//濡傛灉宸ヤ綅涓虹┖
+ {
+ throw Oops.Bah("宸ヤ綅涓嶈兘涓虹┖");
+ }
+ var plcList = await _wcsPlcRep.Context.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.ConveyorLine && s.IsDelete == false).ToListAsync();
+ switch (input.Layer)
+ {
+ case "1":
+ modPlc = plcList.FirstOrDefault(m => m.Text == "1灞傛墭鐩樿緭閫佺嚎");
+ if (modPlc == null)
+ throw Oops.Bah($"鏈煡璇㈠埌{input.Layer}妤煎眰PLC淇℃伅");
+ DbNum = "";
+ break;
+ case "2":
+ modPlc = plcList.FirstOrDefault(m => m.Text == "2灞傛墭鐩樿緭閫佺嚎");
+ if (modPlc == null)
+ throw Oops.Bah($"鏈煡璇㈠埌{input.Layer}妤煎眰PLC淇℃伅");
+ DbNum = "DB91";
+ break;
+ case "3":
+ modPlc = plcList.FirstOrDefault(m => m.Text == "3灞傛墭鐩樿緭閫佺嚎");
+ if (modPlc == null)
+ throw Oops.Bah($"鏈煡璇㈠埌{input.Layer}妤煎眰PLC淇℃伅");
+ DbNum = "";
+ break;
+ default:
+ throw Oops.Bah("妤煎眰淇℃伅閿欒");
+ }
+
+ var device = await _wcsDeviceRep.Context.Queryable<WcsDevice>().FirstAsync(s => s.PlcId == modPlc.Id && s.StationNum == input.LocatNo && s.IsDelete == false && s.DeviceType == DeviceTypeEnum.Show);
+ if (device == null)
+ {
+ throw Oops.Bah("褰撳墠妤煎眰鏈煡璇㈠埌璇ュ伐浣嶄俊鎭�");
+ }
+ PLCUtil modUtil = new PLCUtil(modPlc);
+
+ switch (input.TypeName)
+ {
+ case "suoding": // 閿佸畾
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Short, DbNum, "48.0", input.LocatNo);
+ break;
+
+ default:
+ break;
+ }
+
+ modUtil.Close();
+ }
+
+
+ /// <summary>
+ /// 鑾峰彇宸ヤ綅涓婁俊鎭�
+ /// </summary>
+ /// <param name="input"></param>
+ /// <returns></returns>
+ [HttpPost]
+ [ApiDescriptionSettings(Name = "GetLocationInfo")]
+ [DisplayName("鑾峰彇宸ヤ綅涓婁俊鎭�")]
+ public async Task<WcsDeviceUpInfo> GetLocationInfo(WcsDeviceUpInfo input)
+ {
+ WcsPlc modPlc;
+ string DbNum = "";// DB鍧�
+
+ if (string.IsNullOrWhiteSpace(input.LocatNo))//濡傛灉宸ヤ綅涓虹┖
+ {
+ throw Oops.Bah("宸ヤ綅涓嶈兘涓虹┖");
+ }
+ var plcList = await _wcsPlcRep.Context.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.ConveyorLine && s.IsDelete == false).ToListAsync();
+ switch (input.Layer)
+ {
+ case "1":
+ modPlc = plcList.FirstOrDefault(m => m.Text == "1灞傛墭鐩樿緭閫佺嚎");
+ if (modPlc == null)
+ throw Oops.Bah($"鏈煡璇㈠埌{input.Layer}妤煎眰PLC淇℃伅");
+ DbNum = "";
+ break;
+ case "2":
+ modPlc = plcList.FirstOrDefault(m => m.Text == "2灞傛墭鐩樿緭閫佺嚎");
+ if (modPlc == null)
+ throw Oops.Bah($"鏈煡璇㈠埌{input.Layer}妤煎眰PLC淇℃伅");
+ DbNum = "DB1100";
+ break;
+ case "3":
+ modPlc = plcList.FirstOrDefault(m => m.Text == "3灞傛墭鐩樿緭閫佺嚎");
+ if (modPlc == null)
+ throw Oops.Bah($"鏈煡璇㈠埌{input.Layer}妤煎眰PLC淇℃伅");
+ DbNum = "";
+ break;
+ default:
+ throw Oops.Bah("妤煎眰淇℃伅閿欒");
+ }
+
+ var device = await _wcsDeviceRep.Context.Queryable<WcsDevice>().FirstAsync(s => s.PlcId == modPlc.Id && s.StationNum == input.LocatNo && s.IsDelete == false && s.DeviceType == DeviceTypeEnum.Show);
+ if (device == null)
+ {
+ throw Oops.Bah("褰撳墠妤煎眰鏈煡璇㈠埌璇ュ伐浣嶄俊鎭�");
+ }
+ PLCUtil modUtil = new PLCUtil(modPlc);
+ WcsDeviceUpInfo data = new WcsDeviceUpInfo();
+ data.FuncName = "";
+ data.Layer = "";
+ data.LocatNo = input.LocatNo;
+ data.TypeName = "";
+ var (result2, value2) = modUtil.GetPlcDBValue(PLCDataTypeEnum.String, DbNum, "4");
+ data.PalletNo = value2;
+ var (result3, value3) = modUtil.GetPlcDBValue(PLCDataTypeEnum.String, DbNum, "14");
+ data.TaskNo = value3;
+ var (result4, value4) = modUtil.GetPlcDBValue(PLCDataTypeEnum.Short, DbNum, "34");
+ data.StartLoction = value4.ToString();
+ var (result5, value5) = modUtil.GetPlcDBValue(PLCDataTypeEnum.Short, DbNum, "36");
+ data.EndLoction = value5.ToString();
+
+ var (result6, value6) = modUtil.GetPlcDBValue(PLCDataTypeEnum.Short, DbNum, "38");
+ data.StartPai = value6.ToString();
+ var (result7, value7) = modUtil.GetPlcDBValue(PLCDataTypeEnum.Short, DbNum, "40");
+ data.StartLie = value7.ToString();
+ var (result8, value8) = modUtil.GetPlcDBValue(PLCDataTypeEnum.Short, DbNum, "42");
+ data.StartCeng = value8.ToString();
+
+
+ var (result9, value9) = modUtil.GetPlcDBValue(PLCDataTypeEnum.Short, DbNum, "44");
+ data.EndPai = value9.ToString();
+ var (result10, value10) = modUtil.GetPlcDBValue(PLCDataTypeEnum.Short, DbNum, "46");
+ data.EndLie = value10.ToString();
+ var (result11, value11) = modUtil.GetPlcDBValue(PLCDataTypeEnum.Short, DbNum, "48");
+ data.EndCeng = value11.ToString();
+
+ modUtil.Close();
+ return data;
+ }
/// <summary>
/// 鎵嬪姩鎿嶄綔PLC淇℃伅
/// </summary>
@@ -57,7 +201,7 @@
modPlc = plcList.FirstOrDefault(m => m.Text == "2灞傛墭鐩樿緭閫佺嚎");
if (modPlc == null)
throw Oops.Bah($"鏈煡璇㈠埌{input.Layer}妤煎眰PLC淇℃伅");
- DbNum = "91";
+ DbNum = "DB91";
break;
case "3":
modPlc = plcList.FirstOrDefault(m => m.Text == "3灞傛墭鐩樿緭閫佺嚎");
@@ -74,12 +218,14 @@
{
throw Oops.Bah("褰撳墠妤煎眰鏈煡璇㈠埌璇ュ伐浣嶄俊鎭�");
}
-
PLCUtil modUtil = new PLCUtil(modPlc);
+
+
+ // true 锛� 鎵嬪姩妯″紡 false:鑷姩妯″紡
var (result, value) = modUtil.GetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "50.4");
if (result.IsSucceed)
{
- if (input.TypeName != "shoudong" && value.ToString().ToLower() != "false")
+ if (input.TypeName != "shoudong" && value.ToString().ToLower() == "false" && input.TypeName != "huifu" && input.TypeName != "UpTask" )
{
throw Oops.Bah("褰撳墠涓鸿嚜鍔ㄦā寮忥紝璇峰厛鍒囨崲涓烘墜鍔ㄦā寮�");
}
@@ -88,19 +234,33 @@
{
throw Oops.Bah("璇诲彇PLC鎵嬭嚜鍔ㄥ�煎け璐�");
}
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Short, DbNum, "48.0", input.LocatNo);
+
switch (input.TypeName)
{
- case "zidong":
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "50.4", "true");
- break;
- case "shoudong":
+ case "zidong": // 鑷姩
+ //modUtil.SetPlcDBValue(PLCDataTypeEnum.Short, DbNum, "48.0", input.LocatNo);
modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "50.4", "false");
break;
- case "huifu":
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "47.0", "true");
+ case "shoudong": // 鎵嬪姩
+ //modUtil.SetPlcDBValue(PLCDataTypeEnum.Short, DbNum, "48.0", input.LocatNo);
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "50.4", "true");
break;
- case "1diandong":
+ case "huifu": // 鎶ヨ鎭㈠
+ if (input.FuncName == "true")
+ {
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "47.0", "true");
+ }
+ else if (input.FuncName == "false")
+ {
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "47.0", "false");
+ }
+ else
+ {
+ throw Oops.Bah("浜嬩欢缁撴灉閿欒");
+ }
+
+ break;
+ case "1diandong": // 1鐐瑰姩
if(input.FuncName == "true")
{
modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "50.7", "true");
@@ -114,7 +274,7 @@
throw Oops.Bah("浜嬩欢缁撴灉閿欒");
}
break;
- case "1liandong":
+ case "1liandong": // 1鑱斿姩
if (input.FuncName == "true")
{
modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "51.3", "true");
@@ -269,7 +429,24 @@
}
break;
case "UpTask":
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "50.0", "true");
+ var (result1, value2) = modUtil.GetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "50.0");
+ if (result.IsSucceed)
+ {
+ if (value2 == true)
+ {
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "50.0", "false");
+ }
+ else
+ {
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "50.0", "true");
+ }
+ }
+ else
+ {
+ throw Oops.Bah("璇诲彇PLC鍊煎け璐�");
+ }
+
+
break;
default:
break;
@@ -310,8 +487,8 @@
modPlc = plcList.FirstOrDefault(m => m.Text == "2灞傛墭鐩樿緭閫佺嚎");
if (modPlc == null)
throw Oops.Bah($"鏈煡璇㈠埌{input.Layer}妤煎眰PLC淇℃伅");
- DbNum = "91";
- TaskDbNum = "1101";
+ DbNum = "DB91";
+ TaskDbNum = "DB1100";
break;
case "3":
modPlc = plcList.FirstOrDefault(m => m.Text == "3灞傛墭鐩樿緭閫佺嚎");
@@ -330,41 +507,45 @@
}
PLCUtil modUtil = new PLCUtil(modPlc);
- var (result, value) = modUtil.GetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "50.0");
- if (result.IsSucceed)
- {
- if (value.ToString().ToLower() != "false")
- {
- throw Oops.Bah("璇峰厛鍒囨崲涓烘洿鏀逛换鍔℃ā寮�");
- }
- }
- else
- {
- throw Oops.Bah("璇诲彇PLC鎵嬭嚜鍔ㄥ�煎け璐�");
- }
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Short, DbNum, "48.0", input.LocatNo);
+ //var (result, value) = modUtil.GetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "50.0");
+ //if (result.IsSucceed)
+ //{
+ // if (value.ToString().ToLower() != "false")
+ // {
+ // throw Oops.Bah("璇峰厛鍒囨崲涓烘洿鏀逛换鍔℃ā寮�");
+ // }
+ //}
+ //else
+ //{
+ // throw Oops.Bah("璇诲彇PLC鎵嬭嚜鍔ㄥ�煎け璐�");
+ //}
+ //modUtil.SetPlcDBValue(PLCDataTypeEnum.Short, DbNum, "48.0", input.LocatNo);
switch (input.TypeName)
{
case "writeTask":
modUtil.SetPlcDBValue(PLCDataTypeEnum.String, TaskDbNum, "4", input.PalletNo);
modUtil.SetPlcDBValue(PLCDataTypeEnum.String, TaskDbNum, "14", input.TaskNo);
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Int, TaskDbNum, "34", input.StartLoction);
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Int, TaskDbNum, "36", input.EndLoction);
+ //modUtil.SetPlcDBValue(PLCDataTypeEnum.Int, TaskDbNum, "34", input.StartLoction);
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Short, TaskDbNum, "36.0", input.EndLoction);
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Int, TaskDbNum, "38", input.StartPai);
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Int, TaskDbNum, "40", input.StartLie);
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Int, TaskDbNum, "42", input.StartCeng);
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Short, TaskDbNum, "38", input.StartPai);
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Short, TaskDbNum, "40", input.StartLie);
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Short, TaskDbNum, "42", input.StartCeng);
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Int, TaskDbNum, "44", input.EndPai);
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Int, TaskDbNum, "46", input.EndLie);
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Int, TaskDbNum, "48", input.EndCeng);
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Short, TaskDbNum, "44", input.EndPai);
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Short, TaskDbNum, "46", input.EndLie);
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Short, TaskDbNum, "48", input.EndCeng);
modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "50.3", "true");
+ Thread.Sleep(1000);
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "50.3", "false");
break;
case "writeTaskDelete":
modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "50.2", "true");
+ Thread.Sleep(1000);
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "50.2", "false");
break;
default:
@@ -403,33 +584,122 @@
modPlc = plcList.FirstOrDefault(m => m.Text == "2灞傛墭鐩樿緭閫佺嚎");
if (modPlc == null)
throw Oops.Bah($"鏈煡璇㈠埌2妤煎眰PLC淇℃伅");
- DbNum = "91";
+ DbNum = "DB91";
PLCUtil modUtil = new PLCUtil(modPlc);
switch (input.Type)
{
case "TwoPalletStart":
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "46.0", "true");
+ if (input.FuncName == "true")
+ {
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "46.0", "true");
+ }
+ else if (input.FuncName == "false")
+ {
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "46.0", "false");
+ }
+ else
+ {
+ throw Oops.Bah("浜嬩欢缁撴灉閿欒");
+ }
break;
- case "OnePalletStop":
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "46.1", "true");
+ case "TwoPalletStop":
+ if (input.FuncName == "true")
+ {
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "46.1", "true");
+ }
+ else if (input.FuncName == "false")
+ {
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "46.1", "false");
+ }
+ else
+ {
+ throw Oops.Bah("浜嬩欢缁撴灉閿欒");
+ }
break;
case "TwoMaStart":
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "58.0", "true");
+ if (input.FuncName == "true")
+ {
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "58.0", "true");
+ }
+ else if (input.FuncName == "false")
+ {
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "58.0", "false");
+ }
+ else
+ {
+ throw Oops.Bah("浜嬩欢缁撴灉閿欒");
+ }
break;
case "TwoMaStop":
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "58.1", "true");
+ if (input.FuncName == "true")
+ {
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "58.1", "true");
+ }
+ else if (input.FuncName == "false")
+ {
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "58.1", "false");
+ }
+ else
+ {
+ throw Oops.Bah("浜嬩欢缁撴灉閿欒");
+ }
break;
case "TwoMaTwoStart":
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "58.2", "true");
+ if (input.FuncName == "true")
+ {
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "58.2", "true");
+ }
+ else if (input.FuncName == "false")
+ {
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "58.2", "false");
+ }
+ else
+ {
+ throw Oops.Bah("浜嬩欢缁撴灉閿欒");
+ }
break;
case "TwoMaTwoStop":
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "58.3", "true");
+ if (input.FuncName == "true")
+ {
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "58.3", "true");
+ }
+ else if (input.FuncName == "false")
+ {
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "58.3", "false");
+ }
+ else
+ {
+ throw Oops.Bah("浜嬩欢缁撴灉閿欒");
+ }
break;
case "TwoBoxStart":
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "46.2", "true");
+ if (input.FuncName == "true")
+ {
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "46.2", "true");
+ }
+ else if (input.FuncName == "false")
+ {
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "46.2", "false");
+ }
+ else
+ {
+ throw Oops.Bah("浜嬩欢缁撴灉閿欒");
+ }
break;
case "TwoBoxStop":
- modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "46.3", "true");
+
+ if (input.FuncName == "true")
+ {
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "46.3", "true");
+ }
+ else if (input.FuncName == "false")
+ {
+ modUtil.SetPlcDBValue(PLCDataTypeEnum.Bit, DbNum, "46.3", "false");
+ }
+ else
+ {
+ throw Oops.Bah("浜嬩欢缁撴灉閿欒");
+ }
break;
default:
break;
diff --git a/Web/src/api/wcs/wcsDevice.ts b/Web/src/api/wcs/wcsDevice.ts
index 1211e99..d2b0fec 100644
--- a/Web/src/api/wcs/wcsDevice.ts
+++ b/Web/src/api/wcs/wcsDevice.ts
@@ -16,11 +16,27 @@
CloseTaskForPLC='/api/WcsCheckTask/CloseTaskForPLC',
+ GetLocationInfo = '/api/wcsDevice/GetLocationInfo',
+ WriteLocationInfo = '/api/wcsDevice/WriteLocationInfo',
WriteInfo = '/api/wcsDevice/WriteInfo',
WriteTaskInfo = '/api/wcsDevice/WriteTaskInfo',
WriteStartStop = '/api/wcsDevice/WriteStartStop',
}
// 澧炲姞璁惧淇℃伅
+export const WriteLocationInfo = (params?: any) =>
+ request({
+ url: Api.WriteLocationInfo,
+ method: 'post',
+ data: params,
+ });
+// 澧炲姞璁惧淇℃伅
+export const GetLocationInfo = (params?: any) =>
+ request({
+ url: Api.GetLocationInfo,
+ method: 'post',
+ data: params,
+ });
+// 澧炲姞璁惧淇℃伅
export const WriteInfo = (params?: any) =>
request({
url: Api.WriteInfo,
diff --git a/Web/src/views/device/deviceInfo/index.vue b/Web/src/views/device/deviceInfo/index.vue
index d422c71..4965b80 100644
--- a/Web/src/views/device/deviceInfo/index.vue
+++ b/Web/src/views/device/deviceInfo/index.vue
@@ -89,34 +89,35 @@
<div >
<el-form label-position="right" label-width="40px" style="">
<el-form-item label="宸ヤ綅">
- <el-input v-model="stationValue.LocatNo" style="width: 200px; margin-right: 10px;"></el-input>
+ <el-input id="locaText" :disabled="lockInputStatus" v-model="stationValue.locatNo" style="width: 200px; margin-right: 10px;"></el-input>
+ <el-button @click="textLock(stationValue)">{{lockText}}</el-button>
<el-button @click="write('zidong',stationValue)">鑷姩</el-button>
<el-button @click="write('shoudong',stationValue)">鎵嬪姩</el-button>
- <el-button @click="write('huifu',stationValue)">鎶ヨ鎭㈠</el-button>
+ <el-button @mousedown="writeDown('huifu',stationValue)" @mouseup="writeUp('huifu',stationValue)">鎶ヨ鎭㈠</el-button>
</el-form-item>
<el-form-item>
- <el-button size="large" @mousedown="writeDown('1diandong',stationValue)" @mouseup="writeUp('1diandong',stationValue)">1鐐瑰姩</el-button>
- <el-button size="large" @mousedown="writeDown('2diandong',stationValue)" @mouseup="writeUp('2diandong',stationValue)">2鐐瑰姩</el-button>
- <el-button size="large" @mousedown="writeDown('3diandong',stationValue)" @mouseup="writeUp('3diandong',stationValue)">3鐐瑰姩</el-button>
- <el-button size="large" @mousedown="writeDown('4diandong',stationValue)" @mouseup="writeUp('4diandong',stationValue)">4鐐瑰姩</el-button>
+ <el-button size="large" :disabled="lockStatus" @mousedown="writeDown('1diandong',stationValue)" @mouseup="writeUp('1diandong',stationValue)">1鐐瑰姩</el-button>
+ <el-button size="large" :disabled="lockStatus" @mousedown="writeDown('2diandong',stationValue)" @mouseup="writeUp('2diandong',stationValue)">2鐐瑰姩</el-button>
+ <el-button size="large" :disabled="lockStatus" @mousedown="writeDown('3diandong',stationValue)" @mouseup="writeUp('3diandong',stationValue)">3鐐瑰姩</el-button>
+ <el-button size="large" :disabled="lockStatus" @mousedown="writeDown('4diandong',stationValue)" @mouseup="writeUp('4diandong',stationValue)">4鐐瑰姩</el-button>
</el-form-item>
<el-form-item>
- <el-button size="large" @mousedown="writeDown('1liandong',stationValue)" @mouseup="writeUp('1liandong',stationValue)">1鑱斿姩</el-button>
- <el-button size="large" @mousedown="writeDown('2liandong',stationValue)" @mouseup="writeUp('2liandong',stationValue)">2鑱斿姩</el-button>
- <el-button size="large" @mousedown="writeDown('3liandong',stationValue)" @mouseup="writeUp('3liandong',stationValue)">3鑱斿姩</el-button>
- <el-button size="large" @mousedown="writeDown('4liandong',stationValue)" @mouseup="writeUp('4liandong',stationValue)">4鑱斿姩</el-button>
+ <el-button size="large" :disabled="lockStatus" @mousedown="writeDown('1liandong',stationValue)" @mouseup="writeUp('1liandong',stationValue)">1鑱斿姩</el-button>
+ <el-button size="large" :disabled="lockStatus" @mousedown="writeDown('2liandong',stationValue)" @mouseup="writeUp('2liandong',stationValue)">2鑱斿姩</el-button>
+ <el-button size="large" :disabled="lockStatus" @mousedown="writeDown('3liandong',stationValue)" @mouseup="writeUp('3liandong',stationValue)">3鑱斿姩</el-button>
+ <el-button size="large" :disabled="lockStatus" @mousedown="writeDown('4liandong',stationValue)" @mouseup="writeUp('4liandong',stationValue)">4鑱斿姩</el-button>
</el-form-item>
<el-form-item>
- <el-button size="large" @mousedown="writeDown('yizaisheng',stationValue)" @mouseup="writeUp('yizaisheng',stationValue)">绉绘牻涓婂崌</el-button>
- <el-button size="large" @mousedown="writeDown('fanzhuansheng',stationValue)" @mouseup="writeUp('fanzhuansheng',stationValue)">缈昏浆鏈轰笂鍗�</el-button>
+ <el-button size="large" :disabled="lockStatus" @mousedown="writeDown('yizaisheng',stationValue)" @mouseup="writeUp('yizaisheng',stationValue)">绉绘牻涓婂崌</el-button>
+ <el-button size="large" :disabled="lockStatus" @mousedown="writeDown('fanzhuansheng',stationValue)" @mouseup="writeUp('fanzhuansheng',stationValue)">缈昏浆鏈轰笂鍗�</el-button>
</el-form-item>
<el-form-item>
- <el-button size="large" @mousedown="writeDown('yizaijiang',stationValue)" @mouseup="writeUp('yizaijiang',stationValue)">绉绘牻涓嬮檷</el-button>
- <el-button size="large" @mousedown="writeDown('fanzhuanjiang',stationValue)" @mouseup="writeUp('fanzhuanjiang',stationValue)">缈昏浆鏈轰笅闄�</el-button>
+ <el-button size="large" :disabled="lockStatus" @mousedown="writeDown('yizaijiang',stationValue)" @mouseup="writeUp('yizaijiang',stationValue)">绉绘牻涓嬮檷</el-button>
+ <el-button size="large" :disabled="lockStatus" @mousedown="writeDown('fanzhuanjiang',stationValue)" @mouseup="writeUp('fanzhuanjiang',stationValue)">缈昏浆鏈轰笅闄�</el-button>
</el-form-item>
</el-form>
@@ -135,52 +136,52 @@
</el-col>
<el-col :span="6">
<el-form-item label="浠诲姟鍙�" >
- <el-input v-model="stationValue.TaskNo" style="width: 200px; "></el-input>
+ <el-input v-model="stationValue.taskNo" style="width: 200px; "></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="鎵樼洏鍙�">
- <el-input v-model="stationValue.PalletNo" style="width: 200px; margin-right: 10px;"></el-input>
+ <el-input v-model="stationValue.palletNo" style="width: 200px; margin-right: 10px;"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="璧峰宸ヤ綅">
- <el-input v-model="stationValue.StartLoction" style="width: 200px; margin-right: 10px;"></el-input>
+ <el-input v-model="stationValue.startLoction" style="width: 200px; margin-right: 10px;"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="鐩爣宸ヤ綅">
- <el-input v-model="stationValue.EndLoction" style="width: 200px; margin-right: 10px;"></el-input>
+ <el-input v-model="stationValue.endLoction" style="width: 200px; margin-right: 10px;"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="璧峰鎺�">
- <el-input v-model="stationValue.StartPai" style="width: 200px; margin-right: 10px;"></el-input>
+ <el-input v-model="stationValue.startPai" style="width: 200px; margin-right: 10px;"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="璧峰鍒�">
- <el-input v-model="stationValue.StartLie" style="width: 200px; margin-right: 10px;"></el-input>
+ <el-input v-model="stationValue.startLie" style="width: 200px; margin-right: 10px;"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="璧峰灞�">
- <el-input v-model="stationValue.StartCeng" style="width: 200px; margin-right: 10px;"></el-input>
+ <el-input v-model="stationValue.startCeng" style="width: 200px; margin-right: 10px;"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="鐩爣鎺�">
- <el-input v-model="stationValue.EndPai" style="width: 200px; margin-right: 10px;"></el-input>
+ <el-input v-model="stationValue.endPai" style="width: 200px; margin-right: 10px;"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="鐩爣鍒�">
- <el-input v-model="stationValue.EndLie" style="width: 200px; margin-right: 10px;"></el-input>
+ <el-input v-model="stationValue.endLie" style="width: 200px; margin-right: 10px;"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="鐩爣灞�">
- <el-input v-model="stationValue.EndCeng" style="width: 200px; margin-right: 10px;"></el-input>
+ <el-input v-model="stationValue.endCeng" style="width: 200px; margin-right: 10px;"></el-input>
</el-form-item>
</el-col>
@@ -198,32 +199,41 @@
<script lang="ts" setup>
import { ref, reactive, onMounted } from 'vue';
import { listStatus, listPosition } from '/@/api/wcs/wcsPlc';
-import { WriteInfo,WriteTaskInfo } from '/@/api/wcs/wcsDevice';
+import { GetLocationInfo,WriteLocationInfo,WriteInfo,WriteTaskInfo } from '/@/api/wcs/wcsDevice';
import { signalR } from './signalR';
import { cellsDataLine, cellsDataOne, cellsDataTwo, cellsDataThree } from './data';
import { ElMessage } from "element-plus";
+// export default{
+
+// }
const state = ref<any>({});
const stackers = ref<any>({});
const conveyors = ref<any>({});
+
+
+const lockText = ref("閿佸畾");
+const lockStatus = ref(true);
+const lockInputStatus = ref(false);
+
const stationValue = ref<any>({
- LocatNo: '',//宸ヤ綅
- Layer:'',//妤煎眰
- TypeName:'',//鎿嶄綔绫诲瀷鍚嶇О
- FuncName:'',//浜嬩欢缁撴灉 true/false
+ locatNo: '',//宸ヤ綅
+ layer:'',//妤煎眰
+ typeName:'',//鎿嶄綔绫诲瀷鍚嶇О
+ funcName:'',//浜嬩欢缁撴灉 true/false
- TaskNo:'',
- PalletNo:'',
- StartLoction:'',
- EndLoction:'',
- StartPai:'',
- StartLie:'',
- StartCeng:'',
- EndPai:'',
- EndLie:'',
- EndCeng:'',
+ taskNo:'',
+ palletNo:'',
+ startLoction:'',
+ endLoction:'',
+ startPai:'',
+ startLie:'',
+ startCeng:'',
+ endPai:'',
+ endLie:'',
+ endCeng:'',
});
-
+
// 鏌ヨ鐘舵��
const handleQuery = async () => {
@@ -376,16 +386,71 @@
}
}
+
+const textLock = async (row: any) => {
+ if(lockText.value == "閿佸畾"){
+ lockStatus.value=false;
+ lockInputStatus.value=true;
+ lockText.value ="瑙i攣";
+ if (floorStates.value.isPlain1 == false) {
+ row.layer = 1;
+ }else if(floorStates.value.isPlain2 == false){
+ row.layer = 2;
+ }
+ else if(floorStates.value.isPlain3 == false){
+ row.layer = 3;
+ }
+ row.typeName = "suoding";
+
+ console.log(row);
+ var res = await WriteLocationInfo(row);
+ var res2 = await GetLocationInfo(row);
+ let rowData = JSON.parse(JSON.stringify(res2.data.result));
+ stationValue.value = res2.data.result;
+// stationValue.value = {
+// locatNo: '',//宸ヤ綅
+// layer:'',//妤煎眰
+// typeName:'',//鎿嶄綔绫诲瀷鍚嶇О
+// funcName:null,//浜嬩欢缁撴灉 true/false
+
+// taskNo:'',
+// palletNo:'',
+// startLoction:'',
+// endLoction:'',
+// startPai:'',
+// startLie:'',
+// startCeng:'',
+// endPai:'',
+// endLie:'',
+// endCeng:'',
+// }
+
+
+ console.log(res2.data.result);
+ console.log(rowData);
+
+ }else{
+ lockStatus.value=true;
+ lockInputStatus.value=false;
+ lockText.value ="閿佸畾";
+ }
+
+}
+
const write = async (type: string,row: any) => {
+ if (lockStatus.value == false) {
+ ElMessage.success("璇峰厛閿佸畾");
+ return;
+ }
if (floorStates.value.isPlain1 == false) {
- row.Layer = 1;
+ row.layer = 1;
}else if(floorStates.value.isPlain2 == false){
- row.Layer = 2;
+ row.layer = 2;
}
else if(floorStates.value.isPlain3 == false){
- row.Layer = 3;
+ row.layer = 3;
}
- row.TypeName = type;
+ row.typeName = type;
console.log(row);
var res = await WriteInfo(row);
@@ -394,32 +459,40 @@
}
const writeDown = async (type: string,row: any) => {
+ if (lockStatus.value == false) {
+ ElMessage.success("璇峰厛閿佸畾");
+ return;
+ }
if (floorStates.value.isPlain1 == false) {
- row.Layer = 1;
+ row.layer = 1;
}else if(floorStates.value.isPlain2 == false){
- row.Layer = 2;
+ row.layer = 2;
}
else if(floorStates.value.isPlain3 == false){
- row.Layer = 3;
+ row.layer = 3;
}
- row.TypeName = type;
- row.FuncName = "true";
+ row.typeName = type;
+ row.funcName = "true";
var res = await WriteInfo(row);
console.log(type+"鎸変笅浜嬩欢");
// ElMessage.success(res.data.result);
}
const writeUp = async (type: string,row: any) => {
+ if (lockStatus.value == false) {
+ ElMessage.success("璇峰厛閿佸畾");
+ return;
+ }
if (floorStates.value.isPlain1 == false) {
- row.Layer = 1;
+ row.layer = 1;
}else if(floorStates.value.isPlain2 == false){
- row.Layer = 2;
+ row.layer = 2;
}
else if(floorStates.value.isPlain3 == false){
- row.Layer = 3;
+ row.layer = 3;
}
- row.TypeName = type;
- row.FuncName = "false";
+ row.typeName = type;
+ row.funcName = "false";
var res = await WriteInfo(row);
console.log(type+"鎶捣浜嬩欢");
@@ -428,14 +501,14 @@
const writeTaskInfo = async (type: string,row: any) => {
if (floorStates.value.isPlain1 == false) {
- row.Layer = 1;
+ row.layer = 1;
}else if(floorStates.value.isPlain2 == false){
- row.Layer = 2;
+ row.layer = 2;
}
else if(floorStates.value.isPlain3 == false){
- row.Layer = 3;
+ row.layer = 3;
}
- row.TypeName = type;
+ row.typeName = type;
var res = await WriteTaskInfo(row);
console.log(type+"鎶捣浜嬩欢");
diff --git a/Web/src/views/device/deviceStartStop/index.vue b/Web/src/views/device/deviceStartStop/index.vue
index a197f3c..eb04f31 100644
--- a/Web/src/views/device/deviceStartStop/index.vue
+++ b/Web/src/views/device/deviceStartStop/index.vue
@@ -33,24 +33,24 @@
<el-collapse-item title="浠撳簱浜屽眰" name="2">
<el-card class="box-card" shadow="hover">
<el-text style="margin-right: 15px;">鎵樼洏杈撻��</el-text>
- <el-button @click="write('TwoPalletStart','2')">鍚姩</el-button>
- <el-button @click="write('TwoPalletStop','2')">鍋滄</el-button>
+ <el-button @mousedown="writeDown('TwoPalletStart','2')" @mouseup="writeUp('TwoPalletStart','2')">鍚姩</el-button>
+ <el-button @mousedown="writeDown('TwoPalletStop','2')" @mouseup="writeUp('TwoPalletStop','2')">鍋滄</el-button>
</el-card>
<el-card class="box-card" shadow="hover" style="margin-top: 3px;">
<el-text style="margin-right: 15px;">鐮佽泛鏈哄櫒浜�1</el-text>
- <el-button @click="write('TwoMaStart','2')">鍚姩</el-button>
- <el-button @click="write('TwoMaStop','2')">鍋滄</el-button>
+ <el-button @mousedown="writeDown('TwoMaStart','2')" @mouseup="writeUp('TwoMaStart','2')">鍚姩</el-button>
+ <el-button @mousedown="writeDown('TwoMaStop','2')" @mouseup="writeUp('TwoMaStop','2')">鍋滄</el-button>
</el-card>
<el-card class="box-card" shadow="hover" style="margin-top: 3px;">
<el-text style="margin-right: 15px;">鐮佽泛鏈哄櫒浜�2</el-text>
- <el-button @click="write('TwoMaTwoStart','2')">鍚姩</el-button>
- <el-button @click="write('TwoMaTwoStop','2')">鍋滄</el-button>
+ <el-button @mousedown="writeDown('TwoMaTwoStart','2')" @mouseup="writeUp('TwoMaTwoStart','2')">鍚姩</el-button>
+ <el-button @mousedown="writeDown('TwoMaTwoStop','2')" @mouseup="writeUp('TwoMaTwoStop','2')">鍋滄</el-button>
</el-card>
<el-card class="box-card" shadow="hover" style="margin-top: 3px;">
<el-text style="margin-right: 15px;">浠剁杈撻��</el-text>
- <el-button @click="write('TwoBoxStart','2')">鍚姩</el-button>
- <el-button @click="write('TwoBoxStop','2')">鍋滄</el-button>
+ <el-button @mousedown="writeDown('TwoBoxStart','2')" @mouseup="writeUp('TwoBoxStart','2')">鍚姩</el-button>
+ <el-button @mousedown="writeDown('TwoBoxStop','2')" @mouseup="writeUp('TwoBoxStop','2')">鍋滄</el-button>
</el-card>
</el-collapse-item>
</el-collapse>
@@ -97,7 +97,28 @@
console.log(res.data.result);
// ElMessage.success(res.data.result);
}
-
+const writeDown = async (type: string,layer: string) => {
+
+ var data={
+ Type:type,
+ Layer: layer,
+ FuncName : "true"
+ }
+ var res = await WriteStartStop(data);
+ console.log(type+"鎸変笅浜嬩欢");
+
+}
+const writeUp = async (type: string,layer: string) => {
+
+ var data={
+ Type:type,
+ Layer: layer,
+ FuncName : "false"
+ }
+ var res = await WriteStartStop(data);
+ console.log(type+"鎶捣浜嬩欢");
+
+}
</script>
diff --git a/Web/src/views/wcs/wcsTask/index.vue b/Web/src/views/wcs/wcsTask/index.vue
index 16ad7d0..91ceda3 100644
--- a/Web/src/views/wcs/wcsTask/index.vue
+++ b/Web/src/views/wcs/wcsTask/index.vue
@@ -16,7 +16,7 @@
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
<el-form-item label="浠诲姟鍙�">
- <el-input v-model="queryParams.taskNo" clearable="" placeholder="璇疯緭鍏ヤ换鍔″彿" />
+ <el-input v-model="queryParams.taskNo" clearable="" placeholder=" " />
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
@@ -151,12 +151,12 @@
</template>
<el-form :model="queryParams2" ref="queryForm2" labelWidth="90">
<el-row>
- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10">
+ <el-col :xs="24" :sm="12" :md="12" :lg="10" :xl="8" class="mb10">
<el-form-item label="浠诲姟鍙�">
- <el-input v-model="queryParams2.taskNo" clearable="" placeholder="璇疯緭鍏ヤ换鍔″彿"style="width: 130px;" />
+ <el-input v-model="queryParams2.taskNo" clearable="" placeholder="璇疯緭鍏ヤ换鍔″彿" style="width: 130px;" />
</el-form-item>
</el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" style="margin-left: 20px;">
+ <el-col :xs="24" :sm="12" :md="12" :lg="10" :xl="8" class="mb10" style="margin-left: 20px;">
<el-form-item>
<el-button type="primary" icon="ele-Search" @click="handleQuery2"> 鏌ヨ
</el-button>
@@ -402,4 +402,9 @@
:deep(.el-input-number) {
width: 100%;
}
+
+/* :deep(.el-input__inner)
+{
+ width: 50%;
+} */
</style>
--
Gitblit v1.8.0