From 23a34e600fb4522aec09ad39b8a8ec2e008dcd51 Mon Sep 17 00:00:00 2001
From: hao <1836460075@qq.com>
Date: 星期五, 30 五月 2025 13:07:10 +0800
Subject: [PATCH] 退换料品质确认测试

---
 StandardInterface/MES.Service/service/QC/RetMatService.cs           |  135 +++++++++++++++++++++++++++
 StandardInterface/MESApplication/Controllers/QC/RetMatController.cs |   69 +++++++++++++
 StandardInterface/MES.Service/Dto/service/ReviewItem.cs             |   15 +++
 .vs/slnx.sqlite                                                     |    0 
 StandardInterface/MES.Service/Dto/service/DocRequest.cs             |   15 +++
 StandardInterface/MES.Service/Dto/service/ReviewRequest.cs          |   15 +++
 StandardInterface/MES.Service/Dto/service/DocNoRequest.cs           |   13 ++
 StandardInterface/MES.Service/util/DataTableExtension.cs            |   29 +++++
 8 files changed, 291 insertions(+), 0 deletions(-)

diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite
new file mode 100644
index 0000000..0200bd8
--- /dev/null
+++ b/.vs/slnx.sqlite
Binary files differ
diff --git a/StandardInterface/MES.Service/Dto/service/DocNoRequest.cs b/StandardInterface/MES.Service/Dto/service/DocNoRequest.cs
new file mode 100644
index 0000000..519b206
--- /dev/null
+++ b/StandardInterface/MES.Service/Dto/service/DocNoRequest.cs
@@ -0,0 +1,13 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MES.Service.Dto.service
+{
+    public class DocNoRequest
+    {
+        public string DocNo { get; set; }
+    }
+}
diff --git a/StandardInterface/MES.Service/Dto/service/DocRequest.cs b/StandardInterface/MES.Service/Dto/service/DocRequest.cs
new file mode 100644
index 0000000..fa4de72
--- /dev/null
+++ b/StandardInterface/MES.Service/Dto/service/DocRequest.cs
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MES.Service.Dto.service
+{
+    public class DocRequest
+    {
+        public string DocNo { get; set; }
+        public string User { get; set; } // 鍙�夛紝浠� SaveReview 鐢ㄥ埌
+        public List<ReviewItem> Items { get; set; } // 鍙�夛紝浠� SaveReview 鐢ㄥ埌
+    }
+}
diff --git a/StandardInterface/MES.Service/Dto/service/ReviewItem.cs b/StandardInterface/MES.Service/Dto/service/ReviewItem.cs
new file mode 100644
index 0000000..059526e
--- /dev/null
+++ b/StandardInterface/MES.Service/Dto/service/ReviewItem.cs
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MES.Service.Dto.service
+{
+    public class ReviewItem
+    {
+        public string Material { get; set; }
+        public string Reason { get; set; }
+        public int ItemId { get; set; }
+    }
+}
diff --git a/StandardInterface/MES.Service/Dto/service/ReviewRequest.cs b/StandardInterface/MES.Service/Dto/service/ReviewRequest.cs
new file mode 100644
index 0000000..44d2b3b
--- /dev/null
+++ b/StandardInterface/MES.Service/Dto/service/ReviewRequest.cs
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MES.Service.Dto.service
+{
+    public class ReviewRequest
+    {
+        public string DocNo { get; set; }
+        public string User { get; set; }
+        public List<ReviewItem> Items { get; set; }
+    }
+}
diff --git a/StandardInterface/MES.Service/service/QC/RetMatService.cs b/StandardInterface/MES.Service/service/QC/RetMatService.cs
new file mode 100644
index 0000000..ddf0bee
--- /dev/null
+++ b/StandardInterface/MES.Service/service/QC/RetMatService.cs
@@ -0,0 +1,135 @@
+锘縰sing MES.Service.DB;
+using MES.Service.Dto.service;
+using MES.Service.util;
+using Newtonsoft.Json;
+using SqlSugar;
+using System.Data;
+
+namespace MES.Service.service.QC
+{
+    public class RetMatService
+    {
+        public List<dynamic> GetAllDocs()
+        {
+            var db = SqlSugarHelper.GetInstance();
+
+            string sql = @"
+                SELECT THL_NO 
+                FROM MES_ITEM_THL 
+               -- WHERE JY_BS = 0 AND THL012 = 1
+            ";
+
+            var table = db.Ado.GetDataTable(sql);
+            return table.ToDynamic();
+        }
+
+        public List<dynamic> GetHeader(string docNo)
+        {
+            var db = SqlSugarHelper.GetInstance();
+
+            string sql = @"
+                SELECT 
+                    a.THL001 AS moNo,
+                    a.THL004 AS type,
+                    s.ITEM_NO AS productCode,
+                    d.DEPARTMENTNAME AS deptName,
+                    TO_CHAR(a.THL011, 'yyyy-mm-dd hh24:mi:ss') AS createTime
+                FROM MES_ITEM_THL a
+                LEFT JOIN MES_ITEMS s ON a.ITEM_ID = s.ID
+                LEFT JOIN WOMDAA a0 ON a.THL001 = a0.DAA001
+                LEFT JOIN SYS_DEPARTMENT d ON a0.daa013 = d.ID
+                WHERE a.THL_NO = :docNo
+            ";
+
+            var table = db.Ado.GetDataTable(sql, new SugarParameter("docNo", docNo));
+            return table.ToDynamic();
+        }
+
+        public List<dynamic> GetDetailList(string docNo)
+        {
+            var db = SqlSugarHelper.GetInstance();
+
+            string sql = @"
+            SELECT 
+                s.ITEM_NO AS material,
+                s.ITEM_MODEL AS spec,
+                a.THLD005 AS qty,
+                a.THLD014 AS reason,
+                s.ID AS item_id
+            FROM MES_ITEM_THL_DETAIL a
+            LEFT JOIN MES_ITEM_THL b ON a.THLMID = b.ID
+            LEFT JOIN MES_ITEMS s ON a.ITEM_ID = s.ID
+            WHERE b.THL_NO = :docNo
+        ";
+
+            return db.Ado.GetDataTable(sql, new SugarParameter("docNo", docNo)).ToDynamic();
+        }
+
+        public void UpdateHeader(string docNo, string user)
+        {
+            var db = SqlSugarHelper.GetInstance();
+
+            string sql = @"
+                UPDATE MES_ITEM_THL 
+                SET JY_BS = 1, 
+                    JY_USER = :user, 
+                    JY_TIME = SYSDATE 
+                WHERE THL_NO = :docNo
+            ";
+
+            db.Ado.ExecuteCommand(sql,
+                new SugarParameter("docNo", docNo),
+                new SugarParameter("user", user)
+            );
+        }
+
+/*        public void SaveReviewItem(string docNo, string itemNo, string reason)
+        {
+            var db = SqlSugarHelper.GetInstance();
+
+            string sql = @"
+                UPDATE MES_ITEM_THL_DETAIL
+                SET THLD014 = :reason
+                WHERE THLMID = (
+                    SELECT ID FROM MES_ITEM_THL WHERE THL_NO = :docNo
+                )
+                AND ITEM_ID = (
+                    SELECT ID FROM MES_ITEMS WHERE ITEM_NO = :itemNo
+                )
+            ";
+
+            db.Ado.ExecuteCommand(sql,
+                new SugarParameter("docNo", docNo),
+                new SugarParameter("itemNo", itemNo),
+                new SugarParameter("reason", reason)
+            );
+        }*/
+
+        public void SaveReview(string docNo, string user, List<ReviewItem> items)
+        {
+            var db = SqlSugarHelper.GetInstance();
+
+            string json = JsonConvert.SerializeObject(items); // 搴忓垪鍖栦负 JSON 瀛楃涓�
+
+           
+
+            foreach (ReviewItem item in items)
+            {
+                var parameters = new List<SugarParameter>
+{
+    new SugarParameter("pi_NO", docNo, System.Data.DbType.String),
+    new SugarParameter("pi_user", user, System.Data.DbType.String),
+    new SugarParameter("pi_item_ID", item.ItemId, System.Data.DbType.Decimal),  
+    new SugarParameter("pi_reason", item.Reason, System.Data.DbType.String)
+};
+
+
+                db.Ado.UseStoredProcedure()
+                .ExecuteCommand("PRC_RET_MAT_AUDIT_ALL", parameters);
+            }
+
+            
+        }
+
+    }
+}
diff --git a/StandardInterface/MES.Service/util/DataTableExtension.cs b/StandardInterface/MES.Service/util/DataTableExtension.cs
new file mode 100644
index 0000000..01ed599
--- /dev/null
+++ b/StandardInterface/MES.Service/util/DataTableExtension.cs
@@ -0,0 +1,29 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Data;
+using System.Dynamic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MES.Service.util
+{
+    public static class DataTableExtension
+    {
+        public static List<dynamic> ToDynamic(this DataTable dt)
+        {
+            var list = new List<dynamic>();
+            foreach (DataRow row in dt.Rows)
+            {
+                dynamic obj = new ExpandoObject();
+                var dict = (IDictionary<string, object>)obj;
+                foreach (DataColumn col in dt.Columns)
+                    dict[col.ColumnName] = row[col];
+                list.Add(obj);
+            }
+            return list;
+        }
+    }
+
+
+}
diff --git a/StandardInterface/MESApplication/Controllers/QC/RetMatController.cs b/StandardInterface/MESApplication/Controllers/QC/RetMatController.cs
new file mode 100644
index 0000000..fa187d1
--- /dev/null
+++ b/StandardInterface/MESApplication/Controllers/QC/RetMatController.cs
@@ -0,0 +1,69 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using MES.Service.Dto.service;
+using MES.Service.service.QC;
+using MES.Service.util;
+
+namespace MESApplication.Controllers.QC;
+
+[Route("api/[controller]")]
+[ApiController]
+public class RetMatController : ControllerBase
+{
+    private readonly RetMatService _service = new();
+
+    [HttpPost("GetAllDocs")]
+    public ResponseResult GetAllDocs()
+    {
+        try
+        {
+            var result = _service.GetAllDocs();
+            return new ResponseResult { status = 0, message = "OK", data = result };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("GetHeader")]
+    public ResponseResult GetHeader([FromBody] DocNoRequest req)
+    {
+        try
+        {
+            var result = _service.GetHeader(req.DocNo).FirstOrDefault();
+            return new ResponseResult { status = 0, message = "OK", data = result };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("GetList")]
+    public ResponseResult GetList([FromBody] DocNoRequest req)
+    {
+        try
+        {
+            var result = _service.GetDetailList(req.DocNo);
+            return new ResponseResult { status = 0, message = "OK", data = result };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+    [HttpPost("SaveReview")]
+    public ResponseResult SaveReview([FromBody] ReviewRequest req)
+    {
+        try
+        {
+            _service.SaveReview(req.DocNo, req.User, req.Items);
+            return new ResponseResult { status = 0, message = "瀹℃牳鎴愬姛" };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+}

--
Gitblit v1.9.3