|
|
@@ -14,6 +14,8 @@ import { SysConfigService } from '../sys-config/sys-config.service'
|
|
|
import { Users } from '../users/entities/users.entity'
|
|
|
import { Balance } from '../balance/entities/balance.entities'
|
|
|
import { ta } from 'date-fns/locale'
|
|
|
+import * as ExcelJS from 'exceljs'
|
|
|
+import * as moment from 'moment'
|
|
|
|
|
|
@Injectable()
|
|
|
export class TaskService implements OnModuleInit {
|
|
|
@@ -31,7 +33,8 @@ export class TaskService implements OnModuleInit {
|
|
|
private readonly phoneListService: PhoneListService,
|
|
|
private readonly deviceService: DeviceService,
|
|
|
private readonly sysConfigService: SysConfigService
|
|
|
- ) {}
|
|
|
+ ) {
|
|
|
+ }
|
|
|
|
|
|
onModuleInit() {
|
|
|
this.taskRepository.update({ status: TaskStatus.PENDING }, { status: TaskStatus.IDLE })
|
|
|
@@ -138,15 +141,47 @@ export class TaskService implements OnModuleInit {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- async getExportTaskItem(id: number) {
|
|
|
- // 查询数据
|
|
|
+ async exportTaskItem(taskId: number) {
|
|
|
+ const workbook = new ExcelJS.Workbook()
|
|
|
+ const worksheet = workbook.addWorksheet('Sheet1')
|
|
|
+
|
|
|
const taskItems = await this.taskItemRepository.find({
|
|
|
where: {
|
|
|
- taskId: id
|
|
|
+ taskId: taskId
|
|
|
}
|
|
|
})
|
|
|
|
|
|
- return taskItems
|
|
|
+ // 设置列头
|
|
|
+ worksheet.columns = [
|
|
|
+ { header: '手机号', key: 'number', width: 30, style: { alignment: { horizontal: 'center' } } },
|
|
|
+ { header: '是否有效', key: 'isValid', width: 15, style: { alignment: { horizontal: 'center' } } },
|
|
|
+ { header: '发送成功', key: 'status', width: 15, style: { alignment: { horizontal: 'center' } } },
|
|
|
+ {
|
|
|
+ header: '发送时间',
|
|
|
+ key: 'sendAt',
|
|
|
+ width: 30,
|
|
|
+ style: { alignment: { horizontal: 'center' }, numFmt: 'YYYY-MM-DD HH:mm:ss' }
|
|
|
+ }
|
|
|
+ ]
|
|
|
+
|
|
|
+ taskItems.forEach(item => {
|
|
|
+ let valid = '有效'
|
|
|
+ let status = '发送成功'
|
|
|
+ const sendAt: Date = item.sendAt
|
|
|
+ const formattedSendAt = moment(sendAt).format('YYYY-MM-DD HH:mm:ss');
|
|
|
+ if (item.status === TaskItemStatus.FAIL) {
|
|
|
+ valid = '无效'
|
|
|
+ status = ''
|
|
|
+ }
|
|
|
+ worksheet.addRow({
|
|
|
+ number: item.number,
|
|
|
+ isValid: valid,
|
|
|
+ status: status,
|
|
|
+ sendAt: formattedSendAt
|
|
|
+ })
|
|
|
+ })
|
|
|
+
|
|
|
+ return await workbook.xlsx.writeBuffer()
|
|
|
}
|
|
|
|
|
|
async runTask(task: Task) {
|
|
|
@@ -253,7 +288,10 @@ export class TaskService implements OnModuleInit {
|
|
|
Logger.error('Task timeout', 'RcsService')
|
|
|
await this.taskItemRepository.update(
|
|
|
taskItems.map((i) => i.id),
|
|
|
- { status: TaskItemStatus.FAIL }
|
|
|
+ {
|
|
|
+ status: TaskItemStatus.FAIL,
|
|
|
+ sendAt: new Date()
|
|
|
+ }
|
|
|
)
|
|
|
} else {
|
|
|
Logger.log(
|
|
|
@@ -261,10 +299,16 @@ export class TaskService implements OnModuleInit {
|
|
|
'RcsService'
|
|
|
)
|
|
|
if (res.success?.length > 0) {
|
|
|
- await this.taskItemRepository.update(res.success, { status: TaskItemStatus.SUCCESS })
|
|
|
+ await this.taskItemRepository.update(res.success, {
|
|
|
+ status: TaskItemStatus.SUCCESS,
|
|
|
+ sendAt: new Date()
|
|
|
+ })
|
|
|
}
|
|
|
if (res.fail?.length > 0) {
|
|
|
- await this.taskItemRepository.update(res.fail, { status: TaskItemStatus.FAIL })
|
|
|
+ await this.taskItemRepository.update(res.fail, {
|
|
|
+ status: TaskItemStatus.FAIL,
|
|
|
+ sendAt: new Date()
|
|
|
+ })
|
|
|
}
|
|
|
}
|
|
|
})
|