南骏 池
2025-06-02 1be2fc056943ba8b9e62328430e15beee03e8a9f
service/QC/IpqcService.cs
@@ -5,7 +5,10 @@
using NewPdaSqlServer.entity;
using NewPdaSqlServer.util;
using SqlSugar;
using System.Data;
using System.Data.SqlClient;
using static Azure.Core.HttpHeader;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
namespace NewPdaSqlServer.service.QC;
@@ -83,7 +86,12 @@
                a.FcheckResu,
                a.Order,
                a.Ybsl,
                a.YbslIn
                a.ISRZXX,
                a.IPQCRZXX,
                a.IPQCRZXXDate,
                a.IPQCRZXXNum,
                a.IPQCpscs,
                a.FcheckType,
            }).Select((a, b) => new MesQaItemsDetectDetail5
            {
                Guid = a.Guid,
@@ -107,7 +115,224 @@
                Order = a.Order,
                Ybsl = a.Ybsl,
                YbslIn = Ybsl_In,
                ISRZXX = a.ISRZXX,
                IPQCRZXX = a.IPQCRZXX,
                IPQCRZXXDate = a.IPQCRZXXDate.ToString(),
                IPQCRZXXNum = a.IPQCRZXXNum,
                IPQCpscs = a.IPQCpscs,
                FcheckType =a.FcheckType,
            }).OrderBy(a => a.Order)
            .ToList();
    }
    public (List<VIpqcXj> item, int TotalCount) getPageXj(XJPageResult queryObj)
    {
        var parsedGuid = Guid.Empty;
        if (!queryObj.id.IsNullOrEmpty())
        {
            var isValid = Guid.TryParse(queryObj.id, out parsedGuid);
            if (!isValid)
                throw new ApplicationException("GUID转换错误");
        }
        var totalCount = 0;
        var pageList = Db.Queryable<VIpqcXj>()
            .WhereIF(!string.IsNullOrWhiteSpace(queryObj.keyword), a =>
                a.ItemNo.Contains(queryObj.keyword) ||
                a.ItemName.Contains(queryObj.keyword) ||
                a.Daa001.Contains(queryObj.keyword) ||
                a.ReleaseNo.Contains(queryObj.keyword) ||
                a.DepartmentName.Contains(queryObj.keyword) ||
                a.xtName.Contains(queryObj.keyword)
            )
            .WhereIF(UtilityHelper.CheckGuid(parsedGuid),
                a => a.Guid == parsedGuid.ToString())
            .Where(a => (a.FSubmit ?? 0) == 0)
            .OrderByDescending(a => a.CreateDate)
            .ToPageList(queryObj.PageIndex, queryObj.Limit, ref totalCount);
        return (pageList, totalCount);
    }
    //更新不合格描述
    public int updateIpqcRzxx(LLJDto dto)
    {
        if (dto == null) throw new ArgumentNullException(nameof(dto), "参数对象不能为 null");
        // 参数校验(根据存储过程新增参数)
        if (string.IsNullOrEmpty(dto.pid?.ToString()))
            throw new ArgumentException("项目明细id存在问题,请联系管理员!", nameof(dto.pid));
        var withOracle = Db.Updateable<MesQaItemsDetectDetail5>()
                .SetColumns(s => s.IPQCRZXX == dto.inRzxxValue)
                .Where(s => s.Guid.ToString() == dto.pid)
                .ExecuteCommand();
        return withOracle;
    }
    public dynamic CreateByWomdaa(dynamic query)
    {
        if (query == null) throw new ArgumentNullException(nameof(query));
        if (string.IsNullOrEmpty(query.userAccount?.ToString()))
            throw new ArgumentException("用户账号不能为空", nameof(query.userAccount));
        if (string.IsNullOrEmpty(query.inOrderGuid1?.ToString()))
            throw new ArgumentException("检验单GUID不能为空", nameof(query.inOrderGuid1));
            if (string.IsNullOrEmpty(query.DAA001?.ToString()))
                throw new ArgumentException("工单号不能为空", nameof(query.inOrderGuid1));
            var _strMsg = "";
        var _status = -1;
        using (var conn = new SqlConnection(DbHelperSQL.strConn))
        using (var cmd = new SqlCommand("ipqc_createByWomdaa", conn))
        {
            try
            {
                conn.Open();
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter[] parameters =
                {
                    new("@po_outMsg", SqlDbType.NVarChar, 150) { Direction = ParameterDirection.Output },
                    new("@po_outStatus", SqlDbType.Int) { Direction = ParameterDirection.Output },
                    new("@pi_user", SqlDbType.NVarChar, 150) { Value = query.userAccount },
                    new("@pi_OrderGuid1", SqlDbType.UniqueIdentifier) { Value = Guid.Parse(query.inOrderGuid1.ToString()) },
                    new("@pi_DAA001", SqlDbType.NVarChar, 150) { Value = query.DAA001.ToString() },
                    new("@pi_inP1", SqlDbType.NVarChar, 20) { Value = query.pi_inP1 ?? DBNull.Value },
                    new("@pi_inP2", SqlDbType.NVarChar, 20) { Value = query.pi_inP2 ?? DBNull.Value }
                };
                cmd.Parameters.AddRange(parameters);
                cmd.ExecuteNonQuery();
                _strMsg = parameters[0].Value?.ToString() ?? "";
                _status = Convert.ToInt32(parameters[1].Value ?? -1);
                if (_status <= 0) throw new Exception(_strMsg);
                return new
                {
                    message = _strMsg,
                    status = _status
                };
            }
            catch (Exception ex)
            {
                throw new Exception($"检验单更新失败:{ex.Message}");
            }
        }
    }
    public int UpdateTableConfig(string selectedWater, string selectedFlow, string tableData, string mxguid)
    {
        var sqlParams = new List<SugarParameter> {
            new("@selectedWater", selectedWater),
            new("@selectedFlow", selectedFlow),
            new("@tableData", tableData),
            new("@mxguid", mxguid)
        };
        var sql = @"UPDATE MES_QA_ITEMS_DETECT_DETAIL5
                    SET ipqc_zrxn_sel1 = @selectedWater,
                        ipqc_zrxn_sel2 = @selectedFlow,
                        ipqc_zrxn_table = @tableData
                    WHERE guid = @mxguid";
        return Db.Ado.ExecuteCommand(sql, sqlParams);
    }
    public dynamic GetTableConfig(string mxguid)
    {
        var sqlParams = new List<SugarParameter> {
            new("@mxguid", mxguid)
        };
        var sql = @"SELECT ipqc_zrxn_sel1,ipqc_zrxn_sel2,ipqc_zrxn_table
                    FROM MES_QA_ITEMS_DETECT_DETAIL5
                    WHERE guid = @mxguid";
        var result = Db.Ado.SqlQuery<dynamic>(sql, sqlParams).FirstOrDefault();
        if (result == null)
            throw new Exception("配置信息查询结果为空");
        return result;
    }
    public List<dynamic> GetRzxxList(string mxguid)
    {
        var sqlParams = new List<SugarParameter> {
            new("@mxguid", mxguid)
        };
        var sql = @"SELECT a.s_type, a.defect_name
                    FROM [dbo].[MES_DEFECT_CODE] a
                    WHERE a.s_type = '认证信息'
                    AND a.pid = (
                        SELECT TOP 1 b.guid
                        FROM [dbo].[MES_DEFECT_CODE] b
                        INNER JOIN [dbo].[MES_QA_ITEMS_DETECT_DETAIL5] d
                            ON b.defect_name = d.fcheck_item
                        WHERE d.guid = @mxguid
                        ORDER BY b.guid
                    )";
        var result = Db.Ado.SqlQuery<dynamic>(sql, sqlParams);
        if (result == null || result.Count == 0)
            throw new Exception("未找到相关认证信息");
        return result;
    }
    public int UpdateScDate(string scDateValue, string mxguid)
    {
        var sqlParams = new List<SugarParameter> {
            new("@scDateValue", scDateValue),
            new("@mxguid", mxguid)
        };
        var sql = @"UPDATE MES_QA_ITEMS_DETECT_DETAIL5
                    SET ipqc_rzxx_date = @scDateValue
                    WHERE guid = @mxguid";
        return Db.Ado.ExecuteCommand(sql, sqlParams);
    }
    public int UpdateRzxxNum(string ipqcrzxxNum, string mxguid)
    {
        var sqlParams = new List<SugarParameter> {
            new("@ipqcrzxxNum", ipqcrzxxNum),
            new("@mxguid", mxguid)
        };
        var sql = @"UPDATE MES_QA_ITEMS_DETECT_DETAIL5
                    SET ipqc_rzxx_num = @ipqcrzxxNum
                    WHERE guid = @mxguid";
        return Db.Ado.ExecuteCommand(sql, sqlParams);
    }
    public int UpdateCpscs(string ipqCpscs, string mxguid)
    {
        var sqlParams = new List<SugarParameter> {
            new("@ipqCpscs", ipqCpscs),
            new("@mxguid", mxguid)
        };
        var sql = @"UPDATE MES_QA_ITEMS_DETECT_DETAIL5
                    SET ipqc_pscs = @ipqCpscs
                    WHERE guid = @mxguid";
        return Db.Ado.ExecuteCommand(sql, sqlParams);
    }
}