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/SJService.cs |  456 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 456 insertions(+), 0 deletions(-)

diff --git a/StandardPda/MES.Service/service/QC/SJService.cs b/StandardPda/MES.Service/service/QC/SJService.cs
new file mode 100644
index 0000000..fcc93ec
--- /dev/null
+++ b/StandardPda/MES.Service/service/QC/SJService.cs
@@ -0,0 +1,456 @@
+锘縰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 SJService
+{
+    private readonly BaseService _baseService = new();
+
+    //鑾峰彇鏈�澶у崟鍙�
+    public string getMaxBillNo()
+    {
+        var db = SqlSugarHelper.GetInstance();
+        var date = DateTime.Now.ToString("yyyy-MM-dd");
+        var sql =
+            "select max(BILL_NO) from QS_ITEM_IPI_REQ where to_char(CREATE_TIME,'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 "SJN" + date.Replace("-", "") + number;
+    }
+
+    //鑾峰彇鎵�鏈夋暟鎹垎椤�
+    public List<SJPageResult> getPage(SJPageResult queryObj)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        string[]? lineNo = null;
+
+        if (StringUtil.IsNotNullOrEmpty(queryObj.StatusUser))
+            lineNo = _baseService.getUserLineNo(queryObj.StatusUser);
+
+        var data = db.Queryable<SJPageResult>()
+            .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)
+            .WhereIF(
+                StringUtil.IsNotNullOrEmpty(queryObj.Result) &&
+                !"鏈畬鎴�".Equals(queryObj.Result),
+                a => a.Result != "鏈畬鎴�")
+            .OrderBy(a => a.BillNo, OrderByType.Desc)
+            .ToPageList(queryObj.PageIndex, queryObj.Limit);
+
+        return data;
+    }
+
+
+    //SetQSItem
+    // public List<QsItemIpiItem> SetQSItems(string itemNo)
+    // {
+    //     var db = SqlSugarHelper.GetInstance();
+    //     return db
+    //         .Queryable<MoidToItem, MesQualityStandard>((a, b) =>
+    //             new JoinQueryInfos(JoinType.Inner, a.MoidNum == b.MoidNum))
+    //         .Where((a, b) => b.QsType == "1" && a.Fsubmit == 1 && a.ItemNo == itemNo).Select(
+    //             (a, b) => new QsItemIpiItem
+    //             {
+    //                 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 = "鏈娴�"
+    //             }).ToList();
+    // }
+    public List<QsItemIpiItem> SetQSItems(string itemNo)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        var count = db.Queryable<MesQa>().Where(s => s.QsType == "1"
+            && s.ItemNo == itemNo && s.Fsubmit == 1).Count();
+
+        if (count <= 0) return [];
+
+        return db
+            .Queryable<MesQualityStandard>()
+            .Where(b => b.QsType == "1" && b.ItemNo == itemNo).Select(b =>
+                new QsItemIpiItem
+                {
+                    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,
+                    Picture = b.Picture,
+                    Picturename = b.Picturename,
+                    result = "鏈娴�",
+                    isCheck = 0
+                }).ToList();
+    }
+
+    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 array = qsItemIpiItems.Select(s => s.Id).ToArray();
+        var qsItemIpiItemDetails = db.Queryable<QsItemIpiItemDetail>()
+            .Where(s => array.Contains(s.Pid))
+            .GroupBy(s => s.Pid)
+            .Select(s => new
+            {
+                s.Pid,
+                count = SqlFunc.AggregateCount(s.Id)
+            }).ToList();
+
+        qsItemIpiItems.ForEach(s =>
+        {
+            var find = qsItemIpiItemDetails.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 = "鏈畬鎴�";
+            }
+        });
+
+        //浣跨敤linq琛ㄨ揪寮忚繃婊ゅ嚭鍥剧墖id涓嶄负绌虹殑鏁版嵁
+        var itemIpiItems =
+            qsItemIpiItems.Where(s => s.Picture is { Length: > 0 })
+                .ToList();
+        if (itemIpiItems.Count > 0)
+            itemIpiItems.ForEach(s =>
+            {
+                var qsItemIpiItem = qsItemIpiItems.Find(t => t.Id == s.Id);
+                //灏嗗瓧鑺傛暟缁勮浆鎹负Base64缂栫爜鐨勫瓧绗︿覆
+                qsItemIpiItem.imageData = Convert.ToBase64String(s.Picture);
+            });
+
+        //鎺掑簭锛屾湭瀹屾垚鐨勬帓鍦ㄥ墠闈�
+        qsItemIpiItems = qsItemIpiItems.OrderBy(s => s.isCheck).ToList();
+
+        return qsItemIpiItems;
+    }
+
+    public QsItem Save(QsItem item)
+    {
+        var qsItemIpiReq = item.From;
+        var qsItemIpiItems = item.Items;
+        SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            qsItemIpiReq.StatusDate = DateTime.Now;
+            var pid = db.Insertable(qsItemIpiReq)
+                .ExecuteReturnIdentity();
+            qsItemIpiReq.Id = pid;
+
+            item.gid = pid;
+
+            qsItemIpiItems.ForEach(s => s.Pid = pid);
+
+            return db.Insertable(qsItemIpiItems)
+                .ExecuteCommand();
+        });
+        item.Items = getQSItems(qsItemIpiReq.Id, null);
+
+        //娌℃湁涓婁笅闄愮殑妫�楠岄」鐩嚜鍔ㄧ洏鐐逛负鍚堟牸
+        item.Items.ForEach(s =>
+        {
+            if (s.MaxValue != null || s.StandardValue != null ||
+                s.MinValue != null) return;
+            var detail = new QsItemIpiItemDetail();
+            detail.Pid = s.Id;
+            detail.Gid = item.gid;
+            detail.Fstand = "鈭�";
+            detail.FcheckResu = "1";
+            detail.UpdateBy = item.From.StatusUser;
+            detail.count = (int?)s.LevelNum;
+            SetQSItemDetail(detail);
+        });
+
+        item.Items = getQSItems(qsItemIpiReq.Id, null);
+        var sjPageResult = new SJPageResult
+            { Id = item.From.Id, Limit = 1, PageIndex = 1 };
+        item.Result = getPage(sjPageResult)[0];
+
+        return item;
+    }
+
+    public QsItem SaveItem(QsItem item)
+    {
+        var qsItemIpiItems = item.Items;
+        SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            qsItemIpiItems.ForEach(s => s.Pid = item.gid);
+
+            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;
+            var detail = new QsItemIpiItemDetail();
+            detail.Pid = s.Id;
+            detail.Gid = item.gid;
+            detail.Fstand = "鈭�";
+            detail.FcheckResu = "1";
+            detail.UpdateBy = item.StatusUser;
+            detail.count = (int?)s.LevelNum;
+            SetQSItemDetail(detail);
+        });
+
+        item.Items = getQSItems(item.gid, null);
+
+        return item;
+    }
+
+    public int SetQSItemDetail(QsItemIpiItemDetail detail)
+    {
+        var oracle = SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            List<QsItemIpiItemDetail> result = new();
+            for (var i = 0; i < detail.count; i++)
+            {
+                var item = new QsItemIpiItemDetail();
+                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;
+    }
+
+    public List<QsItemIpiItemDetail> getQSItemDetail(decimal? pid, decimal? gid)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        return db.Queryable<QsItemIpiItemDetail>()
+            .Where(s => s.Pid == pid)
+            .WhereIF(gid > 0, s => s.Gid == gid)
+            .ToList();
+    }
+
+
+    //鑷姩鍒ゅ畾鏄惁鍚堟牸
+    private int autoResult(QsItemIpiItemDetail detail)
+    {
+        var db = SqlSugarHelper.GetInstance();
+
+        // Single 娌℃湁鏌ヨ鍒扮粨鏋滄椂杩斿洖Null锛屽鏋滅粨鏋滃ぇ浜�1鏉′細鎶涘嚭閿欒
+        var qsItemIpiItem = db.Queryable<QsItemIpiItem>()
+            .Single(s => s.Id == detail.Pid);
+
+        if (qsItemIpiItem == null) return 0;
+
+        var count = db.Queryable<QsItemIpiItemDetail>()
+            .Where(s => s.Pid == detail.Pid).Count();
+
+
+        var result = 0;
+
+        if (qsItemIpiItem.LevelNum != count) return 0;
+
+        var passCount = db.Queryable<QsItemIpiItemDetail>()
+            .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<QsItemIpiItem>()
+                    .SetColumns(s => s.IsPass == result)
+                    .Where(s => s.Id == detail.Pid)
+                    .ExecuteCommand();
+                return commit;
+            });
+
+
+        //鑷姩鍒ゅ畾鏄惁鍚堟牸
+        //鑾峰彇妫�楠屽崟鐨勬楠岄」鐩悊璁轰釜鏁�
+        var sum = db.Queryable<QsItemIpiItem>()
+            .Where(s => s.Pid == detail.Gid).Sum(it => it.LevelNum);
+        if (sum == null || sum == 0) return 1;
+
+        //鑾峰彇妫�楠屽崟涓嬬殑妫�楠岄」鐩疄闄呬釜鏁�
+        var icount = db.Queryable<QsItemIpiItemDetail>()
+            .Where(s => s.Gid == detail.Gid).Count();
+
+        if (icount == 0) return 1;
+
+        //瀹為檯涓暟绛変簬鐞嗚涓暟鏃跺妫�楠屽崟杩涜鍒ゅ畾
+        if (sum == icount)
+        {
+            result = 0;
+
+            //鑾峰彇杩欎釜妫�楠屽崟涓嬬殑鎵�鏈夊悎鏍肩殑妫�楠岀粨鏋�
+            passCount = db.Queryable<QsItemIpiItemDetail>()
+                .Where(s => s.Gid == detail.Gid && s.Fstand == "鈭�").Count();
+
+            //鍚堟牸鐨勬楠岀粨鏋滅瓑浜庢�绘楠屾暟瑙嗕负鍚堟牸
+            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();
+                });
+        }
+
+        return useTransactionWithOracle;
+    }
+
+    public int UpdateQSItemDetail(QsItemIpiItemDetail detail)
+    {
+        var withOracle = SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsItemIpiItemDetail>()
+                .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 saveRemarksGid(QsItem dto)
+    {
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsItemIpiReq>()
+                .SetColumns(it =>
+                    it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊�
+                .Where(it => it.Id == dto.gid)
+                .ExecuteCommand();
+        });
+    }
+
+    //瀛愯〃淇敼澶囨敞瀛楁
+    public int saveRemarksPid(QsItem dto)
+    {
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsItemIpiItem>()
+                .SetColumns(it =>
+                    it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊�
+                .Where(it => it.Id == dto.pid)
+                .ExecuteCommand();
+        });
+    }
+
+    //瀛欒〃淇敼澶囨敞瀛楁
+    public int saveRemarksById(QsItem dto)
+    {
+        return SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            return db.Updateable<QsItemIpiItemDetail>()
+                .SetColumns(it =>
+                    it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊�
+                .Where(it => it.Id == dto.id)
+                .ExecuteCommand();
+        });
+    }
+
+    public int removeXJ(decimal? id)
+    {
+        var withOracle = SqlSugarHelper.UseTransactionWithOracle(db =>
+        {
+            var commit = 0;
+            //鍒犻櫎涓昏〃
+            commit += db.Deleteable<QsItemIpiReq>().Where(s => s.Id == id)
+                .ExecuteCommand();
+            //鍒犻櫎瀛愯〃
+            commit += db.Deleteable<QsItemIpiItem>().Where(s => s.Pid == id)
+                .ExecuteCommand();
+            //鍒犻櫎瀛欒〃
+            commit += db.Deleteable<QsItemIpiItemDetail>()
+                .Where(s => s.Gid == id)
+                .ExecuteCommand();
+            return commit;
+        });
+
+        return withOracle;
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3