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,
|
||||
"[javascript]": {
|
||||
"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/getExternalCmrs')(Self);
|
||||
require('../methods/route/downloadCmrsZip')(Self);
|
||||
require('../methods/route/getExpeditionSummary')(Self);
|
||||
|
||||
Self.validate('kmStart', validateDistance, {
|
||||
message: 'Distance must be lesser than 1000'
|
||||
|
@ -31,5 +32,5 @@ module.exports = Self => {
|
|||
const routeMaxKm = 1000;
|
||||
if (routeTotalKm > routeMaxKm || this.kmStart > this.kmEnd)
|
||||
err();
|
||||
};
|
||||
}
|
||||
};
|
||||
|
|
|
@ -24,5 +24,12 @@
|
|||
"userFk": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"relations": {
|
||||
"expeditionStateType": {
|
||||
"type": "belongsTo",
|
||||
"model": "ExpeditionStateType",
|
||||
"foreignKey": "typeFk"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
},
|
||||
"agencyMode": {
|
||||
"type": "belongsTo",
|
||||
"model": "agency-mode",
|
||||
"model": "AgencyMode",
|
||||
"foreignKey": "agencyModeFk"
|
||||
},
|
||||
"worker": {
|
||||
|
|
Loading…
Reference in New Issue