From cfb616bf02b554b185f04bf92a8b8af489490102 Mon Sep 17 00:00:00 2001
From: zjh <2207896513@qq.com>
Date: 星期一, 17 十一月 2025 16:38:37 +0800
Subject: [PATCH] 栈板绑定代码提交

---
 StandardPda/MES.Service/service/Warehouse/WomdaaManager.cs |  178 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 178 insertions(+), 0 deletions(-)

diff --git a/StandardPda/MES.Service/service/Warehouse/WomdaaManager.cs b/StandardPda/MES.Service/service/Warehouse/WomdaaManager.cs
index 0e4d2c6..4aca56d 100644
--- a/StandardPda/MES.Service/service/Warehouse/WomdaaManager.cs
+++ b/StandardPda/MES.Service/service/Warehouse/WomdaaManager.cs
@@ -740,5 +740,183 @@
             return result;
         }
 
+
+        public string[] SyncStackCodeFromApi(string stackCode, string loginId)
+        {
+            string[] msg = new string[2];
+            msg[0] = "true";
+
+            var sqlHelper = new OracleSQLHelper();
+            var (conn, tran) = sqlHelper.BeginTransaction();
+
+            try
+            {
+                // ---------------------------
+                // 1. 鍒ゆ柇鏄惁宸插叆搴擄紙IS_INBOUND = 1锛�
+                // ---------------------------
+                string sqlCheck = @"
+            SELECT COUNT(*) 
+              FROM MES_PALLET_BINDING 
+             WHERE STACKCODE = :stackCode 
+               AND IS_INBOUND = 1";
+
+                int count = Convert.ToInt32(sqlHelper.ExecuteScalarWithTransaction(
+                    conn,
+                    tran,
+                    sqlCheck,
+                    new[] { new OracleParameter(":stackCode", stackCode) }
+                ));
+
+                if (count > 0)
+                {
+                    msg[0] = "false";
+                    msg[1] = $"璇ユ爤鏉垮凡鍏ュ簱锛屼笉鍏佽閲嶆柊缁戝畾锛佹爤鏉跨爜锛歿stackCode}";
+                    tran.Rollback();
+                    return msg;
+                }
+
+
+                // ---------------------------
+                // 2. 璋冪敤鎺ュ彛鑾峰彇鏈�鏂� SN 鍒楄〃
+                // ---------------------------
+                var apiUrl = "http://no2api.dream-maker.com/storage/getTransferList";
+                var reqObj = new { stackCode = stackCode };
+                string jsonReq = Newtonsoft.Json.JsonConvert.SerializeObject(reqObj);
+
+                string apiResult = HttpHelper.HttpPost(apiUrl, jsonReq);
+                var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(apiResult);
+
+                if ((int)obj.code != 0)
+                {
+                    msg[0] = "false";
+                    msg[1] = "鎺ュ彛杩斿洖閿欒锛�" + (string)obj.msg;
+                    tran.Rollback();
+                    return msg;
+                }
+
+                var snList = obj.data.snList;
+                if (snList == null || snList.Count == 0)
+                {
+                    msg[0] = "false";
+                    msg[1] = "鎺ュ彛杩斿洖SN鍒楄〃涓虹┖锛�";
+                    tran.Rollback();
+                    return msg;
+                }
+
+
+                // ---------------------------
+                // 3. 鍒犻櫎鏃х粦瀹�
+                // ---------------------------
+                string sqlDelete = @"DELETE FROM MES_PALLET_BINDING WHERE STACKCODE = :stackCode";
+
+                sqlHelper.ExecuteNonQueryWithTransaction(
+                    sqlDelete,
+                    new[] { new OracleParameter(":stackCode", stackCode) },
+                    conn,
+                    tran
+                );
+
+
+                // ---------------------------
+                // 4. 鎵归噺鎻掑叆锛堟柟寮� 1锛氭彁鍓嶅鐞� transitTime锛�
+                // ---------------------------
+                int rowCount = snList.Count;
+
+                string[] arrSnNo = new string[rowCount];
+                string[] arrStackCode = new string[rowCount];
+                string[] arrLoginId = new string[rowCount];
+                string[] arrCreatedBy = new string[rowCount];
+                DateTime?[] arrTransitTime = new DateTime?[rowCount];
+                string[] arrLineNo = new string[rowCount];
+
+                for (int i = 0; i < rowCount; i++)
+                {
+                    arrSnNo[i] = (string)snList[i].snNo;
+                    arrStackCode[i] = stackCode;
+                    arrLoginId[i] = loginId;
+                    arrCreatedBy[i] = loginId;
+                    arrLineNo[i] = (string)snList[i].lineNo;
+
+                    // ------------------------
+                    // transitTime 杞崲锛堝叧閿級
+                    // ------------------------
+                    string timeStr = (string)snList[i].transitTime;
+
+                    if (string.IsNullOrWhiteSpace(timeStr))
+                    {
+                        arrTransitTime[i] = null;
+                    }
+                    else
+                    {
+                        DateTime dt;
+                        if (DateTime.TryParse(timeStr, out dt))
+                            arrTransitTime[i] = dt;
+                        else
+                            arrTransitTime[i] = null;  // 闈炴硶鏃堕棿鐩存帴缃┖
+                    }
+                }
+
+                string sqlBatchInsert = @"
+            INSERT INTO MES_PALLET_BINDING
+            (ID, STACKCODE, LOGIN_ID, SN_NO, TICKET_NO, MEDIUMBOXCODE, CREATE_DATE, CREATED_BY, BIND_TRANSIT_TIME, LINE_NO)
+            VALUES 
+            (
+                SEQ_MES_PALLET_BINDING_ID.NEXTVAL,
+                :STACKCODE,
+                :LOGIN_ID,
+                :SN_NO,
+                NULL,
+                NULL,
+                SYSDATE,
+                :CREATED_BY,
+                :BIND_TRANSIT_TIME,
+                :LINE_NO
+            )";
+
+                using (OracleCommand cmd = (OracleCommand)conn.CreateCommand())
+                {
+                    cmd.Transaction = (OracleTransaction)tran;
+                    cmd.CommandText = sqlBatchInsert;
+                    cmd.ArrayBindCount = rowCount;
+
+                    cmd.Parameters.Add(new OracleParameter(":STACKCODE", arrStackCode));
+                    cmd.Parameters.Add(new OracleParameter(":LOGIN_ID", arrLoginId));
+                    cmd.Parameters.Add(new OracleParameter(":SN_NO", arrSnNo));
+                    cmd.Parameters.Add(new OracleParameter(":CREATED_BY", arrCreatedBy));
+
+                    // 鍏抽敭锛歯ull 浼氳嚜鍔ㄥ瓨涓� Oracle NULL
+                    var pTransit = new OracleParameter(":BIND_TRANSIT_TIME", OracleDbType.Date);
+                    pTransit.Value = arrTransitTime;
+                    cmd.Parameters.Add(pTransit);
+
+                    cmd.Parameters.Add(new OracleParameter(":LINE_NO", arrLineNo));
+
+                    cmd.ExecuteNonQuery();
+                }
+
+
+                // ---------------------------
+                // 5. 鎻愪氦浜嬪姟
+                // ---------------------------
+                tran.Commit();
+                msg[1] = "鍚屾鎴愬姛锛�";
+            }
+            catch (Exception ex)
+            {
+                tran.Rollback();
+                msg[0] = "false";
+                msg[1] = ex.Message;
+                throw;
+            }
+            finally
+            {
+                sqlHelper.CloseConnection(conn);
+            }
+
+            return msg;
+        }
+
+
+
     }
 }

--
Gitblit v1.9.3