[CARELLI] creazione xml per esportazione zucchetti
This commit is contained in:
@@ -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 {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -16,7 +16,7 @@ public class RisorseUmaneExporter extends BaseEntityExporter implements IEntityE
|
|||||||
if (enumFormat != null){
|
if (enumFormat != null){
|
||||||
if (enumFormat == Format.ZUCCHETTI) {
|
if (enumFormat == Format.ZUCCHETTI) {
|
||||||
RisorseUmaneService risorseUmane = context.getBean(RisorseUmaneService.class);
|
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));
|
throw new Exception(String.format("Formato %s non supportato", format));
|
||||||
}else {
|
}else {
|
||||||
|
|||||||
@@ -1,22 +1,35 @@
|
|||||||
package it.integry.ems.system.export.services.risorseUmane;
|
package it.integry.ems.system.export.services.risorseUmane;
|
||||||
|
|
||||||
import com.annimon.stream.Stream;
|
import com.annimon.stream.Stream;
|
||||||
|
import com.google.common.io.Files;
|
||||||
import it.integry.ems.export.base.EntityExportResponse;
|
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.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||||
import it.integry.ems.system.export.dto.ZucchettiDTO;
|
import it.integry.ems.system.export.dto.ZucchettiDTO;
|
||||||
import it.integry.ems_model.entity.JtbFlav;
|
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.service.SetupGest;
|
||||||
import it.integry.ems_model.utility.UtilityDB;
|
import it.integry.ems_model.types.OperationType;
|
||||||
import it.integry.ems_model.utility.UtilityDate;
|
import it.integry.ems_model.utility.*;
|
||||||
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Scope;
|
import org.springframework.context.annotation.Scope;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.w3c.dom.Document;
|
||||||
|
import org.w3c.dom.Element;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.io.FileOutputStream;
|
||||||
import java.util.Date;
|
import java.io.StringWriter;
|
||||||
import java.util.HashMap;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.List;
|
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
|
@Service
|
||||||
@Scope("request")
|
@Scope("request")
|
||||||
@@ -27,14 +40,17 @@ public class RisorseUmaneService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private SetupGest setupGest;
|
private SetupGest setupGest;
|
||||||
|
|
||||||
public EntityExportResponse export(String type, String format) throws Exception {
|
@Autowired
|
||||||
EntityExportResponse<List<File>> entityExportResponse = new EntityExportResponse<>();
|
EntityProcessor entityProcessor;
|
||||||
List<JtbFlav> users = getUsers();
|
|
||||||
String file = "";
|
|
||||||
|
|
||||||
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 codDipendete = "0000001";
|
||||||
String dataInizioValidita = "18000101";
|
String dataInizioValidita = "";
|
||||||
String codRicezione = "HRANAGRAFICO";
|
String codRicezione = "HRANAGRAFICO";
|
||||||
|
|
||||||
int numDipendete = Integer.parseInt(codDipendete);
|
int numDipendete = Integer.parseInt(codDipendete);
|
||||||
@@ -49,38 +65,113 @@ public class RisorseUmaneService {
|
|||||||
dataInizioValidita + ";" +
|
dataInizioValidita + ";" +
|
||||||
codRicezione + ";";
|
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("ANNAME", jtbFlav.getNome()));
|
||||||
zucchettiDto.add(new ZucchettiDTO().set("ANSURNAM", jtbFlav.getCognome()));
|
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("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("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("IDIDENTIFP", jtbFlav.getCodiceFiscale().substring(11, 15))); //Cod città
|
||||||
zucchettiDto.add(new ZucchettiDTO().set("IDLEGALNAT", "000"));
|
zucchettiDto.add(new ZucchettiDTO().set("IDLEGALNAT", "000"));
|
||||||
zucchettiDto.add(new ZucchettiDTO().set("IDMARITAL", jtbFlav.getStatoCivile()));
|
zucchettiDto.add(new ZucchettiDTO().set("TPIDENTIFP", "N"));
|
||||||
zucchettiDto.add(new ZucchettiDTO().set("IDSTUDY", jtbFlav.getTitoloStudio()));
|
|
||||||
zucchettiDto.add(new ZucchettiDTO().set("TPSEX", jtbFlav.getSesso()));
|
zucchettiDto.add(new ZucchettiDTO().set("TPSEX", jtbFlav.getSesso()));
|
||||||
zucchettiDto.add(new ZucchettiDTO().set("ANADDRESRS", jtbFlav.getIndirizzo()));
|
zucchettiDto.add(new ZucchettiDTO().set("FLRELATION", "S"));
|
||||||
zucchettiDto.add(new ZucchettiDTO().set("ANCIVICNRS", jtbFlav.getIndirizzo().substring(jtbFlav.getIndirizzo().indexOf(',') + 1).trim().replace(" ", "")));
|
zucchettiDto.add(new ZucchettiDTO().set("DTASSUMPT", UtilityDate.formatDate(jtbFlav.getDataAssunz(), "yyyyMMdd")));
|
||||||
zucchettiDto.add(new ZucchettiDTO().set("ANEMAILRS", jtbFlav.geteMail()));
|
zucchettiDto.add(new ZucchettiDTO().set("FLASSOBBL68", "N"));
|
||||||
zucchettiDto.add(new ZucchettiDTO().set("ANMOBILTEL", jtbFlav.getNumTelefono()));
|
zucchettiDto.add(new ZucchettiDTO().set("IDEMPSOMM", "N"));
|
||||||
zucchettiDto.add(new ZucchettiDTO().set("IDCITYRS", getCodCitta(jtbFlav.getComune())));
|
zucchettiDto.add(new ZucchettiDTO().set("IDGRPEM", "000"));
|
||||||
zucchettiDto.add(new ZucchettiDTO().set("IDRGNRS", "14"));
|
zucchettiDto.add(new ZucchettiDTO().set("IDLANGUAGE", "ITA"));
|
||||||
zucchettiDto.add(new ZucchettiDTO().set("IDSTATERS", "IT"));
|
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));
|
usersFileList.add(format(baseLine, zucchettiDto));
|
||||||
|
|
||||||
codDipendete = String.format("%07d", numDipendete);
|
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;
|
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) {
|
public String format(String baseLine, List<ZucchettiDTO> zucchettiDto) {
|
||||||
List<String> list = Stream.of(zucchettiDto)
|
List<String> list = Stream.of(zucchettiDto)
|
||||||
.filter(x -> x.getValue() != null)
|
.filter(x -> x.getValue() != null)
|
||||||
@@ -92,14 +183,12 @@ public class RisorseUmaneService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public List<JtbFlav> getUsers() throws Exception {
|
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);
|
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user