add:存管理公司后台任务模板添加,任务下发
This commit is contained in:
parent
ad93d3f05c
commit
5b48be926e
@ -58,6 +58,8 @@ class TaskTemplateController extends BaseAdminController
|
|||||||
if ($company->company_type == 41) {
|
if ($company->company_type == 41) {
|
||||||
// 创建 镇农科公司 任务模板
|
// 创建 镇农科公司 任务模板
|
||||||
$result = TaskTemplateLogic::addTownTaskTemplate($params);
|
$result = TaskTemplateLogic::addTownTaskTemplate($params);
|
||||||
|
} else if ($company->company_type == 17) {
|
||||||
|
$result = TaskTemplateLogic::addVillageTaskTemplate($params);
|
||||||
} else {
|
} else {
|
||||||
$result = TaskTemplateLogic::add($params);
|
$result = TaskTemplateLogic::add($params);
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ use app\common\model\task_scheduling_plan\TaskSchedulingPlan;
|
|||||||
use app\job\TaskInformationJob;
|
use app\job\TaskInformationJob;
|
||||||
use app\job\TownTaskAdd;
|
use app\job\TownTaskAdd;
|
||||||
use app\job\TownTaskSettlementJob;
|
use app\job\TownTaskSettlementJob;
|
||||||
|
use app\job\VillageTaskAdd;
|
||||||
use think\facade\Log;
|
use think\facade\Log;
|
||||||
use app\common\model\Company;
|
use app\common\model\Company;
|
||||||
use app\common\model\task_template\TaskTemplate;
|
use app\common\model\task_template\TaskTemplate;
|
||||||
@ -126,4 +127,35 @@ class CronController extends BaseApiController
|
|||||||
Log::info('镇农科公司定时任务下发执行成功' . date('Y-m-d H:i:s'));
|
Log::info('镇农科公司定时任务下发执行成功' . date('Y-m-d H:i:s'));
|
||||||
return $this->success('镇农科公司定时任务下发执行成功');
|
return $this->success('镇农科公司定时任务下发执行成功');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 村管理公司任务下发
|
||||||
|
*/
|
||||||
|
public function village_task_add()
|
||||||
|
{
|
||||||
|
//任务下发
|
||||||
|
$time = strtotime(date('Y-m-d'));
|
||||||
|
// 查询系统 所有镇农科公司 未下发 的 任务安排
|
||||||
|
$taskSchedulingList = TaskScheduling::where('cron_time', '<', $time)->where('status', 1)->where('company_type', 17)->with('company_info')->select()->toArray();
|
||||||
|
|
||||||
|
$taskSchedulingIds = [];
|
||||||
|
$companyIds = [];
|
||||||
|
foreach ($taskSchedulingList as $k => $taskScheduling) {
|
||||||
|
$templateList = TaskTemplate::where('status', 1)->where('task_scheduling', $taskScheduling['id'])->limit(30)->select()->toArray();
|
||||||
|
$taskSchedulingIds[] = $taskScheduling['id'];
|
||||||
|
$companyIds[] = $taskScheduling['company_id'];
|
||||||
|
foreach ($templateList as $template) {
|
||||||
|
queue(VillageTaskAdd::class, $template);
|
||||||
|
// TaskLogic::TownCronAdd($template); // 手动下发用
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($templateList)) {
|
||||||
|
unset($taskSchedulingList[$k]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Company::where('id', 'in', $companyIds)->inc('day_count')->update();
|
||||||
|
TaskScheduling::where('id', 'in', $taskSchedulingIds)->update(['cron_time' => time()]);
|
||||||
|
Log::info('村管理公司定时任务下发执行成功' . date('Y-m-d H:i:s'));
|
||||||
|
return $this->success('村管理公司定时任务下发执行成功');
|
||||||
|
}
|
||||||
}
|
}
|
@ -296,6 +296,51 @@ class TaskLogic extends BaseLogic
|
|||||||
return $task;
|
return $task;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 定时添加任务
|
||||||
|
*/
|
||||||
|
public static function VillageCronAdd(array $taskTemplate)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
Log::info(['村管理公司定时任务下发-任务模板', $taskTemplate]);
|
||||||
|
// 单次任务不重复下发,在结算时刷新任务时间
|
||||||
|
if ($taskTemplate['types'] == 3) {
|
||||||
|
$task = Task::where('template_id', $taskTemplate['id'])->find();
|
||||||
|
if ($task) {
|
||||||
|
// 累计任务进行天数,单次任务结算时,用于判断任务是否超时
|
||||||
|
TaskTemplate::where('id', $taskTemplate['id'])->inc('day_count')->update();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Db::startTrans();
|
||||||
|
|
||||||
|
$time = strtotime(date('Y-m-d'));
|
||||||
|
$directorUid = 0; // 指派给
|
||||||
|
$marketingManagerUser = (new User())->searchLiaisonMan($taskTemplate['company_id']);
|
||||||
|
Log::info(['村管理公司定时任务下发-村联络员user信息', $marketingManagerUser]);
|
||||||
|
$directorUid = $marketingManagerUser['id'];
|
||||||
|
|
||||||
|
// 添加任务计划
|
||||||
|
$TaskSchedulingPlan = self::addTaskSchedulePlan($taskTemplate, $time);
|
||||||
|
Log::info(['村管理公司定时任务下发-添加plan结果', $TaskSchedulingPlan]);
|
||||||
|
|
||||||
|
// 添加任务
|
||||||
|
$task_id = self::addTask($taskTemplate, $TaskSchedulingPlan, $time, $directorUid);
|
||||||
|
Log::info(['村管理公司定时任务下发-添加task结果', $task_id]);
|
||||||
|
|
||||||
|
// 关联任务计划和任务
|
||||||
|
TaskSchedulingPlan::where('id', $TaskSchedulingPlan['id'])->update(['task_id' => $task_id, 'is_execute' => 1]);
|
||||||
|
|
||||||
|
// 任务累计进行天数 +1
|
||||||
|
TaskTemplate::where('id', $taskTemplate['id'])->inc('day_count')->update();
|
||||||
|
|
||||||
|
Db::commit();
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
Db::rollback();
|
||||||
|
Log::error(['村管理公司定时任务添加失败', $e->getFile(), $e->getLine(), $e->getMessage()]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 定时添加任务
|
* 定时添加任务
|
||||||
*/
|
*/
|
||||||
@ -345,7 +390,7 @@ class TaskLogic extends BaseLogic
|
|||||||
Db::commit();
|
Db::commit();
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
Db::rollback();
|
Db::rollback();
|
||||||
Log::error('定时任务添加失败'.$e->getMessage().'。line:'.$e->getLine());
|
Log::error(['镇农科公司定时任务添加失败', $e->getFile(), $e->getLine(), $e->getMessage()]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -269,6 +269,81 @@ class TaskTemplateLogic extends BaseLogic
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$find = TaskTemplate::where('task_scheduling', $params['task_scheduling'])->where('company_id',$params['company_id'])->where('type',$params['type'])->field('id,types,type')->find();
|
||||||
|
if($find && $params['type'] == $find['type']){
|
||||||
|
self::setError('已经有同一种任务类型了');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$moeny = TaskTemplate::where('company_id', $params['company_id'])->sum('money');
|
||||||
|
if($moeny + $params['money'] > 200){
|
||||||
|
self::setError('任务模板一阶段合计金额不能大于任务调度金额');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$moneyTwo = TaskTemplate::where('company_id', $params['company_id'])->sum('money_two');
|
||||||
|
if($moneyTwo + $params['money_two'] > 200){
|
||||||
|
self::setError('任务模板二阶段合计金额不能大于任务调度金额');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$newMoneyThree = TaskTemplate::where('company_id', $params['company_id'])->sum('new_money_three');
|
||||||
|
if($newMoneyThree + $params['new_money_three'] > 200){
|
||||||
|
self::setError('任务模板三阶段合计金额不能大于任务调度金额');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$moneyThree = TaskTemplate::where('company_id', $params['company_id'])->sum('money_three');
|
||||||
|
if($moneyThree + $params['money_three']>200){
|
||||||
|
self::setError('任务模板长期合计金额不能大于任务调度金额');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TaskTemplate::create([
|
||||||
|
'title' => $params['title'],
|
||||||
|
'admin_id' => $params['admin_id'],
|
||||||
|
'company_id' => $params['company_id'],
|
||||||
|
'task_scheduling' => $params['task_scheduling']??0,
|
||||||
|
'money' => $params['money'],
|
||||||
|
'money_two' => $params['money_two'],
|
||||||
|
'money_three' => $params['money_three'],
|
||||||
|
'type' => $params['type'],
|
||||||
|
'types' => $params['types'],
|
||||||
|
'status' => $params['status'],
|
||||||
|
'content' => $params['content'],
|
||||||
|
'extend'=>json_encode($params['extend']),
|
||||||
|
'stage_day_one' => $params['stage_day_one']??0,
|
||||||
|
'proportion_one' => $params['proportion_one']??0,
|
||||||
|
'stage_day_two' => $params['stage_day_two']??0,
|
||||||
|
'proportion_two' => $params['proportion_two']??0,
|
||||||
|
'recharge' => $params['recharge']??0,
|
||||||
|
'stage_day_three' => $params['stage_day_three']??0,
|
||||||
|
'new_money_three' => $params['new_money_three']??0,
|
||||||
|
]);
|
||||||
|
Db::commit();
|
||||||
|
return true;
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
Db::rollback();
|
||||||
|
self::setError($e->getMessage());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @notes 添加任务模板
|
||||||
|
* @param array $params
|
||||||
|
* @return bool
|
||||||
|
* @author likeadmin
|
||||||
|
* @date 2023/08/06 17:30
|
||||||
|
*/
|
||||||
|
public static function addVillageTaskTemplate(array $params): bool
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
Db::startTrans();
|
||||||
|
|
||||||
|
|
||||||
|
$serviceManagerUser = (new User())->searchLiaisonMan($params['company_id']);
|
||||||
|
if (empty($serviceManagerUser)) {
|
||||||
|
self::setError('公司还没有村联络员,无法指派任务');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
$find = TaskTemplate::where('task_scheduling', $params['task_scheduling'])->where('company_id',$params['company_id'])->where('type',$params['type'])->field('id,types,type')->find();
|
$find = TaskTemplate::where('task_scheduling', $params['task_scheduling'])->where('company_id',$params['company_id'])->where('type',$params['type'])->field('id,types,type')->find();
|
||||||
if($find && $params['type'] == $find['type']){
|
if($find && $params['type'] == $find['type']){
|
||||||
self::setError('已经有同一种任务类型了');
|
self::setError('已经有同一种任务类型了');
|
||||||
|
@ -229,4 +229,9 @@ class User extends BaseModel
|
|||||||
{
|
{
|
||||||
return User::where(['company_id' => $companyId, 'group_id'=> 16])->find();
|
return User::where(['company_id' => $companyId, 'group_id'=> 16])->find();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function searchLiaisonMan($companyId)
|
||||||
|
{
|
||||||
|
return User::where(['company_id' => $companyId, 'group_id'=> 17])->find();
|
||||||
|
}
|
||||||
}
|
}
|
23
app/job/VillageTaskAdd.php
Normal file
23
app/job/VillageTaskAdd.php
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace app\job;
|
||||||
|
|
||||||
|
use app\common\logic\task\TaskLogic;
|
||||||
|
use think\queue\Job;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 镇农科公司任务下发执行的具体逻辑
|
||||||
|
*/
|
||||||
|
class VillageTaskAdd
|
||||||
|
{
|
||||||
|
|
||||||
|
public function fire(Job $job, $template)
|
||||||
|
{
|
||||||
|
if ($job->attempts() > 3) {
|
||||||
|
//通过这个方法可以检查这个任务已经重试了几次了
|
||||||
|
}
|
||||||
|
TaskLogic::VillageCronAdd($template);
|
||||||
|
//如果任务执行成功后 记得删除任务,不然这个任务会重复执行,直到达到最大重试次数后失败后,执行failed方法
|
||||||
|
$job->delete();
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user