我正在构建一个SaaS应用程序,其中产品最后服务日期和下一个服务模式(每周、每月、季度)存储在数据库中,因此我需要从当前日期开始的一年的服务日期,以json格式作为nodejs中的响应。
下面的json格式是存储在数据库中的日期结构,
[{
"ItemName":"Fan",
"LastService":"01-03-2022",
"ServiceMode":"Monthly",
},
{
"ItemName":"AC",
"LastService":"01-04-2022",
"ServiceMode":"Quarterly",
}]
我需要来自节点的输出摘要响应采用以下json格式,当我将当前月份作为请求有效负载发送时。
[{
"ItemName":"Fan",
"ServiceMode":"Monthly",
"NextServices":["01-10-2022","01-11-2022","01-12-2022","01-01-2023","01-02-2023","01-03-2023","01-04-2023",
"01-05-2023","01-06-2023","01-06-2023","01-07-2023","01-08-2023","01-09-2023",],
},
{
"ItemName":"AC",
"ServiceMode":"Quarterly",
"NextServices":["01-07-2022","01-10-2022","01-01-2023","01-04-2023"],
}]
技术Node.js,Mongo,快递
发布于 2022-10-17 05:33:22
let data = [
{
ItemName: "Fan",
LastService: "01-03-2022",
ServiceMode: "Monthly"
},
{
ItemName: "AC",
LastService: "03-04-2022",
ServiceMode: "Quarterly"
}
];
let months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
for (let i = 0; i < data.length; i++) {
let checkMonth = (new Date(data[i].LastService)).getMonth();
// console.log({checkMonth})
if (data[i].ServiceMode === "Monthly") {
let NextServices = [];
let curYearMonths = months.slice(checkMonth + 1);
let nextYearmonths = months.slice(0, checkMonth + 1);
curYearMonths.forEach(item => {
let validMonth = ('' + (months.indexOf(item) + 1)).length > 1 ? months.indexOf(item) + 1 : '0' + (months.indexOf(item) + 1);
NextServices.push(validMonth + data[i].LastService.slice(2));
});
nextYearmonths.forEach(item => {
let lastIndexLength = data[i].LastService.length;
let validMonth = ('' + (months.indexOf(item) + 1)).length > 1 ? months.indexOf(item) + 1 : '0' + (months.indexOf(item) + 1);
let validYear = data[i].LastService.slice(0, lastIndexLength - 1) + (parseInt(data[i].LastService.slice(-1)) + 1);
console.log(validYear)
NextServices.push(validMonth + validYear.slice(2));
})
data[i].NextServices = NextServices;
} else {
let NextServices = [];
let curYearMonths = months.slice(checkMonth + 1).filter((item, index) => index % 3 == 0);
curYearMonths.forEach(item => {
let validMonth = ('' + (months.indexOf(item) + 1)).length > 1 ? months.indexOf(item) + 1 : '0' + (months.indexOf(item) + 1);
NextServices.push(validMonth + data[i].LastService.slice(2));
});
let nextYearmonths = [...months.slice(checkMonth + 1), ...months.slice(0, checkMonth + 1)].filter((item, index) => index % 3 == 0);
nextYearmonths = nextYearmonths.filter(item => !curYearMonths.includes(item));
nextYearmonths.forEach(item => {
let lastIndexLength = data[i].LastService.length;
let validMonth = ('' + (months.indexOf(item) + 1)).length > 1 ? months.indexOf(item) + 1 : '0' + (months.indexOf(item) + 1);
let validYear = data[i].LastService.slice(0, lastIndexLength - 1) + (parseInt(data[i].LastService.slice(-1)) + 1);
NextServices.push(validMonth + validYear.slice(2));
})
data[i].NextServices = NextServices;
}
};
console.log(data);
https://stackoverflow.com/questions/74091917
复制相似问题