zyf
2025-12-03 edb93f37437f4670372b66667702a6f43eeb094b
MES.Service/service/QC/SJService.cs
@@ -16,6 +16,7 @@
using System;
using System.Security.Cryptography;
using SqlSugar.Extensions;
using Masuit.Tools.Reflection;
namespace MES.Service.service.QC;
@@ -113,9 +114,10 @@
                Daa003 = a.Daa003,
                Daa004 = a.Daa004,
                Daa008 = a.Daa008,
                LineName = a.LineName,
                LineName = d.Departmentname == "注塑车间" ? da.Daa020 : a.LineName,
                SaleOrder = ca.Caa015,
                DepartName = d.Departmentname
                DepartName = d.Departmentname,
                PlanName = a.PlanName
            })
            .OrderBy(a => a.CreateTime, OrderByType.Desc);
        var items = data.ToPageList(queryObj.PageIndex, queryObj.Limit,ref totalCount);
@@ -320,17 +322,33 @@
            .Where(s => s.Gid == item.gid)
            .ExecuteCommand();
        var qsItemIpiItems = item.Items;
        SqlSugarHelper.UseTransactionWithOracle(
            db =>
            {
                // 1. 设置父级ID
                qsItemIpiItems.ForEach(s => s.Pid = item.gid);
                return db.Insertable(qsItemIpiItems).ExecuteCommand();
                // 2. 插入
                db.Insertable(qsItemIpiItems).ExecuteCommand();
                // 3. 重新从数据库查询插入后的记录(按 pid 查询) 防止检验结果更新到旧项目上
                qsItemIpiItems = db.Queryable<QsItemIpiItem>()
                                    .Where(x => x.Pid == item.gid)
                                    .ToList();
                // ✅ 返回值不重要,只要保证事务提交即可
                return 1;
            });
        //item.Items = getQSItems(item.gid, null);
        //没有上下限的检验项目自动盘点为合格
        item.Items.ForEach(s =>
        qsItemIpiItems.ForEach(s =>
        {
            if (s.MaxValue != null || s.StandardValue != null || s.MinValue != null)
            {
@@ -351,7 +369,19 @@
        return item;
    }
    public List<string?> GetItemProj(string? itemNo)
    public decimal SavePlan(decimal pid,string PlanName)
    {
        var db = SqlSugarHelper.GetInstance();
        var res = db.Updateable<QsItemIpiReq>()
                          .SetColumns(a => a.QaPlan == PlanName)
                          .Where(a => a.Id == pid)
                          .ExecuteCommand();
        return res;
    }
        public List<string?> GetItemProj(string? itemNo)
    { //获取物料所有的检验计划名称
        var db = SqlSugarHelper.GetInstance();
@@ -520,11 +550,29 @@
        // withOracle += autoResult(detail);
        var db = SqlSugarHelper.GetInstance();
        // 创建参数
        var FId= new SugarParameter("P_ID", detail.Gid);
        // 输出参数
        var FRes = new SugarParameter("c_result", null, true);
        var FMsg = new SugarParameter("c_msg", null, true);
        // 执行存储过程
        db.Ado.UseStoredProcedure().GetDataTable("PRC_SJ_UPDATE_RESU", FId, FRes, FMsg);
        // 获取输出结果
        var Res = Convert.ToInt32(FRes.Value);
        var Msg = FMsg.Value?.ToString();
        Console.WriteLine($"结果: {Res}, 返回消息: {Msg}");
        return withOracle;
    }
    //主表修改备注字段
    //主表修改不合格描述字段
    public int saveRemarksGid(QsItem dto)
    {
        return SqlSugarHelper.UseTransactionWithOracle(db =>
@@ -532,6 +580,19 @@
            return db.Updateable<QsItemIpiReq>()
                .SetColumns(it =>
                    it.Remarks == dto.Remarks) //SetColumns是可以叠加的 写2个就2个字段赋值
                .Where(it => it.Id == dto.gid)
                .ExecuteCommand();
        });
    }
    //主表修改备注字段
    public int saveCommentGid(QsItem dto)
    {
        return SqlSugarHelper.UseTransactionWithOracle(db =>
        {
            return db.Updateable<QsItemIpiReq>()
                .SetColumns(it =>
                    it.Comments == dto.Comments) //SetColumns是可以叠加的 写2个就2个字段赋值
                .Where(it => it.Id == dto.gid)
                .ExecuteCommand();
        });
@@ -647,6 +708,57 @@
        }
    }
    public bool SJQaReSubmit(QsItem item)
    {
        if (item == null)
            throw new ArgumentNullException(nameof(item), "质检项数据不能为空");
        if (string.IsNullOrWhiteSpace(item.userNo))
            throw new ArgumentException("用户编号不能为空", nameof(item.userNo));
        var (factory, company) = UserUtil.GetFactory(item.userNo);
        try
        {
            // 定义输出参数
            var outputResult = new SugarParameter("o_Result", null, DbType.Int32, ParameterDirection.Output,
                4000);
            var outputMessage = new SugarParameter("o_Msg", null, DbType.String, ParameterDirection.Output, 4000);
            // 定义输入参数
            var parameters = new List<SugarParameter>
         {
             new("p_Id", item.gid, DbType.Int32,ParameterDirection.Input),
             new("p_Flag", 2, DbType.Int32,ParameterDirection.Input),
             new("p_User", item.userNo, DbType.String, ParameterDirection.Input),
             outputResult,
             outputMessage
         };
            var db = SqlSugarHelper.GetInstance();
            // 使用 SqlSugar 执行存储过程
            db.Ado.ExecuteCommand(
                "BEGIN PRC_WOMDAA_SJ_UPDATE_RES(:p_Id,:p_Flag,:p_User,:o_Result, :o_Msg); END;",
                parameters.ToArray());
            // 获取输出参数的值
            var resultValue = outputResult.Value?.ToString();
            var messageValue = outputMessage.Value?.ToString();
            if ("1".Equals(resultValue)) { throw new Exception(messageValue); }
            if ("0".Equals(resultValue)) { throw new Exception(messageValue); }
            return true;
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
    }
    /// <summary>
    /// 更新QsItemIpiItem的IsPass值
    /// </summary>
@@ -655,6 +767,15 @@
    /// <returns>更新影响的行数</returns>
    public int UpdateQsItemIpiItemIsPass(decimal id, decimal isPass)
    {
        SqlSugarHelper.UseTransactionWithOracle(db =>
        {
            return db.Updateable<QsItemIpiItemDetail>()
                .SetColumns(s => s.FcheckResu == isPass.ToString())
                .SetColumns(s => s.Fstand == ((isPass == 1) ? "√" : "×"))
                .Where(s => s.Pid == id)
                .ExecuteCommand();
        });
        return SqlSugarHelper.UseTransactionWithOracle(db =>
        {
            return db.Updateable<QsItemIpiItem>()
@@ -662,6 +783,8 @@
                .Where(s => s.Id == id)
                .ExecuteCommand();
        });
    }
    /// <summary>
@@ -802,11 +925,11 @@
        var db = SqlSugarHelper.GetInstance();
        decimal numUserId = db.Queryable<DingStaff>()
        string numUserId = db.Queryable<DingStaff>()
            .Where(t => t.StaffName == InData.Fname)
            .Select(t => t.Id)
            .First();
        if (numUserId > 0)
        if (numUserId is not null)
        {
            string UserId = Convert.ToString(numUserId);
@@ -936,7 +1059,7 @@
                string requestContent = Newtonsoft.Json.JsonConvert.SerializeObject(startProcessInstanceRequest);
                Debug.WriteLine("startProcessInstanceRequest内容:");
                Debug.WriteLine(requestContent);
                //var response = client.StartProcessInstanceWithOptions(startProcessInstanceRequest, startProcessInstanceHeaders, new RuntimeOptions());
                var response = client.StartProcessInstanceWithOptions(startProcessInstanceRequest, startProcessInstanceHeaders, new RuntimeOptions());
                //return $"钉钉工作流实例启动成功: {Newtonsoft.Json.JsonConvert.SerializeObject(response.Body)}";
                return true;
            }