tjx
2025-12-04 662c8acd89bdcbbd92d1b917d6128cbcce0134d7
MES.Service/service/QC/XJService.cs
@@ -15,7 +15,7 @@
    private readonly BaseService _baseService = new();
    private readonly string[] statusArray = ["开工", "待开工","已开工" ,"未开工"];
    private readonly string[] statusArray = ["开工", "待开工", "已开工", "未开工"];
    //生成最新的检验单号
    public string getMaxReleaseNo()
@@ -49,7 +49,7 @@
        public decimal? Daa008 { get; set; }
        public string? Daa015 { get; set; }
        public string? Daa020 { get; set; }
        public string? ItemNo { get; set; }   // 来自关联表
        public string? ItemNo { get; set; } // 来自关联表
        public string? ItemName { get; set; }
    }
@@ -59,22 +59,22 @@
        //in的写法 https://www.donet5.com/Home/Doc?typeId=1187
        return db.Queryable<Womdaa,MesItems>((a, b) => new JoinQueryInfos(
            JoinType.Inner, a.Daa002 == b.Id.ToString()))
        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,
                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
                Id = a.Id
            })
            .ToList();
    }
@@ -82,7 +82,7 @@
    public List<QCUserLine> getLineAll(string UserNo)
    {
        var db = SqlSugarHelper.GetInstance();
        return db.Queryable<QCUserLine>()
            .Where(a => a.UserCode == UserNo)
            .Select(a => new QCUserLine
@@ -93,7 +93,6 @@
    }
    public List<Womdaa> getDaa001(JObject data)
    {
        var daa020 = data["daa020"]?.ToString();
@@ -102,7 +101,8 @@
        var db = SqlSugarHelper.GetInstance();
        return db.Queryable<Womdaa, MesItems>((a, b) =>
                new JoinQueryInfos(JoinType.Inner, a.Daa002 == b.Id.ToString()))
            .WhereIF(!string.IsNullOrEmpty(daa020), (a, b) => a.Daa015 == daa020)
            .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
@@ -133,14 +133,16 @@
    }
    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();
        var plans = db.Queryable<MesQa>()
            .Where(a => a.ItemNo == itemNo && a.QsType == "2")
            .Select(s => s.QaPlan)
            .Distinct()
            .ToList();
        return plans;
    }
@@ -161,7 +163,8 @@
        var query = db
            .Queryable<QsQaItemXj, Womdaa, MesLine,
                MesItems, SysUser,Womcaa,SysDepartment, MesUserDepartmentQc,MesItems, SysUser>((s, a, c, b, us,ca,d,dq,i,us2) =>
                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,
@@ -169,7 +172,8 @@
                    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,
                    dq.Departmentcode == d.Departmentcode, //查询用户权限
                    JoinType.Left, i.Id == Convert.ToDecimal(a.Daa002),
                    JoinType.Left, us2.Fcode == s.SubmitBy
                )
@@ -185,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,dq,i,us2) => 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 = d.Departmentname == "注塑车间" ?  a.Daa020:c.LineName,
                CreateUser = us.Fname==null ? s.CreateBy : 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,
@@ -215,9 +223,8 @@
                DepartName = d.Departmentname,
                PlanName = s.PlanName,
                fcheckBy = us2.Fname,
                SubmitDate= s.SubmitDate,
                SubmitDate = s.SubmitDate,
                SubmitStatus = s.SubmitStatus
            }).OrderBy(s => s.CreateDate, OrderByType.Desc);
        var items = query.ToPageList(queryObj.PageIndex, queryObj.Limit,
            ref totalCount);
@@ -231,21 +238,22 @@
        var db = SqlSugarHelper.GetInstance();
        var count = db.Queryable<MesQa>().Where(s => s.QsType == "2"
            && s.ItemNo == itemNo && s.Fsubmit == 1 && s.QaPlan == planName).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();
            .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.Pid== QsId).Select(b => new QsQaItemXj01
            .Where(b => b.Pid == QsId).Select(b => new QsQaItemXj01
            {
                ProjName = b.ProjName,
                ItemMod = b.ItemMod,
@@ -381,14 +389,17 @@
        var FID = new SugarParameter("P_ID", rkjDto.gid);
        var FRes = new SugarParameter("c_result", null, true);            // 输出参数
        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);
        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;
        string message = FMsg.Value == DBNull.Value
            ? string.Empty
            : (string)FMsg.Value;
        if (result == 1)
        {
            //存储过程失败则事务进行回滚
@@ -396,6 +407,40 @@
            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;
    }
@@ -800,7 +845,7 @@
                .ExecuteCommand();
        });
    }
    public int saveNotesPid(XJDto dto)
    {
        return SqlSugarHelper.UseTransactionWithOracle(db =>
@@ -830,17 +875,17 @@
    {
        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;
    }
@@ -849,15 +894,15 @@
    {
        var db = SqlSugarHelper.GetInstance();
        var res = db.Updateable<QsQaItemXj>()
                          .SetColumns(a => a.PlanName == PlanName)
                          .Where(a => a.Id == pid)
                          .ExecuteCommand();
            .SetColumns(a => a.PlanName == PlanName)
            .Where(a => a.Id == pid)
            .ExecuteCommand();
        return res;
    }
    public (decimal?, string?, string?) CreateNew(string? DaaNo, string? userNo, string? planName)
    public (decimal?, string?, string?) CreateNew(string? DaaNo, string? userNo,
        string? planName)
    {
        var db = SqlSugarHelper.GetInstance();
        // 创建参数
@@ -866,12 +911,13 @@
        var FplanName = new SugarParameter("P_PLAN_NAME", planName);
        var FRes = new SugarParameter("P_FLAG", null, true);            // 输出参数
        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);
        db.Ado.UseStoredProcedure().GetDataTable("PRC_XJ_GENERATE_JK", FitemNo,
            FuserNo, FplanName, FRes, FMsg, FBillNo);
        // 获取输出结果
        var Res = Convert.ToInt32(FRes.Value);
@@ -882,5 +928,4 @@
        return (Res, Msg, BillNo);
    }
}