From 8276722de62e0be1e68adf65f150686a236268bd Mon Sep 17 00:00:00 2001
From: zjh <2207896513@qq.com>
Date: 星期五, 18 七月 2025 10:08:44 +0800
Subject: [PATCH] 产测接口代码提交

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

diff --git a/StandardPda/MES.Service/service/QC/RKJService.cs b/StandardPda/MES.Service/service/QC/RKJService.cs
new file mode 100644
index 0000000..5cb1599
--- /dev/null
+++ b/StandardPda/MES.Service/service/QC/RKJService.cs
@@ -0,0 +1,852 @@
+锘縰sing MES.Service.DB;
+using MES.Service.Dto.service;
+using MES.Service.Modes;
+using MES.Service.util;
+using SqlSugar;
+
+namespace MES.Service.service.QC;
+
+public class RKJService
+{
+    private readonly BaseService _baseService = new();
+
+    //鎵嬪姩鎵цsql
+    //鐢熸垚妫�楠屽崟鍙�
+    public string getMaxBillNo()
+    {
+        var db = SqlSugarHelper.GetInstance();
+        var date = DateTime.Now.ToString("yyyy-MM-dd");
+        var sql =
+            "select max(RELEASE_NO) from QS_ITEM_OQC_REQ where RELEASE_NO like 'RKJN%' and to_char(CREATE_DATE,'yyyy-mm-dd') ='" +
+            date + "'";
+
+        var maxBillNo = db.Ado.SqlQuerySingle<string>(sql);
+
+        var number = "0001";
+        if (maxBillNo != null)
+        {
+            maxBillNo = maxBillNo.Substring(12);
+            var no = Convert.ToInt32(maxBillNo);
+            no++;
+            number = no.ToString().PadLeft(4, '0');
+        }
+
+        return "RKJN" + date.Replace("-", "") + number;
+    }
+
+    //閫夋嫨浜х嚎
+    public List<MesLine> getLineNo()
+    {
+        var db = SqlSugarHelper.GetInstance();
+        return db.Queryable<MesLine>()
+            .Where(t =>
+                t.LineStyle == "鍖呰" ||
+                SqlFunc.ContainsArray(new[] { "V1", "V3", "V5", "V6" },
+                    t.LineNo))
+            .OrderBy(t => t.LineNo)
+            .Select(t => new MesLine
+            {
+                LineNo = t.LineNo,
+                LineName = t.LineName
+            }).OrderBy("LINE_NO")
+            .ToList();
+    }
+
+
+    //鑾峰彇宸ュ崟鍙�
+    public List<RkDaa002> GetDaa001s(string lineNo)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        return db.Queryable<RkDaa002>()
+            .Where(t => lineNo.Contains(t.Daa020))
+            .OrderBy(t => t.BillNo, OrderByType.Desc)
+            .ToList();
+    }
+
+    //鏍规嵁妫�楠屾爣鍑嗘潵璁$畻妫�楠屼釜鏁�
+    public List<QsItemOqcItem> SetItems(string itemNo, decimal quantity)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        var count = db.Queryable<MesQa>().Where(s => s.QsType == "3"
+            && s.ItemNo == itemNo && s.Fsubmit == 1).Count();
+
+        if (count <= 0) return [];
+
+        var qsItemOqcItems = db
+            .Queryable<MesQualityStandard>()
+            .Where(b => b.QsType == "3"
+                        && b.ItemNo == itemNo).Select(b => new QsItemOqcItem
+            {
+                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();
+
+        qsItemOqcItems.ForEach(item =>
+        {
+            string LEV = null;
+            switch (item.FcheckLevel)
+            {
+                case null:
+                    LEV = ""; // 榛樿鍊�
+                    break;
+                case { } s when s.Contains("S1"):
+                    LEV = "B.FLEVEL_S1";
+                    break;
+                case { } s when s.Contains("S2"):
+                    LEV = "B.FLEVEL_S2";
+                    break;
+                case { } s when s.Contains("S3"):
+                    LEV = "B.FLEVEL_S3";
+                    break;
+                case { } s when s.Contains("S4"):
+                    LEV = "B.FLEVEL_S4";
+                    break;
+                case { } s when s.Contains("(I)"):
+                    LEV = "B.FLEVEL_I";
+                    break;
+                case { } s when s.Contains("(II)"):
+                    LEV = "B.FLEVEL_II";
+                    break;
+                case { } s when s.Contains("(III)"):
+                    LEV = "B.FLEVEL_III";
+                    break;
+                default:
+                    LEV = ""; // 榛樿鍊�
+                    break;
+            }
+
+            if (string.IsNullOrEmpty(LEV))
+                throw new Exception(item.QsCode + "涓嬬殑妫�楠屾按骞崇淮鎶ょ殑涓嶆纭�");
+
+            var sql =
+                "SELECT " + LEV +
+                " FROM MES_QM_AQL1 A LEFT JOIN MES_QM_AQL2 B ON B.AQL1_ID=A.ID WHERE A.SAMPLE_SIZE_NO='" +
+                item.QsCode + "' AND B.LOT_FROM<= " + quantity + "   AND " +
+                quantity + "<=B.LOT_TO";
+
+            var maxBillNo = db.Ado.SqlQuerySingle<string>(sql);
+
+            if (string.IsNullOrEmpty(maxBillNo))
+                throw new Exception(
+                    item.QsCode + "涓嬫病鏈�" + quantity + "杩欎釜鑼冨洿鐨勬娊鏍峰熀鍑�");
+
+            var result = ExtractSubstring(item.FacLevel, '(', ')');
+
+            if (string.IsNullOrEmpty(result))
+                throw new Exception(item.QsCode +
+                                    "缁存姢鐨勬帴鏀舵按骞充笉姝g‘锛屽簲璇ユ槸0.010---(AQL_0_0010)杩欐牱");
+
+            sql = "SELECT FSAMPLE_SIZE_WORD, " + result +
+                  " Result FROM MES_QM_AQL1 A LEFT JOIN MES_QM_AQL3 C ON C.AQL1_ID=A.ID WHERE A.SAMPLE_SIZE_NO= '" +
+                  item.QsCode + "'  AND SAMPLE_SIZE_WORD= '" + maxBillNo + "'";
+            var resultClass = db.Ado.SqlQuerySingle<ResultClass>(sql);
+
+            item.LevelNum = resultClass.FSAMPLE_SIZE_WORD;
+            item.FreQty = resultClass.Result;
+        });
+
+        return qsItemOqcItems;
+    }
+
+    private string ExtractSubstring(string input, char startChar, char endChar)
+    {
+        var startIndex = input.IndexOf(startChar);
+        var endIndex = input.IndexOf(endChar, startIndex);
+
+        if (startIndex == -1 || endIndex == -1)
+            // 濡傛灉鏈壘鍒拌捣濮嬪瓧绗︽垨缁撴潫瀛楃锛屽垯杩斿洖绌哄瓧绗︿覆鎴栬�呮姏鍑哄紓甯革紝鏍规嵁瀹為檯鎯呭喌閫夋嫨
+            return string.Empty;
+        // 鎴栬�呮姏鍑哄紓甯�
+        // throw new ArgumentException("Start or end character not found");
+        // 鎻愬彇瀛愬瓧绗︿覆
+        var length = endIndex - startIndex - 1;
+        return input.Substring(startIndex + 1, length);
+    }
+
+    public List<QsItemOqcItem> GetItems(decimal? pid, decimal? id)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        return db.Queryable<QsItemOqcItem, QsItemOqcItemDetail>((a, b) =>
+                new JoinQueryInfos(JoinType.Left, a.Id == b.Pid))
+            .WhereIF(pid > 0, (a, b) => a.Pid == pid)
+            .WhereIF(id > 0, (a, b) => a.Id == id)
+            .GroupBy((a, b) => new
+            {
+                a.Id,
+                a.ProjName,
+                a.ItemMod,
+                a.InspectionMethod,
+                a.UsingInstruments,
+                a.LevelNum,
+                a.MaxValue,
+                a.StandardValue,
+                a.MinValue,
+                a.Notes,
+                a.IsPass,
+                a.FcheckLevel,
+                a.FacLevel,
+                a.QsCode,
+                a.QsName
+            }).Select((a, b) => new QsItemOqcItem
+            {
+                ProjName = a.ProjName,
+                Id = a.Id,
+                ItemMod = a.ItemMod,
+                InspectionMethod = a.InspectionMethod,
+                UsingInstruments = a.UsingInstruments,
+                LevelNum = a.LevelNum,
+                MaxValue = a.MaxValue,
+                StandardValue = a.StandardValue,
+                MinValue = a.MinValue,
+                Notes = a.Notes,
+                FcheckLevel = a.FcheckLevel,
+                FacLevel = a.FacLevel,
+                QsCode = a.QsCode,
+                QsName = a.QsName,
+                isCheck = SqlFunc.AggregateCount(b.Id),
+                Result = a.IsPass == 1 &&
+                         a.LevelNum == SqlFunc.AggregateCount(b.Id) ? "鍚堟牸"
+                    : a.IsPass == 0 &&
+                      a.LevelNum == SqlFunc.AggregateCount(b.Id) ? "涓嶅悎鏍�"
+                    : "鏈畬鎴�"
+            }).OrderBy("result desc").ToList();
+    }
+
+    public dynamic save(RKJDto rkjDto)
+    {
+        var xj = rkjDto.from;
+        var items = rkjDto.items;
+        var userNo = rkjDto.userNo;
+
+        SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            var commit = 0;
+
+            xj.CreateBy = userNo;
+            xj.CreateDate = DateTime.Now;
+
+            var pid = db.Insertable(xj).ExecuteReturnIdentity();
+
+            xj.Id = pid;
+
+            rkjDto.gid = pid;
+
+            foreach (var item in items) item.Pid = pid;
+
+            commit += db.Insertable(items).ExecuteCommand();
+
+            return commit;
+        });
+
+
+        // using (var connection =
+        //        new OracleConnection(OracleSQLHelper.ConnectionString))        //     connection.Open();
+        //
+        //     var transaction = connection.BeginTransaction();
+        //
+        //     try
+        //     {
+        //         using (var command = new OracleCommand())
+        //         {
+        //             command.Connection = connection;
+        //             command.Transaction = transaction;
+        //             command.CommandText = "insert_and_update_picture_RKJ";
+        //             command.CommandType = CommandType.StoredProcedure;
+        //
+        //             // Add parameters
+        //             command.Parameters.Add("p_QS_TYPE", OracleDbType.Varchar2)
+        //                 .Value = "3";
+        //             command.Parameters.Add("p_MOID_NUM", OracleDbType.Varchar2)
+        //                 .Value = rkjDto.moidNum;
+        //             command.Parameters.Add("p_pid", OracleDbType.Int32).Value =
+        //                 xj.Id;
+        //
+        //             command.ExecuteNonQuery();
+        //         }
+        //
+        //         transaction.Commit();
+        //     }
+        //     catch (Exception)
+        //     {
+        //         transaction.Rollback();
+        //         throw;
+        //     }
+        // }
+
+        rkjDto.items = GetItems(xj.Id, null);
+
+        rkjDto.items.ForEach(s =>
+        {
+            if (s.MaxValue != null || s.StandardValue != null ||
+                s.MinValue != null) return;
+            var detail = new QsItemOqcItemDetail();
+            detail.Pid = s.Id;
+            detail.Gid = rkjDto.gid;
+            detail.Fstand = "鈭�";
+            detail.FcheckResu = "1";
+            detail.UpdateBy = rkjDto.userNo;
+            detail.count = (int?)s.LevelNum;
+            SetQSItemDetail(detail);
+        });
+
+        return Convert.ToInt32(xj.Id);
+    }
+
+    public int SetQSItemDetail(QsItemOqcItemDetail detail)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        var qsItemOqcReq = db.Queryable<QsItemOqcReq>()
+            .Where(o => o.Id == detail.Gid)
+            .First();
+
+        if (qsItemOqcReq == null) throw new Exception("璇ユ楠屽崟涓嶅瓨鍦紝璇峰洖鍒板叆搴撴鍒楄〃閲嶆柊鏌ョ湅");
+
+        if (!string.IsNullOrEmpty(qsItemOqcReq.FcheckResu))
+            throw new Exception("璇ユ楠屽崟宸�" + qsItemOqcReq.FcheckResu + "锛屼笉杩愯淇敼缁撴灉");
+
+        var oracle = SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            List<QsItemOqcItemDetail> result = new();
+            for (var i = 0; i < detail.count; i++)
+            {
+                var item = new QsItemOqcItemDetail();
+                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(QsItemOqcItemDetail detail)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        // Single 娌℃湁鏌ヨ鍒扮粨鏋滄椂杩斿洖Null锛屽鏋滅粨鏋滃ぇ浜�1鏉′細鎶涘嚭閿欒
+        var QsItemOqcItem = db.Queryable<QsItemOqcItem>()
+            .Single(s => s.Id == detail.Pid);
+
+        if (QsItemOqcItem == null) return 0;
+
+        //鏌ヨ杩欎釜妫�楠岄」鐩笅鐨勬楠岀粨鏋�
+        var count = db.Queryable<QsItemOqcItemDetail>()
+            .Where(s => s.Pid == detail.Pid).Count();
+
+
+        var result = 0;
+
+        //妫�楠屽疄闄呯粨鏋滀笉绛変簬搴旇妫�楠岀殑涓暟鏃剁洿鎺ユ帹鍑�
+        if (QsItemOqcItem.LevelNum != count) return 0;
+
+        //鍚堟牸鐨勬湁澶氬皯涓�
+        var passCount = db.Queryable<QsItemOqcItemDetail>()
+            .Where(s => s.Pid == detail.Pid && s.Fstand == "鈭�").Count();
+
+        if (count == passCount)
+            result = 1;
+        else if (count - passCount < QsItemOqcItem.FreQty) result = 1;
+
+        var useTransactionWithOracle =
+            SqlSugarHelper.UseTransactionWithOracle(db =>
+            {
+                var commit = 0;
+                commit += db.Updateable<QsItemOqcItem>()
+                    .SetColumns(s => s.IsPass == result)
+                    .Where(s => s.Id == detail.Pid)
+                    .ExecuteCommand();
+
+                return commit;
+            });
+
+        var isNull = db.Queryable<QsItemOqcItem>()
+            .Where(s => s.Pid == detail.Gid && s.IsPass == null).Count();
+
+        if (isNull > 0) return 1;
+
+
+        //鑾峰彇妫�楠屽崟鐨勬楠岄」鐩殑涓暟
+        var sum = db.Queryable<QsItemOqcItem>()
+            .Where(s => s.Pid == detail.Gid).Count();
+
+        if (sum == 0) return 1;
+
+        //鑾峰彇妫�楠屽崟涓嬬殑鍚堟牸鐨勬楠岄」鐩釜鏁�
+        var icount = db.Queryable<QsItemOqcItem>()
+            .Where(s => s.Pid == detail.Gid && s.IsPass == 1).Count();
+
+        var FcheckResu = "涓嶅悎鏍�";
+
+        //瀹為檯涓暟绛変簬鐞嗚涓暟鏃跺妫�楠屽崟杩涜鍒ゅ畾
+        if (sum == icount)
+            //鍚堟牸鐨勬楠岀粨鏋滅瓑浜庢�绘楠屾暟瑙嗕负鍚堟牸
+            FcheckResu = "鍚堟牸";
+
+        SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsItemOqcReq>()
+                .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();
+        });
+
+        // if (FcheckResu.Equals("涓嶅悎鏍�"))
+        //     //鑷姩鐢熸垚鍏ュ簱妫�寮傚父瀵圭瓥
+        //     saveDetect02(detail.Gid, detail.CreateBy);
+
+        setBarCodes(FcheckResu, detail, db);
+
+        return useTransactionWithOracle;
+    }
+
+    /// <summary>
+    ///     褰撴楠屽崟涓嶅悎鏍兼椂锛�
+    ///     鍙栨秷mes_inv_item_barcodes 鐨勬姤宸ユ爣璇� WORK_FLG
+    ///     womdaa 宸茬敓浜ч噺 DAA011鍔犲洖鏉$爜鎶ュ伐鏁伴噺
+    ///     MES_SCGD_GX 妫�楠屾爣璇� CHECK_FLAG锛�('鈭�','脳')
+    ///     閫氳繃mes_inv_item_in_c_details2鐨凪ES_SCGD_GX_ID杩炴帴
+    /// </summary>
+    private void setBarCodes(string? FcheckResu, QsItemOqcItemDetail detail,
+        SqlSugarClient db)
+    {
+        var oqcReqList = db
+            .Queryable<QsItemOqcReq, MesInvItemIns, Womdaa>((a, b, c) =>
+                new JoinQueryInfos(
+                    JoinType.Left, a.BillNo == b.BillNo,
+                    JoinType.Left, c.Daa001 == b.RbillNo
+                ))
+            .Where(a => a.Id == detail.Gid)
+            .Select((a, b, c) =>
+                new
+                {
+                    a.Id,
+                    a.BillNo,
+                    c.Daa001
+                })
+            .ToList();
+
+        if (oqcReqList.Count <= 0) return;
+
+        var qsItemOqcReq = oqcReqList.First(); // 鑾峰彇绗竴涓厓绱�  
+
+        if (qsItemOqcReq.Id is null or 0) return;
+
+        var mesInvItemInsList = db
+            .Queryable<MesInvItemIns, MesInvItemInCDetails2>((a, b) =>
+                new JoinQueryInfos(
+                    JoinType.Left, a.Id == b.ItemInId))
+            .Where((a, b) => a.BillNo == qsItemOqcReq.BillNo)
+            .Select((a, b) => new
+                { b.ItemBarcode, b.Quantity, b.MesScgdGxId })
+            .ToList();
+
+        var barCodes = mesInvItemInsList.Select(s => s.ItemBarcode).ToList();
+
+        var count = db.Queryable<MesInvItemBarcodes>()
+            .Where(s => barCodes.Contains(s.ItemBarcode) && s.WorkFlg == 0)
+            .Count();
+
+        var gxId = mesInvItemInsList.Select(s => s.MesScgdGxId).ToList();
+
+        var sumQty = mesInvItemInsList.Sum(s => s.Quantity);
+
+        if ("鍚堟牸".Equals(FcheckResu))
+        {
+            //鏍规嵁宸ュ簭id鏇存柊宸ュ簭琛ㄧ殑妫�楠岀粨鏋�
+            db.Updateable<MesScgdGx>()
+                .SetColumns(s => s.CheckFlag == "鈭�")
+                .Where(s => gxId.Contains(s.Id))
+                .ExecuteCommand();
+
+            if (count <= 0) return;
+
+            //鍙栨秷mes_inv_item_barcodes 鐨勬姤宸ユ爣璇� WORK_FLG 浣跨敤鏉$爜
+            var executeCommand = db.Updateable<MesInvItemBarcodes>()
+                .SetColumns(a => a.WorkFlg == 1)
+                .Where(a => barCodes.Contains(a.ItemBarcode))
+                .ExecuteCommand();
+
+            if (executeCommand > 0)
+                //womdaa 宸茬敓浜ч噺 DAA011鍔犲洖鏉$爜鎶ュ伐鏁伴噺
+                db.Updateable<Womdaa>()
+                    .SetColumns(b => b.Daa011 == b.Daa011 + sumQty)
+                    .Where(b => b.Daa001 == qsItemOqcReq.Daa001)
+                    .ExecuteCommand();
+        }
+        else if ("涓嶅悎鏍�".Equals(FcheckResu))
+        {
+            //鏍规嵁宸ュ簭id鏇存柊宸ュ簭琛ㄧ殑妫�楠岀粨鏋�
+            db.Updateable<MesScgdGx>()
+                .SetColumns(s => s.CheckFlag == "脳")
+                .Where(s => gxId.Contains(s.Id))
+                .ExecuteCommand();
+
+            //鍙栨秷mes_inv_item_barcodes 鐨勬姤宸ユ爣璇� WORK_FLG 浣跨敤鏉$爜
+            var executeCommand = db.Updateable<MesInvItemBarcodes>()
+                .SetColumns(a => a.WorkFlg == 0)
+                .Where(a => barCodes.Contains(a.ItemBarcode))
+                .ExecuteCommand();
+
+            if (executeCommand > 0)
+                //womdaa 宸茬敓浜ч噺 DAA011鍔犲洖鏉$爜鎶ュ伐鏁伴噺
+                db.Updateable<Womdaa>()
+                    .SetColumns(b => b.Daa011 == b.Daa011 - sumQty)
+                    .Where(b => b.Daa001 == qsItemOqcReq.Daa001)
+                    .ExecuteCommand();
+        }
+    }
+
+    public int saveDetect02(decimal? gid, string? createBy)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        var qsItemOqcReq =
+            db.Queryable<QsItemOqcReq>().Single(s => s.Id == gid);
+
+        var mesInvItemIns = db.Queryable<MesInvItemIns>()
+            .Single(s => s.BillNo == qsItemOqcReq.BillNo);
+
+        var mesSchemeResult = db.Queryable<Womdaa>()
+            .Single(s => s.Daa001 == mesInvItemIns.CbillNo);
+
+        var entity = new MesQaItemsDetect02();
+        // entity.ItemNo = mesSchemeResult.BoardItem;
+        // entity.BoardItem = mesSchemeResult.BoardItem;
+        entity.LineNo = mesSchemeResult.Daa015;
+        // entity.Aufnr = mesSchemeResult.TaskNo;
+        entity.ReleaseNo = qsItemOqcReq.ReleaseNo;
+        entity.LotNo = qsItemOqcReq.BillNo;
+        entity.FcheckDate = qsItemOqcReq.FcheckDate;
+        entity.FcheckMemo = qsItemOqcReq.Remarks;
+        entity.Gid = qsItemOqcReq.Id;
+        // entity.PlanQty = qsItemOqcReq.FcheckDate;
+
+
+        entity.FcheckResu = "涓嶅悎鏍�";
+        entity.FcheckLevel = "涓ラ噸";
+        entity.CreateDate = DateTime.Now;
+        entity.Factory = "10000";
+        entity.Company = "1000";
+        entity.Ftype = "4";
+        entity.Fversion = 0;
+        entity.Modify1Flag = 0;
+        entity.IpqcStatus = 0;
+        entity.Fsubmit = 1;
+        entity.CreateBy = createBy;
+        entity.FcheckBy = createBy;
+
+        return SqlSugarHelper.UseTransactionWithOracle(db => db
+            .Insertable(entity)
+            .ExecuteCommand());
+    }
+
+
+    public (List<QsItemOqcReq> items, int TotalCount) getPage(
+        XJPageResult queryObj)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        var totalCount = 0;
+
+        string[]? lineNo = null;
+
+        if (StringUtil.IsNotNullOrEmpty(queryObj.createUser))
+            lineNo = _baseService.getUserLineNo(queryObj.createUser);
+
+        var qsItemOqcReqs = db
+            .Queryable<QsItemOqcReq, MesItems, MesInvItemIns, MesInvTransaction,
+                RKJDaa001, Womdaa, VLineUser>((a, b, c, ca, m, da, z) =>
+                new JoinQueryInfos(
+                    JoinType.Left, a.ItemNo == b.ItemNo,
+                    JoinType.Left, a.BillNo == c.BillNo,
+                    JoinType.Left,
+                    c.TransctionNo == ca.TransactionNo.ToString() &&
+                    c.Company == ca.Company &&
+                    c.Factory == ca.Factory,
+                    JoinType.Left, c.Id == m.ItemInId && a.ItemNo == m.ItemNo,
+                    JoinType.Left, da.Daa001 == c.RbillNo,
+                    JoinType.Left, da.Daa015 == z.LineNo //,
+                    //JoinType.Left,c.Bgr == d.UserNo
+                ))
+            // .WhereIF(lineNo != null && lineNo.Length > 0,
+            //     (a, b, c, ca, m, da) => lineNo.Contains(da.Daa015))
+            .WhereIF(!"PL017".Equals(queryObj.createUser),
+                (a, b, c, ca, m, da, z) => lineNo.Contains(da.Daa015))
+            .WhereIF(!string.IsNullOrEmpty(queryObj.id),
+                (a, b, c, ca, m, da, z) => a.Id.ToString() == queryObj.id)
+            .WhereIF(
+                StringUtil.IsNotNullOrEmpty(queryObj.result) &&
+                "鏈畬鎴�".Equals(queryObj.result),
+                (a, b, c, ca, m, da, z) => a.FcheckResu == null)
+            .WhereIF(
+                StringUtil.IsNotNullOrEmpty(queryObj.result) &&
+                !"鏈畬鎴�".Equals(queryObj.result),
+                (a, b, c, ca, m, da, z) => a.FcheckResu != null)
+            //鍔犵瓫閫夋潯浠�,鏍规嵁渚涘簲鍟嗭紝鐗╂枡缂栫爜锛岀墿鏂欏悕绉版悳绱�
+            //.WhereIF(queryObj.SearchValue!=null && queryObj.SearchValue!="", (a) => a.SuppName == queryObj.SearchValue|| a.ItemName == queryObj.SearchValue || a.ItemNo == queryObj.SearchValue )
+            .WhereIF(queryObj.SearchValue != null && queryObj.SearchValue != "",
+                (a, b, c, ca, m, da, z) =>
+                    b.ItemName.ToLower()
+                        .Contains(queryObj.SearchValue.ToLower())
+                    || a.ItemNo.ToLower()
+                        .Contains(queryObj.SearchValue.ToLower()))
+            .Select((a, b, c, ca, m, da, z) => new QsItemOqcReq
+            {
+                BillNo = a.BillNo,
+                Fsubmit = a.Fsubmit,
+                Remarks = a.Remarks,
+                Id = a.Id,
+                CreateDate = a.CreateDate,
+                CreateBy = a.CreateBy,
+                FcheckResu = a.FcheckResu,
+                ItemNo = a.ItemNo,
+                FcheckBy = a.FcheckBy,
+                FcheckDate = a.FcheckDate,
+                ReleaseNo = a.ReleaseNo,
+                ItemName = b.ItemName,
+                ItemModel = b.ItemModel,
+                //Dab001 = m.LotNo,
+                ItemInId = m.ItemInId,
+                Daa015 = da.Daa015,
+                LineNo = c.LineNo,
+                Quantity = m.Quantity
+                //Bgr = d.UserName
+            })
+            .OrderBy(a => a.CreateDate, OrderByType.Desc)
+            .ToPageList(queryObj.PageIndex, queryObj.Limit, ref totalCount);
+
+        return (qsItemOqcReqs, totalCount);
+    }
+
+    //鍒犻櫎涓昏〃骞朵笖杩炵骇鍒犻櫎瀛愯〃鍜屽瓩琛�
+    public int removeXJ(decimal? id)
+    {
+        var withOracle = SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            var commit = 0;
+            //鍒犻櫎涓昏〃
+            commit += db.Deleteable<QsItemOqcReq>().Where(s => s.Id == id)
+                .ExecuteCommand();
+            //鍒犻櫎瀛愯〃
+            commit += db.Deleteable<QsItemOqcItem>().Where(s => s.Pid == id)
+                .ExecuteCommand();
+            //鍒犻櫎瀛欒〃
+            commit += db.Deleteable<QsItemOqcItemDetail>()
+                .Where(s => s.Gid == id)
+                .ExecuteCommand();
+            return commit;
+        });
+
+        return withOracle;
+    }
+
+
+    public RKJDto getXjDetail02ById(decimal? id)
+    {
+        var rkjDto = new RKJDto();
+
+        var db = SqlSugarHelper.GetInstance();
+        var qsItemOqcItem =
+            db.Queryable<QsItemOqcItem>().Single(s => s.Id == id);
+
+        if (qsItemOqcItem.IsPass == 0)
+            qsItemOqcItem.Result = "涓嶅悎鏍�";
+        else if (qsItemOqcItem.IsPass == 1)
+            qsItemOqcItem.Result = "鍚堟牸";
+        else
+            qsItemOqcItem.Result = "鏈畬鎴�";
+
+        if (qsItemOqcItem.Picture is { Length: > 0 })
+            qsItemOqcItem.imageData =
+                Convert.ToBase64String(qsItemOqcItem.Picture);
+
+        //鑾峰彇涓嶅悎鏍兼暟
+        var count = db.Queryable<QsItemOqcItemDetail>()
+            .Where(s => s.Fstand == "脳" && s.Pid == id).Count();
+
+        qsItemOqcItem.Unqualified = count;
+
+        rkjDto.ItemXj01 = qsItemOqcItem;
+
+
+        rkjDto.ItemXj02s = db.Queryable<QsItemOqcItemDetail>()
+            .Where(s => s.Pid == id)
+            .ToList();
+
+        return rkjDto;
+    }
+
+    public int UpdateQSItemDetail(QsItemOqcItemDetail detail)
+    {
+        if (isRk(detail.ItemInId)) throw new Exception("宸叉湁鏉$爜鍏ュ簱锛屼笉鍏佽淇敼妫�楠岀粨鏋�");
+
+        var db = SqlSugarHelper.GetInstance();
+
+        var qsItemOqcReq = db.Queryable<QsItemOqcReq>()
+            .Where(o => o.Id == detail.Gid)
+            .First();
+
+        if (qsItemOqcReq == null) throw new Exception("璇ユ楠屽崟涓嶅瓨鍦紝璇峰洖鍒板叆搴撴鍒楄〃閲嶆柊鏌ョ湅");
+
+        if (!string.IsNullOrEmpty(qsItemOqcReq.FcheckResu))
+            throw new Exception("璇ユ楠屽崟宸�" + qsItemOqcReq.FcheckResu + "锛屼笉杩愯淇敼缁撴灉");
+
+        var withOracle = SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsItemOqcItemDetail>()
+                .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;
+    }
+
+    //淇敼缁撴灉鍓嶉獙璇佹槸鍚﹀叆搴�
+    private bool isRk(decimal? ItemInId)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        return db.Queryable<MesInvItemInCDetails>()
+            .Where(s => s.ItemInId == ItemInId).Count() > 0;
+    }
+
+
+    //涓昏〃淇敼澶囨敞瀛楁
+    public int saveRemarksGid(RKJDto dto)
+    {
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsItemOqcReq>()
+                .SetColumns(it =>
+                    it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊�
+                .Where(it => it.Id == dto.gid)
+                .ExecuteCommand();
+        });
+    }
+
+    //瀛愯〃淇敼澶囨敞瀛楁
+    public int saveRemarksPid(RKJDto dto)
+    {
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsItemOqcItem>()
+                .SetColumns(it =>
+                    it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊�
+                .Where(it => it.Id == dto.pid)
+                .ExecuteCommand();
+        });
+    }
+
+    //瀛欒〃淇敼澶囨敞瀛楁
+    public int saveRemarksById(RKJDto dto)
+    {
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsItemOqcItemDetail>()
+                .SetColumns(it =>
+                    it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊�
+                .Where(it => it.Id == dto.id)
+                .ExecuteCommand();
+        });
+    }
+
+    public int saveItem(RKJDto rkjDto)
+    {
+        var items = rkjDto.items;
+        var userNo = rkjDto.userNo;
+
+        SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            foreach (var item in items) item.Pid = rkjDto.gid;
+
+            return db.Insertable(items).ExecuteCommand();
+        });
+
+        rkjDto.items = GetItems(rkjDto.gid, null);
+
+        rkjDto.items.ForEach(s =>
+        {
+            if (s.MaxValue != null || s.StandardValue != null ||
+                s.MinValue != null) return;
+            var detail = new QsItemOqcItemDetail();
+            detail.Pid = s.Id;
+            detail.Gid = rkjDto.gid;
+            detail.Fstand = "鈭�";
+            detail.FcheckResu = "1";
+            detail.UpdateBy = rkjDto.userNo;
+            detail.count = (int?)s.LevelNum;
+            SetQSItemDetail(detail);
+        });
+
+        return Convert.ToInt32(rkjDto.gid);
+    }
+
+    public int cleanReqResult(RKJDto dto)
+    {
+        if (isRk(dto.gid)) throw new Exception("宸叉湁鏉$爜鍏ュ簱锛屼笉鍏佽娓呴櫎妫�楠岀粨鏋�");
+
+
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsItemOqcReq>()
+                .SetColumns(s => s.FcheckResu == null)
+                .Where(s => s.Id == dto.gid).ExecuteCommand();
+        });
+    }
+
+    private bool isRk(int? gid)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        return db
+            .Queryable<QsItemOqcReq, MesInvItemIns, MesInvItemInCDetails2,
+                MesInvItemStocks>((a, b, c, d) => new JoinQueryInfos(
+                JoinType.Inner, a.BillNo == b.BillNo,
+                JoinType.Inner, b.Id == c.ItemInId,
+                JoinType.Inner, c.ItemBarcode == d.ItemBarcode
+            ))
+            .Where((a, b, c, d) => a.Id == gid)
+            .Count() > 0;
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3