cache TW Lot JSON unless changed
This commit is contained in:
		| @ -301,6 +301,7 @@ Service ProcessScanData(ScanID, ScanJSON) | |||||||
| 									Locate LotId in TWLots using @VM setting twPos then | 									Locate LotId in TWLots using @VM setting twPos then | ||||||
| 										Error_Services('Add', LotID : ' has already been added as a test wafer lot being used.') | 										Error_Services('Add', LotID : ' has already been added as a test wafer lot being used.') | ||||||
| 									end else | 									end else | ||||||
|  | 										ScansRow<SCANS.TW_LOT_CHANGED$> = True$ | ||||||
| 										LotCurrentOperation = Lot_Services('GetLotCurrOperationName', LotId) | 										LotCurrentOperation = Lot_Services('GetLotCurrOperationName', LotId) | ||||||
| 										If LotCurrentOperation NE 'TW_CREATE' AND LotCurrentOperation NE 'TW_CLOSE' then | 										If LotCurrentOperation NE 'TW_CREATE' AND LotCurrentOperation NE 'TW_CLOSE' then | ||||||
| 											LotCurrWfrQty = Database_Services('ReadDataColumn', 'LOT', LotId, LOT_WAFER_QTY$, True$, 0, False$) | 											LotCurrWfrQty = Database_Services('ReadDataColumn', 'LOT', LotId, LOT_WAFER_QTY$, True$, 0, False$) | ||||||
| @ -573,6 +574,7 @@ Service ProcessScanData(ScanID, ScanJSON) | |||||||
| 						 | 						 | ||||||
| 						Locate TWLot in ThisScanTWLots using @VM setting twPOS then | 						Locate TWLot in ThisScanTWLots using @VM setting twPOS then | ||||||
| 							ScansRow<SCANS.TW_LOT_QTY$, twPos> = TWLotQuantity | 							ScansRow<SCANS.TW_LOT_QTY$, twPos> = TWLotQuantity | ||||||
|  | 							ScansRow<SCANS.TW_LOT_CHANGED$> = True$ | ||||||
| 						end | 						end | ||||||
| 						 | 						 | ||||||
| 					Case ScanData[1, 17] EQ 'TESTRUNTYPEUPDATE' | 					Case ScanData[1, 17] EQ 'TESTRUNTYPEUPDATE' | ||||||
| @ -684,9 +686,10 @@ Service ProcessScanData(ScanID, ScanJSON) | |||||||
| 							// "RDS" process. | 							// "RDS" process. | ||||||
| 							If (CassetteIDs NE '') then | 							If (CassetteIDs NE '') then | ||||||
| 								TestWaferLotData = ScansRow<SCANS.TW_LOT_ID$> | 								TestWaferLotData = ScansRow<SCANS.TW_LOT_ID$> | ||||||
|  | 								TestWaferLotChanged = ScansRow<SCANS.TW_LOT_CHANGED$> | ||||||
| 								Abort            = False$ | 								Abort            = False$ | ||||||
| 								TestWaferLotIsValid = False$ | 								TestWaferLotIsValid = False$ | ||||||
| 								If TestWaferLotData NE '' then | 								If TestWaferLotData NE '' and TestWaferLotChanged NE False$ then | ||||||
| 									ThisTestRunType = ScansRow<SCANS.TEST_RUN_TYPE_ID$> | 									ThisTestRunType = ScansRow<SCANS.TEST_RUN_TYPE_ID$> | ||||||
| 									If ThisTestRunType NE '' then | 									If ThisTestRunType NE '' then | ||||||
| 										for each TWLot in TestWaferLotData using @VM setting twPOS | 										for each TWLot in TestWaferLotData using @VM setting twPOS | ||||||
| @ -1218,8 +1221,10 @@ Service ProcessScanData(ScanID, ScanJSON) | |||||||
| 								 | 								 | ||||||
| 							end else | 							end else | ||||||
| 								If ScansRow<SCANS.TW_LOT_ID$> NE '' then | 								If ScansRow<SCANS.TW_LOT_ID$> NE '' then | ||||||
|  | 									TestWaferLotChanged = ScansRow<SCANS.TW_LOT_CHANGED$> | ||||||
| 									ThisTestRunType = ScansRow<SCANS.TEST_RUN_TYPE_ID$> | 									ThisTestRunType = ScansRow<SCANS.TEST_RUN_TYPE_ID$> | ||||||
| 									ThisUser        = ScansRow<SCANS.EMPLOYEE_ID$> | 									ThisUser        = ScansRow<SCANS.EMPLOYEE_ID$> | ||||||
|  | 									If TestWaferLotChanged NE False$ then | ||||||
| 										If ThisTestRunType NE '' then | 										If ThisTestRunType NE '' then | ||||||
| 											If RowExists('LSL_USERS', ThisUser) then | 											If RowExists('LSL_USERS', ThisUser) then | ||||||
| 												TestWaferLotData = ScansRow<SCANS.TW_LOT_ID$> | 												TestWaferLotData = ScansRow<SCANS.TW_LOT_ID$> | ||||||
| @ -1260,6 +1265,7 @@ Service ProcessScanData(ScanID, ScanJSON) | |||||||
| 										end else | 										end else | ||||||
| 											Scan_Services('AddNotAcceptableReason', 'A test run type is required to log test wafer usage.') | 											Scan_Services('AddNotAcceptableReason', 'A test run type is required to log test wafer usage.') | ||||||
| 										end | 										end | ||||||
|  | 									end | ||||||
| 								end else | 								end else | ||||||
| 									Scan_Services('AddNotAcceptableReason', 'A cassette must be scanned in order to complete a tool scan.') | 									Scan_Services('AddNotAcceptableReason', 'A cassette must be scanned in order to complete a tool scan.') | ||||||
| 								end | 								end | ||||||
| @ -1689,6 +1695,8 @@ Service ConvertMVScanToJSON(ScanID, mvScan, itemURL) | |||||||
| 	 | 	 | ||||||
| 	jsonScan    = '' | 	jsonScan    = '' | ||||||
| 	 | 	 | ||||||
|  | 	mvScanChanged = False$ | ||||||
|  | 	 | ||||||
| 	If ScanID NE '' then | 	If ScanID NE '' then | ||||||
| 		 | 		 | ||||||
| 		If mvScan EQ '' then mvScan = Database_Services('ReadDataRow', 'SCANS', ScanID) | 		If mvScan EQ '' then mvScan = Database_Services('ReadDataRow', 'SCANS', ScanID) | ||||||
| @ -1724,7 +1732,21 @@ Service ConvertMVScanToJSON(ScanID, mvScan, itemURL) | |||||||
| 				// TestWafer Lot Object. | 				// TestWafer Lot Object. | ||||||
| 				If SRP_JSON(hTWLotArray, 'New', 'Array') then | 				If SRP_JSON(hTWLotArray, 'New', 'Array') then | ||||||
| 					Abort         = False$ | 					Abort         = False$ | ||||||
|  | 					TestWaferLotsChanged = {TW_LOT_CHANGED} | ||||||
|  | 					TW_Lot_Json = {TW_LOT_JSON} | ||||||
|  | 					ParsingResult = '' | ||||||
| 					TestWaferLots = {TW_LOT_ID} | 					TestWaferLots = {TW_LOT_ID} | ||||||
|  | 					If TestWaferLots NE '' then | ||||||
|  | 						If TestWaferLotsChanged NE True$ and TW_Lot_Json NE '' then | ||||||
|  | 							If TW_Lot_Json NE '' then | ||||||
|  | 								ParsingResult = SRP_JSON(TWLotJSON, 'Parse', TW_Lot_JSON) | ||||||
|  | 								If ParsingResult EQ '' then | ||||||
|  | 									SRP_JSON(objJSONScan, 'Set', 'testWaferLots', TWLotJSON) | ||||||
|  | 								end | ||||||
|  | 							end | ||||||
|  | 						end | ||||||
|  | 						 | ||||||
|  | 						If TW_Lot_Json EQ '' or TestWaferLotsChanged EQ True$ or ParsingResult NE '' then | ||||||
| 							for each TestWaferLotId in TestWaferLots using @VM setting twPos | 							for each TestWaferLotId in TestWaferLots using @VM setting twPos | ||||||
| 								thisTWLotJson = '' | 								thisTWLotJson = '' | ||||||
| 								If SRP_JSON(thisTWLotJson, 'New', 'Object') then | 								If SRP_JSON(thisTWLotJson, 'New', 'Object') then | ||||||
| @ -1734,7 +1756,15 @@ Service ConvertMVScanToJSON(ScanID, mvScan, itemURL) | |||||||
| 									SRP_JSON(thisTWLotJson, 'Release') | 									SRP_JSON(thisTWLotJson, 'Release') | ||||||
| 								end	 | 								end	 | ||||||
| 							Next TestWaferLotId | 							Next TestWaferLotId | ||||||
|  | 							 | ||||||
|  | 							TW_Lot_Json = SRP_JSON(hTWLotArray, 'Stringify', 'Fast') | ||||||
|  | 							mvScan<SCANS.TW_LOT_JSON$> = TW_Lot_Json | ||||||
|  | 							mvScan<SCANS.TW_LOT_CHANGED$> = False$ | ||||||
|  | 							mvScanChanged = True$ | ||||||
|  | 							 | ||||||
| 							SRP_JSON(objJSONScan, 'Set', 'testWaferLots', hTWLotArray) | 							SRP_JSON(objJSONScan, 'Set', 'testWaferLots', hTWLotArray) | ||||||
|  | 						end | ||||||
|  | 					end | ||||||
| 					SRP_JSON(hTWLotArray, 'Release') | 					SRP_JSON(hTWLotArray, 'Release') | ||||||
| 				end | 				end | ||||||
| 				SRP_JSON(objScan, 'SetValue', 'testRunTypeId', {TEST_RUN_TYPE_ID}, 'Integer') | 				SRP_JSON(objScan, 'SetValue', 'testRunTypeId', {TEST_RUN_TYPE_ID}, 'Integer') | ||||||
| @ -1758,14 +1788,6 @@ Service ConvertMVScanToJSON(ScanID, mvScan, itemURL) | |||||||
| 					end | 					end | ||||||
| 					SRP_JSON(hTestRunTypeArray, 'Release') | 					SRP_JSON(hTestRunTypeArray, 'Release') | ||||||
| 				end | 				end | ||||||
| 				// Created object. |  | ||||||
| 				objCreated = '' |  | ||||||
| 				If SRP_JSON(objCreated, 'New', 'Object') then |  | ||||||
| 					SRP_JSON(objCreated, 'SetValue', 'date', Oconv({CREATED_DATE}, 'D4/'), 'String') |  | ||||||
| 					SRP_JSON(objCreated, 'SetValue', 'time', Oconv({CREATED_TIME}, 'MTH'), 'String') |  | ||||||
| 					SRP_JSON(objJSONScan, 'Set', 'created', objCreated) |  | ||||||
| 					SRP_JSON(objCreated, 'Release') |  | ||||||
| 				end |  | ||||||
| 				// Employee object | 				// Employee object | ||||||
| 				objEmployee = '' | 				objEmployee = '' | ||||||
| 				If SRP_JSON(objEmployee, 'New', 'Object') then | 				If SRP_JSON(objEmployee, 'New', 'Object') then | ||||||
| @ -2072,6 +2094,10 @@ Service ConvertMVScanToJSON(ScanID, mvScan, itemURL) | |||||||
| 				 | 				 | ||||||
| 				jsonScan    = SRP_JSON(objJSONScan, 'Stringify', 'Fast') | 				jsonScan    = SRP_JSON(objJSONScan, 'Stringify', 'Fast') | ||||||
| 				SRP_JSON(objJSONScan, 'Release') | 				SRP_JSON(objJSONScan, 'Release') | ||||||
|  | 				 | ||||||
|  | 				If mvScanChanged EQ True$ then | ||||||
|  | 					Database_Services('WriteDataRow', 'SCANS', {SCAN_ID}, mvScan, True$, False$, False$) | ||||||
|  | 				end | ||||||
| 			end else | 			end else | ||||||
| 				Error_Services('Add', 'Unable to create JSON representation in the ' : Service : ' service.') | 				Error_Services('Add', 'Unable to create JSON representation in the ' : Service : ' service.') | ||||||
| 			end | 			end | ||||||
| @ -2322,3 +2348,5 @@ return | |||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | |||||||
| @ -41,8 +41,11 @@ compile insert SCANS_EQUATES | |||||||
|    equ SCANS.TEST_RUN_TYPE_ID$      to 32 |    equ SCANS.TEST_RUN_TYPE_ID$      to 32 | ||||||
|    equ SCANS.TEST_RUN_TYPE_NAME$    to 33 |    equ SCANS.TEST_RUN_TYPE_NAME$    to 33 | ||||||
|    equ SCANS.IS_AUTHORIZED_TO_OVERRIDE_ROTR$ to 34 |    equ SCANS.IS_AUTHORIZED_TO_OVERRIDE_ROTR$ to 34 | ||||||
|  |    equ SCANS.TW_LOT_CHANGED$		to 35 | ||||||
|  |    equ SCANS.TW_LOT_JSON$			to 36 | ||||||
|  |  | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user