request->param('page_no', 1); $page_size = $this->request->param('page_size', 15); $params = $this->request->param(); $contract_name = $params['contract_name'] ?? ''; $contract_num = $params['contract_num'] ?? ''; $part_a = $params['part_a'] ?? ''; $query = Db::name('cost_approved_project')->where(function ($query) use ($contract_name, $contract_num, $part_a) { if ($contract_name) { $query->where('contract_name', 'like', '%' . $contract_name . '%'); } if ($contract_num) { $query->where('contract_num', 'like', '%'.$contract_num.'%'); } if ($part_a) { $query->where('part_a', 'like', '%' . $part_a . '%'); } }); $count = $query->count(); $lists = $query->page($page_no, $page_size)->select()->each(function ($item) { $item['start_date'] = date('Y-m-d', $item['start_date']); $item['end_date'] = date('Y-m-d', $item['end_date']); $item['due_time'] = date('Y-m-d', $item['due_time']); $item['create_date'] = date('Y-m-d', $item['create_date']); return $item; }); return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size')); } // 造价项目信息汇总 public function cost_project_report() { $page_no = $this->request->param('page_no', 1); $page_size = $this->request->param('page_size', 15); $params = $this->request->param(); $project_name = $params['project_name'] ?? ''; $contract_name = $params['contract_name'] ?? ''; $aunit = $params['aunit'] ?? ''; $query = Db::name('cost_project')->alias('p')->leftJoin('cost_approved_project c', 'p.contract_id=c.id')->where(function ($query) use ($project_name, $contract_name, $aunit) { if ($contract_name) { $query->where('c.contract_name', 'like', '%' . $contract_name . '%'); } if ($project_name) { $query->where('p.project_name', 'like', '%' . $project_name . '%'); } if ($aunit) { $query->where('p.aunit', 'like', '%' . $aunit . '%'); } }); $count = $query->count(); $lists = $query->append(['dept'])->withAttr('dept', function ($value, $data) { return Dept::where('id', $data['depar'])->findOrEmpty()->toArray(); })->page($page_no, $page_size)->select()->each(function ($item) { $item['start_date'] = date('Y-m-d', $item['start_date']); $item['end_date'] = date('Y-m-d', $item['end_date']); return $item; }); return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size')); } // 项目全过程跟踪表 public function project_trace() { $page_no = $this->request->param('page_no', 1); $page_size = $this->request->param('page_size', 15); $params = $this->request->param(); $project_name = $params['project_name'] ?? ''; $contract_name = $params['contract_name'] ?? ''; $query = Db::name('cost_project')->alias('p')->leftJoin('cost_approved_project c', 'p.contract_id=c.id')->where(function ($query) use ($project_name, $contract_name) { if ($contract_name) { $query->where('c.contract_name', 'like', '%' . $contract_name . '%'); } if ($project_name) { $query->where('p.project_name', 'like', '%' . $project_name . '%'); } })->append(['task_allocation_status', 'task_handling_three_level_review_status', 'data_reception_status']) ->withAttr('task_allocation_status', function ($data, $value) { $count = TaskAllocation::where('cost_project_id', $value['id'])->count(); return $count > 0 ? 1 : 0; })->withAttr('task_handling_three_level_review_status', function ($data, $value) { $count = TaskHandlingThreeLevelReview::where('project_id', $value['id'])->count(); return $count > 0 ? 1 : 0; })->withAttr('data_reception_status', function ($data, $value) { $count = DataReception::where('project_id', $value['id'])->count(); return $count > 0 ? 1 : 0; }); $count = $query->count(); $lists = $query->append(['dept'])->withAttr('dept', function ($value, $data) { return Dept::where('id', $data['depar'])->findOrEmpty()->toArray(); })->page($page_no, $page_size)->select(); return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size')); } /** * 项目开票收款汇总表 */ public function project_invoice_receipt() { $page_no = $this->request->param('page_no', 1); $page_size = $this->request->param('page_size', 15); $project_name = $params['project_name'] ?? ''; $depar_id = $params['depar_id'] ?? 0; $query = (new CostProject)->with(['cost_project_contract']); $field = 'id,project_num,project_name,depar,principal,contract_id'; if ($project_name) { $query->where('project_name', 'like', '%' . $project_name . '%'); } if ($depar_id) { $query->where('depar', $depar_id); } $count = $query->count(); $lists = $query->field($field)->page($page_no, $page_size)->select()->each(function ($item) { $item['start_date'] = date('Y-m-d', $item['start_date']); $item['end_date'] = date('Y-m-d', $item['end_date']); if ($item['depar'] > 0) { $item['depar'] = Dept::where('id', $item['depar'])->value('name'); } if ($item['principal'] > 0) { $item['principal'] = Dept::where('id', $item['principal'])->value('name'); } $item['has_invoice_amount'] = 0; $item['amount_Collected'] = 0; return $item; }); return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size')); } /** * 项目部门分布 */ public function distribution_project_departments() { $page_no = $this->request->param('page_no', 1); $page_size = $this->request->param('page_size', 15); $query = (new CostProject); $count = $query->count(); $lists = $query->page($page_no, $page_size)->select()->each(function ($item) { $item['start_date'] = date('Y-m-d', $item['start_date']); $item['end_date'] = date('Y-m-d', $item['end_date']); if ($item['depar'] > 0) { $item['depar'] = Dept::where('id', $item['depar'])->value('name'); } return $item; }); return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size')); } /** * 项目人员分布 */ public function distribution_project_personnel() { $page_no = $this->request->param('page_no', 1); $page_size = $this->request->param('page_size', 15); $query = (new CostProjectPerson); $count = $query->count(); $lists = $query->page($page_no, $page_size)->select()->each(function ($item) { $CostProject = (new CostProject)->where('id', $item['cost_project_id'])->field('depar,project_name')->find(); $item['project_name'] = $CostProject['project_name']; $item['name'] = (new Admin)->where('id', $item['uid'])->value('name'); if ($CostProject['depar'] > 0) { $item['depar'] = Dept::where('id', $CostProject['depar'])->value('name'); } return $item; }); return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size')); } }