Done ticket GEPAFINBE-231
This commit is contained in:
@@ -56,13 +56,11 @@ import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.*;
|
||||
import java.lang.reflect.Method;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.sql.Timestamp;
|
||||
import java.text.MessageFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
@@ -217,6 +215,9 @@ public class ApplicationDao {
|
||||
@Autowired
|
||||
private ApplicationEvaluationDao applicationEvaluationDao;
|
||||
|
||||
@Autowired
|
||||
private EvaluationCriteriaRepository evaluationCriteriaRepository;
|
||||
|
||||
public final Random random = new Random();
|
||||
|
||||
public ApplicationResponseBean createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean, Long formId, Long applicationId) {
|
||||
@@ -2419,4 +2420,78 @@ public class ApplicationDao {
|
||||
emailNotificationDao.sendMail(hub.getId(), subject, body, List.of(GepafinConstant.RINALDO_EMAIL),emailLogRequest);
|
||||
}
|
||||
|
||||
public byte[] downloadRankingCsv(Long callId) {
|
||||
CallEntity callEntity = callService.validateCall(callId);
|
||||
|
||||
BigDecimal scoreList = BigDecimal.ZERO;
|
||||
List<EvaluationCriteriaEntity> evaluationCriteriaEntities =
|
||||
evaluationCriteriaRepository.findByCallIdAndIsDeletedFalse(callId);
|
||||
List<String> headers = Arrays.asList(
|
||||
"ApplicationID",
|
||||
"VatNumber",
|
||||
"Company Name",
|
||||
"Protocol",
|
||||
"Requested Amount",
|
||||
"Status",
|
||||
"Total Score",
|
||||
"Individual Scores"
|
||||
);
|
||||
|
||||
|
||||
for (EvaluationCriteriaEntity evaluationCriteria : evaluationCriteriaEntities) {
|
||||
scoreList = scoreList.add(evaluationCriteria.getScore());
|
||||
}
|
||||
|
||||
List<ApplicationEntity> applications =
|
||||
applicationRepository.findByCallIdAndIsDeletedFalseAndStatusIn(callId,List.of(ApplicationStatusForEvaluation.APPROVED.getValue(),ApplicationStatusForEvaluation.ADMISSIBLE.getValue(),ApplicationStatusForEvaluation.TECHNICAL_EVALUATION.getValue()));
|
||||
|
||||
// Collect all rows with totalScore for sorting
|
||||
List<List<Object>> rows = new ArrayList<>();
|
||||
|
||||
for (ApplicationEntity app : applications) {
|
||||
CompanyEntity company = companyService.validateCompany(app.getCompanyId());
|
||||
String name = company.getCompanyName();
|
||||
String vat = company.getVatNumber();
|
||||
Long applicationId = app.getId();
|
||||
ProtocolEntity protocolEntity = app.getProtocol();
|
||||
Long protocol = (protocolEntity != null) ? protocolEntity.getProtocolNumber() : 0L;
|
||||
BigDecimal requestedAmount = app.getAmountRequested();
|
||||
String status = app.getStatus();
|
||||
|
||||
ApplicationEvaluationEntity applicationEvaluationEntity =
|
||||
applicationEvaluationRepository.findByApplicationId(app.getId());
|
||||
|
||||
BigDecimal totalScore = applicationEvaluationDao.calculateTotalScore(
|
||||
applicationEvaluationEntity.getCriteria()
|
||||
);
|
||||
|
||||
rows.add(Arrays.asList(
|
||||
applicationId,
|
||||
vat,
|
||||
name,
|
||||
protocol,
|
||||
requestedAmount,
|
||||
status,
|
||||
scoreList,
|
||||
totalScore
|
||||
));
|
||||
}
|
||||
|
||||
// 5. Write the CSV using Commons CSV, with headers:
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||
try (OutputStreamWriter writer = new OutputStreamWriter(out, StandardCharsets.UTF_8);
|
||||
CSVPrinter csvPrinter = new CSVPrinter(writer,
|
||||
CSVFormat.DEFAULT.withHeader(headers.toArray(new String[0])))) {
|
||||
|
||||
for (List<Object> row : rows) {
|
||||
csvPrinter.printRecord(row);
|
||||
}
|
||||
csvPrinter.flush();
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("Error while generating CSV", e);
|
||||
}
|
||||
|
||||
return out.toByteArray();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user