Merge branch 'feature/SUPPORT-8411_fixed' into release/1.0.0

This commit is contained in:
gulnaz 2024-09-13 17:05:24 +03:00
commit 7d95b8ccb9
69 changed files with 3631 additions and 512 deletions

View file

@ -1,35 +0,0 @@
package dto.jivoprofile;
import ru.cg.webbpm.modules.webkit.annotations.Model;
@Model
public class JivoProfileDto {
public String username;
public String email;
public String phone;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}

View file

@ -19,25 +19,25 @@ import org.springframework.kafka.core.ProducerFactory;
*/
@Configuration
public class KafkaProducerConfig {
@Value("${kafka.send.url}")
@Value("${av-kafka.send.url}")
private String kafkaUrl;
@Value("${kafka.send.security.protocol}")
@Value("${av-kafka.send.security.protocol}")
private String securityProtocol;
@Value("${kafka.send.login.module:org.apache.kafka.common.security.scram.ScramLoginModule}")
@Value("${av-kafka.send.login.module:org.apache.kafka.common.security.scram.ScramLoginModule}")
private String loginModule;
@Value("${kafka.send.username}")
@Value("${av-kafka.send.username}")
private String username;
@Value("${kafka.send.password}")
@Value("${av-kafka.send.password}")
private String password;
@Value("${kafka.sasl.mechanism}")
@Value("${av-kafka.sasl.mechanism}")
private String saslMechanism;
@Bean
@Bean("av-factory")
public ProducerFactory<String, String> producerFactory() {
return new DefaultKafkaProducerFactory<>(producerConfigs());
}
@Bean
@Bean("av-configs")
public Map<String, Object> producerConfigs() {
Map<String, Object> props = new HashMap<>();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, this.kafkaUrl);
@ -52,7 +52,7 @@ public class KafkaProducerConfig {
return props;
}
@Bean
@Bean("av-template")
public KafkaTemplate<String, String> kafkaTemplate() {
return new KafkaTemplate<>(producerFactory());
}

View file

@ -1,5 +1,8 @@
package ervu.controller;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import ervu.service.fileupload.EmployeeInfoFileUploadService;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@ -18,8 +21,21 @@ public class EmployeeInfoFileUploadController {
@RequestMapping(value = "/employee/document", method = RequestMethod.POST)
public ResponseEntity<?> saveEmployeeInformationFile(@RequestParam("file") MultipartFile multipartFile,
@RequestHeader("X-Employee-Info-File-Form-Type") String formType) {
if (this.fileUploadService.saveEmployeeInformationFile(multipartFile, formType)) {
@RequestHeader("X-Employee-Info-File-Form-Type") String formType, HttpServletRequest request) {
String accessToken = null;
String authToken = null;
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
if (cookie.getName().equals("access_token")) {
accessToken = cookie.getValue();
}
else if (cookie.getName().equals("auth_token")) {
authToken = cookie.getValue();
}
}
}
if (accessToken != null && this.fileUploadService.saveEmployeeInformationFile(multipartFile, formType, accessToken, authToken)) {
return ResponseEntity.ok("File successfully uploaded.");
}
else {

View file

@ -1,6 +1,8 @@
package ervu.service.fileupload;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.UUID;
@ -8,13 +10,21 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import ervu.client.fileupload.FileUploadWebDavClient;
import ervu.service.fileupload.model.EmployeeInfoKafkaMessage;
import ervu.service.fileupload.model.FileStatus;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import ru.micord.ervu.security.esia.model.EmployeeModel;
import ru.micord.ervu.security.esia.model.PersonModel;
import ru.micord.ervu.security.esia.service.UlDataService;
import ru.micord.ervu.security.webbpm.jwt.model.Token;
import ru.micord.ervu.security.webbpm.jwt.service.JwtTokenService;
import ru.micord.ervu.service.InteractionService;
/**
* @author Alexandr Shalaginov
@ -22,12 +32,16 @@ import org.springframework.web.multipart.MultipartFile;
@Service
public class EmployeeInfoFileUploadService {
private static final Logger logger = LoggerFactory.getLogger(EmployeeInfoFileUploadService.class);
private static final String FORMAT = "dd.MM.yyyy HH:mm";
private final FileUploadWebDavClient fileWebDavUploadClient;
private final EmployeeInfoKafkaMessageService employeeInfoKafkaMessageService;
private final KafkaTemplate<String, String> kafkaTemplate;
private final InteractionService interactionService;
private final UlDataService ulDataService;
private final JwtTokenService jwtTokenService;
@Value("${kafka.send.message.topic.name:employee-files}")
@Value("${av-kafka.send.message.topic.name:employee-files}")
private String kafkaTopicName;
@Value("${file.webdav.upload.url:http://localhost:5757}")
private String url;
@ -38,25 +52,49 @@ public class EmployeeInfoFileUploadService {
public EmployeeInfoFileUploadService(
FileUploadWebDavClient fileWebDavUploadClient,
EmployeeInfoKafkaMessageService employeeInfoKafkaMessageService, KafkaTemplate<String, String> kafkaTemplate) {
EmployeeInfoKafkaMessageService employeeInfoKafkaMessageService,
@Qualifier("av-template") KafkaTemplate<String, String> kafkaTemplate, InteractionService interactionService,
UlDataService ulDataService, JwtTokenService jwtTokenService) {
this.fileWebDavUploadClient = fileWebDavUploadClient;
this.employeeInfoKafkaMessageService = employeeInfoKafkaMessageService;
this.kafkaTemplate = kafkaTemplate;
this.interactionService = interactionService;
this.ulDataService = ulDataService;
this.jwtTokenService = jwtTokenService;
}
public boolean saveEmployeeInformationFile(MultipartFile multipartFile, String formType) {
public boolean saveEmployeeInformationFile(MultipartFile multipartFile, String formType,
String accessToken, String authToken) {
String fileUploadUrl = this.url + "/" + getNewFilename(multipartFile.getOriginalFilename());
String departureDateTime = getDepartureDateTime();
LocalDateTime now = LocalDateTime.now();
String departureDateTime = now.format(DateTimeFormatter.ofPattern(FORMAT));;
String timeZone = getTimeZone();
if (this.fileWebDavUploadClient.webDavUploadFile(fileUploadUrl, username, password, multipartFile)) {
FileStatus fileStatus = new FileStatus();
fileStatus.setStatus("Загрузка.");
fileStatus.setCode("01");
fileStatus.setDescription("Файл принят до проверки на вирусы.");
String fileId = UUID.randomUUID().toString();
String fileName = multipartFile.getOriginalFilename();
EmployeeInfoFileFormType employeeInfoFileFormType = EmployeeInfoFileFormType.valueOf(formType);
String jsonMessage = getJsonKafkaMessage(
employeeInfoKafkaMessageService.getKafkaMessage(
fileId,
fileUploadUrl,
multipartFile.getOriginalFilename(),
EmployeeInfoFileFormType.valueOf(formType),
departureDateTime
fileName,
employeeInfoFileFormType,
departureDateTime,
accessToken, authToken, timeZone, fileStatus
)
);
EmployeeModel employeeModel = ulDataService.getEmployeeModel(accessToken);
PersonModel personModel = employeeModel.getPerson();
Token token = jwtTokenService.getToken(authToken);
String[] ids = token.getUserAccountId().split(":");
interactionService.setStatus(fileId, fileStatus.getStatus(), fileName, employeeInfoFileFormType.getFilePatternName(), Timestamp.valueOf(now),
personModel.getLastName() + " " + personModel.getFirstName().charAt(0) + ". " + personModel.getMiddleName().charAt(0) + ".", (int) multipartFile.getSize(),
ids[1]);
return sendMessage(jsonMessage);
}
else {
@ -100,7 +138,7 @@ public class EmployeeInfoFileUploadService {
}
}
private String getDepartureDateTime() {
return LocalDateTime.now().format(DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm"));
private String getTimeZone() {
return ZonedDateTime.now().getOffset().toString();
}
}
}

View file

@ -2,10 +2,13 @@ package ervu.service.fileupload;
import ervu.service.fileupload.model.EmployeeInfoKafkaMessage;
import ervu.service.fileupload.model.FileInfo;
import ervu.service.fileupload.model.FileStatus;
import ervu.service.fileupload.model.OrgInfo;
import ervu.service.fileupload.model.SenderInfo;
import ru.micord.ervu.security.esia.service.UlDataService;
import org.springframework.stereotype.Service;
import ru.micord.ervu.security.esia.model.OrganizationModel;
import ru.micord.ervu.security.esia.service.UlDataService;
import ru.micord.ervu.security.webbpm.jwt.model.Token;
import ru.micord.ervu.security.webbpm.jwt.service.JwtTokenService;
/**
* @author Alexandr Shalaginov
@ -13,67 +16,50 @@ import org.springframework.stereotype.Service;
@Service
public class EmployeeInfoKafkaMessageService {
private final UlDataService ulDataService;
private final JwtTokenService jwtTokenService;
public EmployeeInfoKafkaMessageService(UlDataService ulDataService) {
public EmployeeInfoKafkaMessageService(UlDataService ulDataService, JwtTokenService jwtTokenService) {
this.ulDataService = ulDataService;
this.jwtTokenService = jwtTokenService;
}
public EmployeeInfoKafkaMessage getKafkaMessage(String fileNameBase, String fileName,
EmployeeInfoFileFormType formType, String departureDateTime) {
public EmployeeInfoKafkaMessage getKafkaMessage(String fileId, String fileUrl, String fileName,
EmployeeInfoFileFormType formType, String departureDateTime, String accessToken,
String authToken, String timeZone, FileStatus fileStatus) {
return new EmployeeInfoKafkaMessage(
getOrgInfo(),
getSenderInfo(),
getOrgInfo(accessToken, authToken),
getFileInfo(
fileNameBase,
fileId,
fileUrl,
fileName,
formType,
departureDateTime
departureDateTime,
timeZone,
fileStatus
)
);
}
//TODO: refactor SUPPORT-8381
private OrgInfo getOrgInfo() {
// OrganizationModel organizationModel = ulDataService.getOrganizationModel();
// return new OrgInfo(
// organizationModel.getShortName(),
// organizationModel.getLeg(),
// organizationModel.getLegName(),
// organizationModel.getOgrn(),
// organizationModel.getInn(),
// organizationModel.getKpp()
// );
return null;
}
private SenderInfo getSenderInfo() {
// MillitaryRegistrationPersonModel personModel = ulDataService.getPersonModel();
// return new SenderInfo(
// personModel.getLastName(),
// personModel.getFirstName(),
// personModel.getMiddleName(),
// personModel.getBirthday(),
// personModel.getRoleCode(),
// personModel.getRoleName(),
// personModel.getSnils(),
// personModel.getIdERN(),
// new PassportInfo(
// personModel.getPassportSeries(),
// personModel.getPassportNumber(),
// personModel.getPassportIssueDate()
// )
// );
return null;
}
private FileInfo getFileInfo(String fileNameBase, String fileName,
EmployeeInfoFileFormType formType, String departureDateTime) {
private FileInfo getFileInfo(String fileId, String fileUrl, String fileName,
EmployeeInfoFileFormType formType, String departureDateTime, String timeZone,
FileStatus fileStatus) {
return new FileInfo(
fileNameBase,
fileId,
fileUrl,
fileName,
formType.getFilePatternCode(),
formType.getFilePatternName(),
departureDateTime
departureDateTime,
timeZone,
fileStatus
);
}
private OrgInfo getOrgInfo(String accessToken, String authToken) {
OrganizationModel organizationModel = ulDataService.getOrganizationModel(accessToken);
Token token = jwtTokenService.getToken(authToken);
String[] ids = token.getUserAccountId().split(":");
return new OrgInfo(organizationModel.getFullName(), ids[1], ids[0]);
}
}

View file

@ -7,12 +7,10 @@ import java.util.Objects;
*/
public class EmployeeInfoKafkaMessage {
private final OrgInfo orgInfo;
private final SenderInfo senderInfo;
private final FileInfo fileInfo;
public EmployeeInfoKafkaMessage(OrgInfo orgInfo, SenderInfo senderInfo, FileInfo fileInfo) {
public EmployeeInfoKafkaMessage(OrgInfo orgInfo, FileInfo fileInfo) {
this.orgInfo = orgInfo;
this.senderInfo = senderInfo;
this.fileInfo = fileInfo;
}
@ -20,10 +18,6 @@ public class EmployeeInfoKafkaMessage {
return orgInfo;
}
public SenderInfo getSenderInfo() {
return senderInfo;
}
public FileInfo getFileInfo() {
return fileInfo;
}
@ -33,21 +27,18 @@ public class EmployeeInfoKafkaMessage {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
EmployeeInfoKafkaMessage that = (EmployeeInfoKafkaMessage) o;
return Objects.equals(orgInfo, that.orgInfo) && Objects.equals(senderInfo,
that.senderInfo
) && Objects.equals(fileInfo, that.fileInfo);
return Objects.equals(orgInfo, that.orgInfo) && Objects.equals(fileInfo, that.fileInfo);
}
@Override
public int hashCode() {
return Objects.hash(orgInfo, senderInfo, fileInfo);
return Objects.hash(orgInfo, fileInfo);
}
@Override
public String toString() {
return "KafkaMessage{" +
"orgInfo=" + orgInfo +
", senderInfo=" + senderInfo +
", fileInfo=" + fileInfo +
'}';
}

View file

@ -6,23 +6,33 @@ import java.util.Objects;
* @author Alexandr Shalaginov
*/
public class FileInfo {
private final String fileNameBase;
private final String fileId;
private final String fileUrl;
private final String fileName;
private final String filePatternCode;
private final String filePatternName;
private final String departureDateTime;
private final String timeZone;
private final FileStatus fileStatus;
public FileInfo(String fileNameBase, String fileName, String filePatternCode,
String filePatternName, String departureDateTime) {
this.fileNameBase = fileNameBase;
public FileInfo(String fileId, String fileUrl, String fileName, String filePatternCode,
String filePatternName, String departureDateTime, String timeZone, FileStatus fileStatus) {
this.fileId = fileId;
this.fileUrl = fileUrl;
this.fileName = fileName;
this.filePatternCode = filePatternCode;
this.filePatternName = filePatternName;
this.departureDateTime = departureDateTime;
this.timeZone = timeZone;
this.fileStatus = fileStatus;
}
public String getFileNameBase() {
return fileNameBase;
public String getFileId() {
return fileId;
}
public String getFileUrl() {
return fileUrl;
}
public String getFileName() {
@ -41,12 +51,22 @@ public class FileInfo {
return departureDateTime;
}
public String getTimeZone() {
return timeZone;
}
public FileStatus getFileStatus() {
return fileStatus;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
FileInfo fileInfo = (FileInfo) o;
return Objects.equals(fileNameBase, fileInfo.fileNameBase) && Objects.equals(
return Objects.equals(fileId, fileInfo.fileId) && Objects.equals(fileUrl,
fileInfo.fileUrl
) && Objects.equals(
fileName, fileInfo.fileName) && Objects.equals(filePatternCode,
fileInfo.filePatternCode
) && Objects.equals(filePatternName, fileInfo.filePatternName)
@ -55,7 +75,7 @@ public class FileInfo {
@Override
public int hashCode() {
return Objects.hash(fileNameBase, fileName, filePatternCode, filePatternName,
return Objects.hash(fileId, fileUrl, fileName, filePatternCode, filePatternName,
departureDateTime
);
}
@ -63,7 +83,8 @@ public class FileInfo {
@Override
public String toString() {
return "FileInfo{" +
"fileNameBase='" + fileNameBase + '\'' +
"fileId='" + fileId + '\'' +
", fileNameBase='" + fileUrl + '\'' +
", fileName='" + fileName + '\'' +
", filePatternCode='" + filePatternCode + '\'' +
", filePatternName='" + filePatternName + '\'' +

View file

@ -0,0 +1,37 @@
package ervu.service.fileupload.model;
import java.io.Serializable;
/**
* @author Eduard Tihomirov
*/
public class FileStatus {
private String code;
private String status;
private String description;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}

View file

@ -7,44 +7,25 @@ import java.util.Objects;
*/
public class OrgInfo {
private final String orgName;
private final String orgTypeCode;
private final String orgTypeName;
private final String ogrn;
private final String inn;
private final String kpp;
private final String orgId;
private final String prnOid;
public OrgInfo(String orgName, String orgTypeCode, String orgTypeName, String ogrn, String inn,
String kpp) {
public OrgInfo(String orgName, String orgId, String prnOid) {
this.orgName = orgName;
this.orgTypeCode = orgTypeCode;
this.orgTypeName = orgTypeName;
this.ogrn = ogrn;
this.inn = inn;
this.kpp = kpp;
this.orgId = orgId;
this.prnOid = prnOid;
}
public String getOrgName() {
return orgName;
}
public String getOrgTypeCode() {
return orgTypeCode;
public String getOrgId() {
return orgId;
}
public String getOrgTypeName() {
return orgTypeName;
}
public String getOgrn() {
return ogrn;
}
public String getInn() {
return inn;
}
public String getKpp() {
return kpp;
public String getPrnOid() {
return prnOid;
}
@Override
@ -52,27 +33,22 @@ public class OrgInfo {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
OrgInfo orgInfo = (OrgInfo) o;
return Objects.equals(orgName, orgInfo.orgName) && Objects.equals(orgTypeCode,
orgInfo.orgTypeCode
) && Objects.equals(orgTypeName, orgInfo.orgTypeName) && Objects.equals(ogrn,
orgInfo.ogrn
) && Objects.equals(inn, orgInfo.inn) && Objects.equals(kpp, orgInfo.kpp);
return Objects.equals(orgName, orgInfo.orgName) && Objects.equals(orgId,
orgInfo.orgId
) && Objects.equals(prnOid, orgInfo.prnOid);
}
@Override
public int hashCode() {
return Objects.hash(orgName, orgTypeCode, orgTypeName, ogrn, inn, kpp);
return Objects.hash(orgName, orgId, prnOid);
}
@Override
public String toString() {
return "OrgInfo{" +
"orgName='" + orgName + '\'' +
", orgTypeCode='" + orgTypeCode + '\'' +
", orgTypeName='" + orgTypeName + '\'' +
", ogrn='" + ogrn + '\'' +
", inn='" + inn + '\'' +
", kpp='" + kpp + '\'' +
", orgId='" + orgId + '\'' +
", prnOid='" + prnOid + '\'' +
'}';
}
}

View file

@ -1,54 +0,0 @@
package ervu.service.fileupload.model;
import java.util.Objects;
/**
* @author Alexandr Shalaginov
*/
public class PassportInfo {
private final String series;
private final String number;
private final String issueDate;
public PassportInfo(String series, String number, String issueDate) {
this.series = series;
this.number = number;
this.issueDate = issueDate;
}
public String getSeries() {
return series;
}
public String getNumber() {
return number;
}
public String getIssueDate() {
return issueDate;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
PassportInfo that = (PassportInfo) o;
return Objects.equals(series, that.series) && Objects.equals(number,
that.number
) && Objects.equals(issueDate, that.issueDate);
}
@Override
public int hashCode() {
return Objects.hash(series, number, issueDate);
}
@Override
public String toString() {
return "PassportInfo{" +
"series='" + series + '\'' +
", number='" + number + '\'' +
", issueDate='" + issueDate + '\'' +
'}';
}
}

View file

@ -1,106 +0,0 @@
package ervu.service.fileupload.model;
import java.util.Objects;
/**
* @author Alexandr Shalaginov
*/
public class SenderInfo {
private final String senderLastName;
private final String senderFirstName;
private final String senderMiddleName;
private final String birthDate;
private final String senderRoleCode;
private final String senderRoleName;
private final String snils;
private final String idERN;
private final PassportInfo document;
public SenderInfo(String senderLastName, String senderFirstName, String senderMiddleName,
String birthDate, String senderRoleCode, String senderRoleName, String snils, String idERN,
PassportInfo document) {
this.senderLastName = senderLastName;
this.senderFirstName = senderFirstName;
this.senderMiddleName = senderMiddleName;
this.birthDate = birthDate;
this.senderRoleCode = senderRoleCode;
this.senderRoleName = senderRoleName;
this.snils = snils;
this.idERN = idERN;
this.document = document;
}
public String getSenderLastName() {
return senderLastName;
}
public String getSenderFirstName() {
return senderFirstName;
}
public String getSenderMiddleName() {
return senderMiddleName;
}
public String getBirthDate() {
return birthDate;
}
public String getSenderRoleCode() {
return senderRoleCode;
}
public String getSenderRoleName() {
return senderRoleName;
}
public String getSnils() {
return snils;
}
public String getIdERN() {
return idERN;
}
public PassportInfo getDocument() {
return document;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
SenderInfo that = (SenderInfo) o;
return Objects.equals(senderLastName, that.senderLastName) && Objects.equals(
senderFirstName, that.senderFirstName) && Objects.equals(senderMiddleName,
that.senderMiddleName
) && Objects.equals(birthDate, that.birthDate) && Objects.equals(
senderRoleCode, that.senderRoleCode) && Objects.equals(senderRoleName,
that.senderRoleName
) && Objects.equals(snils, that.snils) && Objects.equals(idERN, that.idERN)
&& Objects.equals(document, that.document);
}
@Override
public int hashCode() {
return Objects.hash(senderLastName, senderFirstName, senderMiddleName, birthDate,
senderRoleCode,
senderRoleName, snils, idERN, document
);
}
@Override
public String toString() {
return "SenderInfo{" +
"senderLastName='" + senderLastName + '\'' +
", senderFirstName='" + senderFirstName + '\'' +
", senderMiddleName='" + senderMiddleName + '\'' +
", birthDate='" + birthDate + '\'' +
", senderRoleCode='" + senderRoleCode + '\'' +
", senderRoleName='" + senderRoleName + '\'' +
", snils='" + snils + '\'' +
", idERN='" + idERN + '\'' +
", document=" + document +
'}';
}
}

View file

@ -4,9 +4,13 @@
package ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.Files;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.InteractionLog;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.OkopfRecords;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.OrgOkved;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.records.FilesRecord;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.records.InteractionLogRecord;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.records.OkopfRecordsRecord;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.records.OrgOkvedRecord;
import org.jooq.TableField;
@ -26,6 +30,9 @@ public class Keys {
// UNIQUE and PRIMARY KEY definitions
// -------------------------------------------------------------------------
public static final UniqueKey<FilesRecord> FILES_PKEY = Internal.createUniqueKey(Files.FILES, DSL.name("files_pkey"), new TableField[] { Files.FILES.FILE_ID }, true);
public static final UniqueKey<InteractionLogRecord> INTERACTION_LOG_PKEY = Internal.createUniqueKey(InteractionLog.INTERACTION_LOG, DSL.name("interaction_log_pkey"), new TableField[] { InteractionLog.INTERACTION_LOG.ID }, true);
public static final UniqueKey<OkopfRecordsRecord> OKOPF_RECORDS_NAME_KEY = Internal.createUniqueKey(OkopfRecords.OKOPF_RECORDS, DSL.name("okopf_records_name_key"), new TableField[] { OkopfRecords.OKOPF_RECORDS.NAME }, true);
public static final UniqueKey<OkopfRecordsRecord> OKOPF_RECORDS_PKEY = Internal.createUniqueKey(OkopfRecords.OKOPF_RECORDS, DSL.name("okopf_records_pkey"), new TableField[] { OkopfRecords.OKOPF_RECORDS.OKOPF_RECORDS_ID }, true);
public static final UniqueKey<OrgOkvedRecord> ORG_OKVED_PKEY = Internal.createUniqueKey(OrgOkved.ORG_OKVED, DSL.name("org_okved_pkey"), new TableField[] { OrgOkved.ORG_OKVED.ID }, true);
}

View file

@ -5,7 +5,9 @@ package ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.DefaultCatalog;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.Files;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.InteractionLog;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.OkopfRecords;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.OrgOkved;
import java.util.Arrays;
@ -29,11 +31,21 @@ public class Public extends SchemaImpl {
*/
public static final Public PUBLIC = new Public();
/**
* The table <code>public.files</code>.
*/
public final Files FILES = Files.FILES;
/**
* The table <code>public.interaction_log</code>.
*/
public final InteractionLog INTERACTION_LOG = InteractionLog.INTERACTION_LOG;
/**
* The table <code>public.okopf_records</code>.
*/
public final OkopfRecords OKOPF_RECORDS = OkopfRecords.OKOPF_RECORDS;
/**
* The table <code>public.org_okved</code>.
*/
@ -55,7 +67,9 @@ public class Public extends SchemaImpl {
@Override
public final List<Table<?>> getTables() {
return Arrays.asList(
Files.FILES,
InteractionLog.INTERACTION_LOG,
OkopfRecords.OKOPF_RECORDS,
OrgOkved.ORG_OKVED
);
}

View file

@ -0,0 +1,285 @@
/*
* This file is generated by jOOQ.
*/
package ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.routines.UuidGenerateV1;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.routines.UuidGenerateV1mc;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.routines.UuidGenerateV3;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.routines.UuidGenerateV4;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.routines.UuidGenerateV5;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.routines.UuidNil;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.routines.UuidNsDns;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.routines.UuidNsOid;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.routines.UuidNsUrl;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.routines.UuidNsX500;
import java.util.UUID;
import org.jooq.Configuration;
import org.jooq.Field;
/**
* Convenience access to all stored procedures and functions in public.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class Routines {
/**
* Call <code>public.uuid_generate_v1</code>
*/
public static UUID uuidGenerateV1(
Configuration configuration
) {
UuidGenerateV1 f = new UuidGenerateV1();
f.execute(configuration);
return f.getReturnValue();
}
/**
* Get <code>public.uuid_generate_v1</code> as a field.
*/
public static Field<UUID> uuidGenerateV1() {
UuidGenerateV1 f = new UuidGenerateV1();
return f.asField();
}
/**
* Call <code>public.uuid_generate_v1mc</code>
*/
public static UUID uuidGenerateV1mc(
Configuration configuration
) {
UuidGenerateV1mc f = new UuidGenerateV1mc();
f.execute(configuration);
return f.getReturnValue();
}
/**
* Get <code>public.uuid_generate_v1mc</code> as a field.
*/
public static Field<UUID> uuidGenerateV1mc() {
UuidGenerateV1mc f = new UuidGenerateV1mc();
return f.asField();
}
/**
* Call <code>public.uuid_generate_v3</code>
*/
public static UUID uuidGenerateV3(
Configuration configuration
, UUID namespace
, String name
) {
UuidGenerateV3 f = new UuidGenerateV3();
f.setNamespace(namespace);
f.setName_(name);
f.execute(configuration);
return f.getReturnValue();
}
/**
* Get <code>public.uuid_generate_v3</code> as a field.
*/
public static Field<UUID> uuidGenerateV3(
UUID namespace
, String name
) {
UuidGenerateV3 f = new UuidGenerateV3();
f.setNamespace(namespace);
f.setName_(name);
return f.asField();
}
/**
* Get <code>public.uuid_generate_v3</code> as a field.
*/
public static Field<UUID> uuidGenerateV3(
Field<UUID> namespace
, Field<String> name
) {
UuidGenerateV3 f = new UuidGenerateV3();
f.setNamespace(namespace);
f.setName_(name);
return f.asField();
}
/**
* Call <code>public.uuid_generate_v4</code>
*/
public static UUID uuidGenerateV4(
Configuration configuration
) {
UuidGenerateV4 f = new UuidGenerateV4();
f.execute(configuration);
return f.getReturnValue();
}
/**
* Get <code>public.uuid_generate_v4</code> as a field.
*/
public static Field<UUID> uuidGenerateV4() {
UuidGenerateV4 f = new UuidGenerateV4();
return f.asField();
}
/**
* Call <code>public.uuid_generate_v5</code>
*/
public static UUID uuidGenerateV5(
Configuration configuration
, UUID namespace
, String name
) {
UuidGenerateV5 f = new UuidGenerateV5();
f.setNamespace(namespace);
f.setName_(name);
f.execute(configuration);
return f.getReturnValue();
}
/**
* Get <code>public.uuid_generate_v5</code> as a field.
*/
public static Field<UUID> uuidGenerateV5(
UUID namespace
, String name
) {
UuidGenerateV5 f = new UuidGenerateV5();
f.setNamespace(namespace);
f.setName_(name);
return f.asField();
}
/**
* Get <code>public.uuid_generate_v5</code> as a field.
*/
public static Field<UUID> uuidGenerateV5(
Field<UUID> namespace
, Field<String> name
) {
UuidGenerateV5 f = new UuidGenerateV5();
f.setNamespace(namespace);
f.setName_(name);
return f.asField();
}
/**
* Call <code>public.uuid_nil</code>
*/
public static UUID uuidNil(
Configuration configuration
) {
UuidNil f = new UuidNil();
f.execute(configuration);
return f.getReturnValue();
}
/**
* Get <code>public.uuid_nil</code> as a field.
*/
public static Field<UUID> uuidNil() {
UuidNil f = new UuidNil();
return f.asField();
}
/**
* Call <code>public.uuid_ns_dns</code>
*/
public static UUID uuidNsDns(
Configuration configuration
) {
UuidNsDns f = new UuidNsDns();
f.execute(configuration);
return f.getReturnValue();
}
/**
* Get <code>public.uuid_ns_dns</code> as a field.
*/
public static Field<UUID> uuidNsDns() {
UuidNsDns f = new UuidNsDns();
return f.asField();
}
/**
* Call <code>public.uuid_ns_oid</code>
*/
public static UUID uuidNsOid(
Configuration configuration
) {
UuidNsOid f = new UuidNsOid();
f.execute(configuration);
return f.getReturnValue();
}
/**
* Get <code>public.uuid_ns_oid</code> as a field.
*/
public static Field<UUID> uuidNsOid() {
UuidNsOid f = new UuidNsOid();
return f.asField();
}
/**
* Call <code>public.uuid_ns_url</code>
*/
public static UUID uuidNsUrl(
Configuration configuration
) {
UuidNsUrl f = new UuidNsUrl();
f.execute(configuration);
return f.getReturnValue();
}
/**
* Get <code>public.uuid_ns_url</code> as a field.
*/
public static Field<UUID> uuidNsUrl() {
UuidNsUrl f = new UuidNsUrl();
return f.asField();
}
/**
* Call <code>public.uuid_ns_x500</code>
*/
public static UUID uuidNsX500(
Configuration configuration
) {
UuidNsX500 f = new UuidNsX500();
f.execute(configuration);
return f.getReturnValue();
}
/**
* Get <code>public.uuid_ns_x500</code> as a field.
*/
public static Field<UUID> uuidNsX500() {
UuidNsX500 f = new UuidNsX500();
return f.asField();
}
}

View file

@ -4,7 +4,9 @@
package ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.Files;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.InteractionLog;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.OkopfRecords;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.OrgOkved;
@ -14,11 +16,21 @@ import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.OrgOkved;
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class Tables {
/**
* The table <code>public.files</code>.
*/
public static final Files FILES = Files.FILES;
/**
* The table <code>public.interaction_log</code>.
*/
public static final InteractionLog INTERACTION_LOG = InteractionLog.INTERACTION_LOG;
/**
* The table <code>public.okopf_records</code>.
*/
public static final OkopfRecords OKOPF_RECORDS = OkopfRecords.OKOPF_RECORDS;
/**
* The table <code>public.org_okved</code>.
*/

View file

@ -0,0 +1,38 @@
/*
* This file is generated by jOOQ.
*/
package ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.routines;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.Public;
import java.util.UUID;
import org.jooq.Parameter;
import org.jooq.impl.AbstractRoutine;
import org.jooq.impl.Internal;
import org.jooq.impl.SQLDataType;
/**
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class UuidGenerateV1 extends AbstractRoutine<UUID> {
private static final long serialVersionUID = 1L;
/**
* The parameter <code>public.uuid_generate_v1.RETURN_VALUE</code>.
*/
public static final Parameter<UUID> RETURN_VALUE = Internal.createParameter("RETURN_VALUE", SQLDataType.UUID, false, false);
/**
* Create a new routine call instance
*/
public UuidGenerateV1() {
super("uuid_generate_v1", Public.PUBLIC, SQLDataType.UUID);
setReturnParameter(RETURN_VALUE);
}
}

View file

@ -0,0 +1,38 @@
/*
* This file is generated by jOOQ.
*/
package ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.routines;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.Public;
import java.util.UUID;
import org.jooq.Parameter;
import org.jooq.impl.AbstractRoutine;
import org.jooq.impl.Internal;
import org.jooq.impl.SQLDataType;
/**
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class UuidGenerateV1mc extends AbstractRoutine<UUID> {
private static final long serialVersionUID = 1L;
/**
* The parameter <code>public.uuid_generate_v1mc.RETURN_VALUE</code>.
*/
public static final Parameter<UUID> RETURN_VALUE = Internal.createParameter("RETURN_VALUE", SQLDataType.UUID, false, false);
/**
* Create a new routine call instance
*/
public UuidGenerateV1mc() {
super("uuid_generate_v1mc", Public.PUBLIC, SQLDataType.UUID);
setReturnParameter(RETURN_VALUE);
}
}

View file

@ -0,0 +1,81 @@
/*
* This file is generated by jOOQ.
*/
package ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.routines;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.Public;
import java.util.UUID;
import org.jooq.Field;
import org.jooq.Parameter;
import org.jooq.impl.AbstractRoutine;
import org.jooq.impl.Internal;
import org.jooq.impl.SQLDataType;
/**
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class UuidGenerateV3 extends AbstractRoutine<UUID> {
private static final long serialVersionUID = 1L;
/**
* The parameter <code>public.uuid_generate_v3.RETURN_VALUE</code>.
*/
public static final Parameter<UUID> RETURN_VALUE = Internal.createParameter("RETURN_VALUE", SQLDataType.UUID, false, false);
/**
* The parameter <code>public.uuid_generate_v3.namespace</code>.
*/
public static final Parameter<UUID> NAMESPACE = Internal.createParameter("namespace", SQLDataType.UUID, false, false);
/**
* The parameter <code>public.uuid_generate_v3.name</code>.
*/
public static final Parameter<String> NAME = Internal.createParameter("name", SQLDataType.CLOB, false, false);
/**
* Create a new routine call instance
*/
public UuidGenerateV3() {
super("uuid_generate_v3", Public.PUBLIC, SQLDataType.UUID);
setReturnParameter(RETURN_VALUE);
addInParameter(NAMESPACE);
addInParameter(NAME);
}
/**
* Set the <code>namespace</code> parameter IN value to the routine
*/
public void setNamespace(UUID value) {
setValue(NAMESPACE, value);
}
/**
* Set the <code>namespace</code> parameter to the function to be used with
* a {@link org.jooq.Select} statement
*/
public void setNamespace(Field<UUID> field) {
setField(NAMESPACE, field);
}
/**
* Set the <code>name</code> parameter IN value to the routine
*/
public void setName_(String value) {
setValue(NAME, value);
}
/**
* Set the <code>name</code> parameter to the function to be used with a
* {@link org.jooq.Select} statement
*/
public void setName_(Field<String> field) {
setField(NAME, field);
}
}

View file

@ -0,0 +1,38 @@
/*
* This file is generated by jOOQ.
*/
package ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.routines;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.Public;
import java.util.UUID;
import org.jooq.Parameter;
import org.jooq.impl.AbstractRoutine;
import org.jooq.impl.Internal;
import org.jooq.impl.SQLDataType;
/**
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class UuidGenerateV4 extends AbstractRoutine<UUID> {
private static final long serialVersionUID = 1L;
/**
* The parameter <code>public.uuid_generate_v4.RETURN_VALUE</code>.
*/
public static final Parameter<UUID> RETURN_VALUE = Internal.createParameter("RETURN_VALUE", SQLDataType.UUID, false, false);
/**
* Create a new routine call instance
*/
public UuidGenerateV4() {
super("uuid_generate_v4", Public.PUBLIC, SQLDataType.UUID);
setReturnParameter(RETURN_VALUE);
}
}

View file

@ -0,0 +1,81 @@
/*
* This file is generated by jOOQ.
*/
package ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.routines;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.Public;
import java.util.UUID;
import org.jooq.Field;
import org.jooq.Parameter;
import org.jooq.impl.AbstractRoutine;
import org.jooq.impl.Internal;
import org.jooq.impl.SQLDataType;
/**
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class UuidGenerateV5 extends AbstractRoutine<UUID> {
private static final long serialVersionUID = 1L;
/**
* The parameter <code>public.uuid_generate_v5.RETURN_VALUE</code>.
*/
public static final Parameter<UUID> RETURN_VALUE = Internal.createParameter("RETURN_VALUE", SQLDataType.UUID, false, false);
/**
* The parameter <code>public.uuid_generate_v5.namespace</code>.
*/
public static final Parameter<UUID> NAMESPACE = Internal.createParameter("namespace", SQLDataType.UUID, false, false);
/**
* The parameter <code>public.uuid_generate_v5.name</code>.
*/
public static final Parameter<String> NAME = Internal.createParameter("name", SQLDataType.CLOB, false, false);
/**
* Create a new routine call instance
*/
public UuidGenerateV5() {
super("uuid_generate_v5", Public.PUBLIC, SQLDataType.UUID);
setReturnParameter(RETURN_VALUE);
addInParameter(NAMESPACE);
addInParameter(NAME);
}
/**
* Set the <code>namespace</code> parameter IN value to the routine
*/
public void setNamespace(UUID value) {
setValue(NAMESPACE, value);
}
/**
* Set the <code>namespace</code> parameter to the function to be used with
* a {@link org.jooq.Select} statement
*/
public void setNamespace(Field<UUID> field) {
setField(NAMESPACE, field);
}
/**
* Set the <code>name</code> parameter IN value to the routine
*/
public void setName_(String value) {
setValue(NAME, value);
}
/**
* Set the <code>name</code> parameter to the function to be used with a
* {@link org.jooq.Select} statement
*/
public void setName_(Field<String> field) {
setField(NAME, field);
}
}

View file

@ -0,0 +1,38 @@
/*
* This file is generated by jOOQ.
*/
package ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.routines;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.Public;
import java.util.UUID;
import org.jooq.Parameter;
import org.jooq.impl.AbstractRoutine;
import org.jooq.impl.Internal;
import org.jooq.impl.SQLDataType;
/**
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class UuidNil extends AbstractRoutine<UUID> {
private static final long serialVersionUID = 1L;
/**
* The parameter <code>public.uuid_nil.RETURN_VALUE</code>.
*/
public static final Parameter<UUID> RETURN_VALUE = Internal.createParameter("RETURN_VALUE", SQLDataType.UUID, false, false);
/**
* Create a new routine call instance
*/
public UuidNil() {
super("uuid_nil", Public.PUBLIC, SQLDataType.UUID);
setReturnParameter(RETURN_VALUE);
}
}

View file

@ -0,0 +1,38 @@
/*
* This file is generated by jOOQ.
*/
package ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.routines;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.Public;
import java.util.UUID;
import org.jooq.Parameter;
import org.jooq.impl.AbstractRoutine;
import org.jooq.impl.Internal;
import org.jooq.impl.SQLDataType;
/**
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class UuidNsDns extends AbstractRoutine<UUID> {
private static final long serialVersionUID = 1L;
/**
* The parameter <code>public.uuid_ns_dns.RETURN_VALUE</code>.
*/
public static final Parameter<UUID> RETURN_VALUE = Internal.createParameter("RETURN_VALUE", SQLDataType.UUID, false, false);
/**
* Create a new routine call instance
*/
public UuidNsDns() {
super("uuid_ns_dns", Public.PUBLIC, SQLDataType.UUID);
setReturnParameter(RETURN_VALUE);
}
}

View file

@ -0,0 +1,38 @@
/*
* This file is generated by jOOQ.
*/
package ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.routines;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.Public;
import java.util.UUID;
import org.jooq.Parameter;
import org.jooq.impl.AbstractRoutine;
import org.jooq.impl.Internal;
import org.jooq.impl.SQLDataType;
/**
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class UuidNsOid extends AbstractRoutine<UUID> {
private static final long serialVersionUID = 1L;
/**
* The parameter <code>public.uuid_ns_oid.RETURN_VALUE</code>.
*/
public static final Parameter<UUID> RETURN_VALUE = Internal.createParameter("RETURN_VALUE", SQLDataType.UUID, false, false);
/**
* Create a new routine call instance
*/
public UuidNsOid() {
super("uuid_ns_oid", Public.PUBLIC, SQLDataType.UUID);
setReturnParameter(RETURN_VALUE);
}
}

View file

@ -0,0 +1,38 @@
/*
* This file is generated by jOOQ.
*/
package ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.routines;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.Public;
import java.util.UUID;
import org.jooq.Parameter;
import org.jooq.impl.AbstractRoutine;
import org.jooq.impl.Internal;
import org.jooq.impl.SQLDataType;
/**
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class UuidNsUrl extends AbstractRoutine<UUID> {
private static final long serialVersionUID = 1L;
/**
* The parameter <code>public.uuid_ns_url.RETURN_VALUE</code>.
*/
public static final Parameter<UUID> RETURN_VALUE = Internal.createParameter("RETURN_VALUE", SQLDataType.UUID, false, false);
/**
* Create a new routine call instance
*/
public UuidNsUrl() {
super("uuid_ns_url", Public.PUBLIC, SQLDataType.UUID);
setReturnParameter(RETURN_VALUE);
}
}

View file

@ -0,0 +1,38 @@
/*
* This file is generated by jOOQ.
*/
package ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.routines;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.Public;
import java.util.UUID;
import org.jooq.Parameter;
import org.jooq.impl.AbstractRoutine;
import org.jooq.impl.Internal;
import org.jooq.impl.SQLDataType;
/**
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class UuidNsX500 extends AbstractRoutine<UUID> {
private static final long serialVersionUID = 1L;
/**
* The parameter <code>public.uuid_ns_x500.RETURN_VALUE</code>.
*/
public static final Parameter<UUID> RETURN_VALUE = Internal.createParameter("RETURN_VALUE", SQLDataType.UUID, false, false);
/**
* Create a new routine call instance
*/
public UuidNsX500() {
super("uuid_ns_x500", Public.PUBLIC, SQLDataType.UUID);
setReturnParameter(RETURN_VALUE);
}
}

View file

@ -0,0 +1,239 @@
/*
* This file is generated by jOOQ.
*/
package ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.Keys;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.Public;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.records.FilesRecord;
import java.util.Collection;
import org.jooq.Condition;
import org.jooq.Field;
import org.jooq.Identity;
import org.jooq.Name;
import org.jooq.PlainSQL;
import org.jooq.QueryPart;
import org.jooq.SQL;
import org.jooq.Schema;
import org.jooq.Select;
import org.jooq.Stringly;
import org.jooq.Table;
import org.jooq.TableField;
import org.jooq.TableOptions;
import org.jooq.UniqueKey;
import org.jooq.impl.DSL;
import org.jooq.impl.SQLDataType;
import org.jooq.impl.TableImpl;
/**
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class Files extends TableImpl<FilesRecord> {
private static final long serialVersionUID = 1L;
/**
* The reference instance of <code>public.files</code>
*/
public static final Files FILES = new Files();
/**
* The class holding records for this type
*/
@Override
public Class<FilesRecord> getRecordType() {
return FilesRecord.class;
}
/**
* The column <code>public.files.file_id</code>.
*/
public final TableField<FilesRecord, Long> FILE_ID = createField(DSL.name("file_id"), SQLDataType.BIGINT.nullable(false).identity(true), this, "");
/**
* The column <code>public.files.file</code>.
*/
public final TableField<FilesRecord, byte[]> FILE = createField(DSL.name("file"), SQLDataType.BLOB, this, "");
/**
* The column <code>public.files.file_name</code>.
*/
public final TableField<FilesRecord, String> FILE_NAME = createField(DSL.name("file_name"), SQLDataType.VARCHAR(10000), this, "");
/**
* The column <code>public.files.interaction_log_id</code>.
*/
public final TableField<FilesRecord, Long> INTERACTION_LOG_ID = createField(DSL.name("interaction_log_id"), SQLDataType.BIGINT, this, "");
private Files(Name alias, Table<FilesRecord> aliased) {
this(alias, aliased, (Field<?>[]) null, null);
}
private Files(Name alias, Table<FilesRecord> aliased, Field<?>[] parameters, Condition where) {
super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where);
}
/**
* Create an aliased <code>public.files</code> table reference
*/
public Files(String alias) {
this(DSL.name(alias), FILES);
}
/**
* Create an aliased <code>public.files</code> table reference
*/
public Files(Name alias) {
this(alias, FILES);
}
/**
* Create a <code>public.files</code> table reference
*/
public Files() {
this(DSL.name("files"), null);
}
@Override
public Schema getSchema() {
return aliased() ? null : Public.PUBLIC;
}
@Override
public Identity<FilesRecord, Long> getIdentity() {
return (Identity<FilesRecord, Long>) super.getIdentity();
}
@Override
public UniqueKey<FilesRecord> getPrimaryKey() {
return Keys.FILES_PKEY;
}
@Override
public Files as(String alias) {
return new Files(DSL.name(alias), this);
}
@Override
public Files as(Name alias) {
return new Files(alias, this);
}
@Override
public Files as(Table<?> alias) {
return new Files(alias.getQualifiedName(), this);
}
/**
* Rename this table
*/
@Override
public Files rename(String name) {
return new Files(DSL.name(name), null);
}
/**
* Rename this table
*/
@Override
public Files rename(Name name) {
return new Files(name, null);
}
/**
* Rename this table
*/
@Override
public Files rename(Table<?> name) {
return new Files(name.getQualifiedName(), null);
}
/**
* Create an inline derived table from this table
*/
@Override
public Files where(Condition condition) {
return new Files(getQualifiedName(), aliased() ? this : null, null, condition);
}
/**
* Create an inline derived table from this table
*/
@Override
public Files where(Collection<? extends Condition> conditions) {
return where(DSL.and(conditions));
}
/**
* Create an inline derived table from this table
*/
@Override
public Files where(Condition... conditions) {
return where(DSL.and(conditions));
}
/**
* Create an inline derived table from this table
*/
@Override
public Files where(Field<Boolean> condition) {
return where(DSL.condition(condition));
}
/**
* Create an inline derived table from this table
*/
@Override
@PlainSQL
public Files where(SQL condition) {
return where(DSL.condition(condition));
}
/**
* Create an inline derived table from this table
*/
@Override
@PlainSQL
public Files where(@Stringly.SQL String condition) {
return where(DSL.condition(condition));
}
/**
* Create an inline derived table from this table
*/
@Override
@PlainSQL
public Files where(@Stringly.SQL String condition, Object... binds) {
return where(DSL.condition(condition, binds));
}
/**
* Create an inline derived table from this table
*/
@Override
@PlainSQL
public Files where(@Stringly.SQL String condition, QueryPart... parts) {
return where(DSL.condition(condition, parts));
}
/**
* Create an inline derived table from this table
*/
@Override
public Files whereExists(Select<?> select) {
return where(DSL.exists(select));
}
/**
* Create an inline derived table from this table
*/
@Override
public Files whereNotExists(Select<?> select) {
return where(DSL.notExists(select));
}
}

View file

@ -61,11 +61,6 @@ public class InteractionLog extends TableImpl<InteractionLogRecord> {
*/
public final TableField<InteractionLogRecord, Timestamp> SENT_DATE = createField(DSL.name("sent_date"), SQLDataType.TIMESTAMP(0), this, "");
/**
* The column <code>public.interaction_log.file_name</code>.
*/
public final TableField<InteractionLogRecord, String> FILE_NAME = createField(DSL.name("file_name"), SQLDataType.CLOB, this, "");
/**
* The column <code>public.interaction_log.form</code>.
*/
@ -91,6 +86,21 @@ public class InteractionLog extends TableImpl<InteractionLogRecord> {
*/
public final TableField<InteractionLogRecord, Integer> RECORDS_ACCEPTED = createField(DSL.name("records_accepted"), SQLDataType.INTEGER, this, "");
/**
* The column <code>public.interaction_log.file_name</code>.
*/
public final TableField<InteractionLogRecord, String> FILE_NAME = createField(DSL.name("file_name"), SQLDataType.CLOB, this, "");
/**
* The column <code>public.interaction_log.file_id</code>.
*/
public final TableField<InteractionLogRecord, String> FILE_ID = createField(DSL.name("file_id"), SQLDataType.VARCHAR(36), this, "");
/**
* The column <code>public.interaction_log.ervu_id</code>.
*/
public final TableField<InteractionLogRecord, String> ERVU_ID = createField(DSL.name("ervu_id"), SQLDataType.VARCHAR(36), this, "");
private InteractionLog(Name alias, Table<InteractionLogRecord> aliased) {
this(alias, aliased, (Field<?>[]) null, null);
}

View file

@ -0,0 +1,235 @@
/*
* This file is generated by jOOQ.
*/
package ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.Keys;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.Public;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.records.OkopfRecordsRecord;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import org.jooq.Condition;
import org.jooq.Field;
import org.jooq.Name;
import org.jooq.PlainSQL;
import org.jooq.QueryPart;
import org.jooq.SQL;
import org.jooq.Schema;
import org.jooq.Select;
import org.jooq.Stringly;
import org.jooq.Table;
import org.jooq.TableField;
import org.jooq.TableOptions;
import org.jooq.UniqueKey;
import org.jooq.impl.DSL;
import org.jooq.impl.SQLDataType;
import org.jooq.impl.TableImpl;
/**
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class OkopfRecords extends TableImpl<OkopfRecordsRecord> {
private static final long serialVersionUID = 1L;
/**
* The reference instance of <code>public.okopf_records</code>
*/
public static final OkopfRecords OKOPF_RECORDS = new OkopfRecords();
/**
* The class holding records for this type
*/
@Override
public Class<OkopfRecordsRecord> getRecordType() {
return OkopfRecordsRecord.class;
}
/**
* The column <code>public.okopf_records.okopf_records_id</code>.
*/
public final TableField<OkopfRecordsRecord, String> OKOPF_RECORDS_ID = createField(DSL.name("okopf_records_id"), SQLDataType.VARCHAR.nullable(false), this, "");
/**
* The column <code>public.okopf_records.name</code>.
*/
public final TableField<OkopfRecordsRecord, String> NAME = createField(DSL.name("name"), SQLDataType.VARCHAR, this, "");
/**
* The column <code>public.okopf_records.version</code>.
*/
public final TableField<OkopfRecordsRecord, Integer> VERSION = createField(DSL.name("version"), SQLDataType.INTEGER.nullable(false), this, "");
private OkopfRecords(Name alias, Table<OkopfRecordsRecord> aliased) {
this(alias, aliased, (Field<?>[]) null, null);
}
private OkopfRecords(Name alias, Table<OkopfRecordsRecord> aliased, Field<?>[] parameters, Condition where) {
super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where);
}
/**
* Create an aliased <code>public.okopf_records</code> table reference
*/
public OkopfRecords(String alias) {
this(DSL.name(alias), OKOPF_RECORDS);
}
/**
* Create an aliased <code>public.okopf_records</code> table reference
*/
public OkopfRecords(Name alias) {
this(alias, OKOPF_RECORDS);
}
/**
* Create a <code>public.okopf_records</code> table reference
*/
public OkopfRecords() {
this(DSL.name("okopf_records"), null);
}
@Override
public Schema getSchema() {
return aliased() ? null : Public.PUBLIC;
}
@Override
public UniqueKey<OkopfRecordsRecord> getPrimaryKey() {
return Keys.OKOPF_RECORDS_PKEY;
}
@Override
public List<UniqueKey<OkopfRecordsRecord>> getUniqueKeys() {
return Arrays.asList(Keys.OKOPF_RECORDS_NAME_KEY);
}
@Override
public OkopfRecords as(String alias) {
return new OkopfRecords(DSL.name(alias), this);
}
@Override
public OkopfRecords as(Name alias) {
return new OkopfRecords(alias, this);
}
@Override
public OkopfRecords as(Table<?> alias) {
return new OkopfRecords(alias.getQualifiedName(), this);
}
/**
* Rename this table
*/
@Override
public OkopfRecords rename(String name) {
return new OkopfRecords(DSL.name(name), null);
}
/**
* Rename this table
*/
@Override
public OkopfRecords rename(Name name) {
return new OkopfRecords(name, null);
}
/**
* Rename this table
*/
@Override
public OkopfRecords rename(Table<?> name) {
return new OkopfRecords(name.getQualifiedName(), null);
}
/**
* Create an inline derived table from this table
*/
@Override
public OkopfRecords where(Condition condition) {
return new OkopfRecords(getQualifiedName(), aliased() ? this : null, null, condition);
}
/**
* Create an inline derived table from this table
*/
@Override
public OkopfRecords where(Collection<? extends Condition> conditions) {
return where(DSL.and(conditions));
}
/**
* Create an inline derived table from this table
*/
@Override
public OkopfRecords where(Condition... conditions) {
return where(DSL.and(conditions));
}
/**
* Create an inline derived table from this table
*/
@Override
public OkopfRecords where(Field<Boolean> condition) {
return where(DSL.condition(condition));
}
/**
* Create an inline derived table from this table
*/
@Override
@PlainSQL
public OkopfRecords where(SQL condition) {
return where(DSL.condition(condition));
}
/**
* Create an inline derived table from this table
*/
@Override
@PlainSQL
public OkopfRecords where(@Stringly.SQL String condition) {
return where(DSL.condition(condition));
}
/**
* Create an inline derived table from this table
*/
@Override
@PlainSQL
public OkopfRecords where(@Stringly.SQL String condition, Object... binds) {
return where(DSL.condition(condition, binds));
}
/**
* Create an inline derived table from this table
*/
@Override
@PlainSQL
public OkopfRecords where(@Stringly.SQL String condition, QueryPart... parts) {
return where(DSL.condition(condition, parts));
}
/**
* Create an inline derived table from this table
*/
@Override
public OkopfRecords whereExists(Select<?> select) {
return where(DSL.exists(select));
}
/**
* Create an inline derived table from this table
*/
@Override
public OkopfRecords whereNotExists(Select<?> select) {
return where(DSL.notExists(select));
}
}

View file

@ -0,0 +1,109 @@
/*
* This file is generated by jOOQ.
*/
package ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.records;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.Files;
import org.jooq.Record1;
import org.jooq.impl.UpdatableRecordImpl;
/**
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class FilesRecord extends UpdatableRecordImpl<FilesRecord> {
private static final long serialVersionUID = 1L;
/**
* Setter for <code>public.files.file_id</code>.
*/
public void setFileId(Long value) {
set(0, value);
}
/**
* Getter for <code>public.files.file_id</code>.
*/
public Long getFileId() {
return (Long) get(0);
}
/**
* Setter for <code>public.files.file</code>.
*/
public void setFile(byte[] value) {
set(1, value);
}
/**
* Getter for <code>public.files.file</code>.
*/
public byte[] getFile() {
return (byte[]) get(1);
}
/**
* Setter for <code>public.files.file_name</code>.
*/
public void setFileName(String value) {
set(2, value);
}
/**
* Getter for <code>public.files.file_name</code>.
*/
public String getFileName() {
return (String) get(2);
}
/**
* Setter for <code>public.files.interaction_log_id</code>.
*/
public void setInteractionLogId(Long value) {
set(3, value);
}
/**
* Getter for <code>public.files.interaction_log_id</code>.
*/
public Long getInteractionLogId() {
return (Long) get(3);
}
// -------------------------------------------------------------------------
// Primary key information
// -------------------------------------------------------------------------
@Override
public Record1<Long> key() {
return (Record1) super.key();
}
// -------------------------------------------------------------------------
// Constructors
// -------------------------------------------------------------------------
/**
* Create a detached FilesRecord
*/
public FilesRecord() {
super(Files.FILES);
}
/**
* Create a detached, initialised FilesRecord
*/
public FilesRecord(Long fileId, byte[] file, String fileName, Long interactionLogId) {
super(Files.FILES);
setFileId(fileId);
setFile(file);
setFileName(fileName);
setInteractionLogId(interactionLogId);
resetChangedOnNotNull();
}
}

View file

@ -48,88 +48,116 @@ public class InteractionLogRecord extends UpdatableRecordImpl<InteractionLogReco
return (Timestamp) get(1);
}
/**
* Setter for <code>public.interaction_log.file_name</code>.
*/
public void setFileName(String value) {
set(2, value);
}
/**
* Getter for <code>public.interaction_log.file_name</code>.
*/
public String getFileName() {
return (String) get(2);
}
/**
* Setter for <code>public.interaction_log.form</code>.
*/
public void setForm(String value) {
set(3, value);
set(2, value);
}
/**
* Getter for <code>public.interaction_log.form</code>.
*/
public String getForm() {
return (String) get(3);
return (String) get(2);
}
/**
* Setter for <code>public.interaction_log.sender</code>.
*/
public void setSender(String value) {
set(4, value);
set(3, value);
}
/**
* Getter for <code>public.interaction_log.sender</code>.
*/
public String getSender() {
return (String) get(4);
return (String) get(3);
}
/**
* Setter for <code>public.interaction_log.status</code>.
*/
public void setStatus(String value) {
set(5, value);
set(4, value);
}
/**
* Getter for <code>public.interaction_log.status</code>.
*/
public String getStatus() {
return (String) get(5);
return (String) get(4);
}
/**
* Setter for <code>public.interaction_log.records_sent</code>.
*/
public void setRecordsSent(Integer value) {
set(6, value);
set(5, value);
}
/**
* Getter for <code>public.interaction_log.records_sent</code>.
*/
public Integer getRecordsSent() {
return (Integer) get(6);
return (Integer) get(5);
}
/**
* Setter for <code>public.interaction_log.records_accepted</code>.
*/
public void setRecordsAccepted(Integer value) {
set(7, value);
set(6, value);
}
/**
* Getter for <code>public.interaction_log.records_accepted</code>.
*/
public Integer getRecordsAccepted() {
return (Integer) get(7);
return (Integer) get(6);
}
/**
* Setter for <code>public.interaction_log.file_name</code>.
*/
public void setFileName(String value) {
set(7, value);
}
/**
* Getter for <code>public.interaction_log.file_name</code>.
*/
public String getFileName() {
return (String) get(7);
}
/**
* Setter for <code>public.interaction_log.file_id</code>.
*/
public void setFileId(String value) {
set(8, value);
}
/**
* Getter for <code>public.interaction_log.file_id</code>.
*/
public String getFileId() {
return (String) get(8);
}
/**
* Setter for <code>public.interaction_log.ervu_id</code>.
*/
public void setErvuId(String value) {
set(9, value);
}
/**
* Getter for <code>public.interaction_log.ervu_id</code>.
*/
public String getErvuId() {
return (String) get(9);
}
// -------------------------------------------------------------------------
@ -155,17 +183,19 @@ public class InteractionLogRecord extends UpdatableRecordImpl<InteractionLogReco
/**
* Create a detached, initialised InteractionLogRecord
*/
public InteractionLogRecord(Long id, Timestamp sentDate, String fileName, String form, String sender, String status, Integer recordsSent, Integer recordsAccepted) {
public InteractionLogRecord(Long id, Timestamp sentDate, String form, String sender, String status, Integer recordsSent, Integer recordsAccepted, String fileName, String fileId, String ervuId) {
super(InteractionLog.INTERACTION_LOG);
setId(id);
setSentDate(sentDate);
setFileName(fileName);
setForm(form);
setSender(sender);
setStatus(status);
setRecordsSent(recordsSent);
setRecordsAccepted(recordsAccepted);
setFileName(fileName);
setFileId(fileId);
setErvuId(ervuId);
resetChangedOnNotNull();
}
}

View file

@ -0,0 +1,94 @@
/*
* This file is generated by jOOQ.
*/
package ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.records;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.OkopfRecords;
import org.jooq.Record1;
import org.jooq.impl.UpdatableRecordImpl;
/**
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class OkopfRecordsRecord extends UpdatableRecordImpl<OkopfRecordsRecord> {
private static final long serialVersionUID = 1L;
/**
* Setter for <code>public.okopf_records.okopf_records_id</code>.
*/
public void setOkopfRecordsId(String value) {
set(0, value);
}
/**
* Getter for <code>public.okopf_records.okopf_records_id</code>.
*/
public String getOkopfRecordsId() {
return (String) get(0);
}
/**
* Setter for <code>public.okopf_records.name</code>.
*/
public void setName(String value) {
set(1, value);
}
/**
* Getter for <code>public.okopf_records.name</code>.
*/
public String getName() {
return (String) get(1);
}
/**
* Setter for <code>public.okopf_records.version</code>.
*/
public void setVersion(Integer value) {
set(2, value);
}
/**
* Getter for <code>public.okopf_records.version</code>.
*/
public Integer getVersion() {
return (Integer) get(2);
}
// -------------------------------------------------------------------------
// Primary key information
// -------------------------------------------------------------------------
@Override
public Record1<String> key() {
return (Record1) super.key();
}
// -------------------------------------------------------------------------
// Constructors
// -------------------------------------------------------------------------
/**
* Create a detached OkopfRecordsRecord
*/
public OkopfRecordsRecord() {
super(OkopfRecords.OKOPF_RECORDS);
}
/**
* Create a detached, initialised OkopfRecordsRecord
*/
public OkopfRecordsRecord(String okopfRecordsId, String name, Integer version) {
super(OkopfRecords.OKOPF_RECORDS);
setOkopfRecordsId(okopfRecordsId);
setName(name);
setVersion(version);
resetChangedOnNotNull();
}
}

View file

@ -0,0 +1,77 @@
package ru.micord.ervu.journal;
import java.time.LocalDateTime;
public class JournalDto {
private LocalDateTime departureDateTime;
private String fileName;
private Integer filePatternCode;
private String senderFio;
private String status;
public Integer filesSentCount;
public Integer acceptedFilesCount;
public LocalDateTime getDepartureDateTime() {
return departureDateTime;
}
public JournalDto setDepartureDateTime(LocalDateTime departureDateTime) {
this.departureDateTime = departureDateTime;
return this;
}
public String getFileName() {
return fileName;
}
public JournalDto setFileName(String fileName) {
this.fileName = fileName;
return this;
}
public Integer getFilePatternCode() {
return filePatternCode;
}
public JournalDto setFilePatternCode(Integer filePatternCode) {
this.filePatternCode = filePatternCode;
return this;
}
public String getSenderFio() {
return senderFio;
}
public JournalDto setSenderFio(String senderFio) {
this.senderFio = senderFio;
return this;
}
public String getStatus() {
return status;
}
public JournalDto setStatus(String status) {
this.status = status;
return this;
}
public Integer getFilesSentCount() {
return filesSentCount;
}
public JournalDto setFilesSentCount(Integer filesSentCount) {
this.filesSentCount = filesSentCount;
return this;
}
public Integer getAcceptedFilesCount() {
return acceptedFilesCount;
}
public JournalDto setAcceptedFilesCount(Integer acceptedFilesCount) {
this.acceptedFilesCount = acceptedFilesCount;
return this;
}
}

View file

@ -0,0 +1,28 @@
package ru.micord.ervu.journal;
import com.fasterxml.jackson.annotation.JsonProperty;
public class JournalFileDataRequest {
@JsonProperty("orgId_ERVU")
private String orgIdErvu; // идентификатор организации в ЕРВУ
private String prnOid; // идентификатор сотрудника в ЕСИА ответственный за воинский учёт
public String getOrgIdErvu() {
return orgIdErvu;
}
public JournalFileDataRequest setOrgIdErvu(String orgIdErvu) {
this.orgIdErvu = orgIdErvu;
return this;
}
public String getPrnOid() {
return prnOid;
}
public JournalFileDataRequest setPrnOid(String prnOid) {
this.prnOid = prnOid;
return this;
}
}

View file

@ -0,0 +1,37 @@
package ru.micord.ervu.journal;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
* @author ya.kuznetsova
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public class JournalFileDataResponse {
@JsonProperty("orgId_ERVU")
private String orgIdErvu; // идентификатор организации в ЕРВУ
@JsonProperty("filesInfo")
private List<JournalFileInfo> filesInfo;
public String getOrgIdErvu() {
return orgIdErvu;
}
public JournalFileDataResponse setOrgIdErvu(String orgIdErvu) {
this.orgIdErvu = orgIdErvu;
return this;
}
public List<JournalFileInfo> getFilesInfo() {
return filesInfo;
}
public JournalFileDataResponse setFilesInfo(List<JournalFileInfo> filesInfo) {
this.filesInfo = filesInfo;
return this;
}
}

View file

@ -0,0 +1,125 @@
package ru.micord.ervu.journal;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import ru.micord.ervu.journal.deserializer.DepartureDateTimeDeserializer;
@JsonIgnoreProperties(ignoreUnknown = true)
public class JournalFileInfo {
@JsonProperty("fileId")
private String fileId; //ИД файла полученный при создании записи о файле в реестр организаций (в ЕРВУ)
@JsonProperty("fileName")
private String fileName; // Название файла
@JsonProperty("filePatternCode")
private Integer filePatternCode; // Номер шаблона(Формы)
@JsonProperty("filePatternName")
private String filePatternName;
@JsonProperty("departureDateTime")
@JsonDeserialize(using = DepartureDateTimeDeserializer.class)
private LocalDateTime departureDateTime; // Дата-время отправки файла
@JsonProperty("timeZone")
private ZoneOffset timeZone; //Таймзона
@JsonProperty("fileStatus")
private JournalFileStatus fileStatus;
@JsonProperty("senderInfo")
private SenderInfo senderInfo;
@JsonProperty("rowsCount")
private Integer rowsCount; //Общее количество записей отправленных в файле
@JsonProperty("rowsSuccess")
private Integer rowsSuccess; //Количество записей принятых в файле
public String getFileId() {
return fileId;
}
public JournalFileInfo setFileId(String fileId) {
this.fileId = fileId;
return this;
}
public String getFileName() {
return fileName;
}
public JournalFileInfo setFileName(String fileName) {
this.fileName = fileName;
return this;
}
public Integer getFilePatternCode() {
return filePatternCode;
}
public JournalFileInfo setFilePatternCode(Integer filePatternCode) {
this.filePatternCode = filePatternCode;
return this;
}
public String getFilePatternName() {
return filePatternName;
}
public JournalFileInfo setFilePatternName(String filePatternName) {
this.filePatternName = filePatternName;
return this;
}
public LocalDateTime getDepartureDateTime() {
return departureDateTime;
}
public JournalFileInfo setDepartureDateTime(LocalDateTime departureDateTime) {
this.departureDateTime = departureDateTime;
return this;
}
public ZoneOffset getTimeZone() {
return timeZone;
}
public JournalFileInfo setTimeZone(ZoneOffset timeZone) {
this.timeZone = timeZone;
return this;
}
public JournalFileStatus getFileStatus() {
return fileStatus;
}
public JournalFileInfo setFileStatus(JournalFileStatus fileStatus) {
this.fileStatus = fileStatus;
return this;
}
public SenderInfo getSenderInfo() {
return senderInfo;
}
public JournalFileInfo setSenderInfo(SenderInfo senderInfo) {
this.senderInfo = senderInfo;
return this;
}
public Integer getRowsCount() {
return rowsCount;
}
public JournalFileInfo setRowsCount(Integer rowsCount) {
this.rowsCount = rowsCount;
return this;
}
public Integer getRowsSuccess() {
return rowsSuccess;
}
public JournalFileInfo setRowsSuccess(Integer rowsSuccess) {
this.rowsSuccess = rowsSuccess;
return this;
}
}

View file

@ -0,0 +1,42 @@
package ru.micord.ervu.journal;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonIgnoreProperties(ignoreUnknown = true)
public class JournalFileStatus {
@JsonProperty("code")
private Integer code;
@JsonProperty("status")
private String status;
@JsonProperty("description")
private String description;
public Integer getCode() {
return code;
}
public JournalFileStatus setCode(Integer code) {
this.code = code;
return this;
}
public String getStatus() {
return status;
}
public JournalFileStatus setStatus(String status) {
this.status = status;
return this;
}
public String getDescription() {
return description;
}
public JournalFileStatus setDescription(String description) {
this.description = description;
return this;
}
}

View file

@ -0,0 +1,53 @@
package ru.micord.ervu.journal;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonIgnoreProperties(ignoreUnknown = true)
public class SenderInfo {
@JsonProperty("prnOid")
private String prnOid; // идентификатор сотрудника в ЕСИА
@JsonProperty("lastName")
private String lastName;
@JsonProperty("firstName")
private String firstName;
@JsonProperty("middleName")
private String middleName;
public String getPrnOid() {
return prnOid;
}
public SenderInfo setPrnOid(String prnOid) {
this.prnOid = prnOid;
return this;
}
public String getLastName() {
return lastName;
}
public SenderInfo setLastName(String lastName) {
this.lastName = lastName;
return this;
}
public String getFirstName() {
return firstName;
}
public SenderInfo setFirstName(String firstName) {
this.firstName = firstName;
return this;
}
public String getMiddleName() {
return middleName;
}
public SenderInfo setMiddleName(String middleName) {
this.middleName = middleName;
return this;
}
}

View file

@ -0,0 +1,19 @@
package ru.micord.ervu.journal.deserializer;
import java.io.IOException;
import java.time.LocalDateTime;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import ru.micord.ervu.util.DateUtil;
public class DepartureDateTimeDeserializer extends JsonDeserializer<LocalDateTime> {
@Override
public LocalDateTime deserialize(JsonParser jsonParser,
DeserializationContext deserializationContext) throws IOException {
String dateTimeString = jsonParser.getText();
return DateUtil.convertToLocalDateTime(dateTimeString);
}
}

View file

@ -0,0 +1,36 @@
package ru.micord.ervu.journal.mapper;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.records.InteractionLogRecord;
import ru.micord.ervu.journal.JournalDto;
import ru.micord.ervu.journal.JournalFileInfo;
import ru.micord.ervu.journal.SenderInfo;
import static ru.micord.ervu.util.StringUtils.convertToFio;
public class JournalDtoMapper {
public static JournalDto mapToJournalDto(JournalFileInfo journalFileInfo) {
SenderInfo senderInfo = journalFileInfo.getSenderInfo();
return new JournalDto()
.setDepartureDateTime(journalFileInfo.getDepartureDateTime())
.setFileName(journalFileInfo.getFileName())
.setFilePatternCode(journalFileInfo.getFilePatternCode())
.setSenderFio(convertToFio(senderInfo.getFirstName(), senderInfo.getMiddleName(),
senderInfo.getLastName())
)
.setStatus(journalFileInfo.getFileStatus().getStatus())
.setFilesSentCount(journalFileInfo.getRowsCount())
.setAcceptedFilesCount(journalFileInfo.getRowsSuccess());
}
public static JournalDto mapToJournalDto(InteractionLogRecord record) {
return new JournalDto()
.setDepartureDateTime(record.getSentDate().toLocalDateTime())
.setFileName(record.getFileName())
.setFilePatternCode(Integer.valueOf(record.getForm().replace("", "")))
.setSenderFio(record.getSender())
.setStatus(record.getStatus())
.setFilesSentCount(record.getRecordsSent())
.setAcceptedFilesCount(record.getRecordsAccepted());
}
}

View file

@ -1,44 +1,66 @@
package ru.micord.ervu.kafka;
import org.apache.kafka.clients.CommonClientConfigs;
import java.time.Duration;
import java.util.HashMap;
import java.util.Map;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.common.config.SaslConfigs;
import org.apache.kafka.common.serialization.StringDeserializer;
import org.apache.kafka.common.serialization.StringSerializer;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.kafka.annotation.EnableKafka;
import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory;
import org.springframework.kafka.core.*;
import org.springframework.kafka.core.ConsumerFactory;
import org.springframework.kafka.core.DefaultKafkaConsumerFactory;
import org.springframework.kafka.core.DefaultKafkaProducerFactory;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.kafka.core.ProducerFactory;
import org.springframework.kafka.listener.ConcurrentMessageListenerContainer;
import org.springframework.kafka.requestreply.ReplyingKafkaTemplate;
import java.time.Duration;
import java.util.HashMap;
import java.util.Map;
@Configuration
@EnableKafka
public class ReplyingKafkaConfig {
@Value("${ervu-kafka.bootstrap-servers}")
private String bootstrapServers;
@Value("${ervu-kafka.org-reply-topic}")
private String orgReplyTopic;
@Value("${ervu-kafka.journal-reply-topic}")
private String journalReplyTopic;
@Value("${ervu-kafka.group-id}")
private String groupId;
@Value("${ervu-kafka.reply-timeout:30}")
private long replyTimeout;
@Value("${ervu-kafka.send.security.protocol}")
private String securityProtocol;
@Value("${ervu-kafka.send.login.module:org.apache.kafka.common.security.scram.ScramLoginModule}")
private String loginModule;
@Value("${ervu-kafka.send.username}")
private String username;
@Value("${ervu-kafka.send.password}")
private String password;
@Value("${ervu-kafka.sasl.mechanism}")
private String saslMechanism;
@Bean
@Qualifier("ervu-factory")
public ProducerFactory<String, String> producerFactory() {
Map<String, Object> configProps = new HashMap<>();
configProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
configProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
configProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
configProps.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, securityProtocol);
configProps.put(SaslConfigs.SASL_JAAS_CONFIG, loginModule + " required username=\""
+ username + "\" password=\"" + password + "\";");
configProps.put(SaslConfigs.SASL_MECHANISM, saslMechanism);
return new DefaultKafkaProducerFactory<>(configProps);
}
@ -54,6 +76,10 @@ public class ReplyingKafkaConfig {
configProps.put(ConsumerConfig.GROUP_ID_CONFIG, groupId);
configProps.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
configProps.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
configProps.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, securityProtocol);
configProps.put(SaslConfigs.SASL_JAAS_CONFIG, loginModule + " required username=\""
+ username + "\" password=\"" + password + "\";");
configProps.put(SaslConfigs.SASL_MECHANISM, saslMechanism);
return new DefaultKafkaConsumerFactory<>(configProps);
}
@ -65,6 +91,7 @@ public class ReplyingKafkaConfig {
}
@Bean
@Qualifier("org")
public ConcurrentMessageListenerContainer<String, String> replyContainer(
ConcurrentKafkaListenerContainerFactory<String, String> factory) {
ConcurrentMessageListenerContainer<String, String> container = factory.createContainer(
@ -74,7 +101,32 @@ public class ReplyingKafkaConfig {
}
@Bean
public ReplyingKafkaTemplate<String, String, String> replyingKafkaTemplate(
@Qualifier("journal")
public ConcurrentMessageListenerContainer<String, String> journalReplyContainer(
ConcurrentKafkaListenerContainerFactory<String, String> factory) {
ConcurrentMessageListenerContainer<String, String> container = factory.createContainer(
journalReplyTopic);
container.getContainerProperties().setGroupId(groupId);
return container;
}
@Bean
@Qualifier("org")
public ReplyingKafkaTemplate<String, String, String> orgReplyingKafkaTemplate(
@Qualifier("ervu-factory") ProducerFactory<String, String> pf,
@Qualifier("org") ConcurrentMessageListenerContainer<String, String> container) {
return initReplyingKafkaTemplate(pf, container);
}
@Bean
@Qualifier("journal")
public ReplyingKafkaTemplate<String, String, String> journalReplyingKafkaTemplate(
@Qualifier("ervu-factory") ProducerFactory<String, String> pf,
@Qualifier("journal") ConcurrentMessageListenerContainer<String, String> container) {
return initReplyingKafkaTemplate(pf, container);
}
private ReplyingKafkaTemplate<String, String, String> initReplyingKafkaTemplate(
ProducerFactory<String, String> pf,
ConcurrentMessageListenerContainer<String, String> container) {
ReplyingKafkaTemplate<String, String, String> replyingKafkaTemplate =

View file

@ -6,21 +6,17 @@ import java.util.concurrent.ExecutionException;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.common.header.internals.RecordHeader;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.requestreply.ReplyingKafkaTemplate;
import org.springframework.kafka.requestreply.RequestReplyFuture;
import org.springframework.kafka.support.KafkaHeaders;
import org.springframework.stereotype.Service;
import ru.micord.ervu.kafka.service.ReplyingKafkaService;
/**
* @author Eduard Tihomirov
*/
@Service
public class ReplyingKafkaServiceImpl implements ReplyingKafkaService {
public abstract class BaseReplyingKafkaServiceImpl implements ReplyingKafkaService {
@Autowired
private ReplyingKafkaTemplate<String, String, String> replyingKafkaTemplate;
protected abstract ReplyingKafkaTemplate<String, String, String> getReplyingKafkaTemplate();
public String sendMessageAndGetReply(String requestTopic,
String requestReplyTopic,
@ -28,11 +24,12 @@ public class ReplyingKafkaServiceImpl implements ReplyingKafkaService {
ProducerRecord<String, String> record = new ProducerRecord<>(requestTopic, requestMessage);
record.headers().add(new RecordHeader(KafkaHeaders.REPLY_TOPIC, requestReplyTopic.getBytes()));
RequestReplyFuture<String, String, String> replyFuture = replyingKafkaTemplate.sendAndReceive(
record);
RequestReplyFuture<String, String, String> replyFuture = getReplyingKafkaTemplate()
.sendAndReceive(record);
try {
Optional<ConsumerRecord<String, String>> consumerRecord = Optional.ofNullable(replyFuture.get());
return consumerRecord.map(ConsumerRecord::value)
return Optional.ofNullable(replyFuture.get())
.map(ConsumerRecord::value)
.orElseThrow(() -> new RuntimeException("Kafka return result is null."));
}
catch (InterruptedException | ExecutionException e) {

View file

@ -0,0 +1,20 @@
package ru.micord.ervu.kafka.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.kafka.requestreply.ReplyingKafkaTemplate;
import org.springframework.stereotype.Service;
@Service
@Qualifier("journal")
public class JournalReplyingKafkaServiceImpl extends BaseReplyingKafkaServiceImpl {
@Autowired
@Qualifier("journal")
private ReplyingKafkaTemplate<String, String, String> journalReplyingKafkaTemplate;
@Override
protected ReplyingKafkaTemplate<String, String, String> getReplyingKafkaTemplate() {
return journalReplyingKafkaTemplate;
}
}

View file

@ -0,0 +1,20 @@
package ru.micord.ervu.kafka.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.kafka.requestreply.ReplyingKafkaTemplate;
import org.springframework.stereotype.Service;
@Service
@Qualifier("org")
public class OrgReplyingKafkaServiceImpl extends BaseReplyingKafkaServiceImpl {
@Autowired
@Qualifier("org")
private ReplyingKafkaTemplate<String, String, String> orgReplyingKafkaTemplate;
@Override
protected ReplyingKafkaTemplate<String, String, String> getReplyingKafkaTemplate() {
return orgReplyingKafkaTemplate;
}
}

View file

@ -0,0 +1,10 @@
package ru.micord.ervu.property.grid;
/**
* @author gulnaz
*/
public class StaticColumn {
public String column;
public String type;
}

View file

@ -0,0 +1,88 @@
package ru.micord.ervu.property.grid;
import java.util.Collection;
import java.util.Collections;
import component.field.dataconvert.DataConverter;
import component.field.dataconvert.DataConverterProvider;
import component.field.persist.filter.AbstractFilterComponent;
import component.grid.model.PinnedType;
import property.grid.Column;
import property.grid.Formatter;
import utils.GridUtils;
import ru.cg.webbpm.modules.database.bean.AggregationFunction;
import ru.cg.webbpm.modules.database.bean.entity_graph.EntityColumn;
import ru.cg.webbpm.modules.standard_annotations.editor.Visible;
import ru.cg.webbpm.modules.webkit.annotations.Exclude;
import ru.cg.webbpm.modules.webkit.annotations.Model;
/**
* @author gulnaz
*/
@Model
public class StaticGridColumn extends AbstractFilterComponent<Object, Object>
implements Column {
public StaticColumn field;
public String displayName;
public String headerTooltip;
@Visible(predicate = "displayPopup != true")
public String columnTooltip;
public Integer width;
public boolean widthFixed;
public boolean autoHeight;
public boolean hidden;
public boolean sortable;
public boolean disableHiding;
public PinnedType pinned;
public boolean filter;
@Exclude
public Formatter<?, ?> formatter;
public AggregationFunction aggregationFunction;
@Exclude
public Formatter<?, ?> aggregationFormatter;
@Exclude
public Formatter<?, ?> exportFileFormatter;
public boolean displayPopup;
public boolean suppressHeaderMenu;
public EntityColumn getField() {
return GridUtils.toEntityColumn(field.column);
}
@Override
public String getDisplayName() {
return displayName;
}
public Collection<EntityColumn> getEntityColumns() {
return Collections.singleton(getField());
}
public AggregationFunction getAggregationFunction() {
return this.aggregationFunction;
}
public Formatter<?, ?> getFormatter() {
return this.formatter;
}
public Formatter<?, ?> getAggregationFormatter() {
return this.aggregationFormatter;
}
public Formatter<?, ?> getExportFormatter() {
return exportFileFormatter;
}
public Object convertData(Object rawValue) {
if (this.dataConverter != null) {
return this.dataConverter.convertValueForSave(rawValue);
}
else {
DataConverter converter = DataConverterProvider.getDataConverter(rawValue.getClass());
return converter.convertValueForSave(rawValue);
}
}
}

View file

@ -23,6 +23,7 @@ import javax.servlet.http.HttpServletResponse;
import com.fasterxml.jackson.databind.ObjectMapper;
import ru.micord.ervu.security.esia.config.EsiaConfig;
import ervu.service.classifier.RecordAttributesService;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import ru.micord.ervu.kafka.model.Brhs;
import ru.micord.ervu.kafka.model.Data;
@ -65,6 +66,7 @@ public class EsiaAuthService {
private JwtTokenService jwtTokenService;
@Autowired
@Qualifier("org")
private ReplyingKafkaService replyingKafkaService;
@Autowired

View file

@ -0,0 +1,16 @@
package ru.micord.ervu.service;
import java.sql.Timestamp;
import java.util.List;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.records.InteractionLogRecord;
/**
* @author Eduard Tihomirov
*/
public interface InteractionService {
List<InteractionLogRecord> get(String ervuId, String[] excludedStatuses);
void setStatus(String fileId, String status, String fileName, String form, Timestamp timestamp, String sender, Integer count, String ervuId);
}

View file

@ -0,0 +1,47 @@
package ru.micord.ervu.service;
import java.sql.Timestamp;
import java.util.List;
import ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.records.InteractionLogRecord;
import org.jooq.Condition;
import org.jooq.DSLContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import static ervu_lkrp_ul.ervu_lkrp_ul.db_beans.public_.tables.InteractionLog.INTERACTION_LOG;
/**
* @author Eduard Tihomirov
*/
@Service
public class InteractionServiceImpl implements InteractionService {
@Autowired
private DSLContext dslContext;
@Override
public List<InteractionLogRecord> get(String ervuId, String[] excludedStatuses) {
Condition condition = INTERACTION_LOG.ERVU_ID.eq(ervuId);
if (excludedStatuses != null && excludedStatuses.length > 0) {
condition = condition.and(INTERACTION_LOG.STATUS.notIn(excludedStatuses));
}
return dslContext.selectFrom(INTERACTION_LOG)
.where(condition)
.fetch();
}
public void setStatus(String fileId, String status, String fileName, String form, Timestamp timestamp, String sender,
Integer count, String ervuId) {
dslContext.insertInto(INTERACTION_LOG)
.set(INTERACTION_LOG.FILE_ID, fileId)
.set(INTERACTION_LOG.STATUS, status)
.set(INTERACTION_LOG.FORM, form)
.set(INTERACTION_LOG.SENT_DATE, timestamp)
.set(INTERACTION_LOG.SENDER, sender)
.set(INTERACTION_LOG.FILE_NAME, fileName)
.set(INTERACTION_LOG.RECORDS_SENT, count)
.set(INTERACTION_LOG.ERVU_ID, ervuId);
}
}

View file

@ -0,0 +1,8 @@
package ru.micord.ervu.service.grid;
import java.util.List;
public interface InMemoryStaticGridLoadService<T> {
List<T> loadData();
}

View file

@ -0,0 +1,90 @@
package ru.micord.ervu.service.grid.impl;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.stream.Stream;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import ru.micord.ervu.journal.JournalDto;
import ru.micord.ervu.journal.JournalFileDataRequest;
import ru.micord.ervu.journal.JournalFileDataResponse;
import ru.micord.ervu.journal.mapper.JournalDtoMapper;
import ru.micord.ervu.security.webbpm.jwt.JwtAuthentication;
import ru.micord.ervu.service.InteractionService;
import ru.micord.ervu.service.grid.InMemoryStaticGridLoadService;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import ru.micord.ervu.kafka.service.ReplyingKafkaService;
import ru.micord.ervu.security.webbpm.jwt.service.JwtTokenService;
@Service
public class JournalInMemoryStaticGridLoadService implements
InMemoryStaticGridLoadService<JournalDto> {
private final JwtTokenService jwtTokenService;
private final InteractionService interactionService;
private final ReplyingKafkaService ervuReplyingKafkaService;
private final ObjectMapper objectMapper;
@Value("${ervu-kafka.journal-request-topic}")
private String requestTopic;
@Value("${ervu-kafka.journal-reply-topic}")
private String replyTopic;
@Value("${db-journal-excluded-statuses:}")
private String[] excludedStatuses;
public JournalInMemoryStaticGridLoadService(JwtTokenService jwtTokenService,
InteractionService interactionService,
@Qualifier("journal") ReplyingKafkaService ervuReplyingKafkaService,
ObjectMapper objectMapper) {
this.jwtTokenService = jwtTokenService;
this.interactionService = interactionService;
this.ervuReplyingKafkaService = ervuReplyingKafkaService;
this.objectMapper = objectMapper;
}
@Override
public List<JournalDto> loadData() {
JournalFileDataRequest journalFileDataRequest = initJournalFileDataRequest();
List<JournalDto> dbJournalList = interactionService.get(journalFileDataRequest.getOrgIdErvu(),
excludedStatuses)
.stream().map(JournalDtoMapper::mapToJournalDto)
.toList();
List<JournalDto> ervuJournalList;
try {
String responseJsonString = ervuReplyingKafkaService.sendMessageAndGetReply(requestTopic,
replyTopic, objectMapper.writeValueAsString(journalFileDataRequest));
JournalFileDataResponse journalFileDataResponse = objectMapper.readValue(responseJsonString,
JournalFileDataResponse.class);
ervuJournalList = journalFileDataResponse.getFilesInfo().stream()
.map(JournalDtoMapper::mapToJournalDto)
.toList();
}
catch (JsonProcessingException e) {
throw new RuntimeException("Failed to parse JournalFileDataResponse.", e);
}
return Stream.concat(dbJournalList.stream(), ervuJournalList.stream())
.sorted(Comparator.comparing(JournalDto::getDepartureDateTime))
.toList();
}
private JournalFileDataRequest initJournalFileDataRequest() {
Optional<Authentication> authentication = Optional.ofNullable(
SecurityContextHolder.getContext().getAuthentication());
String jwtToken = authentication.map(auth -> ((JwtAuthentication) auth).getToken())
.orElseThrow(() -> new RuntimeException("Failed to get auth data. User unauthorized."));
String[] ids = jwtTokenService.getToken(jwtToken).getUserAccountId().split(":");
String userId = ids[0];
String ervuId = ids[1];
return new JournalFileDataRequest()
.setPrnOid(userId)
.setOrgIdErvu(ervuId);
}
}

View file

@ -0,0 +1,22 @@
package ru.micord.ervu.service.rpc;
import java.util.List;
import ru.micord.ervu.service.grid.InMemoryStaticGridLoadService;
import ru.cg.webbpm.modules.standard_annotations.validation.NotNull;
import ru.cg.webbpm.modules.webkit.annotations.RpcCall;
import ru.cg.webbpm.modules.webkit.annotations.RpcService;
import ru.cg.webbpm.modules.webkit.beans.Behavior;
@RpcService
public class InMemoryStaticGridRpcService extends Behavior {
@NotNull
public InMemoryStaticGridLoadService<?> loadService;
@RpcCall
public List<?> loadData() {
return loadService.loadData();
}
}

View file

@ -0,0 +1,40 @@
package ru.micord.ervu.util;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import org.springframework.util.StringUtils;
import static org.springframework.util.StringUtils.hasText;
/**
* @author gulnaz
*/
public final class DateUtil {
private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy");
private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm");
private DateUtil() {}
public static LocalDate convertToLocalDate(String date) {
return StringUtils.hasText(date)
? LocalDate.parse(date, DateTimeFormatter.ISO_LOCAL_DATE)
: null;
}
public static LocalDateTime convertToLocalDateTime(String dateTime) {
return hasText(dateTime)
? LocalDateTime.parse(dateTime, DATE_TIME_FORMATTER)
: null;
}
public static String convertToString(LocalDate date) {
return date == null ? "" : date.format(DATE_FORMATTER);
}
public static String convertToString(LocalDate date, DateTimeFormatter formatter) {
return date == null ? "" : date.format(formatter);
}
}

View file

@ -0,0 +1,17 @@
package ru.micord.ervu.util;
import static org.apache.commons.lang3.StringUtils.capitalize;
import static org.apache.commons.lang3.StringUtils.substring;
public class StringUtils {
public static String convertToFio(String firstName, String middleName, String lastName) {
String firstNameInitial = substring(firstName, 0, 1).toUpperCase();
String middleNameInitial = substring(middleName, 0, 1).toUpperCase();
return String.format("%s %s.%s.",
capitalize(lastName),
firstNameInitial,
middleNameInitial
);
}
}

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd">
<changeSet id="001" author="tihomirov">
<comment>add file id column into interaction_log table</comment>
<addColumn schemaName="public" tableName="interaction_log">
<column name="file_id" type="varchar(36)"/>
</addColumn>
</changeSet>
<changeSet id="002" author="tihomirov">
<comment>add ervu id column into interaction_log table</comment>
<addColumn schemaName="public" tableName="interaction_log">
<column name="ervu_id" type="varchar(36)"/>
</addColumn>
</changeSet>
</databaseChangeLog>

View file

@ -6,5 +6,6 @@
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd">
<include file="2024-29-08--01-create-table-record-attributes.xml" relativeToChangelogFile="true"/>
<include file="2024-09-11--01-add-new-column-interaction-log.xml" relativeToChangelogFile="true"/>
</databaseChangeLog>

1
config/asd Normal file
View file

@ -0,0 +1 @@
org_fullname, org_shortname, org_brhs, org_brhs_ctts, org_brhs_addrs, org_type, org_ogrn, org_inn, org_leg, org_kpp, org_ctts, org_addrs, org_grps, org_emps

View file

@ -31,12 +31,12 @@ xa-data-source add \
/system-property=file.webdav.upload.url:add(value="https://ervu-webdav.k8s.micord.ru")
/system-property=file.webdav.upload.username:add(value="test")
/system-property=file.webdav.upload.password:add(value="test")
/system-property=kafka.send.message.topic.name:add(value="file-upload-v2")
/system-property=kafka.send.url:add(value="http://10.10.31.11:32609")
/system-property=kafka.send.security.protocol:add(value="SASL_PLAINTEXT")
/system-property=kafka.sasl.mechanism:add(value="SCRAM-SHA-256")
/system-property=kafka.send.username:add(value="user1")
/system-property=kafka.send.password:add(value="Blfi9d2OFG")
/system-property=av-kafka.send.message.topic.name:add(value="ervu.lkrp.download.request")
/system-property=av-kafka.send.url:add(value="http://10.10.31.11:32609")
/system-property=av-kafka.send.security.protocol:add(value="SASL_PLAINTEXT")
/system-property=av-kafka.sasl.mechanism:add(value="SCRAM-SHA-256")
/system-property=av-kafka.send.username:add(value="user1")
/system-property=av-kafka.send.password:add(value="Blfi9d2OFG")
/system-property=ervu.fileupload.max_file_size:add(value="5242880")
/system-property=ervu.fileupload.max_request_size:add(value="6291456")
/system-property=ervu.fileupload.file_size_threshold:add(value="0")
@ -55,4 +55,6 @@ xa-data-source add \
/system-property=ervu-kafka.reply-timeout:add(value="30")
/system-property=ervu.cron.load.enable(value="true")
/system-property=ervu.cron.load.time(value="0 0 */1 * * *")
/system-property=ervu.esnsi.classifier.url.load(value="https://esnsi.gosuslugi.ru/rest/ext/v1/classifiers/11465/file?extension=JSON&encoding=UTF_8"")
/system-property=ervu.esnsi.classifier.url.load(value="https://esnsi.gosuslugi.ru/rest/ext/v1/classifiers/11465/file?extension=JSON&encoding=UTF_8"")
/system-property=ervu-kafka.journal-request-topic:add(value="ervu.organization.journal.request")
/system-property=ervu-kafka.journal-reply-topic:add(value="ervu.organization.journal.response")

View file

@ -57,12 +57,12 @@
<property name="file.webdav.upload.url" value="https://ervu-webdav.k8s.micord.ru"/>
<property name="file.webdav.upload.username" value="test"/>
<property name="file.webdav.upload.password" value="test"/>
<property name="kafka.send.message.topic.name" value="file-upload-v2"/>
<property name="kafka.send.url" value="http://10.10.31.11:32609"/>
<property name="kafka.send.security.protocol" value="SASL_PLAINTEXT"/>
<property name="kafka.sasl.mechanism" value="SCRAM-SHA-256"/>
<property name="kafka.send.username" value="user1"/>
<property name="kafka.send.password" value="Blfi9d2OFG"/>
<property name="av-kafka.download-request-topic" value="ervu.lkrp.download.request"/>
<property name="av-kafka.send.url" value="localhost:9092"/>
<property name="av-kafka.send.security.protocol" value="SASL_PLAINTEXT"/>
<property name="av-kafka.sasl.mechanism" value="SCRAM-SHA-256"/>
<property name="av-kafka.send.username" value="user1"/>
<property name="av-kafka.send.password" value="Blfi9d2OFG"/>
<property name="ervu.fileupload.max_file_size" value="5242880"/>
<property name="ervu.fileupload.max_request_size" value="6291456"/>
<property name="ervu.fileupload.file_size_threshold" value="0"/>
@ -82,6 +82,8 @@
<property name="bpmn.enable" value="false"/>
<property name="ervu.cron.load.time" value="0 0 */1 * * *"/>
<property name="ervu.esnsi.classifier.url.load" value="https://esnsi.gosuslugi.ru/rest/ext/v1/classifiers/11465/file?extension=JSON&amp;encoding=UTF_8"/>
<property name="ervu-kafka.journal-request-topic" value="ervu.organization.journal.request"/>
<property name="ervu-kafka.journal-reply-topic" value="ervu.organization.journal.response"/>
</system-properties>
<management>
<audit-log>
@ -585,4 +587,4 @@
<remote-destination host="${jboss.mail.server.host:localhost}" port="${jboss.mail.server.port:25}"/>
</outbound-socket-binding>
</socket-binding-group>
</server>
</server>

View file

@ -18,12 +18,12 @@ webbpm.cache.hazelcast.outbound_port_definitions=5801-5820
file.webdav.upload.url=https://ervu-webdav.k8s.micord.ru
file.webdav.upload.username=test
file.webdav.upload.password=test
kafka.send.message.topic.name=file-upload-v2
kafka.send.url=http://10.10.31.11:32609
kafka.send.security.protocol=SASL_PLAINTEXT
kafka.sasl.mechanism=SCRAM-SHA-256
kafka.send.username=user1
kafka.send.password=Blfi9d2OFG
av-kafka.send.message.topic.name=file-upload-v2
av-kafka.send.url=http://10.10.31.11:32609
av-kafka.send.security.protocol=SASL_PLAINTEXT
av-kafka.sasl.mechanism=SCRAM-SHA-256
av-kafka.send.username=user1
av-kafka.send.password=Blfi9d2OFG
ervu.fileupload.max_file_size=5242880
ervu.fileupload.max_request_size=6291456
ervu.fileupload.file_size_threshold=0

View file

@ -5,7 +5,7 @@
"filter_cleanup_check_period_minutes": 30,
"auth_method": "form",
"enable.version.in.url": "%enable.version.in.url%",
"backend.context": "ul/ul",
"backend.context": "ul",
"guard.confirm_exit": false,
"message_service_error_timeout": "",
"message_service_warning_timeout": "",

View file

@ -1 +1 @@
%project.version%
1.0.0-SNAPSHOT

View file

@ -0,0 +1,53 @@
<div class="grid"
[ngbTooltip]="tooltip | emptyIfNull">
<ag-grid-angular [ngClass]="theme"
[ngStyle]="style"
[columnDefs]="columnDefs"
[defaultColDef]="defaultColDef"
[headerHeight]="headerHeight"
[rowHeight]="rowHeight"
[rowSelection]="rowSelection"
[rowMultiSelectWithClick]="isRowMultiSelectWithClick()"
[suppressRowClickSelection]="isSuppressRowClickSelection()"
[suppressLoadingOverlay]="isSuppressLoadingOverlay()"
[suppressNoRowsOverlay]="isSuppressNoRowsOverlay()"
[rowClassRules]="rowClassRules"
[rowModelType]="getRowModelType()"
[datasource]="datasource"
[maxConcurrentDatasourceRequests]="maxConcurrentDatasourceRequests"
[blockLoadDebounceMillis]="blockLoadDebounceMillis"
[cacheBlockSize]="getBlockSize()"
[pagination]="pagination"
[paginationPageSize]="fetchSize"
[maxBlocksInCache]="0"
[getRowId]="getRowIdFunc()"
[isRowSelectable]="isRowSelectableFunc()"
[pinnedBottomRowData]="pinnedBottomRowData"
[suppressDragLeaveHidesColumns]="true"
[suppressCopyRowsToClipboard]="true"
[processCellForClipboard]="processCellForClipboard"
[allowContextMenuWithControlKey]="allowContextMenuWithControlKey"
[localeText]="localeText"
[enableCellTextSelection]="enableCellTextSelection"
[overlayLoadingTemplate]="getLoadingOverlayTemplate()"
[overlayNoRowsTemplate]="getNoRowsOverlayTemplate()"
[tooltipShowDelay]="tooltipDelay"
[accentedSort]="true"
(gridReady)="onGridReady($event)"
(cellClicked)="onCellClicked($event)"
(rowClicked)="onRowClicked($event)"
(rowDoubleClicked)="onRowDoubleClicked($event)"
(selectionChanged)="onSelectionChanged($event)"
(sortChanged)="onSortChanged($event)"
(bodyScroll)="onBodyScroll($event)"
(columnResized)="onColumnResized($event)"
(columnMoved)="onColumnMoved($event)"
(columnVisible)="onColumnVisibilityChanged($event)"
(filterChanged)="columnFilterChanged($event)"
(componentStateChanged)="componentStateChanged($event)">
</ag-grid-angular>
<div [hidden]="true">
<ng-content></ng-content>
</div>
</div>

View file

@ -0,0 +1,112 @@
import {
GridColumnIdUtils,
GridRow,
GridRowModelType,
GridV2,
GridV2Column, Visible
} from "@webbpm/base-package";
import {ChangeDetectionStrategy, Component} from "@angular/core";
import {
ColDef,
ICellRendererParams,
ITooltipParams,
ValueFormatterParams,
ValueGetterParams
} from "ag-grid-community";
import {StaticColumnInitializer} from "./StaticColumnInitializer";
import {InMemoryStaticGridRpcService} from "../../../generated/ru/micord/ervu/service/rpc/InMemoryStaticGridRpcService";
import {StaticGridColumn} from "../../../generated/ru/micord/ervu/property/grid/StaticGridColumn";
@Component({
moduleId: module.id,
selector: 'in-memory-static-grid',
templateUrl: './../../../../../src/resources/template/ervu/component/grid/GridV2.html',
changeDetection: ChangeDetectionStrategy.OnPush
})
export class InMemoryStaticGrid extends GridV2 {
private rpcService: InMemoryStaticGridRpcService;
getRowModelType(): string {
return GridRowModelType.CLIENT_SIDE;
}
protected initGrid() {
super.initGrid();
this.rpcService = this.getScript(InMemoryStaticGridRpcService);
if (this.rpcService) {
this.rpcService.loadData().then(response => {
this.rowData = response;
this.refresh();
})
.catch((error) => console.error(`Failed to load data. ${error}`));
}
}
getColumns(): any[] {
return this.getScriptsInChildren(GridV2Column)
.map(columnV2 => columnV2.getScript(StaticGridColumn));
}
protected columnV2ToColumnDef(column: GridV2Column): ColDef {
let gridColumn = column.getScript(StaticGridColumn);
let colDef = this.columnToColumnDef(gridColumn);
if (column.renderer) {
colDef.cellRenderer = (params: ICellRendererParams) => column.renderer.render(params);
}
if (column.valueGetter) {
colDef.valueGetter = (params: ValueGetterParams) => column.valueGetter.get(params);
}
if (column.tooltipValueGetter) {
if (gridColumn.columnTooltip) {
throw new Error(
"Only one type of tooltip should be specified: tooltipValueGetter or columnTooltip");
}
colDef.tooltipValueGetter = (params: ITooltipParams) => column.tooltipValueGetter.get(params);
}
column.setGridRef(this);
column.setColDef(colDef);
return colDef;
}
protected columnToColumnDef(column: any): ColDef {
let colDef = StaticColumnInitializer.columnToColumnDef(this, column);
let columnComp = column.context;
colDef['columnUid'] = columnComp.getObjectId();
if (columnComp.cellCssClassRulesProvider) {
colDef.cellClassRules = columnComp.cellCssClassRulesProvider.getRules();
}
if (columnComp.valueFormatter) {
colDef.valueFormatter = (params?: ValueFormatterParams) => {
return columnComp.valueFormatter.format(params);
}
}
return colDef;
}
public load(): void {
this.onLoadStart();
let rows: GridRow[] = [];
if (this.rowData) {
this.rowData.forEach((data, i) => {
let row: GridRow = new GridRow();
row[GridColumnIdUtils.ROW_UID] = i;
this.getColumns().forEach(col => {
let column = col.field.column;
row[column] = data[column];
})
rows.push(row);
})
}
this.getGridApi().setRowData(rows);
this.onLoadEnd();
}
@Visible()
public getRowDataSize(): number {
return this.rowData ? this.rowData.length : 0;
}
}

View file

@ -0,0 +1,116 @@
import {ColDef, ICellRendererFunc, SuppressKeyboardEventParams} from "ag-grid-community";
import {
DateTimeUtil,
DefaultTooltip,
GridCellTooltipUtils,
GridColumnComparatorUtils,
GridColumnFilterUtils,
GridColumnKeyboardUtils,
GridSettingHeader,
GridValueFormatterUtils,
GridValueRendererUtils,
PinnedType
} from "@webbpm/base-package";
import {Moment} from "moment";
import * as moment from "moment-timezone";
import {StaticGridColumn} from "../../../generated/ru/micord/ervu/property/grid/StaticGridColumn";
export class StaticColumnInitializer {
public static columnToColumnDef(gridRef: any, column: StaticGridColumn) {
const columnDef: ColDef = {};
columnDef.headerName = column.displayName ? column.displayName : '';
columnDef.headerClass = "custom-header";
columnDef.width = column.width;
columnDef.suppressSizeToFit = column.widthFixed;
columnDef.hide = column.hidden;
columnDef.resizable = !column.widthFixed;
columnDef.headerComponentParams = {"disable_hiding": column.disableHiding || false};
columnDef.lockVisible = column.disableHiding;
columnDef.headerComponent = GridSettingHeader;
columnDef.headerTooltip = column.headerTooltip ? column.headerTooltip : column.displayName;
columnDef.suppressMenu = column.suppressHeaderMenu;
if (column.pinned) {
columnDef.pinned = column.pinned == PinnedType.LEFT ? 'left' : 'right';
}
columnDef['gridComp'] = this;
columnDef.sortable = column.sortable;
if (column.sortable == null) {
columnDef.sortable = true;
}
if (column.autoHeight) {
columnDef.autoHeight = column.autoHeight;
columnDef.cellClass = 'ag-grid-cell-wrap-text';
}
if (column.field) {
columnDef.field = column.field.column;
let type = column.field.type;
if (type != null) {
if (gridRef.floatingFilter && column.filter !== false) {
columnDef.floatingFilter = gridRef.floatingFilter;
columnDef.filter = GridColumnFilterUtils.columnFilter(type);
if (columnDef.filter === 'agDateColumnFilter') {
columnDef.filterParams = {
comparator: function (filterLocalDateAtMidnight, cellValue) {
if (!cellValue) {
return -1;
}
let filterMoment: Moment = moment.utc(filterLocalDateAtMidnight)
.add(-filterLocalDateAtMidnight.getTimezoneOffset(), 'm');
let cellMoment: Moment = DateTimeUtil.parseToMidnightUTC(cellValue);
if (filterMoment.isSame(cellMoment)) {
return 0;
}
if (cellMoment.isBefore(filterMoment)) {
return -1;
}
if (cellMoment.isAfter(filterMoment)) {
return 1;
}
},
browserDatePicker: true,
};
}
}
if (gridRef.getRowModelType() == "clientSide") {
columnDef.comparator = GridColumnComparatorUtils.columnComparator(type);
}
columnDef.valueFormatter = GridValueFormatterUtils.columnFormatter(type);
columnDef.cellRenderer = gridRef.createRenderer(column);
}
columnDef.suppressKeyboardEvent = (params: SuppressKeyboardEventParams) => {
return GridColumnKeyboardUtils.suppressHomeAndEndKeyboardEvent(params);
}
}
if (column.displayPopup) {
const renderer: ICellRendererFunc = columnDef.cellRenderer as ICellRendererFunc;
columnDef.cellRenderer = GridValueRendererUtils.tooltipValueRenderer(renderer);
}
else if (column.columnTooltip) {
columnDef.tooltipComponent = DefaultTooltip;
columnDef.tooltipValueGetter = GridCellTooltipUtils.fixedValueTooltip(column.columnTooltip);
}
else if (!gridRef.suppressColumnTooltip) {
columnDef.tooltipComponent = DefaultTooltip;
columnDef.tooltipValueGetter = GridCellTooltipUtils.defaultFormattedTooltip(
column.field ? column.field.type : null);
}
return columnDef;
}
}

View file

@ -0,0 +1,62 @@
import {NotNull, TextFormatter, Visible} from "@webbpm/base-package";
// A text formatter for integer values appending a prefix and/or suffix
// depending on the last digit of the value
export class NumberPrefixSuffixTextFormatter implements TextFormatter {
@NotNull()
public hasPrefix: boolean;
@Visible("hasPrefix == true")
@NotNull("hasPrefix == true")
public oneDigitPrefix: string;
@Visible("hasPrefix == true")
@NotNull("hasPrefix == true")
public otherDigitPrefix: string;
@NotNull()
public hasSuffix: boolean;
@Visible("hasSuffix == true")
@NotNull("hasSuffix == true")
public oneDigitSuffix: string;
@Visible("hasSuffix == true")
@NotNull("hasSuffix == true")
public fromTwoToFourDigitSuffix: string;
@Visible("hasSuffix == true")
@NotNull("hasSuffix == true")
public otherDigitSuffix: string;
private excludedNumbers: number[] = [11, 12, 13, 14];
format(value: string): string {
if (value) {
let number = Number.parseInt(value);
let lastDigit = Math.abs(number) % 10;
let lastDigits = Math.abs(number) % 100;
let prefix = "";
if (this.hasPrefix) {
prefix = (this.excludedNumbers.includes(lastDigits)
? this.otherDigitPrefix
: lastDigit == 1
? this.oneDigitPrefix
: this.otherDigitPrefix) + " ";
}
let suffix = "";
if (this.hasSuffix) {
suffix = " " + (this.excludedNumbers.includes(lastDigits)
? this.otherDigitSuffix
: lastDigit == 1
? this.oneDigitSuffix
: lastDigit > 1 && lastDigit < 5
? this.fromTwoToFourDigitSuffix
: this.otherDigitSuffix);
}
return prefix + value + suffix;
}
return value;
}
}

View file

@ -23,6 +23,7 @@ import {AppProgressIndicationService} from "./service/app-progress-indication.se
import {FileUploadModule} from "ng2-file-upload";
import {ErvuFileUpload} from "../../ervu/component/fileupload/ErvuFileUpload";
import {InMemoryStaticGrid} from "../../ervu/component/grid/InMemoryStaticGrid";
registerLocaleData(localeRu);
export const DIRECTIVES = [
@ -32,7 +33,8 @@ export const DIRECTIVES = [
forwardRef(() => LogOutComponent),
forwardRef(() => AccessDeniedComponent),
forwardRef(() => AppProgressIndicationComponent),
forwardRef(() => ErvuFileUpload)
forwardRef(() => ErvuFileUpload),
forwardRef(() => InMemoryStaticGrid)
];
@NgModule({

View file

@ -2,7 +2,7 @@
<xmlPage>
<id>filesentlog</id>
<versions>
<studioVersion>3.178.0</studioVersion>
<studioVersion>3.178.2</studioVersion>
<packageVersions>
<entry>
<key>ru.cg.webbpm.packages.base.resources</key>
@ -153,18 +153,112 @@
<scripts id="fe04d7fb-6c5b-46c4-b723-667732d81f4f"/>
<scripts id="5c566210-2a60-4048-a2d1-84c7dd023248"/>
<scripts id="3171b2e1-b4af-4335-95fa-1b2592604b84"/>
<children id="a107c5a0-5bc2-482f-b225-a20aaa4ab00c">
<children id="9b7c3369-e1fe-44f6-88f9-f8d9c83b30dc">
<prototypeId>312c9663-86b4-4672-97bd-67d313585c00</prototypeId>
<componentRootId>9b7c3369-e1fe-44f6-88f9-f8d9c83b30dc</componentRootId>
<name>кол-во hidden</name>
<container>false</container>
<childrenReordered>false</childrenReordered>
<scripts id="a6c37a96-2bfd-40f4-bd4a-a97c3443b9c0">
<properties>
<entry>
<key>collectible</key>
<value>
<simple>false</simple>
</value>
</entry>
<entry>
<key>initialValue</key>
<value>
<simple>0.0</simple>
</value>
</entry>
<entry>
<key>visible</key>
<value>
<simple>false</simple>
</value>
</entry>
</properties>
</scripts>
<scripts id="82c295cd-372d-4867-87b4-d6e22e3071e7"/>
<scripts id="9304bfac-45fd-43bc-96f6-a2414a59a2d7"/>
<scripts id="9bb9b2a8-7cd9-4926-a4ac-64ff03a32d45"/>
<scripts id="03f9d840-8262-4771-a9e2-9a9fc3504f8b">
<enabled>false</enabled>
</scripts>
</children>
<children id="7f891535-8dde-4e00-8064-584cad7ffcfd">
<prototypeId>ba24d307-0b91-4299-ba82-9d0b52384ff2</prototypeId>
<componentRootId>a107c5a0-5bc2-482f-b225-a20aaa4ab00c</componentRootId>
<name>Текст</name>
<componentRootId>7f891535-8dde-4e00-8064-584cad7ffcfd</componentRootId>
<name>кол-во текст</name>
<container>false</container>
<childrenReordered>false</childrenReordered>
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c">
<properties>
<entry>
<key>collectible</key>
<value>
<simple>false</simple>
</value>
</entry>
<entry>
<key>initialValue</key>
<value>
<simple>"Найдено 5 файлов"</simple>
<simple>null</simple>
</value>
</entry>
<entry>
<key>textFormatter</key>
<value>
<complex>
<entry>
<key>fromTwoToFourDigitSuffix</key>
<value>
<simple>"файла"</simple>
</value>
</entry>
<entry>
<key>hasPrefix</key>
<value>
<simple>true</simple>
</value>
</entry>
<entry>
<key>hasSuffix</key>
<value>
<simple>true</simple>
</value>
</entry>
<entry>
<key>oneDigitPrefix</key>
<value>
<simple>"Найден"</simple>
</value>
</entry>
<entry>
<key>oneDigitSuffix</key>
<value>
<simple>"файл"</simple>
</value>
</entry>
<entry>
<key>otherDigitPrefix</key>
<value>
<simple>"Найдено"</simple>
</value>
</entry>
<entry>
<key>otherDigitSuffix</key>
<value>
<simple>"файлов"</simple>
</value>
</entry>
</complex>
<implRef type="TS">
<className>NumberPrefixSuffixTextFormatter</className>
<packageName>ervu.component.text</packageName>
</implRef>
</value>
</entry>
</properties>
@ -256,7 +350,7 @@
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"7d63e0d5-c23d-4c32-8311-25b40e713c79","packageName":"component.grid","className":"GridV2","type":"TS"}</simple>
<simple>{"objectId":"bbaf33d7-0679-440b-a394-cb805ce80300","packageName":"ervu.component.grid","className":"InMemoryStaticGrid","type":"TS"}</simple>
</value>
</entry>
<entry>
@ -273,6 +367,210 @@
</entry>
</complex>
</value>
</item>
<item id="49aa58ad-614a-4cbb-9bc9-eed4cbe8b22f" removed="false">
<value>
<complex>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"9b7c3369-e1fe-44f6-88f9-f8d9c83b30dc","packageName":"component.field","className":"NumberField","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>method</key>
<value>
<simple>"setValue"</simple>
</value>
</entry>
<entry>
<key>value</key>
<value>
<complex>
<entry>
<key>objectValue</key>
<value>
<complex>
<entry>
<key>argument</key>
<value>
<simple>null</simple>
</value>
</entry>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"bbaf33d7-0679-440b-a394-cb805ce80300","packageName":"ervu.component.grid","className":"InMemoryStaticGrid","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>method</key>
<value>
<simple>"getRowDataSize"</simple>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</item>
<item id="206ab213-5d49-43d5-a825-d6534d934cd7" removed="true"/>
<item id="3cb96386-a113-4cab-8046-74fb91f49b89" removed="true"/>
</value>
</entry>
</properties>
</scripts>
</children>
<children id="7f600c0d-ad59-46ad-9aa8-037fdfaaac14">
<prototypeId>98594cec-0a9b-4cef-af09-e1b71cb2ad9e</prototypeId>
<componentRootId>7f600c0d-ad59-46ad-9aa8-037fdfaaac14</componentRootId>
<name>Action Controller</name>
<container>false</container>
<childrenReordered>false</childrenReordered>
<scripts id="37dff5c8-1599-4984-b107-c44a87b6da2e">
<properties>
<entry>
<key>eventRefs</key>
<value>
<item id="5c42b561-31e1-4b00-a4fb-66bb8005f574" removed="false">
<value>
<complex>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"bbaf33d7-0679-440b-a394-cb805ce80300","packageName":"ervu.component.grid","className":"InMemoryStaticGrid","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>propertyName</key>
<value>
<simple>"gridLoaded"</simple>
</value>
</entry>
</complex>
</value>
</item>
</value>
</entry>
<entry>
<key>ifCondition</key>
<value>
<complex>
<entry>
<key>logicalOperation</key>
<value>
<simple>null</simple>
</value>
</entry>
</complex>
</value>
</entry>
<entry>
<key>thenActions</key>
<value>
<item id="2a4b91ec-24a4-4cdd-93f2-e5f0052754f0" removed="false">
<value>
<complex>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"9b7c3369-e1fe-44f6-88f9-f8d9c83b30dc","packageName":"component.field","className":"NumberField","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>method</key>
<value>
<simple>"setValue"</simple>
</value>
</entry>
<entry>
<key>value</key>
<value>
<complex>
<entry>
<key>objectValue</key>
<value>
<complex>
<entry>
<key>argument</key>
<value>
<simple>null</simple>
</value>
</entry>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"bbaf33d7-0679-440b-a394-cb805ce80300","packageName":"ervu.component.grid","className":"InMemoryStaticGrid","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>method</key>
<value>
<simple>"getRowDataSize"</simple>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</item>
<item id="5ce9b480-f5b5-4510-8b40-f97ab3923cc1" removed="false">
<value>
<complex>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"7f891535-8dde-4e00-8064-584cad7ffcfd","packageName":"component","className":"Text","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>method</key>
<value>
<simple>"setValue"</simple>
</value>
</entry>
<entry>
<key>value</key>
<value>
<complex>
<entry>
<key>objectValue</key>
<value>
<complex>
<entry>
<key>argument</key>
<value>
<simple>null</simple>
</value>
</entry>
<entry>
<key>behavior</key>
<value>
<simple>{"objectId":"9b7c3369-e1fe-44f6-88f9-f8d9c83b30dc","packageName":"component.field","className":"NumberField","type":"TS"}</simple>
</value>
</entry>
<entry>
<key>method</key>
<value>
<simple>"getTextValue"</simple>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
</value>
</item>
</value>
</entry>
@ -285,57 +583,160 @@
<componentRootId>7d63e0d5-c23d-4c32-8311-25b40e713c79</componentRootId>
<name>Таблица</name>
<container>true</container>
<removed>true</removed>
</children>
<children id="bbaf33d7-0679-440b-a394-cb805ce80300">
<prototypeId>bee4e324-a660-4d99-bbc4-9fc2b084a5fc</prototypeId>
<componentRootId>bbaf33d7-0679-440b-a394-cb805ce80300</componentRootId>
<name>Таблица</name>
<container>true</container>
<childrenReordered>false</childrenReordered>
<scripts id="07201df9-ff33-4c71-9aae-a2cfdd028234">
<scripts id="fe8cfe1c-5381-411e-aee6-cf4b38fcea07">
<properties>
<entry>
<key>allowContextMenuWithControlKey</key>
<value>
<simple>null</simple>
</value>
</entry>
<entry>
<key>autoStretchColumns</key>
<value>
<simple>true</simple>
<simple>false</simple>
</value>
</entry>
<entry>
<key>floatingFilter</key>
<key>clientSideColumnFilters</key>
<value>
<simple>true</simple>
</value>
</entry>
</properties>
</scripts>
<scripts id="1996166f-7922-4f28-a571-9646d956ef37">
<properties>
<entry>
<key>gridService</key>
<key>enableCellTextSelection</key>
<value>
<complex>
<entry>
<key>loadDao</key>
<value>
<complex>
<entry>
<key>graph</key>
<value>
<simple>{"conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"nodeByIndex":{"0":{"tableName":"interaction_log","schemaName":"public","x":519.0,"y":269.0,"alias":"interaction_log","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"nodes":[{"tableName":"interaction_log","schemaName":"public","x":519.0,"y":269.0,"alias":"interaction_log","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}],"nodeByEntityName":{"interaction_log":{"tableName":"interaction_log","schemaName":"public","x":519.0,"y":269.0,"alias":"interaction_log","conditionGroup":{"operator":"AND","conditions":[],"groups":[]},"emptyEntityAction":"IGNORE_OR_DELETE"}},"matrix":[[null]],"mainNodeIndex":0}</simple>
</value>
</entry>
</complex>
</value>
</entry>
</complex>
<simple>null</simple>
</value>
</entry>
<entry>
<key>fetchSize</key>
<value>
<simple>20.0</simple>
</value>
</entry>
<entry>
<key>headerHeight</key>
<value>
<simple>40.0</simple>
</value>
</entry>
<entry>
<key>loadingOverlayMessage</key>
<value>
<simple>"Загрузка данных, пожалуйста, подождите."</simple>
</value>
</entry>
<entry>
<key>loadingOverlayType</key>
<value>
<simple>"PROGRESS_BAR"</simple>
</value>
</entry>
<entry>
<key>noRowsOverlayMessage</key>
<value>
<simple>"Данные отсутствуют"</simple>
</value>
</entry>
<entry>
<key>rowClickSelectionType</key>
<value>
<simple>"SINGLE_SELECT_CLICK"</simple>
</value>
</entry>
<entry>
<key>rowHeight</key>
<value>
<simple>40.0</simple>
</value>
</entry>
<entry>
<key>rowModelType</key>
<value>
<simple>"CLIENT_SIDE"</simple>
</value>
</entry>
<entry>
<key>showRowNumber</key>
<value>
<simple>null</simple>
</value>
</entry>
<entry>
<key>theme</key>
<value>
<simple>null</simple>
</value>
</entry>
</properties>
</scripts>
<scripts id="be8fe0e1-4909-4224-8664-be55168595c6"/>
<children id="e4763783-817a-4573-99b4-8921636e06fa">
<prototypeId>364c8faa-5e56-46cd-9203-d2ec6ef2dc74</prototypeId>
<componentRootId>e4763783-817a-4573-99b4-8921636e06fa</componentRootId>
<scripts id="f0a59cd9-acf8-4b1d-89fa-a5d618fc4664">
<classRef type="JAVA">
<className>InMemoryStaticGridRpcService</className>
<packageName>ru.micord.ervu.service.rpc</packageName>
</classRef>
<enabled>true</enabled>
<expanded>true</expanded>
<properties>
<entry>
<key>loadService</key>
<value>
<implRef type="JAVA">
<className>JournalInMemoryStaticGridLoadService</className>
<packageName>ru.micord.ervu.service.grid.impl</packageName>
</implRef>
</value>
</entry>
</properties>
</scripts>
<children id="9b895ce1-494f-4f2e-b87b-78d019fc3760">
<prototypeId>c556264f-221b-4af8-9e64-f380a67c41ec</prototypeId>
<componentRootId>9b895ce1-494f-4f2e-b87b-78d019fc3760</componentRootId>
<name>Дата и время направления</name>
<container>false</container>
<childrenReordered>false</childrenReordered>
<scripts id="9c5c7a86-dc40-4b30-a5a7-5e7b4c7ea1e1"/>
<scripts id="fd653fca-12f9-4e35-baa4-b6b5dd3f6d59">
<scripts id="9c5c7a86-dc40-4b30-a5a7-5e7b4c7ea1e1">
<properties>
<entry>
<key>valueFormatter</key>
<value>
<complex>
<entry>
<key>dateFormat</key>
<value>
<simple>"DD.MM.YYYY HH:mm:ss"</simple>
</value>
</entry>
</complex>
<implRef type="TS">
<className>DateTimeFormatter</className>
<packageName>component.grid.formatters</packageName>
</implRef>
</value>
</entry>
</properties>
</scripts>
<scripts id="0a01c185-920b-4328-a82d-277f917b185e">
<properties>
<entry>
<key>dataConverter</key>
<value>
<implRef type="JAVA">
<className>LocalDateTimeConverter</className>
<packageName>component.field.dataconvert</packageName>
</implRef>
</value>
</entry>
<entry>
<key>displayName</key>
<value>
@ -348,16 +749,23 @@
<simple>true</simple>
</value>
</entry>
<entry>
<key>displayType</key>
<value>
<simple>"ONE_COLUMN"</simple>
</value>
</entry>
<entry>
<key>field</key>
<value>
<simple>{"schema":"public","table":"interaction_log","entity":"interaction_log","name":"sent_date"}</simple>
<complex>
<entry>
<key>column</key>
<value>
<simple>"departureDateTime"</simple>
</value>
</entry>
<entry>
<key>type</key>
<value>
<simple>"java.sql.Timestamp"</simple>
</value>
</entry>
</complex>
</value>
</entry>
<entry>
@ -366,15 +774,6 @@
<simple>true</simple>
</value>
</entry>
<entry>
<key>formatter</key>
<value>
<implRef type="JAVA">
<className>DateTimeFormatter</className>
<packageName>custom.grid.formatter</packageName>
</implRef>
</value>
</entry>
<entry>
<key>sortable</key>
<value>
@ -384,14 +783,14 @@
</properties>
</scripts>
</children>
<children id="814aab37-ef69-435f-8e12-1ffe37f4a69f">
<prototypeId>364c8faa-5e56-46cd-9203-d2ec6ef2dc74</prototypeId>
<componentRootId>814aab37-ef69-435f-8e12-1ffe37f4a69f</componentRootId>
<children id="3669ef66-b471-47df-8e16-10e88c454e3f">
<prototypeId>c556264f-221b-4af8-9e64-f380a67c41ec</prototypeId>
<componentRootId>3669ef66-b471-47df-8e16-10e88c454e3f</componentRootId>
<name>Название файла</name>
<container>false</container>
<childrenReordered>false</childrenReordered>
<scripts id="9c5c7a86-dc40-4b30-a5a7-5e7b4c7ea1e1"/>
<scripts id="fd653fca-12f9-4e35-baa4-b6b5dd3f6d59">
<scripts id="0a01c185-920b-4328-a82d-277f917b185e">
<properties>
<entry>
<key>displayName</key>
@ -405,16 +804,23 @@
<simple>true</simple>
</value>
</entry>
<entry>
<key>displayType</key>
<value>
<simple>"ONE_COLUMN"</simple>
</value>
</entry>
<entry>
<key>field</key>
<value>
<simple>{"schema":"public","table":"interaction_log","entity":"interaction_log","name":"file_name"}</simple>
<complex>
<entry>
<key>column</key>
<value>
<simple>"fileName"</simple>
</value>
</entry>
<entry>
<key>type</key>
<value>
<simple>"java.lang.String"</simple>
</value>
</entry>
</complex>
</value>
</entry>
<entry>
@ -432,14 +838,14 @@
</properties>
</scripts>
</children>
<children id="4e56e660-7f83-449c-be6b-bf525aba1142">
<prototypeId>364c8faa-5e56-46cd-9203-d2ec6ef2dc74</prototypeId>
<componentRootId>4e56e660-7f83-449c-be6b-bf525aba1142</componentRootId>
<children id="831118a0-e3bd-49f1-b4b4-614ef50a4844">
<prototypeId>c556264f-221b-4af8-9e64-f380a67c41ec</prototypeId>
<componentRootId>831118a0-e3bd-49f1-b4b4-614ef50a4844</componentRootId>
<name>Форма</name>
<container>false</container>
<childrenReordered>false</childrenReordered>
<scripts id="9c5c7a86-dc40-4b30-a5a7-5e7b4c7ea1e1"/>
<scripts id="fd653fca-12f9-4e35-baa4-b6b5dd3f6d59">
<scripts id="0a01c185-920b-4328-a82d-277f917b185e">
<properties>
<entry>
<key>displayName</key>
@ -453,16 +859,23 @@
<simple>true</simple>
</value>
</entry>
<entry>
<key>displayType</key>
<value>
<simple>"ONE_COLUMN"</simple>
</value>
</entry>
<entry>
<key>field</key>
<value>
<simple>{"schema":"public","table":"interaction_log","entity":"interaction_log","name":"form"}</simple>
<complex>
<entry>
<key>column</key>
<value>
<simple>"filePatternCode"</simple>
</value>
</entry>
<entry>
<key>type</key>
<value>
<simple>"java.lang.Number"</simple>
</value>
</entry>
</complex>
</value>
</entry>
<entry>
@ -480,14 +893,14 @@
</properties>
</scripts>
</children>
<children id="b1bc7945-9748-4b15-8385-c9f1da337fac">
<prototypeId>364c8faa-5e56-46cd-9203-d2ec6ef2dc74</prototypeId>
<componentRootId>b1bc7945-9748-4b15-8385-c9f1da337fac</componentRootId>
<children id="7dee1f9d-62a2-4f85-b378-583665173ff2">
<prototypeId>c556264f-221b-4af8-9e64-f380a67c41ec</prototypeId>
<componentRootId>7dee1f9d-62a2-4f85-b378-583665173ff2</componentRootId>
<name>Отправитель</name>
<container>false</container>
<childrenReordered>false</childrenReordered>
<scripts id="9c5c7a86-dc40-4b30-a5a7-5e7b4c7ea1e1"/>
<scripts id="fd653fca-12f9-4e35-baa4-b6b5dd3f6d59">
<scripts id="0a01c185-920b-4328-a82d-277f917b185e">
<properties>
<entry>
<key>displayName</key>
@ -501,16 +914,23 @@
<simple>true</simple>
</value>
</entry>
<entry>
<key>displayType</key>
<value>
<simple>"ONE_COLUMN"</simple>
</value>
</entry>
<entry>
<key>field</key>
<value>
<simple>{"schema":"public","table":"interaction_log","entity":"interaction_log","name":"sender"}</simple>
<complex>
<entry>
<key>column</key>
<value>
<simple>"senderFio"</simple>
</value>
</entry>
<entry>
<key>type</key>
<value>
<simple>"java.lang.String"</simple>
</value>
</entry>
</complex>
</value>
</entry>
<entry>
@ -528,14 +948,14 @@
</properties>
</scripts>
</children>
<children id="321f142f-e9e0-436c-a41d-9fb7b06578f0">
<prototypeId>364c8faa-5e56-46cd-9203-d2ec6ef2dc74</prototypeId>
<componentRootId>321f142f-e9e0-436c-a41d-9fb7b06578f0</componentRootId>
<children id="203f9bef-fe65-434c-a2e5-3d05ddc7ed94">
<prototypeId>c556264f-221b-4af8-9e64-f380a67c41ec</prototypeId>
<componentRootId>203f9bef-fe65-434c-a2e5-3d05ddc7ed94</componentRootId>
<name>Статус</name>
<container>false</container>
<childrenReordered>false</childrenReordered>
<scripts id="9c5c7a86-dc40-4b30-a5a7-5e7b4c7ea1e1"/>
<scripts id="fd653fca-12f9-4e35-baa4-b6b5dd3f6d59">
<scripts id="0a01c185-920b-4328-a82d-277f917b185e">
<properties>
<entry>
<key>displayName</key>
@ -549,16 +969,23 @@
<simple>true</simple>
</value>
</entry>
<entry>
<key>displayType</key>
<value>
<simple>"ONE_COLUMN"</simple>
</value>
</entry>
<entry>
<key>field</key>
<value>
<simple>{"schema":"public","table":"interaction_log","entity":"interaction_log","name":"status"}</simple>
<complex>
<entry>
<key>column</key>
<value>
<simple>"status"</simple>
</value>
</entry>
<entry>
<key>type</key>
<value>
<simple>"java.lang.String"</simple>
</value>
</entry>
</complex>
</value>
</entry>
<entry>
@ -576,14 +1003,14 @@
</properties>
</scripts>
</children>
<children id="d8b5a9b1-fd07-41e6-b2d0-572d5f06de9a">
<prototypeId>364c8faa-5e56-46cd-9203-d2ec6ef2dc74</prototypeId>
<componentRootId>d8b5a9b1-fd07-41e6-b2d0-572d5f06de9a</componentRootId>
<children id="d3dcfb63-3b27-471d-b1dd-6bd2d3c5b80f">
<prototypeId>c556264f-221b-4af8-9e64-f380a67c41ec</prototypeId>
<componentRootId>d3dcfb63-3b27-471d-b1dd-6bd2d3c5b80f</componentRootId>
<name>Записей отправлено</name>
<container>false</container>
<childrenReordered>false</childrenReordered>
<scripts id="9c5c7a86-dc40-4b30-a5a7-5e7b4c7ea1e1"/>
<scripts id="fd653fca-12f9-4e35-baa4-b6b5dd3f6d59">
<scripts id="0a01c185-920b-4328-a82d-277f917b185e">
<properties>
<entry>
<key>displayName</key>
@ -597,16 +1024,23 @@
<simple>true</simple>
</value>
</entry>
<entry>
<key>displayType</key>
<value>
<simple>"ONE_COLUMN"</simple>
</value>
</entry>
<entry>
<key>field</key>
<value>
<simple>{"schema":"public","table":"interaction_log","entity":"interaction_log","name":"records_sent"}</simple>
<complex>
<entry>
<key>column</key>
<value>
<simple>"filesSentCount"</simple>
</value>
</entry>
<entry>
<key>type</key>
<value>
<simple>"java.lang.Number"</simple>
</value>
</entry>
</complex>
</value>
</entry>
<entry>
@ -624,14 +1058,14 @@
</properties>
</scripts>
</children>
<children id="5b6704c5-1e75-41a5-b61e-0facb663d032">
<prototypeId>364c8faa-5e56-46cd-9203-d2ec6ef2dc74</prototypeId>
<componentRootId>5b6704c5-1e75-41a5-b61e-0facb663d032</componentRootId>
<children id="4c070d5d-cac7-4cc4-8ee4-e9a4b9b289a5">
<prototypeId>c556264f-221b-4af8-9e64-f380a67c41ec</prototypeId>
<componentRootId>4c070d5d-cac7-4cc4-8ee4-e9a4b9b289a5</componentRootId>
<name>Записей принято</name>
<container>false</container>
<childrenReordered>false</childrenReordered>
<scripts id="9c5c7a86-dc40-4b30-a5a7-5e7b4c7ea1e1"/>
<scripts id="fd653fca-12f9-4e35-baa4-b6b5dd3f6d59">
<scripts id="0a01c185-920b-4328-a82d-277f917b185e">
<properties>
<entry>
<key>displayName</key>
@ -645,16 +1079,23 @@
<simple>true</simple>
</value>
</entry>
<entry>
<key>displayType</key>
<value>
<simple>"ONE_COLUMN"</simple>
</value>
</entry>
<entry>
<key>field</key>
<value>
<simple>{"schema":"public","table":"interaction_log","entity":"interaction_log","name":"records_accepted"}</simple>
<complex>
<entry>
<key>column</key>
<value>
<simple>"acceptedFilesCount"</simple>
</value>
</entry>
<entry>
<key>type</key>
<value>
<simple>"java.lang.Number"</simple>
</value>
</entry>
</complex>
</value>
</entry>
<entry>

View file

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xmlComponent>
<id>63a04163-fae6-49c4-aa1a-c028e7594640</id>
<name>InMemoryStaticGrid</name>
<category>grids</category>
<internal>false</internal>
<versions>
<studioVersion>3.178.2</studioVersion>
<packageVersions>
<entry>
<key>ru.cg.webbpm.packages.base.resources</key>
<value>3.178.2</value>
</entry>
</packageVersions>
</versions>
<rootObject id="bee4e324-a660-4d99-bbc4-9fc2b084a5fc">
<prototypeId>16071adb-3bdf-4c33-b29b-886876016415</prototypeId>
<componentRootId>bee4e324-a660-4d99-bbc4-9fc2b084a5fc</componentRootId>
<name>InMemoryStaticGrid</name>
<container>true</container>
<childrenReordered>false</childrenReordered>
<scripts id="07201df9-ff33-4c71-9aae-a2cfdd028234">
<enabled>false</enabled>
<removed>true</removed>
</scripts>
<scripts id="1996166f-7922-4f28-a571-9646d956ef37">
<enabled>false</enabled>
<removed>true</removed>
</scripts>
<scripts id="fe8cfe1c-5381-411e-aee6-cf4b38fcea07">
<classRef type="TS">
<className>InMemoryStaticGrid</className>
<packageName>ervu.component.grid</packageName>
</classRef>
<enabled>true</enabled>
<expanded>true</expanded>
<properties>
<entry>
<key>floatingFilter</key>
<value>
<simple>true</simple>
</value>
</entry>
<entry>
<key>visible</key>
<value>
<simple>true</simple>
</value>
</entry>
</properties>
</scripts>
<scripts id="be8fe0e1-4909-4224-8664-be55168595c6"/>
</rootObject>
</xmlComponent>

View file

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xmlComponent>
<id>d78a169c-8d7d-471a-bc80-909b617f85f0</id>
<name>StaticGridColumn</name>
<category>grids</category>
<internal>false</internal>
<versions>
<studioVersion>3.178.2</studioVersion>
<packageVersions>
<entry>
<key>ru.cg.webbpm.packages.base.resources</key>
<value>3.178.2</value>
</entry>
</packageVersions>
</versions>
<rootObject id="c556264f-221b-4af8-9e64-f380a67c41ec">
<prototypeId>364c8faa-5e56-46cd-9203-d2ec6ef2dc74</prototypeId>
<componentRootId>c556264f-221b-4af8-9e64-f380a67c41ec</componentRootId>
<name>StaticGridColumn</name>
<container>false</container>
<childrenReordered>false</childrenReordered>
<scripts id="9c5c7a86-dc40-4b30-a5a7-5e7b4c7ea1e1"/>
<scripts id="fd653fca-12f9-4e35-baa4-b6b5dd3f6d59">
<enabled>false</enabled>
<removed>true</removed>
</scripts>
<scripts id="0a01c185-920b-4328-a82d-277f917b185e">
<classRef type="JAVA">
<className>StaticGridColumn</className>
<packageName>ru.micord.ervu.property.grid</packageName>
</classRef>
<enabled>true</enabled>
<expanded>true</expanded>
</scripts>
</rootObject>
</xmlComponent>