如洲 陈
4 天以前 fba48d2d676cd9b6d493163aef9d87f6e5090aee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
using MES.Service.DB;
using MES.Service.Modes;
 
namespace MES.Service.service.QC;
 
public class BaseService
{
    public string[]? getUserLineNo(string userNo)
    {
        //MesLineUser
        var db = SqlSugarHelper.GetInstance();
        var mesLineUsers = db.Queryable<MesLineUser>()
            .Where(a => a.Fcode == userNo)
            .ToList();
        return mesLineUsers.Select(s => s.LineNo).ToArray();
    }
 
    public int saveImage(List<MesQsImage> entity)
    {
        var mesQsImages = entity.Where(item => item.Id == null).ToList();
 
        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 =>
            db.Insertable(mesQsImages).ExecuteCommand());
    }
 
    public int removeImage(decimal? id)
    {
        return SqlSugarHelper.UseTransactionWithOracle(db => db
            .Deleteable(new MesQsImage { Id = id })
            .ExecuteCommand());
    }
 
    public List<MesQsImage> getByFid(decimal id, string qsType)
    {
        var db = SqlSugarHelper.GetInstance();
        var mesQsImages = db.Queryable<MesQsImage>()
            .Where(s => s.Fid == id && s.QsType == qsType).ToList();
        mesQsImages.ForEach(s =>
        {
            if (s.ImageData is { Length: > 0 })
                s.base64Date = Convert.ToBase64String(s.ImageData);
        });
        return mesQsImages;
 
        
    }
    public List<MesQsImage> getByOqcFid(decimal id, string qsType)
    {
        var db = SqlSugarHelper.GetInstance();
        var mesQsImages = db.Queryable<MesQsImage>()
            .Where(s => s.Fid == id && s.QsType == qsType).ToList();
 
        var mesOqcItemsDetect02 = db.Queryable<MesOqcItemsDetect02>()
            .Where(s => s.Id == id).First();
 
        if (mesOqcItemsDetect02?.SaleOrderNo != null)
        {
            var baseOrderNo = mesOqcItemsDetect02.SaleOrderNo.Split('-')[0];
 
            var additionalImages = db.Queryable<MesQsImage>()
                .Where(s => s.OrderNo == baseOrderNo && s.QsType == qsType)
                .Where(s => !mesQsImages.Any(existing => existing.Id == s.Id))
                .ToList();
 
            mesQsImages.AddRange(additionalImages);
 
            if (mesQsImages.Count > 9)
            {
                mesQsImages = mesQsImages.Take(9).ToList();
            }
        }
 
        mesQsImages.ForEach(s =>
        {
            if (s.ImageData is { Length: > 0 })
                s.base64Date = Convert.ToBase64String(s.ImageData);
        });
        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;
    }
 
}