Dateien nach "backend/target" hochladen
CustomFunction to use for the Workbench functions
This commit is contained in:
parent
c449e4a8b2
commit
2e2f711956
893
backend/target/HMIKonzept.js
Normal file
893
backend/target/HMIKonzept.js
Normal file
@ -0,0 +1,893 @@
|
||||
importPackage(com.itac.mes.api.custom);
|
||||
importPackage(java.lang);
|
||||
importPackage(java.util);
|
||||
importPackage(java.text);
|
||||
importPackage(com.itac.mes.imsapi.domain.container);
|
||||
importPackage(com.itac.persistence.producer);
|
||||
importPackage(javax.inject.inject);
|
||||
importPackage(javax.naming);
|
||||
importPackage(java.io);
|
||||
importPackage(javax.resource);
|
||||
importPackage(javax.sql);
|
||||
importPackage(javax.naming);
|
||||
|
||||
function getFailuresForStation(stationNumber){
|
||||
var failureDataResultKeys =["FAILURE_TYPE_CODE","FAILURE_TYPE_DESC" ]
|
||||
var result_mdataGetFailureDataForStation = imsApiService.mdataGetFailureDataForStation(imsApiSessionContext,
|
||||
stationNumber,
|
||||
0,
|
||||
failureDataResultKeys)
|
||||
|
||||
var result = _createStructuredResults(result_mdataGetFailureDataForStation.failureDataResultValues, failureDataResultKeys);
|
||||
var resultjson = JSON.stringify(result);
|
||||
return _getErrorForText("0", "Done", [resultjson]);
|
||||
|
||||
}
|
||||
|
||||
function getActivities(stationNumber, workorder){
|
||||
|
||||
|
||||
var workplanFilter = new Array(
|
||||
new KeyValue("FUNC_MODE", 0),
|
||||
new KeyValue("WORKORDER_NUMBER", workorder),
|
||||
new KeyValue("STATION_BASED_WORKSTEPS", 0)
|
||||
);
|
||||
var workplanDataResultHMI = [ "AVO", "Arbeitsschritt", "Prozesschritt", "Beschreibung", "Rueckmeldepflichtig", "Artikelnummer", "Skill"];
|
||||
var workplanDataResultKeys = [ "WORKSTEP_AVO", "WORKSTEP_NUMBER", "PROCESS_LAYER", "WORKSTEP_DESC", "OBLIGATORY_CONFIRM_FLAG", "PART_NUMBER", "SKILL_LEVEL"];
|
||||
var result_mdataGetWorkplanData = imsApiService.mdataGetWorkplanData(
|
||||
imsApiSessionContext,
|
||||
stationNumber, // String
|
||||
workplanFilter, // KeyValue[]
|
||||
workplanDataResultKeys // String[]
|
||||
);
|
||||
var result = _createStructuredResults(result_mdataGetWorkplanData.workplanDataResultValues, workplanDataResultHMI);
|
||||
var resultWorkplan = JSON.stringify(result);
|
||||
var partNumber = result[0].Artikelnummer;
|
||||
var recipe = _getRecipe(stationNumber, partNumber)
|
||||
var resultrecipe = JSON.stringify(recipe);
|
||||
|
||||
return _getErrorForText("0", "Done", [resultWorkplan, resultrecipe]);
|
||||
|
||||
}
|
||||
|
||||
function _getRecipe(stationNumber, part){
|
||||
var recipeResult=[ "MEASURE_NAME", "FUNCTION", "FUNCTION_DESC",
|
||||
"FUNCTION_STEP", "FUNCTION_STEP_DESC",
|
||||
"LOWER_LIMIT", "UPPER_LIMIT", "NOMINAL", "UNIT" ]
|
||||
|
||||
var recipeResultKeys =[ "MEASURE_NAME", "FUNCTION", "FUNCTION_DESC",
|
||||
"FUNCTION_STEP", "FUNCTION_STEP_DESC",
|
||||
"MIN_VALUE", "MAX_VALUE", "NOMINAL", "UNIT" ]
|
||||
var resultRezept = imsApiService.mdaGetRecipeData(
|
||||
imsApiSessionContext,
|
||||
stationNumber, // String
|
||||
"-1",
|
||||
"-1",
|
||||
"-1",
|
||||
"-1",
|
||||
"-1",
|
||||
"-1",
|
||||
"-1",
|
||||
"1",
|
||||
[new KeyValue("PART_NUMBER", part), new KeyValue("STATION_NUMBER", stationNumber)],
|
||||
recipeResultKeys)
|
||||
|
||||
var tempresult = _createStructuredResults(resultRezept.recipeResultValues, recipeResult)
|
||||
return tempresult;
|
||||
};
|
||||
|
||||
|
||||
function _errorText(retCode){
|
||||
result = imsApiService.imsapiGetErrorText(imsApiSessionContext, retCode);
|
||||
return result.errorString;
|
||||
}
|
||||
function _getErrorForText(returnValue, errorString, outArgs) {
|
||||
var returnvalue = parseInt(returnValue);
|
||||
var result = new Result_customFunctionCommon();
|
||||
result.outArgs = new Array(outArgs.length);
|
||||
result.return_value = returnvalue;
|
||||
result.errorString = errorString;
|
||||
for (var i = 0; i < outArgs.length; i++) {
|
||||
result.outArgs[i] = outArgs[i];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
function _createStructuredResults(valuesArray, resultKeys) {
|
||||
var structuredResults = [];
|
||||
|
||||
// Fall: Objekt mit numerischen Keys, das in ein Array gewandelt werden muss
|
||||
if (typeof valuesArray === "object" && !Array.isArray(valuesArray) && valuesArray !== null) {
|
||||
logHandler.logMessage("valuesArray ist ein Objekt - Versuch, daraus flaches Array zu generieren mit resultKeys.");
|
||||
|
||||
var tempArray = [];
|
||||
for (var i = 0; valuesArray.hasOwnProperty(i); i++) {
|
||||
tempArray.push("" + valuesArray[i]); // Werte als Strings sichern
|
||||
}
|
||||
|
||||
// JSON-Struktur aufbauen, wenn resultKeys vorhanden sind
|
||||
if (Array.isArray(resultKeys) && resultKeys.length > 0) {
|
||||
var entrySize = resultKeys.length;
|
||||
|
||||
for (var i = 0; i < tempArray.length; i += entrySize) {
|
||||
var entry = {};
|
||||
for (var j = 0; j < entrySize && (i + j) < tempArray.length; j++) {
|
||||
entry[resultKeys[j]] = "" + tempArray[i + j];
|
||||
}
|
||||
structuredResults.push(entry);
|
||||
}
|
||||
|
||||
logHandler.logMessage("JSON wurde direkt aus Object und resultKeys generiert.");
|
||||
return structuredResults;
|
||||
} else {
|
||||
logHandler.logMessage("Keine resultKeys vorhanden - Rückgabe als flaches Array.");
|
||||
return tempArray;
|
||||
}
|
||||
}
|
||||
|
||||
// Fall: Bereits ein Array von Objekten
|
||||
if (Array.isArray(valuesArray) && valuesArray.length > 0 && typeof valuesArray[0] === "object") {
|
||||
return valuesArray;
|
||||
}
|
||||
|
||||
// Fall: Flaches echtes Array mit resultKeys
|
||||
if (Array.isArray(valuesArray) && valuesArray.length > 0 && Array.isArray(resultKeys) && resultKeys.length > 0) {
|
||||
var entrySize = resultKeys.length;
|
||||
for (var i = 0; i < valuesArray.length; i += entrySize) {
|
||||
var entry = {};
|
||||
for (var j = 0; j < entrySize && (i + j) < valuesArray.length; j++) {
|
||||
entry[resultKeys[j]] = "" + valuesArray[i + j];
|
||||
}
|
||||
structuredResults.push(entry);
|
||||
}
|
||||
return structuredResults;
|
||||
}
|
||||
|
||||
logHandler.logMessage("valuesArray ist leer oder unbrauchbar.");
|
||||
return [];
|
||||
}
|
||||
|
||||
function getToDOs(stationNumber, serialNumber) {
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Helper (iTAC-safe)
|
||||
///////////////////////////////////////////////////////////////
|
||||
function safeResults(values, keys) {
|
||||
if (!values || !values.length) return [];
|
||||
return _createStructuredResults(values, keys);
|
||||
}
|
||||
|
||||
function safeStringify(obj) {
|
||||
try {
|
||||
return JSON.stringify(obj || []);
|
||||
} catch (e) {
|
||||
return "[]";
|
||||
}
|
||||
}
|
||||
try{
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Result Keys
|
||||
///////////////////////////////////////////////////////////////
|
||||
var bookingResultKeys = [
|
||||
"SERIAL_NUMBER","SERIAL_NUMBER_POS","STATION_DESC","STATION_DIAG_NUMBER",
|
||||
"STATION_NUMBER","WORKORDER_NUMBER","WORKSTEP_DESC","WORKSTEP_NUMBER",
|
||||
"BOOK_DATE","BOOK_STATE","CYCLE_TIME","PROCESS_LAYER"
|
||||
];
|
||||
|
||||
var failureDataResultKeys = [
|
||||
"BOOK_REFERENCE","COMP_NAME","FAILURE_ACTION_CODE","FAILURE_ACTION_INFO",
|
||||
"FAILURE_CAUSE_CODE","FAILURE_CAUSE_DESC","FAILURE_CAUSE_INFO",
|
||||
"FAILURE_IMAGE_CODE","FAILURE_IMAGE_DESC","FAILURE_MEASURE_CODE",
|
||||
"FAILURE_MEASURE_INFO","FAILURE_SEQUENCE_NUMBER","FAILURE_TYPE_CODE",
|
||||
"FAILURE_TYPE_DESC","FAILURE_TYPE_INFO","INFO","INFO_TXT_REPAIR",
|
||||
"MAJOR_FAILURE","PART_DESC","PART_NUMBER","REPAIRED","REPAIRED_DATE",
|
||||
"SERIAL_NUMBER","SERIAL_NUMBER_POS","STATION_DIAG_NUMBER",
|
||||
"STATION_NUMBER","STATION_REPAIR_DESC","WORKORDER_NUMBER"
|
||||
];
|
||||
|
||||
var failureSlipDataResultKeys = [
|
||||
"BOOK_DATE","BOOK_REFERENCE","COMP_NAME","FAILURE_SLIP_REFERENCE",
|
||||
"SEQUENCE_NUMBER","STATION_NUMBER","TEST_STEP_NAME",
|
||||
"WORKORDER_NUMBER","WORKSTEP_NUMBER"
|
||||
];
|
||||
|
||||
var measureDataResultKeys = [
|
||||
"FUNCTION","FUNCTION_DESC","FUNCTION_STEP","LOWER_LIMIT",
|
||||
"MEASURE_FAIL_CODE","MEASURE_NAME","MEASURE_TYPE","MEASURE_VALUE",
|
||||
"NOMINAL","SEQUENCE_NUMBER","SERIAL_NUMBER","SERIAL_NUMBER_POS",
|
||||
"STATION_DESC","STATION_NUMBER","TOLERANCE","UNIT","UPPER_LIMIT",
|
||||
"WORKORDER_NUMBER","WORKSTEP_NUMBER"
|
||||
];
|
||||
|
||||
var mergedPartsKeys = [
|
||||
"SERIAL_NUMBER","SERIAL_NUMBER_POS","SERIAL_SLAVE_NUMBER",
|
||||
"PART_NUMBER","PART_DESC","BOM_VERSION","BOM_VARIANT",
|
||||
"STATION_NUMBER","WORKORDER_NUMBER"
|
||||
];
|
||||
|
||||
var setupResultKeys = [
|
||||
"COMP_NAME","PART_NUMBER","MATERIAL_BIN_NUMBER","BOOK_DATE",
|
||||
"SETUP_POSITION", "WORKSTEP_NUMBER","STATION_NUMBER","STATION_DESC","WORKORDER_NUMBER"
|
||||
];
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Serial History
|
||||
///////////////////////////////////////////////////////////////
|
||||
var result = imsApiService.trGetSerialNumberHistoryData(
|
||||
imsApiSessionContext,
|
||||
stationNumber,
|
||||
serialNumber,
|
||||
-1, // serialNumberPos
|
||||
2, // processLayer
|
||||
1, // desolvingSerialNumber
|
||||
0, // desolvingLevel
|
||||
bookingResultKeys,
|
||||
failureDataResultKeys,
|
||||
failureSlipDataResultKeys,
|
||||
measureDataResultKeys
|
||||
);
|
||||
var layer =_getConfig(stationNumber);
|
||||
|
||||
var result_setupGetSetupDataBySerialNumber =imsApiService.setupGetSetupDataBySerialNumber( imsApiSessionContext, stationNumber, serialNumber,"-1", "-1", "-1", setupResultKeys );
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Safe Result Parsing
|
||||
///////////////////////////////////////////////////////////////
|
||||
var bookingResult = safeResults(result.bookingResultValues, bookingResultKeys);
|
||||
var failureResult = safeResults(result.failureDataResultValues, failureDataResultKeys);
|
||||
var failureSlip = safeResults(result.failureSlipDataResultValues, failureSlipDataResultKeys);
|
||||
var measurement = safeResults(result.measureDataResultValues, measureDataResultKeys);
|
||||
var setup = safeResults(result_setupGetSetupDataBySerialNumber.setupResultValues, setupResultKeys);
|
||||
var attributes = _attributes(stationNumber, result.workOrderNumber);
|
||||
var attributesSNR = _attributesSNR(stationNumber,serialNumber);
|
||||
var snrHist = _getSerialNumberHistoryDataBySql(serialNumber);
|
||||
|
||||
var workorder = result.workOrderNumber;
|
||||
if (!workorder) {
|
||||
return _getErrorForText(result.return_value, _errorText(result.return_value), []);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Workplan
|
||||
///////////////////////////////////////////////////////////////
|
||||
var workplanFilter = [
|
||||
new KeyValue("FUNC_MODE", 0),
|
||||
new KeyValue("WORKORDER_NUMBER", workorder),
|
||||
new KeyValue("WORKSTEP_FLAG", 1)
|
||||
];
|
||||
|
||||
var workplanDataResultHMI = [
|
||||
"AVO","Arbeitsschritt","Prozesslage", "Beschreibung",
|
||||
"Rueckmeldepflichtig","Artikelnummer","Skill"
|
||||
];
|
||||
|
||||
var workplanDataResultKeys = [
|
||||
"WORKSTEP_AVO","WORKSTEP_NUMBER","PROCESS_LAYER", "WORKSTEP_DESC",
|
||||
"OBLIGATORY_CONFIRM_FLAG","PART_NUMBER","SKILL_LEVEL"
|
||||
];
|
||||
|
||||
var wpResult = imsApiService.mdataGetWorkplanData(
|
||||
imsApiSessionContext,
|
||||
stationNumber,
|
||||
workplanFilter,
|
||||
workplanDataResultKeys
|
||||
);
|
||||
|
||||
var resultwp = safeResults(wpResult.workplanDataResultValues, workplanDataResultHMI);
|
||||
|
||||
if (!resultwp.length) {
|
||||
return _getErrorForText(wpResult.return_value, _errorText(wpResult.return_value), []);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Recipe (safe)
|
||||
///////////////////////////////////////////////////////////////
|
||||
var partNumber = resultwp[0].Artikelnummer;
|
||||
var recipe = [];
|
||||
|
||||
try {
|
||||
if (partNumber) {
|
||||
recipe = _getRecipe(stationNumber, partNumber);
|
||||
}
|
||||
} catch (e) {
|
||||
recipe = [];
|
||||
logHandler.logMessage("getRecipe failed: " + e);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////
|
||||
// SetupCheck
|
||||
///////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
//var result_setupCheck = imsApiService.setupCheck(
|
||||
// imsApiSessionContext,
|
||||
// stationNumber,
|
||||
// "-1",
|
||||
// "-1",
|
||||
// workorder,
|
||||
// "-1",
|
||||
// 0,
|
||||
// 2
|
||||
// );
|
||||
var result_setupCheck =
|
||||
imsApiService.setupGetMaterialSetup(
|
||||
imsApiSessionContext,
|
||||
stationNumber,
|
||||
"-1",
|
||||
0,
|
||||
"-1",
|
||||
"-1",
|
||||
[
|
||||
"PART_NUMBER",
|
||||
"MATERIAL_BIN_NUMBER",
|
||||
"MATERIAL_BIN_QTY_ACTUAL",
|
||||
"MATERIAL_BIN_STATE",
|
||||
"EXPIRATION_DATE",
|
||||
"SETUP_POSITION"
|
||||
],
|
||||
[]
|
||||
);
|
||||
|
||||
var setupOutput = [];
|
||||
|
||||
if (
|
||||
result_setupCheck.setupResultValues &&
|
||||
result_setupCheck.setupResultValues.length > 0
|
||||
) {
|
||||
|
||||
var values = result_setupCheck.setupResultValues;
|
||||
var COLS = 6; // Anzahl der ResultKeys
|
||||
|
||||
if (values.length % COLS !== 0) {
|
||||
throw "setupGetMaterialSetup: Value count mismatch";
|
||||
}
|
||||
|
||||
for (var i = 0; i < values.length; i += COLS) {
|
||||
|
||||
setupOutput.push({
|
||||
partNumber: String(values[i]).trim(),
|
||||
materialBinNumber: String(values[i + 1]).trim(),
|
||||
materialBinQtyActual: String(values[i + 2]).trim(),
|
||||
materialBinState: String(values[i + 3]).trim(),
|
||||
expirationDate: String(values[i + 4]).trim(),
|
||||
setupPosition: String(values[i + 5]).trim()
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var bomDataResultKeys = ["COMP_NAME", "PART_NUMBER", "PART_DESC", "PROCESS_LAYER","QUANTITY", "PRODUCT_FLAG", "SETUP_FLAG", "UNIT", "WORKSTEP_NUMBER" ,"SETUP_POSITION"];
|
||||
var result_bomData = imsApiService.mdataGetBomData(
|
||||
imsApiSessionContext,
|
||||
stationNumber,
|
||||
[ new KeyValue("SERIAL_NUMBER", serialNumber)],
|
||||
bomDataResultKeys
|
||||
);
|
||||
var createBomStructResults= _createStructuredResults(result_bomData.bomDataResultValues,bomDataResultKeys );
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var setupOutputMerged= _mergeSetupToBom(createBomStructResults, setupOutput);
|
||||
///////////////////////////////////////////////////////////////
|
||||
// Final Return (safe)
|
||||
///////////////////////////////////////////////////////////////
|
||||
return _getErrorForText(
|
||||
"0",
|
||||
"Done",
|
||||
[
|
||||
safeStringify(resultwp),
|
||||
safeStringify(recipe),
|
||||
safeStringify(bookingResult),
|
||||
safeStringify(failureResult),
|
||||
safeStringify(failureSlip),
|
||||
safeStringify(measurement),
|
||||
safeStringify(setup),
|
||||
safeStringify(setupOutputMerged),
|
||||
safeStringify(attributes),
|
||||
safeStringify(attributesSNR),
|
||||
JSON.stringify(snrHist),
|
||||
result_setupCheck.return_value,
|
||||
layer
|
||||
|
||||
]
|
||||
);
|
||||
}catch (e){
|
||||
return _getErrorForText(
|
||||
"-1",
|
||||
"error",
|
||||
[e])
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
function clearSetup(stationNumber){
|
||||
var result_trGSS = imsApiService.trGetStationSetting(
|
||||
imsApiSessionContext,
|
||||
stationNumber,
|
||||
["PART_NUMBER", "BOM_VERSION_ERP", "PROCESS_LAYER", "WORKORDER_NUMBER", "QUANTITY"]
|
||||
);
|
||||
|
||||
if (result_trGSS.return_value != 0) {
|
||||
Result(result_trGSS.return_value, getImsApiErrorText(result_trGSS.return_value), "")
|
||||
}
|
||||
var result_setupStateChange = imsApiService.setupStateChange(imsApiSessionContext,
|
||||
stationNumber,
|
||||
result_trGSS.stationSettingResultValues[2],
|
||||
result_trGSS.stationSettingResultValues[3],
|
||||
"-1",
|
||||
-1,
|
||||
2);
|
||||
|
||||
return _getErrorForText("0", "Done", []);
|
||||
|
||||
|
||||
}
|
||||
|
||||
function activateSetup(stationNumber){
|
||||
var result_trGSS = imsApiService.trGetStationSetting(
|
||||
imsApiSessionContext,
|
||||
stationNumber,
|
||||
["PART_NUMBER", "BOM_VERSION_ERP", "PROCESS_LAYER", "WORKORDER_NUMBER", "QUANTITY"]
|
||||
);
|
||||
|
||||
if (result_trGSS.return_value != 0) {
|
||||
Result(result_trGSS.return_value, getImsApiErrorText(result_trGSS.return_value), "")
|
||||
}
|
||||
var result_setupStateChange = imsApiService.setupStateChange(imsApiSessionContext,
|
||||
stationNumber,
|
||||
result_trGSS.stationSettingResultValues[2],
|
||||
result_trGSS.stationSettingResultValues[3],
|
||||
"-1",
|
||||
-1,
|
||||
0);
|
||||
if (result_setupStateChange.return_value != 0) {
|
||||
return _getErrorForText(result_setupStateChange.return_value, getImsApiErrorText(result_setupStateChange.return_value), "")
|
||||
}
|
||||
return _getErrorForText("0", "Done", []);
|
||||
|
||||
|
||||
}
|
||||
|
||||
function setSetup(stationNumber,uniqueid, pos , mode){
|
||||
var setupstate = 0;
|
||||
if (mode==="setup"){
|
||||
setupstate = 0
|
||||
} else {
|
||||
setupstate = 1
|
||||
}
|
||||
var result_setupUpdateMaterialSetup = imsApiService.setupUpdateMaterialSetup(
|
||||
imsApiSessionContext,
|
||||
stationNumber,
|
||||
-1,
|
||||
"-1",
|
||||
"-1",
|
||||
"SMT",
|
||||
["ERROR_CODE", "MATERIAL_BIN_NUMBER", "SETUP_POSITION", "SETUP_STATE"],
|
||||
[0, uniqueid, pos, setupstate],
|
||||
["COMP_REFERENCE"],
|
||||
[]);
|
||||
|
||||
|
||||
|
||||
if (result_setupUpdateMaterialSetup.return_value != 0) {
|
||||
return _getErrorForText(result_setupUpdateMaterialSetup.return_value, getImsApiErrorText(result_setupUpdateMaterialSetup.return_value), "")
|
||||
}
|
||||
return _getErrorForText("0", "Done", []);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
function _getConfig(stationNumber) {
|
||||
var result = imsApiService.mdataGetStationConfiguration(
|
||||
imsApiSessionContext,
|
||||
stationNumber,
|
||||
[new KeyValue("CODE_NUMBER", 8310)],
|
||||
["CODE_VALUE", "IS_USED"],
|
||||
[],
|
||||
[]
|
||||
);
|
||||
|
||||
var values = result.stationConfigCodeResultValues;
|
||||
|
||||
if (values && values.length >= 2) {
|
||||
var codeValue = String(values[0]).trim();
|
||||
var isUsed = Number(values[1]);
|
||||
|
||||
logHandler.logMessage(
|
||||
"used : " + isUsed + " | codeValue : " + codeValue
|
||||
);
|
||||
|
||||
if (isUsed === 1 && codeValue === "A") {
|
||||
logHandler.logMessage("Return : A");
|
||||
return "A";
|
||||
}
|
||||
}
|
||||
|
||||
logHandler.logMessage("Return : L");
|
||||
return "L";
|
||||
}
|
||||
|
||||
|
||||
function getImsApiErrorText(retCode) {
|
||||
logHandler.logMessage(
|
||||
"ClientController.getImsApiErrorText() Code: " + retCode
|
||||
);
|
||||
var errorText = "";
|
||||
var result;
|
||||
try {
|
||||
result = imsApiService.imsapiGetErrorText(imsApiSessionContext, retCode);
|
||||
} catch (th) {
|
||||
logHandler.logMessage("custom function resetPipe failed: " + th);
|
||||
result.outArgs = logHandler.getMessages();
|
||||
result.return_value = 0;
|
||||
result.errorString = th;
|
||||
return result;
|
||||
}
|
||||
if (result != null) {
|
||||
errorText = result.errorString;
|
||||
}
|
||||
return errorText;
|
||||
}
|
||||
|
||||
function activateWorkorder(stationNumber, snr, avo, layer){
|
||||
var result_trGSNI = imsApiService.trGetSerialNumberInfo(
|
||||
imsApiSessionContext,
|
||||
stationNumber,
|
||||
snr,
|
||||
"-1",
|
||||
["WORKORDER_NUMBER"]
|
||||
);
|
||||
var wo = result_trGSNI.serialNumberResultValues[0];
|
||||
var layermapping;
|
||||
var config = String(_getConfig(stationNumber)).trim();
|
||||
if (config === "A") {
|
||||
layermapping = String(avo).trim();
|
||||
} else {
|
||||
layermapping = String(layer).trim();
|
||||
}
|
||||
|
||||
var result_trGetStationSetting= imsApiService.trGetStationSetting(imsApiSessionContext,
|
||||
stationNumber,
|
||||
["WORKORDER_NUMBER", "PROCESS_LAYER"]);
|
||||
var wostation = String(result_trGetStationSetting.stationSettingResultValues[0]);
|
||||
var layerStation = String(result_trGetStationSetting.stationSettingResultValues[0]);
|
||||
if (wo !=wostation && layerStation!=layermapping){
|
||||
var result_trActivateWorkOrder = imsApiService.trActivateWorkOrder(imsApiSessionContext,
|
||||
stationNumber,
|
||||
wo,
|
||||
"-1",
|
||||
"-1",
|
||||
layermapping,
|
||||
1);
|
||||
return _getErrorForText(result_trActivateWorkOrder.return_value, "Done", []);
|
||||
} else {
|
||||
return _getErrorForText(0, "Done", []);
|
||||
}
|
||||
}
|
||||
|
||||
function _mergeSetupToBom(bomResults, setupOutput) {
|
||||
logHandler.logMessage("setupOutput.length:"+ setupOutput.length);
|
||||
logHandler.logMessage("bomResults.length:"+ bomResults.length);
|
||||
for (var i = 0; i < bomResults.length; i++) {
|
||||
var bom = bomResults[i];
|
||||
var partNumber = String(bom.PART_NUMBER).trim();
|
||||
|
||||
var matches = [];
|
||||
|
||||
for (var j = 0; j < setupOutput.length; j++) {
|
||||
var s = setupOutput[j];
|
||||
var spart = String(s.partNumber);
|
||||
logHandler.logMessage("Setuppart " +s.partNumber + "| BomPart :" +partNumber)
|
||||
if (spart === partNumber) {
|
||||
matches.push(s);
|
||||
}
|
||||
}
|
||||
|
||||
if (matches.length > 0) {
|
||||
var positions = [];
|
||||
var binNumbers = [];
|
||||
var binQtys = [];
|
||||
var binStates = [];
|
||||
var expirationDates = [];
|
||||
|
||||
for (var k = 0; k < matches.length; k++) {
|
||||
var m = matches[k];
|
||||
positions.push(m.setupPosition);
|
||||
binNumbers.push(m.materialBinNumber);
|
||||
binQtys.push(m.materialBinQtyActual);
|
||||
binStates.push(m.materialBinState);
|
||||
expirationDates.push(m.expirationDate);
|
||||
}
|
||||
|
||||
bom.SETUP_POSITIONS = positions.join(", ");
|
||||
bom.MATERIAL_BIN_NUMBERS = binNumbers.join(", ");
|
||||
bom.MATERIAL_BIN_QTYS = binQtys.join(", ");
|
||||
bom.MATERIAL_BIN_STATES = binStates.join(", ");
|
||||
bom.EXPIRATION_DATES = expirationDates.join(", ");
|
||||
} else {
|
||||
bom.SETUP_POSITIONS = "";
|
||||
bom.MATERIAL_BIN_NUMBERS = "";
|
||||
bom.MATERIAL_BIN_QTYS = "";
|
||||
bom.MATERIAL_BIN_STATES = "";
|
||||
bom.EXPIRATION_DATES = "";
|
||||
}
|
||||
}
|
||||
|
||||
return bomResults;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function _attributes(stationNumber, workorderNumber){
|
||||
|
||||
var wpIDresult = imsApiService.mdataGetWorkplanData(imsApiSessionContext, stationNumber, [new KeyValue("WORKORDER_NUMBER", workorderNumber)],["WORKPLAN_ID"]);
|
||||
var wpID = wpIDresult.workplanDataResultValues[wpIDresult.workplanDataResultValues.length -1 ];
|
||||
|
||||
|
||||
var attributeResult = ["ATTRIBUTE_CODE", "ATTRIBUTE_VALUE", "WORKSTEP_AVO", "WORKSTEP_NUMBER", "ERROR_CODE"];
|
||||
|
||||
var attribGetAttributeCode_result = imsApiService.attribGetAttributeValues(imsApiSessionContext,
|
||||
stationNumber,
|
||||
12,
|
||||
wpID,
|
||||
-1,
|
||||
[],
|
||||
0,
|
||||
attributeResult);
|
||||
|
||||
|
||||
|
||||
|
||||
var structAtrrib = _createStructuredResults(attribGetAttributeCode_result.attributeResultValues, attributeResult);
|
||||
|
||||
|
||||
|
||||
return structAtrrib;
|
||||
|
||||
}
|
||||
|
||||
|
||||
function _attributesSNR(stationNumber, serialNumber){
|
||||
|
||||
|
||||
var attributeResult = ["ATTRIBUTE_CODE", "ATTRIBUTE_VALUE", "ERROR_CODE"];
|
||||
|
||||
var attribGetAttributeCode_result = imsApiService.attribGetAttributeValues(imsApiSessionContext,
|
||||
stationNumber,
|
||||
0,
|
||||
serialNumber,
|
||||
-1,
|
||||
[],
|
||||
0,
|
||||
attributeResult);
|
||||
|
||||
|
||||
|
||||
|
||||
var structAtrrib = _createStructuredResults(attribGetAttributeCode_result.attributeResultValues, attributeResult);
|
||||
|
||||
|
||||
|
||||
return structAtrrib;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
function _getSerialNumberHistoryDataBySql(refSNR) {
|
||||
var connection = null;
|
||||
var pstmt = null;
|
||||
var rs = null;
|
||||
|
||||
var serialNumberArray = [];
|
||||
|
||||
try {
|
||||
if (!refSNR) {
|
||||
return serialNumberArray;
|
||||
}
|
||||
|
||||
// DB-Verbindung
|
||||
var InitialContext = javax.naming.InitialContext;
|
||||
var ctx = new InitialContext();
|
||||
var access = ctx.doLookup("dsMesMiiNJTA");
|
||||
connection = access.getConnection();
|
||||
|
||||
// SQL holen
|
||||
var sql = _buildSerialHistorySql();
|
||||
|
||||
pstmt = connection.prepareStatement(sql);
|
||||
|
||||
// Parameter binden
|
||||
var paramIndex = 1;
|
||||
pstmt.setString(paramIndex++, String(refSNR));
|
||||
|
||||
rs = pstmt.executeQuery();
|
||||
|
||||
while (rs.next()) {
|
||||
var snr = rs.getString("SNR");
|
||||
var lastBookStation = rs.getString("STATION_NUMBER");
|
||||
var bookState = rs.getString("BOOK_STATE");
|
||||
var positionFromDb = rs.getString("POSITION");
|
||||
var ws = rs.getString("ARBEITSSCHRITT");
|
||||
|
||||
serialNumberArray.push({
|
||||
serialNumber: String(snr),
|
||||
serialNumberPos: String(positionFromDb),
|
||||
bookState: String(bookState),
|
||||
workstep: String(ws),
|
||||
lastBookStation: String(lastBookStation)
|
||||
});
|
||||
}
|
||||
|
||||
return serialNumberArray;
|
||||
|
||||
|
||||
|
||||
} finally {
|
||||
if (rs !== null) try { rs.close(); } catch (e) {}
|
||||
if (pstmt !== null) try { pstmt.close(); } catch (e) {}
|
||||
if (connection !== null) try { connection.close(); } catch (e) {}
|
||||
}
|
||||
}
|
||||
|
||||
function _buildSerialHistorySql() {
|
||||
return ""
|
||||
+ "SELECT "
|
||||
+ " t.STATION_NUMBER, "
|
||||
+ " t.SNR, "
|
||||
+ " t.POSITION, "
|
||||
+ " t.BOOK_STATE, "
|
||||
+ " t.ARBEITSSCHRITT "
|
||||
+ "FROM ( "
|
||||
+ " SELECT "
|
||||
+ " kst.KAP_NR AS STATION_NUMBER, "
|
||||
+ " cs.SNR_EXT AS SNR, "
|
||||
+ " cs.NUTZEN_POS AS POSITION, "
|
||||
+ " qs.AS_NR AS ARBEITSSCHRITT, "
|
||||
+ " (qs.GUT_NA - 10001) AS BOOK_STATE, "
|
||||
+ " ROW_NUMBER() OVER ( "
|
||||
+ " PARTITION BY cs.SNR_EXT, qs.AS_NR "
|
||||
+ " ORDER BY qs.SEQ_NR DESC "
|
||||
+ " ) AS RN "
|
||||
+ " FROM glo.qs_haupt qs "
|
||||
+ " JOIN glo.charge_snr cs "
|
||||
+ " ON cs.SNR_ID = qs.SNR_ID "
|
||||
+ " JOIN bde.kast kst "
|
||||
+ " ON kst.KAP_ID = qs.KAP_ID "
|
||||
+ " WHERE cs.AKTIV = 'J' "
|
||||
+ " AND cs.REF_SNR_ID = ( "
|
||||
+ " SELECT REF_SNR_ID "
|
||||
+ " FROM glo.charge_snr "
|
||||
+ " WHERE SNR_EXT = ? "
|
||||
+ " ) "
|
||||
+ ") t "
|
||||
+ "WHERE t.RN = 1 "
|
||||
+ "ORDER BY t.SNR, t.ARBEITSSCHRITT";
|
||||
}
|
||||
|
||||
|
||||
function searchMeasurementData(inArgs) {
|
||||
|
||||
var payload = JSON.parse(inArgs);
|
||||
|
||||
var partNumber = payload.partNumber || "";
|
||||
var workorderNumber = payload.workorderNumber || "";
|
||||
|
||||
var startDate = payload.startDate ? java.sql.Timestamp.valueOf(payload.startDate) : null;
|
||||
var endDate = payload.endDate ? java.sql.Timestamp.valueOf(payload.endDate) : null;
|
||||
|
||||
|
||||
var connection = null;
|
||||
var pstmt = null;
|
||||
var rs = null;
|
||||
|
||||
var resultList = [];
|
||||
function getStringSafe(rs, column) {
|
||||
var val = rs.getObject(column);
|
||||
return val != null ? String(val) : null;
|
||||
}
|
||||
try {
|
||||
var InitialContext = javax.naming.InitialContext;
|
||||
var ctx = new InitialContext();
|
||||
var access = ctx.doLookup("dsMesMiiNJTA");
|
||||
connection = access.getConnection();
|
||||
|
||||
var sql = ""
|
||||
+ "SELECT "
|
||||
+ " STATION_NUMBER, STATION_DESC, PART_NUMBER, WORKORDER_NUMBER, "
|
||||
+ " WORKORDER_DESC, SEQUENCE_NUMBER, BOOK_DATE, MEASURE_STEP_NUMBER, "
|
||||
+ " MEASURE_NAME, UNIT, MEASURE_VALUE, LOWER_LIMIT, UPPER_LIMIT, "
|
||||
+ " NOMINAL, TOLERANCE, MEASURE_FAIL_CODE, MEASURE_TYPE "
|
||||
+ "FROM IMS_VIEW.V_MEASUREMENT_DATA "
|
||||
+ "WHERE 1 = 1 ";
|
||||
|
||||
var params = [];
|
||||
|
||||
if (partNumber != null && String(partNumber).trim() !== "") {
|
||||
sql += " AND PART_NUMBER = ? ";
|
||||
params.push({ type: "string", value: String(partNumber).trim() });
|
||||
}
|
||||
|
||||
if (workorderNumber != null && String(workorderNumber).trim() !== "") {
|
||||
sql += " AND WORKORDER_NUMBER = ? ";
|
||||
params.push({ type: "string", value: String(workorderNumber).trim() });
|
||||
}
|
||||
|
||||
if (startDate != null && endDate != null) {
|
||||
sql += " AND BOOK_DATE BETWEEN ? AND ? ";
|
||||
params.push({ type: "timestamp", value: new java.sql.Timestamp(startDate.getTime()) });
|
||||
params.push({ type: "timestamp", value: new java.sql.Timestamp(endDate.getTime()) });
|
||||
} else if (startDate != null) {
|
||||
sql += " AND BOOK_DATE >= ? ";
|
||||
params.push({ type: "timestamp", value: new java.sql.Timestamp(startDate.getTime()) });
|
||||
} else if (endDate != null) {
|
||||
sql += " AND BOOK_DATE <= ? ";
|
||||
params.push({ type: "timestamp", value: new java.sql.Timestamp(endDate.getTime()) });
|
||||
}
|
||||
|
||||
sql += " ORDER BY BOOK_DATE ASC";
|
||||
|
||||
pstmt = connection.prepareStatement(sql);
|
||||
|
||||
for (var i = 0; i < params.length; i++) {
|
||||
var paramIndex = i + 1;
|
||||
if (params[i].type === "string") {
|
||||
pstmt.setString(paramIndex, params[i].value);
|
||||
} else if (params[i].type === "timestamp") {
|
||||
pstmt.setTimestamp(paramIndex, params[i].value);
|
||||
}
|
||||
}
|
||||
|
||||
rs = pstmt.executeQuery();
|
||||
|
||||
while (rs.next()) {
|
||||
resultList.push({
|
||||
stationNumber: getStringSafe(rs, "STATION_NUMBER"),
|
||||
stationDesc: getStringSafe(rs, "STATION_DESC"),
|
||||
partNumber: getStringSafe(rs, "PART_NUMBER"),
|
||||
workorderNumber: getStringSafe(rs, "WORKORDER_NUMBER"),
|
||||
workorderDesc: getStringSafe(rs, "WORKORDER_DESC"),
|
||||
sequenceNumber: getStringSafe(rs, "SEQUENCE_NUMBER"),
|
||||
bookDate: getStringSafe(rs, "BOOK_DATE"),
|
||||
measureStep: getStringSafe(rs, "MEASURE_STEP_NUMBER"),
|
||||
measureName: getStringSafe(rs, "MEASURE_NAME"),
|
||||
unit: getStringSafe(rs, "UNIT"),
|
||||
measureValue: getStringSafe(rs, "MEASURE_VALUE"),
|
||||
lowerLimit: getStringSafe(rs, "LOWER_LIMIT"),
|
||||
upperLimit: getStringSafe(rs, "UPPER_LIMIT"),
|
||||
nominal: getStringSafe(rs, "NOMINAL"),
|
||||
tolerance: getStringSafe(rs, "TOLERANCE"),
|
||||
failCode: getStringSafe(rs, "MEASURE_FAIL_CODE"),
|
||||
measureType: getStringSafe(rs, "MEASURE_TYPE")
|
||||
});
|
||||
}
|
||||
|
||||
return _getErrorForText(
|
||||
"0",
|
||||
"Done",
|
||||
[JSON.stringify(resultList)]) ;
|
||||
|
||||
} catch (e) {
|
||||
throw new Error("Fehler in _searchMeasurementData: " + e);
|
||||
} finally {
|
||||
if (rs !== null) {
|
||||
try { rs.close(); } catch (e1) {}
|
||||
}
|
||||
if (pstmt !== null) {
|
||||
try { pstmt.close(); } catch (e2) {}
|
||||
}
|
||||
if (connection !== null) {
|
||||
try { connection.close(); } catch (e3) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user