step 2 : try build
This commit is contained in:
15
build/config/config.js
Normal file
15
build/config/config.js
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const fs_1 = require("fs");
|
||||||
|
const j_config = JSON.parse((0, fs_1.readFileSync)("./config-etl-tat.json").toString());
|
||||||
|
const config = {
|
||||||
|
base_url: j_config["base_url"],
|
||||||
|
schedule: j_config["schedule"],
|
||||||
|
delay: j_config["delay"],
|
||||||
|
row_per_batch: j_config["row_per_batch"],
|
||||||
|
// kode, date, target
|
||||||
|
// kode: j_config["kode"],
|
||||||
|
// date: j_config["date"],
|
||||||
|
// target: j_config["target"]
|
||||||
|
};
|
||||||
|
exports.default = config;
|
||||||
41
build/config/logging.js
Normal file
41
build/config/logging.js
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
"use strict";
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const moment_1 = __importDefault(require("moment"));
|
||||||
|
const getTimeStamp = () => {
|
||||||
|
const dt = (0, moment_1.default)().format("yyyy-MM-DD HH:mm:ss");
|
||||||
|
return dt;
|
||||||
|
};
|
||||||
|
const info = (namespace, message, object) => {
|
||||||
|
if (object) {
|
||||||
|
console.log(`[${getTimeStamp()}] [INFO] [${namespace}] [${message}]`, object);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
console.log(`[${getTimeStamp()}] [INFO] [${namespace}] [${message}]`);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const warning = (namespace, message, object) => {
|
||||||
|
if (object) {
|
||||||
|
console.log(`[${getTimeStamp()}] [WARNING] [${namespace}] [${message}]`, object);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
console.log(`[${getTimeStamp()}] [WARNING] [${namespace}] [${message}]`);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const error = (namespace, message, object) => {
|
||||||
|
if (object) {
|
||||||
|
console.log(`[${getTimeStamp()}] [ERROR] [${namespace}] [${message}]`, object);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
console.log(`[${getTimeStamp()}] [ERROR] [${namespace}] [${message}]`);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const delay = (time) => new Promise((res) => setTimeout(res, time));
|
||||||
|
exports.default = {
|
||||||
|
info,
|
||||||
|
warning,
|
||||||
|
error,
|
||||||
|
delay,
|
||||||
|
};
|
||||||
2
build/interfaces.js
Normal file
2
build/interfaces.js
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
31
build/lib_052_000.js
Normal file
31
build/lib_052_000.js
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
"use strict";
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.rpt_052_000 = void 0;
|
||||||
|
const axios_1 = __importDefault(require("axios"));
|
||||||
|
const config_1 = __importDefault(require("./config/config"));
|
||||||
|
const logging_1 = __importDefault(require("./config/logging"));
|
||||||
|
const server_1 = require("./server");
|
||||||
|
const rpt_052_000 = async (kode, date, target) => {
|
||||||
|
// etl/Tat/proses_etl/000/2021-06-12/0
|
||||||
|
const url_patient = config_1.default.base_url + "etl/Tat/proses_etl/" + kode + "/" + date + "/" + target;
|
||||||
|
logging_1.default.info(server_1.NAME_SPACE, "Info : " + url_patient);
|
||||||
|
try {
|
||||||
|
const resp = await axios_1.default.get(url_patient, {
|
||||||
|
responseType: "arraybuffer",
|
||||||
|
});
|
||||||
|
const jresp = JSON.parse(resp.data.toString());
|
||||||
|
return jresp;
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
if (axios_1.default.isAxiosError(e)) {
|
||||||
|
logging_1.default.error(server_1.NAME_SPACE, e.response?.data.toString());
|
||||||
|
}
|
||||||
|
else if (e instanceof Error) {
|
||||||
|
logging_1.default.error(server_1.NAME_SPACE, e.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.rpt_052_000 = rpt_052_000;
|
||||||
30
build/lib_order.js
Normal file
30
build/lib_order.js
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
"use strict";
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.get_order = void 0;
|
||||||
|
const axios_1 = __importDefault(require("axios"));
|
||||||
|
const config_1 = __importDefault(require("./config/config"));
|
||||||
|
const logging_1 = __importDefault(require("./config/logging"));
|
||||||
|
const server_1 = require("./server");
|
||||||
|
const get_order = async (row_per_batch) => {
|
||||||
|
const url_patient = config_1.default.base_url + "/etl/getorder/getdata?limit=" + row_per_batch;
|
||||||
|
logging_1.default.info(server_1.NAME_SPACE, "Info : " + url_patient);
|
||||||
|
try {
|
||||||
|
const resp = await axios_1.default.get(url_patient, {
|
||||||
|
responseType: "arraybuffer",
|
||||||
|
});
|
||||||
|
const jresp = JSON.parse(resp.data.toString());
|
||||||
|
return jresp;
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
if (axios_1.default.isAxiosError(e)) {
|
||||||
|
logging_1.default.error(server_1.NAME_SPACE, e.response?.data.toString());
|
||||||
|
}
|
||||||
|
else if (e instanceof Error) {
|
||||||
|
logging_1.default.error(server_1.NAME_SPACE, e.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
exports.get_order = get_order;
|
||||||
89
build/server.js
Normal file
89
build/server.js
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
"use strict";
|
||||||
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||||||
|
if (k2 === undefined) k2 = k;
|
||||||
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
||||||
|
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
||||||
|
desc = { enumerable: true, get: function() { return m[k]; } };
|
||||||
|
}
|
||||||
|
Object.defineProperty(o, k2, desc);
|
||||||
|
}) : (function(o, m, k, k2) {
|
||||||
|
if (k2 === undefined) k2 = k;
|
||||||
|
o[k2] = m[k];
|
||||||
|
}));
|
||||||
|
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||||||
|
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||||||
|
}) : function(o, v) {
|
||||||
|
o["default"] = v;
|
||||||
|
});
|
||||||
|
var __importStar = (this && this.__importStar) || function (mod) {
|
||||||
|
if (mod && mod.__esModule) return mod;
|
||||||
|
var result = {};
|
||||||
|
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||||
|
__setModuleDefault(result, mod);
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||||
|
};
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
exports.NAME_SPACE = void 0;
|
||||||
|
const config_1 = __importDefault(require("./config/config"));
|
||||||
|
const logging_1 = __importDefault(require("./config/logging"));
|
||||||
|
const Xcron = __importStar(require("node-cron"));
|
||||||
|
exports.NAME_SPACE = "OneEtlTat Gateway";
|
||||||
|
const VERSION = "1.0";
|
||||||
|
let isRunning = false;
|
||||||
|
let isRefreshRunning = false;
|
||||||
|
logging_1.default.info(exports.NAME_SPACE, "Starting " + VERSION);
|
||||||
|
const on_init = async () => {
|
||||||
|
logging_1.default.info(exports.NAME_SPACE, "On Init Start");
|
||||||
|
await one_result_job();
|
||||||
|
logging_1.default.info(exports.NAME_SPACE, "On Init End");
|
||||||
|
};
|
||||||
|
on_init();
|
||||||
|
async function one_result_job() {
|
||||||
|
if (isRunning) {
|
||||||
|
logging_1.default.info(exports.NAME_SPACE, "Still Running");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
isRunning = true;
|
||||||
|
try {
|
||||||
|
let dateTime = new Date();
|
||||||
|
let dateTimeString = dateTime.toString();
|
||||||
|
logging_1.default.info(exports.NAME_SPACE, "Starting Job " + VERSION);
|
||||||
|
logging_1.default.info(exports.NAME_SPACE, "dateTimeString " + dateTimeString);
|
||||||
|
// rpt_052_000
|
||||||
|
// logging.info(NAME_SPACE, "rpt_052_000");
|
||||||
|
// var resp = await rpt_052_000("000",dateTimeString,"0");
|
||||||
|
// if (resp["status"] == "OK") {
|
||||||
|
// logging.info(NAME_SPACE, "\t Success");
|
||||||
|
// } else {
|
||||||
|
// logging.error(NAME_SPACE, "\t Error " + resp["message"]);
|
||||||
|
// }
|
||||||
|
// logging.info(NAME_SPACE, "Wait " + config.delay + " second");
|
||||||
|
// await delay(config.delay * 1000);
|
||||||
|
logging_1.default.info(exports.NAME_SPACE, "End Job");
|
||||||
|
isRunning = false;
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
isRunning = false;
|
||||||
|
if (e instanceof Error) {
|
||||||
|
logging_1.default.error(exports.NAME_SPACE, e.message);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
logging_1.default.error(exports.NAME_SPACE, "Unknown");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// console.log(config);
|
||||||
|
for (const sched of config_1.default.schedule) {
|
||||||
|
Xcron.schedule(sched, async () => {
|
||||||
|
await one_result_job();
|
||||||
|
}, {
|
||||||
|
timezone: "Asia/Jakarta",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// ------------- function
|
||||||
|
async function delay(ms) {
|
||||||
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
||||||
|
}
|
||||||
@@ -2,5 +2,8 @@
|
|||||||
"base_url": "http://devone.aplikasi.web.id/one-api/",
|
"base_url": "http://devone.aplikasi.web.id/one-api/",
|
||||||
"schedule": ["0 5,12,17 * * *"],
|
"schedule": ["0 5,12,17 * * *"],
|
||||||
"delay": 5,
|
"delay": 5,
|
||||||
"row_per_batch": 50
|
"row_per_batch": 50,
|
||||||
|
"kode":"000",
|
||||||
|
"date":"2021-06-12",
|
||||||
|
"target":"0"
|
||||||
}
|
}
|
||||||
|
|||||||
19
dist/daemon.js
vendored
Normal file
19
dist/daemon.js
vendored
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
const ScheduledTask = require('../scheduled-task');
|
||||||
|
|
||||||
|
let scheduledTask;
|
||||||
|
|
||||||
|
function register(message){
|
||||||
|
const script = require(message.path);
|
||||||
|
scheduledTask = new ScheduledTask(message.cron, script.task, message.options);
|
||||||
|
scheduledTask.on('task-done', (result) => {
|
||||||
|
process.send({ type: 'task-done', result});
|
||||||
|
});
|
||||||
|
process.send({ type: 'registred' });
|
||||||
|
}
|
||||||
|
|
||||||
|
process.on('message', (message) => {
|
||||||
|
switch(message.type){
|
||||||
|
case 'register':
|
||||||
|
return register(message);
|
||||||
|
}
|
||||||
|
});
|
||||||
9
dist/one-etl-tat-gw.js
vendored
Normal file
9
dist/one-etl-tat-gw.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -5,7 +5,7 @@
|
|||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "rm -rf build/ && prettier --write source/ && tsc",
|
"build": "rm -rf build/ && prettier --write source/ && tsc",
|
||||||
"compile": "export NODE_OPTIONS=--openssl-legacy-provider && ncc build build/server.js -m -o dist && mv dist/index.js dist/one-result-gw.js"
|
"compile": "SET NODE_OPTIONS=--openssl-legacy-provider && ncc build build/server.js -m -o dist && mv dist/index.js dist/one-etl-tat-gw.js"
|
||||||
},
|
},
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
"author": "",
|
"author": "",
|
||||||
|
|||||||
@@ -5,6 +5,10 @@ interface IConfig {
|
|||||||
schedule: string[];
|
schedule: string[];
|
||||||
delay: number;
|
delay: number;
|
||||||
row_per_batch: number;
|
row_per_batch: number;
|
||||||
|
// kode, date, target
|
||||||
|
// kode:string,
|
||||||
|
// date:string,
|
||||||
|
// target:string
|
||||||
}
|
}
|
||||||
const j_config = JSON.parse(readFileSync("./config-etl-tat.json").toString());
|
const j_config = JSON.parse(readFileSync("./config-etl-tat.json").toString());
|
||||||
|
|
||||||
@@ -13,5 +17,9 @@ const config: IConfig = {
|
|||||||
schedule: j_config["schedule"],
|
schedule: j_config["schedule"],
|
||||||
delay: j_config["delay"],
|
delay: j_config["delay"],
|
||||||
row_per_batch: j_config["row_per_batch"],
|
row_per_batch: j_config["row_per_batch"],
|
||||||
|
// kode, date, target
|
||||||
|
// kode: j_config["kode"],
|
||||||
|
// date: j_config["date"],
|
||||||
|
// target: j_config["target"]
|
||||||
};
|
};
|
||||||
export default config;
|
export default config;
|
||||||
|
|||||||
28
source/lib_052_000.ts
Normal file
28
source/lib_052_000.ts
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
import axios from "axios";
|
||||||
|
import config from "./config/config";
|
||||||
|
import logging from "./config/logging";
|
||||||
|
import { NAME_SPACE } from "./server";
|
||||||
|
|
||||||
|
export const rpt_052_000 = async (
|
||||||
|
kode: string,
|
||||||
|
date: string,
|
||||||
|
target: string
|
||||||
|
) => {
|
||||||
|
// etl/Tat/proses_etl/000/2021-06-12/0
|
||||||
|
const url_patient =
|
||||||
|
config.base_url + "etl/Tat/proses_etl/" + kode + "/" + date + "/" + target;
|
||||||
|
logging.info(NAME_SPACE, "Info : " + url_patient);
|
||||||
|
try {
|
||||||
|
const resp = await axios.get(url_patient, {
|
||||||
|
responseType: "arraybuffer",
|
||||||
|
});
|
||||||
|
const jresp = JSON.parse(resp.data.toString());
|
||||||
|
return jresp;
|
||||||
|
} catch (e) {
|
||||||
|
if (axios.isAxiosError(e)) {
|
||||||
|
logging.error(NAME_SPACE, e.response?.data.toString());
|
||||||
|
} else if (e instanceof Error) {
|
||||||
|
logging.error(NAME_SPACE, e.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -1,17 +1,10 @@
|
|||||||
import config from "./config/config";
|
import config from "./config/config";
|
||||||
import logging from "./config/logging";
|
import logging from "./config/logging";
|
||||||
import * as Xcron from "node-cron";
|
import * as Xcron from "node-cron";
|
||||||
import { get_order } from "./lib_order";
|
|
||||||
import axios from "axios";
|
|
||||||
|
|
||||||
export const NAME_SPACE = "OneEtlTat Gateway";
|
export const NAME_SPACE = "OneEtlTat Gateway";
|
||||||
const VERSION = "1.0";
|
const VERSION = "1.0";
|
||||||
|
|
||||||
const pre_url_lab = config.base_url + "/etl/mgmmcu/generate_kelainan_lab/";
|
|
||||||
const pre_url_nonlab =
|
|
||||||
config.base_url + "/etl/mgmmcu/generate_kelainan_nonlab/";
|
|
||||||
const pre_url_fisik = config.base_url + "/etl/fisik/generate/";
|
|
||||||
|
|
||||||
let isRunning: boolean = false;
|
let isRunning: boolean = false;
|
||||||
let isRefreshRunning: boolean = false;
|
let isRefreshRunning: boolean = false;
|
||||||
|
|
||||||
@@ -32,42 +25,23 @@ async function one_result_job() {
|
|||||||
}
|
}
|
||||||
isRunning = true;
|
isRunning = true;
|
||||||
try {
|
try {
|
||||||
|
let dateTime = new Date();
|
||||||
|
let dateTimeString = dateTime.toString();
|
||||||
|
|
||||||
logging.info(NAME_SPACE, "Starting Job " + VERSION);
|
logging.info(NAME_SPACE, "Starting Job " + VERSION);
|
||||||
//Get Order
|
logging.info(NAME_SPACE, "dateTimeString " + dateTimeString);
|
||||||
logging.info(NAME_SPACE, "Get Etl Mcu");
|
|
||||||
var req = await get_order(config.row_per_batch);
|
// rpt_052_000
|
||||||
if (req["status"] != "OK") {
|
// logging.info(NAME_SPACE, "rpt_052_000");
|
||||||
logging.error(NAME_SPACE, "\t Error", req);
|
// var resp = await rpt_052_000("000",dateTimeString,"0");
|
||||||
} else {
|
// if (resp["status"] == "OK") {
|
||||||
logging.info(NAME_SPACE, "\t Process Etl start");
|
// logging.info(NAME_SPACE, "\t Success");
|
||||||
for (var i = 0; i < req["data"].length; i++) {
|
// } else {
|
||||||
var nolab = req["data"][i]["no_reg"];
|
// logging.error(NAME_SPACE, "\t Error " + resp["message"]);
|
||||||
logging.info(NAME_SPACE, "\t Process Etl : " + nolab);
|
// }
|
||||||
var headerID = req["data"][i]["T_OrderHeaderID"];
|
// logging.info(NAME_SPACE, "Wait " + config.delay + " second");
|
||||||
var mgmMcuID = req["data"][i]["Mgm_McuID"];
|
// await delay(config.delay * 1000);
|
||||||
var etl_resp = "";
|
|
||||||
//Etl Lab
|
|
||||||
var url_lab = pre_url_lab + "/" + mgmMcuID + "/" + headerID;
|
|
||||||
logging.info(NAME_SPACE, "\t\t Lab :" + url_lab);
|
|
||||||
etl_resp = await axios.get(url_lab);
|
|
||||||
logging.info(NAME_SPACE, "\t\t\t", etl_resp);
|
|
||||||
//Etl NonLab
|
|
||||||
var url_nonlab = pre_url_nonlab + "/" + mgmMcuID + "/" + headerID;
|
|
||||||
logging.info(NAME_SPACE, "\t\t NonLab:" + url_nonlab);
|
|
||||||
etl_resp = await axios.get(url_nonlab);
|
|
||||||
var j_resp = JSON.parse(etl_resp);
|
|
||||||
logging.info(NAME_SPACE, "\t\t\t", j_resp["status"]);
|
|
||||||
//Etl Fisik
|
|
||||||
var url_fisik = pre_url_fisik + "/" + mgmMcuID + "/" + headerID;
|
|
||||||
logging.info(NAME_SPACE, "\t\t Fisik :" + url_fisik);
|
|
||||||
etl_resp = await axios.get(url_fisik);
|
|
||||||
j_resp = JSON.parse(etl_resp);
|
|
||||||
logging.info(NAME_SPACE, "\t\t\t", j_resp["status"]);
|
|
||||||
//Sleep
|
|
||||||
logging.info(NAME_SPACE, "\t wait 3s");
|
|
||||||
await delay(3000);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
logging.info(NAME_SPACE, "End Job");
|
logging.info(NAME_SPACE, "End Job");
|
||||||
isRunning = false;
|
isRunning = false;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user