request->get(); $page_no = !empty($params['page_no']) ? $params['page_no'] : 1; $page_size = !empty($params['page_size']) ? $params['page_size'] : 15; $where = []; if(!empty($params['contract_name'])){ $contract_ids1 = CostApprovedProject::where('contract_name','like','%'.$params['contract_name'].'%')->column('id'); $where[] = ['contract_id','in',$contract_ids1]; } if(!empty($params['contract_num'])){ $contract_ids2 = CostApprovedProject::where('contract_num','like','%'.$params['contract_num'].'%')->column('id'); $where[] = ['contract_id','in',$contract_ids2]; } if(!empty($params['part_a'])){ $contract_ids3 = CostApprovedProject::where('part_a','like','%'.$params['part_a'].'%')->column('id'); $where[] = ['contract_id','in',$contract_ids3]; } $lists = CostProject::field('id,contract_id')->where($where)->page($page_no, $page_size)->order('id desc')->select()->each(function($data){ $contract = CostApprovedProject::field('contract_name,contract_num,contract_type,part_a,part_b,create_time,start_date,end_date,project_money,money') ->where('id',$data['contract_id'])->findOrEmpty(); $data['contract_name'] = $contract['contract_name']; $data['contract_num'] = $contract['contract_num']; $data['contract_type'] = $contract->contract_type_text; $data['part_a'] = $contract['part_a']; $data['part_b'] = $contract['part_b']; $data['create_time'] = $contract['create_time']; $data['start_date'] = $contract['start_date']; $data['end_date'] = $contract['end_date']; $data['project_money'] = $contract['project_money']; $data['sign_money'] = $contract['money']; //开票金额 $data['total_invoice_amount'] = ZjzxInvoice::where('project_id',$data['id'])->sum('apply_amount'); //到账金额 $data['total_refund_amount'] = ZjzxRefund::where('project_id',$data['id'])->sum('amount'); //结算金额 $data['total_settlement_amount'] = ZjzxSettlement::where('project_id',$data['id'])->sum('amount'); //应收账款 $data['total_collection_amount'] = $contract['money'] - $data['total_refund_amount']; unset($data['contract_id'],$data['id']); })->toArray(); $count = CostProject::where($where)->count(); return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size')); } // 造价项目信息汇总 public function cost_project_report() { $params = $this->request->get(); $page_no = !empty($params['page_no']) ? $params['page_no'] : 1; $page_size = !empty($params['page_size']) ? $params['page_size'] : 15; $where = []; if(!empty($params['contract_name'])){ $contract_ids1 = CostApprovedProject::where('contract_name','like','%'.$params['contract_name'].'%')->column('id'); $where[] = ['contract_id','in',$contract_ids1]; } if(!empty($params['project_name'])){ $where[] = ['project_name','like','%'.$params['project_name'].'%']; } $lists = CostProject::field('id,contract_id,project_num,project_name,starting,endtime,types,invest') ->where($where)->page($page_no, $page_size)->order('id desc')->select()->each(function($data){ $contract = CostApprovedProject::field('contract_name')->where('id',$data['contract_id'])->findOrEmpty(); $data['contract_name'] = $contract['contract_name']; $data['types'] = $data->types_text; //开票金额 $data['total_invoice_amount'] = ZjzxInvoice::where('project_id',$data['id'])->sum('apply_amount'); //到账金额 $data['total_refund_amount'] = ZjzxRefund::where('project_id',$data['id'])->sum('amount'); //提成金额 $data['total_commission_amount'] = ProjectCommission::where('project_id',$data['id'])->sum('bczfze'); })->toArray(); $count = CostProject::where($where)->count(); return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size')); } // 项目全过程跟踪表 public function project_trace() { $params = $this->request->get(); $page_no = !empty($params['page_no']) ? $params['page_no'] : 1; $page_size = !empty($params['page_size']) ? $params['page_size'] : 15; $where = []; if(!empty($params['contract_name'])){ $contract_ids1 = CostApprovedProject::where('contract_name','like','%'.$params['contract_name'].'%')->column('id'); $where[] = ['contract_id','in',$contract_ids1]; } if(!empty($params['project_name'])){ $where[] = ['project_name','like','%'.$params['project_name'].'%']; } $lists = CostProject::field('id,contract_id,project_num,project_name,depar') ->where($where)->page($page_no, $page_size)->order('id desc')->select()->each(function($data){ $contract = CostApprovedProject::field('contract_name,project_director')->where('id',$data['contract_id'])->findOrEmpty(); $dept = Dept::field('name')->where('id', $data['depar'])->findOrEmpty(); $data['contract_name'] = $contract['contract_name']; $data['project_director'] = $contract['project_director']; $data['dept_name'] = $dept['name']; //任务分配状态 $task_allocation_status = TaskAllocation::where('cost_project_id', $data['id'])->count(); $data['task_allocation_status'] = $task_allocation_status > 0 ? 1 : 0; //任务办理状态 $task_handling_three_level_review_status = TaskHandlingThreeLevelReview::where('project_id', $data['id'])->count(); $data['task_handling_three_level_review_status'] = $task_handling_three_level_review_status > 0 ? 1 : 0; //资料归档状态 $data_reception_status = DataReception::where('project_id', $data['id'])->count(); $data['data_reception_status'] = $data_reception_status > 0 ? 1 : 0; //开票金额 $data['total_invoice_amount'] = ZjzxInvoice::where('project_id',$data['id'])->sum('apply_amount'); //到账金额 $data['total_refund_amount'] = ZjzxRefund::where('project_id',$data['id'])->sum('amount'); //提成金额 $data['total_commission_amount'] = ProjectCommission::where('project_id',$data['id'])->sum('bczfze'); })->toArray(); $count = CostProject::where($where)->count(); return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size')); } /** * 项目开票收款汇总表 */ public function project_invoice_receipt() { $params = $this->request->get(); $page_no = !empty($params['page_no']) ? $params['page_no'] : 1; $page_size = !empty($params['page_size']) ? $params['page_size'] : 15; $where = []; if(!empty($params['contract_name'])){ $contract_ids1 = CostApprovedProject::where('contract_name','like','%'.$params['contract_name'].'%')->column('id'); $where[] = ['contract_id','in',$contract_ids1]; } if(!empty($params['project_name'])){ $where[] = ['project_name','like','%'.$params['project_name'].'%']; } $lists = CostProject::field('id,contract_id,project_num,project_name,depar') ->where($where)->page($page_no, $page_size)->order('id desc')->select()->each(function($data){ $contract = CostApprovedProject::field('contract_name,project_director')->where('id',$data['contract_id'])->findOrEmpty(); $dept = Dept::field('name')->where('id', $data['depar'])->findOrEmpty(); $data['contract_name'] = $contract['contract_name']; $data['project_director'] = $contract['project_director']; $data['dept_name'] = $dept['name']; //开票金额 $data['total_invoice_amount'] = ZjzxInvoice::where('project_id',$data['id'])->sum('apply_amount'); //到账金额 $data['total_refund_amount'] = ZjzxRefund::where('project_id',$data['id'])->sum('amount'); })->toArray(); $count = CostProject::where($where)->count(); 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')); } //项目提成统计 public function project_commission_statistics(){ $params = $this->request->get(); $page_no = !empty($params['page_no']) ? $params['page_no'] : 1; $page_size = !empty($params['page_size']) ? $params['page_size'] : 15; $where = []; if(!empty($params['project_name'])){ $where[] = ['project_name','like','%'.$params['project_name'].'%']; } if(!empty($params['date'])){ $date = explode(',',$params['date']); $where[] = ['apptime','between',[strtotime($date[0].' 00:00:00'),strtotime($date[1].' 23:59:59')]]; } $lists = ProjectCommission::field('id,project_id,apptime')->where($where)->page($page_no, $page_size)->order('id desc')->select()->each(function($data){ $project = CostProject::field('project_name,project_num,contract_id')->where('id',$data['project_id'])->findOrEmpty(); $contract = CostApprovedProject::field('contract_name')->where('id',$project['contract_id'])->findOrEmpty(); $data['project_num'] = $project['project_num']; $data['project_name'] = $project['project_name']; $data['contract_name'] = $contract['contract_name']; $data['children'] = ProjectCommissionDetail::withoutField('engineer_id,remark,create_time,update_time,delete_time') ->where('project_commission_id',$data['id'])->select()->each(function($data){ $data['task_type'] = $data->task_type_text; $data['professional_type'] = $data->professional_type_text; })->toArray(); })->toArray(); $count = ProjectCommission::where($where)->count(); return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size')); } //项目进度统计 public function project_schedule_statistics(){ $params = $this->request->get(); $page_no = !empty($params['page_no']) ? $params['page_no'] : 1; $page_size = !empty($params['page_size']) ? $params['page_size'] : 15; $where = []; if(!empty($params['contract_name'])){ $contract_ids1 = CostApprovedProject::where('contract_name','like','%'.$params['contract_name'].'%')->column('id'); $where[] = ['contract_id','in',$contract_ids1]; } if(!empty($params['project_name'])){ $where[] = ['project_name','like','%'.$params['project_name'].'%']; } $lists = CostProject::field('id,contract_id,project_num,project_name,types,aunit,province,city,starting,endtime,jhgq') ->where($where)->page($page_no, $page_size)->order('id desc')->select()->each(function($data){ $contract = CostApprovedProject::field('contract_name,industry_nature,project_director')->where('id',$data['contract_id'])->findOrEmpty(); $province = GeoProvince::field('province_name')->where('province_code',$data['province'])->findOrEmpty(); $city = GeoCity::field('city_name')->where('city_code',$data['city'])->findOrEmpty(); $schedule = JianliProjectProgressReport::field('start_date,end_date,duration,done_progress')->where('project_id',$data['id'])->findOrEmpty(); $data['contract_name'] = $contract['contract_name']; $data['project_director'] = $contract['project_director']; $data['types'] = $data->types_text; $data['industry_nature'] = $contract->industry_nature_text; $data['project_director'] = $contract['project_director']; $data['province'] = $province['province_name']; $data['city'] = $city['city_name']; $data['actual_starting'] = $schedule['start_date']; $data['actual_endtime'] = $schedule['end_date']; $data['duration'] = $schedule['duration']; $data['done_progress'] = $schedule['done_progress']; })->toArray(); $count = CostProject::where($where)->count(); return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size')); } }