first commit

This commit is contained in:
annnj-company
2026-04-17 18:29:53 +08:00
parent e49fa5a215
commit 130c1026c4
5615 changed files with 1639145 additions and 0 deletions

View File

@@ -0,0 +1,269 @@
<?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;
}
}