111
cjs
2025-06-20 ad3c446720a996d3bad0e53d1c2bc448753c5e1c
111
6个文件已修改
286 ■■■■■ 已修改文件
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ERPService.cs 241 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/EnentListen.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProtocolAnalysis.cs 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/WMSHelper.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ams/Hanhe.iWCS.JingmenGEMTwoTCP/.vs/Hanhe.iWCS.JingmenGEMTwoTCP/v17/DocumentLayout.backup.json 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ams/Hanhe.iWCS.JingmenGEMTwoTCP/.vs/Hanhe.iWCS.JingmenGEMTwoTCP/v17/DocumentLayout.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ERPService.cs
@@ -190,13 +190,26 @@
        public static void SendERPTaskInfo(TN_I_TASK_MST mst)
        {
            CMMLog.Info($"SendERPTaskInfo 插入数据 开始,任务号:{mst.CN_S_SOURCE_NO}");
            var sendERPTaskInfo = MongoDBSingleton.Instance.FindOne<SendErpTaskInfoTable>(Query.EQ("taskNo", mst.CN_S_SOURCE_NO), "SendErpTaskInfoTable");
            if (sendERPTaskInfo != null)
            if (mst.CN_S_BUSS_TYPE.Contains("电钴"))
            {
                CMMLog.Info($"SendERPTaskInfo 插入数据,任务号:{mst.CN_S_SOURCE_NO}");
                MongoDBSingleton.Instance.Update<SendErpTaskInfoTable>(Query.EQ("taskNo", mst.CN_S_SOURCE_NO), Update.Set("isFinish", "Y"), "SendErpTaskInfoTable", UpdateFlags.None);
                var sendERPTaskInfo = MongoDBSingleton.Instance.FindOne<SendErpTaskInfoTableDG>(Query.EQ("taskNo", mst.CN_S_SOURCE_NO), "SendErpTaskInfoTableDG");
                if (sendERPTaskInfo != null)
                {
                    CMMLog.Info($"SendERPTaskInfo 插入数据,任务号:{mst.CN_S_SOURCE_NO}");
                    MongoDBSingleton.Instance.Update<SendErpTaskInfoTableDG>(Query.EQ("taskNo", mst.CN_S_SOURCE_NO), Update.Set("isFinish", "Y"), "SendErpTaskInfoTableDG", UpdateFlags.None);
                }
                else CMMLog.Error($"SendERPTaskInfo Error:当前任务号数据存在,不允许插入 SendErpTaskInfoTableDG 记录表。任务号:{mst.CN_S_SOURCE_NO}");
            }
            else CMMLog.Error($"SendERPTaskInfo Error:当前任务号数据存在,不允许插入 SendErpTaskInfoTable 记录表。任务号:{mst.CN_S_SOURCE_NO}");
            else
            {
                var sendERPTaskInfo = MongoDBSingleton.Instance.FindOne<SendErpTaskInfoTable>(Query.EQ("taskNo", mst.CN_S_SOURCE_NO), "SendErpTaskInfoTable");
                if (sendERPTaskInfo != null)
                {
                    CMMLog.Info($"SendERPTaskInfo 插入数据,任务号:{mst.CN_S_SOURCE_NO}");
                    MongoDBSingleton.Instance.Update<SendErpTaskInfoTable>(Query.EQ("taskNo", mst.CN_S_SOURCE_NO), Update.Set("isFinish", "Y"), "SendErpTaskInfoTable", UpdateFlags.None);
                }
                else CMMLog.Error($"SendERPTaskInfo Error:当前任务号数据存在,不允许插入 SendErpTaskInfoTable 记录表。任务号:{mst.CN_S_SOURCE_NO}");
            }
        }
        public class SendErpTaskInfoTable
@@ -365,7 +378,96 @@
            public string needReport { get; set; } = "0";
        }
        public class SendErpTaskInfoTableDG
        {
            public ObjectId _id { get; set; }
            /// <summary>
            /// 任务号
            /// </summary>
            public string taskNo { get; set; } = "";
            /// <summary>
            /// 点位
            /// </summary>
            public string Bit { get; set; }
            /// <summary>
            /// 包装机号
            /// </summary>
            public string packingMachineNumber { get; set; }
            /// <summary>
            /// 袋号1
            /// </summary>
            public string bagNumber1 { get; set; }
            /// <summary>
            /// 袋号2
            /// </summary>
            public string bagNumber2 { get; set; }
            /// <summary>
            /// 袋号3
            /// </summary>
            public string bagNumber3 { get; set; }
            /// <summary>
            /// 袋号4
            /// </summary>
            public string bagNumber4 { get; set; }
            /// <summary>
            /// 物料编码(唯一)
            /// </summary>
            public string materiCode { get; set; }
            /// <summary>
            /// 物料名称
            /// </summary>
            public string materiName { get; set; }
            /// <summary>
            /// 物料规格
            /// </summary>
            public string materialSpec { get; set; }
            /// <summary>
            /// 总总量
            /// </summary>
            public int totalWeight { get; set; }
            /// <summary>
            /// 批次号
            /// </summary>
            public string lotCode { get; set; }
            /// <summary>
            /// 时间戳-对应任务数据 CN_S_BATCH_NO 字段值
            /// </summary>
            public string timeStamp { get; set; }
            /// <summary>
            /// 生产日期
            /// </summary>
            public DateTime productTime { get; set; }
            /// <summary>
            /// 失效日期
            /// </summary>
            public DateTime invalidationTime { get; set; }
            /// <summary>
            /// 是否完成
            /// </summary>
            public string isFinish { get; set; } = "N";
            public DateTime dateTime { get; set; }
            //变更注释
            /// <summary>
            /// 生产订单编号
            /// </summary>
            public string orderCode { get; set; }
            /// <summary>
            /// 需求总重量
            /// </summary>
            public int totalNeedWeight { get; set; }
            /// <summary>
            /// 叠包后总重量(净重)
            /// </summary>
            public int netWeight { get; set; }
            /// <summary>
            /// 分录id
            /// </summary>
            public int FEntryID { get; set; }
            /// <summary>
            /// 反馈mes  1- 无需反馈,0-未反馈
            /// </summary>
            public string mesSucess { get; set; }
        }
        public class SendMESTaskInfoTable
        {
            public ObjectId _id { get; set; }
@@ -647,9 +749,6 @@
                                        });
                                    }
                                    #endregion
                                    //插入成功 清除中间表
                                    MongoDBSingleton.Instance.Remove<SendErpTaskInfoTable>(Query.EQ("_id", a._id), "SendErpTaskInfoTable", RemoveFlags.None);
                                }
                                else
                                {
@@ -672,8 +771,6 @@
                                string sql = $"INSERT INTO T_JY_SPInStockADD (FBillNO,FStockOrgNumber,FPrdOrgNumber,FSeq,FMaterialNumber,Flot,FInStockType,FMustQty,FStockNumber,FWorkShopNumber,FStockStatus,FProduceDate ,FExpiryDate,FTaskNumber,FCountEntry,FOpStatus) VALUES ('{FBillNO}','02','02','{n}','{a.materiCode}','{a.lotCode}','1','{a.totalWeight}','CK020','BM000161','1','{a.productTime}','{a.invalidationTime}','{a.taskNo}',{sendERPTaskInfoList.Count},'0')";
                                if(new SqlHelper<object>().ExecuteSql(sql, false))
                                {
                                    //插入成功 清除中间表
                                    MongoDBSingleton.Instance.Remove<SendErpTaskInfoTable>(Query.EQ("_id", a._id), "SendErpTaskInfoTable", RemoveFlags.None);
                                }
                                else
                                {
@@ -690,6 +787,8 @@
                                    }, "SendErpTaskInfoTableBak");
                                }
                            }
                            //插入成功 清除中间表
                            MongoDBSingleton.Instance.Remove<SendErpTaskInfoTable>(Query.EQ("_id", a._id), "SendErpTaskInfoTable", RemoveFlags.None);
                            MongoDBSingleton.Instance.Remove<TimeCuoInfoCom>(Query.EQ("timeStamp", int.Parse(a.timeStamp)), "TimeCuoInfoCom", RemoveFlags.None);
                        });
                    }
@@ -1936,7 +2035,125 @@
        }
        internal static void senderpTaskDG(string startBit)
        {
            try
            {
                //通过托盘号调用wms接口获取物料信息
                CMMLog.Info("插入SendErpTaskInfoTable 表 开始:" + startBit);
                var erpInfo = MongoDBSingleton.Instance.FindOne<SendErpTaskInfoTable>(Query.EQ("Bit", startBit), "SendErpTaskInfoTable");
                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());
                    CMMLog.Info("插入SendErpTaskInfoTable 表 1");
                    MongoDBSingleton.Instance.Insert<SendErpTaskInfoTable>(new SendErpTaskInfoTable
                    {
                        Bit = startBit,
                        //materiCode = time.materialCode,
                        //lotCode = time.batchNumber,
                        //productTime = Convert.ToDateTime(time.ProductionDate).AddHours(8),
                        //invalidationTime = Convert.ToDateTime(time.ProductionDate).AddHours(8).AddDays(365),
                        dateTime = DateTime.Now.AddHours(8),
                        //变更注释
                        mesSucess = "0"
                    }, "SendErpTaskInfoTable");
                }
                CMMLog.Info("插入SendErpTaskInfoTable 表 结束");
            }
            catch (Exception ex)
            {
                CMMLog.Info("插入SendErpTaskInfoTable 表 err:" + ex.Message);
            }
        }
        internal static void SendERPTaskCompleteFuncDG()
        {
            try
            {
                var db = new SqlHelper<object>().GetInstance();
                var sendERPTaskInfoList = MongoDBSingleton.Instance.Find<SendErpTaskInfoTableDG>(Query.And(Query.EQ("isFinish", "Y"), Query.EQ("mesSucess", "0")), "SendErpTaskInfoTableDG");
                if (sendERPTaskInfoList.Count > 0)
                {
                    var timeInfo = sendERPTaskInfoList.OrderBy(a => a.dateTime).First();
                    CMMLog.Info($"SendERPTaskCompleteFunc:{sendERPTaskInfoList.Count}");
                    CMMLog.Info($"SendERPTaskCompleteFunc:{timeInfo.dateTime.AddHours(1) < DateTime.Now}");
                    if (sendERPTaskInfoList.Count == 5 || timeInfo.dateTime.AddHours(1) < DateTime.Now)
                    {
                        // 先根据任务批次号字段获取时间戳中间表-TimeCuoInfoCom 数据,并进行后续调用,处理成功删除时间戳中间表-TimeCuoInfoCom 数据
                        int n = 0; //行号
                        sendERPTaskInfoList.ForEach(a =>
                        {
                            n = n + 1;
                            #region 计算单据编号
                            string FBillNO = "";
                            int num = 0;
                            string S_NUM = "";
                            string time = DateTime.Now.ToString("yyMMdd");
                            CMMLog.Info($"SendERPTaskCompleteFunc time:{time}");
                            var midInfo = db.Queryable<ADDMid>().Where(b => b.time == time).First();
                            if (midInfo != null)
                            {
                                midInfo.num = midInfo.num + 1;
                                num = midInfo.num;
                                db.Updateable(midInfo).UpdateColumns(b => new { b.num }).ExecuteCommand();
                            }
                            else
                            {
                                num = 1;
                                midInfo = new ADDMid
                                {
                                    time = DateTime.Now.ToString("yyMMdd"),
                                    num = 1
                                };
                                db.Insertable(midInfo).ExecuteCommand();
                            }
                            CMMLog.Info($"SendERPTaskCompleteFunc num: {num}");
                            for (int i = num.ToString().Length + 1; i <= 4; i++)
                            {
                                S_NUM = S_NUM + "0";
                            }
                            FBillNO = "ARKD" + DateTime.Now.ToString("yyMMdd") + S_NUM + num.ToString();
                            CMMLog.Info($"SendERPTaskCompleteFunc: {FBillNO}");
                            #endregion
                            CMMLog.Info($"SendERPTaskCompleteFunc:INSERT INTO T_JY_SPInStockADD (FBillNO,FStockOrgNumber,FPrdOrgNumber,FSeq,FMaterialNumber,Flot,FInStockType,FMustQty,FStockNumber,FWorkShopNumber,FStockStatus,FProduceDate ,FExpiryDate,FTaskNumber,FCountEntry,FOpStatus) VALUES ('{FBillNO}','02','02','{n}','{a.materiCode}','{a.lotCode}','1','{a.totalWeight}','CK020','G0200400','1','{a.productTime}','{a.invalidationTime}','{a.taskNo}',{sendERPTaskInfoList.Count},'0')");
                            string sql = $"INSERT INTO T_JY_SPInStockADD (FBillNO,FStockOrgNumber,FPrdOrgNumber,FSeq,FMaterialNumber,Flot,FInStockType,FMustQty,FStockNumber,FWorkShopNumber,FStockStatus,FProduceDate ,FExpiryDate,FTaskNumber,FCountEntry,FOpStatus) VALUES ('{FBillNO}','02','02','{n}','{a.materiCode}','{a.lotCode}','1','{a.totalWeight}','CK020','G0200400','1','{a.productTime}','{a.invalidationTime}','{a.taskNo}',{sendERPTaskInfoList.Count},'0')";
                            if (new SqlHelper<object>().ExecuteSql(sql, false))
                            {
                                //插入成功 清除中间表
                                MongoDBSingleton.Instance.Remove<SendErpTaskInfoTableDG>(Query.EQ("_id", a._id), "SendErpTaskInfoTableDG", RemoveFlags.None);
                            }
                            else
                            {
                                //插入失败,将数据插入新表,人工手动处理,重新插入
                                //MongoDBSingleton.Instance.Insert<SendErpTaskInfoTableBak>(new SendErpTaskInfoTableBak
                                //{
                                //    orderCode = a.orderCode,
                                //    FEntryID = a.FEntryID,
                                //    totalNeedWeight = a.totalNeedWeight,
                                //    lotCode = a.lotCode,
                                //    productTime = a.productTime,
                                //    invalidationTime = a.invalidationTime,
                                //    taskNo = a.taskNo
                                //}, "SendErpTaskInfoTableBak");
                            }
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                CMMLog.Info("SendERPTaskCompleteFunc err:" + ex.Message);
            }
        }
        public class packageInfoModel
        {
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/EnentListen.cs
@@ -376,7 +376,7 @@
            }
            #endregion
            #region 四钴
            #region 电钴
            #region 10017-A口
            if (currActionModel.CN_N_ACTION_CODE == 10017)
@@ -436,6 +436,13 @@
            }
            #endregion
            #region 10022-反馈erp 插入简单生产入库表
            if (currActionModel.CN_N_ACTION_CODE == 10022)
            {
                ERPService.SendERPTaskCompleteFuncDG();
            }
            #endregion
            #endregion
            return bResult;
        }
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProtocolAnalysis.cs
@@ -237,13 +237,25 @@
                    {
                        AMSHelper.SetStatus(action.CN_S_TASK_NO, 1, "1", action.CN_S_DEVICE_CODE, true);
                        WMSHelper.ExecuteState(mst.CN_S_SOURCE_NO, action.CN_N_ACTION_CODE);
                        if (mst.CN_S_BUSS_TYPE == "缓存架入立库")
                        if (mst.CN_S_BUSS_TYPE.Contains("缓存架入立库"))
                        {
                            //将任务号插入到中间表
                            var erpInfo = MongoDBSingleton.Instance.FindOne<SendErpTaskInfoTable>(Query.And(Query.EQ("Bit", mst.CN_S_START_BIT), Query.EQ("taskNo", "")), "SendErpTaskInfoTable");
                            if (erpInfo != null)
                            if (mst.CN_S_BUSS_TYPE.Contains("电钴"))
                            {
                                MongoDBSingleton.Instance.Update<SendErpTaskInfoTable>(Query.And(Query.EQ("Bit", mst.CN_S_START_BIT), Query.EQ("taskNo", "")), Update.Set("taskNo", mst.CN_S_SOURCE_NO), UpdateFlags.None);
                                //将任务号插入到中间表
                                var erpInfo = MongoDBSingleton.Instance.FindOne<SendErpTaskInfoTableDG>(Query.And(Query.EQ("Bit", mst.CN_S_START_BIT), Query.EQ("taskNo", "")), "SendErpTaskInfoTableDG");
                                if (erpInfo != null)
                                {
                                    MongoDBSingleton.Instance.Update<SendErpTaskInfoTableDG>(Query.And(Query.EQ("Bit", mst.CN_S_START_BIT), Query.EQ("taskNo", "")), Update.Set("taskNo", mst.CN_S_SOURCE_NO), UpdateFlags.None);
                                }
                            }
                            else
                            {
                                //将任务号插入到中间表
                                var erpInfo = MongoDBSingleton.Instance.FindOne<SendErpTaskInfoTable>(Query.And(Query.EQ("Bit", mst.CN_S_START_BIT), Query.EQ("taskNo", "")), "SendErpTaskInfoTable");
                                if (erpInfo != null)
                                {
                                    MongoDBSingleton.Instance.Update<SendErpTaskInfoTable>(Query.And(Query.EQ("Bit", mst.CN_S_START_BIT), Query.EQ("taskNo", "")), Update.Set("taskNo", mst.CN_S_SOURCE_NO), UpdateFlags.None);
                                }
                            }
                        }
                        if (mst.CN_S_BUSS_TYPE == "老物料缓存架入立库")
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/WMSHelper.cs
@@ -516,11 +516,9 @@
                            if(DGinfoList.Count > 0){
                                var DGinfo = DGinfoList.OrderBy(a => a.createTime).First();
                                model.trayCode = DGinfo.trayCode;
                                //model.endArea = endArea;
                                //将数据插入中间表
                                ERPService.senderpTaskDG(startBit);
                            }
                            //将数据插入中间表
                            //ERPService.senderpTask(time, startBit);
                        }
                    }
                    else
ams/Hanhe.iWCS.JingmenGEMTwoTCP/.vs/Hanhe.iWCS.JingmenGEMTwoTCP/v17/DocumentLayout.backup.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": [
    {
@@ -34,6 +34,10 @@
            {
              "$type": "Bookmark",
              "Name": "ST:129:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
            },
            {
              "$type": "Bookmark",
              "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
            }
          ]
        },
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\\WCS\\Hanhe.iWCS.3.3\\\u8346\u95E8\u683C\u6797\u7F8E\\Hanhe.iWCS.JingmenGEMTwoTCP\\",
  "WorkspaceRootPath": "C:\\software\\A-\u5DE5\u4F5C\\\u6E90\u7801\\GIT\\\u8346\u95E8\u683C\u6797\u7F8E\u5357\u533A\\ams\\Hanhe.iWCS.JingmenGEMTwoTCP\\",
  "Documents": [],
  "DocumentGroupContainers": [
    {