Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
SalidasAutomaticas
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Billy Larru
SalidasAutomaticas
Commits
04e6c7d0
Commit
04e6c7d0
authored
Sep 22, 2018
by
Billy Larru
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[EDIT leyendo horario de salida diferente de 00:00 y 24:00]
parent
5a1dc576
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
221 additions
and
218 deletions
+221
-218
SalidasMysqlDAO.java
...ain/java/salidasautomaticas/mysqldao/SalidasMysqlDAO.java
+221
-218
No files found.
src/main/java/salidasautomaticas/mysqldao/SalidasMysqlDAO.java
View file @
04e6c7d0
...
@@ -24,222 +24,226 @@ import salidasautomaticas.util.EstandarDAO;
...
@@ -24,222 +24,226 @@ import salidasautomaticas.util.EstandarDAO;
*/
*/
public
class
SalidasMysqlDAO
implements
SalidasDAO
{
public
class
SalidasMysqlDAO
implements
SalidasDAO
{
private
static
final
Logger
log
=
LogManager
.
getLogger
(
SalidasMysqlDAO
.
class
);
private
static
final
Logger
log
=
LogManager
.
getLogger
(
SalidasMysqlDAO
.
class
);
@Override
@Override
public
JSONArray
obtenerHorariosSalida
()
throws
Exception
{
public
JSONArray
obtenerHorariosSalida
()
throws
Exception
{
JSONArray
jsonArray
=
new
JSONArray
();
JSONArray
jsonArray
=
new
JSONArray
();
int
diaSemana
=
obtenerDiaSemana
();
int
diaSemana
=
obtenerDiaSemana
();
if
(
diaSemana
==
7
)
{
if
(
diaSemana
==
7
)
{
return
jsonArray
;
return
jsonArray
;
}
}
Connection
cn
=
MysqlDAOFactory
.
obtenerConexion
(
"nuevo"
);
Connection
cn
=
MysqlDAOFactory
.
obtenerConexion
(
"nuevo"
);
String
query
=
"SELECT {campo_salida} as salida FROM ("
String
query
=
"SELECT {campo_salida} as salida FROM ("
+
"SELECT"
+
"SELECT"
+
" p.salidaLV, "
+
" p.salidaLV, "
+
" p.salidaS "
+
" p.salidaS "
+
"FROM "
+
"FROM "
+
"personal p "
+
"personal p "
+
"WHERE "
+
"WHERE "
+
"p.codtipo!=3 "
//Que registren asistencia
+
"p.codtipo!=3 "
//Que registren asistencia
+
"AND p.retirado = 0 "
+
"AND p.retirado = 0 "
+
"AND NOT p.codlocal IN ('L035', 'L053', 'L038') "
//Que no sea profesores por horas, pronoe belisario y grupo MH
+
"AND NOT p.codlocal IN ('L035', 'L053', 'L038') "
//Que no sea profesores por horas, pronoe belisario y grupo MH
+
"AND NOT p.pronoe = 1 "
//Que no sea pronoe
+
"AND NOT p.pronoe = 1 "
//Que no sea pronoe
+
"AND NOT p.codcargo IN (71, 13, 96, 41) "
//Que no sea policia ni de cafeteria ni vigilante ni interna psicologa
+
"AND NOT p.codcargo IN (71, 13, 96, 41) "
//Que no sea policia ni de cafeteria ni vigilante ni interna psicologa
+
"AND p.tmp_id not in (99998, 9998, 99999, 9888) "
//Que esten en planilla
+
"AND p.tmp_id not in (99998, 9998, 99999, 9888) "
//Que esten en planilla
+
"AND NOT p.horaing > 19 "
+
"AND NOT p.horaing > 19 "
+
"AND NOT p.salidaS = '') as tabla WHERE NULLIF( {campo_salida} , '') is NOT null GROUP BY {campo_salida} "
;
+
"AND NOT p.salidaS = '') as tabla "
+
"WHERE NULLIF( {campo_salida} , '') is NOT null "
if
(
diaSemana
>=
1
&&
diaSemana
<=
5
)
{
+
"AND ({campo_salida}!='24:00' AND {campo_salida}!='00:00')"
query
=
query
.
replaceAll
(
"\\{campo_salida\\}"
,
"tabla.salidaLV"
);
+
"GROUP BY {campo_salida} "
;
}
else
if
(
diaSemana
==
6
)
{
query
=
query
.
replaceAll
(
"\\{campo_salida\\}"
,
"tabla.salidaS"
);
if
(
diaSemana
>=
1
&&
diaSemana
<=
5
)
{
}
query
=
query
.
replaceAll
(
"\\{campo_salida\\}"
,
"tabla.salidaLV"
);
jsonArray
=
EstandarDAO
.
getInstance
().
consultar
(
cn
,
query
);
}
else
if
(
diaSemana
==
6
)
{
query
=
query
.
replaceAll
(
"\\{campo_salida\\}"
,
"tabla.salidaS"
);
return
jsonArray
;
}
}
jsonArray
=
EstandarDAO
.
getInstance
().
consultar
(
cn
,
query
);
private
int
obtenerDiaSemana
()
{
return
jsonArray
;
int
diaSemana
;
}
LocalDate
date
=
LocalDate
.
now
();
diaSemana
=
date
.
getDayOfWeek
().
getValue
();
private
int
obtenerDiaSemana
()
{
int
diaSemana
;
return
diaSemana
;
LocalDate
date
=
LocalDate
.
now
();
}
diaSemana
=
date
.
getDayOfWeek
().
getValue
();
private
String
getFechaHoy
()
{
return
diaSemana
;
String
fechaHoy
;
}
LocalDate
date
=
LocalDate
.
now
();
int
anio
=
date
.
getYear
();
private
String
getFechaHoy
()
{
int
mes
=
date
.
getMonthValue
();
String
fechaHoy
;
int
dia
=
date
.
getDayOfMonth
();
LocalDate
date
=
LocalDate
.
now
();
int
anio
=
date
.
getYear
();
fechaHoy
=
String
.
format
(
"%s-%02d-%02d"
,
anio
,
mes
,
dia
);
int
mes
=
date
.
getMonthValue
();
int
dia
=
date
.
getDayOfMonth
();
return
fechaHoy
;
}
fechaHoy
=
String
.
format
(
"%s-%02d-%02d"
,
anio
,
mes
,
dia
);
private
String
getFechaAyer
()
{
return
fechaHoy
;
String
fechaAyer
;
}
LocalDate
date
=
LocalDate
.
now
();
date
=
date
.
minusDays
(
1
);
private
String
getFechaAyer
()
{
String
fechaAyer
;
int
anio
=
date
.
getYear
();
LocalDate
date
=
LocalDate
.
now
();
int
mes
=
date
.
getMonthValue
();
date
=
date
.
minusDays
(
1
);
int
dia
=
date
.
getDayOfMonth
();
int
anio
=
date
.
getYear
();
fechaAyer
=
String
.
format
(
"%s-%02d-%02d"
,
anio
,
mes
,
dia
);
int
mes
=
date
.
getMonthValue
();
int
dia
=
date
.
getDayOfMonth
();
return
fechaAyer
;
}
fechaAyer
=
String
.
format
(
"%s-%02d-%02d"
,
anio
,
mes
,
dia
);
@Override
return
fechaAyer
;
public
JSONArray
obtenerAsistencias
(
String
horaProgramada
)
throws
Exception
{
}
Connection
cn
=
MysqlDAOFactory
.
obtenerConexion
(
"nuevo"
);
@Override
String
fechaPartida
=
"2018-01-01"
;
public
JSONArray
obtenerAsistencias
(
String
horaProgramada
)
throws
Exception
{
Connection
cn
=
MysqlDAOFactory
.
obtenerConexion
(
"nuevo"
);
String
query
=
"SELECT * from "
+
"(select "
String
fechaPartida
=
"2018-01-01"
;
+
" asistencia.codasis, "
+
"asistencia.fecha_asis, "
String
query
=
"SELECT * from "
+
"{campo_salida} as salida "
+
"(select "
+
"FROM "
+
" asistencia.codasis, "
+
" asistencia "
+
"asistencia.fecha_asis, "
+
"INNER JOIN personal ON asistencia.codper = personal.codper "
+
"{campo_salida} as salida "
+
"WHERE "
+
"FROM "
+
" asistencia.horasal = '' "
+
" asistencia "
+
"AND asistencia.minsal = '' "
+
"INNER JOIN personal ON asistencia.codper = personal.codper "
+
"AND ( {campo_salida} <= ? AND asistencia.fecha_asis='{fecha_hoy}' "
//Se setea la horaProgramada como parametro en "?"
+
"WHERE "
+
"OR asistencia.fecha_asis BETWEEN '{fecha_partida}' AND '{fecha_ayer}') "
+
" asistencia.horasal = '' "
+
"AND {campo_salida} is not NULL "
+
"AND asistencia.minsal = '' "
+
"AND NOT personal.codlocal IN ('L035', 'L053', 'L038') "
//Que no sea profesores por horas, pronoe belisario y grupo MH
+
"AND ( {campo_salida} <= ? AND asistencia.fecha_asis='{fecha_hoy}' "
//Se setea la horaProgramada como parametro en "?"
+
"AND NOT personal.codcargo IN (71, 13, 96, 41) "
//Que no sea policia ni de cafeteria ni vigilante ni interna psicologa
+
"OR asistencia.fecha_asis BETWEEN '{fecha_partida}' AND '{fecha_ayer}') "
+
"AND NOT personal.pronoe = 1 "
//Que no sea pronoe
+
"AND {campo_salida} is not NULL "
+
"AND (WEEKDAY(asistencia.fecha_asis) + 1) !=7 "
//Que no sea domingo
+
"AND NOT personal.codlocal IN ('L035', 'L053', 'L038') "
//Que no sea profesores por horas, pronoe belisario y grupo MH
+
"AND NOT ( (WEEKDAY(asistencia.fecha_asis) + 1)=6 and personal.codcargo in ({cod_cargo_primaria}) ) "
//Que no sean de primaria los sabados
+
"AND NOT personal.codcargo IN (71, 13, 96, 41) "
//Que no sea policia ni de cafeteria ni vigilante ni interna psicologa
+
"AND asistencia.estado in (1, 2, 5) "
//Que sean asistio, tardanza y no marco
+
"AND NOT personal.pronoe = 1 "
//Que no sea pronoe
+
"AND personal.tmp_id not in (99998, 9998, 99999, 9888) "
//Que esten en planilla
+
"AND (WEEKDAY(asistencia.fecha_asis) + 1) !=7 "
//Que no sea domingo
+
"AND personal.codtipo!=3 "
//Que si registren asistencia
+
"AND NOT ( (WEEKDAY(asistencia.fecha_asis) + 1)=6 and personal.codcargo in ({cod_cargo_primaria}) ) "
//Que no sean de primaria los sabados
+
"AND personal.retirado=0) as tabla "
//Que no esten retirados
+
"AND asistencia.estado in (1, 2, 5) "
//Que sean asistio, tardanza y no marco
+
"where tabla.salida!=''"
;
+
"AND personal.tmp_id not in (99998, 9998, 99999, 9888) "
//Que esten en planilla
+
"AND personal.codtipo!=3 "
//Que si registren asistencia
String
campoSalida
=
"("
+
"AND personal.retirado=0) as tabla "
//Que no esten retirados
+
"case "
+
"where tabla.salida!=''"
;
+
"when (WEEKDAY(asistencia.fecha_asis) + 1)<6 then salidaLV "
+
"when (WEEKDAY(asistencia.fecha_asis) + 1)=6 then salidaS end "
String
campoSalida
=
"("
+
") "
;
+
"case "
+
"when (WEEKDAY(asistencia.fecha_asis) + 1)<6 then salidaLV "
String
codCargoPrimaria
=
"1, 2, 4, 9, 11, 12, 20, 25, 33, 39, 40, 45, 51"
;
+
"when (WEEKDAY(asistencia.fecha_asis) + 1)=6 then salidaS end "
+
") "
;
query
=
query
.
replaceAll
(
"\\{campo_salida\\}"
,
campoSalida
);
query
=
query
.
replaceAll
(
"\\{fecha_hoy\\}"
,
getFechaHoy
());
String
codCargoPrimaria
=
"1, 2, 4, 9, 11, 12, 20, 25, 33, 39, 40, 45, 51"
;
query
=
query
.
replaceAll
(
"\\{fecha_partida\\}"
,
fechaPartida
);
query
=
query
.
replaceAll
(
"\\{fecha_ayer\\}"
,
getFechaAyer
());
query
=
query
.
replaceAll
(
"\\{campo_salida\\}"
,
campoSalida
);
query
=
query
.
replaceAll
(
"\\{cod_cargo_primaria\\}"
,
codCargoPrimaria
);
query
=
query
.
replaceAll
(
"\\{fecha_hoy\\}"
,
getFechaHoy
());
query
=
query
.
replaceAll
(
"\\{fecha_partida\\}"
,
fechaPartida
);
JSONArray
parametros
=
new
JSONArray
();
query
=
query
.
replaceAll
(
"\\{fecha_ayer\\}"
,
getFechaAyer
());
parametros
.
put
(
horaProgramada
);
query
=
query
.
replaceAll
(
"\\{cod_cargo_primaria\\}"
,
codCargoPrimaria
);
JSONArray
jsonArray
=
EstandarDAO
.
getInstance
().
consultar
(
cn
,
query
,
parametros
);
JSONArray
parametros
=
new
JSONArray
();
parametros
.
put
(
horaProgramada
);
return
jsonArray
;
}
JSONArray
jsonArray
=
EstandarDAO
.
getInstance
().
consultar
(
cn
,
query
,
parametros
);
@Override
return
jsonArray
;
public
JSONObject
actualizarSalida
(
String
horaSalida
)
throws
Exception
{
}
JSONObject
resultado
=
new
JSONObject
();
Connection
cn
=
MysqlDAOFactory
.
obtenerConexion
(
"nuevo"
);
@Override
public
JSONObject
actualizarSalida
(
String
horaSalida
)
throws
Exception
{
int
aleatorioHora
=
0
,
aleatorioMin
=
0
;
JSONObject
resultado
=
new
JSONObject
();
Connection
cn
=
MysqlDAOFactory
.
obtenerConexion
(
"nuevo"
);
JSONArray
listaAsistencias
=
obtenerAsistencias
(
horaSalida
);
log
.
info
(
"hora de salida="
+
horaSalida
+
", asistencias para actualizar="
+
listaAsistencias
.
length
());
int
aleatorioHora
=
0
,
aleatorioMin
=
0
;
Instant
inicioEjecucion
=
Instant
.
now
();
JSONArray
listaAsistencias
=
obtenerAsistencias
(
horaSalida
);
int
[]
updateCounts
=
new
int
[
listaAsistencias
.
length
()];
log
.
info
(
"hora de salida="
+
horaSalida
+
", asistencias para actualizar="
+
listaAsistencias
.
length
());
boolean
updateAll
=
false
;
Instant
inicioEjecucion
=
Instant
.
now
();
int
i
=
0
;
int
[]
updateCounts
=
new
int
[
listaAsistencias
.
length
()];
for
(
Iterator
it
=
listaAsistencias
.
iterator
();
it
.
hasNext
();)
{
boolean
updateAll
=
false
;
JSONObject
asistencia
=
(
JSONObject
)
it
.
next
();
int
i
=
0
;
String
salidaPersonal
=
asistencia
.
getString
(
"salida"
);
for
(
Iterator
it
=
listaAsistencias
.
iterator
();
it
.
hasNext
();)
{
JSONObject
asistencia
=
(
JSONObject
)
it
.
next
();
if
(
salidaPersonal
==
null
||
salidaPersonal
.
isEmpty
())
{
updateCounts
[
i
]
=
-
1
;
String
salidaPersonal
=
asistencia
.
getString
(
"salida"
);
continue
;
}
if
(
salidaPersonal
==
null
||
salidaPersonal
.
isEmpty
())
{
updateCounts
[
i
]
=
-
1
;
int
[]
aleatorio
=
generarHoraMinutoAleatorio
(
salidaPersonal
);
continue
;
aleatorioHora
=
aleatorio
[
0
];
}
aleatorioMin
=
aleatorio
[
1
];
int
[]
aleatorio
=
generarHoraMinutoAleatorio
(
salidaPersonal
);
String
queryPersonal
=
"update asistencia set horasal= ?,minsal=? where codasis=? "
;
aleatorioHora
=
aleatorio
[
0
];
JSONArray
parametros
=
new
JSONArray
();
aleatorioMin
=
aleatorio
[
1
];
parametros
.
put
(
aleatorioHora
)
String
queryPersonal
=
"update asistencia set horasal= ?,minsal=? where codasis=? "
;
.
put
(
aleatorioMin
)
JSONArray
parametros
=
new
JSONArray
();
.
put
(
asistencia
.
getString
(
"codasis"
));
parametros
.
put
(
aleatorioHora
)
resultado
=
EstandarDAO
.
getInstance
().
ejecutar
(
cn
,
queryPersonal
,
parametros
);
.
put
(
aleatorioMin
)
.
put
(
asistencia
.
getString
(
"codasis"
));
updateCounts
[
i
]
=
resultado
.
getInt
(
"msg"
);
i
++;
resultado
=
EstandarDAO
.
getInstance
().
ejecutar
(
cn
,
queryPersonal
,
parametros
);
}
updateCounts
[
i
]
=
resultado
.
getInt
(
"msg"
);
Instant
finEjecucion
=
Instant
.
now
();
i
++;
Duration
duracionProceso
=
Duration
.
between
(
inicioEjecucion
,
finEjecucion
);
}
log
.
info
(
"El proceso ha durado "
+
duracionProceso
);
int
cont0
=
0
;
Instant
finEjecucion
=
Instant
.
now
();
int
cont1
=
0
;
Duration
duracionProceso
=
Duration
.
between
(
inicioEjecucion
,
finEjecucion
);
log
.
info
(
"El proceso ha durado "
+
duracionProceso
);
for
(
int
update
:
updateCounts
){
int
cont0
=
0
;
if
(
update
==
1
)
cont1
++;
int
cont1
=
0
;
else
if
(
update
==
0
)
cont0
++;
}
for
(
int
update
:
updateCounts
)
{
if
(
update
==
1
)
{
if
(
cont1
==
updateCounts
.
length
&&
cont1
!=
0
){
cont1
++;
resultado
.
put
(
"msg"
,
1
);
}
else
if
(
update
==
0
)
{
log
.
info
(
"Se actualizaron todas las filas, ["
+
horaSalida
+
"]"
);
cont0
++;
}
}
else
if
(
cont1
>
0
){
}
resultado
.
put
(
"msg"
,
2
);
log
.
info
(
"Se actualizaron algunas filas y otras no, ["
+
horaSalida
+
"]"
);
if
(
cont1
==
updateCounts
.
length
&&
cont1
!=
0
)
{
}
resultado
.
put
(
"msg"
,
1
);
else
if
(
cont0
==
updateCounts
.
length
){
log
.
info
(
"Se actualizaron todas las filas, ["
+
horaSalida
+
"]"
);
resultado
.
put
(
"msg"
,
0
);
}
else
if
(
cont1
>
0
)
{
log
.
info
(
"No se ha actualizado ninguna fila, ["
+
horaSalida
+
"]"
);
resultado
.
put
(
"msg"
,
2
);
}
log
.
info
(
"Se actualizaron algunas filas y otras no, ["
+
horaSalida
+
"]"
);
}
else
if
(
cont0
==
updateCounts
.
length
)
{
return
resultado
;
resultado
.
put
(
"msg"
,
0
);
}
log
.
info
(
"No se ha actualizado ninguna fila, ["
+
horaSalida
+
"]"
);
}
private
int
[]
generarHoraMinutoAleatorio
(
String
horaMinuto
)
{
int
[]
aleatorio
=
new
int
[
2
];
//horaAleatoria index=0, minAleatorio index=1
return
resultado
;
String
[]
splitHoraConsulta
=
horaMinuto
.
split
(
":"
);
}
int
min
=
Integer
.
parseInt
(
splitHoraConsulta
[
1
]);
int
hora
=
Integer
.
parseInt
(
splitHoraConsulta
[
0
]);
private
int
[]
generarHoraMinutoAleatorio
(
String
horaMinuto
)
{
int
[]
aleatorio
=
new
int
[
2
];
//horaAleatoria index=0, minAleatorio index=1
String
[]
splitHoraConsulta
=
horaMinuto
.
split
(
":"
);
int
min
=
Integer
.
parseInt
(
splitHoraConsulta
[
1
]);
int
hora
=
Integer
.
parseInt
(
splitHoraConsulta
[
0
]);
// Actualizacion de salidas
// Actualizacion de salidas
if
(
min
==
0
)
{
if
(
min
==
0
)
{
aleatorio
[
0
]
=
(
int
)
Math
.
floor
(
Math
.
random
()
*
2
+
(
hora
-
1
));
aleatorio
[
0
]
=
(
int
)
Math
.
floor
(
Math
.
random
()
*
2
+
(
hora
-
1
));
}
else
{
}
else
{
aleatorio
[
0
]
=
hora
;
aleatorio
[
0
]
=
hora
;
}
}
if
(
hora
==
aleatorio
[
0
])
{
if
(
hora
==
aleatorio
[
0
])
{
if
(
min
==
0
)
{
if
(
min
==
0
)
{
aleatorio
[
1
]
=
(
int
)
Math
.
floor
(
Math
.
random
()
*
(
3
-
0
+
1
)
+
0
);
aleatorio
[
1
]
=
(
int
)
Math
.
floor
(
Math
.
random
()
*
(
3
-
0
+
1
)
+
0
);
}
else
{
}
else
{
aleatorio
[
1
]
=
(
int
)
Math
.
floor
(
Math
.
random
()
*
(
33
-
27
+
1
)
+
27
);
aleatorio
[
1
]
=
(
int
)
Math
.
floor
(
Math
.
random
()
*
(
33
-
27
+
1
)
+
27
);
}
}
}
else
{
}
else
{
aleatorio
[
1
]
=
(
int
)
Math
.
floor
(
Math
.
random
()
*
3
+
57
);
aleatorio
[
1
]
=
(
int
)
Math
.
floor
(
Math
.
random
()
*
3
+
57
);
}
}
return
aleatorio
;
return
aleatorio
;
}
}
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment