You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
2.1 KiB
60 lines
2.1 KiB
'use strict';
|
|
|
|
'use strict';
|
|
const moment = require('moment');
|
|
const { QueryTypes } = require('sequelize');
|
|
|
|
async function getLastMonthCost(ctx) {
|
|
let rslt = [];
|
|
try {
|
|
const startTime = new Date(moment().startOf('year')), endTime = new Date(moment().endOf('year').valueOf());
|
|
const models = ctx.fs.dc.models;
|
|
const costList = await models.RoadMaintenanceCost.findAll({
|
|
where: {
|
|
maintenanceDate: { '$between': [startTime, endTime] }
|
|
}
|
|
})
|
|
if (!costList || !costList.length) {
|
|
const dataList = await models.RoadMaintenance.findAll();
|
|
for (var i = 0; i < 12; i++) {
|
|
dataList.map(item => {
|
|
const { countyHighway, townshipRoad, villageRoad, responsibleUnitForManagementAndMaintenance } = item;
|
|
const randomNum = 0.1 * (0.8 + Math.random() / 2);
|
|
const dateTime = new Date(moment().month(i));
|
|
|
|
let data = {
|
|
countyName: responsibleUnitForManagementAndMaintenance,
|
|
roadLengthCounty: countyHighway ? countyHighway * randomNum : 0,
|
|
roadLengthTownship: townshipRoad ? townshipRoad * randomNum : 0,
|
|
roadLengthVillage: villageRoad ? villageRoad * randomNum : 0,
|
|
maintenanceDate: dateTime
|
|
}
|
|
data.roadCostCounty = data.roadLengthCounty * 15000 / 12,
|
|
data.roadCostTownship = data.roadLengthTownship * 7500 / 12,
|
|
data.roadCostVillage = data.roadLengthVillage * 3900 / 12;
|
|
|
|
rslt.push(data)
|
|
|
|
models.RoadMaintenanceCost.create(data)
|
|
})
|
|
}
|
|
|
|
} else {
|
|
rslt = costList
|
|
}
|
|
|
|
|
|
ctx.status = 200;
|
|
ctx.body = rslt;
|
|
} catch (error) {
|
|
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
|
|
ctx.status = 400;
|
|
ctx.body = {
|
|
message: typeof error == 'string' ? error : undefined
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
getLastMonthCost,
|
|
}
|