diff --git a/server/services/ocp/controller/lots/prolinkCheck.ts b/server/services/ocp/controller/lots/prolinkCheck.ts new file mode 100644 index 0000000..4389164 --- /dev/null +++ b/server/services/ocp/controller/lots/prolinkCheck.ts @@ -0,0 +1,68 @@ +import { db } from "../../../../../database/dbclient.js"; +import { settings } from "../../../../../database/schema/settings.js"; +import { tryCatch } from "../../../../globalUtils/tryCatch.js"; +import { createLog } from "../../../logger/logger.js"; +import { query } from "../../../sqlServer/prodSqlServer.js"; +import { prolinkQuery } from "../../../sqlServer/querys/ocp/prolinkCheck.js"; + +// check the if the lot matches +export const prolinkCheck = async (lot: any) => { + const { data, error: settingError } = await tryCatch( + db.select().from(settings) + ); + + if (settingError) { + createLog( + "error", + "ocp", + "ocp", + `There was an error getting the settings.` + ); + return; + } + + const settingData: any = data; + const plantToken = settingData.filter( + (s: any) => s.name === "plantToken" + )[0].value; + const prolinkCheck = settingData.filter( + (s: any) => s.name === "prolinkCheck" + )[0].value; + + // if we want to ignore prolink check it will be disabled and then just return a pass as true + if (prolinkCheck === "0") { + createLog( + "info", + "ocp", + "ocp", + `Prolink Check is disabled skipping check.` + ); + return true; + } + + // run the query + try { + const prolink = await query(prolinkQuery, "Prolink Checks"); + + //console.log(lot); + // filter out the lot + const filterdLot = prolink.filter( + (p: any) => p.AlplaLabelOnline === lot + ); + + //console.log(filterdLot); + if (filterdLot[0].LotCheck === "Good") { + return true; + } else { + return false; + } + } catch (err) { + createLog( + "error", + "ocp", + "ocp", + `Error from running the Prolink Check query: ${err}` + ); + return false; + } +}; diff --git a/server/services/ocp/ocpService.ts b/server/services/ocp/ocpService.ts index 2a4025d..c82ecae 100644 --- a/server/services/ocp/ocpService.ts +++ b/server/services/ocp/ocpService.ts @@ -8,6 +8,7 @@ import { settings } from "../../../database/schema/settings.js"; import updateprinters from "./routes/printers/updatePrinters.js"; import { updatePrinters } from "./controller/printers/updatePrinters.js"; import getLots from "./routes/lots/getLots.js"; +import getLabels from "./routes/labeling/getLabels.js"; const app = new OpenAPIHono(); @@ -18,6 +19,8 @@ const routes = [ updateprinters, // lots getLots, + // labeling + getLabels, ] as const; const setting = await db.select().from(settings); @@ -33,6 +36,8 @@ app.all("/ocp/*", (c) => { }); // run the printer update on restart just to keep everything good -updatePrinters(); +setTimeout(() => { + updatePrinters(); +}, 3 * 1000); export default app; diff --git a/server/services/sqlServer/querys/ocp/prolinkCheck.ts b/server/services/sqlServer/querys/ocp/prolinkCheck.ts new file mode 100644 index 0000000..b202a85 --- /dev/null +++ b/server/services/sqlServer/querys/ocp/prolinkCheck.ts @@ -0,0 +1,25 @@ +export const prolinkQuery = ` +select * from ( + select * + From(select + V_Maschinen_ProdPlanungen.MaschinenStandort as Machine, + V_Maschinen_ProdPlanungen.IdProdPlanung as AlplaLabelOnline, + prolink.lot Prolink, + case when AlplaPROD_test1.dbo.V_Maschinen_ProdPlanungen.IdProdPlanung <> prolink.lot + Then 'IncorrectLot' + Else 'Good' end as LotCheck + from AlplaPROD_test1.dbo.V_Maschinen_ProdPlanungen (nolock) + left join + ( + SELECT * + FROM (SELECT IdMaschine, + Produktionslos as lot, + Startzeit as StartTime, + Upd_Date, + ROW_NUMBER() OVER (PARTITION BY IdMaschine ORDER BY Upd_Date DESC) RN_Prolink + FROM AlplaPROD_test1.dbo.T_HistoryProduktionsdaten (nolock) + WHERE Upd_Date BETWEEN DATEADD(DD, - 10, getdate()) AND DATEADD(DD, 1, getdate())) a + WHERE RN_Prolink = 1 + ) as prolink on AlplaPROD_test1.dbo.V_Maschinen_ProdPlanungen.IdMaschine=prolink.IdMaschine) a + ) a + `;