From 8a20e14ad405620bbbb8e857959941692bdc17a8 Mon Sep 17 00:00:00 2001
From: 南骏 池 <chiffly@163.com>
Date: 星期二, 20 五月 2025 13:27:41 +0800
Subject: [PATCH] 1.OA->MES接口开发 2.MES->OA字段优化

---
 Dto/service/OaToMesQuery.cs            |   48 ++++++++++++
 Controllers/QC/OaToMesController.cs    |   15 ++-
 service/QC/OaApi.cs                    |    2 
 service/Warehouse/MesOaToMesManager.cs |  150 +++++++++++++++++++++++++++++++++++++
 4 files changed, 209 insertions(+), 6 deletions(-)

diff --git a/Controllers/QC/OaToMesController.cs b/Controllers/QC/OaToMesController.cs
index 741152d..a0418e0 100644
--- a/Controllers/QC/OaToMesController.cs
+++ b/Controllers/QC/OaToMesController.cs
@@ -3,6 +3,7 @@
 using NewPdaSqlServer.Dto.service;
 using NewPdaSqlServer.entity;
 using NewPdaSqlServer.service.QC;
+using NewPdaSqlServer.service.Warehouse;
 using NewPdaSqlServer.util;
 using Newtonsoft.Json.Linq;
 
@@ -12,18 +13,19 @@
 [ApiController]
 public class OaToMesController : ControllerBase
 {
-    OaApiService m = new OaApiService();
+    MesOaToMesManager m = new MesOaToMesManager();
 
     [HttpPost("ApproveIqcEx")]
-    public ResponseResult ApproveIqc(dynamic queryObj)
+    public ResponseResult ApproveIqcEx(OaToMesQuery queryObj)
     {
         try
         {
+            string rtnMsg = m.ApproveIqcEx(queryObj);
             return new ResponseResult
             {
                 status = 0,
-                message = "寮傚父澶勭疆鍗曞鎵规帴鍙e紑鍙戜腑",
-                data = ""
+                message = rtnMsg,
+                data = null
             };
         }
         catch (Exception ex)
@@ -34,14 +36,15 @@
 
 
     [HttpPost("RetrunIqcEx")]
-    public ResponseResult APVMes_QC_Exceptional(dynamic queryObj)
+    public ResponseResult RetrunIqcEx(OaToMesRQuery queryObj)
     {
         try
         {
+            string rtnMsg = m.RetrunIqcEx(queryObj);
             return new ResponseResult
             {
                 status = 0,
-                message = "寮傚父澶勭疆鍗曢��鍥炴帴鍙e紑鍙戜腑",
+                message = rtnMsg,
                 data = ""
             };
         }
diff --git a/Dto/service/OaToMesQuery.cs b/Dto/service/OaToMesQuery.cs
new file mode 100644
index 0000000..b64bf05
--- /dev/null
+++ b/Dto/service/OaToMesQuery.cs
@@ -0,0 +1,48 @@
+锘縰sing System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+
+namespace NewPdaSqlServer.Dto.service
+{
+    public class OaToMesQuery
+    {
+        [Required(ErrorMessage = "寮傚父鍗曞彿涓嶈兘涓虹┖")]
+        [StringLength(100, ErrorMessage = "寮傚父鍗曞彿闀垮害涓嶈兘瓒呰繃100涓瓧绗�")]
+        public string iqcExNo { get; set; }
+
+        [Required(ErrorMessage = "妫�楠屾暟鎹笉鑳戒负绌�")]
+        [MinLength(1, ErrorMessage = "鑷冲皯闇�瑕�1鏉℃楠屾暟鎹�")]
+        public List<IQCDataItem> dataJson { get; set; }
+
+        public string requestId { get; set; }
+    }
+
+    public class IQCDataItem
+    {
+        [Required(ErrorMessage = "妫�楠屽崟鍙蜂笉鑳戒负绌�")]
+        [StringLength(100, ErrorMessage = "妫�楠屽崟鍙烽暱搴︿笉鑳借秴杩�100涓瓧绗�")]
+        public string jyd { get; set; }
+
+        [Required(ErrorMessage = "閫夊埆绫诲埆涓嶈兘涓虹┖")]
+        [StringLength(100, ErrorMessage = "閫夊埆绫诲埆闀垮害涓嶈兘瓒呰繃100涓瓧绗�")]
+        public string xblb { get; set; }
+
+        [Required(ErrorMessage = "澶勭悊鎰忚涓嶈兘涓虹┖")]
+        // [RegularExpression("閫�鏂欒ˉ鏂檤鐗归噰", ErrorMessage = "澶勭悊鎰忚鍙兘鏄�'閫�鏂欒ˉ鏂�'鎴�'鐗归噰'")]
+        public string clyj { get; set; }
+
+        [Required(ErrorMessage = "鎺ユ敹鏁伴噺涓嶈兘涓虹┖")]
+        [Range(0, int.MaxValue, ErrorMessage = "鎺ユ敹鏁伴噺蹇呴』澶т簬绛変簬0")]
+        public int jssl { get; set; } // 淇敼涓烘暟鍊肩被鍨�
+    }
+
+
+    public class OaToMesRQuery
+    {
+        [Required(ErrorMessage = "寮傚父鍗曞彿涓嶈兘涓虹┖")]
+        [StringLength(100, ErrorMessage = "寮傚父鍗曞彿闀垮害涓嶈兘瓒呰繃100涓瓧绗�")]
+        public string iqcExNo { get; set; }
+
+        public string requestId { get; set; }
+
+    }
+}
diff --git a/service/QC/OaApi.cs b/service/QC/OaApi.cs
index b185592..8430e3b 100644
--- a/service/QC/OaApi.cs
+++ b/service/QC/OaApi.cs
@@ -187,6 +187,7 @@
         // 浣跨敤鍙傛暟鍖栨煡璇㈤槻姝QL娉ㄥ叆
         const string mainSql = @"
 SELECT TOP 1 
+    A.fBillNo AS ycczdh,
     C.item_no   AS wlbm,
     C.item_name AS jzmcwlmc,
     D.supp_name AS khgys,
@@ -212,6 +213,7 @@
         // 瀛楁鏄犲皠閰嶇疆锛堝瓧娈靛悕 -> 鏁版嵁搴撳垪鍚嶏級
         var fieldMappings = new Dictionary<string, (string Field, string Default)>
         {
+            ["ycczdh"] = ("ycczdh", "N/A"),
             ["wlbm"] = ("wlbm", "N/A"),
             ["khgys"] = ("khgys", "N/A"),
             ["jzmcwlmc"] = ("jzmcwlmc", "N/A"),
diff --git a/service/Warehouse/MesOaToMesManager.cs b/service/Warehouse/MesOaToMesManager.cs
new file mode 100644
index 0000000..a9b21c6
--- /dev/null
+++ b/service/Warehouse/MesOaToMesManager.cs
@@ -0,0 +1,150 @@
+锘縰sing System.Data;
+using System.Data.SqlClient;
+using Masuit.Tools;
+using NewPdaSqlServer.DB;
+using NewPdaSqlServer.Dto.service;
+using NewPdaSqlServer.entity;
+using NewPdaSqlServer.entity.Base;
+using SqlSugar;
+
+namespace NewPdaSqlServer.service.Warehouse;
+
+public class MesOaToMesManager : Repository<OaToMesQuery>
+{
+    public string ApproveIqcEx(OaToMesQuery query)
+    {
+        var _strMsg = "";
+        var _intSum = 0;
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            // 鍙傛暟鏍¢獙澧炲己
+            if (query.iqcExNo.IsNullOrEmpty()) throw new Exception("寮傚父鍗曞彿涓嶅厑璁镐负绌�");
+            if (query.dataJson == null || !query.dataJson.Any()) throw new Exception("妫�楠屾暟鎹笉鑳戒负绌�");
+
+            using (var cmd = new SqlCommand("[iqc_ycd_oa_mes]", conn))
+            {
+                try
+                {
+                    conn.Open();
+                    
+                    //// 鏍¢獙MES妫�楠屽崟
+                    //var checkSql = @"SELECT B.releaseNo AS jydNo 
+                    //               FROM Mes_QC_Exceptional_Detail B 
+                    //               LEFT JOIN Mes_QC_Exceptional A ON A.guid = B.pGuid 
+                    //               WHERE A.fBillNo = @iqcExNo";
+                    //using (var checkCmd = new SqlCommand(checkSql, conn))
+                    //{
+                    //    checkCmd.Parameters.AddWithValue("@iqcExNo", query.iqcExNo);
+                    //    var dbJydList = new List<string>();
+                    //    using (var reader = checkCmd.ExecuteReader())
+                    //    {
+                    //        while (reader.Read())
+                    //        {
+                    //            dbJydList.Add(reader["jydNo"].ToString());
+                    //        }
+                    //    }
+
+                    //    // 楠岃瘉鏁版嵁涓�鑷存��
+                    //    var inputJydList = query.dataJson.Select(d => d.jyd).ToList();
+                    //    var diff = inputJydList.Except(dbJydList).Union(dbJydList.Except(inputJydList));
+                    //    if (diff.Any())
+                    //    {
+                    //        throw new Exception($"浼犲叆寮傚父澶勭疆鍗曞搴旂殑妫�楠屽崟鍙蜂笌MES涓嶅尮閰嶏紝宸紓鍗曞彿锛歿string.Join(",", diff)}");
+                    //    }
+                    //}
+
+                    // 寰幆澶勭悊姣忔潯鏁版嵁
+                    foreach (var item in query.dataJson)
+                    {
+                        cmd.Parameters.Clear();
+                        cmd.CommandType = CommandType.StoredProcedure;
+                        SqlParameter[] parameters = 
+                        {
+                            new SqlParameter("@outMsg", SqlDbType.NVarChar, 150) { Direction = ParameterDirection.Output },
+                            new SqlParameter("@outSum", SqlDbType.Int) { Direction = ParameterDirection.Output },
+                            new SqlParameter("@ycdNo", query.iqcExNo),
+                            new SqlParameter("@jydNo", item.jyd),
+                            new SqlParameter("@xblb", item.xblb),
+                            new SqlParameter("@clyj", item.clyj),
+                            new SqlParameter("@jssl", item.jssl),
+                            new SqlParameter("@inFieldValue", 1)
+                        };
+                        cmd.Parameters.AddRange(parameters);
+                        cmd.ExecuteNonQuery();
+
+                        _intSum += (int)parameters[1].Value;
+                        if ((int)parameters[1].Value <= 0)
+                        {
+                            throw new Exception(parameters[0].Value.ToString());
+                        }
+                    }
+                    string rtnMsg = $"{query.iqcExNo}瀹℃壒鎺ㄩ�丮ES鎴愬姛锛�";
+
+                    return rtnMsg;
+                }
+                catch (Exception ex)
+                {
+                    // 澧炲己寮傚父鏃ュ織
+                    _strMsg = $"寮傚父澶勭疆澶辫触锛歿ex.Message}";
+                    throw new Exception(_strMsg);
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+    }
+
+    public string RetrunIqcEx(OaToMesRQuery query)
+    {
+        var _strMsg = "";
+        var _intSum = 0;
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            // 鍙傛暟鏍¢獙澧炲己
+            if (query.iqcExNo.IsNullOrEmpty()) throw new Exception("寮傚父鍗曞彿涓嶅厑璁镐负绌�");
+
+            using (var cmd = new SqlCommand("[iqc_ycd_oa_mes]", conn))
+            {
+                try
+                {
+                    conn.Open();
+                    int inFieldValue = 0;
+
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    SqlParameter[] parameters = 
+                    {
+                        new SqlParameter("@outMsg", SqlDbType.NVarChar, 150) { Direction = ParameterDirection.Output },
+                        new SqlParameter("@outSum", SqlDbType.Int) { Direction = ParameterDirection.Output },
+                        new SqlParameter("@ycdNo", query.iqcExNo),
+                        new SqlParameter("@jydNo", DBNull.Value),
+                        new SqlParameter("@xblb", DBNull.Value),
+                        new SqlParameter("@clyj", DBNull.Value),
+                        new SqlParameter("@jssl", DBNull.Value),
+                        new SqlParameter("@inFieldValue", inFieldValue)
+                    };
+                    cmd.Parameters.AddRange(parameters);
+                    cmd.ExecuteNonQuery();
+
+                    _intSum = (int)parameters[1].Value;
+                    if (_intSum <= 0)
+                    {
+                        throw new Exception(parameters[0].Value.ToString());
+                    }
+                    
+                    return $"{query.iqcExNo}閫�鍥炴搷浣滄垚鍔燂紒褰卞搷璁板綍鏁帮細{_intSum}";
+                }
+                catch (Exception ex)
+                {
+                    _strMsg = $"寮傚父鍗曢��鍥炲け璐ワ細{ex.Message}";
+                    throw new Exception(_strMsg);
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3