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 { sendEmail } from "../sendMail.js";
|
||||
import { query } from "../../../sqlServer/prodSqlServer.js";
|
||||
import { downTimeCheck } from "../../../sqlServer/querys/notifications/downtimecheck.js";
|
||||
|
||||
export interface DownTime {
|
||||
downTimeId?: number;
|
||||
@@ -28,58 +29,9 @@ export default async function reprintLabelMonitor(notifyData: any) {
|
||||
}
|
||||
|
||||
// console.log(data.secondarySetting[0].duration);
|
||||
let dQuery = `
|
||||
SELECT
|
||||
[IdHistoryStillstandsereignis] as downTimeId
|
||||
,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
|
||||
`;
|
||||
|
||||
let dQuery = downTimeCheck
|
||||
.replace("[dtDuration]", notifyData.notifiySettings?.duration)
|
||||
.replace("[daysInPast]", notifyData.notifiySettings?.daysInPast);
|
||||
//console.log(query);
|
||||
let downTime: any = []; //DownTime[];
|
||||
try {
|
||||
@@ -87,8 +39,8 @@ export default async function reprintLabelMonitor(notifyData: any) {
|
||||
//console.log(labels.length);
|
||||
downTime = res.data;
|
||||
if (
|
||||
downTime.length > 0 &&
|
||||
downTime[0]?.downTimeId > notifyData.notifiySettings.prodID
|
||||
downTime.length > 0
|
||||
// && downTime[0]?.downTimeId > notifyData.notifiySettings.prodID
|
||||
) {
|
||||
//send the email :D
|
||||
const emailSetup = {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { db } from "../../../../database/dbclient.js";
|
||||
import { notifications } from "../../../../database/schema/notifications.js";
|
||||
import { settings } from "../../../../database/schema/settings.js";
|
||||
import { tryCatch } from "../../../globalUtils/tryCatch.js";
|
||||
import type { JobInfo } from "../../../types/JobInfo.js";
|
||||
import { createLog } from "../../logger/logger.js";
|
||||
@@ -104,7 +105,14 @@ export const startNotificationMonitor = async () => {
|
||||
}, 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
|
||||
if (runningCrons[id]) {
|
||||
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(
|
||||
schedule,
|
||||
{
|
||||
timezone: "America/Chicago",
|
||||
timezone: timeZone[0].timezone,
|
||||
catch: true, // Prevents unhandled rejections
|
||||
},
|
||||
task
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<table >
|
||||
<thead>
|
||||
<tr>
|
||||
<th>totalDuration</th>
|
||||
<th>Current Durration</th>
|
||||
<th>machineAlias</th>
|
||||
<th>CTO_Code</th>
|
||||
<th>Downtime_Description</th>
|
||||
@@ -32,7 +32,7 @@
|
||||
<td>{{groupDesc}}</td>
|
||||
<td>{{remark}}</td>
|
||||
<td>{{dtStart}}</td>
|
||||
<td>{{dtEnd}}</td>
|
||||
{{!-- <td>{{dtEnd}}</td> --}}
|
||||
</tr>
|
||||
{{/each}}
|
||||
</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