This commit is contained in:
weiz 2024-04-15 11:32:22 +08:00
parent 8bc05198d1
commit 376eaefb1d

View File

@ -0,0 +1,187 @@
<?php
namespace app\adminapi\controller\financial;
use app\adminapi\controller\BaseAdminController;
use app\common\model\financial\FinancialBidMargin;
use app\common\model\financial\FinancialBidMarginRecovery;
use app\common\model\financial\FinancialPerformanceMoneyApply;
use app\common\model\financial\FinancialPerformanceMoneyRecovery;
use app\common\model\marketing\MarketingBidEvaluation;
use app\common\model\marketing\MarketingBidInfo;
use app\common\model\marketing\MarketingBusinessOpportunity;
use app\common\model\marketing\MarketingContract;
use app\common\model\marketing\MarketingCustom;
use think\response\Json;
class FinancialBidStatisticsController extends BaseAdminController
{
//投标保证回收查询
public function bid_margin_recovery_search(): 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'] != '') {
$where[] = ['business_opportunity_id', $params['business_opportunity_id']];
}
if (isset($params['part_a']) && $params['part_a'] != '') {
$where[] = ['part_a', $params['part_a']];
}
if (isset($params['create_user']) && $params['create_user'] != '') {
$where[] = ['create_user', 'like', '%' . $params['create_user'] . '%'];
}
if (isset($params['create_time']) && $params['create_time'] != '') {
$date = explode(',', $params['create_time']);
$where[] = ['create_time', 'between', [strtotime($date[0] . ' 00:00:00'), strtotime($date[1] . ' 23:59:59')]];
}
$lists = FinancialBidMarginRecovery::field('business_opportunity_id,part_a,create_user,create_time,recovery_amount,pay_amount')->where($where)
->page($page_no, $page_size)->order('id desc')
->select()->each(function ($data) {
$project = MarketingBusinessOpportunity::field('project_name')->where('id', $data['business_opportunity_id'])->findOrEmpty();
$company = MarketingCustom::field('name')->where('id', $data['part_a'])->findOrEmpty();
$data['project_name'] = $project?->project_name;
$data['part_a_name'] = $company?->name;
})->toArray();
$count = FinancialBidMarginRecovery::where($where)->count();
return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size'));
}
//履约金回收查询
public function performance_money_recovery_search(): 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['contract_id']) && $params['contract_id'] != '') {
$where[] = ['contract_id', $params['contract_id']];
}
if (isset($params['recovery_date']) && $params['recovery_date'] != '') {
$date = explode(',', $params['recovery_date']);
$where[] = ['recovery_date', 'between', [strtotime($date[0] . ' 00:00:00'), strtotime($date[1] . ' 23:59:59')]];
}
if (isset($params['create_user']) && $params['create_user'] != '') {
$where[] = ['create_user', 'like', '%' . $params['create_user'] . '%'];
}
$lists = FinancialPerformanceMoneyRecovery::field('contract_id,recovery_amount,recovery_date,create_user,create_time')->where($where)
->page($page_no, $page_size)->order('id desc')
->select()->each(function ($data) {
$contract = MarketingContract::field('contract_name,part_a,performance_money,performance_money_expiration_time')->where('id', $data['contract_id'])->findOrEmpty();
$part_a = MarketingCustom::field('name')->where('id', $contract['part_a'])->findOrEmpty();
$data['contract_name'] = $contract?->contract_name;
$data['part_a'] = $part_a?->name;
$data['performance_money'] = $contract?->performance_money;
$data['performance_money_expiration_time'] = $contract?->performance_money_expiration_time;
})->toArray();
$count = FinancialPerformanceMoneyRecovery::where($where)->count();
return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size'));
}
//履约金一览表
public function performance_money_list(): 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['contract_id']) && $params['contract_id'] != '') {
$where[] = ['contract_id', $params['contract_id']];
}
if (isset($params['part_a']) && $params['part_a'] != '') {
$contract_ids = MarketingContract::where('party_a', $params['party_a'])->column('id');
$where[] = ['contract_id', 'in', $contract_ids];
}
if (isset($params['performance_money_expiration_time']) && $params['performance_money_expiration_time'] != '') {
$date = explode(',', $params['performance_money_expiration_time']);
$where[] = ['performance_money_expiration_time', 'between', [strtotime($date[0] . ' 00:00:00'), strtotime($date[1] . ' 23:59:59')]];
}
$lists = MarketingContract::field('id,contract_name,part_a,performance_money,performance_money_expiration_time')->where($where)
->page($page_no, $page_size)->order('id desc')
->select()->each(function ($data) {
$part_a = MarketingCustom::field('name')->where('id', $data['part_a'])->findOrEmpty();
$data['part_a'] = $part_a?->name;
$data['performance_money'] = $data?->performance_money;
$data['performance_money_expiration_time'] = $data?->performance_money_expiration_time;
$performance_money_apply = FinancialPerformanceMoneyApply::where('contract_id', $data['id'])->findOrEmpty();
if ($performance_money_apply->isEmpty()) {
$data['apply_status'] = '未申请';
} else {
$data['apply_status'] = '已申请';
}
$performance_money_recovery = FinancialPerformanceMoneyRecovery::where('contract_id', $data['id'])->findOrEmpty();
if ($performance_money_recovery->isEmpty()) {
$data['recovery_status'] = '未回收';
} else {
$data['recovery_status'] = '已回收';
}
})->toArray();
$count = MarketingContract::where($where)->count();
return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size'));
}
//保证金一览表
public function bid_margin_list(): 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_ids0 = MarketingBidEvaluation::where('business_opportunity_id', $params['business_opportunity_id'])->column('id');
$where[] = ['bid_evaluation_id', 'in', $bid_evaluation_ids0];
}
if (isset($params['construct_company']) && $params['construct_company'] != '') {
$business_opportunity_ids = MarketingBusinessOpportunity::where('construct_company', $params['construct_company'])->column('id');
$bid_evaluation_ids = MarketingBidEvaluation::where('business_opportunity_id', 'in', $business_opportunity_ids)->column('id');
$where[] = ['bid_evaluation_id', 'in', $bid_evaluation_ids];
}
$lists = MarketingBidInfo::field('id,bid_evaluation_id,margin_end_date,expected_return_date')->where($where)->where('bid_status', 1)
->page($page_no, $page_size)->order('id desc')
->select()->each(function ($data) {
$bid_evaluation = MarketingBidEvaluation::field('business_opportunity_id,bid_margin')->where('id', $data['bid_evaluation_id'])->findOrEmpty();
$business_opportunity = MarketingBusinessOpportunity::field('project_name,construct_company')->where('id', $bid_evaluation['business_opportunity_id'])->findOrEmpty();
$construct_company = MarketingCustom::field('name')->where('id', $business_opportunity['construct_company'])->findOrEmpty();
$data['bid_margin'] = $bid_evaluation?->bid_margin;
$data['project_name'] = $business_opportunity?->project_name;
$data['construct_company'] = $construct_company?->name;
$bid_margin_apply = FinancialBidMargin::where('bid_info_id', $data['id'])->findOrEmpty();
if ($bid_margin_apply->isEmpty()) {
$data['apply_status'] = '未申请';
} else {
$data['apply_status'] = '已申请';
}
$bid_margin_recovery = FinancialBidMarginRecovery::where('bid_info_id', $data['id'])->findOrEmpty();
if ($bid_margin_recovery->isEmpty()) {
$data['recovery_status'] = '未回收';
$data['payment_status'] = '未支付';
} else {
$data['recovery_status'] = '已回收';
if (!empty($bid_margin_recovery['pay_date']) && !empty($bid_margin_recovery['pay_amount'])) {
$data['payment_status'] = '已支付';
} else {
$data['payment_status'] = '未支付';
}
}
})->toArray();
$count = MarketingBidInfo::where($where)->count();
return $this->success('成功', compact('count', 'lists', 'page_no', 'page_size'));
}
//保证金统计表
public function bid_margin_statistics(): Json
{
$total = MarketingBidInfo::where('bid_status', 1)->count();
$ytj = FinancialBidMargin::count();
$yhs = FinancialBidMarginRecovery::count();
$column = [0 => '提交总数', 1 => '未提交数', 2 => '待回收数'];
$data = [
['name' => '提交总数', 'value' => $total],
['name' => '未提交数', 'value' => $total - $ytj],
['name' => '待回收数', 'value' => $total - $yhs],
];
return $this->success('success', compact('column', 'data'));
}
}