import config from "./config/config"; import logging from "./config/logging"; import * as Xcron from "node-cron"; import { getDetail, getOrder, inject } from "./lib-inject"; import { getAntropometri, getBranch, getMcuorder, getMcuSnapshotNote, getMgmDetail, getMgmHeader, getMgmMcu, getMgmMou, getMgmRiwayat, getTop3Kelainan, uploadAntropometri, uploadMcuOrder, uploadMcuSnapshotNote, uploadMgmCompany, uploadMgmDetail, uploadMgmHeader, uploadMgmMcu, uploadMgmMou, uploadMgmRiwayat, uploadTop3Kelainan, } from "./lib-etl"; export const NAME_SPACE = "UPLOAD ETL NATIONAL"; const VERSION = "1.0"; let isRunning: boolean = false; logging.info(NAME_SPACE, "Starting " + VERSION); const on_init = async () => { logging.info( NAME_SPACE, "-------------------- ON INT START --------------------" ); await Upload(); logging.info( NAME_SPACE, "-------------------- ON INIT END --------------------" ); }; on_init(); async function Upload() { if (isRunning) { logging.info(NAME_SPACE, "Still Running"); return; } isRunning = true; try { logging.info(NAME_SPACE, "Starting Job Upload national" + VERSION); logging.info(NAME_SPACE, "START GET BRANCH"); var respbranch = await getBranch(); if (respbranch["status"] != "OK") { logging.error(NAME_SPACE, "\t Error", respbranch); } else { logging.info(NAME_SPACE, "\t Success get Branch"); } let branch = respbranch.data; logging.info(NAME_SPACE, "\t Branch Code :" + branch.M_BranchCode); logging.info(NAME_SPACE, "\t Branch Name :" + branch.M_BranchName); // console.log(branch); // logging.info(NAME_SPACE, "\t wait 1s"); // await delay(1000); logging.info(NAME_SPACE, "END JOB GET BRANCH"); // GET MGM MCU logging.info(NAME_SPACE, "START GET MGM MCU"); var respMgmMcu = await getMgmMcu(); let mgmMcuList = []; if (respMgmMcu["status"] != "OK") { logging.error(NAME_SPACE, "\t Error", respMgmMcu); } else { mgmMcuList = respMgmMcu.data; logging.info( NAME_SPACE, "\t Success get mgm mcu data found :" + respMgmMcu.data.length ); } // console.log(branch); // logging.info(NAME_SPACE, "\t wait 1s"); // await delay(1000); logging.info(NAME_SPACE, "END JOB GET MGM MCU"); for (let i = 0; i < mgmMcuList.length; i++) { const mgmMcu = mgmMcuList[i]; let number = i + 1; logging.info( NAME_SPACE, "loading process " + number.toString() + "/" + mgmMcuList.length.toString() ); logging.info(NAME_SPACE, "START PROCESS MGM MCU"); logging.info( NAME_SPACE, "Mgm Mcu National Number : " + mgmMcu.Mgm_McuNumberNational ); logging.info(NAME_SPACE, "Mgm Mcu Number : " + mgmMcu.Mgm_McuNumber); //UPLOAD MGM_MCU logging.info(NAME_SPACE, "\t START UPLOAD MGM MCU"); var respUpMgmMcu = await uploadMgmMcu(branch, mgmMcu); if (respUpMgmMcu["status"] != "OK") { logging.error(NAME_SPACE, "\t Error : ", respUpMgmMcu); } else { logging.info(NAME_SPACE, "\t Success : " + respUpMgmMcu.data); } logging.info(NAME_SPACE, "\t END JOB UPLOAD MGM MCU"); logging.info(NAME_SPACE, "\t ----------"); // logging.info(NAME_SPACE, "\t wait 1s"); // await delay(1000); //UPLOAD MGM_COMPANY logging.info(NAME_SPACE, "\t START UPLOAD MGM COMPANY"); var respUpMgmCompany = await uploadMgmCompany( branch.M_BranchCode, mgmMcu.Mgm_McuID ); if (respUpMgmCompany["status"] != "OK") { logging.error(NAME_SPACE, "\t Error : ", respUpMgmCompany); } else { logging.info(NAME_SPACE, "\t Success : " + respUpMgmCompany.data); } logging.info(NAME_SPACE, "\t END JOB UPLOAD MGM COMPANY"); logging.info(NAME_SPACE, "\t ----------"); // logging.info(NAME_SPACE, "\t wait 1s"); // await delay(1000); //GET MGM HEADER logging.info(NAME_SPACE, "\t START GET MGM HEADER"); var respGetMgmHeader = await getMgmHeader(mgmMcu.Mgm_McuID); let mgmHeaderList = []; if (respGetMgmHeader["status"] != "OK") { logging.error(NAME_SPACE, "\t Error : ", respGetMgmHeader); } else { mgmHeaderList = respGetMgmHeader.data; logging.info(NAME_SPACE, "\t Success"); logging.info( NAME_SPACE, "\t Data Found : " + respGetMgmHeader.data.length ); } logging.info(NAME_SPACE, "\t END JOB GET MGM HEADER"); logging.info(NAME_SPACE, "\t ----------"); // logging.info(NAME_SPACE, "\t wait 1s"); // await delay(1000); logging.info(NAME_SPACE, "\t START UPLOAD MGM HEADER"); for (let j = 0; j < mgmHeaderList.length; j++) { let headerNumber = j + 1; const mgmHeader = mgmHeaderList[j]; logging.info( NAME_SPACE, "\t\t upload data " + headerNumber.toString() + "/" + mgmHeaderList.length.toString() ); logging.info(NAME_SPACE, "\t\t Header ID : " + mgmHeader.Mgm_HeaderID); logging.info( NAME_SPACE, "\t\t Order ID : " + mgmHeader.Mgm_HeaderT_OrderHeaderID ); logging.info( NAME_SPACE, "\t\t UPLOAD HEADER: " + mgmHeader.Mgm_HeaderID ); var respUpMgmHeader = await uploadMgmHeader(branch, mgmHeader); if (respUpMgmHeader["status"] != "OK") { logging.error(NAME_SPACE, "\t\t Error : ", respUpMgmHeader); } else { logging.info(NAME_SPACE, "\t\t Success"); } logging.info( NAME_SPACE, "\t\t END UPLOAD HEADER: " + mgmHeader.Mgm_HeaderID ); logging.info(NAME_SPACE, "\t\t ----------"); // logging.info(NAME_SPACE, "\t\t wait 1s"); // await delay(600); //GET MGM DETAIL logging.info(NAME_SPACE, "\t\t\t START GET MGM DETAIL"); var respGetMgmDetail = await getMgmDetail(mgmHeader.Mgm_HeaderID); let mgmDetailList = []; if (respGetMgmDetail["status"] != "OK") { logging.error(NAME_SPACE, "\t\t\t Error : ", respGetMgmDetail); } else { mgmDetailList = respGetMgmDetail.data; logging.info(NAME_SPACE, "\t\t\t Success"); logging.info( NAME_SPACE, "\t\t\t Data Found : " + respGetMgmDetail.data.length ); } logging.info(NAME_SPACE, "\t\t\t END JOB GET MGM DETAIL"); logging.info(NAME_SPACE, "\t\t\t ----------"); // logging.info(NAME_SPACE, "\t\t\t wait 1s"); // await delay(1000); for (let k = 0; k < mgmDetailList.length; k++) { const mgmDetail = mgmDetailList[k]; logging.info( NAME_SPACE, "\t\t\t UPLOAD DETAIL: " + mgmDetail.Mgm_DetailID ); var respUpMgmDetail = await uploadMgmDetail(branch, mgmDetail); if (respUpMgmDetail["status"] != "OK") { logging.error(NAME_SPACE, "\t\\tt Error : ", respUpMgmDetail); } else { logging.info(NAME_SPACE, "\t\t\t Success"); } logging.info( NAME_SPACE, "\t\t\t END UPLOAD DETAIL: " + mgmDetail.Mgm_DetailID ); logging.info(NAME_SPACE, "\t\t\t ----------"); // logging.info(NAME_SPACE, "\t\t\t wait 1s"); // await delay(600); } //GET MGM RIWAYAT logging.info(NAME_SPACE, "\t\t\t START GET MGM RIWAYAT"); var respGetMgmRiwayat = await getMgmRiwayat(mgmHeader.Mgm_HeaderID); let mgmRiwayatList = []; if (respGetMgmRiwayat["status"] != "OK") { logging.error(NAME_SPACE, "\t\t\t Error : ", respGetMgmRiwayat); } else { mgmRiwayatList = respGetMgmRiwayat.data; logging.info(NAME_SPACE, "\t\t\t Success"); logging.info( NAME_SPACE, "\t\t\t Data Found : " + respGetMgmRiwayat.data.length ); } logging.info(NAME_SPACE, "\t\t\t END JOB GET MGM RIWAYAT"); logging.info(NAME_SPACE, "\t\t\t ----------"); // logging.info(NAME_SPACE, "\t\t\t wait 1s"); // await delay(1000); for (let k = 0; k < mgmRiwayatList.length; k++) { const mgmRiwayat = mgmRiwayatList[k]; logging.info( NAME_SPACE, "\t\t\t UPLOAD RIWAYAT: " + mgmRiwayat.Mgm_RiwayatID ); var respUpMgmRiwayat = await uploadMgmRiwayat(branch, mgmRiwayat); if (respUpMgmRiwayat["status"] != "OK") { logging.error(NAME_SPACE, "\t\\tt Error : ", respUpMgmRiwayat); } else { logging.info(NAME_SPACE, "\t\t\t Success"); } logging.info( NAME_SPACE, "\t\t\t END UPLOAD RIWAYAT: " + mgmRiwayat.Mgm_RiwayatID ); logging.info(NAME_SPACE, "\t\t\t ----------"); // logging.info(NAME_SPACE, "\t\t\t wait 1s"); // await delay(1000); } } logging.info(NAME_SPACE, "\t END UPLOAD MGM HEADER"); logging.info(NAME_SPACE, "\t ----------"); // logging.info(NAME_SPACE, "\t wait 1s"); // await delay(1000); //GET TOP 3 KELAINAN logging.info(NAME_SPACE, "\t START GET TOP 3 KELAINAN"); var respGetTop3Kelainan = await getTop3Kelainan(mgmMcu.Mgm_McuID); let top3KelainanList = []; if (respGetTop3Kelainan["status"] != "OK") { logging.error(NAME_SPACE, "\t Error : ", respGetTop3Kelainan); } else { top3KelainanList = respGetTop3Kelainan.data; logging.info(NAME_SPACE, "\t Success"); logging.info( NAME_SPACE, "\t Data Found : " + respGetTop3Kelainan.data.length ); } logging.info(NAME_SPACE, "\t END JOB GET TOP 3 KELAINAN"); logging.info(NAME_SPACE, "\t ----------"); // logging.info(NAME_SPACE, "\t wait 1s"); // await delay(1000); for (let j = 0; j < top3KelainanList.length; j++) { const top3Kelainan = top3KelainanList[j]; let countTop3Kelainan = j + 1; logging.info( NAME_SPACE, "\t\t UPLOAD TOP 3 KELAINAN: " + top3Kelainan.Mcu_Top3KelainanID ); logging.info( NAME_SPACE, "\t\t upload : " + countTop3Kelainan + "/" + top3KelainanList.length ); var respUpTop3Kelainan = await uploadTop3Kelainan(branch, top3Kelainan); if (respUpTop3Kelainan["status"] != "OK") { logging.error(NAME_SPACE, "\t\t Error : ", respUpTop3Kelainan); } else { logging.info(NAME_SPACE, "\t\t Success"); } logging.info( NAME_SPACE, "\t\t END UPLOAD TOP 3 KELAINAN: " + top3Kelainan.Mcu_Top3KelainanID ); logging.info(NAME_SPACE, "\t\t ----------"); // logging.info(NAME_SPACE, "\t\t wait 1s"); // await delay(1000); } //GET MCU ORDER logging.info(NAME_SPACE, "\t START GET MCU ORDER"); var respGetMcuOrder = await getMcuorder(mgmMcu.Mgm_McuID); let mcuOrderList = []; if (respGetMcuOrder["status"] != "OK") { logging.error(NAME_SPACE, "\t Error : ", respGetMcuOrder); } else { mcuOrderList = respGetMcuOrder.data; logging.info(NAME_SPACE, "\t Success"); logging.info( NAME_SPACE, "\t Data Found : " + respGetMcuOrder.data.length ); } logging.info(NAME_SPACE, "\t END JOB GET MCU ORDER"); logging.info(NAME_SPACE, "\t ----------"); // logging.info(NAME_SPACE, "\t wait 1s"); // await delay(1000); for (let j = 0; j < mcuOrderList.length; j++) { const mcuOrder = mcuOrderList[j]; let countMcuOrder = j + 1; logging.info( NAME_SPACE, "\t\t UPLOAD MCU ORDER : " + mcuOrder.Mcu_OrderID ); logging.info( NAME_SPACE, "\t\t upload : " + countMcuOrder + "/" + mcuOrderList.length ); var respUpMcuOrder = await uploadMcuOrder(branch, mcuOrder); if (respUpMcuOrder["status"] != "OK") { logging.error(NAME_SPACE, "\t\t Error : ", respUpMcuOrder); } else { logging.info(NAME_SPACE, "\t\t Success"); } logging.info( NAME_SPACE, "\t\t END UPLOAD MCU ORDER: " + mcuOrder.Mcu_OrderID ); logging.info(NAME_SPACE, "\t\t ----------"); // logging.info(NAME_SPACE, "\t\t wait 1s"); // await delay(600); } //GET ANTROPOMETRI logging.info(NAME_SPACE, "\t START GET ANTROPOMETRI"); var respGetAntropometri = await getAntropometri(mgmMcu.Mgm_McuID); let antropometriList = []; if (respGetAntropometri["status"] != "OK") { logging.error(NAME_SPACE, "\t Error : ", respGetAntropometri); } else { antropometriList = respGetAntropometri.data; logging.info(NAME_SPACE, "\t Success"); logging.info( NAME_SPACE, "\t Data Found : " + respGetAntropometri.data.length ); } logging.info(NAME_SPACE, "\t END JOB GET ANTROPOMETRI"); logging.info(NAME_SPACE, "\t ----------"); // logging.info(NAME_SPACE, "\t wait 1s"); // await delay(1000); for (let j = 0; j < antropometriList.length; j++) { const antropometri = antropometriList[j]; let countAntropometri = j + 1; logging.info( NAME_SPACE, "\t\t UPLOAD ANTROPOMETRI : " + antropometri.AntropometriID ); logging.info( NAME_SPACE, "\t\t upload : " + countAntropometri + "/" + antropometriList.length ); var respUpMcuOrder = await uploadAntropometri(branch, antropometri); if (respUpMcuOrder["status"] != "OK") { logging.error(NAME_SPACE, "\t\t Error : ", respUpMcuOrder); } else { logging.info(NAME_SPACE, "\t\t Success"); } logging.info( NAME_SPACE, "\t\t END UPLOAD ANTROPOMETRI: " + antropometri.AntropometriID ); logging.info(NAME_SPACE, "\t\t ----------"); // logging.info(NAME_SPACE, "\t\t wait 1s"); // await delay(1000); } //GET MCU SNAPSHOT NOTE logging.info(NAME_SPACE, "\t START GET MCU SNAPSHOT NOTE"); var respGetMcuSnapshotNote = await getMcuSnapshotNote(mgmMcu.Mgm_McuID); let mcuSnapshotNoteList = []; if (respGetMcuSnapshotNote["status"] != "OK") { logging.error(NAME_SPACE, "\t Error : ", respGetMcuSnapshotNote); } else { mcuSnapshotNoteList = respGetMcuSnapshotNote.data; logging.info(NAME_SPACE, "\t Success"); logging.info( NAME_SPACE, "\t Data Found : " + respGetMcuSnapshotNote.data.length ); } logging.info(NAME_SPACE, "\t END JOB MCU SNAPSHOT NOTE"); logging.info(NAME_SPACE, "\t ----------"); // logging.info(NAME_SPACE, "\t wait 1s"); // await delay(1000); for (let j = 0; j < mcuSnapshotNoteList.length; j++) { const mcuSnapsotNote = mcuSnapshotNoteList[j]; let countMcuSnapshotNote = j + 1; logging.info( NAME_SPACE, "\t\t UPLOAD MCU SNAPSHOT NOTE : " + mcuSnapsotNote.Mcu_Snapshot_NoteID ); logging.info( NAME_SPACE, "\t\t upload : " + countMcuSnapshotNote + "/" + mcuSnapshotNoteList.length ); var respUpMcuOrder = await uploadMcuSnapshotNote( branch, mcuSnapsotNote ); if (respUpMcuOrder["status"] != "OK") { logging.error(NAME_SPACE, "\t\t Error : ", respUpMcuOrder); } else { logging.info(NAME_SPACE, "\t\t Success"); } logging.info( NAME_SPACE, "\t\t END UPLOAD MCU SNAPSHOT NOTE: " + mcuSnapsotNote.Mcu_Snapshot_NoteID ); logging.info(NAME_SPACE, "\t\t ----------"); // logging.info(NAME_SPACE, "\t\t wait 1s"); // await delay(1000); } logging.info(NAME_SPACE, "END PROCESS MGM MCU"); logging.info(NAME_SPACE, "----------"); // logging.info(NAME_SPACE, "wait 1s"); // await delay(1000); } logging.info(NAME_SPACE, "START GET MGM MOU"); var respMgmMou = await getMgmMou(); let mgmMouList = []; if (respMgmMou["status"] != "OK") { logging.error(NAME_SPACE, "\t Error", respMgmMou); } else { mgmMouList = respMgmMou.data; logging.info(NAME_SPACE, "\t Success get MGM MOU"); logging.info(NAME_SPACE, "\t Data found : " + respMgmMou.data.length); } // console.log(branch); // logging.info(NAME_SPACE, "\t wait 1s"); // await delay(1000); logging.info(NAME_SPACE, "END JOB GET MGM MOU"); for (let i = 0; i < mgmMouList.length; i++) { let countMgmMou = i + 1; const mgmMou = mgmMouList[i]; logging.info(NAME_SPACE, "\t START UPLOAD MGM MOU : " + mgmMou.Mgm_MouID); logging.info( NAME_SPACE, "\t Upload data : " + countMgmMou + "/" + mgmMouList.length ); var respUpMgmMou = await uploadMgmMou(branch, mgmMou); if (respUpMgmMou["status"] != "OK") { logging.error(NAME_SPACE, "\t Error : ", respUpMgmMou); } else { logging.info(NAME_SPACE, "\t Success"); } logging.info(NAME_SPACE, "\t END UPLOAD MGM MOU : " + mgmMou.Mgm_MouID); logging.info(NAME_SPACE, "\t ----------"); // logging.info(NAME_SPACE, "\t wait 1s"); // await delay(1000); } logging.info(NAME_SPACE, "End Job Upload national " + VERSION); } catch (e) { console.log("ini eror"); isRunning = false; if (e instanceof Error) { logging.error(NAME_SPACE, e.message); } else { logging.error(NAME_SPACE, "Unknown"); } } } // console.log(config); for (const sched of config.schedule) { Xcron.schedule( sched, async () => { logging.info( NAME_SPACE, " -------------------- ON INIT SCHEDULE --------------------" ); logging.info( NAME_SPACE, "-------------------- END SCHEDULE--------------------" ); }, { timezone: "Asia/Jakarta", } ); } // ------------- function async function delay(ms: number) { return new Promise((resolve) => setTimeout(resolve, ms)); }