From 38260f9d8bba59567844f19c5ce60576ce04a923 Mon Sep 17 00:00:00 2001
From: fcx <2246384483@qq.com>
Date: 星期一, 22 十二月 2025 15:01:34 +0800
Subject: [PATCH] 取消巡检不合格后自动生成巡检单逻辑

---
 StandardPda/MES.Service/service/QC/XJService.cs |  492 +++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 408 insertions(+), 84 deletions(-)

diff --git a/StandardPda/MES.Service/service/QC/XJService.cs b/StandardPda/MES.Service/service/QC/XJService.cs
index 87d9c7b..6350a1c 100644
--- a/StandardPda/MES.Service/service/QC/XJService.cs
+++ b/StandardPda/MES.Service/service/QC/XJService.cs
@@ -4,6 +4,8 @@
 using MES.Service.util;
 using SqlSugar;
 using System.Data;
+using System.Dynamic;
+using DbType = System.Data.DbType;
 
 namespace MES.Service.service.QC;
 
@@ -14,7 +16,7 @@
     private readonly BaseService _baseService = new();
 
 
-    private readonly string[] statusArray = ["寮�宸�", "寰呭紑宸�"];
+    private readonly string[] statusArray = ["宸插紑宸�", "寰呭紑宸�"];
 
     //鐢熸垚鏈�鏂扮殑妫�楠屽崟鍙�
     public string getMaxReleaseNo()
@@ -87,7 +89,7 @@
                 Daa001 = a.Daa001,
                 Daa003 = a.Daa003,
                 Daa008 = a.Daa008
-            }).ToList();
+            }).Distinct().ToList();
     }
 
     public List<MesItems> getBoardItem(string lineNo)
@@ -105,7 +107,7 @@
                     ItemNo = b.ItemNo,
                     ItemName = b.ItemName,
                     ItemModel = b.ItemModel
-                }).ToList();
+                }).Distinct().ToList();
     }
 
     //public (List<QsQaItemXj> item, int TotalCount) getPage(XJPageResult queryObj)
@@ -174,40 +176,45 @@
         var totalCount = 0;
 
         var pageList = db
-            .Queryable<QsQaItemXj, Womdaa, MesItems>((s, a, b) =>
+            .Queryable<QsQaItemXj, Womdaa, MesItems, Womcaa, MES_PROJECT>((s, a, b,c,d) =>
                 new JoinQueryInfos(
                     JoinType.Inner, s.BillNo == a.Daa001,
-                    JoinType.Left, s.ItemId == b.Id
+                    JoinType.Left, s.ItemId == b.Id,
+                    JoinType.Left,a.Daa021 == c.Caa001,
+                    JoinType.Left ,d.Id == c.Project
                 )
             )
 
             // 猸� 妯$硦鎼滅储锛圔illNo 鎴� ItemNo 鏂板
             .WhereIF(
                 StringUtil.IsNotNullOrEmpty(queryObj.SearchValue),
-                (s, a, b) =>
+                (s, a, b,c,d) =>
                     s.BillNo.Contains(queryObj.SearchValue) ||
-                    s.ItemNo.Contains(queryObj.SearchValue)
+                    s.ItemNo.Contains(queryObj.SearchValue) ||
+                    b.ItemName.Contains(queryObj.SearchValue)||
+                    a.Daa020.Contains(queryObj.SearchValue)||
+                    d.PROJECT_CODE.Contains(queryObj.SearchValue)
             )
 
             // 猸� 鐘舵�佺瓫閫夛細鏈畬鎴�
             .WhereIF(
                 StringUtil.IsNotNullOrEmpty(queryObj.result) &&
                 "鏈畬鎴�".Equals(queryObj.result),
-                (s, a, b) => s.Fsubmit == null || s.Fsubmit == 0
+                (s, a, b,c,d) => s.Fsubmit == null || s.Fsubmit == 0
             )
 
             // 猸� 鐘舵�佺瓫閫夛細宸插畬鎴�
             .WhereIF(
                 StringUtil.IsNotNullOrEmpty(queryObj.result) &&
                 !"鏈畬鎴�".Equals(queryObj.result),
-                (s, a, b) => s.Fsubmit == 1
+                (s, a, b,c,d) => s.Fsubmit == 1
             )
 
             // 猸� ID 鏌ヨ锛堝崟鏉★級
-            .WhereIF(id > 0, (s, a, b) => s.Id == id)
+            .WhereIF(id > 0, (s, a, b,c,d) => s.Id == id)
 
             // 猸� select 瀹炰綋杩斿洖
-            .Select((s, a, b) => new QsQaItemXj
+            .Select((s, a, b,c,d) => new QsQaItemXj
             {
                 Id = s.Id,
                 ReleaseNo = s.ReleaseNo,
@@ -232,7 +239,9 @@
                 // 猸� 棰濆瀛楁锛堟潵鑷繛琛級
                 PlanQty = a.Daa008,
                 ItemName = b.ItemName,
-                ItemModel = b.ItemModel
+                ItemModel = b.ItemModel,
+                DAA020 = a.Daa020,
+                PROJECT_CODE = d.PROJECT_CODE
             })
 
             .OrderBy(s => s.CreateDate, OrderByType.Desc)
@@ -251,7 +260,7 @@
 
             var sql = string.Format(
                 @"UPDATE QS_QA_ITEM_XJ
-              SET FSUBMIT = 1,
+              SET FSUBMIT = 1,FSUBMIT1 = 1,
                   FCHECK_RESU = '鎵嬪姩鍏抽棴'
               WHERE ID = '{0}'",
                 dto.id);
@@ -284,57 +293,335 @@
 
 
 
-    public bool XJQaSubmit(LLJDto rkjDto)
-    {
-        var useTransactionWithOracle =
-            SqlSugarHelper.UseTransactionWithOracle(db =>
-            {
-                return db.Updateable<QsQaItemXj>()
-                    .SetColumns(s => s.Fsubmit == 1)
-                    .SetColumns(s => s.FsubmitBy == rkjDto.userNo)
-                    .SetColumns(s => s.FsubmitDate == DateTime.Now)
-                    .Where(s => s.Id == rkjDto.gid)
-                    .ExecuteCommand();
-            });
+    //public bool XJQaSubmit(LLJDto rkjDto)
+    //{
+    //    var useTransactionWithOracle =
+    //        SqlSugarHelper.UseTransactionWithOracle(db =>
+    //        {
+    //            return db.Updateable<QsQaItemXj>()
+    //                .SetColumns(s => s.Fsubmit == 1)
+    //                .SetColumns(s => s.FsubmitBy == rkjDto.userNo)
+    //                .SetColumns(s => s.FsubmitDate == DateTime.Now)
+    //                .Where(s => s.Id == rkjDto.gid)
+    //                .ExecuteCommand();
+    //        });
 
-        return useTransactionWithOracle > 0;
+    //    return useTransactionWithOracle > 0;
+    //}
+
+
+    public ResponseResult XJQaSubmit(LLJDto rkjDto)
+    {
+        try
+        {
+            //------------------ 涓嶅悎鏍煎浘鐗囨槸鍚︿笂浼犳牎楠� ------------------
+            var sql2 =
+                @"select A.id, A.PROJ_NAME, B.id as id2
+                  from QS_QA_ITEM_XJ01 A
+                  left join MES_QS_IMAGE B on 666 || A.ID = B.FID
+                  where A.PID = '" + rkjDto.gid + @"' 
+                    and B.id is null 
+                    and IS_PASS = 0";
+
+            var dt2 = SQLHelper.ExecuteQuery(sql2);
+            if (dt2.Rows.Count > 0)
+            {
+                string err = "";
+                for (int i = 0; i < dt2.Rows.Count; i++)
+                {
+                    err += "銆�" + dt2.Rows[i]["PROJ_NAME"].ToString() + "銆�";
+                }
+
+                return new ResponseResult
+                {
+                    status = 1,
+                    message = err + "涓嶅悎鏍煎浘鐗囨湭涓婁紶锛�",
+                    data = ""
+                };
+            }
+            //------------------ 蹇呭~椤瑰浘鐗囨槸鍚︿笂浼犳牎楠� ------------------
+            var sql3 =
+                @"select A.id, A.PROJ_NAME, B.id as id2
+                  from QS_QA_ITEM_XJ01 A
+                  left join MES_QS_IMAGE B on 666 || A.ID = B.FID
+                  where A.PID = '" + rkjDto.gid + @"'
+                    and B.id is null
+                    and UP_FILE = 1";
+
+            var dt3 = SQLHelper.ExecuteQuery(sql3);
+            if (dt3.Rows.Count > 0)
+            {
+                string err = "";
+                for (int i = 0; i < dt3.Rows.Count; i++)
+                {
+                    err += "銆�" + dt3.Rows[i]["PROJ_NAME"].ToString() + "銆�";
+                }
+
+                return new ResponseResult
+                {
+                    status = 1,
+                    message = err + "蹇呭~椤瑰浘鐗囨湭涓婁紶锛�",
+                    data = ""
+                };
+            }
+
+            //------------------ 鏂板鏍¢獙锛氭鏌ユ槸鍚﹀瓨鍦ㄦ湭瀹屾垚锛圛S_PASS is null锛� ------------------
+            var sqlPass =
+                @"select ID, PROJ_NAME 
+                  from QS_QA_ITEM_XJ01
+                  where PID = '" + rkjDto.gid + @"'
+                    and IS_PASS is null";
+
+            var dtPass = SQLHelper.ExecuteQuery(sqlPass);
+            if (dtPass.Rows.Count > 0)
+            {
+                string err = "";
+                for (int i = 0; i < dtPass.Rows.Count; i++)
+                {
+                    err += "銆�" + dtPass.Rows[i]["PROJ_NAME"].ToString() + "銆�";
+                }
+
+                return new ResponseResult
+                {
+                    status = 1,
+                    message = "",
+                    data = err + "椤圭洰鏈畬鎴愶紝涓嶅厑璁告彁浜ゆ楠岋紒"
+                };
+            }
+            var sqlPass1 =
+     @"select FCHECK_RESU
+      from QS_QA_ITEM_XJ
+      where ID = '" + rkjDto.gid + "'";
+            var dt = SQLHelper.ExecuteQuery(sqlPass1);
+
+
+
+
+            var sqlPass3 = $@"select ID from  QS_QA_ITEM_XJ 
+    WHERE ID = '{rkjDto.gid}'
+    ";
+            var dtPass3 = SQLHelper.ExecuteQuery(sqlPass3);
+
+            var value4 = dtPass3.Rows[0][0];
+            int sqlPass2 = Convert.ToInt32(value4);
+
+
+            if (dt.Rows.Count > 0)
+            {
+                var resu = dt.Rows[0]["FCHECK_RESU"]?.ToString();
+
+                var fsubmit1 = resu == "鍚堟牸" ? 1 : 0;
+
+                var sqlUpdate =
+                    @"update QS_QA_ITEM_XJ
+          set FSUBMIT1 = " + fsubmit1 + @"
+          where ID = '" + rkjDto.gid + "'";
+                SQLHelper.ExecuteNonQuery(sqlUpdate);
+            }
+
+        //    var resu1 = dt.Rows[0]["FCHECK_RESU"]?.ToString();
+
+        //    var fsubmit2 = resu1 == "鍚堟牸" ? 1 : 0;
+
+
+        //    if (fsubmit2 == 0)
+        //    {
+        //        var db = SqlSugarHelper.GetInstance();
+
+        //        // ===== 杈撳嚭鍙傛暟 =====
+        //        var outFlag = new SugarParameter("P_FLAG", null,
+        //            DbType.Int32, ParameterDirection.Output, 10);
+
+        //        var outText = new SugarParameter("P_TEXT", null,
+        //            DbType.String, ParameterDirection.Output, 4000);
+
+        //        // ===== 杈撳叆鍙傛暟 =====
+        //        var parameters = new List<SugarParameter>
+        //{
+        //    new SugarParameter("P_ID", sqlPass2, DbType.Int64, ParameterDirection.Input),
+        //    new SugarParameter("P_USER", rkjDto.userNo, DbType.String, ParameterDirection.Input),
+        //    new SugarParameter("P_ISH", 0, DbType.Int64, ParameterDirection.Input),
+        //    new SugarParameter("P_RELEASE_NO",rkjDto.releaseNo,DbType.String,ParameterDirection.Input),
+
+        //    // 杈撳嚭鍙傛暟蹇呴』甯︿笂
+        //    outFlag,
+        //    outText
+        //};
+        //        // ===== 鎵ц瀛樺偍杩囩▼ =====
+        //        db.Ado.ExecuteCommand(
+        //            "BEGIN PRC_XJ_GENERATE_two(:P_ID, :P_USER, :P_ISH,:P_RELEASE_NO, :P_FLAG, :P_TEXT); END;",
+        //            parameters);
+
+        //        // ===== 璇诲彇杈撳嚭鍙傛暟骞惰浆鎹㈡垚 ResponseResult =====
+        //        var result = new ResponseResult
+        //        {
+        //            status = outFlag.Value?.ToString() == "1" ? 1 : 0, // 0 琛ㄧず鎴愬姛锛�1 琛ㄧず澶辫触
+        //            message = outText.Value?.ToString()
+        //        };
+
+        //        var useTransactionWithOracle1 =
+        //        SqlSugarHelper.UseTransactionWithOracle(db =>
+        //        {
+        //            return db.Updateable<QsQaItemXj>()
+        //                .SetColumns(s => s.Fsubmit == 1)
+        //                .SetColumns(s => s.FsubmitBy == rkjDto.userNo)
+        //                .SetColumns(s => s.FsubmitDate == DateTime.Now)
+        //                .Where(s => s.Id == rkjDto.gid)
+        //                .ExecuteCommand();
+        //        });
+        //        return new ResponseResult
+        //        {
+        //            status = 0,
+        //            message = "鎻愪氦鎴愬姛",
+        //            data = useTransactionWithOracle1
+        //        };
+        //    }
+
+
+            var useTransactionWithOracle =
+                SqlSugarHelper.UseTransactionWithOracle(db =>
+                {
+                    return db.Updateable<QsQaItemXj>()
+                        .SetColumns(s => s.Fsubmit == 1)
+                        .SetColumns(s => s.FsubmitBy == rkjDto.userNo)
+                        .SetColumns(s => s.FsubmitDate == DateTime.Now)
+                        .Where(s => s.Id == rkjDto.gid)
+                        .ExecuteCommand();
+                });
+            return new ResponseResult
+            {
+                status = 0,
+                message = "鎻愪氦鎴愬姛",
+                data = useTransactionWithOracle
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
     }
 
-    public List<QsQaItemXj01> setJYItem(string itemNo)
+
+
+
+
+
+
+
+
+
+
+    //public List<QsQaItemXj01> setJYItem(string itemNo,string releaseNo)
+    //{
+    //    var db = SqlSugarHelper.GetInstance();
+
+    //    var count = db.Queryable<MesQa>().Where(s => s.QsType == "2"
+    //        && s.ItemNo == itemNo && s.Fsubmit == 1).Count();
+
+    //    if (count <= 0) return new List<QsQaItemXj01>();
+
+    //    return db
+    //        .Queryable<MesQualityStandard>()
+    //        .Where(b => b.QsType == "2"
+    //                    && b.ItemNo == itemNo).Select(b => new QsQaItemXj01
+    //        {
+    //            ProjName = b.ProjName,
+    //            ItemMod = b.ItemMod,
+    //            InspectionMethod = b.InspectionMethod,
+    //            UsingInstruments = b.UsingInstruments,
+    //            LevelNum = SqlFunc.IsNull(
+    //                SqlFunc.IsNull(b.LevelNum * b.InspectionLevel, 1),
+    //                b.InspectionLevel),
+    //            MaxValue = b.MaxValue,
+    //            StandardValue = b.StandardValue,
+    //            MinValue = b.MinValue,
+    //            Notes = b.Notes,
+    //            FcheckLevel = b.FcheckLevel,
+    //            FacLevel = b.FacLevel,
+    //            QsCode = b.QsCode,
+    //            QsName = b.QsName,
+    //            result = "鏈娴�",
+    //            isCheck = 0,
+    //            Picture = b.Picture,
+    //            Picturename = b.Picturename
+    //        }).ToList();
+    //}
+
+
+
+    public List<QsQaItemXj01> setJYItem(string itemNo, string releaseNo)
+{
+    var db = SqlSugarHelper.GetInstance();
+
+    var count = db.Queryable<MesQa>().Where(s => s.QsType == "2"
+        && s.ItemNo == itemNo && s.Fsubmit == 1).Count();
+
+    if (count <= 0) return new List<QsQaItemXj01>();
+
+    // 鏍规嵁宸℃鍗曞彿鍜岀墿鏂欑紪鐮佽幏鍙朠ROCESS_LIST
+    var processListQuery = db.Queryable<QsQaItemXj>()
+        .Where(xj => xj.ReleaseNo == releaseNo && xj.ItemNo == itemNo)
+        .Select(xj => xj.PROCESS_LIST)
+        .ToList();
+
+    // 濡傛灉娌℃湁鎵惧埌瀵瑰簲鐨凱ROCESS_LIST,杩斿洖绌哄垪琛�
+    if (processListQuery == null || processListQuery.Count == 0)
     {
-        var db = SqlSugarHelper.GetInstance();
-
-        var count = db.Queryable<MesQa>().Where(s => s.QsType == "2"
-            && s.ItemNo == itemNo && s.Fsubmit == 1).Count();
-
-        if (count <= 0) return new List<QsQaItemXj01>();
-
-        return db
-            .Queryable<MesQualityStandard>()
-            .Where(b => b.QsType == "2"
-                        && b.ItemNo == itemNo).Select(b => new QsQaItemXj01
-            {
-                ProjName = b.ProjName,
-                ItemMod = b.ItemMod,
-                InspectionMethod = b.InspectionMethod,
-                UsingInstruments = b.UsingInstruments,
-                LevelNum = SqlFunc.IsNull(
-                    SqlFunc.IsNull(b.LevelNum * b.InspectionLevel, 1),
-                    b.InspectionLevel),
-                MaxValue = b.MaxValue,
-                StandardValue = b.StandardValue,
-                MinValue = b.MinValue,
-                Notes = b.Notes,
-                FcheckLevel = b.FcheckLevel,
-                FacLevel = b.FacLevel,
-                QsCode = b.QsCode,
-                QsName = b.QsName,
-                result = "鏈娴�",
-                isCheck = 0,
-                Picture = b.Picture,
-                Picturename = b.Picturename
-            }).ToList();
+        return new List<QsQaItemXj01>();
     }
+
+    return db
+        .Queryable<MesQualityStandard>()
+        .Where(b => b.QsType == "2"
+                    && b.ItemNo == itemNo
+                    && processListQuery.Contains(b.PROCESS))  // 杩囨护鏉′欢
+        .Select(b => new QsQaItemXj01
+        {
+            ProjName = b.ProjName,
+            ItemMod = b.ItemMod,
+            InspectionMethod = b.InspectionMethod,
+            UsingInstruments = b.UsingInstruments,
+            LevelNum = SqlFunc.IsNull(
+                SqlFunc.IsNull(b.LevelNum * b.InspectionLevel, 1),
+                b.InspectionLevel),
+            MaxValue = b.MaxValue,
+            StandardValue = b.StandardValue,
+            MinValue = b.MinValue,
+            Notes = b.Notes,
+            FcheckLevel = b.FcheckLevel,
+            FacLevel = b.FacLevel,
+            QsCode = b.QsCode,
+            QsName = b.QsName,
+            result = "鏈娴�",
+            isCheck = 0,
+            UP_FILE = b.UP_FILE
+        }).ToList();
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
     public List<QsQaItemXj01> getJYItem(decimal? pid, decimal? id)
     {
@@ -466,7 +753,7 @@
         var items = xjDto.items;
         var userNo = xjDto.userNo;
 
-        // 鉁� 浣跨敤 lambda 杩斿洖鎻掑叆鏉℃暟锛屼繚璇� Func<SqlSugarClient, int> 姣忔潯璺緞閮芥湁杩斿洖鍊�
+       
         int insertCount = SqlSugarHelper.UseTransactionWithOracle(db =>
         {
             // 1锔忊儯 妫�鏌ヨ〃閲屾槸鍚﹀瓨鍦ㄧ浉鍚� gid 鐨勬暟鎹�
@@ -733,25 +1020,6 @@
 
 
 
-    /// <summary>
-    /// 鑾峰彇宸℃妫�鍗曟墍鏈変笉鑹弿杩�
-    /// </summary>
-    /// <param name="id">妫�楠屽崟ID</param>
-    /// <returns>涓嶈壇鎻忚堪鏁版嵁琛�</returns>
-    public DataTable ggetBlmsItem1(string id)
-    {
-        OracleSQLHelper SQLHelper = new();
-        // 鏌ヨ棣栨妫�楠屽崟鐨勪笉鑹弿杩�
-        var sql1 = string.Format(
-            @"select PROJ_NAME, REMARKS 
-              from QS_QA_ITEM_XJ01 f 
-              where PID = '" + id + "' and REMARKS is not null  order by PROJ_NAME");
-
-        return SQLHelper.ExecuteQuery(sql1);
-    }
-
-
-
 
     //瀛欒〃淇敼澶囨敞瀛楁
     public int saveRemarksById(XJDto dto)
@@ -764,10 +1032,66 @@
                 .Where(it => it.Id == dto.id)
                 .ExecuteCommand();
         });
-
-
-
-
-
     }
+
+    /// <summary>
+    /// 娣诲姞宸℃鍗�
+    /// </summary>
+    public ResponseResult createInspection(CreateInspectionDto data)
+    {
+        try
+        {
+            
+
+            OracleSQLHelper SQLHelper = new();
+            var db = SqlSugarHelper.GetInstance();
+            // ===== 杈撳嚭鍙傛暟 =====
+            var outFlag = new SugarParameter("P_FLAG", null,
+                DbType.Int32, ParameterDirection.Output, 10);
+
+            var outText = new SugarParameter("P_TEXT", null,
+                DbType.String, ParameterDirection.Output, 4000);
+
+            // ===== 杈撳叆鍙傛暟 =====
+            var parameters = new List<SugarParameter>
+        {
+            new SugarParameter("P_line_type", data.LineNo, DbType.String, ParameterDirection.Input),
+            new SugarParameter("P_Work_order_number", data.Daa001, DbType.String, ParameterDirection.Input),
+            new SugarParameter("P_coding", data.ItemNo, DbType.String, ParameterDirection.Input),
+            new SugarParameter("P_USER", data.account, DbType.String, ParameterDirection.Input),
+            new SugarParameter("P_ISH", 0, DbType.Int64, ParameterDirection.Input),
+
+            // 杈撳嚭鍙傛暟蹇呴』甯︿笂
+            outFlag,
+            outText
+        };
+            // ===== 鎵ц瀛樺偍杩囩▼ =====
+            db.Ado.ExecuteCommand(
+                "BEGIN PRC_XJ_GENERATE_one(:P_line_type,:P_Work_order_number,:P_coding, :P_USER, :P_ISH, :P_FLAG, :P_TEXT); END;",
+                parameters);
+
+            // ===== 璇诲彇杈撳嚭鍙傛暟骞惰浆鎹㈡垚 ResponseResult =====
+            var result = new ResponseResult
+            {
+                status = outFlag.Value?.ToString() == "1" ? 1 : 0, // 0 琛ㄧず鎴愬姛锛�1 琛ㄧず澶辫触
+                message = outText.Value?.ToString()
+            };
+
+
+            return result;
+            //return new ResponseResult
+            //{
+            //    status = 0,
+            //    message = "OK",
+            //    data = result
+            //};
+
+
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
 }
\ No newline at end of file

--
Gitblit v1.9.3