diff --git a/app/adminapi/controller/CostConsultationReportController.php b/app/adminapi/controller/CostConsultationReportController.php index 010ef19e2..2d04a8868 100644 --- a/app/adminapi/controller/CostConsultationReportController.php +++ b/app/adminapi/controller/CostConsultationReportController.php @@ -68,32 +68,30 @@ class CostConsultationReportController extends BaseAdminController // 造价项目信息汇总 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; - }); + $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'] = 0; + })->toArray(); + $count = CostProject::where($where)->count(); return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size')); } diff --git a/app/adminapi/validate/cost_project/CostProjectValidate.php b/app/adminapi/validate/cost_project/CostProjectValidate.php index e95057ddc..6eaa55404 100644 --- a/app/adminapi/validate/cost_project/CostProjectValidate.php +++ b/app/adminapi/validate/cost_project/CostProjectValidate.php @@ -15,6 +15,7 @@ namespace app\adminapi\validate\cost_project; +use app\common\model\dict\DictData; use app\common\validate\BaseValidate; @@ -119,5 +120,11 @@ class CostProjectValidate extends BaseValidate } return true; } + + public function checkTypes($value): bool|string + { + $dict = DictData::where('type_value','consultation_type')->column('value'); + return !in_array($value,$dict) ? '咨询类型数据值无效' : true; + } } \ No newline at end of file diff --git a/app/common/model/cost_project/CostProject.php b/app/common/model/cost_project/CostProject.php index 14a9abf37..e67cb640a 100644 --- a/app/common/model/cost_project/CostProject.php +++ b/app/common/model/cost_project/CostProject.php @@ -17,6 +17,7 @@ namespace app\common\model\cost_project; use app\common\model\auth\Admin; use app\common\model\BaseModel; +use app\common\model\dict\DictData; use think\model\concern\SoftDelete; @@ -41,6 +42,11 @@ class CostProject extends BaseModel return $this->hasOne(CostProjectContract::class, 'id','contract_id'); } + public function getTypesTextAttr($value,$data){ + $dict = DictData::where('type_value','consultation_type')->column('name','value'); + return !empty($data['types']) ? $dict[$data['types']] : ''; + } + public function getPersonAttr($value){ return !empty($value) ? json_decode($value,true) : ''; }