269 lines
12 KiB
PHP
269 lines
12 KiB
PHP
<?php
|
||
|
||
|
||
namespace app\model;
|
||
|
||
|
||
use think\Db;
|
||
|
||
class MethodFormal extends Base
|
||
{
|
||
protected $type = [
|
||
'transaction_instance' => 'json',
|
||
'transaction_situation' => 'json',
|
||
'transaction_date' => 'json',
|
||
'area_situation' => 'json',
|
||
'equity_situation' => 'json',
|
||
'matter_situation' => 'json',
|
||
'total_situation' => 'json',
|
||
];
|
||
|
||
//交易实例
|
||
public function getTransactionInstance($arr, $data) {
|
||
$result = [];
|
||
$surveyInfo = Db::name('survey')->alias('x')->join('survey_detail d', 'x.id=d.survey_id')->where('x.property_cert_info_id', $data['property_cert_info_id'])->field('floor_no')->find();
|
||
$priceInfo = Db::name('return_price')->where('property_cert_info_id', $data['property_cert_info_id'])->order('id', 'desc')->field('eva_unit_price')->find();
|
||
$traffic = '交通便利';
|
||
$matching = '配套设施齐全';
|
||
$transaction = '正常买卖交易';
|
||
$remark = '以上三个案例在交易日期、交易情况、区位状况、权益状况及实物状况上与估价对象具有较强的可比性和相关性';
|
||
foreach ($arr as $key => $value) {
|
||
$res = ['one' => '', 'two' => '', 'three' => ''];
|
||
switch ($value) {
|
||
case 'building_name':
|
||
$res = ['one' => $data['building_name'], 'two' => $data['building_name'], 'three' => $data['building_name']];
|
||
break;
|
||
case 'land_location':
|
||
$res = ['one' => $data['land_location'], 'two' => $data['land_location'], 'three' => $data['land_location']];
|
||
break;
|
||
case 'traffic':
|
||
$res = ['one' => $traffic, 'two' => $traffic, 'three' => $traffic];
|
||
break;
|
||
case 'matching':
|
||
$res = ['one' => $matching, 'two' => $matching, 'three' => $matching];
|
||
break;
|
||
case 'transaction':
|
||
$res = ['one' => $transaction, 'two' => $transaction, 'three' => $transaction];
|
||
break;
|
||
case 'transaction_date':
|
||
$res = ['one' => date('Y年m月', strtotime(" last day of -3 month", time())), 'two' => date('Y年m月', strtotime(" last day of -2 month", time())), 'three' => date('Y年m月', strtotime(" last day of -1 month", time()))];
|
||
break;
|
||
case 'floor':
|
||
$res = [
|
||
'one' => isset($surveyInfo['floor_no'])&&!empty($surveyInfo['floor_no'])?$surveyInfo['floor_no'].'层': '',
|
||
'two' => isset($surveyInfo['floor_no'])&&!empty($surveyInfo['floor_no'])?$surveyInfo['floor_no'].'层': '',
|
||
'three' => isset($surveyInfo['floor_no'])&&!empty($surveyInfo['floor_no'])?$surveyInfo['floor_no'].'层': ''
|
||
];
|
||
break;
|
||
case 'price':
|
||
$res = ['one' => number_format(intval((1*$priceInfo['eva_unit_price']) - 200)), 'two' => number_format(intval((1*$priceInfo['eva_unit_price']))), 'three' => number_format(intval((1*$priceInfo['eva_unit_price']) + 200))];
|
||
break;
|
||
case 'remark':
|
||
$res = ['value' => $remark];
|
||
break;
|
||
}
|
||
$result[$value] = $res;
|
||
}
|
||
return $result;
|
||
}
|
||
|
||
//交易情况
|
||
public function getTransactionSituation($arr) {
|
||
$result = [];
|
||
$transaction = '正常买卖交易';
|
||
$analysis = '以正常交易价格为基准,设为100。本评估中,所选案例均为正常交易,所以分值均为100。';
|
||
foreach ($arr as $key => $value) {
|
||
$res = ['name' => '', 'one' => '', 'two' => '', 'three' => ''];
|
||
switch ($value) {
|
||
case 'transaction':
|
||
$res = ['name' => $transaction, 'one' => $transaction, 'two' => $transaction, 'three' => $transaction];
|
||
break;
|
||
case 'analysis':
|
||
$res = ['value' => $analysis];
|
||
break;
|
||
case 'evaluate':
|
||
$res = ['name' => '100', 'one' => '100', 'two' => '100', 'three' => '100'];
|
||
break;
|
||
}
|
||
$result[$value] = $res;
|
||
}
|
||
return $result;
|
||
}
|
||
|
||
//交易日期
|
||
public function getTransactionDate($arr, $reportid) {
|
||
$result = [];
|
||
$info = Db::name('report')->field('appraisal_time')->where('id', $reportid)->find();
|
||
$appraisal_time = !empty($info['appraisal_time']) ? strtotime($info['appraisal_time']) : time();
|
||
$assessment_date = !empty($info['appraisal_time']) ? date('Y年m月', strtotime($info['appraisal_time'])) : date('Y年m月', time());
|
||
$analysis = '以可比案例交易当时日期为基准,设为100。本评估中,所选案例交易时间与价值时点相近,市场变化或波动较小,所以分值均为100。';
|
||
foreach ($arr as $key => $value) {
|
||
$res = ['name' => '', 'one' => '', 'two' => '', 'three' => ''];
|
||
switch ($value) {
|
||
case 'date':
|
||
$res = ['name' => $assessment_date, 'one' => date('Y年m月', strtotime(" last day of -3 month", $appraisal_time)), 'two' => date('Y年m月', strtotime(" last day of -2 month", $appraisal_time)), 'three' => date('Y年m月', strtotime(" last day of -1 month", $appraisal_time))];
|
||
break;
|
||
case 'analysis':
|
||
$res = ['value' => $analysis];
|
||
break;
|
||
case 'evaluate':
|
||
$res = ['name' => '100', 'one' => '100', 'two' => '100', 'three' => '100'];
|
||
break;
|
||
}
|
||
$result[$value] = $res;
|
||
}
|
||
return $result;
|
||
}
|
||
|
||
//区位状况
|
||
public function getAreaSituation($arr) {
|
||
$result = [];
|
||
foreach ($arr as $key => $value) {
|
||
$res = ['name' => '', 'one' => '', 'two' => '', 'three' => ''];
|
||
switch ($value) {
|
||
case 'centre':
|
||
$res = ['name' => '10', 'one' => '10', 'two' => '10', 'three' => '10'];
|
||
break;
|
||
case 'gather':
|
||
$res = ['name' => '20', 'one' => '20', 'two' => '20', 'three' => '20'];
|
||
break;
|
||
case 'parking':
|
||
$res = ['name' => '10', 'one' => '10', 'two' => '10', 'three' => '10'];
|
||
break;
|
||
case 'scenery':
|
||
$res = ['name' => '10', 'one' => '10', 'two' => '10', 'three' => '10'];
|
||
break;
|
||
case 'service':
|
||
$res = ['name' => '10', 'one' => '10', 'two' => '10', 'three' => '10'];
|
||
break;
|
||
case 'station':
|
||
$res = ['name' => '10', 'one' => '10', 'two' => '10', 'three' => '10'];
|
||
break;
|
||
case 'transit':
|
||
$res = ['name' => '10', 'one' => '10', 'two' => '10', 'three' => '10'];
|
||
break;
|
||
case 'security':
|
||
$res = ['name' => '10', 'one' => '10', 'two' => '10', 'three' => '10'];
|
||
break;
|
||
case 'facilities':
|
||
$res = ['name' => '10', 'one' => '10', 'two' => '10', 'three' => '10'];
|
||
break;
|
||
case 'total':
|
||
$res = ['name' => '100', 'one' => '100', 'two' => '100', 'three' => '100'];
|
||
break;
|
||
}
|
||
$result[$value] = $res;
|
||
}
|
||
return $result;
|
||
}
|
||
|
||
//权益状况
|
||
public function getEquitySituation($arr) {
|
||
$result = [];
|
||
$house_text = '标准分为40分,所选案例与估价对象均为完全产权,单独所有,差异小,对市场价值应下影响小,所以不作修正,评分均为40分。';
|
||
$land_text = '标准分为40分,所选案例与估价对象的土地剩余使用年限、建筑容积率等差异较小,根据市场调研,以上参数在差异较小的情况下对市场交易价值影响较小,所以不作修正,评分均为40分。';
|
||
$interest_text = '标准分为20分,所选案例与估价对象的均有抵押权,根据市场调研,抵押物业交易对市场交易价值影响较小,所以不作修正,评分均为20分。';
|
||
foreach ($arr as $key => $value) {
|
||
$res = ['name' => '', 'one' => '', 'two' => '', 'three' => '', 'text' => ''];
|
||
switch ($value) {
|
||
case 'house':
|
||
$res = ['name' => '40', 'one' => '40', 'two' => '40', 'three' => '40', 'text' => $house_text];
|
||
break;
|
||
case 'land':
|
||
$res = ['name' => '40', 'one' => '40', 'two' => '40', 'three' => '40', 'text' => $land_text];
|
||
break;
|
||
case 'interest':
|
||
$res = ['name' => '20', 'one' => '20', 'two' => '20', 'three' => '20', 'text' => $interest_text];
|
||
break;
|
||
case 'total':
|
||
$res = ['name' => '100', 'one' => '100', 'two' => '100', 'three' => '100'];
|
||
break;
|
||
}
|
||
$result[$value] = $res;
|
||
}
|
||
return $result;
|
||
}
|
||
|
||
//实物状况
|
||
public function getMatterSituation($arr) {
|
||
$result = [];
|
||
foreach ($arr as $key => $value) {
|
||
$res = ['name' => '', 'one' => '', 'two' => '', 'three' => ''];
|
||
switch ($value) {
|
||
case 'newness':
|
||
$res = ['name' => '10', 'one' => '10', 'two' => '10', 'three' => '10'];
|
||
break;
|
||
case 'property_type':
|
||
$res = ['name' => '10', 'one' => '8', 'two' => '10', 'three' => '12'];
|
||
break;
|
||
case 'direction':
|
||
$res = ['name' => '20', 'one' => '20', 'two' => '20', 'three' => '20'];
|
||
break;
|
||
case 'floor':
|
||
$res = ['name' => '20', 'one' => '20', 'two' => '20', 'three' => '20'];
|
||
break;
|
||
case 'scenery':
|
||
$res = ['name' => '10', 'one' => '10', 'two' => '10', 'three' => '10'];
|
||
break;
|
||
case 'renovation':
|
||
$res = ['name' => '10', 'one' => '10', 'two' => '10', 'three' => '10'];
|
||
break;
|
||
case 'equipment':
|
||
$res = ['name' => '10', 'one' => '10', 'two' => '10', 'three' => '10'];
|
||
break;
|
||
case 'exterior_wall':
|
||
$res = ['name' => '10', 'one' => '10', 'two' => '10', 'three' => '10'];
|
||
break;
|
||
case 'total':
|
||
$res = ['name' => '100', 'one' => '98', 'two' => '100', 'three' => '102'];
|
||
break;
|
||
}
|
||
$result[$value] = $res;
|
||
}
|
||
return $result;
|
||
}
|
||
|
||
//总体情况
|
||
public function getTotalSituation($arr, $data) {
|
||
$result = [];
|
||
$priceInfo = Db::name('return_price')->where('property_cert_info_id', $data['property_cert_info_id'])->order('id', 'desc')->field('eva_unit_price')->find();
|
||
$one = intval((1*$priceInfo['eva_unit_price']) - 200);
|
||
$two = intval((1*$priceInfo['eva_unit_price']));
|
||
$three = intval((1*$priceInfo['eva_unit_price']) + 200);
|
||
$text = '将可比案例修正后的价格按其与估价对象的可比程度取加权平均值作为比准价格,在权重的确定上以可比案例与估价对象可比性的相近程度进行取值,取整至百位。';
|
||
foreach ($arr as $key => $value) {
|
||
$res = ['name' => '', 'one'=>'','two' => '', 'three' => ''];
|
||
switch ($value) {
|
||
case 'price':
|
||
$res = ['name' => '','one'=>$one, 'two' => $two, 'three' => $three];
|
||
break;
|
||
case 'transaction_situation':
|
||
$res = ['name' => '100/100','one'=>'100/100', 'two' => '100/100', 'three' => '100/100'];
|
||
break;
|
||
case 'transaction_date':
|
||
$res = ['name' => '100/100','one'=>'100/100', 'two' => '100/100', 'three' => '100/100'];
|
||
break;
|
||
case 'area_situation':
|
||
$res = ['name' => '100/100','one'=>'100/100', 'two' => '100/100', 'three' => '100/100'];
|
||
break;
|
||
case 'equity_situation':
|
||
$res = ['name' => '100/100','one'=>'100/100', 'two' => '100/100', 'three' => '100/100'];
|
||
break;
|
||
case 'matter_situation':
|
||
$res = ['name' => '100/100','one'=>'100/98', 'two' => '100/100', 'three' => '100/102'];
|
||
break;
|
||
case 'correct_result':
|
||
$res = ['name' => number_format($one * (100/100)),'one'=>number_format($one * (98/100)), 'two' => number_format($two), 'three' => number_format($three * (102/100))];
|
||
break;
|
||
case 'weight':
|
||
$res = ['name' => '1','one'=>'0.33', 'two' => '0.34', 'three' => '0.33'];
|
||
break;
|
||
case 'analysis_result':
|
||
$res = ['value' => number_format($two), 'text' => $text];
|
||
break;
|
||
}
|
||
$result[$value] = $res;
|
||
}
|
||
return $result;
|
||
}
|
||
} |