From 3b3d2378bd52268dad426c70b853473eccee3b87 Mon Sep 17 00:00:00 2001
From: xwt <2740516069@qq.com>
Date: 星期一, 15 九月 2025 09:24:03 +0800
Subject: [PATCH] 首检穴模数

---
 StandardInterface/MESApplication/Controllers/QC/XJController.cs |  313 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 302 insertions(+), 11 deletions(-)

diff --git a/StandardInterface/MESApplication/Controllers/QC/XJController.cs b/StandardInterface/MESApplication/Controllers/QC/XJController.cs
index 25228a3..f1e703c 100644
--- a/StandardInterface/MESApplication/Controllers/QC/XJController.cs
+++ b/StandardInterface/MESApplication/Controllers/QC/XJController.cs
@@ -5,6 +5,7 @@
 using MES.Service.util;
 using Microsoft.AspNetCore.Mvc;
 using Newtonsoft.Json.Linq;
+using System.Web;
 
 namespace MESApplication.Controllers.QC;
 
@@ -15,7 +16,7 @@
     [HttpPost("getAll")]
     public ResponseResult getAll([FromBody] JObject data)
     {
-        var modify1Flag = Convert.ToInt32(data["modify1Flag"].ToString());
+        var modify1Flag = Convert.ToInt32(data["modify1Flag"]?.ToString() ?? "0");
         try
         {
             dynamic resultInfos = new ExpandoObject();
@@ -88,13 +89,36 @@
     [HttpPost("getDaa001")]
     public ResponseResult getDaa001([FromBody] JObject data)
     {
-        var daa020 = data["daa020"].ToString();
-        var item = data["item"].ToString();
+        var daa020 = data["daa020"]?.ToString() ?? "";
         try
         {
             dynamic resultInfos = new ExpandoObject();
-            var tbBillList =
-                new XJService().getDaa001(daa020, item);
+            var tbBillList = new XJService().getDaa001(daa020);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    ///     鑾峰彇宸ュ崟璇︾粏淇℃伅锛堝寘鍚墿鏂欎俊鎭級
+    /// </summary>
+    [HttpPost("getWorkOrderWithItem")]
+    public ResponseResult getWorkOrderWithItem([FromBody] JObject data)
+    {
+        var daa020 = data["daa020"]?.ToString() ?? "";
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList = new XJService().getWorkOrderWithItem(daa020);
             resultInfos.tbBillList = tbBillList;
             return new ResponseResult
             {
@@ -116,12 +140,14 @@
     [HttpPost("getBoardItem")]
     public ResponseResult getBoardItem([FromBody] JObject data)
     {
-        var lineNo = data["lineNo"].ToString();
+        var lineNo = data["lineNo"]?.ToString() ?? "";
         try
         {
             dynamic resultInfos = new ExpandoObject();
             var tbBillList =
                 new XJService().getBoardItem(lineNo);
+            // 鎸� itemNo 鍘婚噸
+            tbBillList = tbBillList.GroupBy(x => x.ItemNo).Select(g => g.First()).ToList();
             resultInfos.tbBillList = tbBillList;
             return new ResponseResult
             {
@@ -140,7 +166,7 @@
     [HttpPost("getItem")]
     public ResponseResult getItem([FromBody] JObject data)
     {
-        var daa001 = data["daa001"].ToString();
+        var daa001 = data["daa001"]?.ToString() ?? "";
         try
         {
             dynamic resultInfos = new ExpandoObject();
@@ -164,7 +190,7 @@
     [HttpPost("setJYItem")]
     public ResponseResult setJYItem([FromBody] JObject data)
     {
-        var itemNo = data["itemNo"].ToString();
+        var itemNo = data["itemNo"]?.ToString() ?? "";
         try
         {
             dynamic resultInfos = new ExpandoObject();
@@ -191,9 +217,12 @@
         try
         {
             dynamic resultInfos = new ExpandoObject();
-            var tbBillList =
-                new XJService().save(xjDto);
-            resultInfos.tbBillList = tbBillList;
+            var result = new XJService().save(xjDto);
+            
+            // 杩斿洖瀹屾暣鐨刋JDto瀵硅薄锛屽寘鍚洿鏂板悗鐨刬tems
+            resultInfos.tbBillList = result;
+            resultInfos.xjDto = xjDto; // 鍖呭惈瀹屾暣鐨勬楠岄」鐩俊鎭�
+            
             return new ResponseResult
             {
                 status = 0,
@@ -442,4 +471,266 @@
             return ResponseResult.ResponseError(ex);
         }
     }
+
+    //鍒锋柊妫�楠岄」鐩�
+    [HttpPost("GenUpdate")]
+    public ResponseResult GenUpdate([FromBody] JObject data)
+    {
+        try
+        {
+            decimal? id = data["id"]?.ToObject<decimal>();
+            string? no = data["no"]?.ToString();
+            string? user = data["user"]?.ToString();
+
+            var (result, message) = new XJService().GenUpdate(id, no, user);
+
+            dynamic resultInfos = new ExpandoObject();
+            resultInfos.result = result;
+            resultInfos.message = message;
+
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+    
+    //鎻愪氦妫�楠�
+    [HttpPost("SjSubmit")]
+    public ResponseResult SjSubmit([FromBody] SJDto sjDto)
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList = new XJService().SjSubmit(sjDto);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    /// 鑾峰彇鏈夌嚎浣撶殑閮ㄩ棬鍒楄〃
+    /// </summary>
+    [HttpPost("getDepartmentsWithLines")]
+    public ResponseResult GetDepartmentsWithLines()
+    {
+        try
+        {
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList = new XJService().GetDepartmentsWithLines();
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    /// 淇濆瓨閮ㄩ棬閫夋嫨
+    /// </summary>
+    [HttpPost("saveDepartmentSelection")]
+    public ResponseResult SaveDepartmentSelection([FromBody] JObject data)
+    {
+        try
+        {
+            var id = Convert.ToDecimal(data["id"]);
+                    var departmentId = data["departmentId"]?.ToString() ?? "";
+        var departmentName = data["departmentName"]?.ToString() ?? "";
+
+            dynamic resultInfos = new ExpandoObject();
+            var result = new XJService().SaveDepartmentSelection(id, departmentId, departmentName);
+            resultInfos.tbBillList = result;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    /// 鏍规嵁閮ㄩ棬ID鑾峰彇璇ラ儴闂ㄤ笅鐨勭嚎浣撳垪琛�
+    /// </summary>
+    [HttpPost("getLinesByDepartment")]
+    public ResponseResult GetLinesByDepartment([FromBody] JObject data)
+    {
+        try
+        {
+            var departmentId = data["departmentId"]?.ToString() ?? "";
+
+            dynamic resultInfos = new ExpandoObject();
+            var tbBillList = new XJService().GetLinesByDepartment(departmentId);
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    /// 鑾峰彇闄勪欢淇℃伅
+    /// </summary>
+    /// <param name="data">鍖呭惈itemNo鐨凧SON瀵硅薄</param>
+    /// <returns>闄勪欢鍒楄〃</returns>
+    [HttpPost("getAttachments")]
+    public ResponseResult GetAttachments([FromBody] JObject data)
+    {
+        var itemNo = data["itemNo"]?.ToString();
+        try
+        {
+            dynamic resultInfos = new System.Dynamic.ExpandoObject();
+            var tbBillList = new XJService().GetAttachments(itemNo);
+            if (tbBillList == null || tbBillList.Count == 0)
+            {
+                return new ResponseResult
+                {
+                    status = 1,
+                    message = "璇ユ楠屽崟鏈笂浼犻檮浠朵俊鎭紒",
+                    data = null
+                };
+            }
+            resultInfos.tbBillList = tbBillList;
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = resultInfos
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    /// <summary>
+    /// 棰勮FTP鏂囦欢
+    /// </summary>
+    /// <param name="itemNo">鐗╂枡缂栫爜</param>
+    /// <param name="fileName">鏂囦欢鍚�</param>
+    /// <param name="ftpServer">FTP鏈嶅姟鍣ㄥ湴鍧�</param>
+    /// <returns>鏂囦欢鍐呭</returns>
+    [HttpGet("PreviewFtpFile")]
+    public IActionResult PreviewFtpFile([FromQuery] string itemNo, [FromQuery] string fileName, [FromQuery] string ftpServer)
+    {
+        try
+        {
+            // 娣诲姞CORS鍝嶅簲澶�
+            Response.Headers.Add("Access-Control-Allow-Origin", "*");
+            Response.Headers.Add("Access-Control-Allow-Methods", "GET, OPTIONS");
+            Response.Headers.Add("Access-Control-Allow-Headers", "Content-Type");
+            Response.Headers.Add("Access-Control-Expose-Headers", "Content-Type, Content-Length");
+            
+            var service = new XJService();
+            var fileBytes = service.GetFtpFile(itemNo, fileName, ftpServer);
+            
+            if (fileBytes == null || fileBytes.Length == 0)
+            {
+                return NotFound("鏂囦欢鍦‵TP鏈嶅姟鍣ㄤ笂涓嶅瓨鍦�");
+            }
+            
+            var contentType = service.GetContentType(fileName);
+            fileName = fileName?.Trim().Replace("\r", "").Replace("\n", "");
+            
+            return File(fileBytes, contentType);
+        }
+        catch (Exception ex)
+        {
+            return StatusCode(500, $"棰勮鏂囦欢澶辫触锛歿ex.Message}");
+        }
+    }
+
+    /// <summary>
+    /// 涓嬭浇FTP鏂囦欢
+    /// </summary>
+    /// <param name="itemNo">鐗╂枡缂栫爜</param>
+    /// <param name="fileName">鏂囦欢鍚�</param>
+    /// <param name="ftpServer">FTP鏈嶅姟鍣ㄥ湴鍧�</param>
+    /// <returns>鏂囦欢涓嬭浇</returns>
+    [HttpGet("DownloadFtpFile")]
+    public IActionResult DownloadFtpFile([FromQuery] string itemNo, [FromQuery] string fileName, [FromQuery] string ftpServer)
+    {
+        try
+        {
+            // 娣诲姞CORS鍝嶅簲澶� - 鍏抽敭閰嶇疆鐢ㄤ簬瑙e喅璺ㄥ煙闂
+            Response.Headers.Add("Access-Control-Allow-Origin", "*");
+            Response.Headers.Add("Access-Control-Allow-Methods", "GET, OPTIONS");
+            Response.Headers.Add("Access-Control-Allow-Headers", "Content-Type, Authorization");
+            Response.Headers.Add("Access-Control-Expose-Headers", "Content-Disposition, Content-Length, Content-Type");
+            
+            var service = new XJService();
+            var fileBytes = service.GetFtpFile(itemNo, fileName, ftpServer);
+            
+            if (fileBytes == null || fileBytes.Length == 0)
+            {
+                return NotFound("鏂囦欢鍦‵TP鏈嶅姟鍣ㄤ笂涓嶅瓨鍦�");
+            }
+            
+            var contentType = service.GetContentType(fileName);
+            fileName = fileName?.Trim().Replace("\r", "").Replace("\n", "");
+            
+            // 璁剧疆姝g‘鐨凜ontent-Disposition鍝嶅簲澶翠互鏀寔鏂囦欢涓嬭浇
+            var result = File(fileBytes, "application/octet-stream", fileName);
+            
+            // 纭繚Content-Disposition澶存纭缃紝鏀寔涓枃鏂囦欢鍚�
+            if (!string.IsNullOrEmpty(fileName))
+            {
+                var encodedFileName = System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);
+                Response.Headers.Add("Content-Disposition", $"attachment; filename*=UTF-8''{encodedFileName}");
+            }
+            
+            return result;
+        }
+        catch (Exception ex)
+        {
+            return StatusCode(500, $"涓嬭浇鏂囦欢澶辫触锛歿ex.Message}");
+        }
+    }
+
+    [HttpOptions("PreviewFtpFile")]
+    [HttpOptions("DownloadFtpFile")]
+    public IActionResult HandleOptions()
+    {
+        Response.Headers.Add("Access-Control-Allow-Origin", "*");
+        Response.Headers.Add("Access-Control-Allow-Methods", "GET, OPTIONS");
+        Response.Headers.Add("Access-Control-Allow-Headers", "Content-Type, Authorization");
+        Response.Headers.Add("Access-Control-Max-Age", "86400");
+        return Ok();
+    }
+
+
 }
\ No newline at end of file

--
Gitblit v1.9.3