Migliorato recupero scontrini
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
package it.integry.ems.migration.model;import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
|
||||
public class Migration_20240510172417 extends BaseMigration implements MigrationModelInterface{
|
||||
|
||||
@Override
|
||||
public void up()throws Exception {
|
||||
if(isHistoryDB())
|
||||
return;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down()throws Exception{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package it.integry.ems.migration.model;import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
|
||||
public class Migration_20240515124626 extends BaseMigration implements MigrationModelInterface{
|
||||
|
||||
@Override
|
||||
public void up()throws Exception {
|
||||
if(isHistoryDB())
|
||||
return;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down()throws Exception{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package it.integry.ems.migration.model;
|
||||
|
||||
import it.integry.ems.migration._base.BaseMigration;
|
||||
import it.integry.ems.migration._base.MigrationModelInterface;
|
||||
|
||||
public class Migration_20240515144229 extends BaseMigration implements MigrationModelInterface {
|
||||
|
||||
@Override
|
||||
public void up() throws Exception {
|
||||
if (isHistoryDB())
|
||||
return;
|
||||
|
||||
|
||||
createOrUpdateFunction("getListaScontriniMancanti", "-- =============================================\n" +
|
||||
"-- Author: <Author,,Name>\n" +
|
||||
"-- Create date: <Create Date,,>\n" +
|
||||
"-- Description: <Description,,>\n" +
|
||||
"-- =============================================\n" +
|
||||
"CREATE FUNCTION getListaScontriniMancanti(@codMdep varchar(5), @codCassa varchar(5), @dataDoc datetime) \n" +
|
||||
"\n" +
|
||||
"RETURNS TABLE \n" +
|
||||
"AS\n" +
|
||||
"RETURN \n" +
|
||||
"(\n" +
|
||||
" SELECT T1.ID+1 AS Da,\n" +
|
||||
" (SELECT TOP 1 ID\n" +
|
||||
" FROM (select id_scontr as id from ntb_doct where ntb_doct.date_only_doc = @dataDoc and ntb_doct.causale = 'V' and ntb_doct.cod_mdep = @codMdep and ntb_doct.cod_cassa = @codCassa ) Tab1\n" +
|
||||
" WHERE ID>T1.ID+1\n" +
|
||||
" ORDER BY ID)-1 AS A\n" +
|
||||
" FROM (SELECT ID\n" +
|
||||
" FROM (select id_scontr as id from ntb_doct where ntb_doct.date_only_doc = @dataDoc and ntb_doct.causale = 'V' and ntb_doct.cod_mdep = @codMdep and ntb_doct.cod_cassa = @codCassa )Tab1\n" +
|
||||
" UNION SELECT 0) AS T1 LEFT JOIN (select id_scontr as id from ntb_doct where ntb_doct.date_only_doc = @dataDoc and ntb_doct.causale = 'V' and ntb_doct.cod_mdep = @codMdep and ntb_doct.cod_cassa = @codCassa ) AS T2 ON T1.ID+1=T2.ID\n" +
|
||||
" WHERE T2.ID IS NULL and (SELECT TOP 1 ID\n" +
|
||||
" FROM (select id_scontr as id from ntb_doct where ntb_doct.date_only_doc = @dataDoc and ntb_doct.causale = 'V' and ntb_doct.cod_mdep = @codMdep and ntb_doct.cod_cassa = @codCassa )TAB1\n" +
|
||||
" WHERE ID>T1.ID+1\n" +
|
||||
" ORDER BY ID)-1 is not null\n" +
|
||||
")");
|
||||
createOrUpdateFunction("f_listaScontriniMancanti", "CREATE FUNCTION [dbo].[f_listaScontriniMancanti](@codMdep varchar(5), @codCassa varchar(5), @dataDoc datetime) \n" +
|
||||
"RETURNS varchar(8000)\n" +
|
||||
"AS\n" +
|
||||
"BEGIN\n" +
|
||||
" DECLARE @lista varchar(8000); \n" +
|
||||
" SELECT @lista=COALESCE(@lista,'')+ (case when tmp.Da = tmp.a then cast(tmp.da as varchar) else cast(tmp.da as varchar) + '-' + cast (tmp.a as varchar) end) + ', '\n" +
|
||||
" from ( \n" +
|
||||
" SELECT * from dbo.getListaScontriniMancanti(@codMdep, @codCassa, @dataDoc)) tmp;\n" +
|
||||
" \n" +
|
||||
" RETURN left(@lista, len(@lista) - 1)\n" +
|
||||
"END");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void down() throws Exception {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -11,6 +11,7 @@ import it.integry.ems_model.entity.NtbDoctChk;
|
||||
import it.integry.ems_model.service.SetupGest;
|
||||
import it.integry.ems_model.types.OperationType;
|
||||
import it.integry.ems_model.utility.UtilityDB;
|
||||
import it.integry.ems_model.utility.UtilityHashMap;
|
||||
import it.integry.ems_model.utility.UtilityString;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
@@ -24,10 +25,7 @@ import java.io.FileOutputStream;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
@Service
|
||||
@Scope("request")
|
||||
@@ -82,77 +80,75 @@ public class ScontriniImportService {
|
||||
|
||||
query = UtilityDB.addwhereCond(query, whereCond, false);
|
||||
|
||||
PreparedStatement ps = multiDBTransactionManager.prepareStatement(query);
|
||||
ResultSet rs = ps.executeQuery();
|
||||
List<HashMap<String, Object>> listDepo = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), query);
|
||||
|
||||
while (rs.next()) {
|
||||
String codMdep = rs.getString("cod_mdep");
|
||||
String codCassa = rs.getString("cod_cassa");
|
||||
for (HashMap<String, Object> depo: listDepo){
|
||||
String codMdep = UtilityHashMap.getValueIfExists(depo, "cod_mdep");
|
||||
String codCassa = UtilityHashMap.getValueIfExists(depo, "cod_cassa");
|
||||
|
||||
Calendar currentDate = (Calendar) dataIniz.clone();
|
||||
while (currentDate.before(dataFine) || currentDate.equals(dataFine)) {
|
||||
String dataString = new SimpleDateFormat("yyyy/MM/dd").format(currentDate.getTime());
|
||||
String queryPV =
|
||||
"SELECT Cast('" + profileDb + "' as varchar) as profileDb, " +
|
||||
"Cast('" + codMdep + "' as varchar) as codMdep, " +
|
||||
"Cast('" + codCassa + "' as varchar) as codCassa, " +
|
||||
"Cast('" + dataString + "' as varchar) as dataDoc, " +
|
||||
" Cast(rowId as varchar) as idScontr " +
|
||||
" from ( select case when charIndex('-', value_string) > 0 then left(value_string, charIndex('-', value_string) - 1) else rtrim(ltrim(value_string)) end valMin, " +
|
||||
"case when charIndex('-', value_string) > 0 then right(value_string, len(value_string) - charIndex('-', value_string)) else rtrim(ltrim(value_string)) end valMax " +
|
||||
" from dbo.ParseStringIntoArray(dbo.f_listaScontriniMancanti('" + codMdep + "', '" + codCassa + "', '" + dataString + "'), ',') ) scontrini cross apply " +
|
||||
"dbo.getTableRowByNumber(valMin, valMax) " +
|
||||
" UNION ALL " +
|
||||
"SELECT '" + profileDb + "', " +
|
||||
"'" + codMdep + "', " +
|
||||
"'" + codCassa + "', " +
|
||||
"'" + dataString + "', " +
|
||||
"'>' + Cast(IsNull(max(id_scontr), 0) as varchar) " +
|
||||
"FROM ntb_doct " +
|
||||
"WHERE ntb_doct.cod_mdep = '" + codMdep + "' AND " +
|
||||
" ntb_doct.cod_cassa = '" + codCassa + "' AND " +
|
||||
" ntb_doct.date_only_doc = '" + dataString + "' AND " +
|
||||
" ntb_doct.causale = 'C' " +
|
||||
" GROUP BY ntb_doct.cod_mdep, ntb_doct.cod_cassa, ntb_doct.date_only_doc, ntb_doct.causale " +
|
||||
" UNION ALL " +
|
||||
"SELECT '" + profileDb + "', " +
|
||||
"'" + codMdep + "', " +
|
||||
"'" + codCassa + "', " +
|
||||
"'" + dataString + "', " +
|
||||
"'>' + Cast(IsNull(s.max_id_scontr, 0) as varchar) " +
|
||||
" FROM (SELECT cod_mdep, " +
|
||||
" cod_cassa," +
|
||||
" data_rapp, " +
|
||||
" num_scontr_fiscali " +
|
||||
" FROM ntb_rapt " +
|
||||
" WHERE cod_mdep = " + UtilityDB.valueToString(codMdep) + " AND " +
|
||||
" data_rapp = " + UtilityDB.valueToString(dataString) + " AND " +
|
||||
" cod_cassa = " + UtilityDB.valueToString(codCassa) + " AND " +
|
||||
" flag_chiusura_fiscale = 'S' ) r FULL OUTER JOIN " +
|
||||
" ( SELECT mtb_depo_casse.cod_mdep, " +
|
||||
" mtb_depo_casse.cod_cassa, " +
|
||||
UtilityDB.valueToString(dataString) + " as date_only_doc, " +
|
||||
" isNull(MAX(id_scontr),0) as max_id_scontr " +
|
||||
" FROM mtb_depo_casse left outer join ntb_doct on mtb_depo_casse.cod_mdep = ntb_doct.cod_mdep and " +
|
||||
" mtb_depo_casse.cod_cassa = ntb_doct.cod_cassa AND " +
|
||||
" ntb_doct.date_only_doc = " + UtilityDB.valueToString(dataString) + " AND " +
|
||||
" ntb_doct.causale = 'V' " +
|
||||
" WHERE mtb_depo_casse.cod_mdep = " + UtilityDB.valueToString(codMdep) + " AND " +
|
||||
" mtb_depo_casse.cod_cassa = " + UtilityDB.valueToString(codCassa) +
|
||||
"GROUP BY mtb_depo_casse.cod_mdep, mtb_depo_casse.cod_cassa) s ON " +
|
||||
" r.cod_mdep = s.cod_mdep AND " +
|
||||
" r.data_rapp = s.date_only_doc and" +
|
||||
" r.cod_cassa = s.cod_cassa " +
|
||||
" WHERE (IsNull(num_scontr_fiscali, -1) > IsNull(s.max_id_scontr, 0) ) OR " +
|
||||
" num_scontr_fiscali is null ";
|
||||
"SELECT CAST('[profileDb]' AS VARCHAR) AS profiledb,\n" +
|
||||
" CAST('[codMdep]' AS VARCHAR) AS codmdep,\n" +
|
||||
" CAST('[codCassa]' AS VARCHAR) AS codcassa,\n" +
|
||||
" CAST('[dataDoc]' AS VARCHAR) AS datadoc,\n" +
|
||||
" CAST(rowid AS VARCHAR) AS idscontr\n" +
|
||||
"FROM stb_counter\n" +
|
||||
"WHERE NOT EXISTS (SELECT id_scontr AS id\n" +
|
||||
" FROM ntb_doct\n" +
|
||||
" WHERE ntb_doct.date_only_doc = '[dataDoc]'\n" +
|
||||
" AND ntb_doct.causale = 'V'\n" +
|
||||
" AND ntb_doct.cod_mdep = '[codMdep]'\n" +
|
||||
" AND ntb_doct.cod_cassa = '[codCassa]'\n" +
|
||||
" AND id_scontr = rowid)\n" +
|
||||
" AND stb_counter.rowid < (SELECT MAX(id_scontr) AS id\n" +
|
||||
" FROM ntb_doct\n" +
|
||||
" WHERE ntb_doct.date_only_doc = '[dataDoc]'\n" +
|
||||
" AND ntb_doct.causale = 'V'\n" +
|
||||
" AND ntb_doct.cod_mdep = '[codMdep]'\n" +
|
||||
" AND ntb_doct.cod_cassa = '[codCassa]') \n" +
|
||||
"UNION ALL\n" +
|
||||
"SELECT '[profileDb]', '[codMdep]', '[codCassa]', '[dataDoc]', '>' + CAST(ISNULL(MAX(id_scontr), 0) AS VARCHAR)\n" +
|
||||
"FROM ntb_doct\n" +
|
||||
"WHERE ntb_doct.cod_mdep = '[codMdep]'\n" +
|
||||
" AND ntb_doct.cod_cassa = '[codCassa]'\n" +
|
||||
" AND ntb_doct.date_only_doc = '[dataDoc]'\n" +
|
||||
" AND ntb_doct.causale = 'C'\n" +
|
||||
"GROUP BY ntb_doct.cod_mdep, ntb_doct.cod_cassa, ntb_doct.date_only_doc, ntb_doct.causale\n" +
|
||||
"UNION ALL\n" +
|
||||
"SELECT '[profileDb]', '[codMdep]', '[codCassa]', '[dataDoc]', '>' + CAST(ISNULL(s.max_id_scontr, 0) AS VARCHAR)\n" +
|
||||
"FROM (SELECT cod_mdep, cod_cassa, data_rapp, num_scontr_fiscali\n" +
|
||||
" FROM ntb_rapt\n" +
|
||||
" WHERE cod_mdep = '[codMdep]'\n" +
|
||||
" AND data_rapp = '[dataDoc]'\n" +
|
||||
" AND cod_cassa = '[codCassa]'\n" +
|
||||
" AND flag_chiusura_fiscale = 'S') r\n" +
|
||||
" FULL OUTER JOIN (SELECT mtb_depo_casse.cod_mdep,\n" +
|
||||
" mtb_depo_casse.cod_cassa,\n" +
|
||||
" '[dataDoc]' AS date_only_doc,\n" +
|
||||
" ISNULL(MAX(id_scontr), 0) AS max_id_scontr\n" +
|
||||
" FROM mtb_depo_casse\n" +
|
||||
" LEFT OUTER JOIN ntb_doct ON mtb_depo_casse.cod_mdep = ntb_doct.cod_mdep AND\n" +
|
||||
" mtb_depo_casse.cod_cassa = ntb_doct.cod_cassa AND\n" +
|
||||
" ntb_doct.date_only_doc = '[dataDoc]' AND\n" +
|
||||
" ntb_doct.causale = 'V'\n" +
|
||||
" WHERE mtb_depo_casse.cod_mdep = '[codMdep]'\n" +
|
||||
" AND mtb_depo_casse.cod_cassa = '[codCassa]'\n" +
|
||||
" GROUP BY mtb_depo_casse.cod_mdep, mtb_depo_casse.cod_cassa) s\n" +
|
||||
" ON r.cod_mdep = s.cod_mdep AND r.data_rapp = s.date_only_doc AND r.cod_cassa = s.cod_cassa\n" +
|
||||
"WHERE (ISNULL(num_scontr_fiscali, -1) > ISNULL(s.max_id_scontr, 0))\n" +
|
||||
" OR num_scontr_fiscali IS NULL";
|
||||
|
||||
PreparedStatement psPv = multiDBTransactionManager.prepareStatement(queryPV);
|
||||
ResultSet rsPv = psPv.executeQuery();
|
||||
ResultSetMapper rsIntegRetailDTO = new ResultSetMapper();
|
||||
String stringFile = rsIntegRetailDTO.mapResultSetToCSV(rsPv, IntegRetailDTO.class, '\t', false, true);
|
||||
rsPv.close();
|
||||
psPv.close();
|
||||
queryPV =
|
||||
queryPV.replace("[profileDb]", profileDb)
|
||||
.replace("[codMdep]", codMdep)
|
||||
.replace("[codCassa]", codCassa)
|
||||
.replace("[dataDoc]", dataString);
|
||||
|
||||
|
||||
String stringFile = new ResultSetMapper().mapQueryToCSV(multiDBTransactionManager.getPrimaryConnection(), queryPV, IntegRetailDTO.class, '\t', false, true);
|
||||
if (!UtilityString.isNullOrEmpty(stringFile)) {
|
||||
//Salvare il file
|
||||
String fileName = profileDb + "_" + codMdep + "_" + codCassa + "_" +
|
||||
@@ -164,15 +160,11 @@ public class ScontriniImportService {
|
||||
IOUtils.write(stringFile.getBytes(), fos);
|
||||
fos.flush();
|
||||
IOUtils.closeQuietly(fos);
|
||||
rsPv.close();
|
||||
psPv.close();
|
||||
}
|
||||
|
||||
currentDate.add(Calendar.DATE, 1);
|
||||
}
|
||||
}
|
||||
rs.close();
|
||||
ps.close();
|
||||
}
|
||||
|
||||
public List<EntityBase> receiptChecked(Date dataScontrini, String whereCond) throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user