|
|
@@ -27,6 +27,8 @@ import org.springframework.web.bind.annotation.RequestBody;
|
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
+import com.netflix.discovery.converters.Auto;
|
|
|
+
|
|
|
import es.uv.saic.domain.Document;
|
|
|
import es.uv.saic.domain.Indicador;
|
|
|
import es.uv.saic.dto.IndicadorEnquestaDTO;
|
|
|
@@ -38,6 +40,7 @@ import es.uv.saic.dto.ProcesDTO;
|
|
|
import es.uv.saic.dto.TascaDTO;
|
|
|
import es.uv.saic.dto.TascaInformeTransferDTO;
|
|
|
import es.uv.saic.feign.CoreClient;
|
|
|
+import es.uv.saic.feign.IndicadorClient;
|
|
|
import es.uv.saic.service.DocumentService;
|
|
|
import es.uv.saic.service.PlantillaService;
|
|
|
import fr.opensagres.xdocreport.core.XDocReportException;
|
|
|
@@ -78,13 +81,17 @@ public class DownloadController {
|
|
|
|
|
|
@Autowired
|
|
|
private CoreClient core;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IndicadorClient ic;
|
|
|
|
|
|
/*
|
|
|
* Download a file associated with a task instance
|
|
|
* @param model
|
|
|
* @param idInstanciaTasca The ID of the task instance
|
|
|
* @param response HttpServletResponse
|
|
|
- * @return A FileSystemResource representing the file to download
|
|
|
+ * @return A FileSystemResource
|
|
|
+ * representing the file to download
|
|
|
*/
|
|
|
@GetMapping(value="/downloads/{fileName}", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
|
|
|
public ResponseEntity<byte[]> download(@PathVariable("fileName") BigInteger idInstanciaTasca, HttpServletResponse response) throws FileNotFoundException {
|
|
|
@@ -235,15 +242,15 @@ public class DownloadController {
|
|
|
titulacions = core.getTitulacionsByTypeCentre(it.getInstancia().getLugar(), ambit);
|
|
|
List<HashMap<String, String>> data = new ArrayList<HashMap<String, String>>();
|
|
|
for(OrganDTO x : titulacions) {
|
|
|
- HashMap<String, String> t = getTemplateDataArray(x.getLugar2(), idCentre, it.getInstancia().getCursAvaluat());
|
|
|
+ HashMap<String, String> t = ic.getTemplateDataArray(x.getLugar2(), idCentre, it.getInstancia().getCursAvaluat());
|
|
|
t.put("titulacio", x.getNomCas());
|
|
|
data.add(t);
|
|
|
}
|
|
|
context.put("data", data);
|
|
|
- getTemplateData(idTitulacio, idCentre, it.getInstancia().getCursAvaluat(), context);
|
|
|
+ addToContext(ic.getTemplateData(idTitulacio, idCentre, it.getInstancia().getCursAvaluat()), context);
|
|
|
}
|
|
|
else { // NO iterable template task
|
|
|
- getTemplateData(idTitulacio, idCentre, it.getInstancia().getCursAvaluat(), context);
|
|
|
+ addToContext(ic.getTemplateData(idTitulacio, idCentre, it.getInstancia().getCursAvaluat()), context);
|
|
|
}
|
|
|
|
|
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
|
|
@@ -255,103 +262,6 @@ public class DownloadController {
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
- * Populate the template data into the context
|
|
|
- * @param idTitulacio The ID of the degree
|
|
|
- * @param idCentre The ID of the center
|
|
|
- * @param curs The academic year
|
|
|
- * @param context The IContext to populate
|
|
|
- */
|
|
|
- private void getTemplateData(Integer idTitulacio, Integer idCentre, Integer curs, IContext context) {
|
|
|
-
|
|
|
- /* Indicadores del data warehouse */
|
|
|
- try {
|
|
|
- List<Indicador> indicadores;
|
|
|
- indicadores = core.getFromTitulacion(idTitulacio, curs);
|
|
|
- for(Indicador i : indicadores) {
|
|
|
- context.put(i.getIndicador(), i.getValor());
|
|
|
- }
|
|
|
- }
|
|
|
- catch(Exception e) { }
|
|
|
-
|
|
|
- /* Indicadores de encuestas */
|
|
|
- List<IndicadorEnquestaValorDTOImp> enquestesT;
|
|
|
- IndicadorEnquestaDTO iEnquestaDTO = new IndicadorEnquestaDTO(idTitulacio, idCentre, curs);
|
|
|
- enquestesT = core.getAllInds2(iEnquestaDTO).stream()
|
|
|
- .map(ind -> (IndicadorEnquestaValorDTOImp) ind)
|
|
|
- .toList();
|
|
|
-
|
|
|
- for(IndicadorEnquestaValorDTOImp i : enquestesT) {
|
|
|
- String indicador = i.getAmbit().equals("t") ? (i.getEnquesta()+"_"+i.getIndicador()) : (i.getEnquesta()+"_"+i.getIndicador()+"_"+i.getAmbit());
|
|
|
- indicador = i.getTipus().equals("avg") ? indicador : (indicador += "_"+i.getTipus());
|
|
|
- indicador = i.getCursd() == null ? indicador : (indicador += "_"+i.getCursd());
|
|
|
- context.put(indicador, formatValue(i.getValor()));
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /*
|
|
|
- * Format a value for template insertion
|
|
|
- * @param v The value to format
|
|
|
- * @return The formatted value
|
|
|
- */
|
|
|
- private String formatValue(String v) {
|
|
|
- if(v == null) return "";
|
|
|
- if(v.equals("NP")) return "NP";
|
|
|
- if(v.isEmpty() | v.isBlank()) {
|
|
|
- return "";
|
|
|
- }
|
|
|
-
|
|
|
- try{
|
|
|
- return String.format("%.2f", Float.parseFloat(v)).replace(",", ".");
|
|
|
- }
|
|
|
- catch(NumberFormatException e){ }
|
|
|
-
|
|
|
- try{
|
|
|
- return Integer.toString(Integer.parseInt(v));
|
|
|
- }
|
|
|
- catch(NumberFormatException e){ }
|
|
|
-
|
|
|
- return v;
|
|
|
- }
|
|
|
-
|
|
|
- /*
|
|
|
- * Get template data as a HashMap
|
|
|
- * @param idTitulacio The ID of the degree
|
|
|
- * @param idCentre The ID of the center
|
|
|
- * @param curs The academic year
|
|
|
- * @return A HashMap containing the template data
|
|
|
- */
|
|
|
- private HashMap<String, String> getTemplateDataArray(Integer idTitulacio, Integer idCentre, Integer curs) {
|
|
|
-
|
|
|
- HashMap<String, String> info = new HashMap<String, String>();
|
|
|
-
|
|
|
- /* Indicadores del data warehouse */
|
|
|
- try {
|
|
|
- List<Indicador> indicadores;
|
|
|
- indicadores = core.getFromTitulacion(idTitulacio, curs);
|
|
|
- for(Indicador i : indicadores) {
|
|
|
- info.put(i.getIndicador(), i.getValor());
|
|
|
- }
|
|
|
- }
|
|
|
- catch(Exception e) { }
|
|
|
-
|
|
|
- /* Indicadores de encuestas */
|
|
|
- List<IndicadorEnquestaValorDTOImp> enquestesT;
|
|
|
- IndicadorEnquestaDTO iEnquestaDTO = new IndicadorEnquestaDTO(idTitulacio, idCentre, curs);
|
|
|
- enquestesT = core.getAllInds2(iEnquestaDTO).stream()
|
|
|
- .map(ind -> (IndicadorEnquestaValorDTOImp) ind)
|
|
|
- .toList();
|
|
|
-
|
|
|
- for(IndicadorEnquestaValorDTOImp i : enquestesT) {
|
|
|
- String indicador = i.getAmbit().equals("t") ? (i.getEnquesta()+"_"+i.getIndicador()) : (i.getEnquesta()+"_"+i.getIndicador()+"_"+i.getAmbit());
|
|
|
- indicador = i.getTipus().equals("avg") ? indicador : (indicador += "_"+i.getTipus());
|
|
|
- indicador = i.getCursd() == null ? indicador : (indicador += "_"+i.getCursd());
|
|
|
- info.put(indicador, formatValue(i.getValor()));
|
|
|
- }
|
|
|
-
|
|
|
- return info;
|
|
|
- }
|
|
|
-
|
|
|
- /*
|
|
|
* Test endpoint to generate a populated template for a given task (id of task)
|
|
|
* @param model
|
|
|
* @param idTitulacio The ID of the degree
|
|
|
@@ -363,7 +273,7 @@ public class DownloadController {
|
|
|
*/
|
|
|
@GetMapping(value="/test/template/{titulacio}/{centre}/{idProces}/{idTascap}", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
|
|
|
@ResponseBody
|
|
|
- public byte[] testTemplate(@PathVariable("titulacio") Integer idTitulacio, @PathVariable("centre") Integer idCentre,
|
|
|
+ public ResponseEntity<byte[]> testTemplate(@PathVariable("titulacio") Integer idTitulacio, @PathVariable("centre") Integer idCentre,
|
|
|
@PathVariable("idTascap") Integer idTascap, @PathVariable("idProces") Integer idProces, HttpServletResponse response)
|
|
|
throws IOException, XDocReportException {
|
|
|
XDocReportRegistry.getRegistry().clear();
|
|
|
@@ -414,22 +324,22 @@ public class DownloadController {
|
|
|
titulacions = core.getTitulacionsByTypeCentre(centre.getLugar2(), ambit);
|
|
|
List<HashMap<String, String>> data = new ArrayList<HashMap<String, String>>();
|
|
|
for(OrganDTO x : titulacions) {
|
|
|
- HashMap<String, String> t = getTemplateDataArray(x.getLugar2(), idCentre, proces.getCursAvaluat());
|
|
|
+ HashMap<String, String> t = ic.getTemplateDataArray(x.getLugar2(), idCentre, proces.getCursAvaluat());
|
|
|
t.put("titulacio", x.getNomCas());
|
|
|
data.add(t);
|
|
|
}
|
|
|
context.put("data", data);
|
|
|
- getTemplateData(idTitulacio, idCentre, proces.getCursAvaluat(), context);
|
|
|
+ addToContext(ic.getTemplateData(idTitulacio, idCentre, proces.getCursAvaluat()), context);
|
|
|
}
|
|
|
else { // NO iterable template task
|
|
|
- getTemplateData(idTitulacio, idCentre, proces.getCursAvaluat(), context);
|
|
|
+ addToContext(ic.getTemplateData(idTitulacio, idCentre, proces.getCursAvaluat()), context);
|
|
|
}
|
|
|
|
|
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
|
|
report.process(context, out);
|
|
|
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\""+tasca.getCodiEvidencia()+".docx\"");
|
|
|
|
|
|
- return out.toByteArray();
|
|
|
+ return ResponseEntity.ok(out.toByteArray());
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
@@ -445,7 +355,7 @@ public class DownloadController {
|
|
|
*/
|
|
|
@GetMapping(value="/test/template2/{titulacio}/{centre}/{evidencia}/{curs}/{tipusTasca}", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
|
|
|
@ResponseBody
|
|
|
- public byte[] testTemplate(Model model, @PathVariable("titulacio") Integer idTitulacio, @PathVariable("centre") Integer idCentre,
|
|
|
+ public ResponseEntity<byte[]> testTemplate(Model model, @PathVariable("titulacio") Integer idTitulacio, @PathVariable("centre") Integer idCentre,
|
|
|
@PathVariable("evidencia") String evidencia, @PathVariable("curs") Integer curs, @PathVariable("tipusTasca") Integer tipusTasca,
|
|
|
HttpServletResponse response) throws IOException, XDocReportException {
|
|
|
XDocReportRegistry.getRegistry().clear();
|
|
|
@@ -496,22 +406,23 @@ public class DownloadController {
|
|
|
titulacions = core.getTitulacionsByTypeCentre(centre.getLugar2(), ambit);
|
|
|
List<HashMap<String, String>> data = new ArrayList<HashMap<String, String>>();
|
|
|
for(OrganDTO x : titulacions) {
|
|
|
- HashMap<String, String> t = getTemplateDataArray(x.getLugar2(), idCentre, curs);
|
|
|
+ HashMap<String, String> t = ic.getTemplateDataArray(x.getLugar2(), idCentre, curs);
|
|
|
t.put("titulacio", x.getNomCas());
|
|
|
data.add(t);
|
|
|
}
|
|
|
context.put("data", data);
|
|
|
- getTemplateData(idTitulacio, idCentre, curs, context);
|
|
|
+ addToContext(ic.getTemplateData(idTitulacio, idCentre, curs), context);
|
|
|
}
|
|
|
else { // NO iterable template task
|
|
|
- getTemplateData(idTitulacio, idCentre, curs, context);
|
|
|
+ addToContext(ic.getTemplateData(idTitulacio, idCentre, curs), context);
|
|
|
}
|
|
|
|
|
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
|
|
report.process(context, out);
|
|
|
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\""+evidencia+".docx\"");
|
|
|
+ response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
|
|
|
|
|
|
- return out.toByteArray();
|
|
|
+ return ResponseEntity.ok(out.toByteArray());
|
|
|
|
|
|
}
|
|
|
|
|
|
@@ -546,4 +457,36 @@ public class DownloadController {
|
|
|
response.setHeader(HttpHeaders.CONTENT_TYPE, "application/pdf");
|
|
|
return pls.toPDF(pdf.getContent(), pdf.getIdtascai());
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ private void addToContext(HashMap<String,String> templateData, IContext context) {
|
|
|
+ for (HashMap.Entry<String, String> entry : templateData.entrySet()) {
|
|
|
+ context.put(entry.getKey(), formatValue(entry.getValue()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Format a value for template insertion
|
|
|
+ * @param v The value to format
|
|
|
+ * @return The formatted value
|
|
|
+ */
|
|
|
+ private String formatValue(String v) {
|
|
|
+ if(v == null) return "";
|
|
|
+ if(v.equals("NP")) return "NP";
|
|
|
+ if(v.isEmpty() | v.isBlank()) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ try{
|
|
|
+ return String.format("%.2f", Float.parseFloat(v)).replace(",", ".");
|
|
|
+ }
|
|
|
+ catch(NumberFormatException e){ }
|
|
|
+
|
|
|
+ try{
|
|
|
+ return Integer.toString(Integer.parseInt(v));
|
|
|
+ }
|
|
|
+ catch(NumberFormatException e){ }
|
|
|
+
|
|
|
+ return v;
|
|
|
+ }
|
|
|
}
|