package com.fp.general.score.save; import com.fp.dto.save.SaveRequest; import com.fp.excel.ExcelToMap; import com.fp.general.exception.GeneralException; import com.fp.persistence.commondb.PersistenceHelper; import com.fp.persistence.commondb.helper.FormatDates; import com.fp.persistence.pgeneral.score.TgeneScoreAdjustment; import com.fp.persistence.pgeneral.score.TgeneScoreAdjustmentKey; import com.fp.persistence.pgeneral.score.TgeneScoreHeader; import com.fp.persistence.pgeneral.image.TgeneFilesDetail; import com.fp.persistence.pgeneral.image.TgeneFilesDetailKey; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import java.sql.Timestamp; /** * Clase que graba la data recibida de Excel en la tabla TGENESCOREADJUSTMENT * * @author BPTWPA */ public class FileScore { /** * Mčtodo que graba en la base de datos las calificaciones de cartera subidas en excel * * @param tgeneScoreHeader Objeto TgeneScoreHeader * @param excelMap Mapa obtenido del archivo de excel * @throws Exception */ public List loadScore(TgeneScoreHeader tgeneScoreHeader, SaveRequest sr, Integer filecode) throws Exception { List lTgeneScoreAdjustment = new ArrayList(); Map mapExcel = null; TgeneFilesDetail filesDetail = TgeneFilesDetail.find(PersistenceHelper.getEntityManager(), new TgeneFilesDetailKey(filecode, FormatDates.getDefaultExpiryTimestamp())); if (tgeneScoreHeader != null && filesDetail != null) { if (filesDetail.getExtension().equals("xls") || filesDetail.getExtension().equals("xlsx")) { ExcelToMap excelMap = new ExcelToMap(filesDetail.getImage(), filesDetail.getExtension()); mapExcel = excelMap.getExcelMap(); if (mapExcel != null || !mapExcel.isEmpty()) { Integer rows = (mapExcel.size() / 8)-1; for (int i = 1; i <= rows ; i++) { TgeneScoreAdjustment tgeneScoreAdjustment = new TgeneScoreAdjustment(); TgeneScoreAdjustmentKey key = new TgeneScoreAdjustmentKey(); for (int j = 0; j < 8; j++) { String parameter = i + ":" + j; Object value = null; switch (j) { case 0: //COMPANIA if(!(tgeneScoreHeader.getPk().getScoredate().compareTo((Date) mapExcel.get(parameter)) == 0)){ throw new GeneralException("GENE-0043", "LA FECHA DEL ARCHIVO NO CONCUERDA CON LA SELECCIONADA"); } this.contentParameter(parameter, mapExcel); key.setScoredate(new Timestamp(tgeneScoreHeader.getPk().getScoredate().getTime())); break; case 1: //CUENTA this.contentParameter(parameter, mapExcel); value = mapExcel.get(parameter); key.setAccount(String.valueOf(value)); tgeneScoreAdjustment.setPk(key); break; case 2: //MODULO this.contentParameter(parameter, mapExcel); value = mapExcel.get(parameter); tgeneScoreAdjustment.setModulecode(String.valueOf(value)); break; case 3: //PRODUCTO this.contentParameter(parameter, mapExcel); value = mapExcel.get(parameter); tgeneScoreAdjustment.setProductcode(String.valueOf(value)); break; case 4: //SUBPRODUCTO this.contentParameter(parameter, mapExcel); value = mapExcel.get(parameter); tgeneScoreAdjustment.setSubproductcode(String.valueOf(value)); break; case 5: //MONEDA this.contentParameter(parameter, mapExcel); value = mapExcel.get(parameter); tgeneScoreAdjustment.setCurrencycode(String.valueOf(value)); break; case 6: //PORCENTAJE PROVISION this.contentParameter(parameter, mapExcel); value = mapExcel.get(parameter); tgeneScoreAdjustment.setManualprovisionpercent(new BigDecimal(value.getClass().getSimpleName().equals("BigDecimal") ? String.valueOf(value) : "0")); break; case 7: //TIPO AJUSTE, JOURNAL ID this.contentParameter(parameter, mapExcel); this.verifyFile(parameter, mapExcel); value = mapExcel.get(parameter); tgeneScoreAdjustment.setAdjustmenttype(String.valueOf(value)); tgeneScoreAdjustment.setJournalid(sr.getJournalId()); break; default: break; } } lTgeneScoreAdjustment.add(tgeneScoreAdjustment); } } } else { throw new GeneralException("GENE-0043", "El ARCHIVO NO ES EL CORRECTO - CALIFICACION CARTERA"); } } return lTgeneScoreAdjustment; } /** * Método que valida que el valor que viene en el archivo sea el correcto * @param parameter * @param mapExcel * @throws Exception */ private void contentParameter(String parameter, Map mapExcel) throws Exception { if (!mapExcel.containsKey(parameter)) { throw new GeneralException("GENE-0044", "PARÁMETRO NO ENCONTRADO"); } } /** * Método que valida que el archivo sea el correcto * @param parameter * @param mapExcel * @throws Exception */ private void verifyFile(String parameter, Map mapExcel) throws Exception { this.contentParameter(parameter, mapExcel); String value = (String) mapExcel.get(parameter); //Object if (!(String.valueOf(value).compareTo("F") == 0)) { throw new GeneralException("GENE-0043", "El ARCHIVO NO ES EL CORRECTO - CALIFICACION CARTERA"); } } }