From dd40ad9d66b3cf3430e94f39bf610888775f8e26 Mon Sep 17 00:00:00 2001
From: liudl <673013083@qq.com>
Date: 星期五, 17 一月 2025 08:49:35 +0800
Subject: [PATCH] Merge branch 'master' of http://47.95.120.53:8083/r/WCSNet6

---
 Admin.NET/WCS.Application/PLC/PLCService.cs |  268 +++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 256 insertions(+), 12 deletions(-)

diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index 1b9e99f..f364545 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -2,6 +2,7 @@
 using Dm.filter;
 using DocumentFormat.OpenXml.Bibliography;
 using DocumentFormat.OpenXml.Drawing.Charts;
+using Elastic.Clients.Elasticsearch.Snapshot;
 using Elastic.Clients.Elasticsearch.Tasks;
 using Flurl.Util;
 using Furion.Logging;
@@ -15,6 +16,7 @@
 using System.Data;
 using System.Reflection.Emit;
 using WCS.Application.Entity;
+using WCS.Application.Service.WcsDevice.Dto;
 using WCS.Application.Util;
 using static SKIT.FlurlHttpClient.Wechat.Api.Models.CgibinExpressIntracityUpdateStoreRequest.Types;
 using static SKIT.FlurlHttpClient.Wechat.Api.Models.NontaxInsertBillRequest.Types.CardExtra.Types.BillCard.Types;
@@ -1512,7 +1514,7 @@
                             // 鍙嶉WMS
                             var requestMode = new TaskRequestWMS()
                             {
-                                TaskNo = modTask.TaskNo,
+                                TaskNo = modTask.TaskNo + modTask.EndLocate ,
                                 PalletNo = modTask.PalletNo,
                                 TaskType = ((int)TaskTypeEnum.Out).ToString(),
                                 TaskStatus = ((int)TaskStatusEnum.Complete).ToString()
@@ -1621,7 +1623,7 @@
                                 // 鍙嶉WMS
                                 var requestMode = new TaskRequestWMS()
                                 {
-                                    TaskNo = modTask.TaskNo,
+                                    TaskNo = modTask.TaskNo + modTask.EndLocate ,
                                     PalletNo = modTask.PalletNo,
                                     TaskType = ((int)TaskTypeEnum.Out).ToString(),
                                     TaskStatus = ((int)TaskStatusEnum.Complete).ToString()
@@ -1800,7 +1802,7 @@
     {
         var plcConn = modDevice.PLCUtil;
 
-        if (modDevice.DbNumber == "DB101" && modDevice.DbNumber == "DB102")
+        if (modDevice.DbNumber == "DB101")//&& modDevice.DbNumber == "DB102"&& (modDevice.DbNumber == "DB102"||modDevice.PlcIdIP == "10.18.51.110")
         {
             // 涓绘壂浜や簰娴佺▼
             switch (modDevice.Value.ToString())
@@ -1870,11 +1872,12 @@
                                         }
                                     }
                                 }
-                                // 鏍规嵁绠卞唴鍝佺鍙疯幏鍙栫爜韬茬粦瀹氬伐浣嶅強瀵瑰簲鐨勫垎閬撳彿
-                                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)
+
+
+                                // 楠岃瘉鏄惁闆剁
+                                if (boxInfo.BitBoxMark == "1")
                                 {
-                                    // 缁戝畾淇℃伅涓簄ull鍐欏叆鍓旈櫎閫氶亾鍙�
+                                    // 鏄浂绠辩洿鎺ュ墧闄わ紝杩涜浜哄伐缁勬墭
                                     var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0");
                                     if (ret.IsSucceed)
                                     {
@@ -1882,8 +1885,225 @@
                                         var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
                                         if (retVal.IsSucceed)
                                         {
-                                            Log.Error("绠辩爜鏈粦瀹氬垎鎷d换鍔★紝杩涜鍓旈櫎銆�");
+                                            Log.Error("闆剁锛岃繘琛屽墧闄ゃ��");
                                             break;
+                                        }
+                                    }
+                                    break;
+                                }
+
+
+                                // 鏍规嵁绠卞唴鍝佺鍙疯幏鍙栫爜韬茬粦瀹氬伐浣嶅強瀵瑰簲鐨勫垎閬撳彿
+                                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)
+                                {
+                                    // 鍒ゆ柇鏄惁鍏宠仈鍗曟嵁 wcsordertask
+                                    var orderModel = _db.Queryable<WcsOderTask>()
+                                        .First(m => m.SkuNo == boxInfo.SkuNo && m.Status== TaskStatusEnum.Wait && m.LotNo == boxInfo.LotNo && m.IsDelete == false);
+                                    if (orderModel != null)
+                                    {
+                                        // 鏍规嵁boxinfo琛ㄤ骇绾垮瓧娈佃嚜鍔ㄧ粦瀹氬垎閬�(1绾夸骇鍝佸彧鑳界粦瀹氬埌8閬�)
+                                        if (boxInfo.LineNo != "1")
+                                        {// 缁戝畾鍒伴櫎8閬撳鍏朵粬閬�
+
+                                            // 鑾峰彇鏈粦瀹氶亾
+                                            var lineNoModels = _db.Queryable<WcsCheckTask>()
+                                                .Where(m => m.Status == "0" && m.LineNo != "8" && m.RoboatType == PLCTypeEnum.RobotPalletizer).ToList();
+                                            if (lineNoModels.Count > 0)
+                                            {
+                                                // 鑾峰彇褰撳墠鐗╂枡鍝佺鍙�
+                                                var skuInfo = await _db.Queryable<WcsMateialPzInfo>().Where(w => w.SkuNo == boxInfo.SkuNo).FirstAsync();
+                                                if (skuInfo == null)
+                                                {
+                                                    // 姝や骇鍝佽嫢娌¤瀹氬搧瑙勶紝杩涜鍓旈櫎澶勭悊銆傞槻姝㈠牭濉炰欢绠辩嚎
+                                                    var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0");
+                                                    if (ret.IsSucceed)
+                                                    {
+                                                        // 鍐欏叆娴佺▼鎺у埗瀛� 2
+                                                        var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
+                                                        if (retVal.IsSucceed)
+                                                        {
+                                                            Log.Error("娌℃湁绌洪棽鍒嗛亾锛岃繘琛屽墧闄ゃ��");
+                                                            break;
+                                                        }
+                                                    }
+                                                    break;
+                                                }
+
+                                                foreach (var lineNoModel in lineNoModels) 
+                                                {
+                                                    // 璇诲彇璁惧楠岃瘉鏄惁缁戝畾鍒嗛亾
+                                                    var (respg, pzNo) = plcConn.GetPlcDBValue(lineNoModel.PosType, lineNoModel.DbNumber, lineNoModel.PlcPos);
+                                                    if (respg.IsSucceed)
+                                                    {
+                                                        if (pzNo != 0)
+                                                        {
+                                                            // plc姝ゅ垎閬撴湭瑙g粦
+                                                            break;
+                                                        }
+                                                        else 
+                                                        {
+                                                            // 鑷姩缁戝畾鍒嗛亾
+                                                            lineNoModel.OrderNo = orderModel.OrderNo;
+                                                            lineNoModel.LotNo = boxInfo.LotNo;
+                                                            lineNoModel.SkuNo = boxInfo.SkuNo;
+                                                            lineNoModel.SkuName = boxInfo.SkuName;
+                                                            lineNoModel.Qty = orderModel.Qty;
+                                                            lineNoModel.Status = "1";//宸茬粦瀹�
+                                                            lineNoModel.PZNo = skuInfo.PZNo;
+
+                                                            // 缁橮LC鍐欏叆鍝佽
+                                                            var ret = plcConn.SetPlcDBValue(lineNoModel.PosType, lineNoModel.DbNumber, lineNoModel.PlcPos, skuInfo.PZNo);
+                                                            if (ret.IsSucceed)
+                                                            {
+                                                                //鍐欏叆娴佺▼瀛楁垚鍔熷悗鏇存柊鍒嗘嫞浠诲姟
+                                                                _db.Updateable(lineNoModel).ExecuteCommand();
+                                                                //鏇存柊WcsOderTask琛�
+                                                                orderModel.Status = TaskStatusEnum.Doing;
+                                                                _db.Updateable(orderModel).ExecuteCommand();
+                                                                // Liudl 閫氱煡鍓嶇鏇存柊鍒嗘嫞浠诲姟
+                                                                //涓嬪彂鍒嗘嫞浠诲姟
+                                                                HubUtil.PublicCheckTask(lineNoModel.Adapt<WcsDeviceTaskOrderDto>());
+                                                                break;
+                                                            }
+                                                            else
+                                                            {
+                                                                throw Oops.Bah("涓嶱CL浜や簰澶辫触锛岀粦瀹氬け璐ワ紒");
+                                                            }
+                                                        }
+                                                    }
+                                                    else 
+                                                    {
+                                                        // 璇诲彇plc澶辫触
+                                                        break;
+                                                    }
+                                                }
+
+                                            }
+                                            else 
+                                            {
+                                                // 鑻ユ病鏈夌┖闂查亾锛岃繘琛屽墧闄ゅ鐞嗐�傞槻姝㈠牭濉炰欢绠辩嚎
+                                                var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0");
+                                                if (ret.IsSucceed)
+                                                {
+                                                    // 鍐欏叆娴佺▼鎺у埗瀛� 2
+                                                    var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
+                                                    if (retVal.IsSucceed)
+                                                    {
+                                                        Log.Error("娌℃湁绌洪棽鍒嗛亾锛岃繘琛屽墧闄ゃ��");
+                                                        break;
+                                                    }
+                                                }
+                                                break;
+                                            }
+                                        }
+                                        else 
+                                        {// 缁戝畾鍒�8閬�
+                                         // 鑾峰彇鏈粦瀹氶亾
+                                            var lineNo8Model = _db.Queryable<WcsCheckTask>()
+                                                .First(m => m.Status == "0" && m.LineNo == "8" && m.RoboatType == PLCTypeEnum.RobotPalletizer);
+                                            if (lineNo8Model != null)
+                                            {
+                                                // 鑾峰彇褰撳墠鐗╂枡鍝佺鍙�
+                                                var skuInfo = await _db.Queryable<WcsMateialPzInfo>().Where(w => w.SkuNo == boxInfo.SkuNo).FirstAsync();
+                                                if (skuInfo == null)
+                                                {
+                                                    // 姝や骇鍝佽嫢娌¤瀹氬搧瑙勶紝杩涜鍓旈櫎澶勭悊銆傞槻姝㈠牭濉炰欢绠辩嚎
+                                                    var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0");
+                                                    if (ret.IsSucceed)
+                                                    {
+                                                        // 鍐欏叆娴佺▼鎺у埗瀛� 2
+                                                        var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
+                                                        if (retVal.IsSucceed)
+                                                        {
+                                                            Log.Error("娌℃湁绌洪棽鍒嗛亾锛岃繘琛屽墧闄ゃ��");
+                                                            break;
+                                                        }
+                                                    }
+                                                    break;
+                                                }
+
+
+                                                // 璇诲彇璁惧楠岃瘉鏄惁缁戝畾鍒嗛亾
+                                                var (respg, pzNo) = plcConn.GetPlcDBValue(lineNo8Model.PosType, lineNo8Model.DbNumber, lineNo8Model.PlcPos);
+                                                if (respg.IsSucceed)
+                                                {
+                                                    if (pzNo != 0)
+                                                    {
+                                                        // plc姝ゅ垎閬撴湭瑙g粦
+                                                        break;
+                                                    }
+                                                    else
+                                                    {
+                                                        // 鑷姩缁戝畾鍒嗛亾
+                                                        lineNo8Model.OrderNo = orderModel.OrderNo;
+                                                        lineNo8Model.LotNo = boxInfo.LotNo;
+                                                        lineNo8Model.SkuNo = boxInfo.SkuNo;
+                                                        lineNo8Model.SkuName = boxInfo.SkuName;
+                                                        lineNo8Model.Qty = orderModel.Qty;
+                                                        lineNo8Model.Status = "1";//宸茬粦瀹�
+                                                        lineNo8Model.PZNo = skuInfo.PZNo;
+
+                                                        // 缁橮LC鍐欏叆鍝佽
+                                                        var ret = plcConn.SetPlcDBValue(lineNo8Model.PosType, lineNo8Model.DbNumber, lineNo8Model.PlcPos, skuInfo.PZNo);
+                                                        if (ret.IsSucceed)
+                                                        {
+                                                            //鍐欏叆娴佺▼瀛楁垚鍔熷悗鏇存柊鍒嗘嫞浠诲姟
+                                                            _db.Updateable(lineNo8Model).ExecuteCommand();
+                                                            //鏇存柊WcsOderTask琛�
+                                                            orderModel.Status = TaskStatusEnum.Doing;
+                                                            _db.Updateable(orderModel).ExecuteCommand();
+
+                                                            // Liudl 閫氱煡鍓嶇鏇存柊鍒嗘嫞浠诲姟
+                                                            //涓嬪彂鍒嗘嫞浠诲姟
+                                                            HubUtil.PublicCheckTask(lineNo8Model.Adapt<WcsDeviceTaskOrderDto>());
+                                                            break;
+                                                        }
+                                                        else
+                                                        {
+                                                            throw Oops.Bah("涓嶱CL浜や簰澶辫触锛岀粦瀹氬け璐ワ紒");
+                                                        }
+                                                    }
+                                                }
+                                                else
+                                                {
+                                                    // 璇诲彇plc澶辫触
+                                                    break;
+                                                }
+                                                
+
+                                            }
+                                            else
+                                            {
+                                                // 娌℃湁绌洪棽閬擄紝杩涜鍓旈櫎澶勭悊銆傞槻姝㈠牭濉炰欢绠辩嚎
+                                                var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0");
+                                                if (ret.IsSucceed)
+                                                {
+                                                    // 鍐欏叆娴佺▼鎺у埗瀛� 2
+                                                    var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
+                                                    if (retVal.IsSucceed)
+                                                    {
+                                                        Log.Error("娌℃湁绌洪棽鍒嗛亾锛岃繘琛屽墧闄ゃ��");
+                                                        break;
+                                                    }
+                                                }
+                                                break;
+                                            }
+                                        }
+                                    }
+                                    else 
+                                    {
+                                        // 涓嶅叧鑱斿崟鎹洿鎺ヨ繘琛屽墧闄ゅ鐞�
+                                        var ret = plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, "0");
+                                        if (ret.IsSucceed)
+                                        {
+                                            // 鍐欏叆娴佺▼鎺у埗瀛� 2
+                                            var retVal = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "2");
+                                            if (retVal.IsSucceed)
+                                            {
+                                                Log.Error("绠辩爜鏈粦瀹氬垎鎷d换鍔★紝杩涜鍓旈櫎銆�");
+                                                break;
+                                            }
                                         }
                                     }
                                 }
@@ -2023,8 +2243,8 @@
                                 //鏄惁缁撴壒绠� 
                                 if (boxInfo[0].EndLotFlag == "1" && retVal.IsSucceed) 
                                 {
-                                    // 瑙﹀彂缁撴壒 瑙g粦鍒嗛亾
-                                    AutoEndLot(boxInfo[0].LotNo, plcConn, "0");
+                                    // 瑙﹀彂缁撴壒 鍒嗛亾鍙樹负缁撴壒涓�
+                                    AutoEndLot(boxInfo[0].LotNo, plcConn, "2");
                                 }
                             }
                             else 
@@ -2167,6 +2387,7 @@
                                     string sqlStr2 = $"delete from WCSBoxInfoLog where  IsDelete=0 and PalletNo='{palletNo}'";
                                     _db.Ado.ExecuteCommand(sqlStr2);
                                 }
+                                
                                 // 鍚慦MS鐢宠宸烽亾
                                 var http = new HttpService();
                                 string TaskNo = "", EndLocate = "";
@@ -2179,6 +2400,29 @@
                                 }
                                 else
                                 {
+                                    //鍒ゆ柇鏄惁缁撴壒涓�
+                                    var (res, jiepi) = plcConn.GetPlcDBValue(checkTaskMedel.PosType, modDevice.DbNumber, checkTaskMedel.PosLot);
+                                    if (jiepi == 2)//缁撴壒涓�
+                                    {
+                                        // 鍒嗛亾瑙g粦锛屾姄绠卞搧绉嶅啓鍏�0
+                                        var ret1 = plcConn.SetPlcDBValue(checkTaskMedel.PosTypeLot, modDevice.DbNumber, checkTaskMedel.PlcPos, "0");
+                                        if (ret1.IsSucceed)
+                                        {
+                                            //鍐欏叆娴佺▼瀛楁垚鍔熷悗鏇存柊鍒嗘嫞浠诲姟    liudl 鏈�鍚庝竴鎵樼洏鐢宠瀹屽叆搴撴墠鍙竻绌�
+                                            checkTaskMedel.OrderNo = "";
+                                            checkTaskMedel.TaskNo = "";
+                                            checkTaskMedel.LotNo = "";
+                                            checkTaskMedel.SkuNo = "";
+                                            checkTaskMedel.SkuName = "";
+                                            checkTaskMedel.BoxType = "";
+                                            checkTaskMedel.Qty = 0;
+                                            checkTaskMedel.PZNo = "";
+                                            checkTaskMedel.Status = "0";      // 缁戝畾鍒嗛亾 0锛氳В缁�  1锛氱粦瀹� 
+
+                                            //鏇存柊鍒嗘嫞浠诲姟
+                                            _db.Updateable(checkTaskMedel).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
+                                        }
+                                    }
                                     // 鑾峰彇鍏ュ簱浠诲姟淇℃伅
                                     var taskModel = _db.Queryable<WcsTask>().First(m => m.TaskNo == TaskNo && m.IsDelete == false && m.Status == TaskStatusEnum.Wait);
                                     if (taskModel != null)
@@ -2376,7 +2620,7 @@
                 // 鍐欏叆缁撴壒淇″彿
                 var ret = plcConn.SetPlcDBValue(item.PosTypeLot, item.DbNumber, item.PosLot, "1");
                 // 鍒嗛亾瑙g粦锛屾姄绠卞搧绉嶅啓鍏�0
-                var ret1 = plcConn.SetPlcDBValue(item.PosTypeLot, item.DbNumber, item.PlcPos, "0");
+                //var ret1 = plcConn.SetPlcDBValue(item.PosTypeLot, item.DbNumber, item.PlcPos, "0");
                 if (ret.IsSucceed)
                 {
                     //鍐欏叆娴佺▼瀛楁垚鍔熷悗鏇存柊鍒嗘嫞浠诲姟    liudl 鏈�鍚庝竴鎵樼洏鐢宠瀹屽叆搴撴墠鍙竻绌�
@@ -2388,7 +2632,7 @@
                     //item.BoxType = "";
                     //item.Qty = 0;
                     item.PZNo = "";
-                    item.Status = status;      // 缁戝畾鍒嗛亾 0锛氳В缁�  1锛氱粦瀹� 
+                    item.Status = status;      // 缁戝畾鍒嗛亾 0锛氳В缁�  1锛氱粦瀹�  2:缁撴壒涓�
 
                     //鏇存柊鍒嗘嫞浠诲姟
                     _db.Updateable(item).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();

--
Gitblit v1.8.0