111
cjs
2025-06-19 9aeaf9bd0461f19a5cde1095b292c1d2109c8a98
111
3个文件已修改
238 ■■■■■ 已修改文件
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/.vs/Hanhe.iWCS.JingmenGEMTwoProtocol/v17/DocumentLayout.backup.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ERPService.cs 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/EnentListen.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/.vs/Hanhe.iWCS.JingmenGEMTwoProtocol/v17/DocumentLayout.backup.json
@@ -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.JingmenGEMTwoProtocol/ERPService.cs
@@ -285,9 +285,84 @@
            /// </summary>
            public int FEntryID { get; set; }
            /// <summary>
            /// 反馈mes  1-反馈失败,持续反馈,0-未反馈
            /// 反馈mes  1- 无需反馈,0-未反馈
            /// </summary>
            public string mesSucess { get; set; }
        }
        public class SendErpTaskInfoTableBak
        {
            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>
            /// 物料编码(唯一)
            /// </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>
            /// 是否上报 1-需要上报,0-不需要上报
            /// </summary>
            public string needReport { get; set; } = "0";
        }
@@ -575,22 +650,156 @@
                                    //插入成功 清除中间表
                                    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);
                                }
                                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");
                                }
                            }
                            else
                            {
                                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','BM000161','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','BM000161','1','{a.productTime}','{a.invalidationTime}','{a.taskNo}',{sendERPTaskInfoList.Count},'0')";
                                new SqlHelper<object>().ExecuteSql(sql, false);
                                if(new SqlHelper<object>().ExecuteSql(sql, false))
                                {
                                //插入成功 清除中间表
                                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);
                            }
                                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");
                                }
                            }
                            MongoDBSingleton.Instance.Remove<TimeCuoInfoCom>(Query.EQ("timeStamp", int.Parse(a.timeStamp)), "TimeCuoInfoCom", RemoveFlags.None);
                        });
                    }
                }
            }
            catch(Exception ex)
            {
                CMMLog.Info("SendERPTaskCompleteFunc err:"+ex.Message);
            }
        }
        internal static void SendERPTaskCompleteFuncThree()
        {
            try
            {
                var db = new SqlHelper<object>().GetInstance();
                var sendERPTaskInfoList = MongoDBSingleton.Instance.Find<SendErpTaskInfoTableBak>(Query.And(Query.EQ("needReport", "1")), "SendErpTaskInfoTableBak");
                //var sendERPTaskInfoList = MongoDBSingleton.Instance.Find<SendErpTaskInfoTable>(Query.EQ("isFinish", "Y"), "SendErpTaskInfoTable");
                if (sendERPTaskInfoList.Count > 0)
                {
                    CMMLog.Info($"SendERPTaskCompleteFunc:{sendERPTaskInfoList.Count}");
                    // 先根据任务批次号字段获取时间戳中间表-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
                        if (!string.IsNullOrEmpty(a.orderCode) && a.orderCode.Length >= 2 && a.orderCode.Substring(0, 2) == "MO")
                        {
                            CMMLog.Info($"SendERPTaskCompleteFunc:INSERT INTO T_JY_PRDINSTOCKOP (FBillNO,FSourceBillNo,FEntryID,FSEQ,FQTY,FStockNumber,FLot,FProduceDate ,FExpiryDate,FTaskNumber,FCountEntry,FOpStatus) VALUES ('{FBillNO}','{a.orderCode}','{a.FEntryID}','1','{a.totalNeedWeight}','CK020','{a.lotCode}','{a.productTime}','{a.invalidationTime}','{a.taskNo}','1','0')");
                            string sql = $"INSERT INTO T_JY_PRDINSTOCKOP (FBillNO,FSourceBillNo,FEntryID,FSEQ,FQTY,FStockNumber,FLot,FProduceDate ,FExpiryDate,FTaskNumber,FCountEntry,FOpStatus) VALUES ('{FBillNO}','{a.orderCode}','{a.FEntryID}','1','{a.totalNeedWeight}','CK020','{a.lotCode}','{a.productTime}','{a.invalidationTime}','{a.taskNo}','1','0')";
                            if (new SqlHelper<object>().ExecuteSql(sql, false))
                            {
                                #region 反馈信息给mes 对接文档 https://365.kdocs.cn/l/cltzoEaznLco
                                bool result = sendMes(a, true);
                                if (!result)
                                {
                                    //将数据存入中间表,重新发送
                                    MongoDBSingleton.Instance.Insert<SendMESTaskInfoTable>(new SendMESTaskInfoTable
                                    {
                                        taskNo = a.taskNo,
                                        Bit = a.Bit,
                                        packingMachineNumber = a.packingMachineNumber,
                                        materiCode = a.materiCode,
                                        materiName = a.materiName,
                                        materialSpec = a.materialSpec,
                                        totalWeight = a.totalWeight,
                                        lotCode = a.lotCode,
                                        timeStamp = a.timeStamp,
                                        productTime = a.productTime,
                                        invalidationTime = a.invalidationTime,
                                        isFinish = a.isFinish,
                                        dateTime = a.dateTime,
                                        orderCode = a.orderCode,
                                        totalNeedWeight = a.totalNeedWeight,
                                        netWeight = a.netWeight,
                                        FEntryID = a.FEntryID
                                    });
                                }
                                #endregion
                                //插入成功 清除中间表
                                MongoDBSingleton.Instance.Remove<SendErpTaskInfoTableBak>(Query.EQ("_id", a._id), "SendErpTaskInfoTableBak", RemoveFlags.None);
                            }
                        }
                        else
                        {
                            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','BM000161','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','BM000161','1','{a.productTime}','{a.invalidationTime}','{a.taskNo}',{sendERPTaskInfoList.Count},'0')";
                            if (new SqlHelper<object>().ExecuteSql(sql, false))
                            {
                                //插入成功 清除中间表
                                MongoDBSingleton.Instance.Remove<SendErpTaskInfoTableBak>(Query.EQ("_id", a._id), "SendErpTaskInfoTableBak", RemoveFlags.None);
                            }
                        }
                    });
                }
            }
            catch(Exception ex)
@@ -1727,6 +1936,8 @@
        }
        public class packageInfoModel
        {
            public ObjectId _id { get; set; }
ams/Hanhe.iWCS.JingmenGEMTwoProtocol/EnentListen.cs
@@ -369,6 +369,13 @@
            }
            #endregion
            #region 10021-erp简单生产入库表反馈失败,重新反馈
            if (currActionModel.CN_N_ACTION_CODE == 10021)
            {
                ERPService.SendERPTaskCompleteFuncThree();
            }
            #endregion
            #region 四钴
            #region 10017-A口
@@ -414,8 +421,8 @@
            }
            #endregion
            #region 10019-电钴接驳位入立库
            if (currActionModel.CN_N_ACTION_CODE == 10019)
            #region 10020-电钴接驳位入立库
            if (currActionModel.CN_N_ACTION_CODE == 10020)
            {
                var conInfo = Settings.GetDGConnectingbitsList().Where(a => a.enable == 1).ToList();
                if (conInfo != null)