3 changed files with 0 additions and 228 deletions
@ -1,208 +0,0 @@ |
|||||
const fs = require('fs'); |
|
||||
const moment = require('moment') |
|
||||
const path = require('path') |
|
||||
const OSS = require('ali-oss'); |
|
||||
const uuid = require('uuid'); |
|
||||
|
|
||||
const TEST = false |
|
||||
// const TEST = true
|
|
||||
|
|
||||
module.exports = function (app, opts) { |
|
||||
const hideDangerStatistic = app.fs.scheduleInit( |
|
||||
// 按月、季度、年统计隐患整改
|
|
||||
{ |
|
||||
interval: '0 32 4 1 */1 *', |
|
||||
immediate: TEST, |
|
||||
proRun: !TEST, |
|
||||
}, |
|
||||
async () => { |
|
||||
const { aliOss } = opts |
|
||||
const { utils: { simpleExcelDown } } = app.fs; |
|
||||
|
|
||||
try { |
|
||||
const { models } = app.fs.dc |
|
||||
const today = moment() |
|
||||
const date = today.date() |
|
||||
const month = today.month() + 1 |
|
||||
const quarter = today.quarter() |
|
||||
const year = today.year() |
|
||||
|
|
||||
const client = new OSS({ |
|
||||
// yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
|
|
||||
region: aliOss.region, |
|
||||
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
|
|
||||
accessKeyId: aliOss.accessKey, |
|
||||
accessKeySecret: aliOss.secretKey, |
|
||||
// 填写Bucket名称,例如examplebucket。
|
|
||||
bucket: aliOss.bucket, |
|
||||
}); |
|
||||
|
|
||||
|
|
||||
const statistic = async (startTime, endTime, type, timeShow, typeEnglish, time) => { |
|
||||
const siteRectifyRes = await models.HideDangerRectifySites.findAll({ |
|
||||
where: {}, |
|
||||
distinct: true, |
|
||||
include: [{ |
|
||||
model: models.Site, |
|
||||
attributes: ['id', 'name'], |
|
||||
}, { |
|
||||
model: models.HideDangerDispose, |
|
||||
order: [['id', 'ASC']], |
|
||||
// include: [{
|
|
||||
// model: models.User,
|
|
||||
// attributes: ['id', 'displayName'],
|
|
||||
// }]
|
|
||||
}, { |
|
||||
model: models.HideDangerRectify, |
|
||||
where: { |
|
||||
createTime: { |
|
||||
$between: [ |
|
||||
startTime.format('YYYY-MM-DD HH:mm:ss'), |
|
||||
endTime.format('YYYY-MM-DD HH:mm:ss') |
|
||||
] |
|
||||
} |
|
||||
}, |
|
||||
},] |
|
||||
}) |
|
||||
|
|
||||
let reportHeader = [{ |
|
||||
title: "工程项目名称", |
|
||||
key: "siteName", |
|
||||
}, { |
|
||||
title: "整改任务名称", |
|
||||
key: "name", |
|
||||
}, { |
|
||||
title: "提交时间", |
|
||||
key: "submitTime", |
|
||||
}, { |
|
||||
title: "审批状态", |
|
||||
key: "state", |
|
||||
},] |
|
||||
let reportData = [] |
|
||||
|
|
||||
let siteMap = new Set() |
|
||||
let completedRectifyCount = 0 |
|
||||
let uncompletedRectifyCount = 0 |
|
||||
for (let s of siteRectifyRes) { |
|
||||
siteMap.add(s.siteId); |
|
||||
|
|
||||
let sts = s.status |
|
||||
let stsChinese = '' |
|
||||
if (sts == 0) { |
|
||||
stsChinese = '待整改' |
|
||||
} else if (sts == 1) { |
|
||||
stsChinese = '待审批' |
|
||||
} else if (sts == 2) { |
|
||||
stsChinese = '待复审' |
|
||||
} else if (sts == 3 || sts == 4) { |
|
||||
stsChinese = '审批驳回' |
|
||||
} else if (sts == 5) { |
|
||||
stsChinese = '审批通过' |
|
||||
} |
|
||||
|
|
||||
if ( |
|
||||
s.hideDangerDisposes.length |
|
||||
&& s.hideDangerDisposes.some(sd => sd.type == 3 && sd.admit) |
|
||||
) { |
|
||||
completedRectifyCount++ |
|
||||
} else { |
|
||||
uncompletedRectifyCount++ |
|
||||
} |
|
||||
|
|
||||
reportData.push({ |
|
||||
siteName: s.dataValues.site.dataValues.name, |
|
||||
name: s.dataValues.hideDangerRectify.dataValues.name, |
|
||||
submitTime: s.dataValues.lastDisposeTime ? moment(s.dataValues.lastDisposeTime).format('YYYY-MM-DD HH:mm:ss') : '', |
|
||||
state: stsChinese |
|
||||
}) |
|
||||
} |
|
||||
const fileName = `中鼎国际隐患整改数据报表-${type}-${timeShow}` + '.xlsx' |
|
||||
const filePath = await simpleExcelDown({ |
|
||||
data: reportData, header: reportHeader, fileName |
|
||||
}) |
|
||||
// const fileData = fs.readFileSync(filePath);
|
|
||||
|
|
||||
// 保存文件到云
|
|
||||
|
|
||||
let uploadPath = path.posix.join('hideDangerReport', uuid.v4(), fileName); |
|
||||
let uploadResult = await client.put( |
|
||||
uploadPath, |
|
||||
filePath, |
|
||||
// { contentLength: size }
|
|
||||
); |
|
||||
//保存信息到数据库
|
|
||||
const existReportRes = await models.HideDangerReport.findOne({ |
|
||||
where: { |
|
||||
type: typeEnglish, |
|
||||
time: String(time), |
|
||||
} |
|
||||
}) |
|
||||
const storageData = { |
|
||||
siteCount: siteMap.size, |
|
||||
rectifyCount: completedRectifyCount + uncompletedRectifyCount, |
|
||||
completedRectifyCount, |
|
||||
uncompletedRectifyCount, |
|
||||
report: uploadResult.name, |
|
||||
type: typeEnglish, |
|
||||
time: String(time), |
|
||||
} |
|
||||
if (existReportRes) { |
|
||||
await models.HideDangerReport.update(storageData, { |
|
||||
where: { |
|
||||
id: existReportRes.id |
|
||||
} |
|
||||
}) |
|
||||
} else { |
|
||||
await models.HideDangerReport.create(storageData) |
|
||||
} |
|
||||
|
|
||||
} |
|
||||
|
|
||||
if (month == 1) { |
|
||||
// 统计一下上一年
|
|
||||
let startTime = today.clone().subtract(1, 'year').startOf('year') |
|
||||
let endTime = today.clone().subtract(1, 'year').endOf('year') |
|
||||
await statistic( |
|
||||
startTime, |
|
||||
endTime, |
|
||||
'年报', |
|
||||
`${startTime.year()}${startTime.month() + 1}-${endTime.month() + 1}`, |
|
||||
'year', |
|
||||
startTime.year() |
|
||||
) |
|
||||
} |
|
||||
if ([1, 4, 7, 10].includes(month)) { |
|
||||
// 统计一下上季度
|
|
||||
let startTime = today.clone().subtract(3, 'month').startOf('month') |
|
||||
let endTime = today.clone().subtract(1, 'month').endOf('month') |
|
||||
await statistic( |
|
||||
startTime, |
|
||||
endTime, |
|
||||
'季报', |
|
||||
`${startTime.year()}${startTime.month() + 1}-${endTime.month() + 1}`, |
|
||||
'quarter', |
|
||||
`${startTime.year()}-${month == 1 ? 'Q4' : month == 4 ? 'Q1' : month == 7 ? 'Q2' : 'Q3'}` |
|
||||
) |
|
||||
} |
|
||||
// 统计一下上个月
|
|
||||
let startTime = today.clone().subtract(1, 'month').startOf('month') |
|
||||
let endTime = today.clone().subtract(1, 'month').endOf('month') |
|
||||
await statistic( |
|
||||
startTime, |
|
||||
endTime, |
|
||||
'月报', |
|
||||
`${startTime.year()}${startTime.month() + 1}`, |
|
||||
'month', |
|
||||
startTime.format('YYYY-MM') |
|
||||
) |
|
||||
|
|
||||
} catch (error) { |
|
||||
app.fs.logger.error(`sechedule: hideDangerStatistic, error: ${error}`); |
|
||||
} |
|
||||
} |
|
||||
); |
|
||||
|
|
||||
return { |
|
||||
hideDangerStatistic |
|
||||
} |
|
||||
} |
|
Loading…
Reference in new issue