From 7afc439ba32e234ebc455c98fa084ae6eef8a621 Mon Sep 17 00:00:00 2001
From: lss <2538410689@qq.com>
Date: 星期四, 03 七月 2025 17:24:04 +0800
Subject: [PATCH] 优化

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/process/TaskProcess.cs |  113 ++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 97 insertions(+), 16 deletions(-)

diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/process/TaskProcess.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/process/TaskProcess.cs
index 3721af6..e0d65e5 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/process/TaskProcess.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/process/TaskProcess.cs
@@ -2,11 +2,13 @@
 using HH.WCS.JiaTong.core;
 using HH.WCS.JiaTong.device;
 using HH.WCS.JiaTong.dispatch;
+using HH.WCS.JiaTong.LISTA.models;
 using HH.WCS.JiaTong.LISTA.process;
 using HH.WCS.JiaTong.util;
 using HH.WCS.JiaTong.wms;
 using Microsoft.Owin.BuilderProperties;
 using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
 using SqlSugar;
 using System;
 using System.Collections.Generic;
@@ -45,7 +47,7 @@
                 else
                 {
                     LogHelper.Info($"浠诲姟{mst.S_CODE} 鎵樼洏涓虹┖ ,鍙В閿佽揣浣�);
-                    LocationHelper.UnlockLoc(mst.S_START_LOC);
+                    LocationHelper.UnlockLocDeleteCntrs(mst.S_START_LOC);
                 }
             }
             else
@@ -82,13 +84,10 @@
             }
             else
             {
-
                 //璧风偣缁堢偣瑙i攣
                 LocationHelper.UnLockLoc(mst.S_START_LOC);
                 LocationHelper.UnLockLoc(mst.S_END_LOC);
-
             }
-
         }
 
         /// <summary>
@@ -133,7 +132,11 @@
                             }
                             else
                             {
-                                ModbusHelper.WriteSingleRegister(40089, EndLoc.N_LAYER, device.address, 1024);
+                                int layerValue = 0;
+                                if (EndLoc.N_LAYER == 1) layerValue = 1;
+                                else if (EndLoc.N_LAYER == 2) layerValue = 3;
+                                else if (EndLoc.N_LAYER == 3) layerValue = 5;
+                                ModbusHelper.WriteSingleRegister(40089, layerValue, device.address, 1024);
                                 ModbusHelper.WriteSingleRegister(40101, 2, device.address, 1024);
                                 ModbusHelper.WriteSingleRegister(40003, 2, device.address, 1024);
                                 ModbusHelper.WriteSingleRegister(40102, 1, device.address, 1024);
@@ -209,13 +212,25 @@
                             if (Device != null)
                             {
                                 //鍐欏叆澶辫触閲嶆柊鍐欏叆
-                                while (!S7Helper.WriteDpj(Device.address, 1001, 1))
+                                if (!S7Helper.WriteDpj(Device.address, 1001, 1))
                                 {
-                                    Thread.Sleep(1000);
+                                    Task.Run(() =>
+                                    {
+                                        while (!S7Helper.WriteDpj(Device.address, 1001, 1))
+                                        {
+                                            Thread.Sleep(1000);
+                                        }
+                                    });
                                 }
-                                while (!S7Helper.WriteDpj(Device.address, 1002, 0))
+                                if (!S7Helper.WriteDpj(Device.address, 1002, 0))
                                 {
-                                    Thread.Sleep(1000);
+                                    Task.Run(() =>
+                                    {
+                                        while (!S7Helper.WriteDpj(Device.address, 1002, 0))
+                                        {
+                                            Thread.Sleep(1000);
+                                        }
+                                    });
                                 }
                             }
                             else
@@ -249,9 +264,13 @@
                             }
                             else
                             {
+                                int layerValue = 0;
+                                if (startloc.N_LAYER == 1) layerValue = 1;
+                                else if (startloc.N_LAYER == 2) layerValue = 3;
+                                else if (startloc.N_LAYER == 3) layerValue = 5;
                                 ModbusHelper.WriteSingleRegister(40101, 2, device.address, 1024);
                                 ModbusHelper.WriteSingleRegister(40003, 2, device.address, 1024);
-                                ModbusHelper.WriteSingleRegister(40089, startloc.N_LAYER, device.address, 1024);
+                                ModbusHelper.WriteSingleRegister(40089, layerValue, device.address, 1024);
                                 ModbusHelper.WriteSingleRegister(40102, 1, device.address, 1024);
                             }
 
@@ -294,7 +313,11 @@
                                 {
                                     LogHelper.Info($"鏍规嵁浠诲姟缁堢偣:{mstbyEqno.S_END_LOC},鏈壘鍒板搴旇揣浣�);
                                 }
-                                ModbusHelper.WriteSingleRegister(40089, Endloc.N_LAYER, device.address, 1024);
+                                int value = 0;
+                                if (Endloc.N_LAYER == 1) value = 1;
+                                else if (Endloc.N_LAYER == 2) value = 3;
+                                else if (Endloc.N_LAYER == 3) value = 5;
+                                ModbusHelper.WriteSingleRegister(40089, value, device.address, 1024);
                                 ModbusHelper.WriteSingleRegister(40102, 1, device.address, 1024);
 
                             }
@@ -430,6 +453,14 @@
         {
             var result = true;
             var db = new SqlHelper<object>().GetInstance();
+            //鏍规嵁璧风偣浠撳簱缂栫爜鍒ゆ柇鏄惁鍙互鎺ㄩ�
+            var taskLimit = db.Queryable<TASK_LIMIT>().Where(a => a.S_WH_CODE == mst.S_START_WH && a.OPEN == "1").First();
+            if (taskLimit != null)
+            {
+                Console.WriteLine($"浠诲姟锛歿mst.S_CODE},璧风偣浠撳簱锛歿mst.S_START_WH}宸茬粡绂佺敤鎺ㄩ�");
+                return false;
+            }
+
             var mstbyEqno = db.Queryable<WCSTask>().Where(a => a.S_EQ_NO == mst.S_EQ_NO).ToList();
             if (mstbyEqno.Count() == 1)
             {
@@ -455,12 +486,16 @@
                 else if (mst.S_TYPE == "鐢垫2")
                 {
                     var mst2 = mstbyEqno.Where(a => a.S_TYPE == "鐢垫1").First();
-                    if (mst2.S_B_STATE == "鍗歌揣瀹屾垚" || mst2.S_B_STATE == "瀹屾垚")
+                    if (mst2 == null)
                     {
                         return result;
                     }
                     else
                     {
+                        if (mst2.S_B_STATE == "鍗歌揣瀹屾垚" || mst2.S_B_STATE == "瀹屾垚")
+                        {
+                            return result;
+                        }
                         result = false;
                     }
                 }
@@ -523,14 +558,22 @@
         internal static bool SendTask(WCSTask mst)
         {
 
-
+            var db = new SqlHelper<object>().GetInstance();
             var result = false;
             var start = "0"; var end = "0";
             var taskType = mst.S_TYPE.Trim();
+            var list = db.Queryable<Location>().ToList().Count;
+
             // if (mst.N_B_STATE == 0) {
             if (mst.N_SCHEDULE_TYPE == 1)
             {
                 LogHelper.Info($"浠诲姟鎺ㄩ�鏁版嵁锛歿JsonConvert.SerializeObject(mst)}");
+                if (string.IsNullOrEmpty(mst.S_START_LOC) || string.IsNullOrEmpty(mst.S_END_LOC))
+                {
+                    LogHelper.Info($"浠诲姟{mst.S_CODE},璧风偣缁堢偣鏈夌┖鍙傛暟锛屼笉鎺ㄩ�浠诲姟");
+                }
+
+
                 start = LocationHelper.GetAgvSite(mst.S_START_LOC);
                 end = LocationHelper.GetAgvSite(mst.S_END_LOC);
                 //if (mst.N_START_LAYER > 1)
@@ -582,7 +625,12 @@
                         {
                             LogHelper.Info($"鏍规嵁浠诲姟璧风偣:{mst.S_START_LOC},鏈壘鍒板搴旇揣浣�);
                         }
-                        ModbusHelper.WriteSingleRegister(40089, loc.N_LAYER, device.address, 1024);
+                        int value = 0;
+                        if (loc.N_LAYER == 1) value = 1;
+                        else if (loc.N_LAYER == 2) value = 3;
+                        else if (loc.N_LAYER == 3) value = 5;
+
+                        ModbusHelper.WriteSingleRegister(40089, value, device.address, 1024);
                         ModbusHelper.WriteSingleRegister(40102, 1, device.address, 1024);
 
 
@@ -783,7 +831,24 @@
                 //鑾峰彇鏃堕棿鎴�                 var time = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
                 statusarrive.RequestId = "鏉弶AGV" + time;
-
+                string info = "";
+                switch (status)
+                {
+                    case 1:
+                        info = "agv宸叉帴鍙楀師鏂欏簱涓嬪彂鐨勪换鍔�;
+                        break;
+                    case 4:
+                        info = "agv宸插彇璐у畬鎴�;
+                        break;
+                    case 6:
+                        info = "agv宸插嵏璐у埌鎸囧畾浣嶇疆";
+                        break;
+                    case 2:
+                        info = "agv宸插畬鎴愰�鏂欎换鍔�;
+                        break;
+                }
+                string message = "1";
+                if (status == 7) { message = "agv浠诲姟宸插彇娑�; }
                 int flag = 0;
                 if (mst.S_NOTE == "绮夋枡")
                 {
@@ -798,6 +863,8 @@
                 statusArrive.Status = status.ToString();
                 statusArrive.Rfid = mst.S_CNTR_CODE;
                 statusArrive.Flag = flag;
+                statusArrive.Info = info;
+                statusArrive.Message = message;
 
                 //statusArrives.Add(statusArrive);
                 statusarrive.data = statusArrive;
@@ -868,8 +935,19 @@
 
                 if (cntritem != null)
                 {
+                    string curBagNum = null;
+                    string weightBag = null;
+                    if (cntritem.F_QTY > 0)
+                    {
+                        curBagNum = cntritem.F_QTY.ToString();
+                    }
+                    if (!string.IsNullOrEmpty(cntritem.F_WEIGHT1) && int.Parse(cntritem.F_WEIGHT1) > 0)
+                    {
+                        weightBag = cntritem.F_WEIGHT1;
+                    }
                     list.Add(new MesItemBackInfoModel()
                     {
+
                         LotNumber = cntritem.S_BATCH_NO,
                         PartNumber = cntritem.S_ITEM_CODE,
                         Subpool = cntritem.Subpool,
@@ -880,7 +958,10 @@
                         Rfid = cntritem.S_CNTR_CODE,
                         Qty = cntritem.F_WEIGHT,
                         PartLevel = cntritem.LEV,
-                        WmsLot = cntritem.WmsLot
+                        WmsLot = cntritem.WmsLot,
+                        WeightBag = weightBag,
+                        CurBagNum = curBagNum,
+                        InitBagNum = cntritem.F_QTY1
                     });
 
 

--
Gitblit v1.9.1