审核状态排序

main
Jing Li 2024-05-01 22:44:40 +08:00
parent d626c7516b
commit 06c5c901ed
8 changed files with 63 additions and 34 deletions

View File

@ -2,11 +2,12 @@
namespace App\Http\Controllers\Api; namespace App\Http\Controllers\Api;
use Illuminate\Http\Request;
use App\Models\Agreement;
use App\Http\Resources\AgreementResource;
use App\Admin\Services\{AgreementService, WorkFlowService}; use App\Admin\Services\{AgreementService, WorkFlowService};
use App\Exceptions\RuntimeException; use App\Exceptions\RuntimeException;
use App\Http\Resources\AgreementResource;
use App\Models\Agreement;
use App\Models\WorkflowCheck;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
/** /**
@ -20,6 +21,7 @@ class AgreementController extends Controller
$list = Agreement::with(['workflow']) $list = Agreement::with(['workflow'])
->where('employee_id', $user->id) ->where('employee_id', $user->id)
->filter($request->all()) ->filter($request->all())
->orderByDesc(WorkflowCheck::checkStatusSortBuilder(new Agreement()))
->orderBy('id', 'desc') ->orderBy('id', 'desc')
->paginate($request->input('per_page')); ->paginate($request->input('per_page'));

View File

@ -2,12 +2,13 @@
namespace App\Http\Controllers\Api\Hr; namespace App\Http\Controllers\Api\Hr;
use App\Http\Controllers\Api\Controller;
use Illuminate\Http\Request;
use App\Models\HolidayApply;
use App\Http\Resources\HolidayApplyResource;
use App\Admin\Services\{HolidayApplyService, WorkFlowService}; use App\Admin\Services\{HolidayApplyService, WorkFlowService};
use App\Exceptions\RuntimeException; use App\Exceptions\RuntimeException;
use App\Http\Controllers\Api\Controller;
use App\Http\Resources\HolidayApplyResource;
use App\Models\HolidayApply;
use App\Models\WorkflowCheck;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
/** /**
@ -18,9 +19,11 @@ class HolidayController extends Controller
public function index(Request $request) public function index(Request $request)
{ {
$user = $this->guard()->user(); $user = $this->guard()->user();
$list = HolidayApply::with(['type', 'workflow']) $list = HolidayApply::with(['type', 'workflow'])
->where('employee_id', $user->id)
->filter($request->all()) ->filter($request->all())
->where('employee_id', $user->id)
->orderByDesc(WorkflowCheck::checkStatusSortBuilder(new HolidayApply()))
->orderBy('id', 'desc') ->orderBy('id', 'desc')
->paginate($request->input('per_page')); ->paginate($request->input('per_page'));

View File

@ -2,12 +2,13 @@
namespace App\Http\Controllers\Api\Hr; namespace App\Http\Controllers\Api\Hr;
use App\Http\Controllers\Api\Controller;
use Illuminate\Http\Request;
use App\Models\OfficalBusiness;
use App\Http\Resources\OfficalBusinessResource;
use App\Admin\Services\{OfficalBusinessService, WorkFlowService}; use App\Admin\Services\{OfficalBusinessService, WorkFlowService};
use App\Exceptions\RuntimeException; use App\Exceptions\RuntimeException;
use App\Http\Controllers\Api\Controller;
use App\Http\Resources\OfficalBusinessResource;
use App\Models\OfficalBusiness;
use App\Models\WorkflowCheck;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
/** /**
@ -21,6 +22,7 @@ class OfficalBusinessController extends Controller
$list = OfficalBusiness::with(['workflow']) $list = OfficalBusiness::with(['workflow'])
->where('employee_id', $user->id) ->where('employee_id', $user->id)
->filter($request->all()) ->filter($request->all())
->orderByDesc(WorkflowCheck::checkStatusSortBuilder(new OfficalBusiness()))
->orderBy('id', 'desc') ->orderBy('id', 'desc')
->paginate($request->input('per_page')); ->paginate($request->input('per_page'));
@ -43,7 +45,7 @@ class OfficalBusinessController extends Controller
try { try {
DB::beginTransaction(); DB::beginTransaction();
if (!$service->store($data)) { if (!$service->store($data)) {
throw new RuntimeException($result); throw new RuntimeException($service->getError());
} }
$model = $service->getCurrentModel(); $model = $service->getCurrentModel();
$workflow = WorkFlowService::make(); $workflow = WorkFlowService::make();

View File

@ -2,12 +2,13 @@
namespace App\Http\Controllers\Api\Hr; namespace App\Http\Controllers\Api\Hr;
use App\Http\Controllers\Api\Controller;
use Illuminate\Http\Request;
use App\Models\OvertimeApply;
use App\Http\Resources\OvertimeApplyResource;
use App\Admin\Services\{OvertimeApplyService, WorkFlowService}; use App\Admin\Services\{OvertimeApplyService, WorkFlowService};
use App\Exceptions\RuntimeException; use App\Exceptions\RuntimeException;
use App\Http\Controllers\Api\Controller;
use App\Http\Resources\OvertimeApplyResource;
use App\Models\OvertimeApply;
use App\Models\WorkflowCheck;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
/** /**
@ -21,6 +22,7 @@ class OvertimeController extends Controller
$list = OvertimeApply::with(['workflow']) $list = OvertimeApply::with(['workflow'])
->where('employee_id', $user->id) ->where('employee_id', $user->id)
->filter($request->all()) ->filter($request->all())
->orderByDesc(WorkflowCheck::checkStatusSortBuilder(new OvertimeApply()))
->orderBy('id', 'desc') ->orderBy('id', 'desc')
->paginate($request->input('per_page')); ->paginate($request->input('per_page'));

View File

@ -2,14 +2,15 @@
namespace App\Http\Controllers\Api\Hr; namespace App\Http\Controllers\Api\Hr;
use App\Http\Controllers\Api\Controller;
use Illuminate\Http\Request;
use App\Models\EmployeePromotion;
use App\Http\Resources\EmployeePromotionResource;
use App\Admin\Services\{EmployeePromotionService, WorkFlowService}; use App\Admin\Services\{EmployeePromotionService, WorkFlowService};
use App\Exceptions\RuntimeException;
use Illuminate\Support\Facades\DB;
use App\Enums\PromotionStatus; use App\Enums\PromotionStatus;
use App\Exceptions\RuntimeException;
use App\Http\Controllers\Api\Controller;
use App\Http\Resources\EmployeePromotionResource;
use App\Models\EmployeePromotion;
use App\Models\WorkflowCheck;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
/** /**
* 升职申请 * 升职申请
@ -25,6 +26,7 @@ class PromotionController extends Controller
$list = EmployeePromotion::with(['workflow', 'invitor', 'job']) $list = EmployeePromotion::with(['workflow', 'invitor', 'job'])
->where('employee_id', $user->id) ->where('employee_id', $user->id)
->filter($request->all()) ->filter($request->all())
->orderByDesc(WorkflowCheck::checkStatusSortBuilder(new EmployeePromotion()))
->orderBy('id', 'desc') ->orderBy('id', 'desc')
->paginate($request->input('per_page')); ->paginate($request->input('per_page'));

View File

@ -2,14 +2,15 @@
namespace App\Http\Controllers\Api\Hr; namespace App\Http\Controllers\Api\Hr;
use App\Http\Controllers\Api\Controller;
use Illuminate\Http\{Request, Response};
use App\Models\EmployeeSignRepair;
use App\Http\Resources\{EmployeeSignRepairResource, WorkflowLogResource};
use App\Admin\Services\{EmployeeSignRepairService, WorkFlowService}; use App\Admin\Services\{EmployeeSignRepairService, WorkFlowService};
use Illuminate\Support\Facades\DB;
use App\Exceptions\RuntimeException;
use App\Enums\{CheckStatus}; use App\Enums\{CheckStatus};
use App\Exceptions\RuntimeException;
use App\Http\Controllers\Api\Controller;
use App\Http\Resources\{EmployeeSignRepairResource, WorkflowLogResource};
use App\Models\EmployeeSignRepair;
use App\Models\WorkflowCheck;
use Illuminate\Http\{Request, Response};
use Illuminate\Support\Facades\DB;
/** /**
* 补卡申请 * 补卡申请
@ -22,6 +23,7 @@ class SignRepairController extends Controller
$list = EmployeeSignRepair::with(['workflow']) $list = EmployeeSignRepair::with(['workflow'])
->where('employee_id', $user->id) ->where('employee_id', $user->id)
->filter($request->all()) ->filter($request->all())
->orderByDesc(WorkflowCheck::checkStatusSortBuilder(new EmployeeSignRepair()))
->orderBy('id', 'desc') ->orderBy('id', 'desc')
->paginate($request->input('per_page')); ->paginate($request->input('per_page'));
return EmployeeSignRepairResource::collection($list); return EmployeeSignRepairResource::collection($list);

View File

@ -25,7 +25,8 @@ class ReimbursementController extends Controller
$reimbursements = $user->reimbursements() $reimbursements = $user->reimbursements()
->with(['type', 'workflow']) ->with(['type', 'workflow'])
->filter($request->input()) ->filter($request->input())
->sort('created_at', 'desc') ->orderByDesc(WorkflowCheck::checkStatusSortBuilder(new Reimbursement()))
->orderBy('id', 'desc')
->paginate($request->input('per_page', 20)); ->paginate($request->input('per_page', 20));
return ReimbursementResource::collection($reimbursements); return ReimbursementResource::collection($reimbursements);

View File

@ -7,6 +7,7 @@ use App\Traits\HasDateTimeFormatter;
use EloquentFilter\Filterable; use EloquentFilter\Filterable;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\Relation; use Illuminate\Database\Eloquent\Relations\Relation;
use Illuminate\Support\Facades\DB;
/** /**
* 审核申请 * 审核申请
@ -79,4 +80,18 @@ class WorkflowCheck extends Model
default => '', default => '',
}; };
} }
public static function checkStatusSortBuilder(Model $instance, $column = 'id')
{
$mysqlScript = <<<'MySQL'
CASE
WHEN check_status = 2 THEN 100
ELSE 0
END as check_status_weight
MySQL;
return static::select(DB::raw($mysqlScript))
->where('subject_type', $instance->getMorphClass())
->whereColumn('subject_id', "{$instance->getTable()}.{$column}");
}
} }