111
啊鑫
2025-08-14 2b8d835217a75650e066de7d39509eee9923ef3c
111
已修改3个文件
72 ■■■■ 文件已修改
MES.Service/Dto/service/RKJDto.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/service/QC/RKJService.cs 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MESApplication/Controllers/QC/RKJController.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
MES.Service/Dto/service/RKJDto.cs
@@ -5,6 +5,8 @@
public class RKJDto
{
    public string? userNo { get; set; }
    public string? releaseNo { get; set; }
    //主表id
    public int? gid { get; set; }
MES.Service/service/QC/RKJService.cs
@@ -132,10 +132,12 @@
        return qsItemOqcItems;
    }
    private void ProcessQualityItem(ISqlSugarClient db, QsItemOqcItem item, decimal quantity)
    private void ProcessQualityItem(ISqlSugarClient db, QsItemOqcItem item,
        decimal quantity)
    {
        // 验证必要字段
        if (string.IsNullOrWhiteSpace(item.FcheckLevel) || string.IsNullOrWhiteSpace(item.QsCode))
        if (string.IsNullOrWhiteSpace(item.FcheckLevel) ||
            string.IsNullOrWhiteSpace(item.QsCode))
        {
            item.LevelNum = 1;
            item.FreQty = 0;
@@ -146,10 +148,12 @@
        var levelField = GetLevelField(item.FcheckLevel);
        
        // 使用参数化查询防止SQL注入
        var sql = $"SELECT {levelField} FROM MES_QM_AQL1 A LEFT JOIN MES_QM_AQL2 B ON B.AQL1_ID = A.ID " +
        var sql =
            $"SELECT {levelField} FROM MES_QM_AQL1 A LEFT JOIN MES_QM_AQL2 B ON B.AQL1_ID = A.ID " +
                  $"WHERE A.SAMPLE_SIZE_NO = @QsCode AND B.LOT_FROM <= @Quantity AND @Quantity <= B.LOT_TO";
        
        var aqlResult = db.Ado.SqlQuerySingle<string>(sql, new { QsCode = item.QsCode, Quantity = quantity });
        var aqlResult = db.Ado.SqlQuerySingle<string>(sql,
            new { QsCode = item.QsCode, Quantity = quantity });
        if (string.IsNullOrWhiteSpace(aqlResult))
        {
@@ -162,13 +166,15 @@
        var facLevelValue = ExtractSubstring(item.FacLevel ?? "", '(', ')');
        if (string.IsNullOrWhiteSpace(facLevelValue))
        {
            item.LevelNum = decimal.TryParse(aqlResult, out var level) ? level : 1;
            item.LevelNum =
                decimal.TryParse(aqlResult, out var level) ? level : 1;
            item.FreQty = 0;
            return;
        }
        // 获取样本大小和结果
        var resultSql = $"SELECT FSAMPLE_SIZE_WORD, {facLevelValue} as Result FROM MES_QM_AQL1 A " +
        var resultSql =
            $"SELECT FSAMPLE_SIZE_WORD, {facLevelValue} as Result FROM MES_QM_AQL1 A " +
                       $"LEFT JOIN MES_QM_AQL3 C ON C.AQL1_ID = A.ID " +
                       $"WHERE A.SAMPLE_SIZE_NO = @QsCode AND SAMPLE_SIZE_WORD = @LevelValue";
        
@@ -409,8 +415,8 @@
            result = 1;
        else if (count - passCount < QsItemOqcItem.FreQty) result = 1;
        var useTransactionWithOracle = SqlSugarHelper.UseTransactionWithOracle(
            db =>
        var useTransactionWithOracle =
            SqlSugarHelper.UseTransactionWithOracle(db =>
            {
                var commit = 0;
                commit += db.Updateable<QsItemOqcItem>()
@@ -508,13 +514,16 @@
    }
    public (List<QsItemOqcReq> items, int TotalCount) GetPage(XJPageResult queryObj)
    public (List<QsItemOqcReq> items, int TotalCount) GetPage(
        XJPageResult queryObj)
    {
        var db = SqlSugarHelper.GetInstance();
        var totalCount = 0;
        
        var query = db.Queryable<QsItemOqcReq, MesItems, Womdaa,MesLine,SysUser>((a, b, da,c,us) =>
        var query = db
            .Queryable<QsItemOqcReq, MesItems, Womdaa, MesLine, SysUser>((a, b,
                    da, c, us) =>
            new JoinQueryInfos(
                JoinType.Left, a.ItemNo == b.ItemNo,       // 关联物料信息
                JoinType.Left, a.BillNo == da.Daa001,       // 关联工单信息
@@ -528,11 +537,15 @@
            .WhereIF(!string.IsNullOrEmpty(queryObj.id),
                (a, b, da,c,us) => a.Id.ToString() == queryObj.id)
            // 完成状态过滤
            .WhereIF("未完成".Equals(queryObj.result), (a, b, da,c,us) => a.FcheckResu == null)
            .WhereIF(!"未完成".Equals(queryObj.result), (a, b, da,c,us) => a.FcheckResu != null)
            .WhereIF("未完成".Equals(queryObj.result),
                (a, b, da, c, us) => a.Fsubmit == null || a.Fsubmit == 0)
            .WhereIF(!"未完成".Equals(queryObj.result),
                (a, b, da, c, us) => a.Fsubmit == 1)
            // 搜索条件(物料名称/编号)
            .WhereIF(!string.IsNullOrEmpty(queryObj.SearchValue),
                (a, b, da,c,us) => b.ItemName.ToLower().Contains(queryObj.SearchValue.ToLower()) ||
                (a, b, da, c, us) =>
                    b.ItemName.ToLower()
                        .Contains(queryObj.SearchValue.ToLower()) ||
                                   a.ItemNo.ToLower().Contains(queryObj.SearchValue.ToLower()))
            // 查询字段
            .Select((a, b, da,c,us) => new QsItemOqcReq
@@ -559,7 +572,8 @@
            .OrderBy(a => a.CreateDate, OrderByType.Desc);
        // 分页查询
        var result = query.ToPageList(queryObj.PageIndex, queryObj.Limit, ref totalCount);
        var result = query.ToPageList(queryObj.PageIndex, queryObj.Limit,
            ref totalCount);
        return (result, totalCount);
    }
@@ -723,7 +737,8 @@
            // 4. 获取需要处理的检验项目(只查询必要字段提升性能)
            var processItems = db.Queryable<QsItemOqcItem>()
                .Where(s => s.Pid == rkjDto.gid && 
                           s.MaxValue == null && s.StandardValue == null && s.MinValue == null)
                            s.MaxValue == null && s.StandardValue == null &&
                            s.MinValue == null)
                .Select(s => new { s.Id, s.LevelNum })
                .ToList();
@@ -774,7 +789,8 @@
        });
    }
    private int UpdateMainInspectionStatus(ISqlSugarClient db, decimal? gid, string userNo)
    private int UpdateMainInspectionStatus(ISqlSugarClient db, decimal? gid,
        string userNo)
    {
        // 检查是否还有未完成的检验项目
        var unfinishedCount = db.Queryable<QsItemOqcItem>()
@@ -822,7 +838,8 @@
        return updateResult;
    }
    private void GenerateQualityIssueRecord(ISqlSugarClient db, decimal? gid, string userNo)
    private void GenerateQualityIssueRecord(ISqlSugarClient db, decimal? gid,
        string userNo)
    {
        try
        {
@@ -873,6 +890,21 @@
        }
    }
    public int IqcQaSubmit(RKJDto dto)
    {
        SqlSugarHelper.UseTransactionWithOracle(db =>
        {
           return db.Updateable<QsItemOqcReq>()
                .SetColumns(a => a.Fsubmit == 1)
                .SetColumns(a => a.FsubmitBy == dto.userNo)
                .SetColumns(a => a.FsubmitDate == DateTime.Now)
                .Where(a => a.ReleaseNo == dto.releaseNo)
                .ExecuteCommand();
        });
        return 0;
    }
    // 备份:原始版本的saveItem方法
    public int saveItemOriginal(RKJDto rkjDto)
    {
MESApplication/Controllers/QC/RKJController.cs
@@ -395,7 +395,9 @@
        try
        {
            dynamic resultInfos = new ExpandoObject();
            var tbBillList =
                new RKJService().IqcQaSubmit(rkjDto);
            resultInfos.tbBillList = tbBillList;
            return new ResponseResult
            {
                status = 0,