import { FORMAT, ILogger, Inject, Logger } from '@midwayjs/core'; import { IJob, Job } from '@midwayjs/cron'; import { LogisticsService } from '../service/logistics.service'; import { Repository } from 'typeorm'; import { Shipment } from '../entity/shipment.entity'; import { InjectEntityModel } from '@midwayjs/typeorm'; @Job({ cronTime: FORMAT.CRONTAB.EVERY_PER_30_MINUTE, start: true, runOnInit: true, }) export class SyncShipmentJob implements IJob { @Logger() logger: ILogger; @Inject() logisticsService: LogisticsService; onTick() { this.logisticsService.syncShipmentStatus(); this.logisticsService.syncShipment(); } onComplete?(result: any) {} } @Job({ cronTime: '0 0 12 * * *', // 每天12点执行 start: true }) export class SyncUniuniShipmentJob implements IJob{ @Logger() logger: ILogger; @Inject() logisticsService: LogisticsService; @InjectEntityModel(Shipment) shipmentModel: Repository uniuniStateCodes = { '190': 'ORDER_RECEIVED', '192': 'CUSTOM_HOLD', '195': 'GATEWAY_TRANSIT_OUT', '198': 'CUSTOM_RELEASE_DIRECT', '199': 'GATEWAY_TRANSIT', '200': 'PARCEL_SCANNED', '202': 'IN_TRANSIT', '203': 'DELIVERED', '204': 'TRANSSHIPMENT', '206': 'WRONG_ADDRESS_FROM_TRANSIT', '207': 'PARCEL_LOST', '209': 'OTHER_EXCEPTION', '211': 'RETURN_OFFICE_FROM_TRANSIT', '212': 'WRONG_ADDRESS_FROM_RECEIVE', '213': 'STORAGE_30_DAYS_FROM_OFFICE', '214': 'STORAGE_30_DAYS_AFTER_SCAN', '215': 'PARCEL_ABANDONED', '216': 'SELF_PICK_UP', '217': 'TRANSSHIPMENT_COMPLETE', '218': 'SCANNED_PARCEL_MISSING', '219': 'WRONG_ROUTE_PARCEL', '220': 'SECOND_DELIVERY', '221': 'RETURNED_PARCEL_SCANNED', '222': 'REJECTED_PARCEL_FROM_TRANSIT', '223': 'CHANGED_ORDER_RESENT', '224': 'RESENT_ORDER_VOIDED', '225': 'FORWARDED_3RDPARTY', '226': 'STORAGE_3RDPARTY_SERVICE_POINT', '228': 'SECOND_DELIVERED', '229': 'DROP_OFF_SERVICE_POINTS', '230': 'RETURN TO SENDER WAREHOUSE', '231': 'FAILED_DELIVERY_RETRY1', '232': 'FAILED_DELIVERY_RETRY2', '255': 'Gateway_To_Gateway_Transit' }; async onTick() { const shipments:Shipment[] = await this.shipmentModel.findBy({ finished: false }); shipments.forEach(shipment => { this.logisticsService.updateShipmentState(Number(shipment.id)); }); } onComplete(result: any) { } }