test new loop
This commit is contained in:
@ -18,10 +18,282 @@ const go = async () => {
|
|||||||
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++) {
|
||||||
|
const axInstance = axios.create({
|
||||||
|
proxy: {
|
||||||
|
host: process.env.PROXY_URL,
|
||||||
|
port: Number(process.env.PROXY_PORT),
|
||||||
|
},
|
||||||
|
timeout: 10_000,
|
||||||
|
headers: { "User-Agent": "movana-fleet-management/1.0 (emirsyafmun@gmail.com)" },
|
||||||
|
})
|
||||||
|
const urlBase = request.osm_reverse_geo.urlFull
|
||||||
|
|
||||||
|
function processTrack(track) {
|
||||||
|
return (async () => {
|
||||||
|
console.log("track:", track.id, track.device_id, track.latitude, track.longitude)
|
||||||
|
let now = moment().unix()
|
||||||
|
let updtData = {}
|
||||||
|
let respReverseGeo = null
|
||||||
|
|
||||||
|
const params = new url.URLSearchParams({
|
||||||
|
lat: track.latitude,
|
||||||
|
lon: track.longitude,
|
||||||
|
format: "geojson",
|
||||||
|
})
|
||||||
|
|
||||||
|
try {
|
||||||
|
const sameAddr = await GpsTracksModels.select2Address(track.latitude, track.longitude)
|
||||||
|
if (sameAddr.length > 0) {
|
||||||
|
let addrData = {
|
||||||
|
device_id: track.device_id,
|
||||||
|
master_id: track.id,
|
||||||
|
type: sameAddr[0].type,
|
||||||
|
lat: track.latitude,
|
||||||
|
lng: track.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(track.id, updtData)
|
||||||
|
console.log("skip same address:", track.id)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const resp = await axInstance.get(`${urlBase}?${params.toString()}`)
|
||||||
|
const data = resp.data || {}
|
||||||
|
if (resp.status === 200) {
|
||||||
|
console.log("SUCCESS respReverseGeo:", track.id)
|
||||||
|
if (respData.features.length < 1) {
|
||||||
|
GpsTracksModels.create2Address({
|
||||||
|
device_id: track.device_id,
|
||||||
|
master_id: track.id,
|
||||||
|
lat: track.latitude,
|
||||||
|
lng: track.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(track.id, updtData)
|
||||||
|
} else {
|
||||||
|
let respAddr = respData.features[0].properties.address
|
||||||
|
let addrData = {
|
||||||
|
device_id: track.device_id,
|
||||||
|
master_id: track.id,
|
||||||
|
lat: track.latitude,
|
||||||
|
lng: track.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(track.id, updtData)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log("FAILED respReverseGeo:", resp.status, resp.statusText)
|
||||||
|
GpsTracksModels.create2Address({
|
||||||
|
device_id: track.device_id,
|
||||||
|
master_id: track.id,
|
||||||
|
lat: track.latitude,
|
||||||
|
lng: track.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(track.id, updtData)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.log("FAILED reverse geo for track", track.id, e.message)
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
})()
|
||||||
|
}
|
||||||
// let tracks = [];
|
// let tracks = [];
|
||||||
let tracks = await GpsTracksModels.get2ForReverseGeo(1)
|
let tracks = await GpsTracksModels.get2ForReverseGeo(1)
|
||||||
// tracks.map(async (track) => {
|
|
||||||
// // console.log("track :", track.id, track.device_id, track.latitude, track.longitude)
|
await Promise.allSettled(tracks.map(processTrack))
|
||||||
|
|
||||||
|
// for (let i = 0; i < tracks.length; i++) {
|
||||||
|
// const track = tracks[i]
|
||||||
|
// console.log("tracks[i] :", 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
|
||||||
@ -58,7 +330,7 @@ const go = async () => {
|
|||||||
// 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(track.id, updtData)
|
// await GpsTracksModels.update2(track.id, updtData)
|
||||||
// return null
|
// continue
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// let params = new url.URLSearchParams({
|
// let params = new url.URLSearchParams({
|
||||||
@ -93,9 +365,9 @@ const go = async () => {
|
|||||||
// },
|
// },
|
||||||
// }
|
// }
|
||||||
// )
|
// )
|
||||||
// console.log("respReverseGeo: ", track)
|
|
||||||
// let respData = respReverseGeo.data || {}
|
// let respData = respReverseGeo.data || {}
|
||||||
// if (respReverseGeo.status == 200) {
|
// if (respReverseGeo.status == 200) {
|
||||||
|
// console.log("respReverseGeo: ", respData || "null")
|
||||||
// if (respData.features.length < 1) {
|
// if (respData.features.length < 1) {
|
||||||
// GpsTracksModels.create2Address({
|
// GpsTracksModels.create2Address({
|
||||||
// device_id: track.device_id,
|
// device_id: track.device_id,
|
||||||
@ -283,10 +555,10 @@ const go = async () => {
|
|||||||
// respData.msg = e.message
|
// respData.msg = e.message
|
||||||
// }
|
// }
|
||||||
// GpsTracksModels.create2Address({
|
// GpsTracksModels.create2Address({
|
||||||
// device_id: track.device_id,
|
// device_id: tracks[i].device_id,
|
||||||
// master_id: track.id,
|
// master_id: tracks[i].id,
|
||||||
// lat: track.latitude,
|
// lat: tracks[i].latitude,
|
||||||
// lng: track.longitude,
|
// lng: tracks[i].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),
|
||||||
@ -294,292 +566,9 @@ const go = async () => {
|
|||||||
// 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(track.id, updtData)
|
// await GpsTracksModels.update2(tracks[i].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)
|
||||||
|
|||||||
Reference in New Issue
Block a user