This commit is contained in:
Pringgosutono
2025-10-02 17:02:16 +07:00
parent 7d8d6ed2b9
commit e2ffbc5435

View File

@ -1,40 +1,40 @@
require("dotenv").config({ path: "../.env" }); require("dotenv").config({ path: "../.env" })
const LibWinston = require("../library/LibWinston"); const LibWinston = require("../library/LibWinston")
const moment = require("moment"); const moment = require("moment")
const axios = require("axios").default; const axios = require("axios").default
const url = require("url"); const url = require("url")
const request = require("../config/request"); const request = require("../config/request")
const GpsTracksModels = require("../models/GpsTracksModels"); const GpsTracksModels = require("../models/GpsTracksModels")
const RegionModels = require("../models/RegionModels"); const RegionModels = require("../models/RegionModels")
const { stringify } = require("flatted"); const { stringify } = require("flatted")
const schedulerName = process.env.REDIS_SCHEDULER_REVERSE_GEO; const schedulerName = process.env.REDIS_SCHEDULER_REVERSE_GEO
const Logger = LibWinston.initialize(schedulerName); const Logger = LibWinston.initialize(schedulerName)
const go = async () => { const go = async () => {
try { try {
Logger.log("info", `${schedulerName} running: ${moment().format("YYYY-MM-DD HH:mm:ss")}`); Logger.log("info", `${schedulerName} running: ${moment().format("YYYY-MM-DD HH:mm:ss")}`)
// (async function() { // (async function() {
try { try {
let loop = process.env.SCHEDULE_REVERSE_GEO_MAX_LOOP; let loop = process.env.SCHEDULE_REVERSE_GEO_MAX_LOOP
for (let x = 0; x < loop; x++) { for (let x = 0; x < loop; x++) {
// let tracks = []; // let tracks = [];
let tracks = await GpsTracksModels.get2ForReverseGeo(1); let tracks = await GpsTracksModels.get2ForReverseGeo(100)
for (let i = 0; i < tracks.length; i++) { tracks.map(async (track) => {
console.log("tracks[i] :", tracks[i].id, tracks[i].device_id, tracks[i].latitude, tracks[i].longitude); console.log("track :", track.id, track.device_id, track.latitude, track.longitude)
let now = moment().unix(); let now = moment().unix()
let updtData = {}; let updtData = {}
let respReverseGeo = null; let respReverseGeo = null
try { try {
const sameAddr = await GpsTracksModels.select2Address(tracks[i].latitude, tracks[i].longitude); const sameAddr = await GpsTracksModels.select2Address(track.latitude, track.longitude)
if (sameAddr.length > 0) { if (sameAddr.length > 0) {
let addrData = { let addrData = {
device_id: tracks[i].device_id, device_id: track.device_id,
master_id: tracks[i].id, master_id: track.id,
type: sameAddr[0].type, type: sameAddr[0].type,
lat: tracks[i].latitude, lat: track.latitude,
lng: tracks[i].longitude, lng: track.longitude,
country_id: sameAddr[0].country_id, country_id: sameAddr[0].country_id,
country_code: sameAddr[0].country_code, country_code: sameAddr[0].country_code,
country_text: sameAddr[0].country_text, country_text: sameAddr[0].country_text,
@ -54,27 +54,27 @@ const go = async () => {
log_reverse_geo: sameAddr[0].log_reverse_geo, log_reverse_geo: sameAddr[0].log_reverse_geo,
crt: now, crt: now,
crt_format: moment.unix(now).format("YYYY-MM-DD HH:mm:ss"), crt_format: moment.unix(now).format("YYYY-MM-DD HH:mm:ss"),
}; }
GpsTracksModels.create2Address(addrData); GpsTracksModels.create2Address(addrData)
updtData.stts_reverse_geo = GpsTracksModels.STTS_REVERSE_GEO_SC; updtData.stts_reverse_geo = GpsTracksModels.STTS_REVERSE_GEO_SC
await GpsTracksModels.update2(tracks[i].id, updtData); await GpsTracksModels.update2(track.id, updtData)
continue; return null
} }
let params = new url.URLSearchParams({ let params = new url.URLSearchParams({
lat: tracks[i].latitude, lat: track.latitude,
lon: tracks[i].longitude, lon: track.longitude,
format: "geojson", format: "geojson",
}); })
//const axInstance = axios.create() //const axInstance = axios.create()
const axInstance = axios.create({ const axInstance = axios.create({
proxy: { proxy: {
host: process.env.PROXY_URL, host: process.env.PROXY_URL,
port: process.env.PROXY_PORT, port: process.env.PROXY_PORT,
}, },
}); })
axios.defaults.timeout = 10000; axios.defaults.timeout = 10000
axios.defaults.crossDomain = true; axios.defaults.crossDomain = true
// respReverseGeo = await axios({ // respReverseGeo = await axios({
// url: request.osm_reverse_geo.urlFull, // url: request.osm_reverse_geo.urlFull,
// method: request.osm_reverse_geo.method, // method: request.osm_reverse_geo.method,
@ -84,38 +84,43 @@ const go = async () => {
// respReverseGeo = await axInstance.get(request.osm_reverse_geo.urlFull + "?" + params.toString(), { // respReverseGeo = await axInstance.get(request.osm_reverse_geo.urlFull + "?" + params.toString(), {
// timeout: 10000, // timeout: 10000,
// }); // });
respReverseGeo = await axInstance.get(request.osm_reverse_geo.urlFull + "?" + params.toString(), { respReverseGeo = await axInstance.get(
request.osm_reverse_geo.urlFull + "?" + params.toString(),
{
timeout: 10000, timeout: 10000,
headers: { headers: {
"User-Agent": "movana-fleet-management/1.0 (emirsyafmun@gmail.com)", "User-Agent": "movana-fleet-management/1.0 (emirsyafmun@gmail.com)",
}, },
}); }
console.log("respReverseGeo: ", respReverseGeo.data || null); )
let respData = respReverseGeo.data || {}; console.log("respReverseGeo: ", track)
let respData = respReverseGeo.data || {}
if (respReverseGeo.status == 200) { if (respReverseGeo.status == 200) {
if (respData.features.length < 1) { if (respData.features.length < 1) {
GpsTracksModels.create2Address({ GpsTracksModels.create2Address({
device_id: tracks[i].device_id, device_id: track.device_id,
master_id: tracks[i].id, master_id: track.id,
lat: tracks[i].latitude, lat: track.latitude,
lng: tracks[i].longitude, lng: track.longitude,
stts_reverse_geo: GpsTracksModels.STTS_REVERSE_GEO_LOST, stts_reverse_geo: GpsTracksModels.STTS_REVERSE_GEO_LOST,
log_reverse_geo: JSON.stringify(respData), log_reverse_geo: JSON.stringify(respData),
crt: now, crt: now,
crt_format: moment.unix(now).format("YYYY-MM-DD HH:mm:ss"), crt_format: moment.unix(now).format("YYYY-MM-DD HH:mm:ss"),
}); })
updtData.stts_reverse_geo = GpsTracksModels.STTS_REVERSE_GEO_LOST; updtData.stts_reverse_geo = GpsTracksModels.STTS_REVERSE_GEO_LOST
await GpsTracksModels.update2(tracks[i].id, updtData); await GpsTracksModels.update2(track.id, updtData)
} else { } else {
let respAddr = respData.features[0].properties.address; let respAddr = respData.features[0].properties.address
let addrData = { let addrData = {
device_id: tracks[i].device_id, device_id: track.device_id,
master_id: tracks[i].id, master_id: track.id,
lat: tracks[i].latitude, lat: track.latitude,
lng: tracks[i].longitude, lng: track.longitude,
country_id: GpsTracksModels.DEFAULT_COUNTRY_ID, country_id: GpsTracksModels.DEFAULT_COUNTRY_ID,
country_code: respAddr.country_code, country_code: respAddr.country_code,
country_text: respAddr.country ? respAddr.country.toUpperCase() : respAddr.country || null, country_text: respAddr.country
? respAddr.country.toUpperCase()
: respAddr.country || null,
state_id: null, state_id: null,
city_id: null, city_id: null,
district_id: null, district_id: null,
@ -123,40 +128,57 @@ const go = async () => {
postcode: respAddr.postcode, postcode: respAddr.postcode,
fulladdress: encodeURIComponent(respData.features[0].properties.display_name), fulladdress: encodeURIComponent(respData.features[0].properties.display_name),
stts_reverse_geo: GpsTracksModels.STTS_REVERSE_GEO_SC, stts_reverse_geo: GpsTracksModels.STTS_REVERSE_GEO_SC,
log_reverse_geo: respData.features[0].properties ? JSON.stringify(respData.features[0].properties) : null, log_reverse_geo: respData.features[0].properties
? JSON.stringify(respData.features[0].properties)
: null,
crt: now, crt: now,
crt_format: moment.unix(now).format("YYYY-MM-DD HH:mm:ss"), crt_format: moment.unix(now).format("YYYY-MM-DD HH:mm:ss"),
}; }
if (respAddr.state || respAddr.city) { if (respAddr.state || respAddr.city) {
addrData.state_text = respAddr.region || respAddr.state || respAddr.state_district || respAddr.county || respAddr.city || ""; addrData.state_text =
addrData.state_text = addrData.state_text ? addrData.state_text.toUpperCase() : addrData.state_text || null; respAddr.region ||
addrData.state_text = addrData.state_text || null; respAddr.state ||
respAddr.state_district ||
respAddr.county ||
respAddr.city ||
""
addrData.state_text = addrData.state_text
? addrData.state_text.toUpperCase()
: addrData.state_text || null
addrData.state_text = addrData.state_text || null
} }
if (respAddr.city_district || respAddr.city) { if (respAddr.city_district || respAddr.city) {
addrData.city_text = respAddr.city_district || respAddr.city || ""; addrData.city_text = respAddr.city_district || respAddr.city || ""
addrData.city_text = addrData.city_text ? addrData.city_text.toUpperCase() : addrData.city_text || null; addrData.city_text = addrData.city_text
addrData.city_text = addrData.city_text || null; ? addrData.city_text.toUpperCase()
: addrData.city_text || null
addrData.city_text = addrData.city_text || null
} }
if (respAddr.suburb || respAddr.subdistrict) { if (respAddr.suburb || respAddr.subdistrict) {
addrData.district_text = respAddr.suburb || respAddr.subdistrict || respAddr.subdivision || ""; addrData.district_text =
addrData.district_text = addrData.district_text ? addrData.district_text.toUpperCase() : addrData.district_text || null; respAddr.suburb || respAddr.subdistrict || respAddr.subdivision || ""
addrData.district_text = addrData.district_text || null; addrData.district_text = addrData.district_text
? addrData.district_text.toUpperCase()
: addrData.district_text || null
addrData.district_text = addrData.district_text || null
} }
if (respAddr.village) { if (respAddr.village) {
addrData.village_text = respAddr.village || respAddr.neighbourhood || ""; addrData.village_text = respAddr.village || respAddr.neighbourhood || ""
addrData.village_text = addrData.village_text ? addrData.village_text.toUpperCase() : addrData.village_text || null; addrData.village_text = addrData.village_text
addrData.village_text = addrData.village_text || null; ? addrData.village_text.toUpperCase()
: addrData.village_text || null
addrData.village_text = addrData.village_text || null
} }
if (respAddr.amenity || respAddr.road || respAddr.city_block) { if (respAddr.amenity || respAddr.road || respAddr.city_block) {
addrData.streets = ""; addrData.streets = ""
addrData.streets += respAddr.amenity ? respAddr.amenity + ", " : ""; addrData.streets += respAddr.amenity ? respAddr.amenity + ", " : ""
addrData.streets += respAddr.road ? respAddr.road + ", " : ""; addrData.streets += respAddr.road ? respAddr.road + ", " : ""
addrData.streets += respAddr.house_number ? respAddr.house_number + ", " : ""; addrData.streets += respAddr.house_number ? respAddr.house_number + ", " : ""
addrData.streets += respAddr.house_name ? respAddr.house_name + ", " : ""; addrData.streets += respAddr.house_name ? respAddr.house_name + ", " : ""
addrData.streets += respAddr.city_block ? respAddr.city_block + ", " : ""; addrData.streets += respAddr.city_block ? respAddr.city_block + ", " : ""
addrData.streets += addrData.streets || null; addrData.streets += addrData.streets || null
if (addrData.streets) { if (addrData.streets) {
addrData.streets = encodeURIComponent(addrData.streets.slice(0, -2)); addrData.streets = encodeURIComponent(addrData.streets.slice(0, -2))
} }
} }
@ -165,119 +187,373 @@ const go = async () => {
nmKotamadyaKel: addrData.city_text, nmKotamadyaKel: addrData.city_text,
nmKecamatanKel: addrData.district_text, nmKecamatanKel: addrData.district_text,
nmKelurahan: addrData.village_text, nmKelurahan: addrData.village_text,
}); })
if (byAll.length > 1) { if (byAll.length > 1) {
addrData.state_id = byAll[0].kodeProv; addrData.state_id = byAll[0].kodeProv
addrData.city_id = byAll[0].kodeKab; addrData.city_id = byAll[0].kodeKab
addrData.district_id = byAll[0].kodeKec; addrData.district_id = byAll[0].kodeKec
addrData.village_id = byAll[0].kodeKel; addrData.village_id = byAll[0].kodeKel
} }
let byKel = await RegionModels.whereLike({ let byKel = await RegionModels.whereLike({
nmKelurahan: addrData.village_text, nmKelurahan: addrData.village_text,
}); })
if (byAll.length < 1 && byKel.length > 0) { if (byAll.length < 1 && byKel.length > 0) {
addrData.state_id = byKel[0].kodeProv; addrData.state_id = byKel[0].kodeProv
addrData.city_id = byKel[0].kodeKab; addrData.city_id = byKel[0].kodeKab
addrData.district_id = byKel[0].kodeKec; addrData.district_id = byKel[0].kodeKec
addrData.village_id = byKel[0].kodeKel; addrData.village_id = byKel[0].kodeKel
} }
if (addrData.state_id === null) { if (addrData.state_id === null) {
let byPr = await RegionModels.whereLike({ nmProvinsiKel: addrData.state_text }); let byPr = await RegionModels.whereLike({ nmProvinsiKel: addrData.state_text })
if (byPr.length > 0) { if (byPr.length > 0) {
addrData.state_id = byPr[0].kodeProv; addrData.state_id = byPr[0].kodeProv
} }
} }
if (addrData.state_id !== null && addrData.city_id === null) { if (addrData.state_id !== null && addrData.city_id === null) {
let byKt = await RegionModels.whereLike({ nmKotamadyaKel: addrData.city_text }); let byKt = await RegionModels.whereLike({ nmKotamadyaKel: addrData.city_text })
if (byKt.length > 0) { if (byKt.length > 0) {
addrData.city_id = byKt[0].kodeKab; addrData.city_id = byKt[0].kodeKab
} }
} }
if (addrData.state_id !== null && addrData.city_id !== null && addrData.district_id === null) { if (
let byKc = await RegionModels.whereLike({ nmKecamatanKel: addrData.district_text }); addrData.state_id !== null &&
addrData.city_id !== null &&
addrData.district_id === null
) {
let byKc = await RegionModels.whereLike({ nmKecamatanKel: addrData.district_text })
if (byKc.length > 0) { if (byKc.length > 0) {
addrData.district_id = byKc[0].kodeKec; addrData.district_id = byKc[0].kodeKec
} }
} }
if (addrData.state_id !== null && addrData.city_id !== null && addrData.district_id !== null && addrData.village_id === null) { if (
let byKl = await RegionModels.whereLike({ nmKelurahan: addrData.village_text }); addrData.state_id !== null &&
addrData.city_id !== null &&
addrData.district_id !== null &&
addrData.village_id === null
) {
let byKl = await RegionModels.whereLike({ nmKelurahan: addrData.village_text })
if (byKl.length > 0) { if (byKl.length > 0) {
addrData.village_id = byKl[0].kodeKel; addrData.village_id = byKl[0].kodeKel
} }
} }
GpsTracksModels.create2Address(addrData).catch((e) => { GpsTracksModels.create2Address(addrData).catch((e) => {
Logger.log("error", `${schedulerName} running_error: ${JSON.stringify(e, Object.getOwnPropertyNames(e))}`); Logger.log(
}); "error",
updtData.stts_reverse_geo = GpsTracksModels.STTS_REVERSE_GEO_SC; `${schedulerName} running_error: ${JSON.stringify(
await GpsTracksModels.update2(tracks[i].id, updtData); e,
Object.getOwnPropertyNames(e)
)}`
)
})
updtData.stts_reverse_geo = GpsTracksModels.STTS_REVERSE_GEO_SC
await GpsTracksModels.update2(track.id, updtData)
} }
} else { } else {
GpsTracksModels.create2Address({ GpsTracksModels.create2Address({
device_id: tracks[i].device_id, device_id: track.device_id,
master_id: tracks[i].id, master_id: track.id,
lat: tracks[i].latitude, lat: track.latitude,
lng: tracks[i].longitude, lng: track.longitude,
stts_reverse_geo: GpsTracksModels.STTS_REVERSE_GEO_ER, stts_reverse_geo: GpsTracksModels.STTS_REVERSE_GEO_ER,
log_reverse_geo: JSON.stringify(respData), log_reverse_geo: JSON.stringify(respData),
crt: now, crt: now,
crt_format: moment.unix(now).format("YYYY-MM-DD HH:mm:ss"), crt_format: moment.unix(now).format("YYYY-MM-DD HH:mm:ss"),
}); })
updtData.stts_reverse_geo = GpsTracksModels.STTS_REVERSE_GEO_ER; updtData.stts_reverse_geo = GpsTracksModels.STTS_REVERSE_GEO_ER
await GpsTracksModels.update2(tracks[i].id, updtData); await GpsTracksModels.update2(track.id, updtData)
} }
} catch (e) { } catch (e) {
let respData = {}; let respData = {}
if (respReverseGeo) { if (respReverseGeo) {
if (respReverseGeo.status != 200) { if (respReverseGeo.status != 200) {
respData.data = respReverseGeo.data; respData.data = respReverseGeo.data
} else { } else {
respData.msg = e.message; respData.msg = e.message
} }
} else if (typeof e.response != "undefined") { } else if (typeof e.response != "undefined") {
respData.data = e.response; respData.data = e.response
} else { } else {
respData.msg = e.message; respData.msg = e.message
} }
GpsTracksModels.create2Address({ GpsTracksModels.create2Address({
device_id: tracks[i].device_id, device_id: track.device_id,
master_id: tracks[i].id, master_id: track.id,
lat: tracks[i].latitude, lat: track.latitude,
lng: tracks[i].longitude, lng: track.longitude,
stts_reverse_geo: GpsTracksModels.STTS_REVERSE_GEO_ER, stts_reverse_geo: GpsTracksModels.STTS_REVERSE_GEO_ER,
// log_reverse_geo: JSON.stringify(respData.data), // log_reverse_geo: JSON.stringify(respData.data),
log_reverse_geo: stringify(respData.data), log_reverse_geo: stringify(respData.data),
crt: now, crt: now,
crt_format: moment.unix(now).format("YYYY-MM-DD HH:mm:ss"), crt_format: moment.unix(now).format("YYYY-MM-DD HH:mm:ss"),
}); })
updtData.stts_reverse_geo = GpsTracksModels.STTS_REVERSE_GEO_ER; updtData.stts_reverse_geo = GpsTracksModels.STTS_REVERSE_GEO_ER
await GpsTracksModels.update2(tracks[i].id, updtData); await GpsTracksModels.update2(track.id, updtData)
}
} }
})
// for (let i = 0; i < tracks.length; i++) {
// console.log("tracks[i] :", tracks[i].id, tracks[i].device_id, tracks[i].latitude, tracks[i].longitude);
// let now = moment().unix();
// let updtData = {};
// let respReverseGeo = null;
// try {
// const sameAddr = await GpsTracksModels.select2Address(tracks[i].latitude, tracks[i].longitude);
// if (sameAddr.length > 0) {
// let addrData = {
// device_id: tracks[i].device_id,
// master_id: tracks[i].id,
// type: sameAddr[0].type,
// lat: tracks[i].latitude,
// lng: tracks[i].longitude,
// country_id: sameAddr[0].country_id,
// country_code: sameAddr[0].country_code,
// country_text: sameAddr[0].country_text,
// state_id: sameAddr[0].state_id,
// state_text: sameAddr[0].state_text,
// city_id: sameAddr[0].city_id,
// city_text: sameAddr[0].city_text,
// district_id: sameAddr[0].district_id,
// district_text: sameAddr[0].district_text,
// village_id: sameAddr[0].village_id,
// village_text: sameAddr[0].village_text,
// postcode: sameAddr[0].postcode,
// streets: sameAddr[0].streets,
// fulladdress: encodeURIComponent(decodeURIComponent(sameAddr[0].fulladdress)),
// type_reverse_geo: sameAddr[0].type_reverse_geo,
// stts_reverse_geo: GpsTracksModels.STTS_REVERSE_GEO_SC,
// log_reverse_geo: sameAddr[0].log_reverse_geo,
// crt: now,
// crt_format: moment.unix(now).format("YYYY-MM-DD HH:mm:ss"),
// };
// GpsTracksModels.create2Address(addrData);
// updtData.stts_reverse_geo = GpsTracksModels.STTS_REVERSE_GEO_SC;
// await GpsTracksModels.update2(tracks[i].id, updtData);
// continue;
// }
// let params = new url.URLSearchParams({
// lat: tracks[i].latitude,
// lon: tracks[i].longitude,
// format: "geojson",
// });
// //const axInstance = axios.create()
// const axInstance = axios.create({
// proxy: {
// host: process.env.PROXY_URL,
// port: process.env.PROXY_PORT,
// },
// });
// axios.defaults.timeout = 10000;
// axios.defaults.crossDomain = true;
// // respReverseGeo = await axios({
// // url: request.osm_reverse_geo.urlFull,
// // method: request.osm_reverse_geo.method,
// // params: params,
// // responseType: 'json',
// // });
// // respReverseGeo = await axInstance.get(request.osm_reverse_geo.urlFull + "?" + params.toString(), {
// // timeout: 10000,
// // });
// respReverseGeo = await axInstance.get(request.osm_reverse_geo.urlFull + "?" + params.toString(), {
// timeout: 10000,
// headers: {
// "User-Agent": "movana-fleet-management/1.0 (emirsyafmun@gmail.com)",
// },
// });
// console.log("respReverseGeo: ", respReverseGeo.data || null);
// let respData = respReverseGeo.data || {};
// if (respReverseGeo.status == 200) {
// if (respData.features.length < 1) {
// GpsTracksModels.create2Address({
// device_id: tracks[i].device_id,
// master_id: tracks[i].id,
// lat: tracks[i].latitude,
// lng: tracks[i].longitude,
// stts_reverse_geo: GpsTracksModels.STTS_REVERSE_GEO_LOST,
// log_reverse_geo: JSON.stringify(respData),
// crt: now,
// crt_format: moment.unix(now).format("YYYY-MM-DD HH:mm:ss"),
// });
// updtData.stts_reverse_geo = GpsTracksModels.STTS_REVERSE_GEO_LOST;
// await GpsTracksModels.update2(tracks[i].id, updtData);
// } else {
// let respAddr = respData.features[0].properties.address;
// let addrData = {
// device_id: tracks[i].device_id,
// master_id: tracks[i].id,
// lat: tracks[i].latitude,
// lng: tracks[i].longitude,
// country_id: GpsTracksModels.DEFAULT_COUNTRY_ID,
// country_code: respAddr.country_code,
// country_text: respAddr.country ? respAddr.country.toUpperCase() : respAddr.country || null,
// state_id: null,
// city_id: null,
// district_id: null,
// village_id: null,
// postcode: respAddr.postcode,
// fulladdress: encodeURIComponent(respData.features[0].properties.display_name),
// stts_reverse_geo: GpsTracksModels.STTS_REVERSE_GEO_SC,
// log_reverse_geo: respData.features[0].properties ? JSON.stringify(respData.features[0].properties) : null,
// crt: now,
// crt_format: moment.unix(now).format("YYYY-MM-DD HH:mm:ss"),
// };
// if (respAddr.state || respAddr.city) {
// addrData.state_text = respAddr.region || respAddr.state || respAddr.state_district || respAddr.county || respAddr.city || "";
// addrData.state_text = addrData.state_text ? addrData.state_text.toUpperCase() : addrData.state_text || null;
// addrData.state_text = addrData.state_text || null;
// }
// if (respAddr.city_district || respAddr.city) {
// addrData.city_text = respAddr.city_district || respAddr.city || "";
// addrData.city_text = addrData.city_text ? addrData.city_text.toUpperCase() : addrData.city_text || null;
// addrData.city_text = addrData.city_text || null;
// }
// if (respAddr.suburb || respAddr.subdistrict) {
// addrData.district_text = respAddr.suburb || respAddr.subdistrict || respAddr.subdivision || "";
// addrData.district_text = addrData.district_text ? addrData.district_text.toUpperCase() : addrData.district_text || null;
// addrData.district_text = addrData.district_text || null;
// }
// if (respAddr.village) {
// addrData.village_text = respAddr.village || respAddr.neighbourhood || "";
// addrData.village_text = addrData.village_text ? addrData.village_text.toUpperCase() : addrData.village_text || null;
// addrData.village_text = addrData.village_text || null;
// }
// if (respAddr.amenity || respAddr.road || respAddr.city_block) {
// addrData.streets = "";
// addrData.streets += respAddr.amenity ? respAddr.amenity + ", " : "";
// addrData.streets += respAddr.road ? respAddr.road + ", " : "";
// addrData.streets += respAddr.house_number ? respAddr.house_number + ", " : "";
// addrData.streets += respAddr.house_name ? respAddr.house_name + ", " : "";
// addrData.streets += respAddr.city_block ? respAddr.city_block + ", " : "";
// addrData.streets += addrData.streets || null;
// if (addrData.streets) {
// addrData.streets = encodeURIComponent(addrData.streets.slice(0, -2));
// }
// }
// let byAll = await RegionModels.whereLike({
// nmProvinsiKel: addrData.state_text,
// nmKotamadyaKel: addrData.city_text,
// nmKecamatanKel: addrData.district_text,
// nmKelurahan: addrData.village_text,
// });
// if (byAll.length > 1) {
// addrData.state_id = byAll[0].kodeProv;
// addrData.city_id = byAll[0].kodeKab;
// addrData.district_id = byAll[0].kodeKec;
// addrData.village_id = byAll[0].kodeKel;
// }
// let byKel = await RegionModels.whereLike({
// nmKelurahan: addrData.village_text,
// });
// if (byAll.length < 1 && byKel.length > 0) {
// addrData.state_id = byKel[0].kodeProv;
// addrData.city_id = byKel[0].kodeKab;
// addrData.district_id = byKel[0].kodeKec;
// addrData.village_id = byKel[0].kodeKel;
// }
// if (addrData.state_id === null) {
// let byPr = await RegionModels.whereLike({ nmProvinsiKel: addrData.state_text });
// if (byPr.length > 0) {
// addrData.state_id = byPr[0].kodeProv;
// }
// }
// if (addrData.state_id !== null && addrData.city_id === null) {
// let byKt = await RegionModels.whereLike({ nmKotamadyaKel: addrData.city_text });
// if (byKt.length > 0) {
// addrData.city_id = byKt[0].kodeKab;
// }
// }
// if (addrData.state_id !== null && addrData.city_id !== null && addrData.district_id === null) {
// let byKc = await RegionModels.whereLike({ nmKecamatanKel: addrData.district_text });
// if (byKc.length > 0) {
// addrData.district_id = byKc[0].kodeKec;
// }
// }
// if (addrData.state_id !== null && addrData.city_id !== null && addrData.district_id !== null && addrData.village_id === null) {
// let byKl = await RegionModels.whereLike({ nmKelurahan: addrData.village_text });
// if (byKl.length > 0) {
// addrData.village_id = byKl[0].kodeKel;
// }
// }
// GpsTracksModels.create2Address(addrData).catch((e) => {
// Logger.log("error", `${schedulerName} running_error: ${JSON.stringify(e, Object.getOwnPropertyNames(e))}`);
// });
// updtData.stts_reverse_geo = GpsTracksModels.STTS_REVERSE_GEO_SC;
// await GpsTracksModels.update2(tracks[i].id, updtData);
// }
// } else {
// GpsTracksModels.create2Address({
// device_id: tracks[i].device_id,
// master_id: tracks[i].id,
// lat: tracks[i].latitude,
// lng: tracks[i].longitude,
// stts_reverse_geo: GpsTracksModels.STTS_REVERSE_GEO_ER,
// log_reverse_geo: JSON.stringify(respData),
// crt: now,
// crt_format: moment.unix(now).format("YYYY-MM-DD HH:mm:ss"),
// });
// updtData.stts_reverse_geo = GpsTracksModels.STTS_REVERSE_GEO_ER;
// await GpsTracksModels.update2(tracks[i].id, updtData);
// }
// } catch (e) {
// let respData = {};
// if (respReverseGeo) {
// if (respReverseGeo.status != 200) {
// respData.data = respReverseGeo.data;
// } else {
// respData.msg = e.message;
// }
// } else if (typeof e.response != "undefined") {
// respData.data = e.response;
// } else {
// respData.msg = e.message;
// }
// GpsTracksModels.create2Address({
// device_id: tracks[i].device_id,
// master_id: tracks[i].id,
// lat: tracks[i].latitude,
// lng: tracks[i].longitude,
// stts_reverse_geo: GpsTracksModels.STTS_REVERSE_GEO_ER,
// // log_reverse_geo: JSON.stringify(respData.data),
// log_reverse_geo: stringify(respData.data),
// crt: now,
// crt_format: moment.unix(now).format("YYYY-MM-DD HH:mm:ss"),
// });
// updtData.stts_reverse_geo = GpsTracksModels.STTS_REVERSE_GEO_ER;
// await GpsTracksModels.update2(tracks[i].id, updtData);
// }
// }
} }
} catch (e) { } catch (e) {
console.error(e); console.error(e)
Logger.log("error", `${schedulerName} error: ${JSON.stringify(e)}`); Logger.log("error", `${schedulerName} error: ${JSON.stringify(e)}`)
} }
// })(); // })();
Logger.log("info", `${schedulerName} success do reverse geocoding ${moment().format("YYYY-MM-DD HH:mm:ss")}`); Logger.log("info", `${schedulerName} success do reverse geocoding ${moment().format("YYYY-MM-DD HH:mm:ss")}`)
} catch (e) { } catch (e) {
Logger.log("error", `${schedulerName} error: ${JSON.stringify(e)}`); Logger.log("error", `${schedulerName} error: ${JSON.stringify(e)}`)
}
return true
} }
return true;
};
const index = async () => { const index = async () => {
while (1 == 1) { while (1 == 1) {
await go(); await go()
await new Promise((r) => setTimeout(r, 1000)); await new Promise((r) => setTimeout(r, 1000))
}
} }
};
index(); index()