32 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
| from apps.wpmw.models import Wpr
 | |
| from apps.wpm.models import Mlogbw
 | |
| from apps.qm.models import Ftest, FtestDefect, FtestItem
 | |
| from rest_framework.exceptions import ParseError
 | |
| from apps.mtm.models import Mgroup
 | |
| 
 | |
| def main(number, mgroup:Mgroup):
 | |
|     wpr = Wpr.objects.filter(number=number).first()
 | |
|     if not wpr:
 | |
|         raise ParseError(f"未找到该单个产品_{number}")
 | |
|     data = {}
 | |
|     mgroup_name = mgroup.name
 | |
|     data[f"{mgroup_name}_批次号"] = Mlogbw.objects.filter(number=number).order_by("-update_time").first().mlogb.batch
 | |
|     ftestitems = FtestItem.objects.filter(ftest__mlogbw_ftest__number=number,
 | |
|                                           ftest__mlogbw_ftest__mlogb__mlog__mgroup=mgroup,
 | |
|                                           ftest__mlogbw_ftest__mlogb__mlog__submit_time__isnull=False)
 | |
|     for ftestitem in ftestitems:
 | |
|         data[f"{mgroup_name}_检测项_{ftestitem.testitem.name}"] = ftestitem.test_val_json
 | |
|     
 | |
|     ftestdefects = FtestDefect.objects.filter(ftest__mlogbw_ftest__number=number,
 | |
|                                     ftest__mlogbw_ftest__mlogb__mlog__mgroup=mgroup,
 | |
|                                     ftest__mlogbw_ftest__mlogb__mlog__submit_time__isnull=False)
 | |
|     for ftestdefect in ftestdefects:
 | |
|         data[f"{mgroup_name}_缺陷项_{ftestdefect.defect.name}"] = 0 if ftestdefect.has is True else 1
 | |
|     
 | |
|     old_data:dict = wpr.data
 | |
|     if old_data:
 | |
|         for item in old_data.keys():
 | |
|             if f'{mgroup_name}_' in item:
 | |
|                 del old_data[item]
 | |
|     old_data.update(data)
 | |
|     Wpr.objects.filter(number=number).update(data=old_data) |