diff --git a/app/adminapi/controller/marketing/MarketingBidStatisticsController.php b/app/adminapi/controller/marketing/MarketingBidStatisticsController.php new file mode 100644 index 000000000..64dc50a59 --- /dev/null +++ b/app/adminapi/controller/marketing/MarketingBidStatisticsController.php @@ -0,0 +1,119 @@ +<?php + + namespace app\adminapi\controller\marketing; + + use app\adminapi\controller\BaseAdminController; + use app\common\model\auth\Admin; + use app\common\model\bid\BidResult; + use app\common\model\dict\DictData; + use app\common\model\marketing\MarketingBidEvaluation; + use app\common\model\marketing\MarketingBidInfo; + use app\common\model\marketing\MarketingBidResult; + use app\common\model\marketing\MarketingBusinessOpportunity; + use app\common\model\marketing\MarketingCustom; + use think\response\Json; + + class MarketingBidStatisticsController extends BaseAdminController + { + //中标项目一览表 + public function winningProject(): Json + { + $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 (isset($params['business_opportunity_id']) && $params['business_opportunity_id'] != '') { + $bid_evaluation_ids = MarketingBidEvaluation::where('business_opportunity_id', $params['business_opportunity_id'])->column('id'); + $bid_info_ids = MarketingBidInfo::where('bid_evaluation_id', 'in', $bid_evaluation_ids)->column('id'); + $where[] = ['bid_info_id', 'in', $bid_info_ids]; + } + if (isset($params['bid_head']) && $params['bid_head'] != '') { + $bid_info_ids1 = MarketingBidInfo::where('bid_head', $params['bid_head'])->column('id'); + $where[] = ['bid_info_id', 'in', $bid_info_ids1]; + } + if (isset($params['bid_open_date']) && $params['bid_open_date'] != '') { + $date = explode(',', $params['bid_open_date']); + $where[] = ['bid_open_date', 'between', [strtotime($date[0] . ' 00:00:00'), strtotime($date[1] . ' 23:59:59')]]; + } + $lists = BidResult::field('bid_result_code,bid_info_id,quotation,bid_open_date,manager')->where($where) + ->page($page_no, $page_size)->order('id desc') + ->select()->each(function ($data) { + $bid_info = MarketingBidInfo::field('bid_evaluation_id,bid_head')->where('id', $data['bid_info_id'])->findOrEmpty(); + $bid_evaluation = MarketingBidEvaluation::field('business_opportunity_id,bid_type')->where('id', $bid_info['bid_evaluation_id'])->findOrEmpty(); + $business_opportunity = MarketingBusinessOpportunity::field('project_name,construct_company,total_investment,industry_nature,project_address')->where('id', $bid_evaluation['business_opportunity_id'])->findOrEmpty(); + $construct_company = MarketingCustom::field('name')->where('id', $business_opportunity['construct_company'])->findOrEmpty(); + $bid_head = Admin::field('name')->where('id', $bid_info['bid_head'])->findOrEmpty(); + $manager = Admin::field('name')->where('id', $data['manager'])->findOrEmpty(); + $data['project_name'] = $business_opportunity?->project_name; + $data['construct_company'] = $construct_company?->name; + $data['total_investment'] = $business_opportunity?->total_investment; + $data['project_address'] = $business_opportunity?->project_address; + $data['industry_nature'] = $business_opportunity?->industry_nature_text; + $data['bid_type'] = $bid_evaluation?->bid_type_text; + $data['bid_head'] = $bid_head?->name; + $data['manager'] = $manager?->name; + })->toArray(); + $count = BidResult::where($where)->count(); + return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size')); + } + + //投标项目状态明细表 + public function bidProjectStatus(): Json + { + $status = [0 => '未启动投标', 1 => '参与投标', 2 => '未开标', 3 => '已中标', 4 => '未中标']; + $data = []; + foreach ($status as $k => $v) { + $count = MarketingBusinessOpportunity::field('id')->where('status', $k)->count(); + $data[] = [ + 'name' => $v, + 'value' => $count + ]; + } + return $this->success('success', compact('status', 'data')); + } + + //投标项目数量明细表 + public function bidProjectNum(): Json + { + $column = [0 => '未启动投标', 1 => '参与投标', 2 => '未开标', 3 => '已中标', 4 => '未中标']; + $series = [ + 'name' => '数量', + 'data' => [] + ]; + foreach ($column as $k => $v) { + $series['data'][] = MarketingBusinessOpportunity::field('id')->where('status', $k)->count(); + } + $result = [ + 'column' => $column, + 'series' => $series + ]; + return $this->success('success', $result); + } + + //投标项目分析 + public function bidProjectAnalysis(): Json + { + $column = DictData::where('type_value', 'cost_consultation_business_nature')->column('name', 'value'); + $series = [ + 'name' => '数量', + 'data' => [] + ]; + foreach ($column as $k => $v) { + $business_opportunity_ids = MarketingBusinessOpportunity::where('business_nature', $k)->column('id'); + $bid_evaluation_ids = MarketingBidEvaluation::where('business_opportunity_id', 'in', $business_opportunity_ids)->column('id'); + $bid_info_ids = MarketingBidInfo::where('bid_evaluation_id', 'in', $bid_evaluation_ids)->column('id'); + $series['data'][] = MarketingBidResult::field('id')->where('bid_info_id', 'in', $bid_info_ids)->count(); + } + $result = [ + 'column' => $column, + 'series' => $series + ]; + return $this->success('success', $result); + } + + //行业投标分析 + public function bidIndustryAnalysis() + { + + } + } \ No newline at end of file diff --git a/app/adminapi/lists/marketing/MarketingCompetitorLists.php b/app/adminapi/lists/marketing/MarketingCompetitorLists.php index f63aa0205..c8b6c53f7 100644 --- a/app/adminapi/lists/marketing/MarketingCompetitorLists.php +++ b/app/adminapi/lists/marketing/MarketingCompetitorLists.php @@ -55,7 +55,7 @@ */ public function lists(): array { - return MarketingCompetitor::widthoutField('create_time,update_time,delete_time')->where($this->searchWhere) + return MarketingCompetitor::withoutField('create_time,update_time,delete_time')->where($this->searchWhere) ->limit($this->limitOffset, $this->limitLength) ->order(['id' => 'desc']) ->select()->each(function ($data) { diff --git a/app/adminapi/logic/marketing/MarketingCompetitorLogic.php b/app/adminapi/logic/marketing/MarketingCompetitorLogic.php index e5cb807ef..2b6fc4e86 100644 --- a/app/adminapi/logic/marketing/MarketingCompetitorLogic.php +++ b/app/adminapi/logic/marketing/MarketingCompetitorLogic.php @@ -121,7 +121,7 @@ */ public static function detail($params): array { - $data = MarketingCompetitor::widthoutField('create_time,update_time,delete_time')->findOrEmpty($params['id']); + $data = MarketingCompetitor::withoutField('create_time,update_time,delete_time')->findOrEmpty($params['id']); $data['company_type_text'] = $data->company_type_text; return $data->toArray(); }