|
@@ -815,7 +815,8 @@ export class TaskService implements OnModuleInit {
|
|
|
totalHoursYesterday: 0,
|
|
totalHoursYesterday: 0,
|
|
|
totalHoursToday: 0,
|
|
totalHoursToday: 0,
|
|
|
orderCountYesterday: 0,
|
|
orderCountYesterday: 0,
|
|
|
- orderCountToday: 0
|
|
|
|
|
|
|
+ orderCountToday: 0,
|
|
|
|
|
+ hourData: 0
|
|
|
}
|
|
}
|
|
|
await Promise.all([
|
|
await Promise.all([
|
|
|
(async () => {
|
|
(async () => {
|
|
@@ -841,12 +842,33 @@ export class TaskService implements OnModuleInit {
|
|
|
.getRawOne()
|
|
.getRawOne()
|
|
|
res.orderCountToday = todayOrderCount.sum
|
|
res.orderCountToday = todayOrderCount.sum
|
|
|
} catch (e) {}
|
|
} catch (e) {}
|
|
|
|
|
+ })(),
|
|
|
|
|
+ (async () => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ res.hourData = await this.sentHourStatistics()
|
|
|
|
|
+ } catch (e) {}
|
|
|
})()
|
|
})()
|
|
|
])
|
|
])
|
|
|
|
|
|
|
|
return res
|
|
return res
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ async sentHourStatistics() {
|
|
|
|
|
+ const result = await this.taskItemRepository.query(`
|
|
|
|
|
+ SELECT SUM(c) / 60 AS hour
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT 1 AS c, UNIX_TIMESTAMP(sendAt) DIV 60 * 60 AS "time"
|
|
|
|
|
+ FROM task_item
|
|
|
|
|
+ WHERE sendAt >= CURDATE() - INTERVAL 1 DAY
|
|
|
|
|
+ AND sendAt < CURDATE()
|
|
|
|
|
+ AND status != 'idle'
|
|
|
|
|
+ GROUP BY time
|
|
|
|
|
+ ) tmp
|
|
|
|
|
+ `)
|
|
|
|
|
+
|
|
|
|
|
+ return Number(result[0]?.hour) || 0
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
async sentCountryStatistics(req: any) {
|
|
async sentCountryStatistics(req: any) {
|
|
|
let where = {}
|
|
let where = {}
|
|
|
if (req.user.roles.includes('api') || req.user.roles.includes('superApi')) {
|
|
if (req.user.roles.includes('api') || req.user.roles.includes('superApi')) {
|
|
@@ -900,6 +922,83 @@ export class TaskService implements OnModuleInit {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ async backupStatistics() {
|
|
|
|
|
+ const res = {
|
|
|
|
|
+ todayData: null,
|
|
|
|
|
+ totalData: null,
|
|
|
|
|
+ yesterdayData: null
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ await Promise.all([
|
|
|
|
|
+ (async () => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ // 总备份数量,剩余未使用备份数量
|
|
|
|
|
+ res.totalData = await this.rcsNumberRepository
|
|
|
|
|
+ .createQueryBuilder()
|
|
|
|
|
+ .select('COUNT(1)', 'count')
|
|
|
|
|
+ .addSelect('stockFlag', 'stockFlag')
|
|
|
|
|
+ .where('stockFlag IN (:...stockFlags)', { stockFlags: [1, 2, 3] })
|
|
|
|
|
+ .groupBy('stockFlag')
|
|
|
|
|
+ .getRawMany()
|
|
|
|
|
+ } catch (e) {
|
|
|
|
|
+ console.log(e)
|
|
|
|
|
+ }
|
|
|
|
|
+ })(),
|
|
|
|
|
+ (async () => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ // 昨日备份使用成功数量,失败数量
|
|
|
|
|
+ res.yesterdayData = await this.rcsNumberRepository
|
|
|
|
|
+ .createQueryBuilder()
|
|
|
|
|
+ .select('COUNT(1)', 'count')
|
|
|
|
|
+ .addSelect('stockFlag', 'stockFlag')
|
|
|
|
|
+ .where('createdAt >= CURDATE() - INTERVAL 1 DAY')
|
|
|
|
|
+ .andWhere('createdAt < CURDATE()')
|
|
|
|
|
+ .andWhere('stockFlag IN (:...stockFlags)', { stockFlags: [1, 2, 3] })
|
|
|
|
|
+ .groupBy('stockFlag')
|
|
|
|
|
+ .getRawMany()
|
|
|
|
|
+ } catch (e) {
|
|
|
|
|
+ console.log(e)
|
|
|
|
|
+ }
|
|
|
|
|
+ })(),
|
|
|
|
|
+ (async () => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ // 当天备份数量
|
|
|
|
|
+ res.todayData = await this.rcsNumberRepository
|
|
|
|
|
+ .createQueryBuilder()
|
|
|
|
|
+ .select('COUNT(1)', 'count')
|
|
|
|
|
+ .addSelect('stockFlag', 'stockFlag')
|
|
|
|
|
+ .where('createdAt >= CURDATE()')
|
|
|
|
|
+ .andWhere('stockFlag IN (:...stockFlags)', { stockFlags: [1, 2, 3] })
|
|
|
|
|
+ .groupBy('stockFlag')
|
|
|
|
|
+ .getRawMany()
|
|
|
|
|
+ } catch (e) {
|
|
|
|
|
+ console.log(e)
|
|
|
|
|
+ }
|
|
|
|
|
+ })()
|
|
|
|
|
+ ])
|
|
|
|
|
+
|
|
|
|
|
+ return [
|
|
|
|
|
+ {
|
|
|
|
|
+ flag: '剩余备份',
|
|
|
|
|
+ yesterday: res.yesterdayData?.find((item) => item.stockFlag === 1)?.count ?? 0,
|
|
|
|
|
+ today: res.todayData?.find((item) => item.stockFlag === 1)?.count ?? 0,
|
|
|
|
|
+ total: res.totalData?.find((item) => item.stockFlag === 1)?.count ?? 0
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ flag: '使用成功',
|
|
|
|
|
+ yesterday: res.yesterdayData?.find((item) => item.stockFlag === 2)?.count ?? 0,
|
|
|
|
|
+ today: res.todayData?.find((item) => item.stockFlag === 2)?.count ?? 0,
|
|
|
|
|
+ total: res.totalData?.find((item) => item.stockFlag === 2)?.count ?? 0
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ flag: '使用失败',
|
|
|
|
|
+ yesterday: res.yesterdayData?.find((item) => item.stockFlag === 3)?.count ?? 0,
|
|
|
|
|
+ today: res.todayData?.find((item) => item.stockFlag === 3)?.count ?? 0,
|
|
|
|
|
+ total: res.totalData?.find((item) => item.stockFlag === 3)?.count ?? 0
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
async getSuccessNum(id: number) {
|
|
async getSuccessNum(id: number) {
|
|
|
return await this.taskItemRepository.count({
|
|
return await this.taskItemRepository.count({
|
|
|
where: {
|
|
where: {
|