From eb9713fe01042ff3a03bbcb5d7d70126f16395fe Mon Sep 17 00:00:00 2001 From: Ralph Soika Date: Fri, 26 Nov 2021 11:56:45 +0100 Subject: [PATCH] reporting optimiert --- .../AnalyseSachpruefungController.java | 84 ++++++++++--------- .../src/main/resources/imixs.properties | 2 +- .../pages/admin/analyse_sachpruefung.xhtml | 58 +++++++------ 3 files changed, 77 insertions(+), 67 deletions(-) diff --git a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AnalyseSachpruefungController.java b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AnalyseSachpruefungController.java index 8980ef4..c35489b 100644 --- a/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AnalyseSachpruefungController.java +++ b/office-alexander-logistics-app/src/main/java/com/alexanderlogistics/AnalyseSachpruefungController.java @@ -2,12 +2,15 @@ package com.alexanderlogistics; import java.io.Serializable; import java.text.SimpleDateFormat; +import java.time.YearMonth; +import java.time.ZoneId; import java.util.Calendar; +import java.util.Collection; import java.util.Date; import java.util.List; -import java.util.Map; import java.util.logging.Logger; +import javax.enterprise.context.ConversationScoped; import javax.enterprise.context.SessionScoped; import javax.inject.Inject; import javax.inject.Named; @@ -25,7 +28,7 @@ import org.imixs.workflow.engine.index.SearchService; * */ @Named -@SessionScoped +@ConversationScoped public class AnalyseSachpruefungController implements Serializable { private static final long serialVersionUID = 1L; @@ -36,8 +39,7 @@ public class AnalyseSachpruefungController implements Serializable { @Inject SearchService searchService; - - + Category sachpruefung; Category verteilung; @@ -46,6 +48,14 @@ public class AnalyseSachpruefungController implements Serializable { public ItemCollection getFilter() { if (filter == null) { filter = new ItemCollection(); + // compute start stop based on current month + YearMonth startYearMonth = YearMonth.now(); + java.time.LocalDate startOfMonthDate = startYearMonth.atDay(1); + java.time.LocalDate endOfMonthDate = startYearMonth.atEndOfMonth(); + filter.setItemValue("start", + java.util.Date.from(startOfMonthDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant())); + filter.setItemValue("stop", + java.util.Date.from(endOfMonthDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant())); } return filter; } @@ -54,8 +64,6 @@ public class AnalyseSachpruefungController implements Serializable { this.filter = filter; } - - public Category getSachpruefung() { return sachpruefung; } @@ -64,19 +72,28 @@ public class AnalyseSachpruefungController implements Serializable { return verteilung; } + public int totalCountByCategory(Category cat) { + int result = 0; + + Collection allCounts = cat.getLabels().values(); + result = allCounts.stream().reduce(0, Integer::sum); + + return result; + } + /** * Fuert verschiedene Queries aus um eine Analyse der Sachprufung durchzuführen. */ public void analyse() { - + logger.info("start analyse...."); - verteilung=null; - sachpruefung=null; + verteilung = null; + sachpruefung = null; Date start = filter.getItemValueDate("start"); Date stop = filter.getItemValueDate("stop"); - logger.info("...daterange=" + start + " - "+stop); - + logger.info("...daterange=" + start + " - " + stop); + // serach date range? String sDateFrom = "191401070000"; // because * did not work here String sDateTo = "211401070000"; @@ -94,39 +111,28 @@ public class AnalyseSachpruefungController implements Serializable { sDateTo = dateformat.format(cal.getTime()); } + // query Verteilung String query = "(type:workitem OR type:workitemarchive) "; if (start != null || stop != null) { - query += "AND ($created:[" + sDateFrom + " TO " + sDateTo + "]) "; + query += "AND (taxonomy.verteilung.stop:[" + sDateFrom + " TO " + sDateTo + "]) "; + } + logger.info(query); + List taxResult = searchService.getTaxonomyByQuery(query, "taxonomy.verteilung.stop.by"); + if (taxResult.size() > 0) { + verteilung = taxResult.get(0); + } + // query Sachprüfung + query = "(type:workitem OR type:workitemarchive) "; + if (start != null || stop != null) { + query += "AND (taxonomy.sachpruefung.stop:[" + sDateFrom + " TO " + sDateTo + "]) "; + } logger.info(query); - List taxResult = searchService.getTaxonomyByQuery(query, "taxonomy.verteilung.stop.by", - "taxonomy.sachpruefung.stop.by"); - - + taxResult = searchService.getTaxonomyByQuery(query, "taxonomy.sachpruefung.stop.by"); if (taxResult.size() > 0) { - - - - for (Category cat : taxResult) { - logger.info("category: " + cat.getName() + " = " + cat.getCount()); - - if (cat.getName().contains("verteilung")) { - verteilung=cat; - } + sachpruefung = taxResult.get(0); - if (cat.getName().contains("sachpruefung")) { - sachpruefung=cat; - - } - - Map labelMap = cat.getLabels(); - - for (String id : labelMap.keySet()) { - logger.info(".....sub-category: " + id + " = " + labelMap.get(id)); - } - - } } } @@ -136,8 +142,8 @@ public class AnalyseSachpruefungController implements Serializable { */ public void reset() { filter = new ItemCollection(); - sachpruefung=null; - verteilung=null; + sachpruefung = null; + verteilung = null; logger.fine("reset"); } diff --git a/office-alexander-logistics-app/src/main/resources/imixs.properties b/office-alexander-logistics-app/src/main/resources/imixs.properties index d6a94f5..c631fe4 100644 --- a/office-alexander-logistics-app/src/main/resources/imixs.properties +++ b/office-alexander-logistics-app/src/main/resources/imixs.properties @@ -4,7 +4,7 @@ lucence.indexDir=${imixs-office.IndexDir} index.fields=txtsearchstring,txtSubject,txtname,txtEmail,txtUserName,namCreator,txtworkflowgroup,txtworkflowstatus,txtWorkflowAbstract,txtWorkflowSummary,txtworkflowhistory,txtspacename,txtprocessname,_subject,_description,_name,_projectnumber,_projectname,_ordernumber,_contractnumber,datDueDate,txtcommentlog,htmldescription,htmldocumentation,dms,dms_names,_childitems,$file.names,_VENDOR_NAME index.fields.analyze=txtUsername -index.fields.noanalyze=type,$UniqueIDRef,$created,$modified,$ModelVersion,namCreator,$ProcessID,datDate,txtWorkflowGroup,txtemail, datdate, datfrom, datto, numsequencenumber,dms_count,invoice.number,invoice.duedate +index.fields.noanalyze=type,$UniqueIDRef,$created,$modified,$ModelVersion,namCreator,$ProcessID,datDate,txtWorkflowGroup,txtemail, datdate, datfrom, datto, numsequencenumber,dms_count,invoice.number,invoice.duedate,taxonomy.verteilung.stop,taxonomy.sachpruefung.stop,,taxonomy.verteilung.start,taxonomy.sachpruefung.start index.fields.store=process.name,txtProcessName,txtWorkflowImageURL index.fields.category=space.name,space.ref,taxonomy.verteilung.stop.by,taxonomy.sachpruefung.stop.by office.search.noanalyze=invoice.number diff --git a/office-alexander-logistics-app/src/main/webapp/pages/admin/analyse_sachpruefung.xhtml b/office-alexander-logistics-app/src/main/webapp/pages/admin/analyse_sachpruefung.xhtml index a95dcd3..6f7d69c 100644 --- a/office-alexander-logistics-app/src/main/webapp/pages/admin/analyse_sachpruefung.xhtml +++ b/office-alexander-logistics-app/src/main/webapp/pages/admin/analyse_sachpruefung.xhtml @@ -24,6 +24,13 @@ }); + function updatePanel(data) { + if (data.status === 'success') { + // select with wildcard operator + $('[id$=import_form_id]').imixsLayout(); + } + } + /*]]>*/ @@ -49,7 +56,13 @@
- +
+

Der folgende Report zeigt an, wieviele Verteilungen bzw. + Sachprüfungen in einem bestimmten Zeitraum durchgeführt + wurden. Der Report dient dazu die Verteilung der Aufgaben in den jweiligen Teams zu + Optimieren.

+
@@ -84,6 +97,15 @@
+ + + + +
@@ -94,16 +116,12 @@ id="result_panel">
-
-
- - -

Verteilung zur Prüfung

- +

Verteilung zur Prüfung + (#{analyseSachpruefungController.totalCountByCategory(analyseSachpruefungController.verteilung)})

@@ -113,21 +131,19 @@ items="#{analyseSachpruefungController.verteilung.labels}" var="entry"> - + -
Mitarbeiter
#{entry.key}#{userController.getUserName(entry.key)} #{entry.value}
-
+
- -

Sachprüfung

- +

Sachprüfung + (#{analyseSachpruefungController.totalCountByCategory(analyseSachpruefungController.sachpruefung)})

@@ -137,7 +153,7 @@ items="#{analyseSachpruefungController.sachpruefung.labels}" var="entry"> - + @@ -160,19 +176,7 @@ - +
Mitarbeiter
#{entry.key}#{userController.getUserName(entry.key)} #{entry.value}