Guest User

Untitled

a guest
Dec 10th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.84 KB | None | 0 0
  1. package br.com.mobtag.investws.util;
  2.  
  3. import java.math.BigDecimal;
  4. import java.math.BigInteger;
  5. import java.math.RoundingMode;
  6. import java.text.SimpleDateFormat;
  7. import java.util.Date;
  8. import java.util.concurrent.TimeUnit;
  9.  
  10. public class CelescCalc {
  11.  
  12. @SuppressWarnings("unused")
  13. public static void main(String[] args) throws Exception {
  14.  
  15. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");
  16.  
  17. BigDecimal COSIP = BigDecimal.ZERO;
  18. BigDecimal mediaMedicaoDiaKwh = BigDecimal.ZERO;
  19. BigDecimal valorMedicaoDiaComCosipBandeira = BigDecimal.ZERO;
  20. BigDecimal valorTotal = BigDecimal.ZERO;
  21.  
  22. String PERIODO_INI = "21/11/2018";
  23. String PERIODO_FIM = "05/12/2018";
  24.  
  25. BigInteger MEDICAO_ANTERIOR = new BigInteger("26372");
  26. BigInteger MEDICAO_ATUAL = new BigInteger("26443");
  27.  
  28. BigDecimal VALOR_KWH = new BigDecimal("0.621000");
  29. BigDecimal BANDEIRA_VERDE = BigDecimal.ZERO;
  30. BigDecimal BANDEIRA_AMARELA = new BigDecimal("0.01");
  31. BigDecimal BANDEIRA_VERMELHA_P1 = new BigDecimal("0.03");
  32. BigDecimal BANDEIRA_VERMELHA_P2 = new BigDecimal("0.05");
  33.  
  34. Date dateIni = simpleDateFormat.parse(PERIODO_INI);
  35. Date dateFim = simpleDateFormat.parse(PERIODO_FIM);
  36.  
  37. long diasPeriodo = getDifferenceDays(dateIni, dateFim);
  38.  
  39. BigInteger medicao = MEDICAO_ATUAL.subtract(MEDICAO_ANTERIOR);
  40. mediaMedicaoDiaKwh = new BigDecimal(medicao).divide(new BigDecimal(diasPeriodo),2, RoundingMode.HALF_UP);
  41.  
  42. BigDecimal valorMedicao = VALOR_KWH.multiply(new BigDecimal(medicao));
  43.  
  44. valorTotal = valorTotal.add(valorMedicao);
  45.  
  46. BigDecimal adicionalBandeira = getBandeira(medicao, BANDEIRA_VERMELHA_P2);
  47. valorTotal = valorTotal.add(adicionalBandeira);
  48.  
  49. COSIP = getCosip(medicao);
  50. valorTotal = valorTotal.add(COSIP);
  51.  
  52. valorMedicaoDiaComCosipBandeira = valorTotal.divide(new BigDecimal(diasPeriodo),2,RoundingMode.HALF_UP);
  53.  
  54. System.out.println("---------------------- VALORES ---------------------------------");
  55. System.out.println("Valor Medição : "+valorMedicao.setScale(2, BigDecimal.ROUND_HALF_UP));
  56. System.out.println("Valor Adicional Bandeira : "+adicionalBandeira.setScale(2, BigDecimal.ROUND_HALF_UP));
  57. System.out.println("Cosip : "+COSIP.setScale(2, BigDecimal.ROUND_HALF_UP));
  58. System.out.println("Valor Total : "+valorTotal.setScale(2, BigDecimal.ROUND_HALF_UP));
  59.  
  60.  
  61. System.out.println("---------------------- ESTATISTICAS ---------------------------------");
  62. System.out.println("Medição no período : "+medicao);
  63. System.out.println("Qtde Dias : "+diasPeriodo);
  64. System.out.println("Média medição Kwh Dia : "+mediaMedicaoDiaKwh.setScale(2, BigDecimal.ROUND_HALF_UP));
  65. System.out.println("Valor Diário com Cosip/Bandeira : "+valorMedicaoDiaComCosipBandeira.setScale(2, BigDecimal.ROUND_HALF_UP));
  66. }
  67.  
  68. public static BigDecimal getCosip(BigInteger medicao){
  69. if(medicao.intValue()<= 30){
  70. return new BigDecimal("1.00");
  71. }else if(medicao.intValue()>= 31 && medicao.intValue()<= 50){
  72. return new BigDecimal("2.00");
  73. }else if(medicao.intValue()>= 51 && medicao.intValue()<= 100){
  74. return new BigDecimal("4.00");
  75. }else if(medicao.intValue()>= 101 && medicao.intValue()<= 200){
  76. return new BigDecimal("9.00");
  77. }else if(medicao.intValue()>= 201 && medicao.intValue()<= 500){
  78. return new BigDecimal("21.50");
  79. }else if(medicao.intValue()>= 501 && medicao.intValue()<= 1000){
  80. return new BigDecimal("46.00");
  81. }else if(medicao.intValue()>= 1001 && medicao.intValue()<= 1500){
  82. return new BigDecimal("76.50");
  83. }else{
  84. return new BigDecimal("92.00");
  85. }
  86. }
  87.  
  88. public static BigDecimal getBandeira(BigInteger medicao, BigDecimal bandeira){
  89. if(bandeira.equals(BigDecimal.ZERO)){
  90. return BigDecimal.ZERO;
  91. }
  92. return bandeira.multiply(new BigDecimal(medicao));
  93. }
  94.  
  95. public static long getDifferenceDays(Date d1, Date d2) {
  96. long diff = d2.getTime() - d1.getTime();
  97. return TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
  98. }
  99.  
  100. }
Add Comment
Please, Sign In to add comment