From 6fe4792f1f71389400d075b57fb613d7815b6783 Mon Sep 17 00:00:00 2001 From: cjs <2216046164@qq.com> Date: 星期四, 10 七月 2025 17:21:51 +0800 Subject: [PATCH] 111 --- ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ERPService.cs | 504 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 488 insertions(+), 16 deletions(-) diff --git a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ERPService.cs b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ERPService.cs index aa98c83..0b21cea 100644 --- a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ERPService.cs +++ b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ERPService.cs @@ -1,4 +1,5 @@ 锘縰sing 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鐧诲綍鎺ュ彛浼犺緭淇℃伅 @@ -190,13 +195,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 @@ -285,12 +303,176 @@ /// </summary> public int FEntryID { get; set; } /// <summary> - /// 鍙嶉mes 1-鍙嶉澶辫触锛屾寔缁弽棣堬紝0-鏈弽棣�+ /// 鍙嶉mes 1- 鏃犻渶鍙嶉锛�-鏈弽棣� /// </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-闇�涓婃姤锛�-涓嶉渶瑕佷笂鎶�+ /// </summary> + 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- 鏃犻渶鍙嶉锛�-鏈弽棣�+ /// </summary> + public string mesSucess { get; set; } + } public class SendMESTaskInfoTable { public ObjectId _id { get; set; } @@ -572,23 +754,47 @@ }); } #endregion - - //鎻掑叆鎴愬姛 娓呴櫎涓棿琛�- 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); - - //鎻掑叆鎴愬姛 娓呴櫎涓棿琛�- 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); + if(new SqlHelper<object>().ExecuteSql(sql, false)) + { + } + 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<SendErpTaskInfoTable>(Query.EQ("_id", a._id), "SendErpTaskInfoTable", RemoveFlags.None); + MongoDBSingleton.Instance.Remove<TimeCuoInfoCom>(Query.EQ("timeStamp", int.Parse(a.timeStamp)), "TimeCuoInfoCom", RemoveFlags.None); }); } } @@ -596,6 +802,113 @@ 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 鍙嶉淇℃伅缁檓es 瀵规帴鏂囨。 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) + { + CMMLog.Info("SendERPTaskCompleteFunc err:" + ex.Message); } } @@ -1727,6 +2040,165 @@ } + internal static bool senderpTaskDG(string startBit, string trayCode) + { + try + { + //閫氳繃鎵樼洏鍙疯皟鐢╳ms鎺ュ彛鑾峰彇鐗╂枡淇℃伅 + + 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 = ""; + + //鏍规嵁鎵樼洏鍙疯幏鍙栧叆搴撶墿鏂欎俊鎭�+ CJWareNum model = new CJWareNum + { + TrayCode = trayCode + }; + + string msgData = JsonConvert.SerializeObject(model); + + var feedback = helper.WebPost(url, msgData).Replace(@"\", "").Trim(); + CMMLog.Info($"SendErpTaskInfoTableDG:銆愯皟鐢╳ms鑾峰彇鐗╂枡淇℃伅銆�鎺ユ敹鏁版嵁锛� + feedback); + if (!string.IsNullOrEmpty(feedback)) + { + var wmsResponse = JsonConvert.DeserializeObject<LKInfoResModel>(feedback); + if (wmsResponse.Success == true) + { + materiCode = wmsResponse.Data.CN_S_ITEM_CODE; + lotCode = wmsResponse.Data.CN_S_LOT_NO; + totalWeight = (int)wmsResponse.Data.CN_F_QUANTITY * wmsResponse.Data.CN_N_CONUT; + productTime = wmsResponse.Data.CN_T_PRODUCTION_S; + } + } + + CMMLog.Info("SendErpTaskInfoTableDG琛�1"); + if (!string.IsNullOrEmpty(materiCode) && !string.IsNullOrEmpty(lotCode) && totalWeight != 0 && !string.IsNullOrEmpty(productTime)) + { + 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"); + return true; + } + else + { + CMMLog.Info($"SendErpTaskInfoTableDG:鑾峰彇鏁版嵁閿欒锛宮ateriCode锛歿materiCode},lotCode:{lotCode},totalWeight:{totalWeight},productTime:{productTime}"); + } + + } + + CMMLog.Info("鎻掑叆SendErpTaskInfoTableDG琛�缁撴潫"); + } + catch (Exception ex) + { + + CMMLog.Info("鎻掑叆SendErpTaskInfoTableDG琛�err:" + ex.Message); + } + + return false; + } + + 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 { public ObjectId _id { get; set; } -- Gitblit v1.9.1