11
cjs
2025-06-23 823a7818345dedc7e460b3009c7ee2a89fa03e03
11
6个文件已修改
108 ■■■■ 已修改文件
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ERPService.cs 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/PLCControl.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/WMSHelper.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/settings.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ams/Hanhe.iWCS.JingmenGEMTwoTCP/.vs/Hanhe.iWCS.JingmenGEMTwoTCP/v17/DocumentLayout.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ams/Hanhe.iWCS.JingmenGEMTwoTCP/WCSServer.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ERPService.cs
@@ -1,4 +1,5 @@
using Hanhe.iWCS.Common;
using Hanhe.iWCS.DeviceDriver;
using Hanhe.iWCS.MData;
using Hanhe.iWCS.Model;
using MongoDB.Bson;
@@ -14,10 +15,13 @@
using System.Net.NetworkInformation;
using System.Net.Sockets;
using System.Security.Cryptography;
using System.Security.Policy;
using System.Text;
using System.Threading.Tasks;
using static Hanhe.iWCS.JingmenGEMTwoProtocol.ApiHelper;
using static Hanhe.iWCS.JingmenGEMTwoProtocol.MESHelper;
using static Hanhe.iWCS.JingmenGEMTwoProtocol.PLCControl;
using static Hanhe.iWCS.JingmenGEMTwoProtocol.ProtocolAnalysis;
namespace Hanhe.iWCS.JingmenGEMTwoProtocol
{
@@ -35,6 +39,7 @@
        static WebApiHelper api = new WebApiHelper();
        public const string ERPSwitch01 = "1";// ERP变更流程开关
        public static HardwareAccessObject hao = HardwareAccessHelper.Instance.GetEquipmentsHAO(Constants.WMS_DEVICE_TYPE_WMS);
        public static List<string> SendERPTaskType = Settings.SendERPTaskType.Split(',').ToList();//回报任务类型
        public static List<string> LoginInfo = Settings.LoginInfo.Split(',').ToList();// ERP登录接口传输信息
@@ -2035,26 +2040,54 @@
        }
        internal static void senderpTaskDG(string startBit)
        internal static void senderpTaskDG(string startBit, string trayCode)
        {
            try
            {
                //通过托盘号调用wms接口获取物料信息
                CMMLog.Info("插入SendErpTaskInfoTable 表 开始:" + startBit);
                var erpInfo = MongoDBSingleton.Instance.FindOne<SendErpTaskInfoTable>(Query.EQ("Bit", startBit), "SendErpTaskInfoTable");
                CMMLog.Info("SendErpTaskInfoTableDG 表 开始:" + startBit);
                var url = hao.WebUrl + "GlmTrayItemSet";
                var erpInfo = MongoDBSingleton.Instance.FindOne<SendErpTaskInfoTableDG>(Query.EQ("Bit", startBit), "SendErpTaskInfoTableDG");
                if (erpInfo == null)
                {
                    //string fEntryId = time.FEntryID_1.ToString() + (time.FEntryID_2 == 0 ? "" : ";" + time.FEntryID_2.ToString()) + (time.FEntryID_3 == 0 ? "" : ";" + time.FEntryID_3.ToString()) + (time.FEntryID_4 == 0 ? "" : ";" + time.FEntryID_4.ToString());
                    string materiCode = "";
                    string lotCode = "";
                    int totalWeight = 0;
                    string productTime = "";
                    CMMLog.Info("插入SendErpTaskInfoTable 表 1");
                    MongoDBSingleton.Instance.Insert<SendErpTaskInfoTable>(new SendErpTaskInfoTable
                    //根据托盘号获取入库物料信息
                    CJWareNum model = new CJWareNum
                    {
                        TrayCode = trayCode
                    };
                    string msgData = JsonConvert.SerializeObject(model);
                    var feedback = helper.WebPost(url, msgData).Replace(@"\", "").Trim();
                    CMMLog.Info($"SendErpTaskInfoTableDG:【调用wms获取物料信息】:接收数据:" + feedback);
                    if (!string.IsNullOrEmpty(feedback))
                    {
                        var wmsResponse = JsonConvert.DeserializeObject<LKInfoResModel>(feedback);
                        if (wmsResponse.Success == true)
                        {
                            materiCode = wmsResponse.Data.CN_S_MATERI_CODE;
                            lotCode = wmsResponse.Data.CN_S_LOT_NO;
                            totalWeight = wmsResponse.Data.CN_N_WEIGHT;
                            productTime = wmsResponse.Data.CN_S_Data;
                        }
                    }
                    CMMLog.Info("SendErpTaskInfoTableDG 表 1");
                    MongoDBSingleton.Instance.Insert<SendErpTaskInfoTableDG>(new SendErpTaskInfoTableDG
                    {
                        Bit = startBit,
                        //materiCode = time.materialCode,
                        //lotCode = time.batchNumber,
                        //productTime = Convert.ToDateTime(time.ProductionDate).AddHours(8),
                        //invalidationTime = Convert.ToDateTime(time.ProductionDate).AddHours(8).AddDays(365),
                        materiCode = materiCode,
                        lotCode = lotCode,
                        totalWeight = totalWeight,
                        productTime = Convert.ToDateTime(productTime).AddHours(8),
                        invalidationTime = Convert.ToDateTime(productTime).AddHours(8).AddDays(365),
                        dateTime = DateTime.Now.AddHours(8),
                        //变更注释
                        mesSucess = "0"
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/PLCControl.cs
@@ -3979,7 +3979,7 @@
        }
        /// <summary>
        /// 四钴接驳位入立库任务
        /// 电钴接驳位入立库任务
        /// </summary>
        /// <param name="locCode"></param>
        internal static void DGInWarehouse(string locCode)
@@ -4525,7 +4525,7 @@
        }
        /// <summary>
        /// 四钴A(洗板烘干机组)设备上空下满
        /// 电钴A(洗板烘干机组)设备上空下满
        /// </summary>
        /// <param name="plc"></param>
        /// <exception cref="NotImplementedException"></exception>
@@ -4548,8 +4548,8 @@
                        {
                            //送空
                            bool req = WMSHelper.WMSOut(plc.location, "", "");
                            if (req) CMMLog.Debug($"四钴A设备 调用WMS获取空托出库生成任务成功!");//现在任务由WMS自己下发,AMS做拦截处理(查询ext1里面对应的任务类型,并更改任务类型)
                            else CMMLog.Debug($"四钴A设备 调用WMS获取空托出库生成任务失败!");
                            if (req) CMMLog.Debug($"电钴A设备 调用WMS获取空托出库生成任务成功!");//现在任务由WMS自己下发,AMS做拦截处理(查询ext1里面对应的任务类型,并更改任务类型)
                            else CMMLog.Debug($"电钴A设备 调用WMS获取空托出库生成任务失败!");
                        }
                        if (result.result[0] == 2)
                        {
@@ -4557,20 +4557,20 @@
                            string wmstaskno = "";
                            string traycode = "";
                            bool req = WMSHelper.WMSIn(plc.location, "", ref wmstaskno, ref traycode);
                            if (req) CMMLog.Debug($"四钴A设备 调用WMS获取满托入库生成任务成功!");//现在任务由WMS自己下发,AMS做拦截处理(查询ext1里面对应的任务类型,并更改任务类型)
                            else CMMLog.Debug($"四钴A设备 调用WMS获取满托入库生成任务失败!");
                            if (req) CMMLog.Debug($"电钴A设备 调用WMS获取满托入库生成任务成功!");//现在任务由WMS自己下发,AMS做拦截处理(查询ext1里面对应的任务类型,并更改任务类型)
                            else CMMLog.Debug($"电钴A设备 调用WMS获取满托入库生成任务失败!");
                        }
                    }
                }
                catch (Exception ex)
                {
                    CMMLog.Info($"四钴A设备 err:{ex.Message}");
                    CMMLog.Info($"电钴A设备 err:{ex.Message}");
                }
            }
        }
        /// <summary>
        /// 四钴C(钴板剪切机组)设备上满下空
        /// 电钴C(钴板剪切机组)设备上满下空
        /// </summary>
        /// <param name="a"></param>
        /// <exception cref="NotImplementedException"></exception>
@@ -4593,8 +4593,8 @@
                        {
                            //送满
                            bool req = WMSHelper.WMSOut(plc.location, "", "");
                            if (req) CMMLog.Debug($"四钴C设备 调用WMS获取满托出库生成任务成功!");//现在任务由WMS自己下发,AMS做拦截处理(查询ext1里面对应的任务类型,并更改任务类型)
                            else CMMLog.Debug($"四钴C设备 调用WMS获取满托出库生成任务失败!");
                            if (req) CMMLog.Debug($"电钴C设备 调用WMS获取满托出库生成任务成功!");//现在任务由WMS自己下发,AMS做拦截处理(查询ext1里面对应的任务类型,并更改任务类型)
                            else CMMLog.Debug($"电钴C设备 调用WMS获取满托出库生成任务失败!");
                        }
                        if (result.result[0] == 2)
                        {
@@ -4602,14 +4602,14 @@
                            string wmstaskno = "";
                            string traycode = "";
                            bool req = WMSHelper.WMSIn(plc.location, "", ref wmstaskno, ref traycode);
                            if (req) CMMLog.Debug($"四钴C设备 调用WMS获取空托入库生成任务成功!");//现在任务由WMS自己下发,AMS做拦截处理(查询ext1里面对应的任务类型,并更改任务类型)
                            else CMMLog.Debug($"四钴C设备 调用WMS获取空托入库生成任务失败!");
                            if (req) CMMLog.Debug($"电钴C设备 调用WMS获取空托入库生成任务成功!");//现在任务由WMS自己下发,AMS做拦截处理(查询ext1里面对应的任务类型,并更改任务类型)
                            else CMMLog.Debug($"电钴C设备 调用WMS获取空托入库生成任务失败!");
                        }
                    }
                }
                catch (Exception ex)
                {
                    CMMLog.Info($"四钴C设备 err:{ex.Message}");
                    CMMLog.Info($"电钴C设备 err:{ex.Message}");
                }
            }
        }
@@ -4785,7 +4785,7 @@
                }
                catch (Exception ex)
                {
                    CMMLog.Info($"四钴C设备 err:{ex.Message}");
                    CMMLog.Info($"电钴C设备 err:{ex.Message}");
                }
            }
        }
@@ -4834,13 +4834,28 @@
            public string Msg { get; set; }
            public LKData Data { get; set; }
            public int AffectedRows { get; set; }
            public bool Success { get; set; }
        }
        public class LKData
        {
            /// <summary>
            /// 批次号
            /// </summary>
            public string CN_S_LOT_NO { get; set; }
            /// <summary>
            /// 物料编码
            /// </summary>
            public string CN_S_MATERI_CODE { get; set; }
            /// <summary>
            /// 桶重量(单个桶重量*桶数量)
            /// </summary>
            public int CN_N_WEIGHT { get; set; }
            /// <summary>
            /// 生产日期
            /// </summary>
            public string CN_S_Data { get; set; }
            public int CN_S_EXT8 { get; set; }
        }
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/WMSHelper.cs
@@ -510,14 +510,14 @@
                            //将数据插入中间表
                            ERPService.senderpTask(time, startBit);
                        }
                        else if (ItemCode == "四钴打包下线")
                        else if (ItemCode == "电钴打包下线")
                        {
                            var DGinfoList = MongoDBSingleton.Instance.FindAll<DGPackingLineFullModel>("DGPackingLineFullModel");
                            if(DGinfoList.Count > 0){
                                var DGinfo = DGinfoList.OrderBy(a => a.createTime).First();
                                model.trayCode = DGinfo.trayCode;
                                //将数据插入中间表
                                ERPService.senderpTaskDG(startBit);
                                ERPService.senderpTaskDG(startBit, DGinfo.trayCode);
                            }
                        }
                    }
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/settings.xml
@@ -289,7 +289,7 @@
    </Connectingbits>
    <!--
        成品入库的接驳位-四钴
        成品入库的接驳位-电钴
        参数说明:
        locCode:货位编码
    -->
ams/Hanhe.iWCS.JingmenGEMTwoTCP/.vs/Hanhe.iWCS.JingmenGEMTwoTCP/v17/DocumentLayout.json
@@ -1,6 +1,6 @@
{
  "Version": 1,
  "WorkspaceRootPath": "C:\\software\\A-\u5DE5\u4F5C\\\u6E90\u7801\\GIT\\\u8346\u95E8\u683C\u6797\u7F8E\u5357\u533A\\ams\\Hanhe.iWCS.JingmenGEMTwoTCP\\",
  "WorkspaceRootPath": "C:\\software\\A-\u5DE5\u4F5C\\\u6E90\u7801\\WCS\\Hanhe.iWCS.3.3\\\u8346\u95E8\u683C\u6797\u7F8E\\Hanhe.iWCS.JingmenGEMTwoTCP\\",
  "Documents": [],
  "DocumentGroupContainers": [
    {
ams/Hanhe.iWCS.JingmenGEMTwoTCP/WCSServer.cs
@@ -136,6 +136,10 @@
            //10021-erp简单生产入库表反馈失败,重新反馈
            IEnentListen SendERPTaskCompleteFuncThree = DataAccess.CreateEnentListen();
            SendERPTaskCompleteFuncThree.EnentSubscribe(new TN_I_TASK_DTL_ACTION() { CN_N_ACTION_CODE = 10021 });
            //10022-反馈erp 插入简单生产入库表(电钴)
            IEnentListen SendERPTaskCompleteFuncDG = DataAccess.CreateEnentListen();
            SendERPTaskCompleteFuncDG.EnentSubscribe(new TN_I_TASK_DTL_ACTION() { CN_N_ACTION_CODE = 10021 });
        }
        public class YourReceiveFilter : IReceiveFilterFactory<BinaryRequestInfo> {