update
This commit is contained in:
@ -24,7 +24,17 @@ async function commitMessage(now, logDevice) {
|
||||
}
|
||||
|
||||
const vhc = await VhcModels.getVhcByDeviceId(logDevice.device_id)
|
||||
const lastTrack = await GpsTracksModels.get2LastLocByDeviceId(logDevice.device_id)
|
||||
// const lastTrack = await GpsTracksModels.get2LastLocByDeviceId(logDevice.device_id)
|
||||
let lastTrack
|
||||
if (vhc.length > 0)
|
||||
lastTrack = await GpsTracksModels.get2LastLocByVhcId(vhc[0].vid)
|
||||
else
|
||||
lastTrack = await GpsTracksModels.get2LastLocByDeviceId(
|
||||
logDevice.device_id,
|
||||
)
|
||||
|
||||
if (logDevice.device_id == "0353742374791143")
|
||||
console.log("vhc", vhc, lastTrack)
|
||||
|
||||
if (["heartbeat", "alarm"].includes(logDevice.action)) {
|
||||
if (logDevice.ignition == GpsTracksModels.STTS_IGNITION_HIGH) {
|
||||
@ -32,13 +42,15 @@ async function commitMessage(now, logDevice) {
|
||||
logDevice.stts_engine = GpsTracksModels.STTS_EN_MOVING
|
||||
} else {
|
||||
if (lastTrack.length > 0) {
|
||||
const checkLastHeartbeat = await GpsTracksModels.getLastHeartbeatToDeterminIdling(
|
||||
logDevice.device_id,
|
||||
lastTrack[0].crt,
|
||||
now
|
||||
)
|
||||
const checkLastHeartbeat =
|
||||
await GpsTracksModels.getLastHeartbeatToDeterminIdling(
|
||||
logDevice.device_id,
|
||||
lastTrack[0].crt,
|
||||
now,
|
||||
)
|
||||
if (checkLastHeartbeat.length >= 3) {
|
||||
logDevice.stts_engine = GpsTracksModels.STTS_EN_IDLING
|
||||
logDevice.stts_engine =
|
||||
GpsTracksModels.STTS_EN_IDLING
|
||||
} else {
|
||||
logDevice.stts_engine = lastTrack[0].stts_engine
|
||||
}
|
||||
@ -51,12 +63,16 @@ async function commitMessage(now, logDevice) {
|
||||
|
||||
if (["location"].includes(logDevice.action)) {
|
||||
// console.log(logDevice.device_id + " : 1")
|
||||
const lastHeartbeatOrAlarm = await GpsTracksModels.get2LastHeartbeatOrAlarm(logDevice.device_id)
|
||||
const lastHeartbeatOrAlarm =
|
||||
await GpsTracksModels.get2LastHeartbeatOrAlarm(
|
||||
logDevice.device_id,
|
||||
)
|
||||
if (lastHeartbeatOrAlarm.length > 0) {
|
||||
logDevice.ignition = lastHeartbeatOrAlarm[0].ignition
|
||||
logDevice.stts_gps = lastHeartbeatOrAlarm[0].stts_gps
|
||||
logDevice.stts_gsm = lastHeartbeatOrAlarm[0].stts_gsm
|
||||
logDevice.stts_oil_electricity = lastHeartbeatOrAlarm[0].stts_oil_electricity
|
||||
logDevice.stts_oil_electricity =
|
||||
lastHeartbeatOrAlarm[0].stts_oil_electricity
|
||||
logDevice.stts_alarm = lastHeartbeatOrAlarm[0].stts_alarm
|
||||
logDevice.stts_charge = lastHeartbeatOrAlarm[0].stts_charge
|
||||
logDevice.stts_acc = lastHeartbeatOrAlarm[0].stts_acc
|
||||
@ -66,7 +82,8 @@ async function commitMessage(now, logDevice) {
|
||||
logDevice.ignition = logDevice.ignition || 0
|
||||
logDevice.stts_gps = logDevice.stts_gps || 0
|
||||
logDevice.stts_gsm = logDevice.stts_gsm || 0
|
||||
logDevice.stts_oil_electricity = logDevice.stts_oil_electricity || 0
|
||||
logDevice.stts_oil_electricity =
|
||||
logDevice.stts_oil_electricity || 0
|
||||
logDevice.stts_alarm = logDevice.stts_alarm || 0
|
||||
logDevice.stts_charge = logDevice.stts_charge || 0
|
||||
logDevice.stts_acc = logDevice.stts_acc || 0
|
||||
@ -79,13 +96,15 @@ async function commitMessage(now, logDevice) {
|
||||
logDevice.stts_engine = GpsTracksModels.STTS_EN_MOVING
|
||||
} else {
|
||||
if (lastTrack.length > 0) {
|
||||
const checkLastHeartbeat = await GpsTracksModels.getLastHeartbeatToDeterminIdling(
|
||||
logDevice.device_id,
|
||||
lastTrack[0].crt,
|
||||
now
|
||||
)
|
||||
const checkLastHeartbeat =
|
||||
await GpsTracksModels.getLastHeartbeatToDeterminIdling(
|
||||
logDevice.device_id,
|
||||
lastTrack[0].crt,
|
||||
now,
|
||||
)
|
||||
if (checkLastHeartbeat.length >= 3) {
|
||||
logDevice.stts_engine = GpsTracksModels.STTS_EN_IDLING
|
||||
logDevice.stts_engine =
|
||||
GpsTracksModels.STTS_EN_IDLING
|
||||
} else {
|
||||
logDevice.stts_engine = lastTrack[0].stts_engine
|
||||
}
|
||||
@ -95,7 +114,8 @@ async function commitMessage(now, logDevice) {
|
||||
} else {
|
||||
logDevice.stts_engine = GpsTracksModels.STTS_EN_STOPING
|
||||
}
|
||||
logDevice.stts_oil_electricity = lastHeartbeatOrAlarm[0]?.stts_oil_electricity || 0
|
||||
logDevice.stts_oil_electricity =
|
||||
lastHeartbeatOrAlarm[0]?.stts_oil_electricity || 0
|
||||
logDevice.stts_alarm = lastHeartbeatOrAlarm[0]?.stts_alarm || 0
|
||||
logDevice.stts_charge = lastHeartbeatOrAlarm[0]?.stts_charge || 0
|
||||
logDevice.stts_acc = lastHeartbeatOrAlarm[0]?.stts_acc || 0
|
||||
@ -111,7 +131,8 @@ async function commitMessage(now, logDevice) {
|
||||
logDevice.speed = lastTrack[0].speed
|
||||
logDevice.orientation = lastTrack[0].orientation
|
||||
if (logDevice.latitude) {
|
||||
logDevice.stts_reverse_geo = GpsTracksModels.STTS_REVERSE_GEO_NOT
|
||||
logDevice.stts_reverse_geo =
|
||||
GpsTracksModels.STTS_REVERSE_GEO_NOT
|
||||
}
|
||||
|
||||
logDevice.length_gps = lastTrack[0].length_gps
|
||||
@ -126,20 +147,28 @@ async function commitMessage(now, logDevice) {
|
||||
// logDevice.crt_d_format = lastTrack[0].crt_d_format;
|
||||
// jika pengen di munculin di last movement
|
||||
logDevice.crt = now
|
||||
logDevice.crt_format = moment.unix(now).format("YYYY-MM-DD HH:mm:ss")
|
||||
logDevice.crt_format = moment
|
||||
.unix(now)
|
||||
.format("YYYY-MM-DD HH:mm:ss")
|
||||
logDevice.crt_d = now
|
||||
logDevice.crt_d_format = moment.unix(now).format("YYYY-MM-DD HH:mm:ss")
|
||||
logDevice.crt_d_format = moment
|
||||
.unix(now)
|
||||
.format("YYYY-MM-DD HH:mm:ss")
|
||||
}
|
||||
}
|
||||
|
||||
// count milleage
|
||||
if (logDevice.latitude != null && logDevice.longitude != null && lastTrack.length > 0) {
|
||||
if (
|
||||
logDevice.latitude != null &&
|
||||
logDevice.longitude != null &&
|
||||
lastTrack.length > 0
|
||||
) {
|
||||
const distance = LibHelper.haversineGreatCircleDistance(
|
||||
lastTrack[0].latitude,
|
||||
lastTrack[0].longitude,
|
||||
logDevice.latitude,
|
||||
logDevice.longitude,
|
||||
LibHelper.EARTH_RADIUS_KM
|
||||
LibHelper.EARTH_RADIUS_KM,
|
||||
)
|
||||
const distance_km = LibHelper.kmToKm(distance, 100000000)
|
||||
// console.log(`GPS TRACKER UP LOCATION => device_id:${logDevice.device_id} vhc_id:${(vhc[0]) ? vhc[0].vid : 0}, distance_km:${distance_km}`);
|
||||
@ -149,7 +178,9 @@ async function commitMessage(now, logDevice) {
|
||||
// return false
|
||||
// }
|
||||
logDevice.pre_milleage = distance_km
|
||||
logDevice.sum_milleage = (lastTrack[0].sum_milleage + logDevice.pre_milleage).toFixed(8)
|
||||
logDevice.sum_milleage = (
|
||||
lastTrack[0].sum_milleage + logDevice.pre_milleage
|
||||
).toFixed(8)
|
||||
if (vhc.length > 0) {
|
||||
logDevice.vhc_id = vhc[0] ? vhc[0].vid : 0
|
||||
// if (lastTrack[0].vhc_id == logDevice.vhc_id) {
|
||||
@ -163,9 +194,13 @@ async function commitMessage(now, logDevice) {
|
||||
// logDevice.vhc_milleage = ((vhc[0] ? vhc[0].sum_milleage : 0) + logDevice.pre_milleage).toFixed(8);
|
||||
// }
|
||||
// force mileage dari vechile
|
||||
logDevice.vhc_milleage = ((vhc[0]?.sum_milleage || 0) + logDevice.pre_milleage).toFixed(8)
|
||||
logDevice.vhc_milleage = (
|
||||
(vhc[0]?.sum_milleage || 0) + logDevice.pre_milleage
|
||||
).toFixed(8)
|
||||
|
||||
VhcModels.update(vhc[0] ? vhc[0].vid : 0, { sum_milleage: logDevice.vhc_milleage })
|
||||
VhcModels.update(vhc[0] ? vhc[0].vid : 0, {
|
||||
sum_milleage: logDevice.vhc_milleage,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@ -173,10 +208,19 @@ async function commitMessage(now, logDevice) {
|
||||
if (logDevice.latitude != null && logDevice.longitude != null) {
|
||||
// && vhc.length > 0
|
||||
// log tracking
|
||||
const currTrack = await GpsTracksModels.bundleCreate2(logDevice, logDevice)
|
||||
const currTrack = await GpsTracksModels.bundleCreate2(
|
||||
logDevice,
|
||||
logDevice,
|
||||
)
|
||||
// console.log('GT06 HAS LOCATION AND CHECK ZONE');
|
||||
const inCircle = await ZoneModels.getInCircle(logDevice.latitude, logDevice.longitude)
|
||||
const inShape = await ZoneModels.getInShape(logDevice.latitude, logDevice.longitude)
|
||||
const inCircle = await ZoneModels.getInCircle(
|
||||
logDevice.latitude,
|
||||
logDevice.longitude,
|
||||
)
|
||||
const inShape = await ZoneModels.getInShape(
|
||||
logDevice.latitude,
|
||||
logDevice.longitude,
|
||||
)
|
||||
const insideSpawnZone = []
|
||||
for (let zone of inCircle) {
|
||||
insideSpawnZone.push(zone)
|
||||
@ -202,21 +246,31 @@ async function commitMessage(now, logDevice) {
|
||||
if (lastSpawn.length > 0) {
|
||||
let is_leave_zone = 1
|
||||
for (const insideZone of insideSpawnZone) {
|
||||
if (insideZone.zid === lastSpawn[0].zone_id) is_leave_zone = 0
|
||||
if (insideZone.zid === lastSpawn[0].zone_id)
|
||||
is_leave_zone = 0
|
||||
}
|
||||
if (is_leave_zone === 1 && lastSpawn[0].device_id == logDevice.device_id) {
|
||||
if (
|
||||
is_leave_zone === 1 &&
|
||||
lastSpawn[0].device_id == logDevice.device_id
|
||||
) {
|
||||
GpsTracksModels.updt2SpawnZone(
|
||||
{
|
||||
leave_lat: logDevice.latitude,
|
||||
leave_lng: logDevice.longitude,
|
||||
leave_at_d: logDevice.crt_d || now,
|
||||
leave_at_d_format: moment.unix(logDevice.crt_d || now).format("YYYY-MM-DD HH:mm:ss"),
|
||||
leave_at_d_format: moment
|
||||
.unix(logDevice.crt_d || now)
|
||||
.format("YYYY-MM-DD HH:mm:ss"),
|
||||
leave_at_s: now,
|
||||
leave_at_s_format: moment.unix(now).format("YYYY-MM-DD HH:mm:ss"),
|
||||
leave_at_s_format: moment
|
||||
.unix(now)
|
||||
.format("YYYY-MM-DD HH:mm:ss"),
|
||||
updt: now,
|
||||
updt_format: moment.unix(now).format("YYYY-MM-DD HH:mm:ss"),
|
||||
updt_format: moment
|
||||
.unix(now)
|
||||
.format("YYYY-MM-DD HH:mm:ss"),
|
||||
},
|
||||
lastSpawn[0].id
|
||||
lastSpawn[0].id,
|
||||
)
|
||||
}
|
||||
} else {
|
||||
@ -235,28 +289,38 @@ async function commitMessage(now, logDevice) {
|
||||
(vhc[0] ? vhc[0].nopol3 : 0 || ""),
|
||||
da_name: vhc[0] ? vhc[0].da_name : 0 || "",
|
||||
da_phone:
|
||||
"+" + (vhc[0] ? vhc[0].da_phone_code : 0 || "") + (vhc[0] ? vhc[0].da_phone : 0 || ""),
|
||||
"+" +
|
||||
(vhc[0] ? vhc[0].da_phone_code : 0 || "") +
|
||||
(vhc[0] ? vhc[0].da_phone : 0 || ""),
|
||||
}
|
||||
// LibMail.sendVhcSpawnZoneMail(`${(vhc[0]) ? vhc[0].nopol1 : 0 || ''}${(vhc[0]) ? vhc[0].nopol2 : 0 || ''}${(vhc[0]) ? vhc[0].nopol3 : 0 || ''} entering zone ${mailData.z_name}`, mailData.pic_mail, mailData);
|
||||
|
||||
if (logDevice.device_id === "0865784052395871") console.log(1234567890)
|
||||
if (logDevice.device_id === "0865784052395871")
|
||||
console.log(1234567890)
|
||||
GpsTracksModels.create2SpawnZone({
|
||||
device_id: logDevice.device_id,
|
||||
master_id: Number(currTrack.result.insertId),
|
||||
enter_lat: logDevice.latitude,
|
||||
enter_lng: logDevice.longitude,
|
||||
enter_at_d: logDevice.crt_d || now,
|
||||
enter_at_d_format: moment.unix(logDevice.crt_d || now).format("YYYY-MM-DD HH:mm:ss"),
|
||||
enter_at_d_format: moment
|
||||
.unix(logDevice.crt_d || now)
|
||||
.format("YYYY-MM-DD HH:mm:ss"),
|
||||
enter_at_s: now,
|
||||
enter_at_s_format: moment.unix(now).format("YYYY-MM-DD HH:mm:ss"),
|
||||
enter_at_s_format: moment
|
||||
.unix(now)
|
||||
.format("YYYY-MM-DD HH:mm:ss"),
|
||||
zone_id: zone.zid,
|
||||
zone_name: zone.name,
|
||||
vhc_id: vhc[0] ? vhc[0].vid : 0,
|
||||
source: GpsTracksModels.SOURCE_GPS_TRACKER,
|
||||
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 (logDevice.device_id === "0865784052395871") console.log("DISINI")
|
||||
if (logDevice.device_id === "0865784052395871")
|
||||
console.log("DISINI")
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -280,7 +344,8 @@ class ListenController {
|
||||
|
||||
const logDevice = {
|
||||
original_hex: me.ori_string,
|
||||
protocol: me.protocol_name == "unknown" ? null : me.protocol_name,
|
||||
protocol:
|
||||
me.protocol_name == "unknown" ? null : me.protocol_name,
|
||||
action: null,
|
||||
device_id: null,
|
||||
latitude: null,
|
||||
@ -330,10 +395,13 @@ class ListenController {
|
||||
logDevice.speed = act.gps_data.speed
|
||||
logDevice.orientation = act.gps_data.orientation
|
||||
if (logDevice.latitude) {
|
||||
logDevice.stts_reverse_geo = GpsTracksModels.STTS_REVERSE_GEO_NOT
|
||||
logDevice.stts_reverse_geo =
|
||||
GpsTracksModels.STTS_REVERSE_GEO_NOT
|
||||
}
|
||||
logDevice.length_gps = act.gps_data.quantity_pos_satellites_c
|
||||
logDevice.pos_stlt_gps = act.gps_data.quantity_pos_satellites_b
|
||||
logDevice.length_gps =
|
||||
act.gps_data.quantity_pos_satellites_c
|
||||
logDevice.pos_stlt_gps =
|
||||
act.gps_data.quantity_pos_satellites_b
|
||||
logDevice.pos_type_gps =
|
||||
Number(act.gps_data.realtime_dif_gps) === 0
|
||||
? GpsTracksModels.STTS_POS_TYPE_GPS_RLTM
|
||||
@ -342,21 +410,28 @@ class ListenController {
|
||||
? GpsTracksModels.STTS_IS_POS_GPS_HAS
|
||||
: GpsTracksModels.STTS_IS_POS_GPS_NOT
|
||||
logDevice.crt = moment(act.gps_data.date).unix()
|
||||
logDevice.crt_format = moment(act.gps_data.date).format("YYYY-MM-DD HH:mm:ss")
|
||||
logDevice.crt_format = moment(act.gps_data.date).format(
|
||||
"YYYY-MM-DD HH:mm:ss",
|
||||
)
|
||||
logDevice.crt_d = moment(act.gps_data.date).unix()
|
||||
logDevice.crt_d_format = moment(act.gps_data.date).format("YYYY-MM-DD HH:mm:ss")
|
||||
logDevice.crt_d_format = moment(act.gps_data.date).format(
|
||||
"YYYY-MM-DD HH:mm:ss",
|
||||
)
|
||||
} else if (act.action_type == "heartbeat") {
|
||||
logDevice.action = act.action_type
|
||||
logDevice.device_id = act.device_id
|
||||
logDevice.ignition = Number(act.stts_data.terminal_info.acc)
|
||||
? GpsTracksModels.STTS_IGNITION_HIGH
|
||||
: GpsTracksModels.STTS_IGNITION_LOW
|
||||
logDevice.stts_gps = act.stts_data.terminal_info.gps_tracking
|
||||
logDevice.stts_gps = act.stts_data.terminal_info
|
||||
.gps_tracking
|
||||
? GpsTracksModels.STTS_GPS_ON
|
||||
: GpsTracksModels.STTS_GPS_OFF
|
||||
logDevice.stts_gsm = Number(act.stts_data.gsm_signal_strength) + 1
|
||||
logDevice.stts_gsm =
|
||||
Number(act.stts_data.gsm_signal_strength) + 1
|
||||
logDevice.stts_oil_electricity =
|
||||
Number(act.stts_data.terminal_info.oil_electricity) === 0
|
||||
Number(act.stts_data.terminal_info.oil_electricity) ===
|
||||
0
|
||||
? GpsTracksModels.STTS_OIL_ELECTRIC_ON
|
||||
: GpsTracksModels.STTS_OIL_ELECTRIC_OFF
|
||||
|
||||
@ -365,23 +440,28 @@ class ListenController {
|
||||
stts_alarm === 1
|
||||
? GpsTracksModels.STTS_ALARM_SHOCK
|
||||
: stts_alarm === 2
|
||||
? GpsTracksModels.STTS_ALARM_POWER_CUT
|
||||
: stts_alarm === 3
|
||||
? GpsTracksModels.STTS_ALARM_LOW_BATTERY
|
||||
: stts_alarm === 4
|
||||
? GpsTracksModels.STTS_ALARM_SOS
|
||||
: GpsTracksModels.STTS_ALARM_NORMAL
|
||||
? GpsTracksModels.STTS_ALARM_POWER_CUT
|
||||
: stts_alarm === 3
|
||||
? GpsTracksModels.STTS_ALARM_LOW_BATTERY
|
||||
: stts_alarm === 4
|
||||
? GpsTracksModels.STTS_ALARM_SOS
|
||||
: GpsTracksModels.STTS_ALARM_NORMAL
|
||||
|
||||
logDevice.stts_charge = Number(act.stts_data.terminal_info.charge)
|
||||
logDevice.stts_charge = Number(
|
||||
act.stts_data.terminal_info.charge,
|
||||
)
|
||||
? GpsTracksModels.STTS_CHARGE_ON
|
||||
: GpsTracksModels.STTS_CHARGE_OFF
|
||||
logDevice.stts_acc = Number(act.stts_data.terminal_info.acc)
|
||||
? GpsTracksModels.STTS_ACC_HIGH
|
||||
: GpsTracksModels.STTS_ACC_LOW
|
||||
logDevice.stts_switch = Number(act.stts_data.terminal_info.is_active)
|
||||
logDevice.stts_switch = Number(
|
||||
act.stts_data.terminal_info.is_active,
|
||||
)
|
||||
? GpsTracksModels.STTS_SWITCH_ON
|
||||
: GpsTracksModels.STTS_SWITCH_OFF
|
||||
logDevice.stts_volt = Number(act.stts_data.voltage_level) + 1
|
||||
logDevice.stts_volt =
|
||||
Number(act.stts_data.voltage_level) + 1
|
||||
} else if (act.action_type == "alarm") {
|
||||
logDevice.action = act.action_type
|
||||
logDevice.device_id = act.device_id
|
||||
@ -390,10 +470,13 @@ class ListenController {
|
||||
logDevice.speed = act.gps_data.speed
|
||||
logDevice.orientation = act.gps_data.orientation
|
||||
if (logDevice.latitude) {
|
||||
logDevice.stts_reverse_geo = GpsTracksModels.STTS_REVERSE_GEO_NOT
|
||||
logDevice.stts_reverse_geo =
|
||||
GpsTracksModels.STTS_REVERSE_GEO_NOT
|
||||
}
|
||||
logDevice.length_gps = act.gps_data.quantity_pos_satellites_c
|
||||
logDevice.pos_stlt_gps = act.gps_data.quantity_pos_satellites_b
|
||||
logDevice.length_gps =
|
||||
act.gps_data.quantity_pos_satellites_c
|
||||
logDevice.pos_stlt_gps =
|
||||
act.gps_data.quantity_pos_satellites_b
|
||||
logDevice.pos_type_gps =
|
||||
Number(act.gps_data.realtime_dif_gps) === 0
|
||||
? GpsTracksModels.STTS_POS_TYPE_GPS_RLTM
|
||||
@ -404,12 +487,15 @@ class ListenController {
|
||||
logDevice.ignition = Number(act.stts_data.terminal_info.acc)
|
||||
? GpsTracksModels.STTS_IGNITION_HIGH
|
||||
: GpsTracksModels.STTS_IGNITION_LOW
|
||||
logDevice.stts_gps = act.stts_data.terminal_info.gps_tracking
|
||||
logDevice.stts_gps = act.stts_data.terminal_info
|
||||
.gps_tracking
|
||||
? GpsTracksModels.STTS_GPS_ON
|
||||
: GpsTracksModels.STTS_GPS_OFF
|
||||
logDevice.stts_gsm = Number(act.stts_data.gsm_signal_strength) + 1
|
||||
logDevice.stts_gsm =
|
||||
Number(act.stts_data.gsm_signal_strength) + 1
|
||||
logDevice.stts_oil_electricity =
|
||||
Number(act.stts_data.terminal_info.oil_electricity) === 0
|
||||
Number(act.stts_data.terminal_info.oil_electricity) ===
|
||||
0
|
||||
? GpsTracksModels.STTS_OIL_ELECTRIC_ON
|
||||
: GpsTracksModels.STTS_OIL_ELECTRIC_OFF
|
||||
|
||||
@ -418,27 +504,36 @@ class ListenController {
|
||||
stts_alarm === 1
|
||||
? GpsTracksModels.STTS_ALARM_SHOCK
|
||||
: stts_alarm === 2
|
||||
? GpsTracksModels.STTS_ALARM_POWER_CUT
|
||||
: stts_alarm === 3
|
||||
? GpsTracksModels.STTS_ALARM_LOW_BATTERY
|
||||
: stts_alarm === 4
|
||||
? GpsTracksModels.STTS_ALARM_SOS
|
||||
: GpsTracksModels.STTS_ALARM_NORMAL
|
||||
? GpsTracksModels.STTS_ALARM_POWER_CUT
|
||||
: stts_alarm === 3
|
||||
? GpsTracksModels.STTS_ALARM_LOW_BATTERY
|
||||
: stts_alarm === 4
|
||||
? GpsTracksModels.STTS_ALARM_SOS
|
||||
: GpsTracksModels.STTS_ALARM_NORMAL
|
||||
|
||||
logDevice.stts_charge = Number(act.stts_data.terminal_info.charge)
|
||||
logDevice.stts_charge = Number(
|
||||
act.stts_data.terminal_info.charge,
|
||||
)
|
||||
? GpsTracksModels.STTS_CHARGE_ON
|
||||
: GpsTracksModels.STTS_CHARGE_OFF
|
||||
logDevice.stts_acc = Number(act.stts_data.terminal_info.acc)
|
||||
? GpsTracksModels.STTS_ACC_HIGH
|
||||
: GpsTracksModels.STTS_ACC_LOW
|
||||
logDevice.stts_switch = Number(act.stts_data.terminal_info.is_active)
|
||||
logDevice.stts_switch = Number(
|
||||
act.stts_data.terminal_info.is_active,
|
||||
)
|
||||
? GpsTracksModels.STTS_SWITCH_ON
|
||||
: GpsTracksModels.STTS_SWITCH_OFF
|
||||
logDevice.stts_volt = Number(act.stts_data.voltage_level) + 1
|
||||
logDevice.stts_volt =
|
||||
Number(act.stts_data.voltage_level) + 1
|
||||
logDevice.crt = moment(act.gps_data.date).unix()
|
||||
logDevice.crt_format = moment(act.gps_data.date).format("YYYY-MM-DD HH:mm:ss")
|
||||
logDevice.crt_format = moment(act.gps_data.date).format(
|
||||
"YYYY-MM-DD HH:mm:ss",
|
||||
)
|
||||
logDevice.crt_d = moment(act.gps_data.date).unix()
|
||||
logDevice.crt_d_format = moment(act.gps_data.date).format("YYYY-MM-DD HH:mm:ss")
|
||||
logDevice.crt_d_format = moment(act.gps_data.date).format(
|
||||
"YYYY-MM-DD HH:mm:ss",
|
||||
)
|
||||
} else {
|
||||
logDevice.action = act.action_type
|
||||
logDevice.device_id = act.device_id
|
||||
@ -477,15 +572,27 @@ class ListenController {
|
||||
let countInserted = 0
|
||||
for (const rec of records) {
|
||||
// console.log("rec ====> ", rec)
|
||||
const timestamp_device = Math.floor(rec.gnss.timestamp / 1000) - 25200
|
||||
const timestamp_device =
|
||||
Math.floor(rec.gnss.timestamp / 1000) - 25200
|
||||
// avoid duplicate timestamp
|
||||
if (previousCrtD == timestamp_device) continue
|
||||
previousCrtD = timestamp_device
|
||||
|
||||
const lastTrack = (await GpsTracksModels.get2LastLocByDeviceId(imei))?.[0]
|
||||
const lastTrack = (
|
||||
await GpsTracksModels.get2LastLocByDeviceId(imei)
|
||||
)?.[0]
|
||||
const isSleepMode = rec.io["Sleep Mode"] == 0 ? false : true
|
||||
const isMoreThan1Min = lastTrack ? (timestamp_device - lastTrack.crt_d >= 60 ? true : false) : true
|
||||
if (!isMoreThan1Min && lastTrack.speed === 0 && rec.gnss.speed === 0) continue // avoid duplicate stationary log
|
||||
const isMoreThan1Min = lastTrack
|
||||
? timestamp_device - lastTrack.crt_d >= 60
|
||||
? true
|
||||
: false
|
||||
: true
|
||||
if (
|
||||
!isMoreThan1Min &&
|
||||
lastTrack.speed === 0 &&
|
||||
rec.gnss.speed === 0
|
||||
)
|
||||
continue // avoid duplicate stationary log
|
||||
|
||||
const now = moment().unix()
|
||||
const logDevice = {
|
||||
@ -497,7 +604,9 @@ class ListenController {
|
||||
longitude: rec.gnss.longitude || null,
|
||||
speed: rec.gnss.speed || 0,
|
||||
orientation: rec.gnss.angle || 0,
|
||||
ignition: rec.io.Ignition ? GpsTracksModels.STTS_IGNITION_HIGH : GpsTracksModels.STTS_IGNITION_LOW,
|
||||
ignition: rec.io.Ignition
|
||||
? GpsTracksModels.STTS_IGNITION_HIGH
|
||||
: GpsTracksModels.STTS_IGNITION_LOW,
|
||||
stts_engine: 0,
|
||||
stts_gps: rec.gnss.satellites || 0,
|
||||
length_gps: 0,
|
||||
@ -521,10 +630,17 @@ class ListenController {
|
||||
crt_format: moment.unix(now).format("YYYY-MM-DD HH:mm:ss"),
|
||||
// minus 7 hours -- ngikutin data gt06 biar sinkron
|
||||
crt_d: timestamp_device,
|
||||
crt_d_format: moment.unix(timestamp_device).format("YYYY-MM-DD HH:mm:ss"),
|
||||
crt_d_format: moment
|
||||
.unix(timestamp_device)
|
||||
.format("YYYY-MM-DD HH:mm:ss"),
|
||||
crt_s: now,
|
||||
crt_s_format: moment.unix(now).format("YYYY-MM-DD HH:mm:ss"),
|
||||
fuel_curr: !rec.io["Fuel Level"] && isSleepMode ? lastTrack?.fuel_curr : rec.io["Fuel Level"] || 0,
|
||||
crt_s_format: moment
|
||||
.unix(now)
|
||||
.format("YYYY-MM-DD HH:mm:ss"),
|
||||
fuel_curr:
|
||||
!rec.io["Fuel Level"] && isSleepMode
|
||||
? lastTrack?.fuel_curr
|
||||
: rec.io["Fuel Level"] || 0,
|
||||
fuel_count:
|
||||
!rec.io["Fuel Consumed (counted)"] && isSleepMode
|
||||
? lastTrack?.fuel_count
|
||||
@ -540,7 +656,11 @@ class ListenController {
|
||||
|
||||
apiRes = JSON.parse(JSON.stringify(response[200]))
|
||||
apiRes.meta.message = "success"
|
||||
apiRes.data = { device_imei: imei, records_received: records.length, records_inserted: countInserted }
|
||||
apiRes.data = {
|
||||
device_imei: imei,
|
||||
records_received: records.length,
|
||||
records_inserted: countInserted,
|
||||
}
|
||||
return res.status(200).json(apiRes)
|
||||
} catch (err) {
|
||||
console.error("❌ error:", err.message)
|
||||
@ -565,7 +685,9 @@ class ListenController {
|
||||
const data = req.body
|
||||
const now = moment().unix()
|
||||
|
||||
const vhc_id = (await VhcModels.getVhcByDeviceId(data.imei.padStart(16, "0")))?.[0]?.vid
|
||||
const vhc_id = (
|
||||
await VhcModels.getVhcByDeviceId(data.imei.padStart(16, "0"))
|
||||
)?.[0]?.vid
|
||||
if (!vhc_id) {
|
||||
apiRes = JSON.parse(JSON.stringify(response[422]))
|
||||
apiRes.meta.message = "Device ID not registered to any vehicle"
|
||||
@ -595,7 +717,14 @@ class ListenController {
|
||||
image = new.image,
|
||||
filename = new.filename
|
||||
`
|
||||
const insD = [vhc_id, data.picture_at, data.cam, data.file.filename, data.file.url, now]
|
||||
const insD = [
|
||||
vhc_id,
|
||||
data.picture_at,
|
||||
data.cam,
|
||||
data.file.filename,
|
||||
data.file.url,
|
||||
now,
|
||||
]
|
||||
const insR = await db.query(insQ, insD)
|
||||
|
||||
apiRes = JSON.parse(JSON.stringify(response[200]))
|
||||
|
||||
@ -144,7 +144,11 @@ class GpsTracksModels {
|
||||
let resLogs = undefined
|
||||
|
||||
if (Object.keys(logs).length > 0) {
|
||||
resLogs = await MysqlHelpers.queryTrx(conn, `INSERT INTO t_gps_tracks SET ?;`, [logs])
|
||||
resLogs = await MysqlHelpers.queryTrx(
|
||||
conn,
|
||||
`INSERT INTO t_gps_tracks SET ?;`,
|
||||
[logs],
|
||||
)
|
||||
// console.log("insert t_gps_tracks : " + rltm.device_id)
|
||||
|
||||
if (logs.action == "location") {
|
||||
@ -158,52 +162,63 @@ class GpsTracksModels {
|
||||
INSERT INTO tracks_${yy}${mm}
|
||||
SET ?
|
||||
`,
|
||||
[logs]
|
||||
[logs],
|
||||
)
|
||||
// console.log("insert tracks_${yy}${mm} : " + rltm.device_id)
|
||||
}
|
||||
}
|
||||
|
||||
if (rltmLength > 0 && typeof resLogs !== "undefined") rltm.master_id = resLogs.insertId
|
||||
if (rltmLength > 0 && rltm.latitude !== null && rltm.longitude !== null) {
|
||||
if (rltmLength > 0 && typeof resLogs !== "undefined")
|
||||
rltm.master_id = resLogs.insertId
|
||||
if (
|
||||
rltmLength > 0 &&
|
||||
rltm.latitude !== null &&
|
||||
rltm.longitude !== null
|
||||
) {
|
||||
let devices = await MysqlHelpers.queryTrx(
|
||||
conn,
|
||||
`SELECT id FROM t_gps_tracks_rltm as rltm WHERE rltm.device_id = ?`,
|
||||
[rltm.device_id]
|
||||
[rltm.device_id],
|
||||
)
|
||||
if (devices.length > 1)
|
||||
await MysqlHelpers.queryTrx(conn, `DELETE from t_gps_tracks_rltm WHERE device_id = ?;`, [
|
||||
rltm.device_id,
|
||||
])
|
||||
await MysqlHelpers.queryTrx(
|
||||
conn,
|
||||
`DELETE from t_gps_tracks_rltm WHERE device_id = ?;`,
|
||||
[rltm.device_id],
|
||||
)
|
||||
|
||||
if (rltm.vhc_id != 0) {
|
||||
let vhcs = await MysqlHelpers.queryTrx(
|
||||
conn,
|
||||
`SELECT id FROM t_gps_tracks_rltm as rltm WHERE rltm.vhc_id = ?`,
|
||||
[rltm.vhc_id]
|
||||
[rltm.vhc_id],
|
||||
)
|
||||
if (vhcs.length > 1)
|
||||
await MysqlHelpers.queryTrx(conn, `DELETE from t_gps_tracks_rltm WHERE vhc_id = ?;`, [
|
||||
rltm.vhc_id,
|
||||
])
|
||||
await MysqlHelpers.queryTrx(
|
||||
conn,
|
||||
`DELETE from t_gps_tracks_rltm WHERE vhc_id = ?;`,
|
||||
[rltm.vhc_id],
|
||||
)
|
||||
}
|
||||
|
||||
if (rltm.drv_id != 0) {
|
||||
let drvs = await MysqlHelpers.queryTrx(
|
||||
conn,
|
||||
`SELECT id FROM t_gps_tracks_rltm as rltm WHERE rltm.drv_id = ?`,
|
||||
[rltm.drv_id]
|
||||
[rltm.drv_id],
|
||||
)
|
||||
if (drvs.length > 1)
|
||||
await MysqlHelpers.queryTrx(conn, `DELETE from t_gps_tracks_rltm WHERE drv_id = ?;`, [
|
||||
rltm.drv_id,
|
||||
])
|
||||
await MysqlHelpers.queryTrx(
|
||||
conn,
|
||||
`DELETE from t_gps_tracks_rltm WHERE drv_id = ?;`,
|
||||
[rltm.drv_id],
|
||||
)
|
||||
}
|
||||
|
||||
await MysqlHelpers.queryTrx(
|
||||
conn,
|
||||
`INSERT INTO t_gps_tracks_rltm SET ? ON DUPLICATE KEY UPDATE ?;`,
|
||||
[rltm, rltm]
|
||||
[rltm, rltm],
|
||||
)
|
||||
}
|
||||
|
||||
@ -264,7 +279,8 @@ class GpsTracksModels {
|
||||
static async get2LastDevice(device_id) {
|
||||
return new Promise((resolve, reject) => {
|
||||
let params = []
|
||||
let query = "SELECT * FROM t_gps_tracks WHERE device_id = ? ORDER BY id DESC LIMIT 1"
|
||||
let query =
|
||||
"SELECT * FROM t_gps_tracks WHERE device_id = ? ORDER BY id DESC LIMIT 1"
|
||||
params.push(device_id)
|
||||
db.query(query, params, function (err, resp) {
|
||||
if (err) {
|
||||
@ -294,6 +310,23 @@ class GpsTracksModels {
|
||||
})
|
||||
})
|
||||
}
|
||||
static async get2LastLocByVhcId(vhc_id) {
|
||||
return new Promise((resolve, reject) => {
|
||||
let params = []
|
||||
// let query = 'SELECT * FROM t_gps_tracks WHERE device_id = ? AND latitude is not null AND longitude != 0 ORDER BY id DESC LIMIT 1';
|
||||
let query =
|
||||
'SELECT * FROM t_gps_tracks WHERE action IN ("location","alarm") AND vhc_id = ? AND latitude is not null AND longitude != 0 ORDER BY id DESC LIMIT 1' // kalo gamau ngambil data heartbeat(idling)
|
||||
params.push(vhc_id)
|
||||
db.query(query, params, function (err, resp) {
|
||||
if (err) {
|
||||
reject(err)
|
||||
return false
|
||||
}
|
||||
resolve(resp)
|
||||
return true
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
static async getLastSumMileage(device_id) {
|
||||
return new Promise((resolve, reject) => {
|
||||
@ -377,7 +410,12 @@ class GpsTracksModels {
|
||||
})
|
||||
}
|
||||
|
||||
static async checkSttsEngineBetweenDate(device_id, stts_engine, start, end) {
|
||||
static async checkSttsEngineBetweenDate(
|
||||
device_id,
|
||||
stts_engine,
|
||||
start,
|
||||
end,
|
||||
) {
|
||||
return new Promise((resolve, reject) => {
|
||||
let params = []
|
||||
let query =
|
||||
|
||||
Reference in New Issue
Block a user