From 662c8acd89bdcbbd92d1b917d6128cbcce0134d7 Mon Sep 17 00:00:00 2001
From: tjx <t2856754968@163.com>
Date: 星期四, 04 十二月 2025 14:42:55 +0800
Subject: [PATCH] 三个检验增加钉钉推送

---
 MES.Service/service/QC/XJService.cs |  266 +++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 219 insertions(+), 47 deletions(-)

diff --git a/MES.Service/service/QC/XJService.cs b/MES.Service/service/QC/XJService.cs
index 1674e26..c2a58aa 100644
--- a/MES.Service/service/QC/XJService.cs
+++ b/MES.Service/service/QC/XJService.cs
@@ -2,6 +2,7 @@
 using MES.Service.Dto.service;
 using MES.Service.Modes;
 using MES.Service.util;
+using Newtonsoft.Json.Linq;
 using SqlSugar;
 using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
 
@@ -14,7 +15,7 @@
     private readonly BaseService _baseService = new();
 
 
-    private readonly string[] statusArray = ["寮�宸�", "寰呭紑宸�"];
+    private readonly string[] statusArray = ["寮�宸�", "寰呭紑宸�", "宸插紑宸�", "鏈紑宸�"];
 
     //鐢熸垚鏈�鏂扮殑妫�楠屽崟鍙�
     public string getMaxReleaseNo()
@@ -39,47 +40,71 @@
         return "XJN" + date + number;
     }
 
-    public List<Womdaa> getItem(string daa001)
+    public class DaaInfoDto
+    {
+        public decimal? Id { get; set; }
+        public string Daa001 { get; set; }
+        public string? Daa003 { get; set; }
+        public string? Daa004 { get; set; }
+        public decimal? Daa008 { get; set; }
+        public string? Daa015 { get; set; }
+        public string? Daa020 { get; set; }
+        public string? ItemNo { get; set; } // 鏉ヨ嚜鍏宠仈琛�
+        public string? ItemName { get; set; }
+    }
+
+    public List<DaaInfoDto> getItem(string daa001)
     {
         var db = SqlSugarHelper.GetInstance();
 
         //in鐨勫啓娉� https://www.donet5.com/Home/Doc?typeId=1187
 
-        return db.Queryable<Womdaa>()
+        return db.Queryable<Womdaa, MesItems>((a, b) => new JoinQueryInfos(
+                JoinType.Inner, a.Daa002 == b.Id.ToString()))
             .Where(a =>
                 a.Daa001 == daa001 &&
                 statusArray.Contains(a.Daa018))
+            .Select((a, b) => new DaaInfoDto
+            {
+                Daa001 = daa001,
+                Daa003 = a.Daa003,
+                Daa004 = a.Daa004,
+                Daa008 = a.Daa008,
+                Daa015 = a.Daa015,
+                Daa020 = a.Daa020,
+                ItemNo = b.ItemNo,
+                ItemName = b.ItemName,
+                Id = a.Id
+            })
             .ToList();
     }
 
-    public List<MesLine> getLineAll()
+    public List<QCUserLine> getLineAll(string UserNo)
     {
         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
+        return db.Queryable<QCUserLine>()
+            .Where(a => a.UserCode == UserNo)
+            .Select(a => new QCUserLine
             {
-                b.LineNo, b.LineName
-            })
-            .Select((a, b) => new MesLine
-            {
-                LineNo = b.LineNo,
-                LineName = b.LineName
-            }).OrderBy("b.LINE_NO").ToList();
+                LineNo = a.LineNo,
+                LineName = a.LineName
+            }).OrderBy("LINENO").ToList();
     }
 
-    public List<Womdaa> getDaa001(string daa020, string item)
+
+    public List<Womdaa> getDaa001(JObject data)
     {
+        var daa020 = data["daa020"]?.ToString();
+        var item = data["item"]?.ToString();
+
         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))
+            .WhereIF(!string.IsNullOrEmpty(daa020),
+                (a, b) => a.Daa015 == daa020)
+            .WhereIF(!string.IsNullOrEmpty(item), (a, b) => b.ItemNo == item)
+            .Where((a, b) => statusArray.Contains(a.Daa018))
             .Select<Womdaa>(a => new Womdaa
             {
                 Id = a.Id,
@@ -107,6 +132,21 @@
                 }).ToList();
     }
 
+    public List<string?> GetItemProj(string? itemNo)
+    {
+        //鑾峰彇鐗╂枡鎵�鏈夌殑妫�楠岃鍒掑悕绉�
+
+        var db = SqlSugarHelper.GetInstance();
+
+        var plans = db.Queryable<MesQa>()
+            .Where(a => a.ItemNo == itemNo && a.QsType == "2")
+            .Select(s => s.QaPlan)
+            .Distinct()
+            .ToList();
+
+        return plans;
+    }
+
     public (List<QsQaItemXj> items, int totalCount) getPage(
         XJPageResult queryObj)
     {
@@ -123,7 +163,8 @@
 
         var query = db
             .Queryable<QsQaItemXj, Womdaa, MesLine,
-                MesItems, SysUser,Womcaa,SysDepartment, MesUserDepartmentQc,MesItems>((s, a, c, b, us,ca,d,dq,i) =>
+                MesItems, SysUser, Womcaa, SysDepartment, MesUserDepartmentQc,
+                MesItems, SysUser>((s, a, c, b, us, ca, d, dq, i, us2) =>
                 new JoinQueryInfos(
                     JoinType.Inner, s.BillNo == a.Daa001,
                     JoinType.Left, a.Daa015 == c.LineNo,
@@ -131,8 +172,10 @@
                     JoinType.Left, us.Fcode == s.CreateBy,
                     JoinType.Left, ca.Caa020 == a.Daa021,
                     JoinType.Left, d.Departmentcode == c.Departmentcode,
-                    JoinType.Left, dq.Departmentcode == d.Departmentcode,//鏌ヨ鐢ㄦ埛鏉冮檺
-                    JoinType.Left, i.Id == Convert.ToDecimal(a.Daa002)
+                    JoinType.Left,
+                    dq.Departmentcode == d.Departmentcode, //鏌ヨ鐢ㄦ埛鏉冮檺
+                    JoinType.Left, i.Id == Convert.ToDecimal(a.Daa002),
+                    JoinType.Left, us2.Fcode == s.SubmitBy
                 )
             )
             //.WhereIF(lineNo != null && lineNo.Length > 0,
@@ -146,22 +189,26 @@
                 StringUtil.IsNotNullOrEmpty(queryObj.result) &&
                 !"鏈畬鎴�".Equals(queryObj.result),
                 (s, a, c, b, us) => s.SubmitStatus == 1)
-            .WhereIF(id > 0, (s, a, c, b, us,ca) => s.Id == id)
+            .WhereIF(id > 0, (s, a, c, b, us, ca) => s.Id == id)
             .WhereIF(!string.IsNullOrEmpty(queryObj.LoginUser),
-                (s, a, c, b, us, ca, d, dq) => dq.Usercode == queryObj.LoginUser)
+                (s, a, c, b, us, ca, d, dq) =>
+                    dq.Usercode == queryObj.LoginUser)
             .WhereIF(!string.IsNullOrEmpty(queryObj.SearchValue),
-                (s, a, c, b, us, ca, d, dq,i) =>
-                s.ReleaseNo.ToLower().Contains(queryObj.SearchValue.ToLower()) ||
-                i.ItemName.ToLower().Contains(queryObj.SearchValue.ToLower()) ||
-                ca.Caa015.ToLower().Contains(queryObj.SearchValue.ToLower()) ||
-                i.ItemNo.ToLower().Contains(queryObj.SearchValue.ToLower()))
-            .Select((s, a, c, b, us,ca,d) => new QsQaItemXj
+                (s, a, c, b, us, ca, d, dq, i) =>
+                    s.ReleaseNo.ToLower()
+                        .Contains(queryObj.SearchValue.ToLower()) ||
+                    i.ItemName.ToLower()
+                        .Contains(queryObj.SearchValue.ToLower()) ||
+                    ca.Caa015.ToLower()
+                        .Contains(queryObj.SearchValue.ToLower()) ||
+                    i.ItemNo.ToLower().Contains(queryObj.SearchValue.ToLower()))
+            .Select((s, a, c, b, us, ca, d, dq, i, us2) => new QsQaItemXj
             {
                 Daa020 = c.LineNo,
                 Id = s.Id,
                 PlanQty = a.Daa008,
-                LineName = c.LineName,
-                CreateUser = us.Fname,
+                LineName = d.Departmentname == "娉ㄥ杞﹂棿" ? a.Daa020 : c.LineName,
+                CreateUser = us.Fname == null ? s.CreateBy : us.Fname,
                 CreateBy = s.CreateBy,
                 CreateDate = s.CreateDate,
                 ReleaseNo = s.ReleaseNo,
@@ -173,8 +220,11 @@
                 CheckResult = s.CheckResult,
                 Remarks = s.Remarks,
                 SaleOrder = ca.Caa015,
-                DepartName = d.Departmentname
-
+                DepartName = d.Departmentname,
+                PlanName = s.PlanName,
+                fcheckBy = us2.Fname,
+                SubmitDate = s.SubmitDate,
+                SubmitStatus = s.SubmitStatus
             }).OrderBy(s => s.CreateDate, OrderByType.Desc);
         var items = query.ToPageList(queryObj.PageIndex, queryObj.Limit,
             ref totalCount);
@@ -183,19 +233,27 @@
     }
 
 
-    public List<QsQaItemXj01> setJYItem(string itemNo)
+    public List<QsQaItemXj01> setJYItem(string itemNo, string planName)
     {
         var db = SqlSugarHelper.GetInstance();
 
         var count = db.Queryable<MesQa>().Where(s => s.QsType == "2"
-            && s.ItemNo == itemNo && s.Fsubmit == 1).Count();
+                && s.ItemNo == itemNo && s.Fsubmit == 1 && s.QaPlan == planName)
+            .Count();
 
         if (count <= 0) return new List<QsQaItemXj01>();
 
+        decimal? QsId = db.Queryable<MesQa>()
+            .Where(s => s.QsType == "2"
+                        && s.ItemNo == itemNo
+                        && s.QaPlan == planName
+                        && s.Fsubmit == 1)
+            .Select(s => s.Id)
+            .First();
+
         return db
             .Queryable<MesQualityStandard>()
-            .Where(b => b.QsType == "2"
-                        && b.ItemNo == itemNo).Select(b => new QsQaItemXj01
+            .Where(b => b.Pid == QsId).Select(b => new QsQaItemXj01
             {
                 ProjName = b.ProjName,
                 ItemMod = b.ItemMod,
@@ -322,6 +380,81 @@
                     .SetColumns(s => s.SubmitStatus == 1)
                     .SetColumns(s => s.SubmitBy == rkjDto.userNo)
                     .SetColumns(s => s.SubmitDate == DateTime.Now)
+                    .Where(s => s.Id == rkjDto.gid)
+                    .ExecuteCommand();
+            });
+
+        var db = SqlSugarHelper.GetInstance();
+        // 鍒涘缓鍙傛暟
+        var FID = new SugarParameter("P_ID", rkjDto.gid);
+
+
+        var FRes = new SugarParameter("c_result", null, true); // 杈撳嚭鍙傛暟
+        var FMsg = new SugarParameter("c_msg", null, true);
+
+        // 鎵ц瀛樺偍杩囩▼
+        db.Ado.UseStoredProcedure()
+            .GetDataTable("PRC_XJ_UPDATE_RES_JK", FID, FRes, FMsg);
+
+        int result = int.Parse((string)FRes.Value);
+        string message = FMsg.Value == DBNull.Value
+            ? string.Empty
+            : (string)FMsg.Value;
+        if (result == 1)
+        {
+            //瀛樺偍杩囩▼澶辫触鍒欎簨鍔¤繘琛屽洖婊�
+            //db.Ado.RollbackTran();
+            throw new Exception(message);
+        }
+
+        // 鎴愬姛鎻愪氦鍚庢帹閫侀拤閽夋秷鎭�
+        var qaXj = db.Queryable<QaXj>()
+            .Where(s => s.Id == rkjDto.gid)
+            .First();
+        
+        if (qaXj != null)
+        {
+            try
+            {
+                var qaMsgDto = new
+                {
+                    id = qaXj.Id,
+                    lineName = qaXj.LineName,
+                    workshopName = qaXj.Departmentname,
+                    qaType = "宸℃妫�楠屽畬鎴�"
+                };
+
+                // 璋冪敤閽夐拤娑堟伅鎺ㄩ�佹帴鍙�
+                var client = new System.Net.Http.HttpClient();
+                var json =
+                    Newtonsoft.Json.JsonConvert.SerializeObject(qaMsgDto);
+                var content = new System.Net.Http.StringContent(json,
+                    System.Text.Encoding.UTF8, "application/json");
+                var response = client
+                    .PostAsync(
+                        "http://192.168.0.100:9096/MesQaDingtalk/sendQaMsgXJ",
+                        content).Result;
+            }
+            catch (Exception ex)
+            {
+                // 璁板綍閽夐拤鎺ㄩ�佸紓甯革紝浣嗕笉褰卞搷涓绘祦绋�
+                Console.WriteLine($"閽夐拤娑堟伅鎺ㄩ�佸け璐�: {ex.Message}");
+            }
+        }
+
+        return useTransactionWithOracle > 0;
+    }
+
+
+    public bool XJReSubmit(LLJDto rkjDto)
+    {
+        var useTransactionWithOracle =
+            SqlSugarHelper.UseTransactionWithOracle(db =>
+            {
+                return db.Updateable<QsQaItemXj>()
+                    .SetColumns(s => s.SubmitStatus == 0)
+                    .SetColumns(s => s.SubmitBy == null)
+                    .SetColumns(s => s.SubmitDate == null)
                     .Where(s => s.Id == rkjDto.gid)
                     .ExecuteCommand();
             });
@@ -712,7 +845,7 @@
                 .ExecuteCommand();
         });
     }
-    
+
     public int saveNotesPid(XJDto dto)
     {
         return SqlSugarHelper.UseTransactionWithOracle(db =>
@@ -742,18 +875,57 @@
     {
         var db = SqlSugarHelper.GetInstance();
 
-        var count = db.Queryable<XJBadReason>().Where(s => s.BillNo == billNo).Count();
+        var count = db.Queryable<XJBadReason>().Where(s => s.BillNo == billNo)
+            .Count();
 
         if (count <= 0) return null;
 
         var reason = db
             .Queryable<XJBadReason>()
-            .Where(s => s.BillNo == billNo).Select(
-                b => new XJBadReason
-                {
-                    Reason = b.Reason
-                }).ToList();
+            .Where(s => s.BillNo == billNo).Select(b => new XJBadReason
+            {
+                Reason = b.Reason
+            }).ToList();
 
         return reason;
     }
+
+    public decimal SavePlan(decimal pid, string PlanName)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        var res = db.Updateable<QsQaItemXj>()
+            .SetColumns(a => a.PlanName == PlanName)
+            .Where(a => a.Id == pid)
+            .ExecuteCommand();
+
+        return res;
+    }
+
+    public (decimal?, string?, string?) CreateNew(string? DaaNo, string? userNo,
+        string? planName)
+    {
+        var db = SqlSugarHelper.GetInstance();
+        // 鍒涘缓鍙傛暟
+        var FitemNo = new SugarParameter("P_DAA001", DaaNo);
+        var FuserNo = new SugarParameter("P_USER", userNo);
+        var FplanName = new SugarParameter("P_PLAN_NAME", planName);
+
+
+        var FRes = new SugarParameter("P_FLAG", null, true); // 杈撳嚭鍙傛暟
+        var FMsg = new SugarParameter("P_TEXT", null, true);
+        var FBillNo = new SugarParameter("po_BILL_NO", null, true);
+
+        // 鎵ц瀛樺偍杩囩▼
+        db.Ado.UseStoredProcedure().GetDataTable("PRC_XJ_GENERATE_JK", FitemNo,
+            FuserNo, FplanName, FRes, FMsg, FBillNo);
+
+        // 鑾峰彇杈撳嚭缁撴灉
+        var Res = Convert.ToInt32(FRes.Value);
+        var Msg = FMsg.Value?.ToString();
+        var BillNo = FBillNo.Value?.ToString();
+
+        Console.WriteLine($"缁撴灉: {Res}, 杩斿洖娑堟伅: {Msg},鍗曟嵁鍙凤細{BillNo}");
+
+        return (Res, Msg, BillNo);
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3