['work_type'], '%like%' => ['name', 'mobile'], ]; } /** * @notes 获取项目人员列表 * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException * @author likeadmin * @date 2023/12/22 14:38 */ public function lists(): array { return ProjectPersonnel::where($this->searchWhere) ->field(['id', 'project_id', 'name', 'idcard', 'mobile', 'work_type', 'unit_price', 'daily_living_expenses', 'idcard_front', 'idcard_backend', 'bank_card', 'bank_no', 'deposit_bank', 'remark', 'opening_income']) ->limit($this->limitOffset, $this->limitLength) ->order(['id' => 'desc']) ->select()->each(function($item){ $item['work_type_text'] = $item->work_type_text; $project = Project::field('name,project_code')->where('id',$item['project_id'])->findOrEmpty(); $item['project_name'] = $project['name']; $item['project_code'] = $project['project_code']; $item['daily_income'] = ProjectAttendanceDetail::where('person_id',$item['id'])->sum('daily_income'); $build_report_details = BuildReportDetail::field('report_id,work_num')->where('person_id',$item['id'])->select()->each(function($item2){ $report = BuildReport::field('plan_id')->where('id',$item2['report_id'])->findOrEmpty(); $plan = BuildPlan::field('price')->where('id',$report['plan_id'])->findOrEmpty(); $item2['amount'] = $item2['work_num'] * $plan['price']; })->toArray(); $work_income = 0; foreach($build_report_details as $v){ $work_income += $v['amount']; } $item['work_income'] = $work_income; $item['total_income'] = $item['daily_income'] + $item['work_income']; $item['pay_out'] = ProjectSalaryDetail::where('person_id',$item['id'])->sum('apply_amount'); $item['balance'] = $item['total_income'] - $item['pay_out']; return $item; }) ->toArray(); } /** * @notes 获取项目人员数量 * @return int * @author likeadmin * @date 2023/12/22 14:38 */ public function count(): int { return ProjectPersonnel::where($this->searchWhere)->count(); } }