package ims.sinotrust.bean;
import ims.sinotrust.util.FormatBigDecimal;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.LinkedHashMap;
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 ImportExportBean extends CreditReportViewBean implements Serializable{
private static final long serialVersionUID = 1L;
private static Log logger = LogFactory.getLog(ReportSummaryBean.class);
// 進口總額
private List<BigDecimal> showImportTradeSum;
//出口總額
private List<BigDecimal> showExportTradeSum;
//進出口情況年度
private List<String> yearOfImportAndExport;
// 主要自營進口地區
private List<List<String>> importCountryData;
// 主要自營出口地區-戰曉娟修改
private List<List<String>> exportCountryData;
// Map中存的<商品編碼, 進口商品數據(單位,數據)>
private Map<String, ImportProduceBean> importProduceMap;
// Map中存的<商品編碼, 出口商品數據(單位,數據)>
private Map<String, ExportProduceBean> exportProduceMap;
/**
* 進出口情況信息對應的年份
* @return
*/
private List<String> getYear(){
if (this.yearOfImportAndExport == null) {
this.yearOfImportAndExport = new ArrayList<String>();
}
return this.yearOfImportAndExport;
}
@SuppressWarnings("unchecked")
public void getInportExportYears(ICommonDAOService query, String SBDNum){
//*******根據進口商品總額 添加 年度************
String sql = WebUtils.getMessage("sql", "ReportSummaryBean.sql.add17", new Object[]{SBDNum});
logger.debug("新華信編號:" + SBDNum + " 進出口商品總額&年度: " + sql);
List<Map> rsIOPro = query.queryForMapList(sql);
int rsIOProSize = rsIOPro.size();
List<BigDecimal> showImportTreeYears = new ArrayList<BigDecimal>();
List<BigDecimal> showExportTreeYears = new ArrayList<BigDecimal>();
for (int i = 0; i < rsIOProSize; i++) {
String year = this.changeType(rsIOPro.get(i).get("years"));
//進口年數
BigDecimal imvalue = this.changeTypeForBigDecimal(rsIOPro.get(i).get("ImpValue"));
//出口
BigDecimal exvalue = this.changeTypeForBigDecimal(rsIOPro.get(i).get("ExpValue"));
/*importTreeYears.add(imvalue.add(new BigDecimal("0.5")).subtract(new BigDecimal("1")));
exportTreeYears.add(exvalue.add(new BigDecimal("0.5")).subtract(new BigDecimal("1")));*/
showImportTreeYears.add(imvalue.add(new BigDecimal("0.5")).subtract(new BigDecimal("1")));
showExportTreeYears.add(exvalue.add(new BigDecimal("0.5")).subtract(new BigDecimal("1")));
/* showImportTreeYears.add(FormatBigDecimal.BigdecimalFormat(imvalue.add(new BigDecimal("0.5")).subtract(new BigDecimal("1"))));
showExportTreeYears.add(FormatBigDecimal.BigdecimalFormat(exvalue.add(new BigDecimal("0.5")).subtract(new BigDecimal("1"))));*/
this.getYear().add(year); //添加到年度列表
}
this.setShowImportTradeSum(showImportTreeYears);
this.setShowExportTradeSum(showExportTreeYears);
}
// ************主要自營進口產品************
@SuppressWarnings("unchecked")
public void getImportBean(ICommonDAOService query, String SBDNum){
this.getInportExportYears(query, SBDNum);
String sql = WebUtils.getMessage("sql", "ReportSummaryBean.sql.add1", new Object[]{SBDNum});
logger.debug("新華信編號:" + SBDNum.toString() + " 主要自營進口產品: " + sql.toString());
List<Map> rsProIn = query.queryForMapList(sql.toString());
Map<String, ImportProduceBean> importProduceMap = new LinkedHashMap<String, ImportProduceBean>();
for (String existentYear : this.getYear()) {
for (Map map : rsProIn) {
if (importProduceMap.size() < 3 ) {//只顯示三行數據
String code = this.changeType(map.get("PRODUCTCODE"));//商品編碼
String year = this.changeType(map.get("year"));
if (!existentYear.equalsIgnoreCase(year)) { //如果不是當前所選年度,則繼續找下一條記錄
continue;
}
if(importProduceMap.containsKey(code)){
ImportProduceBean importProductBean = importProduceMap.get(code);
String value = FormatBigDecimal.BigdecimalFormat(this.changeTypeForBigDecimal(map.get("TRADEQUANTITY")));
importProductBean.setImportproduct(value);
} else {
ImportProduceBean importProductBean = new ImportProduceBean();
String unit = this.changeType(map.get("UNITCNAME"));//商品單位
String name = this.changeType(map.get("PRODUCTCNAME"));//商品名稱
String value = FormatBigDecimal.BigdecimalFormat(this.changeTypeForBigDecimal(map.get("TRADEQUANTITY")));
importProductBean.setUnit(unit);
importProductBean.setProduceName(name);
importProductBean.setImportproduct(value);
importProduceMap.put(code, importProductBean);
}
}
}
}
// ***********主要自營進口地區****************
int index = 0;
//鍵值 代表爲第i行。
Map<Integer,Map<String,String>> rowData = new LinkedHashMap<Integer, Map<String,String>>();
for (String year : this.getYear()) {
sql = WebUtils.getMessage("sql", "ReportSummaryBean.sql.add3", new Object[]{SBDNum, year});
logger.debug("新華信編號:" + SBDNum.toString() + " 主要自營進口地區: " + sql.toString());
List<Map> rsAreaIn = query.queryForMapList(sql.toString());
int rsAreaInSize = rsAreaIn.size();
for (int i = 0; i < rsAreaInSize; i++) {
String name = this.changeType(rsAreaIn.get(i).get("countryname"));
String value = this.changeType(rsAreaIn.get(i).get("importvalue"));
String valueImport =this.changeType(showImportTradeSum.get(index));
if(value == null || valueImport == null)continue;
float percentage = Float.valueOf(value) / Float.valueOf(valueImport);
String name_value = name+"("+FormatBigDecimal.format(percentage * 100)+"%)";
if(rowData.get(i) == null){
Map<String,String> newMap = new LinkedHashMap<String, String>();
newMap.put(year, name_value);
rowData.put(i, newMap);
} else {
Map<String,String> newMap = rowData.get(i);
newMap.put(year, name_value);
}
}
index++;
}
//轉化爲頁面更容易的結構
List<List<String>> data = new ArrayList<List<String>>();
for(int rowcount: rowData.keySet()){
//得到第rowcount的數據
Map<String,String> indexdata = rowData.get(rowcount);
//需要進行佔位
List<String> oneRow = new ArrayList<String>();
for(int j = 0;j < this.getYear().size();j++){
//this.getYear().get(j)年的行數爲rowcount的數據
if(indexdata.get(this.getYear().get(j))==null){
oneRow.add("--");
} else{
oneRow.add(indexdata.get(this.getYear().get(j)));
}
}
data.add(oneRow);
}
this.setImportCountryData(data);
this.setImportProduceMap(importProduceMap);
this.getExportBean(query, SBDNum);
}
// ************主要自營出口產品************
@SuppressWarnings("unchecked")
public void getExportBean(ICommonDAOService query, String SBDNum){
String sql = WebUtils.getMessage("sql", "ReportSummaryBean.sql.add2", new Object[]{SBDNum});
logger.debug("新華信編號:" + SBDNum.toString() + " 主要自營出口產品: " + sql.toString());
List<Map> rsProIn = query.queryForMapList(sql.toString());
Map<String, ExportProduceBean> exportProduceMap = new LinkedHashMap<String, ExportProduceBean>();
for (String existentYear : this.getYear()) {
for (Map map : rsProIn) {
if (exportProduceMap.size() < 3 ) {//只顯示三行數據
String code = this.changeType(map.get("PRODUCTCODE"));//商品編碼
String year = this.changeType(map.get("year"));
if (!existentYear.equalsIgnoreCase(year)) { //如果不是當前所選年度,則繼續找下一條記錄
continue;
}
if(exportProduceMap.containsKey(code)){
ExportProduceBean exportProductBean = exportProduceMap.get(code);
String value = FormatBigDecimal.BigdecimalFormat(this.changeTypeForBigDecimal(map.get("TRADEQUANTITY")));
exportProductBean.setExportproduct(value);
} else {
ExportProduceBean exportProductBean = new ExportProduceBean();
String unit = this.changeType(map.get("UNITCNAME"));//商品單位
String value = FormatBigDecimal.BigdecimalFormat(this.changeTypeForBigDecimal(map.get("TRADEQUANTITY")));
exportProductBean.setUnit(unit);
exportProductBean.setExportproduct(value);
exportProduceMap.put(code, exportProductBean);
}
}
}
}
// ***********主要自營出口地區****************
int index = 0;
//鍵值 代表爲第i行。
Map<Integer,Map<String,String>> rowData = new LinkedHashMap<Integer, Map<String,String>>();
for (String year : this.getYear()) {
sql = WebUtils.getMessage("sql", "ReportSummaryBean.sql.add4", new Object[]{SBDNum, year});
logger.debug("新華信編號:" + SBDNum.toString() + " 主要自營出口地區: " + sql.toString());
List<Map> rsAreaIn = query.queryForMapList(sql.toString());
int rsAreaInSize = rsAreaIn.size();
for (int i = 0; i < rsAreaInSize; i++) {
String name = this.changeType(rsAreaIn.get(i).get("countryname"));
String value = this.changeType(rsAreaIn.get(i).get("importvalue"));
String valueExport =this.changeType(showExportTradeSum.get(index));
if(value == null || valueExport == null)continue;
float percentage = Float.valueOf(value) / Float.valueOf(valueExport);
String name_value = name+"("+FormatBigDecimal.format(percentage * 100)+"%)";
if(rowData.get(i) == null){
Map<String,String> newMap = new LinkedHashMap<String, String>();
newMap.put(year, name_value);
rowData.put(i, newMap);
} else {
Map<String,String> newMap = rowData.get(i);
newMap.put(year, name_value);
}
}
index++;
}
//轉化爲頁面更容易的結構
List<List<String>> data = new ArrayList<List<String>>();
for(int rowcount: rowData.keySet()){
//得到第rowcount的數據
Map<String,String> indexdata = rowData.get(rowcount);
//需要進行佔位
List<String> oneRow = new ArrayList<String>();
for(int j = 0;j < this.getYear().size();j++){
//this.getYear().get(j)年的行數爲rowcount的數據
if(indexdata.get(this.getYear().get(j))==null){
oneRow.add("--");
} else{
oneRow.add(indexdata.get(this.getYear().get(j)));
}
}
data.add(oneRow);
}
this.setExportCountryData(data);
this.setExportProduceMap(exportProduceMap);
}
//對數字進行格式化
public List<String> getShowImportTradeSum(){
if(showImportTradeSum == null || showImportTradeSum.size() <= 0){
return null;
} else {
List<String> newShowImportTradeSum = new ArrayList<String>();
for(BigDecimal cur : showImportTradeSum){
newShowImportTradeSum.add(FormatBigDecimal.BigdecimalFormat(cur));
}
return newShowImportTradeSum;
}
}
public void setShowImportTradeSum(List<BigDecimal> showImportTradeSum) {
this.showImportTradeSum = showImportTradeSum;
}
public List<String> getShowExportTradeSum() {
if(showExportTradeSum == null || showExportTradeSum.size() <= 0){
return null;
} else {
List<String> newShowExportTradeSum = new ArrayList<String>();
for(BigDecimal cur : showExportTradeSum){
newShowExportTradeSum.add(FormatBigDecimal.BigdecimalFormat(cur));
}
return newShowExportTradeSum;
}
}
public void setShowExportTradeSum(List<BigDecimal> showExportTradeSum) {
this.showExportTradeSum = showExportTradeSum;
}
public List<String> getYearOfImportAndExport() {
return yearOfImportAndExport;
}
public void setYearOfImportAndExport(List<String> yearOfImportAndExport) {
this.yearOfImportAndExport = yearOfImportAndExport;
}
public Map<String, ImportProduceBean> getImportProduceMap() {
return importProduceMap;
}
public void setImportProduceMap(Map<String, ImportProduceBean> importProduceMap) {
this.importProduceMap = importProduceMap;
}
public Map<String, ExportProduceBean> getExportProduceMap() {
return exportProduceMap;
}
public void setExportProduceMap(Map<String, ExportProduceBean> exportProduceMap) {
this.exportProduceMap = exportProduceMap;
}
public List<List<String>> getExportCountryData() {
return exportCountryData;
}
public void setExportCountryData(List<List<String>> exportCountryData) {
this.exportCountryData = exportCountryData;
}
public List<List<String>> getImportCountryData() {
return importCountryData;
}
public void setImportCountryData(List<List<String>> importCountryData) {
this.importCountryData = importCountryData;
}
}
public class ImportProduceBean {
private String unit;//單位
private String produceName;// 商品名稱
private List<String> importproduct = new ArrayList<String>();//年度進口產品數據
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public List<String> getImportproduct() {
return importproduct;
}
public void setImportproduct(String value) {
this.importproduct.add(value);
}
public String getProduceName() {
return produceName;
}
public void setProduceName(String produceName) {
this.produceName = produceName;
}
}