200 lines
7.8 KiB
PHP
200 lines
7.8 KiB
PHP
|
<?php
|
|||
|
|
|||
|
namespace app\middleapi\controller;
|
|||
|
|
|||
|
use app\adminapi\lists\approve\ApproveLists;
|
|||
|
use app\common\logic\task\TaskLogic;
|
|||
|
use app\common\model\Approve;
|
|||
|
use app\common\model\task\Task;
|
|||
|
use app\common\model\auth\Admin;
|
|||
|
use app\common\model\Company;
|
|||
|
use app\common\model\task_scheduling_plan\TaskSchedulingPlan;
|
|||
|
use app\common\model\task_template\TaskTemplate;
|
|||
|
use think\facade\Db;
|
|||
|
use app\common\controller\BaseLikeAdminController;
|
|||
|
|
|||
|
class ApproveController extends BaseLikeAdminController
|
|||
|
{
|
|||
|
public function lists()
|
|||
|
{
|
|||
|
if(!$this->request->isPost()){
|
|||
|
return $this->fail('请求方式错误');
|
|||
|
}
|
|||
|
$params=$this->request->post(['page_no','page_size','type','check_status']);
|
|||
|
$where = [];
|
|||
|
if (isset($params['check_status']) && $params['check_status'] != '') {
|
|||
|
$where[] = ['check_status', '=', $params['check_status']];
|
|||
|
}
|
|||
|
if (isset($params['type']) && $params['type'] != '') {
|
|||
|
$where[] = ['type', 'in', $params['type']];
|
|||
|
}
|
|||
|
$pageNo = !empty($params['page_no']) ? $params['page_no'] : 1;
|
|||
|
$pageSize = !empty($params['page_size']) ? $params['page_size'] : 20;
|
|||
|
$data = Approve::where($where)
|
|||
|
->with('task')
|
|||
|
->field('*')
|
|||
|
->append(['area_manager', 'company_name'], true)
|
|||
|
->page($pageNo, $pageSize)
|
|||
|
->order(['id' => 'desc'])
|
|||
|
->select()
|
|||
|
->withAttr('area_manager',function($value,$data){
|
|||
|
return Admin::where(['id' => $data['check_admin_ids']])->value('name');
|
|||
|
})
|
|||
|
->withAttr('company_name',function($value,$data){
|
|||
|
$task = Task::where('id', $data['task_id'])->find();
|
|||
|
return Company::where(['id' => $task['company_id'] ?? 0])->value('company_name');
|
|||
|
})
|
|||
|
->toArray();
|
|||
|
$count = Approve::where($where)->count();
|
|||
|
$result = [
|
|||
|
'lists' => $data,
|
|||
|
'count' => $count,
|
|||
|
'page_no' => $pageNo,
|
|||
|
'page_size' => $pageSize
|
|||
|
];
|
|||
|
return $this->success('请求成功',$result);
|
|||
|
}
|
|||
|
|
|||
|
public function audit()
|
|||
|
{
|
|||
|
try {
|
|||
|
$params = $this->request->param();
|
|||
|
if(empty($params['id'])){
|
|||
|
return $this->fail('缺少必要参数id');
|
|||
|
}
|
|||
|
if(empty($params['check_status'])){
|
|||
|
return $this->fail('缺少必要参数审核状态');
|
|||
|
}
|
|||
|
$approve = Approve::find($params['id']);
|
|||
|
if (!$approve) {
|
|||
|
$this->fail('数据不存在');
|
|||
|
}
|
|||
|
Db::startTrans();
|
|||
|
// 拒绝通过 要让用户今天可以继续做任务
|
|||
|
if ($params['check_status'] == 3) {
|
|||
|
$this->refuse($params, $approve);
|
|||
|
}
|
|||
|
// 修改任务完成状态
|
|||
|
if ($params['check_status'] == 2) {
|
|||
|
if ($approve->type == Approve::APPROVE_TYPE_7) {
|
|||
|
$taskTemplate = TaskTemplate::where(['id'=>$approve->business_id])->find();
|
|||
|
// 提前完成
|
|||
|
if ($taskTemplate['day_count'] < $taskTemplate['stage_day_one']) {
|
|||
|
if (bccomp($params['amount'], 300000, 2) == -1) {
|
|||
|
$this->fail('该任务提前完成条件:销售总额必须达到30万元及以上');
|
|||
|
} else {
|
|||
|
// 提前完成标识
|
|||
|
$extend = json_decode($taskTemplate['extend'], true);
|
|||
|
$extend['early_finish'] = 1;
|
|||
|
$taskTemplate->extend = json_encode($extend);
|
|||
|
$taskTemplate->save();
|
|||
|
$this->pass($approve, $params);
|
|||
|
}
|
|||
|
} else {
|
|||
|
$this->pass($approve, $params);
|
|||
|
}
|
|||
|
} else {
|
|||
|
$this->pass($approve);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
Db::commit();
|
|||
|
return $this->success('审核成功');
|
|||
|
} catch (\Exception $e) {
|
|||
|
Db::rollback();
|
|||
|
return $this->fail($e->getFile().$e->getLine().$e->getMessage());
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// 通过
|
|||
|
private function pass($approve, $params=[])
|
|||
|
{
|
|||
|
$approve->check_status = 2;
|
|||
|
$approve->update_time = time();
|
|||
|
$approve->save();
|
|||
|
// 任务
|
|||
|
$task = Task::find($approve['task_id']);
|
|||
|
if ($task['status'] == 2) {
|
|||
|
$task->status = 3;
|
|||
|
$task->save();
|
|||
|
}
|
|||
|
// 镇农科公司任务-数字农贸宣传业务、加工业务的建设和招商工作任务 结算
|
|||
|
if ($approve->type == Approve::APPROVE_TYPE_4) {
|
|||
|
$taskSchedulePlan = TaskSchedulingPlan::where('la_task_scheduling_plan.id', $task['scheduling_plan_id'])
|
|||
|
->where('is_pay',0)
|
|||
|
->with(['template_info'])
|
|||
|
->withJoin(['scheduling'], 'left')
|
|||
|
->where('scheduling.company_type', 41)
|
|||
|
->find()
|
|||
|
->toArray();
|
|||
|
TaskLogic::dealTaskMarketingDirector10($taskSchedulePlan, $approve);
|
|||
|
}
|
|||
|
|
|||
|
if ($approve->type == Approve::APPROVE_TYPE_5) {
|
|||
|
$taskSchedulePlan = TaskSchedulingPlan::where('la_task_scheduling_plan.id', $task['scheduling_plan_id'])
|
|||
|
->where('is_pay',0)
|
|||
|
->with(['template_info'])
|
|||
|
->withJoin(['scheduling'], 'left')
|
|||
|
->where('scheduling.company_type', 17)
|
|||
|
->find()
|
|||
|
->toArray();
|
|||
|
TaskLogic::dealVillageTask6($taskSchedulePlan);
|
|||
|
}
|
|||
|
|
|||
|
if ($approve->type == Approve::APPROVE_TYPE_6) {
|
|||
|
$taskSchedulePlan = TaskSchedulingPlan::where('la_task_scheduling_plan.id', $task['scheduling_plan_id'])
|
|||
|
->where('is_pay',0)
|
|||
|
->with(['template_info'])
|
|||
|
->withJoin(['scheduling'], 'left')
|
|||
|
->where('scheduling.company_type', 17)
|
|||
|
->find()
|
|||
|
->toArray();
|
|||
|
TaskLogic::dealVillageTask8($taskSchedulePlan);
|
|||
|
}
|
|||
|
if ($approve->type == Approve::APPROVE_TYPE_7) {
|
|||
|
// 需要手动输入销售总额
|
|||
|
$approve->amount = $params['amount'];
|
|||
|
$approve->save();
|
|||
|
}
|
|||
|
if ($approve->type == Approve::APPROVE_TYPE_8) {
|
|||
|
// 需要手动输入申请的政策补贴金额
|
|||
|
$approve->amount = $params['amount'];
|
|||
|
$approve->save();
|
|||
|
}
|
|||
|
if ($approve->type == Approve::APPROVE_TYPE_9) {
|
|||
|
$taskSchedulePlan = TaskSchedulingPlan::where('la_task_scheduling_plan.id', $task['scheduling_plan_id'])
|
|||
|
->where('is_pay',0)
|
|||
|
->with(['template_info'])
|
|||
|
->withJoin(['scheduling'], 'left')
|
|||
|
->where('scheduling.company_type', 17)
|
|||
|
->find()
|
|||
|
->toArray();
|
|||
|
TaskLogic::masterTask8Settlement($taskSchedulePlan);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// 拒绝
|
|||
|
private function refuse($params, $approve)
|
|||
|
{
|
|||
|
$approve->check_status = $params['check_status'];
|
|||
|
$approve->remark = $params['remark'];
|
|||
|
$approve->update_time = time();
|
|||
|
$approve->save();
|
|||
|
|
|||
|
// 更新schedule_plan时间和task的时间为今天依旧可提交
|
|||
|
$schedulePlan = TaskSchedulingPlan::find(['tast_id' => $approve['task_id']]);
|
|||
|
if (empty($schedule_plan)) {
|
|||
|
return $this->fail('数据异常,任务计划不存在');
|
|||
|
}
|
|||
|
$time = strtotime(date('Y-m-d'));
|
|||
|
TaskSchedulingPlan::where(['id' => $schedulePlan['id']])->update([
|
|||
|
'start_time'=>$time,
|
|||
|
'end_time'=>$time + 86399
|
|||
|
]);
|
|||
|
Task::where('id', $approve['task_id'])->update([
|
|||
|
'start_time'=>$time,
|
|||
|
'end_time'=>$time + 86399
|
|||
|
]);
|
|||
|
}
|
|||
|
|
|||
|
}
|