111
cjs
2025-07-03 0fc71730109bb5904ded8e1a14c945e45b289c50
111
8个文件已修改
204 ■■■■■ 已修改文件
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiHelper.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ERPService.cs 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/MESHelper.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/PLCControl.cs 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProtocolAnalysis.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/Settings.cs 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/WMSHelper.cs 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/settings.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ApiHelper.cs
@@ -773,6 +773,7 @@
        {
            public ObjectId _id { get; set; }
            public string trayCode { get; set; }
            public string isUse { get; set; } = "0";
            public DateTime createTime { get; set; }
        }
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ERPService.cs
@@ -2046,7 +2046,7 @@
            {
                //通过托盘号调用wms接口获取物料信息
                CMMLog.Info("SendErpTaskInfoTableDG 表 开始:" + startBit);
                CMMLog.Info("SendErpTaskInfoTableDG 表查询 开始:" + startBit);
                var url = hao.WebUrl + "GlmTrayItemSet";
                var erpInfo = MongoDBSingleton.Instance.FindOne<SendErpTaskInfoTableDG>(Query.EQ("Bit", startBit), "SendErpTaskInfoTableDG");
                if (erpInfo == null)
@@ -2072,34 +2072,42 @@
                        var wmsResponse = JsonConvert.DeserializeObject<LKInfoResModel>(feedback);
                        if (wmsResponse.Success == true)
                        {
                            materiCode = wmsResponse.Data.CN_S_MATERI_CODE;
                            materiCode = wmsResponse.Data.CN_S_ITEM_CODE;
                            lotCode = wmsResponse.Data.CN_S_LOT_NO;
                            totalWeight = wmsResponse.Data.CN_N_WEIGHT;
                            productTime = wmsResponse.Data.CN_S_Data;
                            totalWeight = (int)wmsResponse.Data.CN_F_QUANTITY * wmsResponse.Data.CN_N_CONUT;
                            productTime = wmsResponse.Data.CN_T_PRODUCTION_S;
                        }
                    }
                    CMMLog.Info("SendErpTaskInfoTableDG 表 1");
                    MongoDBSingleton.Instance.Insert<SendErpTaskInfoTableDG>(new SendErpTaskInfoTableDG
                    CMMLog.Info("SendErpTaskInfoTableDG表 1");
                    if (!string.IsNullOrEmpty(materiCode) && !string.IsNullOrEmpty(lotCode) && totalWeight != 0 && !string.IsNullOrEmpty(productTime))
                    {
                        Bit = startBit,
                        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"
                    }, "SendErpTaskInfoTable");
                        MongoDBSingleton.Instance.Insert<SendErpTaskInfoTableDG>(new SendErpTaskInfoTableDG
                        {
                            Bit = startBit,
                            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"
                        }, "SendErpTaskInfoTableDG");
                    }
                    else
                    {
                        CMMLog.Info($"SendErpTaskInfoTableDG:获取数据错误,materiCode:{materiCode},lotCode:{lotCode},totalWeight:{totalWeight},productTime:{productTime}");
                    }
                }
                CMMLog.Info("插入SendErpTaskInfoTable 表 结束");
                CMMLog.Info("插入SendErpTaskInfoTableDG表 结束");
            }
            catch (Exception ex)
            {
                CMMLog.Info("插入SendErpTaskInfoTable 表 err:" + ex.Message);
                CMMLog.Info("插入SendErpTaskInfoTableDG表 err:" + ex.Message);
            }
        }
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/MESHelper.cs
@@ -119,7 +119,7 @@
                            if (timeReq.ProductionDate1.Length == 8) productTime = productTime.Substring(0, 4) + "-" + productTime.Substring(4, 2) + "-" + productTime.Substring(6, 2);
                            CMMLog.Info("time 05");
                            var timeCuo = MongoDBSingleton.Instance.FindOne<TimeCuoInfoCom>(Query.EQ("packingMachineNumber", timeReq.packingMachineNumber_1), "TimeCuoInfoCom");
                            var timeCuo = MongoDBSingleton.Instance.FindOne<TimeCuoInfoCom>(Query.EQ("timeReq", timeReq.timeStamp), "TimeCuoInfoCom");
                            if (timeCuo == null)
                            {
                                MongoDBSingleton.Instance.Insert<TimeCuoInfoCom>(new TimeCuoInfoCom
@@ -171,7 +171,7 @@
                            }
                            else
                            {
                                var query = Query.EQ("packingMachineNumber", timeReq.packingMachineNumber_1);
                                var query = Query.EQ("timeReq", timeReq.timeStamp);
                                //UpdateBuilder update = Update.Set("isFold", timeReq.isFold).Set("realWeight", timeReq.realWeight_1 / 100).Set("totalWeight", timeReq.totalWeight)
                                //    .Set("batchNumber", timeReq.batchNumber).Set("productModel", timeReq.productModel).Set("needWeight", timeReq.needWeight_1).Set("bagNumber", timeReq.bagNumber_1).Set("isNeedTray", timeReq.isNeedTray)
                                //    .Set("totalCount", timeReq.totalCount).Set("timeStamp", timeReq.timeStamp).Set("photoURL", timeReq.photoURL).Set("ProductionDate", productTime)
@@ -183,7 +183,7 @@
                                UpdateBuilder update = Update.Set("isFold", timeReq.isFold).Set("realWeight", timeReq.realWeight_1 / 100).Set("totalWeight", timeReq.totalWeight)
                                    .Set("batchNumber", timeReq.batchNumber).Set("productModel", timeReq.productModel).Set("needWeight", timeReq.needWeight_1 / 100)
                                    .Set("bagNumber_1", timeReq.bagNumber_1).Set("bagNumber_2", timeReq.bagNumber_2).Set("bagNumber_3", timeReq.bagNumber_3).Set("bagNumber_4", timeReq.bagNumber_4)
                                    .Set("isNeedTray", timeReq.isNeedTray)
                                    .Set("isNeedTray", timeReq.isNeedTray).Set("packingMachineNumber", timeReq.packingMachineNumber_1)
                                    .Set("totalCount", timeReq.totalCount).Set("timeStamp", timeReq.timeStamp).Set("photoURL", timeReq.photoURL).Set("ProductionDate", productTime)
                                    .Set("materialCode", timeReq.materialCode).Set("materialName", timeReq.materialName).Set("measurementUnit", timeReq.measurementUnit)
                                    .Set("createOrganization", timeReq.createOrganization).Set("count", timeReq.count).Set("WarehouseCode", timeReq.WarehouseCode)
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/PLCControl.cs
@@ -3993,8 +3993,8 @@
                    {
                        CMMLog.Info("DGInWarehouse:" + JsonConvert.SerializeObject(locInfo));
                        string wmstaskno = "";
                        string trayCode = "";
                        bool req = WMSHelper.WMSIn(locCode, "电钴打包下线", ref wmstaskno, ref trayCode, "", "CKHJ");
                        string trayCode = locInfo.trayCode;
                        bool req = WMSHelper.WMSIn(locCode, "电钴打包下线", ref wmstaskno, ref trayCode, "", "DGCK");
                        if (req)
                        {
                            CMMLog.Info($"电钴接驳位入立库流程:WMS生成任务成功!");
@@ -4727,59 +4727,72 @@
                        host = plc.ip,
                        port = plc.port
                    });
                    CMMLog.Debug($"包装机满托下线:读取通道号为:{plc.readAddr},ip:{plc.ip},端口:{plc.port}");
                    CMMLog.Debug($"包装机满托下线值为:{result.result[0]}");
                    if (result != null && result.errCode == 0)
                    {
                        if (result.result[0] == 1)
                        {
                            //成品下线任务生成到接驳平台
                            string traycode = DateTime.Now.ToString("yyyy-MM-dd").Replace("-", "");
                            //可生成任务
                            var CBInfo = Settings.GetDGConnectingbitsList().Where(a => a.enable == 1).ToList();
                            if (CBInfo != null)
                            string traycode = "";
                            var DGinfoList = MongoDBSingleton.Instance.FindAll<DGPackingLineFullModel>("DGPackingLineFullModel");
                            if (DGinfoList.Count > 0)
                            {
                                //string timeStamp = timecuo.data.First().timeStamp.ToString();
                                string timeStamp = "";
                                foreach (var a in CBInfo)
                                var DGinfo = DGinfoList.Where(a => a.isUse == "0").OrderBy(a => a.createTime).First();
                                //将数据插入中间表
                                traycode = DGinfo.trayCode;
                            }
                            //可生成任务
                            CMMLog.Debug($"包装机满托下线:获取托盘号:{traycode}");
                            if (!string.IsNullOrEmpty(traycode))
                            {
                                var CBInfo = Settings.GetDGConnectingbitsList().Where(a => a.enable == 1).ToList();
                                if (CBInfo != null)
                                {
                                    if (!string.IsNullOrEmpty(a.locCode))
                                    foreach (var a in CBInfo)
                                    {
                                        //在中间表中查找点位
                                        var CBTable = MongoDBSingleton.Instance.FindOne<DGConnectingBits>(Query.EQ("Bit", a.locCode), "DGConnectingBits");
                                        if (CBTable != null)
                                        if (!string.IsNullOrEmpty(a.locCode))
                                        {
                                            if (string.IsNullOrEmpty(CBTable.trayCode))
                                            //在中间表中查找点位
                                            var CBTable = MongoDBSingleton.Instance.FindOne<DGConnectingBits>(Query.EQ("Bit", a.locCode), "DGConnectingBits");
                                            if (CBTable != null)
                                            {
                                                if (string.IsNullOrEmpty(CBTable.trayCode))
                                                {
                                                    //生成任务,并且将点位写入中间表
                                                    var amsResult = AMSHelper.CreateTask(DateTime.Now.Ticks.ToString(), plc.location, a.locCode, "包装机满托下线", 0, traycode);
                                                    if (amsResult.success)
                                                    {
                                                        CMMLog.Debug($"包装机满托下线:AMS调用API成功!");
                                                        MongoDBSingleton.Instance.Update<DGConnectingBits>(Query.EQ("Bit", a.locCode), Update.Set("trayCode", traycode), UpdateFlags.None);
                                                        MongoDBSingleton.Instance.Update<DGPackingLineFullModel>(Query.EQ("trayCode", traycode), Update.Set("isUse", "1"), UpdateFlags.None);
                                                        break;
                                                    }
                                                    else CMMLog.Debug($"包装机满托下线:AMS调用API失败,开始重新调用!");
                                                }
                                            }
                                            else
                                            {
                                                //生成任务,并且将点位写入中间表
                                                var amsResult = AMSHelper.CreateTask(DateTime.Now.Ticks.ToString(), plc.location, a.locCode, "包装机满托下线", 0, traycode);
                                                if (amsResult.success)
                                                {
                                                    CMMLog.Debug($"包装机满托下线:AMS调用API成功!");
                                                    MongoDBSingleton.Instance.Update<DGConnectingBits>(Query.EQ("Bit", a.locCode), Update.Set("trayCode", traycode).Set("timeCuo", timeStamp), UpdateFlags.None);
                                                    //打包下线任务生成成功,向中间表插入数据
                                                    MongoDBSingleton.Instance.Insert<DGConnectingBits>(new DGConnectingBits { Bit = a.locCode, trayCode = traycode, state = "0" });
                                                    MongoDBSingleton.Instance.Update<DGPackingLineFullModel>(Query.EQ("trayCode", traycode), Update.Set("isUse", "1"), UpdateFlags.None);
                                                    break;
                                                }
                                                else CMMLog.Debug($"包装机满托下线:AMS调用API失败,开始重新调用!");
                                            }
                                        }
                                        else
                                        {
                                            //生成任务,并且将点位写入中间表
                                            var amsResult = AMSHelper.CreateTask(DateTime.Now.Ticks.ToString(), plc.location, a.locCode, "包装机满托下线", 0, traycode);
                                            if (amsResult.success)
                                            {
                                                CMMLog.Debug($"包装机满托下线:AMS调用API成功!");
                                                //打包下线任务生成成功,向中间表插入数据
                                                MongoDBSingleton.Instance.Insert<DGConnectingBits>(new DGConnectingBits { Bit = a.locCode, trayCode = traycode, state = "0", timeCuo = timeStamp });
                                                break;
                                            }
                                            else CMMLog.Debug($"包装机满托下线:AMS调用API失败,开始重新调用!");
                                        }
                                        else CMMLog.Debug("打包下线口接驳位点位未配置");
                                    }
                                    else CMMLog.Debug("打包下线口接驳位点位未配置");
                                }
                                else CMMLog.Debug("打包下线口接驳位未配置");
                            }
                            else CMMLog.Debug("打包下线口接驳位未配置");
                        }
                    }
                }
@@ -4846,15 +4859,19 @@
            /// <summary>
            /// 物料编码
            /// </summary>
            public string CN_S_MATERI_CODE { get; set; }
            public string CN_S_ITEM_CODE { get; set; }
            /// <summary>
            /// 桶重量(单个桶重量*桶数量)
            /// 桶重量
            /// </summary>
            public int CN_N_WEIGHT { get; set; }
            public float CN_F_QUANTITY { get; set; }
            /// <summary>
            /// 桶数量
            /// </summary>
            public int CN_N_CONUT { get; set; }
            /// <summary>
            /// 生产日期
            /// </summary>
            public string CN_S_Data { get; set; }
            public string CN_T_PRODUCTION_S { get; set; }
            public int CN_S_EXT8 { get; set; }
        }
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProtocolAnalysis.cs
@@ -396,14 +396,15 @@
                        {
                            MongoDBSingleton.Instance.Update<ConnectingBits>(Query.EQ("Bit", mst.CN_S_START_BIT), Update.Set("trayCode", "").Set("state", "0"), UpdateFlags.None);
                        }
                        if (mst.CN_S_BUSS_TYPE == "电钴缓存架入立库")
                        {
                            MongoDBSingleton.Instance.Update<DGConnectingBits>(Query.EQ("Bit", mst.CN_S_START_BIT), Update.Set("trayCode", "").Set("state", "0"), UpdateFlags.None);
                            MongoDBSingleton.Instance.Remove<DGPackingLineFullModel>(Query.EQ("trayCode", mst.CN_S_BATCH_NO), RemoveFlags.None);
                        }
                        //if (mst.CN_S_BUSS_TYPE == "3楼缓存架入叠托") WMSHelper.ExecuteState(mst.CN_S_SOURCE_NO, action.CN_N_ACTION_CODE);
                        if (mst.CN_S_BUSS_TYPE == "3楼打包下线")
                        {
                            //打包下线取货完成,将数据写入中间表
                        }
                        if (mst.CN_S_BUSS_TYPE == "电钴缓存架入立库")
                        {
                            MongoDBSingleton.Instance.Remove<DGPackingLineFullModel>(Query.EQ("trayCode", mst.CN_S_BATCH_NO),RemoveFlags.None);
                        }
                    }
                    if (action.CN_N_ACTION_CODE == 6)
@@ -447,6 +448,12 @@
                            MongoDBSingleton.Instance.Update<ConnectingBits>(Query.EQ("Bit", mst.CN_S_END_BIT), Update.Set("state", "1"), UpdateFlags.None);
                        }
                        if (mst.CN_S_BUSS_TYPE == "包装机满托下线")
                        {
                            MongoDBSingleton.Instance.Update<DGConnectingBits>(Query.EQ("Bit", mst.CN_S_END_BIT), Update.Set("state", "1"), UpdateFlags.None);
                        }
                        if (mst.CN_S_BUSS_TYPE == "3楼成品出库")
                        {
                            //3楼成品出库收到6之后,终点货位数量减1,(注:6信号会发多次)
@@ -857,10 +864,6 @@
            /// 货位状态 0 无货  1 有货
            /// </summary>
            public string state { get; set; }
            /// <summary>
            /// 时间戳
            /// </summary>
            public string timeCuo { get; set; }
            /// <summary>
            /// 二段任务的终点货位
            /// </summary>
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/Settings.cs
@@ -499,31 +499,31 @@
        }
        #endregion
        #region SGConnectingbits
        private static string _SGConnectingbits = "";
        private static string SGConnectingbitsList
        #region DGConnectingbits
        private static string _DGConnectingbits = "";
        private static string DGConnectingbitsList
        {
            get
            {
                if (_SGConnectingbits == "")
                if (_DGConnectingbits == "")
                {
                    _SGConnectingbits = XmlHelper.GetElementValue("SGConnectingbits");
                    _DGConnectingbits = XmlHelper.GetElementValue("DGConnectingbits");
                }
                return _SGConnectingbits;
                return _DGConnectingbits;
            }
        }
        private static List<SGConnectingbitsModel> SGconnectingbits = new List<SGConnectingbitsModel>();
        public static List<SGConnectingbitsModel> GetDGConnectingbitsList()
        private static List<DGConnectingbitsModel> DGconnectingbits = new List<DGConnectingbitsModel>();
        public static List<DGConnectingbitsModel> GetDGConnectingbitsList()
        {
            if (SGconnectingbits.Count == 0 && SGConnectingbitsList != "")
            if (DGconnectingbits.Count == 0 && DGConnectingbitsList != "")
            {
                SGconnectingbits = Newtonsoft.Json.JsonConvert.DeserializeObject<List<SGConnectingbitsModel>>(SGConnectingbitsList);
                DGconnectingbits = Newtonsoft.Json.JsonConvert.DeserializeObject<List<DGConnectingbitsModel>>(DGConnectingbitsList);
            }
            return SGconnectingbits;
            return DGconnectingbits;
        }
        public class SGConnectingbitsModel
        public class DGConnectingbitsModel
        {
            public string locCode { get; set; }
            public int[] agvSite { get; set; }
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/WMSHelper.cs
@@ -404,7 +404,14 @@
                    CMMLog.Info($"WMSIn-{startBit}:ItemCode不为空,获取信息!111!");
                    CMMLog.Info($"{ItemCode}");
                    if (ItemCode == "time" || ItemCode == "拆盘变更" || ItemCode == "打包下线")
                    if (ItemCode == "电钴打包下线")
                    {
                        model.trayCode = trayCode;
                        model.endArea = endArea;
                        //将数据插入中间表
                        ERPService.senderpTaskDG(startBit, trayCode);
                    }
                    else if (ItemCode == "time" || ItemCode == "拆盘变更" || ItemCode == "打包下线")
                    {
                        CMMLog.Info($"{trayCode}");
                        var time = MongoDBSingleton.Instance.FindOne<TimeCuoInfoCom>(Query.EQ("timeStamp", int.Parse(trayCode)), "TimeCuoInfoCom");
@@ -509,16 +516,6 @@
                            });
                            //将数据插入中间表
                            ERPService.senderpTask(time, startBit);
                        }
                        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, DGinfo.trayCode);
                            }
                        }
                    }
                    else
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/settings.xml
@@ -293,13 +293,13 @@
        参数说明:
        locCode:货位编码
    -->
    <SGConnectingbits>
    <DGConnectingbits>
        <![CDATA[
        [
         {"locCode":"1","agvSite":[],"enable":1},
         {"locCode":"2","agvSite":[],"enable":1}
        ]]]>
    </SGConnectingbits>
    </DGConnectingbits>
    <!--
        第三方接口URL配置项