fix(notifications): changes to help improve the downtime check for greater than x only while active
This commit is contained in:
@@ -7,6 +7,7 @@ import { tryCatch } from "../../../../globalUtils/tryCatch.js";
|
|||||||
import { createLog } from "../../../logger/logger.js";
|
import { createLog } from "../../../logger/logger.js";
|
||||||
import { sendEmail } from "../sendMail.js";
|
import { sendEmail } from "../sendMail.js";
|
||||||
import { query } from "../../../sqlServer/prodSqlServer.js";
|
import { query } from "../../../sqlServer/prodSqlServer.js";
|
||||||
|
import { downTimeCheck } from "../../../sqlServer/querys/notifications/downtimecheck.js";
|
||||||
|
|
||||||
export interface DownTime {
|
export interface DownTime {
|
||||||
downTimeId?: number;
|
downTimeId?: number;
|
||||||
@@ -28,58 +29,9 @@ export default async function reprintLabelMonitor(notifyData: any) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// console.log(data.secondarySetting[0].duration);
|
// console.log(data.secondarySetting[0].duration);
|
||||||
let dQuery = `
|
let dQuery = downTimeCheck
|
||||||
SELECT
|
.replace("[dtDuration]", notifyData.notifiySettings?.duration)
|
||||||
[IdHistoryStillstandsereignis] as downTimeId
|
.replace("[daysInPast]", notifyData.notifiySettings?.daysInPast);
|
||||||
,DATEDIFF(MINUTE,b.[Startzeit], b.[Endzeit]) as totalDuration
|
|
||||||
--, b.[IdMaschine]
|
|
||||||
,x.[Bezeichnung] as machineAlias
|
|
||||||
--,b.[IdStillstandsGrund],
|
|
||||||
, c.CTO_Code
|
|
||||||
,c.Downtime_Description
|
|
||||||
--,b.[IdFehlermerkmal],
|
|
||||||
,case when g.DT_Group_Desc is null then 'Not assigned yet' else g.DT_Group_Desc end as groupDesc
|
|
||||||
,b.[Bemerkung] as remark
|
|
||||||
,CONVERT(VARCHAR, CAST(b.[Startzeit] AS DATETIME), 100) dtStart
|
|
||||||
,CONVERT(VARCHAR, CAST(b.[Endzeit] AS DATETIME), 100) dtEnd
|
|
||||||
|
|
||||||
FROM Alplaprod_test1.[dbo].[T_HistoryStillstandsereignis] (nolock)b
|
|
||||||
|
|
||||||
--get the machine info
|
|
||||||
left join
|
|
||||||
Alplaprod_test1.[dbo].[T_Maschine] (nolock)x
|
|
||||||
on b.IdMaschine = x.IdMaschine
|
|
||||||
|
|
||||||
-- add in the cto codes
|
|
||||||
left join
|
|
||||||
Alplaprod_test1.[dbo].[V_MES_Downtime_Reasons] (nolock)c
|
|
||||||
on b.IdStillstandsGrund = c.Local_Downtime_ID
|
|
||||||
|
|
||||||
left join
|
|
||||||
Alplaprod_test1.[dbo].[V_MES_Downtime_Characteristics] (nolock)g
|
|
||||||
on b.IdFehlermerkmal = g.Local_DT_Characteristic_Id
|
|
||||||
|
|
||||||
|
|
||||||
where DATEDIFF(MINUTE,b.[Startzeit],b.[Endzeit]) > ${
|
|
||||||
notifyData.notifiySettings
|
|
||||||
? notifyData.notifiySettings?.duration
|
|
||||||
: 10
|
|
||||||
}
|
|
||||||
and b.[Startzeit] > getDate() - ${
|
|
||||||
notifyData.notifiySettings
|
|
||||||
? notifyData.notifiySettings?.daysInPast
|
|
||||||
: 10
|
|
||||||
} --adding this date check in so we dont get everything possible
|
|
||||||
and c.CTO_Code not like 'a%'
|
|
||||||
and c.CTO_Code not like 'b%'
|
|
||||||
and c.CTO_Code not like 'c%'
|
|
||||||
and c.CTO_Code not like 'd%'
|
|
||||||
and c.CTO_Code not like 'e%'
|
|
||||||
and c.CTO_Code not like 'f%'
|
|
||||||
and c.CTO_Code not like 'y%'
|
|
||||||
order by IdHistoryStillstandsereignis desc
|
|
||||||
`;
|
|
||||||
|
|
||||||
//console.log(query);
|
//console.log(query);
|
||||||
let downTime: any = []; //DownTime[];
|
let downTime: any = []; //DownTime[];
|
||||||
try {
|
try {
|
||||||
@@ -87,8 +39,8 @@ export default async function reprintLabelMonitor(notifyData: any) {
|
|||||||
//console.log(labels.length);
|
//console.log(labels.length);
|
||||||
downTime = res.data;
|
downTime = res.data;
|
||||||
if (
|
if (
|
||||||
downTime.length > 0 &&
|
downTime.length > 0
|
||||||
downTime[0]?.downTimeId > notifyData.notifiySettings.prodID
|
// && downTime[0]?.downTimeId > notifyData.notifiySettings.prodID
|
||||||
) {
|
) {
|
||||||
//send the email :D
|
//send the email :D
|
||||||
const emailSetup = {
|
const emailSetup = {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { db } from "../../../../database/dbclient.js";
|
import { db } from "../../../../database/dbclient.js";
|
||||||
import { notifications } from "../../../../database/schema/notifications.js";
|
import { notifications } from "../../../../database/schema/notifications.js";
|
||||||
|
import { settings } from "../../../../database/schema/settings.js";
|
||||||
import { tryCatch } from "../../../globalUtils/tryCatch.js";
|
import { tryCatch } from "../../../globalUtils/tryCatch.js";
|
||||||
import type { JobInfo } from "../../../types/JobInfo.js";
|
import type { JobInfo } from "../../../types/JobInfo.js";
|
||||||
import { createLog } from "../../logger/logger.js";
|
import { createLog } from "../../logger/logger.js";
|
||||||
@@ -104,7 +105,14 @@ export const startNotificationMonitor = async () => {
|
|||||||
}, 5 * 1000);
|
}, 5 * 1000);
|
||||||
};
|
};
|
||||||
|
|
||||||
const createJob = (id: string, schedule: string, task: () => Promise<void>) => {
|
const createJob = async (
|
||||||
|
id: string,
|
||||||
|
schedule: string,
|
||||||
|
task: () => Promise<void>
|
||||||
|
) => {
|
||||||
|
const { data, error } = (await tryCatch(db.select().from(settings))) as any;
|
||||||
|
|
||||||
|
const timeZone = data.filter((n: any) => n.name === "timezone");
|
||||||
// Destroy existing job if it exists
|
// Destroy existing job if it exists
|
||||||
if (runningCrons[id]) {
|
if (runningCrons[id]) {
|
||||||
runningCrons[id].stop(); // Croner uses .stop() instead of .destroy()
|
runningCrons[id].stop(); // Croner uses .stop() instead of .destroy()
|
||||||
@@ -114,7 +122,7 @@ const createJob = (id: string, schedule: string, task: () => Promise<void>) => {
|
|||||||
runningCrons[id] = new Cron(
|
runningCrons[id] = new Cron(
|
||||||
schedule,
|
schedule,
|
||||||
{
|
{
|
||||||
timezone: "America/Chicago",
|
timezone: timeZone[0].timezone,
|
||||||
catch: true, // Prevents unhandled rejections
|
catch: true, // Prevents unhandled rejections
|
||||||
},
|
},
|
||||||
task
|
task
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
<table >
|
<table >
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>totalDuration</th>
|
<th>Current Durration</th>
|
||||||
<th>machineAlias</th>
|
<th>machineAlias</th>
|
||||||
<th>CTO_Code</th>
|
<th>CTO_Code</th>
|
||||||
<th>Downtime_Description</th>
|
<th>Downtime_Description</th>
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
<td>{{groupDesc}}</td>
|
<td>{{groupDesc}}</td>
|
||||||
<td>{{remark}}</td>
|
<td>{{remark}}</td>
|
||||||
<td>{{dtStart}}</td>
|
<td>{{dtStart}}</td>
|
||||||
<td>{{dtEnd}}</td>
|
{{!-- <td>{{dtEnd}}</td> --}}
|
||||||
</tr>
|
</tr>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
export const downTimeCheck = `
|
||||||
|
SELECT
|
||||||
|
[IdHistoryStillstandsereignis] as downTimeId
|
||||||
|
,DATEDIFF(MINUTE,b.[Startzeit], case when b.[Endzeit] = '1900-01-01' then getdate() else b.[Endzeit] end ) as totalDuration
|
||||||
|
--, b.[IdMaschine]
|
||||||
|
,x.[Bezeichnung] as machineAlias
|
||||||
|
--,b.[IdStillstandsGrund],
|
||||||
|
, c.CTO_Code
|
||||||
|
,c.Downtime_Description
|
||||||
|
--,b.[IdFehlermerkmal],
|
||||||
|
,case when g.DT_Group_Desc is null then 'Not assigned yet' else g.DT_Group_Desc end as groupDesc
|
||||||
|
,b.[Bemerkung] as remark
|
||||||
|
,CONVERT(VARCHAR, CAST(b.[Startzeit] AS DATETIME), 100) dtStart
|
||||||
|
,CONVERT(VARCHAR, CAST(b.[Endzeit] AS DATETIME), 100) dtEnd
|
||||||
|
,b.Upd_Date
|
||||||
|
FROM Alplaprod_test1.[dbo].[T_HistoryStillstandsereignis] (nolock)b
|
||||||
|
|
||||||
|
--get the machine info
|
||||||
|
left join
|
||||||
|
Alplaprod_test1.[dbo].[T_Maschine] (nolock)x
|
||||||
|
on b.IdMaschine = x.IdMaschine
|
||||||
|
|
||||||
|
-- add in the cto codes
|
||||||
|
left join
|
||||||
|
Alplaprod_test1.[dbo].[V_MES_Downtime_Reasons] (nolock)c
|
||||||
|
on b.IdStillstandsGrund = c.Local_Downtime_ID
|
||||||
|
|
||||||
|
left join
|
||||||
|
Alplaprod_test1.[dbo].[V_MES_Downtime_Characteristics] (nolock)g
|
||||||
|
on b.IdFehlermerkmal = g.Local_DT_Characteristic_Id
|
||||||
|
|
||||||
|
where DATEDIFF(MINUTE,b.[Startzeit],case when b.[Endzeit] = '1900-01-01' then getdate() else b.[Endzeit] end) > [dtDuration]
|
||||||
|
|
||||||
|
and b.[Startzeit] > DATEADD(day, -[daysInPast], getDate())
|
||||||
|
and b.[Endzeit] = '1900-01-01'
|
||||||
|
--adding this date check in so we dont get everything possible
|
||||||
|
and c.CTO_Code not like 'a%'
|
||||||
|
and c.CTO_Code not like 'b%'
|
||||||
|
and c.CTO_Code not like 'c%'
|
||||||
|
and c.CTO_Code not like 'd%'
|
||||||
|
and c.CTO_Code not like 'e%'
|
||||||
|
and c.CTO_Code not like 'f%'
|
||||||
|
and c.CTO_Code not like 'y%'
|
||||||
|
order by IdHistoryStillstandsereignis desc
|
||||||
|
`;
|
||||||
Reference in New Issue
Block a user