每日自动推送未处理供应商,增加处理截止时间和截图上传。 Co-authored-by: 苏木 <594326199@qq.com> Co-committed-by: 苏木 <594326199@qq.com>
157 lines
6.0 KiB
PHP
157 lines
6.0 KiB
PHP
<?php
|
||
|
||
namespace App\Console;
|
||
|
||
use Illuminate\Console\Scheduling\Schedule;
|
||
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
|
||
|
||
class Kernel extends ConsoleKernel
|
||
{
|
||
/**
|
||
* The Artisan commands provided by your application.
|
||
*
|
||
* @var array
|
||
*/
|
||
protected $commands = [];
|
||
|
||
/**
|
||
* Define the application's command schedule.
|
||
*
|
||
* @param \Illuminate\Console\Scheduling\Schedule $schedule
|
||
* @return void
|
||
*/
|
||
protected function schedule(Schedule $schedule)
|
||
{
|
||
// Not installed yet
|
||
if (!config('app.installed')) {
|
||
return;
|
||
}
|
||
|
||
$schedule_time = config('app.schedule_time');
|
||
|
||
$schedule->command('reminder:invoice')->dailyAt($schedule_time);
|
||
$schedule->command('reminder:bill')->dailyAt($schedule_time);
|
||
$schedule->command('recurring:check')->dailyAt($schedule_time)->runInBackground();
|
||
$schedule->command('storage-temp:clear')->dailyAt('17:00');
|
||
$schedule->command('model:prune')->dailyAt('17:00');
|
||
|
||
// 线上代发价格:每天凌晨 05:00 刷新钉钉审批、采购单和订单关联镜像。
|
||
// 生产环境由 business-mirror:sync-tables 的 cron 持续增量覆盖,此处保证
|
||
// 一个固定的每日刷新入口;命令本身在非刷新环境会安全跳过。
|
||
$schedule->command('business-mirror:sync-ding-online-daifa-price')
|
||
->dailyAt('05:00')
|
||
->withoutOverlapping(60)
|
||
->runInBackground();
|
||
|
||
$schedule->command('business-mirror:sync-product-purchase-prices')
|
||
->dailyAt('05:00')
|
||
->withoutOverlapping(60)
|
||
->runInBackground();
|
||
|
||
$schedule->command('business-mirror:sync-tables operations_replica.rpt.jst_Orders')
|
||
->dailyAt('05:00')
|
||
->withoutOverlapping(60)
|
||
->runInBackground();
|
||
|
||
// 上游店铺档案每日刷新后留存一份完整基础信息,方便按日期复查负责人等字段。
|
||
$schedule->command('business-mirror:archive-store-information')
|
||
->dailyAt('07:00')
|
||
->timezone('Asia/Shanghai')
|
||
->withoutOverlapping(120)
|
||
->runInBackground();
|
||
|
||
$schedule->command('business-mirror:sync-supplier-management')
|
||
->dailyAt('08:15')
|
||
->timezone('Asia/Shanghai')
|
||
->withoutOverlapping(60)
|
||
->runInBackground();
|
||
|
||
// 店铺违规信息预警:每天同步副本库抓取结果到统一表(本地补充字段不覆盖)。
|
||
$schedule->command('store-violations:sync')
|
||
->dailyAt('05:30')
|
||
->withoutOverlapping(60)
|
||
->runInBackground();
|
||
|
||
// 店铺违规预警推送:P0/P1 每天 09:00 起每 5 分钟检查;P2 每日 10:00 汇总。
|
||
$schedule->command('store-violations:push-instant')
|
||
->cron('*/5 9-21 * * *')
|
||
->withoutOverlapping(5)
|
||
->runInBackground();
|
||
|
||
$schedule->command('store-violations:push-digest')
|
||
->dailyAt('10:00')
|
||
->withoutOverlapping(30)
|
||
->runInBackground();
|
||
|
||
// 供应商负数预警:每天 10:00 仅推送最新账期内尚未处理的供应商。
|
||
$schedule->command('supplier-negative-alert:push-dingtalk')
|
||
->dailyAt('10:00')
|
||
->timezone('Asia/Shanghai')
|
||
->withoutOverlapping(60)
|
||
->appendOutputTo(storage_path('logs/supplier-negative-alert-dingtalk.log'))
|
||
->runInBackground();
|
||
|
||
// 财务台账:从 AI 库 rpt 同步动账明细,按日重算账户流水。
|
||
// 生产宿主机 cron 仍需配置对应的 finance-ledger:sync-rpt 入口。
|
||
$schedule->command('finance-ledger:sync-rpt --days=7 --merge')
|
||
->dailyAt('02:30')
|
||
->timezone('Asia/Shanghai')
|
||
->withoutOverlapping(120)
|
||
->runInBackground();
|
||
|
||
$schedule->command('business-mirror:sync-third-party-warehouse-storage --max-batches=0')
|
||
->dailyAt('00:00')
|
||
->withoutOverlapping(180)
|
||
->runInBackground();
|
||
|
||
if ((bool) config('services.esign.polling_enabled', false)) {
|
||
$schedule->command('esign:poll-signatures --quiet')
|
||
->cron('*/2 * * * *')
|
||
->withoutOverlapping(5)
|
||
->runInBackground();
|
||
}
|
||
|
||
// 聚水潭发货数据:凌晨重拉最近 40 天。聚水潭常在发货后数天到数周内换单/改快递公司/作废采购退货出库,
|
||
// 只拉最近几天会让上月数据停在旧值(快递名称不一致、已作废的单仍在);40 天覆盖上月结算期。
|
||
// 默认关闭(JST_SYNC_ENABLED=false);填好凭证并完成迁移后再打开。
|
||
if ((bool) env('JST_SYNC_ENABLED', false)) {
|
||
$schedule->command('jushuitan:sync-shipping --days=40')
|
||
->dailyAt('01:28')
|
||
->withoutOverlapping(300)
|
||
->appendOutputTo(storage_path('logs/jst-sync-shipping.log'))
|
||
->runInBackground();
|
||
// 凌晨副本库最近一两天的商品明细常未到齐(出库单常在发货次日下午才确认,视图随后才有商品);
|
||
// 白天副本库负载高、查询常超时断开,补拉放到晚上:每天 21:28 再拉最近 3 天,
|
||
// 补齐凌晨只写入单号、缺商品明细的包裹。
|
||
$schedule->command('jushuitan:sync-shipping --days=3')
|
||
->dailyAt('21:28')
|
||
->withoutOverlapping(120)
|
||
->appendOutputTo(storage_path('logs/jst-sync-shipping.log'))
|
||
->runInBackground();
|
||
}
|
||
|
||
}
|
||
|
||
/**
|
||
* Register the Closure based commands for the application.
|
||
*
|
||
* @return void
|
||
*/
|
||
protected function commands()
|
||
{
|
||
require base_path('routes/console.php');
|
||
|
||
$this->load(__DIR__ . '/Commands');
|
||
}
|
||
|
||
/**
|
||
* Get the timezone that should be used by default for scheduled events.
|
||
*
|
||
* @return \DateTimeZone|string|null
|
||
*/
|
||
protected function scheduleTimezone()
|
||
{
|
||
return config('app.timezone');
|
||
}
|
||
}
|