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; |
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; |
import com.liferay.util.bridges.mvc.MVCPortlet; |
||||||
|
|
||||||
public class CarichiLavoroPortlet extends 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 contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> |
||||||
<%@page import="com.liferay.portal.kernel.util.ArrayUtil"%> |
<%@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.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="com.liferay.portal.model.Role"%> |
||||||
<%@page import="it.tref.liferay.portos.bo.util.Constants"%> |
<%@page import="com.liferay.portal.model.User"%> |
||||||
<%@page import="com.liferay.portal.service.RoleLocalServiceUtil"%> |
|
||||||
<%@page import="com.liferay.portal.model.UserGroupRole"%> |
<%@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"%> |
<%@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"%> |
||||||
<% |
<% |
||||||
|
final int[] periodi = new int[] { 30, 90, 180, 360 }; |
||||||
long controlloPraticaId = ParamUtil.getLong(request, "controlloPraticaId"); |
long controlloPraticaId = ParamUtil.getLong(request, "controlloPraticaId"); |
||||||
boolean geologo = ParamUtil.getBoolean(request, "geologo"); |
boolean geologo = ParamUtil.getBoolean(request, "geologo"); |
||||||
String ruolo = Constants.ROLE_NAME_ISTRUTTORE; |
long[] userIds = new long[] {}; |
||||||
Organization org =null; |
int giorni = ParamUtil.getInteger(renderRequest, "giorni", 90); |
||||||
long[] userIds = new long[]{}; |
int unitaOperativa = 0; |
||||||
Role role =null; |
String title; |
||||||
ControlloPratica controlloPratica =null; |
StringBuilder elencoUtenti = new StringBuilder(); |
||||||
|
StringBuilder elencoTotali = new StringBuilder(); |
||||||
if(geologo){ |
StringBuilder elencoConclusi = new StringBuilder(); |
||||||
ruolo = Constants.ROLE_NAME_GEOLOGO; |
StringBuilder elencoInCorso = new StringBuilder(); |
||||||
role = RoleLocalServiceUtil.getRole(themeDisplay.getCompanyId(), ruolo); |
int valMax = 0; |
||||||
|
Map<String, CarichiLavoroBean> carichi; |
||||||
}else{ |
if (geologo) { |
||||||
controlloPratica = ControlloPraticaLocalServiceUtil.getControlloPratica(controlloPraticaId); |
title = "endoprocedimentali"; |
||||||
Group genioGroup = GroupLocalServiceUtil.getGroup(controlloPratica.getGroupId()); |
carichi = ParereGeologoLocalServiceUtil.getCarichiLavoro(controlloPraticaId, giorni); |
||||||
org = OrganizationLocalServiceUtil.getOrganization(genioGroup.getOrganizationId()); |
} else { |
||||||
role = RoleLocalServiceUtil.getRole(controlloPratica.getCompanyId(), ruolo); |
ControlloPratica controllo = ControlloPraticaLocalServiceUtil.getControlloPratica(controlloPraticaId); |
||||||
} |
Organization org = ControlloPraticaLocalServiceUtil.getOrganizationByControlloPraticaId(controlloPraticaId); |
||||||
|
title = "istruttore per: " + org.getName(); |
||||||
if(!geologo){ |
if (controllo.getUnitaOperativa() == 0) { |
||||||
List<UserGroupRole> userGroupRoleList = UserGroupRoleLocalServiceUtil.getUserGroupRolesByGroupAndRole(controlloPratica.getGroupId(),role.getRoleId()); |
title += " tutte le U.O."; |
||||||
for(UserGroupRole userGroupRole:userGroupRoleList){ |
} else { |
||||||
userIds = ArrayUtil.append(userIds,userGroupRole.getUserId()); |
title += " U.O. " + controllo.getUnitaOperativa(); |
||||||
} |
|
||||||
}else{ |
|
||||||
|
|
||||||
userIds = UserLocalServiceUtil.getRoleUserIds(role.getRoleId()); |
|
||||||
} |
} |
||||||
StringBuilder elencoUtenti = new StringBuilder(); |
carichi = ControlloPraticaLocalServiceUtil.getCarichiLavoro(controlloPraticaId, giorni); |
||||||
StringBuilder elencoTotali = new StringBuilder(); |
} |
||||||
StringBuilder elencoSorteggio = new StringBuilder(); |
for (Entry<String, CarichiLavoroBean> entry : carichi.entrySet()) { |
||||||
StringBuilder elencoDeposito = new StringBuilder(); |
String utente = entry.getKey(); |
||||||
StringBuilder elencoAutorizzazione = new StringBuilder(); |
CarichiLavoroBean carico = entry.getValue(); |
||||||
int valMax= 0; |
if (elencoUtenti.length() != 0) { |
||||||
for(long istruttoreIds: userIds){ |
elencoUtenti.append(StringPool.COMMA); |
||||||
User istruttore = UserLocalServiceUtil.getUser(istruttoreIds); |
elencoTotali.append(StringPool.COMMA); |
||||||
int totale = 0; |
elencoConclusi.append(StringPool.COMMA); |
||||||
int sorteggio = 0; |
elencoInCorso.append(StringPool.COMMA); |
||||||
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; |
||||||
%> |
%> |
||||||
|
<liferay-portlet:actionURL name="calcolaCarichi" var="calcolaCarichiURL"> |
||||||
<script type="text/javascript" src="<%=request.getContextPath()%>/js/Chart.bundle.min.js" ></script> |
<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> |
<style> |
||||||
canvas { |
canvas { |
||||||
-moz-user-select: none; |
-moz-user-select: none; |
||||||
-webkit-user-select: none; |
-webkit-user-select: none; |
||||||
-ms-user-select: none; |
-ms-user-select: none; |
||||||
} |
} |
||||||
|
form.menuCarichi, .menuCarichi div.control-group { |
||||||
|
margin: 0; |
||||||
|
} |
||||||
</style> |
</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> |
<canvas id="canvas"></canvas> |
||||||
</div> |
</div> |
||||||
|
<script type="text/javascript"> |
||||||
<script type="text/javascript"> |
new AUI().ready(function() { |
||||||
new AUI().ready(function(){ |
|
||||||
var horizontalBarChartData = { |
var horizontalBarChartData = { |
||||||
labels: [<%=elencoUtenti%>], |
labels: [<%= elencoUtenti %>], |
||||||
datasets: [{ |
datasets: [ |
||||||
label: 'Procedimenti totali', |
{ |
||||||
backgroundColor: '#5899AB', |
label: 'Procedimenti totali', |
||||||
borderColor: '#467a88', |
backgroundColor: '#5899AB', |
||||||
borderWidth: 2, |
borderColor: '#467a88', |
||||||
data: [<%=elencoTotali%>] |
borderWidth: 2, |
||||||
}, |
data: [<%= elencoTotali %>], |
||||||
{ |
}, |
||||||
label: 'Deposito a Sorteggio', |
{ |
||||||
backgroundColor: '#138b46', |
label: 'Procedimenti conclusi', |
||||||
borderColor: '#0f6f38', |
backgroundColor: '#138b46', |
||||||
borderWidth: 2, |
borderColor: '#0f6f38', |
||||||
data: [<%=elencoSorteggio%> |
borderWidth: 2, |
||||||
] |
data: [<%= elencoConclusi %>], |
||||||
}, |
}, |
||||||
{ |
{ |
||||||
label: 'Depositi Obbligatorio', |
label: 'Procedimenti in corso', |
||||||
backgroundColor: '#ccac00', |
backgroundColor: '#cc0000', |
||||||
borderColor: '#a38900', |
borderColor: '#a30000', |
||||||
borderWidth: 2, |
borderWidth: 2, |
||||||
data: [<%=elencoDeposito%> |
data: [<%= elencoInCorso %>], |
||||||
] |
} |
||||||
}, |
] |
||||||
{ |
|
||||||
label: 'Autorizzazioni', |
|
||||||
backgroundColor: '#cc0000', |
|
||||||
borderColor: '#a30000', |
|
||||||
borderWidth: 2, |
|
||||||
data: [<%=elencoAutorizzazione%> |
|
||||||
] |
|
||||||
} |
|
||||||
] |
|
||||||
|
|
||||||
}; |
}; |
||||||
|
|
||||||
|
|
||||||
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({ |
var ctx = document.getElementById("canvas").getContext("2d"); |
||||||
afterDatasetsDraw: function(chart, easing) { |
window.myHorizontalBar = new Chart(ctx, { |
||||||
// To only draw at the end of animation, check for easing === 1 |
type: 'horizontalBar', |
||||||
var ctx = chart.ctx; |
data: horizontalBarChartData, |
||||||
|
options: { |
||||||
chart.data.datasets.forEach(function (dataset, i) { |
elements: { |
||||||
var meta = chart.getDatasetMeta(i); |
rectangle: { |
||||||
if (!meta.hidden) { |
borderWidth: 4, |
||||||
meta.data.forEach(function(element, index) { |
} |
||||||
// Draw the text in black, with the specified font |
}, |
||||||
ctx.fillStyle = 'rgb(0, 0, 0)'; |
responsive: true, |
||||||
|
maintainAspectRatio: true, |
||||||
var fontSize = 16; |
legend: { |
||||||
var fontStyle = 'normal'; |
position: 'top', |
||||||
var fontFamily = 'Helvetica Neue'; |
}, |
||||||
ctx.font = Chart.helpers.fontString(fontSize, fontStyle, fontFamily); |
title: { |
||||||
|
display: true, |
||||||
// Just naively convert to string for now |
text: 'Carichi di lavoro <%= title %>', |
||||||
var dataString = dataset.data[index].toString(); |
}, |
||||||
|
scales: { |
||||||
// Make sure alignment settings are correct |
xAxes: [{ |
||||||
ctx.textAlign = 'center'; |
ticks: { |
||||||
ctx.textBaseline = 'middle'; |
beginAtZero:true, |
||||||
|
stepSize: <%= stepSize %>, |
||||||
var padding = 10; |
min: 0, |
||||||
var position = element.tooltipPosition(); |
max: <%= valMax + stepSize %>, |
||||||
ctx.fillText(dataString, position.x + padding, position.y); |
} |
||||||
}); |
}] |
||||||
} |
}, |
||||||
}); |
} |
||||||
} |
|
||||||
}); |
}); |
||||||
|
}); |
||||||
|
|
||||||
</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