Salvatore La Manna
4 anni fa
81 ha cambiato i file con 1271 aggiunte e 1922 eliminazioni
@ -0,0 +1,24 @@
|
||||
package it.mwg.sismica.bo.util; |
||||
|
||||
import it.mwg.sismica.bo.shared.bean.CarichiLavoroBean; |
||||
|
||||
import java.util.Map; |
||||
|
||||
public class CarichiLavoroUtil { |
||||
|
||||
public static void incrementaCarico(Map<String, CarichiLavoroBean> carichi, String istruttore, boolean concluso) { |
||||
|
||||
if (!istruttore.isEmpty()) { |
||||
if (!carichi.containsKey(istruttore)) { |
||||
carichi.put(istruttore, new CarichiLavoroBean()); |
||||
} |
||||
CarichiLavoroBean carico = carichi.get(istruttore); |
||||
carico.incTotali(); |
||||
if (concluso) { |
||||
carico.incConclusi(); |
||||
} else { |
||||
carico.incInCorso(); |
||||
} |
||||
} |
||||
} |
||||
} |
@ -1,6 +1,18 @@
|
||||
package it.tref.liferay.portos.bo.portlet; |
||||
|
||||
import javax.portlet.ActionRequest; |
||||
import javax.portlet.ActionResponse; |
||||
|
||||
import com.liferay.portal.kernel.exception.PortalException; |
||||
import com.liferay.portal.kernel.exception.SystemException; |
||||
import com.liferay.portal.util.PortalUtil; |
||||
import com.liferay.util.bridges.mvc.MVCPortlet; |
||||
|
||||
public class CarichiLavoroPortlet extends MVCPortlet { |
||||
|
||||
public void calcolaCarichi(ActionRequest actionRequest, ActionResponse actionResponse) throws PortalException, |
||||
SystemException { |
||||
|
||||
PortalUtil.copyRequestParameters(actionRequest, actionResponse); |
||||
} |
||||
} |
||||
|
@ -1,221 +1,182 @@
|
||||
<%@page import="java.util.Map.Entry"%> |
||||
<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> |
||||
<%@page import="com.liferay.portal.kernel.util.ArrayUtil"%> |
||||
<%@page import="com.liferay.portal.kernel.dao.orm.QueryPos"%> |
||||
<%@page import="com.liferay.portal.service.OrganizationLocalServiceUtil"%> |
||||
<%@page import="com.liferay.portal.model.Organization"%> |
||||
<%@page import="com.liferay.portal.service.GroupLocalServiceUtil"%> |
||||
<%@page import="com.liferay.portal.model.User"%> |
||||
<%@page import="com.liferay.portal.service.UserLocalServiceUtil"%> |
||||
<%@page import="com.liferay.portal.model.Role"%> |
||||
<%@page import="it.tref.liferay.portos.bo.util.Constants"%> |
||||
<%@page import="com.liferay.portal.service.RoleLocalServiceUtil"%> |
||||
<%@page import="com.liferay.portal.model.User"%> |
||||
<%@page import="com.liferay.portal.model.UserGroupRole"%> |
||||
<%@page import="com.liferay.portal.service.GroupLocalServiceUtil"%> |
||||
<%@page import="com.liferay.portal.service.OrganizationLocalServiceUtil"%> |
||||
<%@page import="com.liferay.portal.service.RoleLocalServiceUtil"%> |
||||
<%@page import="com.liferay.portal.service.UserGroupRoleLocalServiceUtil"%> |
||||
<%@ include file="/html/carichilavoro/init.jsp" %> |
||||
|
||||
<%@page import="com.liferay.portal.service.UserLocalServiceUtil"%> |
||||
<%@page import="it.mwg.sismica.bo.shared.bean.CarichiLavoroBean"%> |
||||
<%@page import="it.tref.liferay.portos.bo.util.Constants"%> |
||||
<%@page import="java.util.Map"%> |
||||
<%@include file="/html/carichilavoro/init.jsp"%> |
||||
<% |
||||
|
||||
long controlloPraticaId = ParamUtil.getLong(request, "controlloPraticaId"); |
||||
boolean geologo = ParamUtil.getBoolean(request, "geologo"); |
||||
String ruolo = Constants.ROLE_NAME_ISTRUTTORE; |
||||
Organization org =null; |
||||
long[] userIds = new long[]{}; |
||||
Role role =null; |
||||
ControlloPratica controlloPratica =null; |
||||
|
||||
if(geologo){ |
||||
ruolo = Constants.ROLE_NAME_GEOLOGO; |
||||
role = RoleLocalServiceUtil.getRole(themeDisplay.getCompanyId(), ruolo); |
||||
|
||||
}else{ |
||||
controlloPratica = ControlloPraticaLocalServiceUtil.getControlloPratica(controlloPraticaId); |
||||
Group genioGroup = GroupLocalServiceUtil.getGroup(controlloPratica.getGroupId()); |
||||
org = OrganizationLocalServiceUtil.getOrganization(genioGroup.getOrganizationId()); |
||||
role = RoleLocalServiceUtil.getRole(controlloPratica.getCompanyId(), ruolo); |
||||
final int[] periodi = new int[] { 30, 90, 180, 360 }; |
||||
long controlloPraticaId = ParamUtil.getLong(request, "controlloPraticaId"); |
||||
boolean geologo = ParamUtil.getBoolean(request, "geologo"); |
||||
long[] userIds = new long[] {}; |
||||
int giorni = ParamUtil.getInteger(renderRequest, "giorni", 90); |
||||
int unitaOperativa = 0; |
||||
String title; |
||||
StringBuilder elencoUtenti = new StringBuilder(); |
||||
StringBuilder elencoTotali = new StringBuilder(); |
||||
StringBuilder elencoConclusi = new StringBuilder(); |
||||
StringBuilder elencoInCorso = new StringBuilder(); |
||||
int valMax = 0; |
||||
Map<String, CarichiLavoroBean> carichi; |
||||
if (geologo) { |
||||
title = "endoprocedimentali"; |
||||
carichi = ParereGeologoLocalServiceUtil.getCarichiLavoro(controlloPraticaId, giorni); |
||||
} else { |
||||
ControlloPratica controllo = ControlloPraticaLocalServiceUtil.getControlloPratica(controlloPraticaId); |
||||
Organization org = ControlloPraticaLocalServiceUtil.getOrganizationByControlloPraticaId(controlloPraticaId); |
||||
title = "istruttore per: " + org.getName(); |
||||
if (controllo.getUnitaOperativa() == 0) { |
||||
title += " tutte le U.O."; |
||||
} else { |
||||
title += " U.O. " + controllo.getUnitaOperativa(); |
||||
} |
||||
|
||||
if(!geologo){ |
||||
List<UserGroupRole> userGroupRoleList = UserGroupRoleLocalServiceUtil.getUserGroupRolesByGroupAndRole(controlloPratica.getGroupId(),role.getRoleId()); |
||||
for(UserGroupRole userGroupRole:userGroupRoleList){ |
||||
userIds = ArrayUtil.append(userIds,userGroupRole.getUserId()); |
||||
} |
||||
}else{ |
||||
|
||||
userIds = UserLocalServiceUtil.getRoleUserIds(role.getRoleId()); |
||||
carichi = ControlloPraticaLocalServiceUtil.getCarichiLavoro(controlloPraticaId, giorni); |
||||
} |
||||
for (Entry<String, CarichiLavoroBean> entry : carichi.entrySet()) { |
||||
String utente = entry.getKey(); |
||||
CarichiLavoroBean carico = entry.getValue(); |
||||
if (elencoUtenti.length() != 0) { |
||||
elencoUtenti.append(StringPool.COMMA); |
||||
elencoTotali.append(StringPool.COMMA); |
||||
elencoConclusi.append(StringPool.COMMA); |
||||
elencoInCorso.append(StringPool.COMMA); |
||||
} |
||||
StringBuilder elencoUtenti = new StringBuilder(); |
||||
StringBuilder elencoTotali = new StringBuilder(); |
||||
StringBuilder elencoSorteggio = new StringBuilder(); |
||||
StringBuilder elencoDeposito = new StringBuilder(); |
||||
StringBuilder elencoAutorizzazione = new StringBuilder(); |
||||
int valMax= 0; |
||||
for(long istruttoreIds: userIds){ |
||||
User istruttore = UserLocalServiceUtil.getUser(istruttoreIds); |
||||
int totale = 0; |
||||
int sorteggio = 0; |
||||
int deposito = 0; |
||||
int autorizzazione = 0; |
||||
if(geologo){ |
||||
|
||||
List<ParereGeologo> pareriGeologo = ParereGeologoLocalServiceUtil.findByGeologoId(istruttoreIds, QueryUtil.ALL_POS, QueryUtil.ALL_POS); |
||||
if(!pareriGeologo.isEmpty()){ |
||||
Long[] intPraticaIds = new Long[]{}; |
||||
for(ParereGeologo parereGeologo: pareriGeologo){ |
||||
intPraticaIds = ArrayUtil.append(intPraticaIds, parereGeologo.getIntPraticaId()); |
||||
} |
||||
totale = IntPraticaLocalServiceUtil.countCaricoLavoroCF(0l,StringPool.BLANK , null,intPraticaIds); |
||||
sorteggio = IntPraticaLocalServiceUtil.countCaricoLavoroCF(0l, StringPool.BLANK, true,intPraticaIds); |
||||
deposito = IntPraticaLocalServiceUtil.countCaricoLavoroCF(0l, Constants.TIPO_PRATICA_DEPOSITO, false,intPraticaIds); |
||||
autorizzazione = IntPraticaLocalServiceUtil.countCaricoLavoroCF(0l, Constants.TIPO_PRATICA_AUTORIZZAZIONE, false,intPraticaIds); |
||||
} |
||||
}else{ |
||||
totale = IntPraticaLocalServiceUtil.countCaricoLavoroIstruttore(istruttoreIds,StringPool.BLANK , null); |
||||
sorteggio = IntPraticaLocalServiceUtil.countCaricoLavoroIstruttore(istruttoreIds, StringPool.BLANK, true); |
||||
deposito = IntPraticaLocalServiceUtil.countCaricoLavoroIstruttore(istruttoreIds, Constants.TIPO_PRATICA_DEPOSITO, false); |
||||
autorizzazione = IntPraticaLocalServiceUtil.countCaricoLavoroIstruttore(istruttoreIds, Constants.TIPO_PRATICA_AUTORIZZAZIONE, false); |
||||
} |
||||
|
||||
if(elencoUtenti.length()!=0){ |
||||
elencoUtenti.append(","); |
||||
elencoTotali.append(","); |
||||
elencoSorteggio.append(","); |
||||
elencoDeposito.append(","); |
||||
elencoAutorizzazione.append(","); |
||||
} |
||||
elencoUtenti.append("\""+istruttore.getFullName()+"\""); |
||||
|
||||
elencoTotali.append(totale); |
||||
elencoSorteggio.append(sorteggio); |
||||
elencoDeposito.append(deposito); |
||||
elencoAutorizzazione.append(autorizzazione); |
||||
|
||||
if(valMax < totale){ |
||||
valMax = totale; |
||||
} |
||||
} |
||||
int stepSize = (valMax/10)+1; |
||||
elencoUtenti.append(StringPool.QUOTE).append(utente).append(StringPool.QUOTE); |
||||
elencoTotali.append(carico.getTotali()); |
||||
elencoConclusi.append(carico.getConclusi()); |
||||
elencoInCorso.append(carico.getInCorso()); |
||||
valMax = Math.max(valMax, carico.getTotali()); |
||||
} |
||||
int stepSize = (valMax / 10) + 1; |
||||
%> |
||||
|
||||
<script type="text/javascript" src="<%=request.getContextPath()%>/js/Chart.bundle.min.js" ></script> |
||||
<liferay-portlet:actionURL name="calcolaCarichi" var="calcolaCarichiURL"> |
||||
<liferay-portlet:param name="controlloPraticaId" value="<%= String.valueOf(controlloPraticaId) %>" /> |
||||
<liferay-portlet:param name="geologo" value="<%= String.valueOf(geologo) %>"/> |
||||
<liferay-portlet:param name="unitaOperativa" value="<%= String.valueOf(unitaOperativa) %>" /> |
||||
</liferay-portlet:actionURL> |
||||
<aui:form action="<%= calcolaCarichiURL %>" name="calcolaFm" cssClass="menuCarichi"> |
||||
<aui:select name="giorni" label="interval" inlineField="true" inlineLabel="left"> |
||||
<% |
||||
for (int i = 0; i < periodi.length; i++) { |
||||
%> |
||||
<aui:option value="<%= periodi[i] %>" selected="<%= periodi[i] == giorni %>"><%= periodi[i] %> giorni</aui:option> |
||||
<% |
||||
} |
||||
%> |
||||
</aui:select> |
||||
<aui:button type="submit" value="refresh" icon="icon-refresh" iconAlign="left" /> |
||||
</aui:form> |
||||
<script type="text/javascript" src="<%= request.getContextPath() %>/js/Chart.bundle.min.js" ></script> |
||||
<style> |
||||
canvas { |
||||
-moz-user-select: none; |
||||
-webkit-user-select: none; |
||||
-ms-user-select: none; |
||||
} |
||||
canvas { |
||||
-moz-user-select: none; |
||||
-webkit-user-select: none; |
||||
-ms-user-select: none; |
||||
} |
||||
form.menuCarichi, .menuCarichi div.control-group { |
||||
margin: 0; |
||||
} |
||||
</style> |
||||
|
||||
|
||||
<div id="container" style="position: relative; height:80vh; width:85vw; margin: 0 auto;"> |
||||
<div id="container" style="position: relative; height:80vh; width:85vw; margin: 0 auto"> |
||||
<canvas id="canvas"></canvas> |
||||
</div> |
||||
|
||||
<script type="text/javascript"> |
||||
new AUI().ready(function(){ |
||||
<script type="text/javascript"> |
||||
new AUI().ready(function() { |
||||
var horizontalBarChartData = { |
||||
labels: [<%=elencoUtenti%>], |
||||
datasets: [{ |
||||
label: 'Procedimenti totali', |
||||
backgroundColor: '#5899AB', |
||||
borderColor: '#467a88', |
||||
borderWidth: 2, |
||||
data: [<%=elencoTotali%>] |
||||
}, |
||||
{ |
||||
label: 'Deposito a Sorteggio', |
||||
backgroundColor: '#138b46', |
||||
borderColor: '#0f6f38', |
||||
borderWidth: 2, |
||||
data: [<%=elencoSorteggio%> |
||||
] |
||||
}, |
||||
{ |
||||
label: 'Depositi Obbligatorio', |
||||
backgroundColor: '#ccac00', |
||||
borderColor: '#a38900', |
||||
borderWidth: 2, |
||||
data: [<%=elencoDeposito%> |
||||
] |
||||
}, |
||||
{ |
||||
label: 'Autorizzazioni', |
||||
backgroundColor: '#cc0000', |
||||
borderColor: '#a30000', |
||||
borderWidth: 2, |
||||
data: [<%=elencoAutorizzazione%> |
||||
] |
||||
} |
||||
] |
||||
|
||||
labels: [<%= elencoUtenti %>], |
||||
datasets: [ |
||||
{ |
||||
label: 'Procedimenti totali', |
||||
backgroundColor: '#5899AB', |
||||
borderColor: '#467a88', |
||||
borderWidth: 2, |
||||
data: [<%= elencoTotali %>], |
||||
}, |
||||
{ |
||||
label: 'Procedimenti conclusi', |
||||
backgroundColor: '#138b46', |
||||
borderColor: '#0f6f38', |
||||
borderWidth: 2, |
||||
data: [<%= elencoConclusi %>], |
||||
}, |
||||
{ |
||||
label: 'Procedimenti in corso', |
||||
backgroundColor: '#cc0000', |
||||
borderColor: '#a30000', |
||||
borderWidth: 2, |
||||
data: [<%= elencoInCorso %>], |
||||
} |
||||
] |
||||
}; |
||||
|
||||
|
||||
var ctx = document.getElementById("canvas").getContext("2d"); |
||||
window.myHorizontalBar = new Chart(ctx, { |
||||
type: 'horizontalBar', |
||||
data: horizontalBarChartData, |
||||
options: { |
||||
elements: { |
||||
rectangle: { |
||||
borderWidth: 4, |
||||
} |
||||
}, |
||||
responsive: true, |
||||
maintainAspectRatio: true, |
||||
|
||||
legend: { |
||||
position: 'top', |
||||
}, |
||||
title: { |
||||
display: true, |
||||
text: 'Carichi di Lavoro <%=geologo?"Geologo":"Istruttore per:"+org.getName() %>' |
||||
}, |
||||
scales: { |
||||
xAxes: [{ |
||||
ticks: { |
||||
beginAtZero:true, |
||||
stepSize: <%= stepSize %>, |
||||
min: 0, |
||||
max: <%=valMax+stepSize%> |
||||
} |
||||
}] |
||||
} |
||||
|
||||
} |
||||
}); |
||||
}); |
||||
|
||||
Chart.plugins.register({ |
||||
afterDatasetsDraw: function(chart, easing) { |
||||
// To only draw at the end of animation, check for easing === 1 |
||||
var ctx = chart.ctx; |
||||
|
||||
chart.data.datasets.forEach(function (dataset, i) { |
||||
var meta = chart.getDatasetMeta(i); |
||||
if (!meta.hidden) { |
||||
meta.data.forEach(function(element, index) { |
||||
// Draw the text in black, with the specified font |
||||
ctx.fillStyle = 'rgb(0, 0, 0)'; |
||||
|
||||
var fontSize = 16; |
||||
var fontStyle = 'normal'; |
||||
var fontFamily = 'Helvetica Neue'; |
||||
ctx.font = Chart.helpers.fontString(fontSize, fontStyle, fontFamily); |
||||
|
||||
// Just naively convert to string for now |
||||
var dataString = dataset.data[index].toString(); |
||||
|
||||
// Make sure alignment settings are correct |
||||
ctx.textAlign = 'center'; |
||||
ctx.textBaseline = 'middle'; |
||||
|
||||
var padding = 10; |
||||
var position = element.tooltipPosition(); |
||||
ctx.fillText(dataString, position.x + padding, position.y); |
||||
}); |
||||
} |
||||
}); |
||||
} |
||||
var ctx = document.getElementById("canvas").getContext("2d"); |
||||
window.myHorizontalBar = new Chart(ctx, { |
||||
type: 'horizontalBar', |
||||
data: horizontalBarChartData, |
||||
options: { |
||||
elements: { |
||||
rectangle: { |
||||
borderWidth: 4, |
||||
} |
||||
}, |
||||
responsive: true, |
||||
maintainAspectRatio: true, |
||||
legend: { |
||||
position: 'top', |
||||
}, |
||||
title: { |
||||
display: true, |
||||
text: 'Carichi di lavoro <%= title %>', |
||||
}, |
||||
scales: { |
||||
xAxes: [{ |
||||
ticks: { |
||||
beginAtZero:true, |
||||
stepSize: <%= stepSize %>, |
||||
min: 0, |
||||
max: <%= valMax + stepSize %>, |
||||
} |
||||
}] |
||||
}, |
||||
} |
||||
}); |
||||
|
||||
</script> |
||||
}); |
||||
|
||||
Chart.plugins.register({ |
||||
afterDatasetsDraw: function(chart, easing) { |
||||
// To only draw at the end of animation, check for easing === 1 |
||||
var ctx = chart.ctx; |
||||
chart.data.datasets.forEach(function (dataset, i) { |
||||
var meta = chart.getDatasetMeta(i); |
||||
if (!meta.hidden) { |
||||
meta.data.forEach(function(element, index) { |
||||
// Draw the text in black, with the specified font |
||||
ctx.fillStyle = 'rgb(0, 0, 0)'; |
||||
var fontSize = 16; |
||||
var fontStyle = 'normal'; |
||||
var fontFamily = 'Helvetica Neue'; |
||||
ctx.font = Chart.helpers.fontString(fontSize, fontStyle, fontFamily); |
||||
// Just naively convert to string for now |
||||
var dataString = dataset.data[index].toString(); |
||||
// Make sure alignment settings are correct |
||||
ctx.textAlign = 'center'; |
||||
ctx.textBaseline = 'middle'; |
||||
var padding = 10; |
||||
var position = element.tooltipPosition(); |
||||
ctx.fillText(dataString, position.x + padding, position.y); |
||||
}); |
||||
} |
||||
}); |
||||
} |
||||
}); |
||||
</script> |
||||
|
@ -0,0 +1,42 @@
|
||||
package it.mwg.sismica.bo.shared.bean; |
||||
|
||||
public class CarichiLavoroBean { |
||||
|
||||
private int totali = 0; |
||||
private int conclusi = 0; |
||||
private int inCorso = 0; |
||||
|
||||
public CarichiLavoroBean() { |
||||
|
||||
} |
||||
|
||||
public void incTotali() { |
||||
|
||||
totali++; |
||||
} |
||||
|
||||
public int getTotali() { |
||||
|
||||
return totali; |
||||
} |
||||
|
||||
public void incConclusi() { |
||||
|
||||
conclusi++; |
||||
} |
||||
|
||||
public int getConclusi() { |
||||
|
||||
return conclusi; |
||||
} |
||||
|
||||
public void incInCorso() { |
||||
|
||||
inCorso++; |
||||
} |
||||
|
||||
public int getInCorso() { |
||||
|
||||
return inCorso; |
||||
} |
||||
} |
Caricamento…
Reference in new issue