From fa53abd5d374862c640da5310d0bd1bb641a0d5b Mon Sep 17 00:00:00 2001
From: zyf <1071160500@qq.com>
Date: 星期二, 26 八月 2025 19:15:29 +0800
Subject: [PATCH] 检验查询功能新增、检验根据车间显示单据

---
 MES.Service/service/QC/SJService.cs |  242 +++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 187 insertions(+), 55 deletions(-)

diff --git a/MES.Service/service/QC/SJService.cs b/MES.Service/service/QC/SJService.cs
index b88c92d..555ec39 100644
--- a/MES.Service/service/QC/SJService.cs
+++ b/MES.Service/service/QC/SJService.cs
@@ -3,6 +3,9 @@
 using MES.Service.Modes;
 using MES.Service.util;
 using SqlSugar;
+using DbType = System.Data.DbType;
+using System.Data;
+using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
 
 namespace MES.Service.service.QC;
 
@@ -34,33 +37,80 @@
     }
 
     //鑾峰彇鎵�鏈夋暟鎹垎椤�
-    public List<SJPageResult> getPage(SJPageResult queryObj)
+    public (List<SJPageResult> items, int totalCount) getPage(SJPageResult queryObj)
     {
         var db = SqlSugarHelper.GetInstance();
 
         string[]? lineNo = null;
 
-        if (StringUtil.IsNotNullOrEmpty(queryObj.StatusUser))
-            lineNo = _baseService.getUserLineNo(queryObj.StatusUser);
+        int totalCount = 0;
 
-        var data = db.Queryable<SJPageResult>()
-            .WhereIF(lineNo != null && lineNo.Length > 0,
-                a => lineNo.Contains(a.line))
+        //if (StringUtil.IsNotNullOrEmpty(queryObj.StatusUser))
+        //    lineNo = _baseService.getUserLineNo(queryObj.StatusUser);
+
+        var data = db.Queryable<SJPageResult, Womdaa, Womcaa, SysDepartment, MesUserDepartmentQc,MesItems> ((a,
+                    da,ca,d,dq,i) =>
+                new JoinQueryInfos(
+                    JoinType.Left, Convert.ToDecimal(a.Pbaid) == da.Id, // 鍏宠仈宸ュ崟淇℃伅
+                    JoinType.Left, da.Daa021 == ca.Caa020,//浠诲姟鍗曪紝鐢ㄤ簬鏌ヨ閿�鍞鍗曞彿
+                    JoinType.Left, d.Departmentid == Convert.ToDecimal(da.Daa013),//鏌ヨ杞﹂棿
+                    JoinType.Left, dq.Departmentcode == d.Departmentcode,//鏌ヨ鐢ㄦ埛鏉冮檺
+                    JoinType.Left, i.Id == Convert.ToDecimal(da.Daa002)//鏌ヨ鐢ㄦ埛鏉冮檺
+                ))
+            //.WhereIF(lineNo != null && lineNo.Length > 0,
+            //    a => lineNo.Contains(a.line))
             .WhereIF(queryObj.Id != null, a => a.Id == queryObj.Id)
             .WhereIF(StringUtil.IsNotNullOrEmpty(queryObj.BillNo),
                 a => a.BillNo == queryObj.BillNo)
             .WhereIF(
                 StringUtil.IsNotNullOrEmpty(queryObj.Result) &&
                 "鏈畬鎴�".Equals(queryObj.Result),
-                a => a.Result == queryObj.Result)
+                a => a.FSubmit == "0")
             .WhereIF(
                 StringUtil.IsNotNullOrEmpty(queryObj.Result) &&
                 !"鏈畬鎴�".Equals(queryObj.Result),
-                a => a.Result != "鏈畬鎴�")
-            .OrderBy(a => a.BillNo, OrderByType.Desc)
-            .ToPageList(queryObj.PageIndex, queryObj.Limit);
+                a => a.FSubmit == "1")
+            //鍖归厤鏉冮檺
+            .WhereIF(!string.IsNullOrEmpty(queryObj.LoginUser),
+                (a, da, ca, d, dq) => dq.Usercode == queryObj.LoginUser)
+            //鍖归厤鎼滅储瀛楃涓�
+            .WhereIF(!string.IsNullOrEmpty(queryObj.SearchValue),
+                (a, da, ca, d, dq,i) =>
+                a.BillNo.ToLower().Contains(queryObj.SearchValue.ToLower())||
+                i.ItemName.ToLower() .Contains(queryObj.SearchValue.ToLower()) ||
+                ca.Caa015.ToLower().Contains(queryObj.SearchValue.ToLower()) ||
+                i.ItemNo.ToLower().Contains(queryObj.SearchValue.ToLower()))
+            .Select((a, da, ca, d, dq) => new SJPageResult
+            {
+                Id = a.Id,
+                BillNo = a.BillNo,
+                StatusDate = a.StatusDate,
+                FName = a.FName,
+                Result = a.Result,
+                FSubmit = a.FSubmit,
+                FSubmitBy = a.FSubmitBy,
+                FSubmitDate = a.FSubmitDate,
+                MoidNum = a.MoidNum,
+                StatusUser = a.StatusUser,
+                Pbaid = a.Pbaid,
+                CreateTime = a.CreateTime,
+                Comments = a.Comments,
+                ItemMod = a.ItemMod,
+                ItemNo = a.ItemNo,
+                daa001 = a.daa001,
+                line = a.line,
+                Remarks = a.Remarks,
+                Daa003 = a.Daa003,
+                Daa004 = a.Daa004,
+                Daa008 = a.Daa008,
+                LineName = a.LineName,
+                SaleOrder = ca.Caa015,
+                DepartName = d.Departmentname
+            })
+            .OrderBy(a => a.CreateTime, OrderByType.Desc);
+        var items = data.ToPageList(queryObj.PageIndex, queryObj.Limit,ref totalCount);
 
-        return data;
+        return (items, totalCount);
     }
 
 
@@ -99,7 +149,7 @@
         var count = db.Queryable<MesQa>().Where(s => s.QsType == "1"
             && s.ItemNo == itemNo && s.Fsubmit == 1).Count();
 
-        if (count <= 0) return new List<QsItemIpiItem>();
+        if (count <= 0) return [];
 
         return db
             .Queryable<MesQualityStandard>()
@@ -131,15 +181,10 @@
     public List<QsItemIpiItem> getQSItems(decimal? pid, decimal? id)
     {
         var db = SqlSugarHelper.GetInstance();
-        var qsItemIpiItems = db
-            .Queryable<QsItemIpiItem>()
-            .WhereIF(pid > 0, a => a.Pid == pid)
-            .WhereIF(id > 0, a => a.Id == id).ToList();
+        var qsItemIpiItems = db.Queryable<QsItemIpiItem>().WhereIF(pid > 0, a => a.Pid == pid).WhereIF(id > 0, a => a.Id == id).ToList();
 
         var array = qsItemIpiItems.Select(s => s.Id).ToArray();
-        var qsItemIpiItemDetails = db.Queryable<QsItemIpiItemDetail>()
-            .Where(s => array.Contains(s.Pid))
-            .GroupBy(s => s.Pid)
+        var qsItemIpiItemDetails = db.Queryable<QsItemIpiItemDetail>().Where(s => array.Contains(s.Pid)).GroupBy(s => s.Pid)
             .Select(s => new
             {
                 s.Pid,
@@ -167,9 +212,7 @@
         });
 
         //浣跨敤linq琛ㄨ揪寮忚繃婊ゅ嚭鍥剧墖id涓嶄负绌虹殑鏁版嵁
-        var itemIpiItems =
-            qsItemIpiItems.Where(s => s.Picture is { Length: > 0 })
-                .ToList();
+        var itemIpiItems =qsItemIpiItems.Where(s => s.Picture is { Length: > 0 }).ToList();
         if (itemIpiItems.Count > 0)
             itemIpiItems.ForEach(s =>
             {
@@ -192,16 +235,14 @@
             db =>
             {
                 qsItemIpiReq.StatusDate = DateTime.Now;
-                var pid = db.Insertable(qsItemIpiReq)
-                    .ExecuteReturnIdentity();
+                var pid = db.Insertable(qsItemIpiReq).ExecuteReturnIdentity();
                 qsItemIpiReq.Id = pid;
 
                 item.gid = pid;
 
                 qsItemIpiItems.ForEach(s => s.Pid = pid);
 
-                return db.Insertable(qsItemIpiItems)
-                    .ExecuteCommand();
+                return db.Insertable(qsItemIpiItems).ExecuteCommand();
             });
         item.Items = getQSItems(qsItemIpiReq.Id, null);
 
@@ -223,29 +264,40 @@
         item.Items = getQSItems(qsItemIpiReq.Id, null);
         var sjPageResult = new SJPageResult
             { Id = item.From.Id, Limit = 1, PageIndex = 1 };
-        item.Result = getPage(sjPageResult)[0];
+        item.Result = getPage(sjPageResult).items[0];
 
         return item;
     }
 
     public QsItem SaveItem(QsItem item)
     {
+        var db = SqlSugarHelper.GetInstance();
+
+        var del = db.Deleteable<QsItemIpiItem>()
+            .Where(s=>s.Pid == item.gid)
+            .ExecuteCommand();
+
+        //QsItemIpiItemDetail
+        var del1 = db.Deleteable<QsItemIpiItemDetail>()
+            .Where(s => s.Gid == item.gid)
+            .ExecuteCommand();
+
         var qsItemIpiItems = item.Items;
         SqlSugarHelper.UseTransactionWithOracle(
             db =>
             {
                 qsItemIpiItems.ForEach(s => s.Pid = item.gid);
-
-                return db.Insertable(qsItemIpiItems)
-                    .ExecuteCommand();
+                return db.Insertable(qsItemIpiItems).ExecuteCommand();
             });
         item.Items = getQSItems(item.gid, null);
 
         //娌℃湁涓婁笅闄愮殑妫�楠岄」鐩嚜鍔ㄧ洏鐐逛负鍚堟牸
         item.Items.ForEach(s =>
         {
-            if (s.MaxValue != null || s.StandardValue != null ||
-                s.MinValue != null) return;
+            if (s.MaxValue != null || s.StandardValue != null || s.MinValue != null)
+            {
+                return;
+            }
             var detail = new QsItemIpiItemDetail();
             detail.Pid = s.Id;
             detail.Gid = item.gid;
@@ -277,7 +329,6 @@
                 item.CreateDate = DateTime.Now;
                 result.Add(item);
             }
-
             return db.Insertable(result).ExecuteCommand();
         });
 
@@ -347,28 +398,28 @@
         if (icount == 0) return 1;
 
         //瀹為檯涓暟绛変簬鐞嗚涓暟鏃跺妫�楠屽崟杩涜鍒ゅ畾
-        if (sum == icount)
-        {
-            result = 0;
+        //if (sum == icount)
+        //{
+        //    result = 0;
 
-            //鑾峰彇杩欎釜妫�楠屽崟涓嬬殑鎵�鏈夊悎鏍肩殑妫�楠岀粨鏋�
-            passCount = db.Queryable<QsItemIpiItemDetail>()
-                .Where(s => s.Gid == detail.Gid && s.Fstand == "鈭�").Count();
+        //    //鑾峰彇杩欎釜妫�楠屽崟涓嬬殑鎵�鏈夊悎鏍肩殑妫�楠岀粨鏋�
+        //    passCount = db.Queryable<QsItemIpiItemDetail>()
+        //        .Where(s => s.Gid == detail.Gid && s.Fstand == "鈭�").Count();
 
-            //鍚堟牸鐨勬楠岀粨鏋滅瓑浜庢�绘楠屾暟瑙嗕负鍚堟牸
-            if (icount == passCount) result = 1;
+        //    //鍚堟牸鐨勬楠岀粨鏋滅瓑浜庢�绘楠屾暟瑙嗕负鍚堟牸
+        //    if (icount == passCount) result = 1;
 
-            useTransactionWithOracle += SqlSugarHelper.UseTransactionWithOracle(
-                db =>
-                {
-                    return db.Updateable<QsItemIpiReq>()
-                        .SetColumns(s => s.IsPass == result)
-                        .SetColumns(s => s.StatusUser == detail.CreateBy)
-                        .SetColumns(s => s.CompleteTime == DateTime.Now)
-                        .Where(s => s.Id == detail.Gid)
-                        .ExecuteCommand();
-                });
-        }
+        //    useTransactionWithOracle += SqlSugarHelper.UseTransactionWithOracle(
+        //        db =>
+        //        {
+        //            return db.Updateable<QsItemIpiReq>()
+        //                .SetColumns(s => s.IsPass == result)
+        //                .SetColumns(s => s.StatusUser == detail.CreateBy)
+        //                .SetColumns(s => s.CompleteTime == DateTime.Now)
+        //                .Where(s => s.Id == detail.Gid)
+        //                .ExecuteCommand();
+        //        });
+        //}
 
         return useTransactionWithOracle;
     }
@@ -390,7 +441,7 @@
 
         detail.CreateBy = detail.UpdateBy;
 
-        withOracle += autoResult(detail);
+        // withOracle += autoResult(detail);
 
         return withOracle;
     }
@@ -421,6 +472,19 @@
                 .ExecuteCommand();
         });
     }
+    
+     
+    //NOTES
+    public int saveNotesPid(QsItem dto)
+    {
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsItemIpiItem>()
+                .SetColumns(it =>it.Notes == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊�
+                .Where(it => it.Id == dto.pid)
+                .ExecuteCommand();
+        });
+    }
 
     //瀛欒〃淇敼澶囨敞瀛楁
     public int saveRemarksById(QsItem dto)
@@ -428,8 +492,7 @@
         return SqlSugarHelper.UseTransactionWithOracle(db =>
         {
             return db.Updateable<QsItemIpiItemDetail>()
-                .SetColumns(it =>
-                    it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊�
+                .SetColumns(it =>it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊�
                 .Where(it => it.Id == dto.id)
                 .ExecuteCommand();
         });
@@ -455,4 +518,73 @@
 
         return withOracle;
     }
+
+    public bool SJQaSubmit(QsItem item)
+    {
+
+        if (item == null)
+            throw new ArgumentNullException(nameof(item), "璐ㄦ椤规暟鎹笉鑳戒负绌�");
+
+        if (string.IsNullOrWhiteSpace(item.userNo))
+            throw new ArgumentException("鐢ㄦ埛缂栧彿涓嶈兘涓虹┖", nameof(item.userNo));
+
+        var (factory, company) = UserUtil.GetFactory(item.userNo);
+        try
+        {
+            // 瀹氫箟杈撳嚭鍙傛暟
+            var outputResult = new SugarParameter("o_Result", null, DbType.Int32, ParameterDirection.Output,
+                4000);
+
+            var outputMessage = new SugarParameter("o_Msg", null, DbType.String, ParameterDirection.Output, 4000);
+
+            // 瀹氫箟杈撳叆鍙傛暟
+            var parameters = new List<SugarParameter>
+         {
+
+             new("p_Id", item.gid, DbType.Int32,ParameterDirection.Input),
+             new("p_Flag", 1, DbType.Int32,ParameterDirection.Input),
+             new("p_User", item.userNo, DbType.String, ParameterDirection.Input),
+             outputResult,
+             outputMessage
+         };
+
+            var db = SqlSugarHelper.GetInstance();
+
+            // 浣跨敤 SqlSugar 鎵ц瀛樺偍杩囩▼
+            db.Ado.ExecuteCommand(
+                "BEGIN PRC_WOMDAA_SJ_UPDATE_RES(:p_Id,:p_Flag,:p_User,:o_Result, :o_Msg); END;",
+                parameters.ToArray());
+
+            // 鑾峰彇杈撳嚭鍙傛暟鐨勫��
+            var resultValue = outputResult.Value?.ToString();
+            var messageValue = outputMessage.Value?.ToString();
+
+            if ("1".Equals(resultValue)) { throw new Exception(messageValue); }
+            if ("0".Equals(resultValue)) { throw new Exception(messageValue); }
+
+            return true;
+        }
+        catch (Exception ex)
+        {
+            throw new Exception(ex.Message);
+        }
+    }
+
+    /// <summary>
+    /// 鏇存柊QsItemIpiItem鐨処sPass鍊�
+    /// </summary>
+    /// <param name="id">QsItemIpiItem鐨処D</param>
+    /// <param name="isPass">IsPass鐨勫��(0琛ㄧず涓嶅悎鏍�,1琛ㄧず鍚堟牸)</param>
+    /// <returns>鏇存柊褰卞搷鐨勮鏁�</returns>
+    public int UpdateQsItemIpiItemIsPass(decimal id, decimal isPass)
+    {
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsItemIpiItem>()
+                .SetColumns(s => s.IsPass == isPass)
+                .Where(s => s.Id == id)
+                .ExecuteCommand();
+        });
+    }
+
 }
\ No newline at end of file

--
Gitblit v1.9.3