[CARELLI] creazione xml per esportazione zucchetti

This commit is contained in:
2024-06-14 13:00:47 +02:00
parent c041d3fc48
commit 9fbcf5b074
3 changed files with 148 additions and 35 deletions

View File

@@ -0,0 +1,24 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20240614103654 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("EXPORT_RISORSE UMANE", "ZUCCHETTI", "COD_AZIENDA", null, null, false, null, false, false, false, false, false, null, false, null);
createSetup("EXPORT_RISORSE UMANE", "ZUCCHETTI", "PASSWORD", null, null, false, null, false, false, false, false, false, null, false, null);
createSetup("EXPORT_RISORSE UMANE", "ZUCCHETTI", "USERNAME", null, null, false, null, false, false, false, false, false, null, false, null);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -16,7 +16,7 @@ public class RisorseUmaneExporter extends BaseEntityExporter implements IEntityE
if (enumFormat != null){
if (enumFormat == Format.ZUCCHETTI) {
RisorseUmaneService risorseUmane = context.getBean(RisorseUmaneService.class);
return risorseUmane.export(type, format);
return risorseUmane.export(username, type, format);
}
throw new Exception(String.format("Formato %s non supportato", format));
}else {

View File

@@ -1,22 +1,35 @@
package it.integry.ems.system.export.services.risorseUmane;
import com.annimon.stream.Stream;
import com.google.common.io.Files;
import it.integry.ems.export.base.EntityExportResponse;
import it.integry.ems.response.FileItem;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.system.export.dto.ZucchettiDTO;
import it.integry.ems_model.entity.JtbFlav;
import it.integry.ems_model.entity.WtbUsersInfo;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityDate;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.*;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.io.FileOutputStream;
import java.io.StringWriter;
import java.text.SimpleDateFormat;
import java.util.*;
import javax.xml.parsers.*;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.OutputStream;
@Service
@Scope("request")
@@ -27,14 +40,17 @@ public class RisorseUmaneService {
@Autowired
private SetupGest setupGest;
public EntityExportResponse export(String type, String format) throws Exception {
EntityExportResponse<List<File>> entityExportResponse = new EntityExportResponse<>();
List<JtbFlav> users = getUsers();
String file = "";
@Autowired
EntityProcessor entityProcessor;
String codAzienda = "000001";
public EntityExportResponse<List<FileItem>> export(String username, String type, String format) throws Exception {
Map<String, String> setupSection = setupGest.getExportSetupSection(multiDBTransactionManager.getPrimaryConnection(), type, format);
List<JtbFlav> users = getUsers();
String fileText;
String codAzienda = setupSection.get("COD_AZIENDA");
String codDipendete = "0000001";
String dataInizioValidita = "18000101";
String dataInizioValidita = "";
String codRicezione = "HRANAGRAFICO";
int numDipendete = Integer.parseInt(codDipendete);
@@ -49,38 +65,113 @@ public class RisorseUmaneService {
dataInizioValidita + ";" +
codRicezione + ";";
zucchettiDto.add(new ZucchettiDTO().set("FLCHECKOBB", "S"));
zucchettiDto.add(new ZucchettiDTO().set("IDSUBJECT", jtbFlav.getCodJflav()));
zucchettiDto.add(new ZucchettiDTO().set("IDTPSUBJ", "DIPEND"));
zucchettiDto.add(new ZucchettiDTO().set("ANNAME", jtbFlav.getNome()));
zucchettiDto.add(new ZucchettiDTO().set("ANSURNAM", jtbFlav.getCognome()));
zucchettiDto.add(new ZucchettiDTO().set("FLCHECKOBB", "S"));
zucchettiDto.add(new ZucchettiDTO().set("IDTPSUBJ", "DIPEND"));
zucchettiDto.add(new ZucchettiDTO().set("ANCITYBT", jtbFlav.getComuneNascita()));
zucchettiDto.add(new ZucchettiDTO().set("DTBIRTH", UtilityDate.formatDate(jtbFlav.getDataNascita(), "yyyyMMdd")));
zucchettiDto.add(new ZucchettiDTO().set("DTENDVL", UtilityDate.formatDate(jtbFlav.getDataFineLavoro(), "yyyyMMdd")));
zucchettiDto.add(new ZucchettiDTO().set("FLACTIVE", jtbFlav.getCodJfas().equalsIgnoreCase("LIC") ? "N" : "S"));
zucchettiDto.add(new ZucchettiDTO().set("IDCITYBT", jtbFlav.getCodiceFiscale()));
zucchettiDto.add(new ZucchettiDTO().set("IDIDENTIFP", jtbFlav.getCodiceFiscale().substring(11, 15))); //Cod città
zucchettiDto.add(new ZucchettiDTO().set("IDLEGALNAT", "000"));
zucchettiDto.add(new ZucchettiDTO().set("IDMARITAL", jtbFlav.getStatoCivile()));
zucchettiDto.add(new ZucchettiDTO().set("IDSTUDY", jtbFlav.getTitoloStudio()));
zucchettiDto.add(new ZucchettiDTO().set("TPIDENTIFP", "N"));
zucchettiDto.add(new ZucchettiDTO().set("TPSEX", jtbFlav.getSesso()));
zucchettiDto.add(new ZucchettiDTO().set("ANADDRESRS", jtbFlav.getIndirizzo()));
zucchettiDto.add(new ZucchettiDTO().set("ANCIVICNRS", jtbFlav.getIndirizzo().substring(jtbFlav.getIndirizzo().indexOf(',') + 1).trim().replace(" ", "")));
zucchettiDto.add(new ZucchettiDTO().set("ANEMAILRS", jtbFlav.geteMail()));
zucchettiDto.add(new ZucchettiDTO().set("ANMOBILTEL", jtbFlav.getNumTelefono()));
zucchettiDto.add(new ZucchettiDTO().set("IDCITYRS", getCodCitta(jtbFlav.getComune())));
zucchettiDto.add(new ZucchettiDTO().set("IDRGNRS", "14"));
zucchettiDto.add(new ZucchettiDTO().set("IDSTATERS", "IT"));
zucchettiDto.add(new ZucchettiDTO().set("FLRELATION", "S"));
zucchettiDto.add(new ZucchettiDTO().set("DTASSUMPT", UtilityDate.formatDate(jtbFlav.getDataAssunz(), "yyyyMMdd")));
zucchettiDto.add(new ZucchettiDTO().set("FLASSOBBL68", "N"));
zucchettiDto.add(new ZucchettiDTO().set("IDEMPSOMM", "N"));
zucchettiDto.add(new ZucchettiDTO().set("IDGRPEM", "000"));
zucchettiDto.add(new ZucchettiDTO().set("IDLANGUAGE", "ITA"));
zucchettiDto.add(new ZucchettiDTO().set("IDNATREL", "00"));
zucchettiDto.add(new ZucchettiDTO().set("PEPARTTIME", String.valueOf((jtbFlav.getOreContrat().intValue() / 40) * 100)));
zucchettiDto.add(new ZucchettiDTO().set("TPCONTRA", "0"));
zucchettiDto.add(new ZucchettiDTO().set("TPPARTTIME", jtbFlav.getOreContrat().intValue() == 40 ? "0" : "1"));
zucchettiDto.add(new ZucchettiDTO().set("TPRELATION", jtbFlav.getTipoContratto().equalsIgnoreCase("determinato") ? "1" : "0"));
zucchettiDto.add(new ZucchettiDTO().set("DCITYRS", jtbFlav.getComune()));
zucchettiDto.add(new ZucchettiDTO().set("IDSUBJECT", jtbFlav.getCodJflav()));
usersFileList.add(format(baseLine, zucchettiDto));
codDipendete = String.format("%07d", numDipendete);
}
String a = String.join("||", usersFileList);
fileText = String.join("||", usersFileList);
byte[] documentBytes = composeXml(setupSection.get("USERNAME"), setupSection.get("PASSWORD"), codAzienda, fileText).getBytes();
return saveFile(username, type, format, documentBytes);
}
private EntityExportResponse<List<FileItem>> saveFile(String userName, String type, String format, byte[] bytes) throws Exception {
WtbUsersInfo wtbUsersInfo =
new WtbUsersInfo()
.setUserName(userName)
.setExportType(type)
.setFormatFile(format);
wtbUsersInfo.setOperation(OperationType.SELECT_OBJECT);
entityProcessor.processEntity(wtbUsersInfo, multiDBTransactionManager);
String ext = "xml",
fileName = wtbUsersInfo.getFileName();
fileName += "." + ext;
FileItem file = new FileItem(fileName, bytes, ext);
EntityExportResponse<List<FileItem>> entityExportResponse = new EntityExportResponse<>();
entityExportResponse
.setResponse(new ArrayList<>())
.getResponse()
.add(file);
return entityExportResponse;
}
private String composeXml(String username, String password, String company, String file) throws Exception {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
Element rootElement = doc.createElementNS("http://schemas.xmlsoap.org/soap/envelope/", "soapenv:Envelope");
rootElement.setAttribute("xmlns:hrut", "http://hrut_brecvinsertrec.ws.localhost/");
doc.appendChild(rootElement);
Element header = doc.createElement("soapenv:Header");
rootElement.appendChild(header);
Element body = doc.createElement("soapenv:Body");
rootElement.appendChild(body);
Element run = doc.createElement("hrut:hrut_brecvinsertrec_Run");
body.appendChild(run);
Element usernameElement = doc.createElement("hrut:m_UserName");
usernameElement.setTextContent(username);
run.appendChild(usernameElement);
Element passwordElement = doc.createElement("hrut:m_Password");
passwordElement.setTextContent(password);
run.appendChild(passwordElement);
Element companyElement = doc.createElement("hrut:m_Company");
companyElement.setTextContent(company);
run.appendChild(companyElement);
Element fileElement = doc.createElement("hrut:pFILE");
fileElement.setTextContent(file);
run.appendChild(fileElement);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
transformer.transform(source, result);
return writer.toString();
}
public String format(String baseLine, List<ZucchettiDTO> zucchettiDto) {
List<String> list = Stream.of(zucchettiDto)
.filter(x -> x.getValue() != null)
@@ -92,14 +183,12 @@ public class RisorseUmaneService {
}
public List<JtbFlav> getUsers() throws Exception {
String sql = "SELECT jtb_flav.* FROM jtb_flav INNER JOIN mtb_depo ON jtb_flav.cod_jfas = mtb_depo.cod_jfas where mtb_depo.cod_mdep = 'AN'";
String sql = "SELECT jtb_flav.*\n" +
"FROM jtb_flav\n" +
" INNER JOIN mtb_depo ON jtb_flav.cod_jfas = mtb_depo.cod_jfas\n" +
"WHERE mtb_depo.cod_mdep = 'AN'\n" +
"ORDER BY cod_jflav";
return UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, JtbFlav.class);
}
public String getCodCitta(String citta) throws Exception {
String sql = "SELECT cod_comu FROM gtb_istat_comuni where denominazione_comune = " + UtilityDB.valueToString(citta);
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
}
}