start(); //该期状态改为不在计算中 // Period::updatePeriodIsProcessing($periodNum, Period::NOT_PROCESSING); if (200 == $res['code']) { self::recordCalcAndProcessStatus($periodNum, '业绩单已生成'); \Yii::$app->swooleAsyncTimer->pushAsyncResultToAdmin($params['handleUserId'], "第{$params['periodNum']}期生成业绩单更新成功"); return true; } else { self::recordCalcAndProcessStatus($periodNum, '业绩单生成失败,原因:' . substr($res['msg'],0,1000) ?? ''); \Yii::$app->swooleAsyncTimer->pushAsyncResultToAdmin($params['handleUserId'], "第{$params['periodNum']}期生成业绩单更新失败,原因:" . $res['msg'] ?? '', false); return false; } } //自动执行 public static function actionAutoExec($taskKey): bool { $params = Cache::getAsyncParams($taskKey); $periodNum = $params['periodNum'] ?? 0; //生成业绩单 状态已修改 CalcRecord::record($periodNum, '开始生成业绩单'); //重置业务系统的计算进度标识 \Yii::$app->db->createCommand()->update('AR_PERIOD', ['IS_PERFED' => 0, 'IS_CALCULATED' => 0], 'PERIOD_NUM=' . $periodNum)->execute(); //重置计算系统的计算进度标识 $db = CalcConsole::CALC_DB_NAME; \Yii::$app->$db->createCommand()->update('AR_PERIOD', ['IS_PREPARE' => 0, 'IS_PERFED' => 0, 'IS_CALCULATED' => 0], 'PERIOD_NUM=' . $periodNum)->execute(); $res = (new GeneratePerfOrder($periodNum))->start(); if (200 == $res['code']) { CalcRecord::record($periodNum, '业绩单已生成'); } else { Period::updatePeriodIsProcessing($periodNum, Period::NOT_PROCESSING); CalcRecord::record($periodNum, '第' . $periodNum . '期业绩单生成失败,原因:' . substr($res['msg'],0,100)); return false; } //推送基础数据 CalcRecord::record($periodNum, '开始推送基础数据'); $res = (new PushBaseDataToCalc($periodNum))->start(); if (200 == $res['code']) { CalcRecord::record($periodNum, '基础数据完成推送'); } else { Period::updatePeriodIsProcessing($periodNum, Period::NOT_PROCESSING); CalcRecord::record($periodNum, '第' . $periodNum . '期基础数据推送失败,原因:' . $res['msg']); return false; } //todo 完成需要修改状态 //通知结算系统生成期业绩 CalcRecord::record($periodNum, '开始生成' . $periodNum . '期的期业绩'); \Yii::$app->$db->createCommand()->update('AR_PERIOD', ['IS_PREPARE' => 1], 'PERIOD_NUM=' . $periodNum)->execute(); //todo 完成需要修改状态 //自动监听 拉取期业绩 并计算奖金 // (new PullPerfDataFromCalc($periodNum))->start(); //通知结算系统计算奖金 // \Yii::$app->$db->createCommand()->update('AR_PERIOD', ['IS_PREPARE' => 3], 'PERIOD_NUM=' . $periodNum)->execute(); //自动监听 计算完成 自动拉取奖金结果并修改状态 // (new PullCalcBonusData($period['PERIOD_NUM']))->start(); return true; } //自动计算业绩 public static function actionAutoPerf($taskKey): bool { $params = Cache::getAsyncParams($taskKey); $periodNum = $params['periodNum'] ?? 0; //生成业绩单 状态已修改 CalcRecord::record($periodNum, '开始生成业绩单'); //重置业务系统的计算进度标识 \Yii::$app->db->createCommand()->update('AR_PERIOD', ['IS_PERFED' => 0, 'IS_CALCULATED' => 0], 'PERIOD_NUM=' . $periodNum)->execute(); //重置计算系统的计算进度标识 $db = CalcConsole::CALC_DB_NAME; \Yii::$app->$db->createCommand()->update('AR_PERIOD', ['IS_PREPARE' => 0, 'IS_PERFED' => 0, 'IS_CALCULATED' => 0], 'PERIOD_NUM=' . $periodNum)->execute(); $res = (new GeneratePerfOrder($periodNum))->start(); if (200 == $res['code']) { CalcRecord::record($periodNum, '业绩单已生成'); } else { Period::updatePeriodIsProcessing($periodNum, Period::NOT_PROCESSING); CalcRecord::record($periodNum, '第' . $periodNum . '期业绩单生成失败,原因:' . substr($res['msg'],0,100)); return false; } //推送基础数据 CalcRecord::record($periodNum, '开始推送基础数据'); $res = (new PushBaseDataToCalc($periodNum))->start(); if (200 == $res['code']) { CalcRecord::record($periodNum, '基础数据完成推送'); } else { Period::updatePeriodIsProcessing($periodNum, Period::NOT_PROCESSING); CalcRecord::record($periodNum, '第' . $periodNum . '期基础数据推送失败,原因:' . $res['msg']); return false; } //todo 完成需要修改状态 //通知结算系统生成期业绩 CalcRecord::record($periodNum, '开始生成' . $periodNum . '期的期业绩'); \Yii::$app->$db->createCommand()->update('AR_PERIOD', ['IS_PREPARE' => 1], 'PERIOD_NUM=' . $periodNum)->execute(); //todo 完成需要修改状态 //自动监听 拉取期业绩 并计算奖金 // (new PullPerfDataFromCalc($periodNum))->start(); //通知结算系统计算奖金 // \Yii::$app->$db->createCommand()->update('AR_PERIOD', ['IS_PREPARE' => 3], 'PERIOD_NUM=' . $periodNum)->execute(); //自动监听 计算完成 自动拉取奖金结果并修改状态 // (new PullCalcBonusData($period['PERIOD_NUM']))->start(); return true; } public static function recordCalcAndProcessStatus($periodNum, $text) { Period::updatePeriodIsProcessing($periodNum, Period::NOT_PROCESSING); CalcRecord::record($periodNum, $text); return true; } public function actionPushData($taskKey): bool { $params = Cache::getAsyncParams($taskKey); $periodNum = $params['periodNum'] ?? 0; CalcRecord::record($periodNum, '开始推送基础数据'); //推送数据 状态已修改 $res = (new PushBaseDataToCalc($periodNum))->start(); if (200 == $res['code']) { self::recordCalcAndProcessStatus($periodNum, '基础数据已全部推送'); return true; } else { self::recordCalcAndProcessStatus($periodNum, '基础数据推送失败,原因:' . $res['msg'] ?? ''); return false; } } public function actionPullPeriod($taskKey): bool { $params = Cache::getAsyncParams($taskKey); $periodNum = $params['periodNum'] ?? 0; CalcRecord::record($periodNum, '开始拉取期业绩数据'); //推送数据 状态已修改 $res = (new PullPerfDataFromCalc($periodNum))->start(); if (200 == $res['code']) { self::recordCalcAndProcessStatus($periodNum, '期业绩数据已全部拉取'); return true; } else { self::recordCalcAndProcessStatus($periodNum, '期业绩数据拉取失败,原因:' . $res['msg'] ?? ''); return false; } } public function actionPullBonus($taskKey): bool { $params = Cache::getAsyncParams($taskKey); $periodNum = $params['periodNum'] ?? 0; CalcRecord::record($periodNum, '开始拉取奖金数据'); //推送数据 状态已修改 $res = (new PullCalcBonusData($periodNum))->start(); if (200 == $res['code']) { self::recordCalcAndProcessStatus($periodNum, '奖金数据已全部拉取'); return true; } else { self::recordCalcAndProcessStatus($periodNum, '奖金数据拉取失败,原因:' . $res['msg'] ?? ''); return false; } } }