From a619299816f2f632c7c6ba3a1bb869e2c212797d Mon Sep 17 00:00:00 2001
From: fcx <2246384483@qq.com>
Date: 星期五, 19 十二月 2025 14:12:33 +0800
Subject: [PATCH] 对添加巡检单物料编码进行去重

---
 StandardPda/MES.Service/service/QC/XJService.cs | 1090 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 1,090 insertions(+), 0 deletions(-)

diff --git a/StandardPda/MES.Service/service/QC/XJService.cs b/StandardPda/MES.Service/service/QC/XJService.cs
new file mode 100644
index 0000000..09fa801
--- /dev/null
+++ b/StandardPda/MES.Service/service/QC/XJService.cs
@@ -0,0 +1,1090 @@
+锘縰sing MES.Service.DB;
+using MES.Service.Dto.service;
+using MES.Service.Modes;
+using MES.Service.util;
+using SqlSugar;
+using System.Data;
+using System.Dynamic;
+using DbType = System.Data.DbType;
+
+namespace MES.Service.service.QC;
+
+public class XJService
+{
+    private static readonly OracleSQLHelper SQLHelper = new();
+
+    private readonly BaseService _baseService = new();
+
+
+    private readonly string[] statusArray = ["宸插紑宸�", "寰呭紑宸�"];
+
+    //鐢熸垚鏈�鏂扮殑妫�楠屽崟鍙�
+    public string getMaxReleaseNo()
+    {
+        var sql =
+            string.Format(
+                "select max(RELEASE_NO) from QS_QA_ITEM_XJ where RELEASE_NO like 'XJN%' and to_char(CREATE_DATE,'yyyy-mm-dd') = '{0}'",
+                DateTime.Now.ToString("yyyy-MM-dd"));
+
+        var executeScalar = SQLHelper.ExecuteScalar(sql);
+        var date = DateTime.Now.ToString("yyMMdd");
+        var number = "0001";
+        var olReleaseNo = executeScalar.ToString();
+        //鍒ゆ柇浠婂ぉ鏄惁鐢熸垚浜嗗贰妫�鍗�
+        if (string.IsNullOrEmpty(olReleaseNo)) return "XJN" + date + number;
+        //鎴彇鍚庡洓浣嶇殑娴佹按鍙风疮鍔�
+        var substring = Convert.ToInt32(olReleaseNo.Substring(10));
+        substring += 1;
+        number = substring.ToString("D4");
+
+        //濡傛灉涓虹┖鐩存帴杩斿洖0001
+        return "XJN" + date + number;
+    }
+
+    public List<Womdaa> getItem(string daa001)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        //in鐨勫啓娉� https://www.donet5.com/Home/Doc?typeId=1187
+
+        return db.Queryable<Womdaa>()
+            .Where(a =>
+                a.Daa001 == daa001 &&
+                statusArray.Contains(a.Daa018))
+            .ToList();
+    }
+
+    public List<MesLine> getLineAll()
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        return db.Queryable<Womdaa, MesLine>((a, b) =>
+                new JoinQueryInfos(JoinType.Left, a.Daa015 == b.LineNo))
+            .Where((a, b) => b.LineName != null &&
+                             statusArray.Contains(a.Daa018))
+            .GroupBy((a, b) => new
+            {
+                b.LineNo,
+                b.LineName
+            })
+            .Select((a, b) => new MesLine
+            {
+                LineNo = b.LineNo,
+                LineName = b.LineName
+            }).OrderBy("b.LINE_NO").ToList();
+    }
+
+    public List<Womdaa> getDaa001(string daa020, string item)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        return db.Queryable<Womdaa, MesItems>((a, b) =>
+                new JoinQueryInfos(JoinType.Inner, a.Daa002 == b.Id.ToString()))
+            .Where((a, b) =>
+                a.Daa015 == daa020 &&
+                b.ItemNo == item &&
+                statusArray.Contains(a.Daa018))
+            .Select<Womdaa>(a => new Womdaa
+            {
+                Id = a.Id,
+                Daa001 = a.Daa001,
+                Daa003 = a.Daa003,
+                Daa008 = a.Daa008
+            }).Distinct().ToList();
+    }
+
+    public List<MesItems> getBoardItem(string lineNo)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        return db.Queryable<Womdaa, MesItems>((a, b) =>
+                new JoinQueryInfos(JoinType.Inner, a.Daa002 == b.Id.ToString()))
+            .Where((a, b) => statusArray.Contains(a.Daa018) &&
+                             a.Daa015 == lineNo)
+            .OrderBy((a, b) => b.ItemName)
+            .Select<MesItems>((a, b) =>
+                new MesItems
+                {
+                    Id = b.Id,
+                    ItemNo = b.ItemNo,
+                    ItemName = b.ItemName,
+                    ItemModel = b.ItemModel
+                }).Distinct().ToList();
+    }
+
+    //public (List<QsQaItemXj> item, int TotalCount) getPage(XJPageResult queryObj)
+    //{
+    //    var db = SqlSugarHelper.GetInstance();
+
+    //    var id = Convert.ToDecimal(queryObj.id);
+
+    //    var totalCount = 0;
+
+    //    string[]? lineNo = null;
+
+    //    // if (StringUtil.IsNotNullOrEmpty(queryObj.createUser))
+    //    //     lineNo = _baseService.getUserLineNo(queryObj.createUser);
+
+    //    var pageList = db
+    //        .Queryable<QsQaItemXj, Womdaa,
+    //            MesItems>((s, a,  b) =>
+    //            new JoinQueryInfos(
+    //                JoinType.Inner, s.BillNo == a.Daa001,
+    //                JoinType.Left, s.ItemId == b.Id
+    //            )
+    //        )
+
+    //        .WhereIF(
+    //            StringUtil.IsNotNullOrEmpty(queryObj.result) &&
+    //            "鏈畬鎴�".Equals(queryObj.result),
+    //            (s, a,  b) => s.Fsubmit == null || s.Fsubmit == 0)
+    //        // .WhereIF(
+    //        //     StringUtil.IsNotNullOrEmpty(queryObj.result) &&
+    //        //     !"鏈畬鎴�".Equals(queryObj.result),
+    //        //     (s, a,  b) => s.FcheckResu != null)
+    //        .WhereIF(
+    //            StringUtil.IsNotNullOrEmpty(queryObj.result) &&
+    //            !"鏈畬鎴�".Equals(queryObj.result),
+    //            (s, a,  b) => s.Fsubmit == 1)
+    //        .WhereIF(id > 0, (s, a, b) => s.Id == id)
+    //        .Select((s, a,  b) => new QsQaItemXj
+    //        {
+    //            Id = s.Id,
+    //            PlanQty = a.Daa008,
+    //            CreateBy = s.CreateBy,
+    //            CreateDate = s.CreateDate,
+    //            ReleaseNo = s.ReleaseNo,
+    //            ItemNo = s.ItemNo,
+    //            BillNo = s.BillNo,
+    //            ItemName = b.ItemName,
+    //            ItemModel = b.ItemModel,
+    //            FcheckBy = s.FcheckBy,
+    //            FcheckResu = s.FcheckResu,
+    //            Remarks = s.Remarks,
+    //            Fsubmit = s.Fsubmit,
+    //            FcheckDate = s.FcheckDate,
+    //            FsubmitBy = s.FsubmitBy
+    //        }).OrderBy(s => s.CreateDate, OrderByType.Desc)
+    //        .ToPageList(queryObj.PageIndex, queryObj.Limit, ref totalCount);
+
+    //    return (pageList, totalCount);
+    //}
+
+    public (List<QsQaItemXj> item, int TotalCount) getPage(XJPageResult queryObj)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        var id = Convert.ToDecimal(queryObj.id);
+        var totalCount = 0;
+
+        var pageList = db
+            .Queryable<QsQaItemXj, Womdaa, MesItems>((s, a, b) =>
+                new JoinQueryInfos(
+                    JoinType.Inner, s.BillNo == a.Daa001,
+                    JoinType.Left, s.ItemId == b.Id
+                )
+            )
+
+            // 猸� 妯$硦鎼滅储锛圔illNo 鎴� ItemNo 鏂板
+            .WhereIF(
+                StringUtil.IsNotNullOrEmpty(queryObj.SearchValue),
+                (s, a, b) =>
+                    s.BillNo.Contains(queryObj.SearchValue) ||
+                    s.ItemNo.Contains(queryObj.SearchValue)
+            )
+
+            // 猸� 鐘舵�佺瓫閫夛細鏈畬鎴�
+            .WhereIF(
+                StringUtil.IsNotNullOrEmpty(queryObj.result) &&
+                "鏈畬鎴�".Equals(queryObj.result),
+                (s, a, b) => s.Fsubmit == null || s.Fsubmit == 0
+            )
+
+            // 猸� 鐘舵�佺瓫閫夛細宸插畬鎴�
+            .WhereIF(
+                StringUtil.IsNotNullOrEmpty(queryObj.result) &&
+                !"鏈畬鎴�".Equals(queryObj.result),
+                (s, a, b) => s.Fsubmit == 1
+            )
+
+            // 猸� ID 鏌ヨ锛堝崟鏉★級
+            .WhereIF(id > 0, (s, a, b) => s.Id == id)
+
+            // 猸� select 瀹炰綋杩斿洖
+            .Select((s, a, b) => new QsQaItemXj
+            {
+                Id = s.Id,
+                ReleaseNo = s.ReleaseNo,
+                FcheckDate = s.FcheckDate,
+                FcheckBy = s.FcheckBy,
+                ItemNo = s.ItemNo,
+                FcheckResu = s.FcheckResu,
+                CreateBy = s.CreateBy,
+                CreateDate = s.CreateDate,
+                LastupdateBy = s.LastupdateBy,
+                LastupdateDate = s.LastupdateDate,
+                Modify1By = s.Modify1By,
+                ItemUnit = s.ItemUnit,
+                BillNo = s.BillNo,
+                MoidNum = s.MoidNum,
+                FsubmitBy = s.FsubmitBy,
+                FsubmitDate = s.FsubmitDate,
+                Fsubmit = s.Fsubmit,
+                Remarks = s.Remarks,
+                ItemId = s.ItemId,
+
+                // 猸� 棰濆瀛楁锛堟潵鑷繛琛級
+                PlanQty = a.Daa008,
+                ItemName = b.ItemName,
+                ItemModel = b.ItemModel
+            })
+
+            .OrderBy(s => s.CreateDate, OrderByType.Desc)
+
+            .ToPageList(queryObj.PageIndex, queryObj.Limit, ref totalCount);
+
+        return (pageList, totalCount);
+    }
+
+
+    public object CloseInspection(XJCloseInspectionDto dto)
+    {
+        try
+        {
+            var db = SqlSugarHelper.GetInstance();
+
+            var sql = string.Format(
+                @"UPDATE QS_QA_ITEM_XJ
+              SET FSUBMIT = 1,FSUBMIT1 = 1,
+                  FCHECK_RESU = '鎵嬪姩鍏抽棴'
+              WHERE ID = '{0}'",
+                dto.id);
+
+            db.Ado.ExecuteCommand(sql);
+
+            return new ResponseResult
+            {
+                status = 0,
+                message = "OK",
+                data = "鍏抽棴鎴愬姛"
+            };
+        }
+        catch (Exception ex)
+        {
+            return ResponseResult.ResponseError(ex);
+        }
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    //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;
+    //}
+
+
+    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,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)
+    {
+        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)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        var qsQaItemXj01s = db.Queryable<QsQaItemXj01>()
+            .WhereIF(pid > 0, a => a.Pid == pid)
+            .WhereIF(id > 0, a => a.Id == id)
+            .ToList();
+
+        var array = qsQaItemXj01s.Select(s => s.Id).ToArray();
+        var qsQaItemDetails = db.Queryable<QsQaItemXj02>()
+            .Where(s => array.Contains(s.Pid))
+            .GroupBy(s => s.Pid)
+            .Select(s => new
+            {
+                s.Pid,
+                count = SqlFunc.AggregateCount(s.Id)
+            }).ToList();
+
+        qsQaItemXj01s.ForEach(s =>
+        {
+            var find = qsQaItemDetails.Find(a => s.Id == a.Pid);
+            if (find == null)
+            {
+                s.isCheck = 0;
+                s.result = "鏈畬鎴�";
+            }
+            else
+            {
+                s.isCheck = find.count;
+                if (find.count == s.LevelNum && s.IsPass == 1)
+                    s.result = "鍚堟牸";
+                else if (find.count == s.LevelNum && s.IsPass == 0)
+                    s.result = "涓嶅悎鏍�";
+                else
+                    s.result = "鏈畬鎴�";
+            }
+
+            //杩囨护鍑哄浘鐗噄d涓嶄负绌虹殑鏁版嵁杞负base64
+            if (s.Picture is { Length: > 0 })
+                s.imageData = Convert.ToBase64String(s.Picture);
+        });
+
+        //鎺掑簭锛屾湭瀹屾垚鐨勬帓鍦ㄥ墠闈�
+        qsQaItemXj01s = qsQaItemXj01s.OrderBy(s => s.isCheck).ToList();
+
+        return qsQaItemXj01s;
+    }
+
+
+    public int save(XJDto xjDto)
+    {
+        var xj = xjDto.from;
+        var items = xjDto.items;
+        var userNo = xjDto.userNo;
+
+        SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            var commit = 0;
+
+            xj.CreateBy = userNo;
+            xj.CreateDate = DateTime.Now;
+
+            var pid = db.Insertable(xj).ExecuteReturnIdentity();
+
+            xj.Id = pid;
+
+            xjDto.gid = pid;
+
+            foreach (var item in items) item.Pid = pid;
+
+            commit += db.Insertable(items).ExecuteCommand();
+
+            return commit;
+        });
+
+        xjDto.items = getJYItem(xj.Id, null);
+
+        xjDto.items.ForEach(s =>
+        {
+            if (s.MaxValue != null || s.StandardValue != null ||
+                s.MinValue != null) return;
+            var detail = new QsQaItemXj02();
+            detail.Pid = s.Id;
+            detail.Gid = xjDto.gid;
+            detail.Fstand = "鈭�";
+            detail.FcheckResu = "1";
+            detail.UpdateBy = xjDto.userNo;
+            detail.count = (int?)s.LevelNum;
+            SetQSItemDetail(detail);
+        });
+
+        return Convert.ToInt32(xj.Id);
+    }
+
+    //public int saveItem(XJDto xjDto)
+    //{
+    //    var items = xjDto.items;
+    //    var userNo = xjDto.userNo;
+
+    //    SqlSugarHelper.UseTransactionWithOracle(db =>
+    //    {
+    //        foreach (var item in items) item.Pid = xjDto.gid;
+
+    //        return db.Insertable(items).ExecuteCommand();
+    //    });
+
+    //    xjDto.items = getJYItem(xjDto.gid, null);
+
+    //    xjDto.items.ForEach(s =>
+    //    {
+    //        if (s.MaxValue != null || s.StandardValue != null ||
+    //            s.MinValue != null) return;
+    //        var detail = new QsQaItemXj02();
+    //        detail.Pid = s.Id;
+    //        detail.Gid = xjDto.gid;
+    //        detail.Fstand = "鈭�";
+    //        detail.FcheckResu = "1";
+    //        detail.UpdateBy = xjDto.userNo;
+    //        detail.count = (int?)s.LevelNum;
+    //        SetQSItemDetail(detail);
+    //    });
+
+    //    return Convert.ToInt32(xjDto.gid);
+    //}
+
+    public int saveItem(XJDto xjDto)
+    {
+        var items = xjDto.items;
+        var userNo = xjDto.userNo;
+
+       
+        int insertCount = SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            // 1锔忊儯 妫�鏌ヨ〃閲屾槸鍚﹀瓨鍦ㄧ浉鍚� gid 鐨勬暟鎹�
+            var existingCount = db.Queryable<QsQaItemXj01>()
+                                  .Count(s => s.Pid == xjDto.gid);
+
+            // 2锔忊儯 濡傛灉瀛樺湪锛屽垯鍏堝垹闄�
+            if (existingCount > 0)
+            {
+                db.Deleteable<QsQaItemXj01>()
+                  .Where(s => s.Pid == xjDto.gid)
+                  .ExecuteCommand();
+            }
+
+            // 3锔忊儯 缁欐瘡鏉℃槑缁嗚缃� Pid 骞舵彃鍏ワ紝杩斿洖鎻掑叆鏉℃暟
+            foreach (var item in items)
+            {
+                item.Pid = xjDto.gid;
+            }
+
+            return db.Insertable(items).ExecuteCommand();
+        });
+
+        // 4锔忊儯 閲嶆柊鑾峰彇鎻掑叆鍚庣殑鏄庣粏
+        xjDto.items = getJYItem(xjDto.gid, null);
+
+        // 5锔忊儯 瀵规病鏈� Max/Min/StandardValue 鐨勬槑缁嗙敓鎴愰粯璁ゆ娴嬬粨鏋�
+        foreach (var s in xjDto.items)
+        {
+            if (s.MaxValue != null || s.StandardValue != null || s.MinValue != null)
+                continue;
+
+            var detail = new QsQaItemXj02
+            {
+                Pid = s.Id,
+                Gid = xjDto.gid,
+                Fstand = "鈭�",
+                FcheckResu = "1",
+                UpdateBy = xjDto.userNo,
+                count = (int?)s.LevelNum
+            };
+            SetQSItemDetail(detail);
+        }
+
+        // 6锔忊儯 杩斿洖鎻掑叆鏉℃暟
+        return insertCount;
+    }
+
+
+
+
+    public XJDto getXjDetail02ById(decimal? id)
+    {
+        var xjDto = new XJDto();
+
+        var db = SqlSugarHelper.GetInstance();
+        var qsQaItemXj01 =
+            db.Queryable<QsQaItemXj01>().Single(s => s.Id == id);
+
+        if (qsQaItemXj01.IsPass == 0)
+            qsQaItemXj01.result = "涓嶅悎鏍�";
+        else if (qsQaItemXj01.IsPass == 1)
+            qsQaItemXj01.result = "鍚堟牸";
+        else
+            qsQaItemXj01.result = "鏈畬鎴�";
+
+        if (qsQaItemXj01.Picture is { Length: > 0 })
+            qsQaItemXj01.imageData =
+                Convert.ToBase64String(qsQaItemXj01.Picture);
+
+        xjDto.ItemXj01 = qsQaItemXj01;
+
+
+        xjDto.ItemXj02s = db.Queryable<QsQaItemXj02>().Where(s => s.Pid == id)
+            .ToList();
+
+        return xjDto;
+    }
+
+    public int SetQSItemDetail(QsQaItemXj02 detail)
+    {
+        var oracle = SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            List<QsQaItemXj02> result = new();
+            for (var i = 0; i < detail.count; i++)
+            {
+                var item = new QsQaItemXj02();
+                item.Gid = detail.Gid;
+                item.Pid = detail.Pid;
+                item.Fstand = detail.Fstand;
+                item.FcheckResu = detail.FcheckResu;
+                item.CreateBy = detail.UpdateBy;
+                item.CreateDate = DateTime.Now;
+                result.Add(item);
+            }
+
+            return db.Insertable(result).ExecuteCommand();
+        });
+
+        detail.CreateBy = detail.UpdateBy;
+
+        autoResult(detail);
+
+        return oracle;
+    }
+
+    private int autoResult(QsQaItemXj02 detail)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        // Single 娌℃湁鏌ヨ鍒扮粨鏋滄椂杩斿洖Null锛屽鏋滅粨鏋滃ぇ浜�1鏉′細鎶涘嚭閿欒
+        var QsQaItemXj01 = db.Queryable<QsQaItemXj01>()
+            .Single(s => s.Id == detail.Pid);
+
+        if (QsQaItemXj01 == null) return 0;
+
+        var count = db.Queryable<QsQaItemXj02>()
+            .Where(s => s.Pid == detail.Pid).Count();
+
+
+        var result = 0;
+
+        if (QsQaItemXj01.LevelNum != count) return 0;
+
+        var passCount = db.Queryable<QsQaItemXj02>()
+            .Where(s => s.Pid == detail.Pid && s.Fstand == "鈭�").Count();
+
+        if (count == passCount) result = 1;
+
+        var useTransactionWithOracle =
+            SqlSugarHelper.UseTransactionWithOracle(db =>
+            {
+                var commit = 0;
+                commit += db.Updateable<QsQaItemXj01>()
+                    .SetColumns(s => s.IsPass == result)
+                    .Where(s => s.Id == detail.Pid)
+                    .ExecuteCommand();
+
+                return commit;
+            });
+
+        //鑾峰彇妫�楠屽崟鐨勬楠岄」鐩悊璁轰釜鏁�
+        var sum = db.Queryable<QsQaItemXj01>()
+            .Where(s => s.Pid == detail.Gid).Sum(it => it.LevelNum);
+
+        if (sum == null || sum == 0) return 1;
+
+        //鑾峰彇妫�楠屽崟涓嬬殑妫�楠岄」鐩疄闄呬釜鏁�
+        var icount = db.Queryable<QsQaItemXj02>()
+            .Where(s => s.Gid == detail.Gid).Count();
+
+        if (icount == 0) return 1;
+
+        //瀹為檯涓暟绛変簬鐞嗚涓暟鏃跺妫�楠屽崟杩涜鍒ゅ畾
+        if (sum == icount)
+        {
+            var FcheckResu = "涓嶅悎鏍�";
+
+            //鑾峰彇杩欎釜妫�楠屽崟涓嬬殑鎵�鏈夊悎鏍肩殑妫�楠岀粨鏋�
+            passCount = db.Queryable<QsQaItemXj02>()
+                .Where(s => s.Gid == detail.Gid && s.Fstand == "鈭�").Count();
+
+            //鍚堟牸鐨勬楠岀粨鏋滅瓑浜庢�绘楠屾暟瑙嗕负鍚堟牸
+            if (icount == passCount) FcheckResu = "鍚堟牸";
+
+            SqlSugarHelper.UseTransactionWithOracle(db =>
+            {
+                return db.Updateable<QsQaItemXj>()
+                    .SetColumns(s => s.FcheckResu == FcheckResu)
+                    .SetColumns(s => s.FcheckDate == DateTime.Now)
+                    .SetColumns(s => s.FcheckBy == detail.CreateBy)
+                    .SetColumns(s => s.LastupdateBy == detail.CreateBy)
+                    .SetColumns(s => s.LastupdateDate == DateTime.Now)
+                    .Where(s => s.Id == detail.Gid)
+                    .ExecuteCommand();
+            });
+        }
+
+        return useTransactionWithOracle;
+    }
+
+    public int UpdateQSItemDetail(QsQaItemXj02 detail)
+    {
+        var withOracle = SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsQaItemXj02>()
+                .SetColumns(s => s.UpdateBy == detail.UpdateBy)
+                .SetColumns(s => s.UpdateDate == DateTime.Now)
+                .SetColumnsIF(StringUtil.IsNotNullOrEmpty(detail.Fstand),
+                    s => s.Fstand == detail.Fstand)
+                .SetColumnsIF(StringUtil.IsNotNullOrEmpty(detail.FcheckResu),
+                    s => s.FcheckResu == detail.FcheckResu)
+                .Where(s => s.Id == detail.Id)
+                .ExecuteCommand();
+        });
+
+        detail.CreateBy = detail.UpdateBy;
+
+        withOracle += autoResult(detail);
+
+        return withOracle;
+    }
+
+    //鍒犻櫎涓昏〃骞朵笖杩炵骇鍒犻櫎瀛愯〃鍜屽瓩琛�
+    public int removeXJ(decimal? id)
+    {
+        var withOracle = SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            var commit = 0;
+            commit += db.Deleteable<QsQaItemXj>().Where(s => s.Id == id)
+                .ExecuteCommand();
+            commit += db.Deleteable<QsQaItemXj01>().Where(s => s.Pid == id)
+                .ExecuteCommand();
+            commit += db.Deleteable<QsQaItemXj02>().Where(s => s.Gid == id)
+                .ExecuteCommand();
+            return commit;
+        });
+
+        return withOracle;
+    }
+
+    //涓昏〃淇敼澶囨敞瀛楁
+    public int saveRemarksGid(XJDto dto)
+    {
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsQaItemXj>()
+                .SetColumns(it =>
+                    it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊�
+                .Where(it => it.Id == dto.gid)
+                .ExecuteCommand();
+        });
+    }
+
+    //瀛愯〃淇敼澶囨敞瀛楁
+    public int saveRemarksPid(XJDto dto)
+    {
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsQaItemXj01>()
+                .SetColumns(it =>
+                    it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊�
+                .Where(it => it.Id == dto.pid)
+                .ExecuteCommand();
+        });
+    }
+
+    /// <summary>
+    /// 鑾峰彇棣栨鍗曟墍鏈変笉鑹弿杩�
+    /// </summary>
+    /// <param name="id">妫�楠屽崟ID</param>
+    /// <returns>涓嶈壇鎻忚堪鏁版嵁琛�</returns>
+    public DataTable getBlmsItem1(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)
+    {
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsQaItemXj02>()
+                .SetColumns(it =>
+                    it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊�
+                .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