From 9aeaf9bd0461f19a5cde1095b292c1d2109c8a98 Mon Sep 17 00:00:00 2001
From: cjs <2216046164@qq.com>
Date: 星期四, 19 六月 2025 17:21:07 +0800
Subject: [PATCH] 111

---
 ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ERPService.cs |  245 +++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 235 insertions(+), 10 deletions(-)

diff --git a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ERPService.cs b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ERPService.cs
index 810c399..5a261a0 100644
--- a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ERPService.cs
+++ b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ERPService.cs
@@ -285,9 +285,84 @@
             /// </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";
         }
 
 
@@ -500,10 +575,10 @@
                     {
                         // 鍏堟牴鎹换鍔℃壒娆″彿瀛楁鑾峰彇鏃堕棿鎴充腑闂磋〃-TimeCuoInfoCom 鏁版嵁锛屽苟杩涜鍚庣画璋冪敤锛屽鐞嗘垚鍔熷垹闄ゆ椂闂存埑涓棿琛�TimeCuoInfoCom 鏁版嵁
 
-                        //int n = 0; //琛屽彿
+                        int n = 0; //琛屽彿
                         sendERPTaskInfoList.ForEach(a =>
                         {
-                            //n = n + 1;
+                            n = n + 1;
                             #region 璁$畻鍗曟嵁缂栧彿
                             string FBillNO = "";
                             int num = 0;
@@ -538,9 +613,148 @@
                             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<SendErpTaskInfoTable>(Query.EQ("_id", a._id), "SendErpTaskInfoTable", 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')";
+                                if(new SqlHelper<object>().ExecuteSql(sql, false))
+                                {
+                                    //鎻掑叆鎴愬姛 娓呴櫎涓棿琛�+                                    MongoDBSingleton.Instance.Remove<SendErpTaskInfoTable>(Query.EQ("_id", a._id), "SendErpTaskInfoTable", 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))
+                            if (new SqlHelper<object>().ExecuteSql(sql, false))
                             {
                                 #region 鍙嶉淇℃伅缁檓es 瀵规帴鏂囨。 https://365.kdocs.cn/l/cltzoEaznLco
                                 bool result = sendMes(a, true);
@@ -572,16 +786,25 @@
                                 #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);
+                                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)
+            catch (Exception ex)
             {
-                CMMLog.Info("SendERPTaskCompleteFunc err:"+ex.Message);
+                CMMLog.Info("SendERPTaskCompleteFunc err:" + ex.Message);
             }
         }
 
@@ -1713,6 +1936,8 @@
 
         }
 
+        
+
         public class packageInfoModel
         {
             public ObjectId _id { get; set; }

--
Gitblit v1.9.1