Files
pgserver3.0/pgserver/application/model/CebEsz012Result.php
annnj-company 130c1026c4 first commit
2026-04-17 18:29:53 +08:00

404 lines
14 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace app\model;
use think\Db;
use think\db\Where;
use app\lib\AuthApi;
use think\Cache;
class CebEsz012Result extends Base
{
/**
* 获取评估报告文件名
*
* @param [stirng] $bussnessNo 业务编号
* @param [stirng] $companyCode 评估公司编码
* @param [stirng] $businessType 业务编号
* @return [string] 通过组合报告名
*/
public function getReportFileName( $bussnessNo,$companyCode,$businessType)
{
return $bussnessNo.$companyCode.$businessType;
}
/**
* 获取中国光大银行询价结果列表
* @Author owen
* @DateTime 2023-03-13
* @version 2.0
* @param array $field 查询字段值
* @param array $where 查询条件
* @param array $paginate 分页设置
* @return array
*/
public function getResultList($page,$limit){
$res = Db::name('ceb_report_result')->alias("cir")
->leftJoin('pg_inquiry pi','pi.business_no = cir.business_no')
->leftJoin('pg_property_cert_info pid','pid.quot_id= pi.id')
->field('cir.*,if(cir.update_time,cir.update_time,cir.create_time) as time')
->field('pid.property_full_name,pi.bank_name,pi.bank_sub_name,pi.bank_customer_mgr_name')
->order("time","desc")
//->where($where)
// ->page($page)
// ->limit($limit)
->select();
return $res;
}
//获取用户列表
public function getUserList()
{
$userList = cache('userList');
if (!$userList ) {
$Auth = new AuthApi();
$user_list = $Auth->getUserList();
$ret = json_decode($user_list,true);
if($ret['code'] == 200){
cache('userList',$ret['data']);
return $ret['data'];
}else {
return null;
}
}
return $userList;
}
public function getUserPhone($nickname) {
$userList = $this->getUserList();
$arrlen = count($userList);
$phone ='unknown';
for ($i = 0; $i < $arrlen; $i += 1) {
if ($userList[$i]['userNickName'] == $nickname){
$phone = $userList[$i]['phonenumber'];
break;
}
}
return $phone;
}
/**
* 检查此Inquiry是否存在 function
*
* @param [type] $quot_id 请求id
* @return array 返回inquiry表中 id 数组 { 1='id1', 2='id2'}
*
*/
public function checkReportIsReady($quot_id) {
$res = Db::name('inquiry')
->field('id')
->where(['id'=>$quot_id])
->select();
return $res;
}
/**
* 组装中国光大银行询价结果
* businessNo 业务编号 是 String 32 回显
* companyCode 评估公司编号 是 String 10 回显
* estimateDealNo 评估交易编号 是 String 32 评估公司编号+自定义编号
* businessType 业务类型 是 String 10 回显
* certificateNo 房产证书编号 否 String 64 单一不动产必填
* totalPrice 评估总价 否 NUMBER (18,2) 询价成功时必填,询价失败时可不填
* chargeAmt 收费金额 否 NUMBER (18,2) 该笔业务评估预计支付费用(贷中询价必填)
* status 评估状态 是 String 2 01-询价成功 02-询价失败
* evaluatorName 评估师姓名 否 String 100 人工询价时必填
* telephoneNumber 评估师电话 否 String 32 人工询价时必填
* field1 预留字段1 否 String 100
* field2 预留字段2 否 String 100
* field3 预留字段3 否 String 100
* estimateTime 公司评估时间 是 Timestamp 6 评估公司返回评估结果时的系统时间
* @Author owen
* @DateTime 2023-03-13
* @version 2.0
* @param string $preEstimateNo 预评估编号
* @return object
*/
/**
* 预告
*/
public const BUSINESS_TYPE_PREREPORT = '03'; //
/**
* 正式预告
*/
public const BUSINESS_TYPE_REPORT = '04';
public function builfFailedResult($businessNo,$estimateDealNo,$businessType,$reason, $report_type){
$ret['business_no'] = $businessNo;
$ret['company_code'] = '04';
$ret['business_type'] = $businessType; //业务类型 03-贷中预评估 04-正式评估
$ret['estimate_deal_no'] = $estimateDealNo;//评估交易编号
$ret['eva_total_value'] = '0';
$ret['return_report_type' ] = $report_type;
$ret['eva_unit_price'] = '0';//评估单价
$ret['total_tax'] = '0';
$ret['detail_tax'] = '';
$ret['charge_amt'] = "0";
$ret['guide_price'] = '0';
$ret['eva_net_value'] = '0';
$ret['field1'] = date('Y-m-d H:i:s');//光大银行要求如果是退回操作,填写当前日期
$ret['field2'] = "";
$ret['field3'] = "";
$ret['estimate_report_name'] = '';
$ret['estimate_report_end'] = '';
$ret['estimate_report_path'] = '';
$ret['mortgagor1'] = '';
$ret['mortgagor2'] = '';
$ret['mortgagor3'] = '';
$ret['mortgagor4'] = '';
$ret['mortgagor5'] = '';
$ret['mortgagor6'] = '';
$ret['estimate_time'] = date('Y-m-d H:i:s');
$ret['result_status'] = '02';
$ret['handle_status'] = '2';
$ret['reason'] = $reason;
return $ret;
}
/**
* 组装报告结果数据 function
*
* @param [type] $quot_id 请求id
* @param [type] $businessNo 业务id
* @return void
*/
public function buildResult($quot_id, $businessNo, $business_type) {
$res = Db::name('inquiry')->alias('i')
->leftJoin('pg_property_cert_info d', 'i.id=d.quot_id')
->leftJoin('(select property_cert_info_id,eva_total_value,guide_price,area,eva_total_value,
appraiser_name, create_time,total_taxes1,eva_unit_price
from `pg_return_price` t1
INNER JOIN (select max(create_time) as lastUpdate
from `pg_return_price`
GROUP BY property_cert_info_id) t2 ON t2.lastUpdate = t1.create_time
) as rp', 'rp.property_cert_info_id=d.id')
->field('i.estimated_no,
i.order_no,
rp.eva_total_value,
rp.appraiser_name,
rp.create_time,
rp.total_taxes1,
rp.eva_unit_price,
rp.guide_price,
rp.area,
rp.eva_total_value,
d.obligee
')
->where('i.id',$quot_id)
->selectOrFail();
$res = $res[0];
$ri = Db::name('ceb_report_apply')
->field('business_no,company_code,estimate_deal_no,business_type,file_name,file_end,file_path')
->where(['business_no' => $businessNo, 'business_type' => $business_type])
->selectOrFail();
$total_info = $this->getTotalReturnPrice( $quot_id );
$ri = $ri[0];
$ret['business_no'] = $ri['business_no'];
$ret['company_code'] = $ri['company_code'];
$ret['business_type'] = $business_type; //业务类型 03-贷中预评估 04-正式评估
$ret['estimate_deal_no'] = $ri['estimate_deal_no'];//评估交易编号
$ret['eva_total_value'] = strval($total_info['total_all_assestment']); //strval($res['eva_total_value']);
$ret['eva_unit_price'] = strval($res['eva_unit_price']);//评估单价
$ret['total_tax'] = strval($total_info['total_all_tax']);//strval($res['total_taxes1']); // 总税费
$ret['detail_tax'] = $this->getTaxDetailStr($quot_id);
$ret['charge_amt'] = "600.00";
$ret['guide_price'] = sprintf('%.2f',$res['guide_price']*$res['area']);
$ret['eva_net_value'] = strval($res['eva_total_value']);
$ret['evaluator_name'] = $res['appraiser_name'];
$ret['estimate_report_name'] = $this->getReportFileName($ret['business_no'] , $ret['company_code'],$ret['business_type'] );
$ret['estimate_report_end'] = 'pdf';
$report = new Report();
$makeTime = $report->getReportMakeTimeByInquiryDetailID( $quot_id );
$ret['field1'] = date('Y-m-d', strtotime( $makeTime."+1 year"));//
if($business_type =='03'){
$ret['estimate_report_path'] = '/cebbank/inLoan/save/' . date('Ymd') . '/';
}else {
$ret['estimate_report_path'] = '/cebbank/formLoan/save/' . date('Ymd') . '/';
}
$ret['reason'] = '';
// 如果业务类型是报告,才显示权利人
if( CebReportResult::BUSINESS_TYPE_REPORT == $business_type)
{
//抵押人(权利人)
$mortgagor_list = explode(',',$res['obligee']);//权利人
for($i=0;$i < 6;$i++)
{
if($i<count($mortgagor_list) ) //不能大于6个抵押人权利人)
{
$ret['mortgagor'.($i+1)] = $mortgagor_list[$i];
}
else
{
$ret['mortgagor'.($i+1)] = '';
}
}
}
$phone = $this->getUserPhone($res['appraiser_name']);
$ret['telephone_number'] = $phone;
$ret['estimate_time'] = date('Y-m-d H:i:s',$res['create_time']);
$ret['result_status'] = '01';
$ret['handle_status'] = '2';
return $ret;
}
/**
* 通过 Inquiry_id 获取资产总值和税费总值
*
* @param [int] $inquiryID
* @return [array] [total_all_assestment,total_all_tax ]
*/
private function getTotalReturnPrice( $inquiryID)
{
$tRp = new ReturnPrice();
$property_cert_info = new Property_cert_info();
$detailList = $property_cert_info->getListByInquiryID( $inquiryID );
$total_all_assestment = 0;
$total_all_tax = 0;
foreach( $detailList as $detail )
{
$rprice = $tRp->getNewInfoByInquiryDetailID( $detail['id'] );
$total_all_assestment += $rprice['eva_total_value'];
$total_all_tax += $rprice['total_taxes1'];
}
return [ 'total_all_assestment'=>$total_all_assestment, 'total_all_tax'=>$total_all_tax ];
}
public static $TAX_COL = [
'corporate_income_tax',//企业所得税
'urban_construction_tax',//城建税
'deed_tax',//契税
'stamp_duty',//印花税
'land_value_added_tax',//土地增值税
'personal_income_tax',//个人所得税
'added_tax',//增值税
'edu_surcharge',//教育附加税
];
public static $TAX_COL_STR = [
'企业所得税',
'城建税',
'契税',
'印花税',
'土地增值税',
'个人所得税',
'增值税',
'教育附加税'
];
/**
* 获取税费的文字说明 function
*
* @param [type] $quot_id
* @return []string] (土增税xxx元;个人所得税:xxxxx元)
*/
private function getTaxDetailStr( $quot_id )
{
$iDetailInfo = Db::name('property_cert_info')->where(['quot_id'=>$quot_id])->field('id')->select();
if( 0 ==count($iDetailInfo) )
{
return "";
}
$rpList = Db::name('return_price')->where(['property_cert_info_id'=> $iDetailInfo[0]['id']])->order('create_time','desc')->select();
if( 0== count($rpList))
{
return "";
}
$totalTaxList = [];
$idx = 0;
// 计算税费总值
for($idx=0;$idx<count(CebReportResult::$TAX_COL);$idx++)
{
$colName = CebReportResult::$TAX_COL[$idx];
if(!isset($totalTaxList[$colName]))
{
$totalTaxList[$colName] = 0;
}
$totalTaxList[$colName] += $rpList[0][$colName];
}
$strTaxDetail = "";
// 组合税费字符串
for($i=0;$i<count(CebReportResult::$TAX_COL);$i++)
{
$colName = CebReportResult::$TAX_COL[$i];
if (!isset($totalTaxList[ $colName ]))
{
continue;
}
$val = $totalTaxList[ $colName ];
if( $val == ''|| $val == null || $val == 0 ) continue;
// 非第一条
if($strTaxDetail != '')
{
$strTaxDetail = $strTaxDetail.';'.CebReportResult::$TAX_COL_STR[$i].':'.$val.'元';
}
else{
$strTaxDetail = CebReportResult::$TAX_COL_STR[$i].':'.$val.'元';
}
}
return $strTaxDetail;
}
public function deleteResult($businessNo) {
Db::name('ceb_report_result')->where('business_no',$businessNo)->delete();
}
public function insertResult($data){
// var_dump($data);
Db::startTrans();
$this->business_no = $data['business_no'];
$this->company_code = $data['company_code'];
$this->estimate_deal_no = $data['estimate_deal_no'];
$this->business_type = $data['business_type'];
$this->eva_unit_price = $data['eva_unit_price'];
$this->eva_total_value = $data['eva_total_value'];
$this->total_tax = $data['total_tax'];
$this->detail_tax = $data['detail_tax'];
$this->charge_amt = $data['charge_amt'];
$this->result_status = $data['result_status'];
//$this->evaluator_name = $data['evaluator_name'];
//$this->telephone_number = $data['telephone_number'];
$this->estimate_time = $data['estimate_time'];
$this->handle_status = $data['handle_status'];
$this->reason = $data['reason'];
$this->estimate_report_name = $data['estimate_report_name'];
$this->estimate_report_end = $data['estimate_report_end'];
$this->estimate_report_path = $data['estimate_report_path'];
$this->create_time = date('Y-m-d H:i:s');
$this->update_time = date('Y-m-d H:i:s');
if (!$this->save()){
Db::rollback();
return false;
}
Db::commit();
return true;
}
}
?>