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/",
|
||||
"schedule": ["0 5,12,17 * * *"],
|
||||
"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",
|
||||
"scripts": {
|
||||
"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": [],
|
||||
"author": "",
|
||||
|
||||
@@ -5,6 +5,10 @@ interface IConfig {
|
||||
schedule: string[];
|
||||
delay: 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());
|
||||
|
||||
@@ -13,5 +17,9 @@ const config: IConfig = {
|
||||
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"]
|
||||
};
|
||||
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 logging from "./config/logging";
|
||||
import * as Xcron from "node-cron";
|
||||
import { get_order } from "./lib_order";
|
||||
import axios from "axios";
|
||||
|
||||
export const NAME_SPACE = "OneEtlTat Gateway";
|
||||
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 isRefreshRunning: boolean = false;
|
||||
|
||||
@@ -32,42 +25,23 @@ async function one_result_job() {
|
||||
}
|
||||
isRunning = true;
|
||||
try {
|
||||
let dateTime = new Date();
|
||||
let dateTimeString = dateTime.toString();
|
||||
|
||||
logging.info(NAME_SPACE, "Starting Job " + VERSION);
|
||||
//Get Order
|
||||
logging.info(NAME_SPACE, "Get Etl Mcu");
|
||||
var req = await get_order(config.row_per_batch);
|
||||
if (req["status"] != "OK") {
|
||||
logging.error(NAME_SPACE, "\t Error", req);
|
||||
} else {
|
||||
logging.info(NAME_SPACE, "\t Process Etl start");
|
||||
for (var i = 0; i < req["data"].length; i++) {
|
||||
var nolab = req["data"][i]["no_reg"];
|
||||
logging.info(NAME_SPACE, "\t Process Etl : " + nolab);
|
||||
var headerID = req["data"][i]["T_OrderHeaderID"];
|
||||
var mgmMcuID = req["data"][i]["Mgm_McuID"];
|
||||
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, "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.info(NAME_SPACE, "End Job");
|
||||
isRunning = false;
|
||||
} catch (e) {
|
||||
|
||||
Reference in New Issue
Block a user