From 9b85a8b67aa6354ee9ea1a13c5799bf1c934922f Mon Sep 17 00:00:00 2001
From: IPC-610 <IPC-610@DESKTOP-6LEOOS3>
Date: 星期四, 31 十月 2024 18:12:14 +0800
Subject: [PATCH] 修改问题

---
 Admin.NET/WCS.Application/PLC/PLCService.cs                           |  327 +++++++++---------
 Web/src/views/device/deviceInfo/index.vue                             |  189 +++++++---
 Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs       |  362 ++++++++++++++++++--
 Admin.NET/WCS.Application/Service/WcsCheckTask/WcsCheckTaskService.cs |   39 +-
 Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceInput.cs     |    4 
 Web/src/api/wcs/wcsDevice.ts                                          |   16 
 Admin.NET/WCS.Application/PLC/PLCTaskAction.cs                        |    6 
 Web/src/views/device/deviceStartStop/index.vue                        |   39 +
 8 files changed, 687 insertions(+), 295 deletions(-)

diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index 0d50872..c3f9329 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);
 
@@ -1704,7 +1705,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鍐欏叆鍓旈櫎閫氶亾鍙�
@@ -1867,181 +1868,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>());
+                                            }
                                         }
                                     }
                                 }
@@ -2113,11 +2117,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
@@ -2134,7 +2138,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 鏈�鍚庝竴鎵樼洏鐢宠瀹屽叆搴撴墠鍙竻绌�
@@ -2145,7 +2152,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>
 

--
Gitblit v1.8.0