|
|
@@ -135,13 +135,17 @@ def generate_hardness_out_values(lot_no, code):
|
|
135
|
135
|
placeholders = clear_values(2,5)
|
|
136
|
136
|
|
|
137
|
137
|
# Iterate over the records to populate placeholder values
|
|
|
138
|
+ inspect_date = None
|
|
138
|
139
|
for record_idx, record in enumerate(records, start=1):
|
|
|
140
|
+ if record_idx == 1:
|
|
|
141
|
+ inspect_date = record.created_at
|
|
139
|
142
|
placeholders[f'v{record_idx}_1'] = record.p1 # Checkpoint 1 value
|
|
140
|
143
|
placeholders[f'v{record_idx}_2'] = record.p2 # Checkpoint 2 value
|
|
141
|
144
|
placeholders[f'v{record_idx}_3'] = record.p3 # Checkpoint 3 value
|
|
142
|
145
|
placeholders[f'v{record_idx}_4'] = record.avg # Average value
|
|
143
|
146
|
placeholders[f'v{record_idx}_5'] = record.rgrade # Judgment value
|
|
144
|
147
|
|
|
|
148
|
+ placeholders['inspect_date'] = inspect_date.strftime('%Y/%m/%d') if inspect_date else "-"
|
|
145
|
149
|
return placeholders
|
|
146
|
150
|
|
|
147
|
151
|
def generate_hardness_out_in_values(lot_no, code):
|
|
|
@@ -165,7 +169,11 @@ def generate_hardness_out_in_values(lot_no, code):
|
|
165
|
169
|
# Prepare placeholders
|
|
166
|
170
|
# placeholders = {}
|
|
167
|
171
|
placeholders = clear_values(4,5)
|
|
|
172
|
+ inspect_date = None
|
|
168
|
173
|
for idx, record in enumerate(out_data, start=1):
|
|
|
174
|
+ if idx == 1:
|
|
|
175
|
+ inspect_date = record.created_at
|
|
|
176
|
+
|
|
169
|
177
|
placeholders[f'v{idx}_1'] = record.p1
|
|
170
|
178
|
placeholders[f'v{idx}_2'] = record.p2
|
|
171
|
179
|
placeholders[f'v{idx}_3'] = record.p3
|
|
|
@@ -186,6 +194,7 @@ def generate_hardness_out_in_values(lot_no, code):
|
|
186
|
194
|
|
|
187
|
195
|
hide_con(placeholders, "v3_1", "25:28")
|
|
188
|
196
|
|
|
|
197
|
+ placeholders['inspect_date'] = inspect_date.strftime('%Y/%m/%d') if inspect_date else "-"
|
|
189
|
198
|
return placeholders
|
|
190
|
199
|
|
|
191
|
200
|
def generate_hardness_both_size_values(lot_no, ms,code):
|
|
|
@@ -201,7 +210,11 @@ def generate_hardness_both_size_values(lot_no, ms,code):
|
|
201
|
210
|
|
|
202
|
211
|
placeholders = clear_values(20,5)
|
|
203
|
212
|
# Separate OUT and IN data
|
|
|
213
|
+ inspect_date = None
|
|
204
|
214
|
for idx, record in enumerate(records, start=0):
|
|
|
215
|
+ if idx == 1:
|
|
|
216
|
+ inspect_date = record.created_at
|
|
|
217
|
+
|
|
205
|
218
|
if record.sub_order == 1:
|
|
206
|
219
|
for i,v in enumerate(["p1", "p2", "p3", "avg", "rgrade"],start=1):
|
|
207
|
220
|
placeholders[f"v{idx*2+1}_{i}"] = getattr(record,v)
|
|
|
@@ -210,6 +223,7 @@ def generate_hardness_both_size_values(lot_no, ms,code):
|
|
210
|
223
|
placeholders[f"v{idx*2+2}_{i}"] = getattr(record,v)
|
|
211
|
224
|
# Prepare placeholders
|
|
212
|
225
|
# placeholders = {}
|
|
|
226
|
+ placeholders['inspect_date'] = inspect_date.strftime('%Y/%m/%d') if inspect_date else "-"
|
|
213
|
227
|
return placeholders
|
|
214
|
228
|
|
|
215
|
229
|
|
|
|
@@ -250,6 +264,7 @@ def generate_dimension_values(lot_no, code):
|
|
250
|
264
|
|
|
251
|
265
|
|
|
252
|
266
|
# Ensure that we map each manualSize entry to a corresponding DataMs entry
|
|
|
267
|
+ inspect_date = None
|
|
253
|
268
|
for r in data_ms_records:
|
|
254
|
269
|
if r.row_no == 1:
|
|
255
|
270
|
placeholders[f'v1_2'] = r.dsize
|
|
|
@@ -260,6 +275,7 @@ def generate_dimension_values(lot_no, code):
|
|
260
|
275
|
|
|
261
|
276
|
placeholders[f'v3_2'] = r.hsize
|
|
262
|
277
|
placeholders[f'v3_3'] = r.hsizeok
|
|
|
278
|
+ inspect_date = r.created_at
|
|
263
|
279
|
|
|
264
|
280
|
if r.row_no == 2:
|
|
265
|
281
|
placeholders[f'v4_2'] = r.dsize
|
|
|
@@ -272,6 +288,7 @@ def generate_dimension_values(lot_no, code):
|
|
272
|
288
|
placeholders[f'v6_3'] = r.hsizeok
|
|
273
|
289
|
|
|
274
|
290
|
hide_con(placeholders, "v4_1", "24:28")
|
|
|
291
|
+ placeholders['inspect_date'] = inspect_date.strftime('%Y/%m/%d') if inspect_date else "-"
|
|
275
|
292
|
return placeholders
|
|
276
|
293
|
|
|
277
|
294
|
def is_ok(instance):
|
|
|
@@ -326,6 +343,7 @@ def generate_dimension_app_values(lot_no, code):
|
|
326
|
343
|
|
|
327
|
344
|
|
|
328
|
345
|
# Ensure that we map each manualSize entry to a corresponding DataMs entry
|
|
|
346
|
+ inspect_date = None
|
|
329
|
347
|
for r in data_ms_records:
|
|
330
|
348
|
if r.row_no == 1:
|
|
331
|
349
|
placeholders[f'v1_2'] = r.dsize
|
|
|
@@ -336,6 +354,7 @@ def generate_dimension_app_values(lot_no, code):
|
|
336
|
354
|
|
|
337
|
355
|
placeholders[f'v3_2'] = r.hsize
|
|
338
|
356
|
placeholders[f'v3_3'] = r.hsizeok
|
|
|
357
|
+ inspect_date = r.created_at
|
|
339
|
358
|
|
|
340
|
359
|
# if is_ok(r):
|
|
341
|
360
|
# placeholders[f'v4_1'] = 'OK'
|
|
|
@@ -362,6 +381,7 @@ def generate_dimension_app_values(lot_no, code):
|
|
362
|
381
|
# placeholders[f'v8_2'] = 'NG'
|
|
363
|
382
|
|
|
364
|
383
|
hide_con(placeholders, "v5_1", "26:32")
|
|
|
384
|
+ placeholders['inspect_date'] = inspect_date.strftime('%Y/%m/%d') if inspect_date else "-"
|
|
365
|
385
|
return placeholders
|
|
366
|
386
|
|
|
367
|
387
|
def generate_dimension_bal_weight_values(lot_no, ms, code):
|
|
|
@@ -406,7 +426,7 @@ def generate_dimension_bal_weight_values(lot_no, ms, code):
|
|
406
|
426
|
if m.Size_Name == "H":
|
|
407
|
427
|
placeholders['v3_1'] = placeholders['v8_1'] = f'H{m.Std:.2f} +{m.TolUp:.2f} {m.TolUn:.2f}'
|
|
408
|
428
|
|
|
409
|
|
-
|
|
|
429
|
+ inspect_date = None
|
|
410
|
430
|
|
|
411
|
431
|
# Ensure that we map each manualSize entry to a corresponding DataMs entry
|
|
412
|
432
|
for r in data_ms_records:
|
|
|
@@ -419,6 +439,7 @@ def generate_dimension_bal_weight_values(lot_no, ms, code):
|
|
419
|
439
|
|
|
420
|
440
|
placeholders[f'v3_2'] = r.hsize
|
|
421
|
441
|
placeholders[f'v3_3'] = r.hsizeok
|
|
|
442
|
+ inspect_date = r.created_at
|
|
422
|
443
|
|
|
423
|
444
|
# if is_ok(r):
|
|
424
|
445
|
# placeholders[f'v4_1'] = 'OK'
|
|
|
@@ -456,6 +477,7 @@ def generate_dimension_bal_weight_values(lot_no, ms, code):
|
|
456
|
477
|
placeholders["v10_2"] = r.weight
|
|
457
|
478
|
placeholders["v10_3"] = r.judgement
|
|
458
|
479
|
# hide_con(placeholders, "v5_1", "26:32")
|
|
|
480
|
+ placeholders['inspect_date'] = inspect_date.strftime('%Y/%m/%d') if inspect_date else "-"
|
|
459
|
481
|
return placeholders
|
|
460
|
482
|
|
|
461
|
483
|
def generate_dim_bal_app_hard_values(lot_no, first_result, code):
|
|
|
@@ -513,7 +535,7 @@ def generate_dim_bal_app_hard_values(lot_no, first_result, code):
|
|
513
|
535
|
if m.Size_Name == "H":
|
|
514
|
536
|
placeholders['v3_1'] = placeholders['v11_1'] = f'H{m.Std:.2f} +{m.TolUp:.2f} {m.TolUn:.2f}'
|
|
515
|
537
|
|
|
516
|
|
-
|
|
|
538
|
+ inspect_date = None
|
|
517
|
539
|
# Ensure that we map each manualSize entry to a corresponding DataMs entry
|
|
518
|
540
|
for r in data_ms_records:
|
|
519
|
541
|
if r.row_no == 1:
|
|
|
@@ -525,6 +547,7 @@ def generate_dim_bal_app_hard_values(lot_no, first_result, code):
|
|
525
|
547
|
|
|
526
|
548
|
placeholders[f'v3_2'] = r.hsize
|
|
527
|
549
|
placeholders[f'v3_3'] = r.hsizeok
|
|
|
550
|
+ inspect_date = r.created_at
|
|
528
|
551
|
|
|
529
|
552
|
# if is_ok(r):
|
|
530
|
553
|
# placeholders[f'v4_1'] = 'OK'
|
|
|
@@ -573,6 +596,7 @@ def generate_dim_bal_app_hard_values(lot_no, first_result, code):
|
|
573
|
596
|
placeholders[f'v{idx}_{index}'] = getattr(r, v)
|
|
574
|
597
|
|
|
575
|
598
|
# hide_con(placeholders, "v5_1", "26:32")
|
|
|
599
|
+ placeholders['inspect_date'] = inspect_date.strftime('%Y/%m/%d') if inspect_date else "-"
|
|
576
|
600
|
return placeholders
|
|
577
|
601
|
|
|
578
|
602
|
def generate_dim_bal_app_rot_hard_values(lot_no, first_result, code):
|
|
|
@@ -636,6 +660,7 @@ def generate_dim_bal_app_rot_hard_values(lot_no, first_result, code):
|
|
636
|
660
|
|
|
637
|
661
|
|
|
638
|
662
|
# Ensure that we map each manualSize entry to a corresponding DataMs entry
|
|
|
663
|
+ inspect_date = None
|
|
639
|
664
|
for r in data_ms_records:
|
|
640
|
665
|
if r.row_no == 1:
|
|
641
|
666
|
placeholders[f'v1_2'] = r.dsize
|
|
|
@@ -646,6 +671,7 @@ def generate_dim_bal_app_rot_hard_values(lot_no, first_result, code):
|
|
646
|
671
|
|
|
647
|
672
|
placeholders[f'v3_2'] = r.hsize
|
|
648
|
673
|
placeholders[f'v3_3'] = r.hsizeok
|
|
|
674
|
+ inspect_date = r.created_at
|
|
649
|
675
|
|
|
650
|
676
|
# if is_ok(r):
|
|
651
|
677
|
# placeholders[f'v4_1'] = 'OK'
|
|
|
@@ -704,6 +730,7 @@ def generate_dim_bal_app_rot_hard_values(lot_no, first_result, code):
|
|
704
|
730
|
placeholders["v15_3"] = r.speedok
|
|
705
|
731
|
|
|
706
|
732
|
# hide_con(placeholders, "v5_1", "26:32")
|
|
|
733
|
+ placeholders['inspect_date'] = inspect_date.strftime('%Y/%m/%d') if inspect_date else "-"
|
|
707
|
734
|
return placeholders
|
|
708
|
735
|
|
|
709
|
736
|
def generate_centering_values(lot_no, code):
|
|
|
@@ -731,10 +758,14 @@ def generate_centering_values(lot_no, code):
|
|
731
|
758
|
|
|
732
|
759
|
|
|
733
|
760
|
# Ensure that we map each manualSize entry to a corresponding DataMs entry
|
|
|
761
|
+ inspect_date = None
|
|
734
|
762
|
for i,r in enumerate(data_ms_records, start=1):
|
|
|
763
|
+ if i == 1:
|
|
|
764
|
+ inspect_date = r.created_at
|
|
735
|
765
|
placeholders[f'v{i}_2'] = r.censize
|
|
736
|
766
|
placeholders[f'v{i}_3'] = r.censizeok
|
|
737
|
767
|
|
|
|
768
|
+ placeholders['inspect_date'] = inspect_date.strftime('%Y/%m/%d') if inspect_date else "-"
|
|
738
|
769
|
return placeholders
|
|
739
|
770
|
|
|
740
|
771
|
def generate_t8_values(lot_no, code):
|
|
|
@@ -766,13 +797,18 @@ def generate_t8_values(lot_no, code):
|
|
766
|
797
|
|
|
767
|
798
|
|
|
768
|
799
|
# Ensure that we map each manualSize entry to a corresponding DataMs entry
|
|
|
800
|
+ inspect_date = None
|
|
769
|
801
|
for i,r in enumerate(data_ms_records, start=1):
|
|
|
802
|
+ if i == 1:
|
|
|
803
|
+ inspect_date = r.created_at
|
|
|
804
|
+
|
|
770
|
805
|
placeholders[f'v{i}_2'] = r.tpoint1
|
|
771
|
806
|
placeholders[f'v{i}_3'] = r.tpoint2
|
|
772
|
807
|
placeholders[f'v{i}_4'] = r.tpoint3
|
|
773
|
808
|
placeholders[f'v{i}_5'] = r.tpoint4
|
|
774
|
809
|
placeholders[f'v{i}_10'] = r.tdiff
|
|
775
|
810
|
|
|
|
811
|
+ placeholders['inspect_date'] = inspect_date.strftime('%Y/%m/%d') if inspect_date else "-"
|
|
776
|
812
|
return placeholders
|
|
777
|
813
|
|
|
778
|
814
|
def merge_sheet_data_with_data(sheet_data, data):
|
|
|
@@ -851,7 +887,7 @@ def create_coi_file(lot_no, sheets, user, md):
|
|
851
|
887
|
data = {
|
|
852
|
888
|
"code": first_result.PRO1 if first_result else "-",
|
|
853
|
889
|
"customer": first_result.PRO1C if first_result else "-",
|
|
854
|
|
- "inspect_date": "2025-01-15",
|
|
|
890
|
+ # "inspect_date": inspect_date.strftime('%Y/%m/%d') if inspect_date else "-",
|
|
855
|
891
|
"lot_no": lot_no,
|
|
856
|
892
|
"size": size_str,
|
|
857
|
893
|
"lot_size": pcs,
|