package ims.sinotrust.bean;
import ims.sinotrust.util.FormatBigDecimal;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import snt.common.dao.base.ICommonDAOService;
import snt.common.web.util.WebUtils;
public class ShareHolderAndStocksBean extends CreditReportViewBean implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private static Log logger = LogFactory.getLog(ShareHolderAndStocksBean.class);
/**
* 出资方式,到位率List
*/
private List<ShareHolderDataBean> shareholderdata;
/**
* 出资额,份额List
*/
private List<StocksDataBean> stockdata;
private String shareTotal;//份额的合计
private String shareMoneyTotal;//出资额 合计
private String title;//为另一个模块提供标题,如果所有股东中,有一个是上市股东那么就显示上级主管单位背景,否则显示主要股东背景。
private boolean exsitHigherAuthorities;//存在上级主管单位这个模块
public String getShareTotal() {
return shareTotal;
}
public void setShareTotal(String shareTotal) {
this.shareTotal = shareTotal;
}
public String getShareMoneyTotal() {
return shareMoneyTotal;
}
public void setShareMoneyTotal(String shareMoneyTotal) {
this.shareMoneyTotal = shareMoneyTotal;
}
/**
* 按输入SBDNum查询股东及股份对象
* @param query
* @param SBDNum
* @return
*/
@SuppressWarnings("unchecked")
public ShareHolderAndStocksBean getShareHolderAndStocksBean(ICommonDAOService query, String SBDNum) {
long stime = System.currentTimeMillis();
String querySql = WebUtils.getMessage("sql", "ShareHolderBean.sql", new Object[]{SBDNum});
logger.debug("新华信编号:" + SBDNum.toString() + " 查询股东及股份: " + querySql.toString());
List<Map> result = query.queryForMapList(querySql.toString());
ShareHolderAndStocksBean sh = new ShareHolderAndStocksBean();
List<ShareHolderDataBean> shareholderdata = new ArrayList<ShareHolderDataBean>();
List<StocksDataBean> stocksrdata = new ArrayList<StocksDataBean>();
BigDecimal ShareMoneyTotal = new BigDecimal(0.0);
BigDecimal SharesTotal = new BigDecimal(0.0);
boolean isHaveGtOneShHolder = false;
for(int i = 0;i<result.size();i++){
String ifHolder = this.changeType(result.get(i).get("ifHolder"));//是否股东
if(ifHolder != null && ifHolder.equals("1")){
isHaveGtOneShHolder = true;
}
if(ifHolder != null && ifHolder.equals("0")){//根据田春莉提供的报告预览中涉及的开关选项.txt 修改
exsitHigherAuthorities = true;
}
String corpName = this.changeType(result.get(i).get("CorpName"));//股东名称
String shares= FormatBigDecimal.format(this.changeTypeForBigDecimal(result.get(i).get("shares")));//股份(%)
String shareMoney = FormatBigDecimal.format(this.changeTypeForBigDecimal(result.get(i).get("shareMoney")));//出资额 千元
String formOfInvestment = this.changeType(result.get(i).get("FORMOFINVESTMENT"));//出资方式
String paidupCapital = this.changeType(result.get(i).get("PAIDUPCAPITAL"));//资金到位率(%)
String currencyName = this.changeType(result.get(i).get("CurrencyName") == null ? "" : "(" + this.changeType(result.get(i).get("CurrencyName")) + ")");//币种
String holderId = this.changeType(result.get(i).get("HolderId"));//股东编号
//set份额,出资额
StocksDataBean stocksdatabean = new StocksDataBean();
stocksdatabean.setCorpName(corpName);
stocksdatabean.setCurrencyName(currencyName);
stocksdatabean.setShares(shares);
if(this.changeType(result.get(i).get("CurrencyName")).equals(WebUtils.getMessage("currency.rmb_1"))){
stocksdatabean.setShareMoney(shareMoney);
}else{
stocksdatabean.setShareMoney(shareMoney+currencyName);
}
stocksdatabean.setIfHolder(ifHolder);
stocksdatabean.setHolderId(holderId);
stocksrdata.add(stocksdatabean);
//set出资方式,到位率
ShareHolderDataBean shareholderdatabean = new ShareHolderDataBean();
if((paidupCapital != null) || (formOfInvestment != null)){
shareholderdatabean.setCorpName(corpName);
shareholderdatabean.setPaidupCapital(paidupCapital);
shareholderdatabean.setFormOfInvestment(formOfInvestment);
shareholderdata.add(shareholderdatabean);
}
//求合计
if(shareMoney!=null){
ShareMoneyTotal = ShareMoneyTotal.add(this.changeTypeForBigDecimal(result.get(i).get("shareMoney")));//出资额 千元
}
if(shares!=null){
SharesTotal = SharesTotal.add(this.changeTypeForBigDecimal(result.get(i).get("shares")));//股份(%)
}
}
if(isHaveGtOneShHolder){
sh.setTitle(WebUtils.getMessage("jsp_CRV_.AEFA_00001"));
} else {
sh.setTitle(WebUtils.getMessage("java_.CCM_00059"));
}
sh.setShareMoneyTotal(FormatBigDecimal.format(ShareMoneyTotal));
sh.setShareTotal(FormatBigDecimal.format(SharesTotal));
sh.setStockdata(stocksrdata);
sh.setShareholderdata(shareholderdata);
logger.debug("新华信编号:" + SBDNum.toString() +"股东信息:"+(System.currentTimeMillis()-stime)+"毫秒");
return sh;
}
public List<StocksDataBean> getStockdata() {
return stockdata;
}
public void setStockdata(List<StocksDataBean> stockdata) {
this.stockdata = stockdata;
}
public List<ShareHolderDataBean> getShareholderdata() {
return shareholderdata;
}
public void setShareholderdata(List<ShareHolderDataBean> shareholderdata) {
this.shareholderdata = shareholderdata;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public boolean isExsitHigherAuthorities() {
return exsitHigherAuthorities;
}
public void setExsitHigherAuthorities(boolean exsitHigherAuthorities) {
this.exsitHigherAuthorities = exsitHigherAuthorities;
}
}
package ims.sinotrust.bean;
import java.io.Serializable;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* <p>Title: </p>
*
* <p>Description:出资额,份额 </p>
*
* <p>Company: sinotrust</p>
*
* @author conglin
*
*/
public class StocksDataBean implements Serializable{
private static final long serialVersionUID = -8704765159975887696L;
@SuppressWarnings("unused")
private static Log logger = LogFactory.getLog(StocksDataBean.class);
private String corpName;//股东名称
private String shares;//股份|份额(%)
private String shareMoney;//出资额 千元
private String currencyName;//币种
private String ifHolder;//是否股东
private String holderId;//股东编号
public String getHolderId() {
return holderId;
}
public void setHolderId(String holderId) {
this.holderId = holderId;
}
public String getIfHolder() {
return ifHolder;
}
public void setIfHolder(String ifHolder) {
this.ifHolder = ifHolder;
}
public String getCurrencyName() {
return currencyName;
}
public void setCurrencyName(String currencyName) {
this.currencyName = currencyName;
}
public String getCorpName() {
return corpName;
}
public void setCorpName(String corpName) {
this.corpName = corpName;
}
public String getShares() {
return shares;
}
public void setShares(String shares) {
this.shares = shares;
}
public String getShareMoney() {
return shareMoney;
}
public void setShareMoney(String shareMoney) {
this.shareMoney = shareMoney;
}
}
/** * 改变类型为 BigDecimal<p> * 主要为了对 null 值作统一处理。如果 rs 为空,则返回 null ;如果 rs 不为空,则返回 new BigDecimal(rs.toString()) * @param rs * @return */protected BigDecimal changeTypeForBigDecimal(Object rs) {if (rs == null) {return null;}else {return new BigDecimal(rs.toString().trim());}}
/**
* 格式化BigDecimal,两位小数,美国格式输出
* @param bd BigDecimal
* @return String
*/
@SuppressWarnings("deprecation")
public static synchronized String format(Object obj) {
if (obj == null)
return "--";
if (obj instanceof java.sql.Date) {
if (Locale.ENGLISH.getLanguage().equalsIgnoreCase(WebUtils.getLocale().getLanguage())) {
java.sql.Date may = (java.sql.Date)obj;
if (5 == may.getMonth() + 1) {
return EDATEFORMATOFMAY.format(obj);
}
return EDATEFORMAT.format(obj);
} else {
return CDATEFORMAT.format(obj);
}
// if (Locale.CHINESE.getLanguage().equalsIgnoreCase(WebUtils.getLocale().getLanguage())) {
// return CDATEFORMAT.format(obj);
// } else {
// return EDATEFORMAT.format(obj);
// }
} else if (obj instanceof java.util.Date) {
if (Locale.ENGLISH.getLanguage().equalsIgnoreCase(WebUtils.getLocale().getLanguage())) {
java.sql.Date may = (java.sql.Date)obj;
if (5 == may.getMonth() + 1) {
return EDATEFORMATOFMAY.format(obj);
}
return EDATEFORMAT.format(obj);
} else {
return CDATEFORMAT.format(obj);
}
// if (Locale.CHINESE.getLanguage().equalsIgnoreCase(WebUtils.getLocale().getLanguage())) {
// return CDATEFORMAT.format(obj);
// } else {
// return EDATEFORMAT.format(obj);
// }
} else if (obj instanceof BigDecimal) {
return DECIMALFORMAT.format(obj);
} else if (obj instanceof Float) {
return DECIMALFORMAT.format(obj);
} else if (obj instanceof Double) {
return DECIMALFORMAT.format(obj);
} else {
return obj.toString();
}
}
/**
* 改变变量类型为String<p>
* 主要为了对 null 值作统一的处理。如果 rs 为空,则返回 "";如果 rs 不为空,则返回 rs.toString()
* @param rs
* @return
*/
protected String changeType(Object rs) {
String re = null;
if (rs == null) {
re = null;
}else {
re = rs.toString().trim();
}
return re;
}