如洲 陈
5 天以前 fba48d2d676cd9b6d493163aef9d87f6e5090aee
MES.Service/service/QC/BaseService.cs
@@ -22,8 +22,23 @@
        mesQsImages.ForEach(s =>
        {
            if (!string.IsNullOrEmpty(s.base64Date))
            {
                //将base64转换为byte数组
                s.ImageData = Convert.FromBase64String(s.base64Date);
                // 统一文件名格式:如果为空或UUID格式,则生成时间戳格式,后缀为png
                if (string.IsNullOrEmpty(s.Picturename) ||
                    (s.Picturename.Length > 30 && !s.Picturename.Contains(".")))
                {
                    s.Picturename = $"{DateTimeOffset.Now.ToUnixTimeMilliseconds()}.png";
                }
                else if (s.Picturename.Contains("."))
                {
                    // 如果文件名包含扩展名,统一改为png后缀
                    var nameWithoutExt = s.Picturename.Split('.')[0];
                    s.Picturename = $"{nameWithoutExt}.png";
                }
            }
        });
        return SqlSugarHelper.UseTransactionWithOracle(db =>
@@ -85,4 +100,61 @@
        return mesQsImages;
    }
    /// <summary>
    /// 获取THJ退货检验的图片,支持根据退货单号查找额外图片
    /// </summary>
    public List<MesQsImage> getByThjFid(decimal id, string qsType)
    {
        var db = SqlSugarHelper.GetInstance();
        var mesQsImages = db.Queryable<MesQsImage>()
            .Where(s => s.Fid == id && s.QsType == qsType).ToList();
        // 获取THJ主表信息
        var qsQaItemThj = db.Queryable<QsQaItemThj>()
            .Where(s => s.Id == id).First();
        if (qsQaItemThj?.BillNo != null)
        {
            // 根据退货单号查找额外的图片
            var additionalImages = db.Queryable<MesQsImage>()
                .Where(s => s.OrderNo == qsQaItemThj.BillNo && s.QsType == qsType)
                .Where(s => !mesQsImages.Any(existing => existing.Id == s.Id))
                .ToList();
            mesQsImages.AddRange(additionalImages);
            // 限制最多9张图片
            if (mesQsImages.Count > 9)
            {
                mesQsImages = mesQsImages.Take(9).ToList();
            }
        }
        mesQsImages.ForEach(s =>
        {
            if (s.ImageData is { Length: > 0 })
            {
                s.base64Date = Convert.ToBase64String(s.ImageData);
                // 确保文件名格式正确,统一使用png后缀
                if (string.IsNullOrEmpty(s.Picturename))
                {
                    s.Picturename = $"{DateTimeOffset.Now.ToUnixTimeMilliseconds()}.png";
                }
                else if (s.Picturename.Contains("."))
                {
                    // 如果文件名包含扩展名,统一改为png后缀
                    var nameWithoutExt = s.Picturename.Split('.')[0];
                    s.Picturename = $"{nameWithoutExt}.png";
                }
            }
            else
            {
                // 如果没有图片数据,设置空的base64
                s.base64Date = string.Empty;
            }
        });
        return mesQsImages;
    }
}