'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, }