From 7ee2e58c300374a15c212f9145ba9d762d64e0e6 Mon Sep 17 00:00:00 2001
From: fcx <2246384483@qq.com>
Date: 星期六, 20 十二月 2025 15:58:11 +0800
Subject: [PATCH] 1.新增MES_PROJECT.cs

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

diff --git a/StandardPda/MES.Service/service/Warehouse/WomdaaManager.cs b/StandardPda/MES.Service/service/Warehouse/WomdaaManager.cs
index acc7ce0..4aca56d 100644
--- a/StandardPda/MES.Service/service/Warehouse/WomdaaManager.cs
+++ b/StandardPda/MES.Service/service/Warehouse/WomdaaManager.cs
@@ -47,7 +47,7 @@
             //    "                        left join mes_items s on s.id = C.daa002" +
             //    "                       where WORKSNO='" + id + "' and DAA018='宸插紑宸�'  order by DAA016 asc";
             //var sql1 = "select DAA001 tickeNo, s.ITEM_NO itemNo, s.ITEM_NAME itemName, s.ITEM_MODEL itemModel, DAA008 plannedNum\r\nfrom  WOMDAA C\r\n         left join mes_items s on s.id = C.daa002\r\nleft join womcaa A on A.caa001=C.daa021\r\nwhere C.DAA015 = '" + LineId + "'\r\n  and DAA018 = '宸插紑宸�' and A.CAA023='2'\r\norder by DAA016 asc";
-            var sql1 = "select DAA001 tickeNo, s.ITEM_NO itemNo, s.ITEM_NAME itemName, s.ITEM_MODEL itemModel, DAA008 plannedNum\r\nfrom  WOMDAA C\r\n         left join mes_items s on s.id = C.daa002\r\nleft join womcaa A on A.caa001=C.daa021\r\nleft join MESPROJECT_LIKE_CCLOGIN pr1 on A.PROJECT=pr1.PROJECT_ID\r\nleft join MESLINE_LIKE_CCLOGIN_WORKS2 pr2 on pr1.id=pr2.LOGINID\r\nwhere C.DAA015 = '" + LineId + "' and pr2.WORKSNO='"+ LoginId + "'\r\n  and DAA018 = '宸插紑宸�' and A.CAA023='2'\r\norder by DAA016 asc";
+            var sql1 = "select DAA001 tickeNo, s.ITEM_NO itemNo, s.ITEM_NAME itemName, s.ITEM_MODEL itemModel, DAA008 plannedNum\r\nfrom  WOMDAA C\r\n         left join mes_items s on s.id = C.daa002\r\nleft join womcaa A on A.caa001=C.daa021\r\nleft join MESPROJECT_LIKE_CCLOGIN pr1 on A.PROJECT=pr1.PROJECT_ID\r\nleft join MESLINE_LIKE_CCLOGIN_WORKS2 pr2 on pr1.id=pr2.LOGINID\r\nwhere C.DAA015 = '" + LineId + "' and pr2.WORKSNO='"+ LoginId + "'\r\n  and DAA018 = '宸插紑宸�' and A.CAA023='2' and nvl(a.ISCANCEL,0) <>1 \r\norder by DAA016 asc";
             return SQLHelper.ExecuteQuery(sql1);
         }
 
@@ -222,17 +222,29 @@
             try
             {
                 // 1. 涓昏〃鎻掑叆
-                var sql1 = @"
-            INSERT INTO MES_SN_STATUS_DETAILS
-               (ID, TICKET_NO, SN_NO, WORKSTATION_NO, SN_STATE, LOGIN_ID, TURNOVER_CODE)
-               VALUES (SEQ_MES_SN_STATUS_DETAILS_ID.NEXTVAL,
-                       :ticketNo,
-                       :snNo,
-                       :workstationNo,
-                       :snState,
-                       :loginId,
-                       :turnoverCode)";
+                //    var sql1 = @"
+                //INSERT INTO MES_SN_STATUS_DETAILS
+                //   (ID, TICKET_NO, SN_NO, WORKSTATION_NO, SN_STATE, LOGIN_ID, TURNOVER_CODE,LINE_NO)
+                //   VALUES (SEQ_MES_SN_STATUS_DETAILS_ID.NEXTVAL,
+                //           :ticketNo,
+                //           :snNo,
+                //           :workstationNo,
+                //           :snState,
+                //           :loginId,
+                //           :turnoverCode,select nvl(DAA015,'') from WOMDAA where DAA001 = ':ticketNo' and ROWNUM=1)";
 
+                // 1. 涓昏〃鎻掑叆
+                var sql1 = @"
+             INSERT INTO MES_SN_STATUS_DETAILS
+                   (ID, TICKET_NO, SN_NO, WORKSTATION_NO, SN_STATE, LOGIN_ID, TURNOVER_CODE, LINE_NO) values (
+             SEQ_MES_SN_STATUS_DETAILS_ID.NEXTVAL,
+                   :ticketNo,
+                   :snNo,
+                   :workstationNo,
+                   :snState,
+                   :loginId,
+                   :turnoverCode,
+                   :LINE_NO)";
                 var parameters1 = new[]
                 {
             new OracleParameter("ticketNo", asnInfo.tickeNo ?? (object)DBNull.Value),
@@ -240,7 +252,8 @@
             new OracleParameter("workstationNo", asnInfo.workstationNo ?? (object)DBNull.Value),
             new OracleParameter("snState", asnInfo.snState ?? (object)DBNull.Value),
             new OracleParameter("loginId", asnInfo.loginId ?? (object)DBNull.Value),
-            new OracleParameter("turnoverCode", asnInfo.turnoverCode ?? (object)DBNull.Value)
+            new OracleParameter("turnoverCode", asnInfo.turnoverCode ?? (object)DBNull.Value),
+            new OracleParameter("LINE_NO", asnInfo.lineNo ?? (object)DBNull.Value)
         };
 
                 int i = sqlHelper.ExecuteNonQueryWithTransaction(sql1, parameters1, connection, transaction);
@@ -727,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