ProcessStatisticController.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Process;
  4. use App\Services\ProcessStatisticService;
  5. use Exception;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Facades\Gate;
  8. use Illuminate\Support\Facades\Http;
  9. class ProcessStatisticController extends Controller
  10. {
  11. public function index(Request $request){
  12. if(!Gate::allows('二次加工管理-查询')){ return redirect('denied'); }
  13. /** @var ProcessStatisticService $processStatistics */
  14. $processStatistics=app("ProcessStatisticService")->paginate($request->input());
  15. $owners=app("OwnerService")->getSelection();
  16. $processMethods=app("ProcessMethodService")->getSelection();
  17. return view('process.statistic',['processStatistics'=>$processStatistics,'params'=>$request->input(),'owners'=>$owners,'processMethods'=>$processMethods]);
  18. }
  19. public function export(Request $request){
  20. if(!Gate::allows('二次加工管理-查询')){ return '没有权限'; }
  21. if ($request->checkAllSign){
  22. $params = $request->input();
  23. unset($params['checkAllSign']);
  24. $sql = app('ProcessStatisticService')->getSql($params);
  25. }else $sql = app('ProcessStatisticService')->getSql(["process_id"=>$request->data]);
  26. $row = ["任务号", "货主", "开始日期", "完成日期","创建日期", "单价", "预期数量", "完成数量", "收入合计",
  27. "完成时间(天)'", "总工时", "加工类型", "最高日产能", "最低日产能", "日均产能", "合计成本", "毛利润",
  28. "毛利率", "状态","加工备注","结算备注"];
  29. $column = ["process_code", "owner_name", "started_at", "ended_at","process_created_at", "process_unit_price", "process_amount", "process_completed_amount", "revenue",
  30. "duration_days", "duration_man_hours", "process_method_name", "top_capacity", "bottom_capacity",
  31. "average_capacity", "total_cost", "gross_profit", "gross_profit_rate", "process_status", "process_remark", "process_balance_remark"];
  32. $rule = ["gross_profit_rate"=> "percent", "started_at"=>"mysqlDate", "ended_at"=>"mysqlDate", "process_created_at"=>"mysqlDate"];
  33. $post = Http::post(config('go.export.url'),['type'=>'unify','sql'=>$sql, 'connection'=>'mysql',
  34. 'row'=>json_encode($row,JSON_UNESCAPED_UNICODE), 'column'=>json_encode($column), 'rule'=>json_encode($rule)]);
  35. if ($post->status() == 500){
  36. throw new Exception($post->header("Msg"));
  37. }
  38. return response($post,200, [
  39. "Content-type"=>"application/octet-stream",
  40. "Content-Disposition"=>"attachment; filename=二次加工统计记录-".date('ymdHis').'.xlsx',
  41. ]);
  42. }
  43. }