From e0471620ed16295a330ce18bcfe1654c91138996 Mon Sep 17 00:00:00 2001
From: cjs <2216046164@qq.com>
Date: 星期五, 18 七月 2025 17:24:42 +0800
Subject: [PATCH] 111

---
 ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiHelper.cs |  346 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 334 insertions(+), 12 deletions(-)

diff --git a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiHelper.cs b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiHelper.cs
index ea1ad24..61f4a59 100644
--- a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiHelper.cs
+++ b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiHelper.cs
@@ -8,10 +8,13 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Threading;
+using System.Timers;
 using static Hanhe.iWCS.JingmenGEMTwoProtocol.MESHelper;
 using static Hanhe.iWCS.JingmenGEMTwoProtocol.PLCControl;
 using static Hanhe.iWCS.JingmenGEMTwoProtocol.ProcessHelper;
 using static Hanhe.iWCS.JingmenGEMTwoProtocol.ProtocolAnalysis;
+using static System.Runtime.CompilerServices.RuntimeHelpers;
 
 namespace Hanhe.iWCS.JingmenGEMTwoProtocol
 {
@@ -302,7 +305,13 @@
             /// </summary>
             public int direction { get; set; }
         }
-        
+
+        public class bzxxModel
+        {
+            public string machineNo { get; set; }
+            public string mesCode { get; set; }
+        }
+
 
         #region   鏁欑О娴佺▼锛屼汉宸DA杩斿洖澶嶇О骞冲彴锛屽寘瑁呮満澶嶇О淇℃伅
 
@@ -376,23 +385,31 @@
         internal static ErrInfoResult getErrInfo(string factory)
         {
             ErrInfoResult result = new ErrInfoResult() { sucess = false };
-
-            if(factory == "sanyuan")
+            try
             {
-                var errList = MongoDBSingleton.Instance.FindAll<errInfoTable>("ErrInfoResult");
-                if (errList.Count > 0)
+                if (factory.Contains("sanyuan"))
                 {
-                    result.sucess = true;
-                    errList.ForEach(r =>
+                    var errList = MongoDBSingleton.Instance.FindAll<errInfoTable>("errInfoTable");
+                    if (errList.Count > 0)
                     {
-                        result.errInfo.Add(new errInfo { taskName = r.taskName, errMsg = r.errMsg, time = r.dateTime });
-                    });
+                        result.sucess = true;
+                        result.errInfo = new List<errInfo>();
+                        errList.ForEach(r =>
+                        {
+                            result.errInfo.Add(new errInfo { taskName = r.taskName, errMsg = r.errMsg, time = r.dateTime });
+                        });
+                    }
+                }
+                else
+                {
+
                 }
             }
-            else
+            catch(Exception ex)
             {
-
+                CMMLog.Info("getErrInfo err:"+ex.Message);
             }
+            
             
             return result;
         }
@@ -401,12 +418,13 @@
         {
             ZZTPWNumResult result = new ZZTPWNumResult() { sucess = false };
 
-            if(factory == "sanyuan")
+            if(factory.Contains("sanyuan"))
             {
                 var bzEmpInfo = MongoDBSingleton.Instance.FindAll<BZEmptyPoint>("BZEmptyPoint");
                 if (bzEmpInfo.Count > 0)
                 {
                     result.sucess = true;
+                    result.zztpwInfo = new List<zztpwInfo>();
                     bzEmpInfo.ForEach(r =>
                     {
                         result.zztpwInfo.Add(new zztpwInfo { S_LOC_CODE = r.Bit, N_QTY = r.Quantity });
@@ -418,6 +436,296 @@
 
             }
             return result;
+        }
+
+        internal static BZXXResult Bzxx(bzxxModel models)
+        {
+            BZXXResult result = new BZXXResult() {success = false };
+            if(models != null && !string.IsNullOrEmpty(models.mesCode))
+            {
+                //閫氳繃mesCode鑾峰彇mes鐨勭墿鏂欎俊鎭�+                var res = helper.WebGet(Settings.MESUrl2 + "?mesCode=" + models.mesCode);
+                CMMLog.Info($"Bzxx ReqMsg:{JsonConvert.SerializeObject(res)},url:{Settings.MESUrl2}");
+                try
+                {
+                    if (!string.IsNullOrEmpty(res))
+                    {
+                        var req = JsonConvert.DeserializeObject<mesInfo>(res);
+                        if(req != null)
+                        {
+                            if (req.isSuccess)
+                            {
+                                var timeCuo = MongoDBSingleton.Instance.FindOne<TimeCuoInfoCom>(Query.EQ("packingMachineNumber", models.machineNo), "TimeCuoInfoCom");
+                                if (timeCuo == null)
+                                {
+                                    MongoDBSingleton.Instance.Insert<TimeCuoInfoCom>(new TimeCuoInfoCom
+                                    {
+                                        isFold = 1,
+                                        packingMachineNumber = models.machineNo,
+                                        needWeight = (int)req.data.FMustQty,
+                                        realWeight = (int)req.data.FMustQty,
+                                        totalWeight = (int)req.data.FMustQty,
+                                        batchNumber = req.data.Flot,
+                                        productModel = req.data.materialSpec,
+                                        bagNumber_1 = req.data.bagNum,
+                                        totalCount = 1,
+                                        timeStampMES = req.data.mesCode,
+                                        photoURL = req.data.barCode,
+                                        ProductionDate = req.data.ywDate,
+                                        // ERP鍙樻洿-鐓х浉鏈烘柊澧炲瓧娈�+                                        materialCode = req.data.FMaterialNumber,
+                                        materialName = req.data.materialName,
+                                        measurementUnit = req.data.FUnit,
+                                        createOrganization = req.data.FPrdOrgNumber,
+                                        WarehouseCode = req.data.FStockNumber,
+                                        workshopCode = req.data.FWorkShopNumber,
+                                        BusinessDate = req.data.ywDate,
+                                        barcode = req.data.barCode,
+
+                                        employeeID1 = req.data.jycjj,
+
+                                        //鍙樻洿娉ㄩ噴
+                                        totalNeedWeight = (int)req.data.FMustQty,
+                                        FEntryID_1 = 0,
+                                        orderCode = ""
+                                    });
+                                }
+                                else
+                                {
+                                    var query = Query.EQ("packingMachineNumber", models.machineNo);
+                                    //鍙樻洿娉ㄩ噴
+                                    UpdateBuilder update = Update.Set("isFold", 1).Set("packingMachineNumber", models.machineNo).Set("needWeight", (int)req.data.FMustQty)
+                                        .Set("realWeight", (int)req.data.FMustQty).Set("totalWeight", (int)req.data.FMustQty).Set("batchNumber", req.data.Flot)
+                                        .Set("productModel", req.data.materialSpec).Set("bagNumber_1", req.data.bagNum).Set("totalCount", 1).Set("timeStampMES", req.data.mesCode)
+                                        .Set("photoURL", req.data.barCode).Set("ProductionDate", req.data.ywDate).Set("materialCode", req.data.FMaterialNumber)
+                                        .Set("materialName", req.data.materialName).Set("measurementUnit", req.data.FUnit)
+                                        .Set("createOrganization", req.data.FPrdOrgNumber).Set("WarehouseCode", req.data.FStockNumber).Set("workshopCode", req.data.FWorkShopNumber)
+                                        .Set("BusinessDate", req.data.ywDate).Set("barcode", req.data.barCode).Set("employeeID1", req.data.jycjj)
+                                        .Set("totalNeedWeight", (int)req.data.FMustQty).Set("FEntryID_1", 0);
+                                    MongoDBSingleton.Instance.Update<TimeCuoInfoCom>(query, update, UpdateFlags.None);
+                                }
+
+                                //鐢熸垚鍒版帴椹冲钩鍙扮殑浠诲姟
+                                string traycode = DateTime.Now.ToString("yyyy-MM-dd").Replace("-", "");
+                                var CBInfo = Settings.GetConnectingbitsList().Where(a => a.enable == 1).ToList();
+                                if (CBInfo != null)
+                                {
+                                    AMSHelper.HHAmsExecuteResult amsResult = null;
+                                    foreach (var a in CBInfo)
+                                    {
+                                        if (!string.IsNullOrEmpty(a.locCode))
+                                        {
+                                            //鍦ㄤ腑闂磋〃涓煡鎵剧偣浣�+                                            var CBTable = MongoDBSingleton.Instance.FindOne<ConnectingBits>(Query.EQ("Bit", a.locCode), "ConnectingBits");
+                                            if (CBTable != null)
+                                            {
+                                                if (string.IsNullOrEmpty(CBTable.trayCode))
+                                                {
+                                                    //鐢熸垚浠诲姟锛屽苟涓斿皢鐐逛綅鍐欏叆涓棿琛�+                                                    amsResult = AMSHelper.CreateTask(DateTime.Now.Ticks.ToString(), models.machineNo, a.locCode, "PDA鎵撳寘涓嬬嚎", 0, traycode);
+                                                    if (amsResult.success)
+                                                    {
+                                                        result.success = true;
+                                                        CMMLog.Debug($"PDA鎵撳寘涓嬬嚎锛欰MS璋冪敤API鎴愬姛锛�);
+                                                        MongoDBSingleton.Instance.Update<ConnectingBits>(Query.EQ("Bit", a.locCode), Update.Set("trayCode", traycode).Set("timeCuo", req.data.mesCode), UpdateFlags.None);
+
+                                                        break;
+                                                    }
+                                                    else CMMLog.Debug($"PDA鎵撳寘涓嬬嚎锛欰MS璋冪敤API澶辫触锛屽紑濮嬮噸鏂拌皟鐢紒");
+                                                }
+                                            }
+                                            else
+                                            {
+                                                //鐢熸垚浠诲姟锛屽苟涓斿皢鐐逛綅鍐欏叆涓棿琛�+                                                amsResult = AMSHelper.CreateTask(DateTime.Now.Ticks.ToString(), models.machineNo, a.locCode, "PDA鎵撳寘涓嬬嚎", 0, traycode);
+                                                if (amsResult.success)
+                                                {
+                                                    result.success = true;
+                                                    CMMLog.Debug($"PDA鎵撳寘涓嬬嚎锛欰MS璋冪敤API鎴愬姛锛�);
+                                                    //鎵撳寘涓嬬嚎浠诲姟鐢熸垚鎴愬姛锛屽悜涓棿琛ㄦ彃鍏ユ暟鎹�+                                                    MongoDBSingleton.Instance.Insert<ConnectingBits>(new ConnectingBits { Bit = a.locCode, trayCode = traycode, state = "0", timeCuo = req.data.mesCode });
+                                                    
+                                                    break;
+                                                }
+                                                else CMMLog.Debug($"PDA鎵撳寘涓嬬嚎锛欰MS璋冪敤API澶辫触锛屽紑濮嬮噸鏂拌皟鐢紒");
+                                            }
+                                            if (amsResult != null && amsResult.success)
+                                            {
+                                                //涓婃姤鏉$爜琛�+                                                CMMLog.Info($"INSERT INTO T_JY_BARCODESync (FBarCode, FBarCodeRule,FMaterialNumber,FCreateOrgNumber,FLot,FUnit,FQty,FStockNumber,FDept,FBillDate,F_JY_CZZ,FOpStatus) VALUES ('{req.data.barCode}','01','{req.data.materialName}','02','{req.data.Flot}','{req.data.FUnit}','{req.data.FMustQty}','CK020','BM000161','{req.data.ywDate}','{req.data.jycjj}','0')");
+                                                new SqlHelper<object>().ExecuteSql($" INSERT INTO T_JY_BARCODESync (FBarCode, FBarCodeRule,FMaterialNumber,FCreateOrgNumber,FLot,FUnit,FQty,FStockNumber,FDept,FBillDate,F_JY_CZZ,FOpStatus) VALUES ('{req.data.barCode}','01','{req.data.materialName}','02','{req.data.Flot}','{req.data.FUnit}','{req.data.FMustQty}','CK020','BM000161','{req.data.ywDate}','{req.data.jycjj}','0')", false);
+                                                var plc = Settings.GetPlcInfo().Where(b => b.location == models.machineNo && b.enable == 1).First();
+                                                if(plc != null)
+                                                {
+                                                    var wirteall01 = OITcpHelper.RegisterWriteOutPut(new OITcpHelper.RegisterWriteOutPutModel
+                                                    {
+                                                        addr = plc.writeAddr,
+                                                        host = plc.ip,
+                                                        port = plc.port,
+                                                        data = 4
+                                                    });
+                                                }
+
+                                            }
+                                        }
+                                        else CMMLog.Debug("鎵撳寘涓嬬嚎鍙f帴椹充綅鐐逛綅鏈厤缃�);
+                                    }
+                                    if (amsResult == null || amsResult.success == false)
+                                    {
+                                        result.errMsg = "浠诲姟鐢熸垚澶辫触锛屾帴椹充綅鏈変换鍔″崰鐢�;
+                                    }
+                                }
+                                else CMMLog.Debug("鎵撳寘涓嬬嚎鍙f帴椹充綅鏈厤缃�);
+                            }
+                            else
+                            {
+                                result.errMsg = req.msg;
+                            }
+                            
+                        }
+                        else
+                        {
+                            result.errMsg = $"鏁版嵁瑙f瀽澶辫触";
+                        }
+                    }
+                    else
+                    {
+                        result.errMsg = $"鏌ヨmes淇℃伅澶辫触锛宮esCode锛歿models.mesCode}";
+                    }
+                }
+                catch(Exception ex)
+                {
+                    result.errMsg = ex.Message;
+                }
+            }
+            else
+            {
+                result.errMsg = "鍙傛暟杈撳叆閿欒";
+            }
+            return result;
+        }
+
+        /// <summary>
+        /// 鐢甸挻杞﹂棿鍖呰涓嬬嚎鑾峰彇wms浼犲叆鐨勬墭鐩�+        /// </summary>
+        /// <param name="trayCode"></param>
+        /// <returns></returns>
+        /// <exception cref="NotImplementedException"></exception>
+        internal static SimpleResult DGPackingLineFull(string trayCode)
+        {
+            SimpleResult result = new SimpleResult() { success = false,errCode = -1 };
+
+            if (!string.IsNullOrEmpty(trayCode)){
+                var DGInfo = MongoDBSingleton.Instance.FindOne<DGPackingLineFullModel>(Query.EQ("trayCode", trayCode), "DGPackingLineFullModel");
+                if (DGInfo == null)
+                {
+                    MongoDBSingleton.Instance.Insert<DGPackingLineFullModel>(new DGPackingLineFullModel() { trayCode = trayCode, createTime = DateTime.Now }, "DGPackingLineFullModel");
+                    result.success = true;
+                    result.errCode = 0;
+                }
+                else
+                {
+                    result.errMsg = $"褰撳墠鎵樼洏鍙凤紝宸插瓨鍦ㄤ簬ams涓棿琛ㄤ腑锛屾墭鐩樺彿锛歿trayCode}";
+                }
+            }
+            else
+            {
+                result.errMsg = $"褰撳墠鎵樼洏鍙蜂负绌�;
+            }
+            
+            return result;
+        }
+
+        public class mesInfo
+        {
+            public int code { get; set; }
+            public string msg { get; set; }
+            public mesData data { get; set; }
+            public bool isSuccess { get; set; }
+        }
+
+        public class mesData
+        {
+            /// <summary>
+            /// 鍏ュ簱缁勭粐
+            /// </summary>
+            public string FStockOrgNumber { get; set;}
+            /// <summary>
+            /// 鐢熶骇缁勭粐
+            /// </summary>
+            public string FPrdOrgNumber { get; set; }
+            /// <summary>
+            /// 鍏ュ簱绫诲瀷
+            /// </summary>
+            public string FInStockType { get; set; }
+            /// <summary>
+            /// 浠撳簱缂栫爜
+            /// </summary>
+            public string FStockNumber { get; set; }
+            /// <summary>
+            /// 鐢熶骇杞﹂棿
+            /// </summary>
+            public string FWorkShopNumber { get; set; }
+            /// <summary>
+            /// 搴撳瓨鐘舵�
+            /// </summary>
+            public string FStockStatus { get; set; }
+            /// <summary>
+            /// 鍗曚綅
+            /// </summary>
+            public string FUnit { get; set; }
+            /// <summary>
+            /// 鐗╂枡缂栫爜
+            /// </summary>
+            public string FMaterialNumber { get; set; }
+            /// <summary>
+            /// 鐗╂枡鍚嶇О
+            /// </summary>
+            public string materialName { get; set; }
+            /// <summary>
+            /// 鐗╂枡瑙勬牸
+            /// </summary>
+            public string materialSpec { get; set; }
+            /// <summary>
+            /// 鎵瑰彿
+            /// </summary>
+            public string Flot { get; set; }
+            /// <summary>
+            /// 闇�眰閲嶉噺
+            /// </summary>
+            public double FMustQty { get; set; }
+            /// <summary>
+            /// 閫�簱鏃堕棿
+            /// </summary>
+            public string FProduceDate { get; set; }
+            /// <summary>
+            /// 鍞竴鏍囪瘑
+            /// </summary>
+            public string FExpiryDate { get; set; }
+            /// <summary>
+            /// 鍞竴鐮�+            /// </summary>
+            public string mesCode { get; set; }
+            /// <summary>
+            /// 瀹屾暣鏉$爜
+            /// </summary>
+            public string barCode { get; set; }
+            /// <summary>
+            /// 琚嬪彿
+            /// </summary>
+            public string bagNum { get; set; }
+            /// <summary>
+            /// mes鍖呭彿
+            /// </summary>
+            public string bagCode { get; set; }
+            /// <summary>
+            /// 鍛樺伐缂栫爜
+            /// </summary>
+            public string jycjj { get; set; }
+            /// <summary>
+            /// 涓氬姟鏃ユ湡
+            /// </summary>
+            public string ywDate { get; set; }
         }
 
         public class AGV_STATE
@@ -466,6 +774,14 @@
             /// 鏄惁鏈夎揣
             /// </summary>
             public int haveItem { get; set; }
+        }
+
+        public class DGPackingLineFullModel
+        {
+            public ObjectId _id { get; set; }
+            public string trayCode { get; set; }
+            public string isUse { get; set; } = "0";
+            public DateTime createTime { get; set; }
         }
 
         public class secondResultCache
@@ -523,6 +839,12 @@
             public int N_QTY { get; set; }
         }
 
+        public class BZXXResult
+        {
+            public bool success { get; set;}
+            public string errMsg { get; set; }
+        }
+
         /// <summary>
         /// hosttoagv涓婃姤杞﹁締鐘舵�锛堝弬鏁板湪hosttoagv鏈嶅姟閰嶇疆锛屽彲淇敼锛�         /// </summary>

--
Gitblit v1.9.1