feat: refs #6275 crea back etExpeditionSummary
gitea/salix/pipeline/head This commit looks good
Details
gitea/salix/pipeline/head This commit looks good
Details
This commit is contained in:
parent
9f5cfd920f
commit
3f7663da97
|
@ -10,5 +10,8 @@
|
||||||
"eslint.format.enable": true,
|
"eslint.format.enable": true,
|
||||||
"[javascript]": {
|
"[javascript]": {
|
||||||
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
|
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
|
||||||
|
},
|
||||||
|
"[json]": {
|
||||||
|
"editor.defaultFormatter": "vscode.json-language-features"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
module.exports = Self => {
|
||||||
|
Self.remoteMethod('getExpeditionSummary', {
|
||||||
|
description: 'Get summary of expeditions for a given route',
|
||||||
|
accepts: [
|
||||||
|
{
|
||||||
|
arg: 'routeFk',
|
||||||
|
type: 'number',
|
||||||
|
required: true,
|
||||||
|
description: 'Foreign key for Route'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
returns: {
|
||||||
|
type: 'object',
|
||||||
|
root: true
|
||||||
|
},
|
||||||
|
http: {
|
||||||
|
path: '/getExpeditionSummary',
|
||||||
|
verb: 'get'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Self.getExpeditionSummary = async(routeFk, options) => {
|
||||||
|
const myOptions = {};
|
||||||
|
|
||||||
|
if (typeof options == 'object')
|
||||||
|
Object.assign(myOptions, options);
|
||||||
|
|
||||||
|
const query = `
|
||||||
|
SELECT routeFk,
|
||||||
|
addressFk,
|
||||||
|
SUM(total) total,
|
||||||
|
SUM(delivery) delivery,
|
||||||
|
SUM(lost) lost,
|
||||||
|
SUM(delivered) delivered,
|
||||||
|
GROUP_CONCAT(totalPacking ORDER BY total DESC SEPARATOR ' ') itemPackingType
|
||||||
|
FROM (
|
||||||
|
SELECT r.id AS routeFk,
|
||||||
|
t.addressFk,
|
||||||
|
CONCAT (IFNULL(e.itemPackingTypeFk,'-'), '', COUNT(*)) totalPacking,
|
||||||
|
COUNT(*) total,
|
||||||
|
SUM(est.code = 'ON DELIVERY') delivery,
|
||||||
|
SUM(est.code = 'LOST') lost,
|
||||||
|
SUM(est.code = 'DELIVERED') delivered,
|
||||||
|
t.priority
|
||||||
|
FROM vn.ticket t
|
||||||
|
JOIN vn.route r ON r.id = t.routeFk
|
||||||
|
JOIN vn.expedition e ON e.ticketFk = t.id
|
||||||
|
LEFT JOIN vn.expeditionStateType est ON est.id = e.stateTypeFk
|
||||||
|
JOIN vn.agencyMode am ON am.id = r.agencyModeFk
|
||||||
|
JOIN vn.agency ag ON ag.id = am.agencyFk
|
||||||
|
LEFT JOIN vn.userConfig uc ON uc.userFk = account.myUser_getId()
|
||||||
|
WHERE (r.created = util.VN_CURDATE() OR r.created = TIMESTAMPADD(day,-1, util.VN_CURDATE()))
|
||||||
|
AND t.routeFk = ?
|
||||||
|
GROUP BY t.addressFk, e.itemPackingTypeFk
|
||||||
|
) sub
|
||||||
|
GROUP BY addressFk
|
||||||
|
ORDER BY priority DESC
|
||||||
|
`;
|
||||||
|
|
||||||
|
const results = await Self.rawSql(query, [routeFk], options);
|
||||||
|
return results;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
|
@ -17,6 +17,7 @@ module.exports = Self => {
|
||||||
require('../methods/route/cmr')(Self);
|
require('../methods/route/cmr')(Self);
|
||||||
require('../methods/route/getExternalCmrs')(Self);
|
require('../methods/route/getExternalCmrs')(Self);
|
||||||
require('../methods/route/downloadCmrsZip')(Self);
|
require('../methods/route/downloadCmrsZip')(Self);
|
||||||
|
require('../methods/route/getExpeditionSummary')(Self);
|
||||||
|
|
||||||
Self.validate('kmStart', validateDistance, {
|
Self.validate('kmStart', validateDistance, {
|
||||||
message: 'Distance must be lesser than 1000'
|
message: 'Distance must be lesser than 1000'
|
||||||
|
@ -31,5 +32,5 @@ module.exports = Self => {
|
||||||
const routeMaxKm = 1000;
|
const routeMaxKm = 1000;
|
||||||
if (routeTotalKm > routeMaxKm || this.kmStart > this.kmEnd)
|
if (routeTotalKm > routeMaxKm || this.kmStart > this.kmEnd)
|
||||||
err();
|
err();
|
||||||
};
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -24,5 +24,12 @@
|
||||||
"userFk": {
|
"userFk": {
|
||||||
"type": "number"
|
"type": "number"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"relations": {
|
||||||
|
"expeditionStateType": {
|
||||||
|
"type": "belongsTo",
|
||||||
|
"model": "ExpeditionStateType",
|
||||||
|
"foreignKey": "typeFk"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
},
|
},
|
||||||
"agencyMode": {
|
"agencyMode": {
|
||||||
"type": "belongsTo",
|
"type": "belongsTo",
|
||||||
"model": "agency-mode",
|
"model": "AgencyMode",
|
||||||
"foreignKey": "agencyModeFk"
|
"foreignKey": "agencyModeFk"
|
||||||
},
|
},
|
||||||
"worker": {
|
"worker": {
|
||||||
|
|
Loading…
Reference in New Issue