From b3a5b4165d585463af639c35931d6c2962a795a0 Mon Sep 17 00:00:00 2001
From: yhj <1836460075@qq.com>
Date: 星期五, 15 八月 2025 17:59:14 +0800
Subject: [PATCH] 即时库存

---
 JF_DataexchangeServer/DataexchangeServer/HandleData/AE_MES_ERP.cs |  132 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 132 insertions(+), 0 deletions(-)

diff --git a/JF_DataexchangeServer/DataexchangeServer/HandleData/AE_MES_ERP.cs b/JF_DataexchangeServer/DataexchangeServer/HandleData/AE_MES_ERP.cs
index 1124bac..d65b719 100644
--- a/JF_DataexchangeServer/DataexchangeServer/HandleData/AE_MES_ERP.cs
+++ b/JF_DataexchangeServer/DataexchangeServer/HandleData/AE_MES_ERP.cs
@@ -86,6 +86,7 @@
                 //鍗虫椂搴撳瓨
                 case "TB_ERPTOMES_JSKC1":
                     result = TB_ERPTOMES_JSKC1(inputds, operatype, ref msg);
+                  //  result = TB_ERPTOMES_JSKC(inputds, operatype, ref msg);
                     break;
 
                 //9.ERPBOMA(鍚屾鎺ㄩ��)
@@ -3016,6 +3017,24 @@
                                     DataRow dr = (DataRow)obj2;
                                     //2025-01-22 淇敼瀹℃牳瀛楁
                                     string FDOCUMENTSTATUS = dr["FDOCUMENTSTATUS"].ToString();
+                                    //20250724 濡傛灉mes鏈夊彂璐ц褰曪紝閭d箞涓嶈兘鏇存柊
+                           
+                                    string sql2 = string.Format("SELECT COUNT(1) FROM MES_INV_ITEM_OUTS WHERE TASK_NO = '{0}'", dr["FBillNo"]);
+                                    string cntStr = this._sqlHelper.GetSingle(sql2)?.ToString();
+
+                                    // 杞崲涓烘暣鏁�
+                                    int cnt = 0;
+                                    if (!string.IsNullOrEmpty(cntStr) && int.TryParse(cntStr, out cnt))
+                                    {
+                                        if (cnt > 0)
+                                        {
+                                            // 瀛樺湪鍙戣揣璁板綍锛屼笉鑳芥洿鏂帮紝杩斿洖澶辫触
+                                           
+                                            ErrorMsg = "[璇ュ崟鎹凡鍦� MES 涓湁鍙戣揣璁板綍锛屾棤娉曟洿鏂般��";
+                                            result = false;
+                                        }
+                                    }
+
                                     if (FDOCUMENTSTATUS == "C")
                                     {
                                         mid = dr["ERPID"].ToString();
@@ -3365,6 +3384,7 @@
                         ArrayList list = new ArrayList();
 
                         list.Add(bj1);
+
                         var kc_json = new kcjson()
                         {
                             /* FormId = "STK_Inventory",
@@ -3482,6 +3502,118 @@
 
         }
 
+        private bool TB_ERPTOMES_JSKC(DataSet ds, string operatype, ref string errorMsg)
+        {
+            ArrayList SQLStringList = new ArrayList();
+            DataTable dt = ds.Tables[0];
+            string sql = "";
+
+            foreach (DataRow dr in dt.Rows)
+            {
+                try
+                {
+                    // 鍒濆鍖栭噾铦� API 瀹㈡埛绔�
+                    K3CloudApiClient client = new K3CloudApiClient("http://192.168.0.40/k3cloud/");
+                    var loginResult = client.ValidateLogin("64c5000ed94a48", "娌堝瓙鍗�", "Ss123123@", 2052);
+                    var resultType = JObject.Parse(loginResult)["LoginResultType"].Value<int>();
+
+                    if (resultType != 1)
+                    {
+                        errorMsg = "鐧诲綍閲戣澏绯荤粺澶辫触";
+                        return false;
+                    }
+
+                    // 璇诲彇鐗╂枡缂栫爜鍜屼粨搴撶紪鐮�
+                    string PD1 = dr["ITEM_NO"]?.ToString() ?? "";
+                    string PD2 = dr["CKBM"]?.ToString() ?? "";
+
+                    // 鍩虹鏉′欢锛堜綘鐨� MES1 浠撲綅鏉′欢锛�
+                    string bjString1 = "(FStockLocId.FF100001.FNumber='MES1' " +
+                                       "or FStockLocId.FF100002.FNumber='MES1' " +
+                                       "or FStockLocId.FF100003.FNumber='MES1' " +
+                                       "or FStockLocId.FF100004.FNumber='MES1' " +
+                                       "or FStockLocId.FF100006.FNumber='MES1' " +
+                                       "or FStockLocId.FF100008.FNumber='MES1' " +
+                                       "or FStockLocId.FF100009.FNumber='MES1' " +
+                                       "or FStockLocId.FF100010.FNumber='MES1' " +
+                                       "or FStockLocId.FF100012.FNumber='MES1' " +
+                                       "or FStockLocId.FF100013.FNumber='MES1')";
+
+                    // 鍔ㄦ�佽拷鍔犵墿鏂欍�佷粨搴撹繃婊�
+                    if (!string.IsNullOrEmpty(PD1) && string.IsNullOrEmpty(PD2))
+                        bjString1 += $" and fmaterialid.Fnumber='{PD1}'";
+                    else if (!string.IsNullOrEmpty(PD2) && string.IsNullOrEmpty(PD1))
+                        bjString1 += $" and fstockid='{PD2}'";
+                    else if (!string.IsNullOrEmpty(PD1) && !string.IsNullOrEmpty(PD2))
+                        bjString1 += $" and fmaterialid.Fnumber='{PD1}' and fstockid='{PD2}'";
+
+                    // 鍒嗛〉鍙傛暟
+                    int pageSize = 10000;
+                    int startRow = 0;
+
+                    while (true)
+                    {
+                        var kc_json = new kcjson()
+                        {
+                            FormId = "STK_Inventory",
+                            FieldKeys = "fmaterialid, fbaseqty, fstockid, fbaseunitid, fstockunitid, fstocklocid, FStockOrgId, fmaterialid.Fnumber, FStockLocId.FF100001.FNumber, FStockLocId.FF100002.FNumber, FStockLocId.FF100003.FNumber, FStockLocId.FF100004.FNumber, FStockLocId.FF100006.FNumber, FStockLocId.FF100008.FNumber, FStockLocId.FF100009.FNumber, FStockLocId.FF100010.FNumber, FStockLocId.FF100012.FNumber, FStockLocId.FF100013.FNumber",
+                            FilterString = bjString1,
+                            OrderString = "",
+                            TopRowCount = 0,
+                            StartRow = startRow,
+                            Limit = pageSize,
+                            SubSystemId = ""
+                        };
+
+                        string jsonString = JsonConvert.SerializeObject(kc_json);
+                        var BJ = jsonString.Replace("\\", string.Empty);
+                        var BJ1 = BJ.Replace("[\"", "[");
+                        var BJ2 = BJ1.Replace("\"]", "]");
+
+                        // 鎵ц鏌ヨ
+                        var inventoryData = client.ExecuteBillQuery(BJ2);
+
+                        if (inventoryData == null || inventoryData.Count == 0)
+                            break; // 鏁版嵁鍙栧畬浜�
+
+                        // 鎷兼帴鎻掑叆 SQL
+                        for (int i = 0; i < inventoryData.Count; i++)
+                        {
+                            sql = string.Format(
+                                @"INSERT INTO MES_ERP_KC(CPBM, SL, CKBM, DWBM, DW, ID, GXSJ, CW, ZZ, bm)
+                          VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', KC.NEXTVAL, to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'), '{5}', '{6}', '{7}')",
+                                inventoryData[i][0], inventoryData[i][1], inventoryData[i][2],
+                                inventoryData[i][3], inventoryData[i][4], inventoryData[i][5],
+                                inventoryData[i][6], inventoryData[i][7]
+                            );
+
+                            SQLStringList.Add(sql);
+
+                            if (SQLStringList.Count >= 500)
+                            {
+                                _sqlHelper.ExecuteSqlTran(SQLStringList);
+                                SQLStringList.Clear();
+                            }
+                        }
+
+                        // 涓嬩竴椤�
+                        startRow += pageSize;
+                    }
+                }
+                catch (Exception e)
+                {
+                    errorMsg = e.Message;
+                    return false;
+                }
+            }
+
+            // 鏈�鍚庝竴娆℃壒閲忔彃鍏�
+            if (SQLStringList.Count > 0)
+                return _sqlHelper.ExecuteSqlTran(SQLStringList);
+
+            return true;
+        }
+
 
         private bool TB_ERPTOMES_SYS(DataSet ds, string operatype, ref string ErrorMsg)
         {

--
Gitblit v1.9.3