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;
}