在Soap Web Service返回的double值的末尾附加了奇怪的零

时间:2011-05-09 12:34:57

标签: php web-services soap

WSDL文件位于:http://www.rasd.ro/BSEFinancialsWS/financials.asmx?WSDL 这是操作页面:http://www.rasd.ro/BSEFinancialsWS/financials.asmx?op=GetCompanyBalance

对于 IdentityType ,请尝试符号

对于身份,请尝试 BVB

对于 ReportType ,请尝试 Q1

年度尝试 2011

基本上,你会得到的是:

> <CompanyBalance> 
> <Company>
>    <CompanyName>SC BURSA DE VALORI BUCURESTI SA</CompanyName>
>    <FiscalCode>17777754</FiscalCode>
> </Company> 
> <LastYear>2011</LastYear>
> <ReportType>Q1</ReportType>
> <NetCrtLiab>64931998</NetCrtLiab>
> <CrtAssets>67220118</CrtAssets>
> <FixedAssets>25299375</FixedAssets>
> <PaidUpCap>76741980</PaidUpCap>
> <ShahEqy>90231373</ShahEqy>
> <OpExp>2975724</OpExp>
> <ExtrExp>0</ExtrExp>
> <FinExp>1411570</FinExp>
> <TotExp>4387294</TotExp>
> <NetTurn>5977651</NetTurn>
> <Debt1>0</Debt1>
> <Debt2>2086920</Debt2>
> <TotLiab>2086920</TotLiab>
> <BackPay>0</BackPay>
> <NoPaidTax>0</NoPaidTax>
> <Empl>57</Empl> <BackLiab>0</BackLiab>
> <BackPaym>0</BackPaym>
> <Gross>2624119</Gross>
> <OpRes>3002199</OpRes>
> <ExtrRes>0</ExtrRes>
> <FinRes>-378080</FinRes>
> <NetRes>2196413</NetRes>
> <CurrRes>2624119</CurrRes>
> <ResPerShare xsi:nil="true"/>
> <TotAssets>90231373</TotAssets>
> <TotReceiv>3368756</TotReceiv>
> <RevInAdv>584055</RevInAdv>
> <OpIncome>5977923</OpIncome>
> <ExIncome>0</ExIncome>
> <FinInc>1033490</FinInc>
> <TotRev>**7011413**</TotRev>
> </CompanyBalance>

注意 TotRev 值?好吧,它应该是s exactly how it。 现在,在我的SoapClient实现中,我有:

...

static $WSConf=array(
        'financials'=>array('host'=>'rasd.ro','port'=>80,'wsdlURL'=>'http://www.rasd.ro/BSEFinancialsWS/financials.asmx?WSDL'),
        'companies'=>array('host'=>'rasd.ro','port'=>80,'wsdlURL'=>'http://www.rasd.ro/BSEFinancialsWS/companiesandsecurities.asmx?WSDL'),);

...

private static function S($name) {

    $name=strtolower($name);

    if(!is_object(self::$soapClients[$name])) {
        self::$soapClients[$name] = new SoapClient(self::$WSConf[$name]['wsdlURL']);    
    }
    if(is_object(self::$soapClients[$name])) {

        self::Delay();

        return self::$soapClients[$name];
    }
    error_log('site.ro '.__FILE__.' error'."\n\n".__FILE__.': '.__CLASS___.'::'.__METHOD__."\n\n msc_WebServBVB2 ".date('Y-M-d H:i:s')."\nCannot init webservice {$name}", 3, WSBVBExtLOG);
}

...

public static function RaportareFinanciara($simbol,$timestampOrAn,$trimestru=false){
        self::timerReset();
        if(empty($trimestru)) {
            $trimestru=utilsDT::Quarter($timestampOrAn);
            $an=date('Y',$timestampOrAn);
        }else{
            $an=$timestampOrAn;
        }



        $IdentityType='Symbol';
        $Identity=$simbol;
        $Year=$an;
        $ReportType=strtr($trimestru,array('1'=>'Q1','2'=>'Semestrial','3'=>'Q3','4'=>'Annual'));

        $balanceType=self::GetBalanceType($IdentityType,$Identity,$ReportType,$Year);
        $type=$balanceType['BalanceType'];
        if(!empty($type)) {

            switch($type) {

                case 'Company':
                    $balance=self::GetCompanyBalance($IdentityType,$Identity,$ReportType,$Year);
                    break;

                case 'Bank':
                    $balance=self::GetBankBalance($IdentityType,$Identity,$ReportType,$Year);
                    break;

                case 'Assurance':
                    $balance=self::GetInsuranceBalance($IdentityType,$Identity,$ReportType,$Year);
                    break;

                case 'Fund':
                    $balance=self::GetInvestmentFundsBalance($IdentityType,$Identity,$ReportType,$Year);
                    break;

                default:
                    return false;
            }


            if(!empty($balance)) {

                if(self::$debug) {
                    self::timerAddAction("Mapping balance fields to compatibility names for ".strtolower($type));   
                }

                if(isset(self::$BVBROAPI_FldCorespCustom[strtolower($type)])) {
                    $FldCoresp=array_merge(self::$BVBROAPI_FldCoresp,self::$BVBROAPI_FldCorespCustom[strtolower($type)]);
                }else{
                    $FldCoresp=self::$BVBROAPI_FldCoresp;
                }

                if(self::$debug) {
                    print_r($FldCoresp);
                }

                $result=array();
                foreach($FldCoresp as $compat_name=>$wsname) {
                    if(isset($balance[$wsname])) {
                        $result[$compat_name]=$balance[$wsname];                        
                    }
                }

                $result['BallanceType']=$type;
                if(!empty($result)) {
                    if(self::$debug) {
                        self::timerPrintInfo();
                    }
                    return $result;
                }
            }
            if(self::$debug) {
                self::timerAddAction("Balance empty");  
            }

        }
        if(self::$debug) {
            self::timerPrintInfo();
        }
        return false;

    }

...

公共静态函数GetCompanyBalance($ IdentityType,$ Identity,$ ReportType,$ Year){         自:: timerReset();

    if(self::$debug) {
        self::timerAddAction("Called GetCompanyBalance ($IdentityType,$Identity,$ReportType,$Year) Method");    
    }   

    $cacheid='webservbvbext_balance'.$IdentityType.$Identity.$ReportType.$Year;

    if(self::$debug) {
        self::timerAddAction("Checking cache");

    }
    if(self::CM()->cacheIsExpired($cacheid)) {


        if(self::$debug) {
            self::timerAddAction("Calling webservice Method");  
        }

        try{

            $rawresult=self::S('Financials')->GetCompanyBalance(array('IdentityType'=>$IdentityType,'Identity'=>$Identity,'ReportType'=>$ReportType,'Year'=>$Year));
        } catch (Exception $e) {
            if(self::$debug) {
                self::timerAddAction('Caught exception: ',  $e->getMessage());  
            }
            return false;
        }



        if(self::$debug) {
            echo '<pre>';
            print_r($rawresult);
            echo '</pre>';  
        }

        if(self::$debug) {
            self::timerAddAction("Mapping array fields");
        }


        if(!empty($rawresult) && sizeof($rawresult)>=1) {
            $fields=array();
            foreach($rawresult->GetCompanyBalanceResult as $key=>$Field) {

                $Field=(is_object($Field) ? (array) $Field : $Field);
                $fields[$key]=$Field;

            }

            if($fields['LastYear']!=$Year || $fields['ReportType']!=$ReportType) {
                return false;
            }


            if(self::$debug) {
                self::timerAddAction("Caching results");

            }

            self::CM()->cacheThis($cacheid,'',self::$cacheTime['Ballance'],$fields,true);


            if(self::$debug) {
                self::timerAddAction("Finished caching. Return data");

            }
            if(self::$debug) {
                self::timerPrintInfo();
            }
            if(!empty($fields)) {
                return $fields;
            }
        }
        return false;

    }else{
        $out=self::CM()->getCached($cacheid);
        if(is_array($out) && !empty($out)) {
            if(self::$debug) {

                self::timerAddAction("Cached Request Details: ".date('Y.m.d H:i:s',self::CM()->cacheTimeStmp($cacheid)));
                self::timerPrintInfo();
            }

            return $out;
        }
        return false;


    }

...

所以运行这样的事情:

    $result=msc_WebServBVBExt::GetCompanyBalance('Symbol','BVB','Q1',2011);



echo "<pre>";
print_r($result);
echo "</pre>";

返回:

Array

(     [公司] =&gt;排列         (             [CompanyName] =&gt; SC BURSA DE VALORI BUCURESTI SA             [FiscalCode] =&gt; 17777754         )

[LastYear] => 2011
[ReportType] => Q1
[NetCrtLiab] => 6493199800
[CrtAssets] => 6722011800
[FixedAssets] => 2529937500
[PaidUpCap] => 7674198000
[ShahEqy] => 9023137300
[OpExp] => 297572400
[ExtrExp] => 0
[FinExp] => 141157000
[TotExp] => 438729400
[NetTurn] => 597765100
[Debt1] => 0
[Debt2] => 208692000
[TotLiab] => 208692000
[BackPay] => 0
[NoPaidTax] => 0
[Empl] => 57
[BackLiab] => 0
[BackPaym] => 0
[Gross] => 262411900
[OpRes] => 300219900
[ExtrRes] => 0
[FinRes] => -37808000
[NetRes] => 219641300
[CurrRes] => 262411900
[ResPerShare] => 
[TotAssets] => 9023137300
[TotReceiv] => 336875600
[RevInAdv] => 58405500
[OpIncome] => 597792300
[ExIncome] => 0
[FinInc] => 103349000
**[TotRev] => 701141300**

}

从最后一个值开始注意到,它在值的末尾附加了2个零。 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

也许这个价值应该是美元和美分。许多金融系统旨在以整数格式存储货币,以整数形式存储,以美元或密尔为单位反对美元。