diff --git a/app/Controller/Admin/MaterialController.php b/app/Controller/Admin/MaterialController.php index faa82da..ba44b33 100644 --- a/app/Controller/Admin/MaterialController.php +++ b/app/Controller/Admin/MaterialController.php @@ -78,5 +78,17 @@ class MaterialController return (new MaterialService())->materialStockList(); } + /** + * 厨师成本列表 + * @param MaterialRequest $request + * @return array + */ + #[RequestMapping(path: "chef_cost_list", methods: "GET")] + #[Scene(scene: "chef_cost_list")] + public function chefCostList(MaterialRequest $request): array + { + return (new MaterialService())->costListByChef(); + } + } diff --git a/app/Request/Admin/MaterialRequest.php b/app/Request/Admin/MaterialRequest.php index 61502d3..ffb14ea 100644 --- a/app/Request/Admin/MaterialRequest.php +++ b/app/Request/Admin/MaterialRequest.php @@ -36,10 +36,11 @@ class MaterialRequest extends FormRequest } protected array $scenes = [ - 'material_list' => ['limit','query_name','query_kitchenId'], + 'material_list' => ['limit','query_name','query_kitchen_id'], 'material_add' => ['category_id', 'name', 'standard', 'unit', 'bar_code', 'city_id', 'kitchen_id'], 'material_edit' => ['id','category_id', 'name', 'standard', 'unit', 'bar_code','status'], 'material_delete' => ['id'], 'materialStock_list' => ['limit','query_name','query_materialId','query_depotId','query_supplierId','query_kitchenId'], + 'chef_cost_list' => ['limit','chef_name','cycle_id','query_kitchen_id'], ]; } diff --git a/app/Service/Admin/Material/MaterialService.php b/app/Service/Admin/Material/MaterialService.php index 85371df..ca5e856 100644 --- a/app/Service/Admin/Material/MaterialService.php +++ b/app/Service/Admin/Material/MaterialService.php @@ -4,9 +4,11 @@ declare(strict_types=1); namespace App\Service\Admin\Material; +use App\Constants\Admin\DepotCode; use App\Constants\Common\MaterialCode; use App\Exception\ErrException; use App\Model\Material; +use App\Model\MaterialApplication; use App\Model\MaterialStock; use App\Service\Admin\BaseService; use Hyperf\Di\Annotation\Inject; @@ -22,6 +24,9 @@ class MaterialService extends BaseService{ #[Inject] protected MaterialStock $MaterialStockModel; + #[Inject] + protected MaterialApplication $MaterialApplicationModel; + public function handle() { @@ -142,4 +147,34 @@ class MaterialService extends BaseService{ return $this->return->success('success',$list); } + public function costListByChef():array + { + $limit = (int)$this->request->input('limit', 10); + $chefName = $this->request->input('chef_name'); + $cycleId = (int)$this->request->input('cycle_id'); + $kitchenId = (int)$this->request->input('query_kitchen_id'); + + $list = $this->MaterialApplicationModel + ->leftJoin('material','material_application.material_id','=','material.id') + ->leftJoin('dish','material_application.dish_id','=','dish.id') + ->leftJoin('depot_sale','material_application.id','=','depot_sale.application_id') + ->leftJoin('admin_user','material_application.operator_id','=','admin_user.id') + ->where('material_application.is_del',MaterialCode::IS_NO_DEL) + ->where('depot_sale.is_del',DepotCode::IS_NO_DEL) + ->when(!empty($chefName), function ($query) use ($chefName) { + $query->where('admin_user.chinese_name', $chefName); + }) + ->when(!empty($cycleId), function ($query) use ($cycleId) { + $query->where('dish.cycle_id', $cycleId); + }) + ->when(!empty($kitchenId), function ($query) use ($kitchenId) { + $query->where('material_application.kitchen_id', $kitchenId); + }) + ->paginate($limit,['admin_user.chinese_name','material.name','material_application.number as application_number','depot_sale.number as sale_number','depot_sale.back_number']) + ->toArray(); + +// return $this->return->success('success',['list' => $list]); + return $this->return->success('success',$list); + } + } \ No newline at end of file