|
|
@@ -2,26 +2,87 @@
|
|
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
|
|
+use App\Services\OwnerReportService;
|
|
|
+use App\Services\OwnerService;
|
|
|
+use Exception;
|
|
|
+use Illuminate\Database\Eloquent\Builder;
|
|
|
use Illuminate\Http\Request;
|
|
|
use Illuminate\Http\Response;
|
|
|
use Illuminate\Support\Facades\Gate;
|
|
|
+use Illuminate\Support\Facades\Http;
|
|
|
|
|
|
class CustomerController extends Controller
|
|
|
{
|
|
|
/**
|
|
|
* Display a listing of the resource.
|
|
|
- *
|
|
|
+ * @param Request $request
|
|
|
* @return Response
|
|
|
*/
|
|
|
- public function projectReport()
|
|
|
+ public function projectReport(Request $request)
|
|
|
{
|
|
|
- if(!Gate::allows('客户管理-项目-报表')){ return redirect('denied'); }
|
|
|
- return response()->view('customer.project.report');
|
|
|
+ if(!Gate::allows('客户管理-项目-报表')){ return view('customer.index'); }
|
|
|
+ $withs = ["ownerBillReport","owner"=>function($query){
|
|
|
+ /** @var Builder $query */
|
|
|
+ $query->select("id","name","deleted_at","created_at","customer_id","user_owner_group_id")
|
|
|
+ ->with(["customer","userOwnerGroup"]);
|
|
|
+ }];
|
|
|
+ $ownerGroups = app('UserOwnerGroupService')->getSelection();
|
|
|
+ $customers = app('CustomerService')->getSelection();
|
|
|
+ $owners = app('OwnerService')->getSelection();
|
|
|
+ $reports = app("OwnerReportService")->paginate($request->input(),$withs);
|
|
|
+ return response()->view('customer.project.report',compact("reports","ownerGroups","customers","owners"));
|
|
|
+ }
|
|
|
+
|
|
|
+ public function projectReportExport(Request $request)
|
|
|
+ {
|
|
|
+ if(!Gate::allows('客户管理-项目-报表')){ return '没有权限'; }
|
|
|
+ /** @var OwnerReportService $service */
|
|
|
+ $service = app('OwnerReportService');
|
|
|
+ $withs = ["ownerBillReport","owner"=>function($query){
|
|
|
+ /** @var Builder $query */
|
|
|
+ $query->select("id","name","deleted_at","created_at","customer_id","user_owner_group_id")
|
|
|
+ ->with(["customer","userOwnerGroup"]);
|
|
|
+ }];
|
|
|
+ if ($request->checkAllSign ?? false){
|
|
|
+ $params = $request->input();
|
|
|
+ unset($params['checkAllSign']);
|
|
|
+ $reports = $service->get($params,$withs);
|
|
|
+ }else $reports = $service->get(["id"=>$request->data ?? ''],$withs);
|
|
|
+ $column = ["项目小组","客户","子项目","状态","创建日期","在库时长","结算月","日均单量","结算月上月盘点面积","结算月盘点面积","初始账单金额","确认账单金额","确认日期"];
|
|
|
+ $list = [];
|
|
|
+ foreach ($reports as $report){
|
|
|
+ $list[] = [
|
|
|
+ $report->owner ? ($report->owner->userOwnerGroup ? $report->owner->userOwnerGroup->name : '') : '',
|
|
|
+ $report->owner ? ($report->owner->customer ? $report->owner->customer->name : '') : '',
|
|
|
+ $report->owner ? $report->owner->name : '',
|
|
|
+ $report->owner ? ($report->owner->deleted_at ? "冻结" : "激活") : '',
|
|
|
+ $report->owner ? (string)$report->owner->created_at : '',
|
|
|
+ $report->owner ? ($report->owner->created_at ? ((new \DateTime())->diff(new \DateTime($report->owner->created_at))->days)." 天" : '') : '',
|
|
|
+ $report->counting_month,
|
|
|
+ $report->daily_average_order_amount,
|
|
|
+ $report->last_month_counting_area,
|
|
|
+ $report->current_month_counting_area,
|
|
|
+ $report->ownerBillReport ? $report->ownerBillReport->initial_fee : '',
|
|
|
+ $report->ownerBillReport ? $report->ownerBillReport->confirm_fee : '',
|
|
|
+ $report->ownerBillReport ? (string)$report->ownerBillReport->updated_at : '',
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ $post = Http::post(config('go.export.url'),['type'=>'base','data'=>json_encode(["row"=>$column,"list"=>$list],JSON_UNESCAPED_UNICODE)]);
|
|
|
+ if ($post->status() == 500){
|
|
|
+ throw new Exception($post->header("Msg"));
|
|
|
+ }
|
|
|
+ return response($post,200, [
|
|
|
+ "Content-type"=>"application/octet-stream",
|
|
|
+ "Content-Disposition"=>"attachment; filename=客户项目报表-".date('ymdHis').'.xlsx',
|
|
|
+ ]);
|
|
|
}
|
|
|
|
|
|
public function projectIndex()
|
|
|
{
|
|
|
if(!Gate::allows('客户管理-项目-查询')){ return redirect('denied'); }
|
|
|
+ /** @var OwnerService $service */
|
|
|
+ $service = app('OwnerService');
|
|
|
+ $customers = $service->get(['customer_id'=>true],['customer']);
|
|
|
return response()->view('customer.project.index');
|
|
|
}
|
|
|
|