Merge branch 'develop' into feature/SUPPORT-8458_file
# Conflicts: # backend/src/main/java/ru/micord/ervu/kafka/ReplyingKafkaConfig.java
This commit is contained in:
commit
6978ba3011
48 changed files with 10288 additions and 10174 deletions
|
|
@ -1,6 +1,7 @@
|
|||
import java.time.Duration;
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import liquibase.integration.spring.SpringLiquibase;
|
||||
import net.javacrumbs.shedlock.core.LockProvider;
|
||||
import net.javacrumbs.shedlock.provider.jdbctemplate.JdbcTemplateLockProvider;
|
||||
import net.javacrumbs.shedlock.spring.ScheduledLockConfiguration;
|
||||
|
|
@ -68,4 +69,12 @@ public class AppConfig {
|
|||
public LockProvider lockProvider(@Qualifier("datasource") DataSource dataSource) {
|
||||
return new JdbcTemplateLockProvider(dataSource);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public SpringLiquibase liquibase(@Qualifier("datasource") DataSource dataSource) {
|
||||
SpringLiquibase liquibase = new SpringLiquibase();
|
||||
liquibase.setDataSource(dataSource);
|
||||
liquibase.setChangeLog("classpath:config/changelog-master.xml");
|
||||
return liquibase;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,17 +19,17 @@ import org.springframework.kafka.core.ProducerFactory;
|
|||
*/
|
||||
@Configuration
|
||||
public class KafkaProducerConfig {
|
||||
@Value("${av-kafka.send.url}")
|
||||
@Value("${av.kafka.send.url}")
|
||||
private String kafkaUrl;
|
||||
@Value("${av-kafka.send.security.protocol}")
|
||||
@Value("${av.kafka.send.security.protocol}")
|
||||
private String securityProtocol;
|
||||
@Value("${av-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("${av-kafka.send.username}")
|
||||
@Value("${av.kafka.send.username}")
|
||||
private String username;
|
||||
@Value("${av-kafka.send.password}")
|
||||
@Value("${av.kafka.send.password}")
|
||||
private String password;
|
||||
@Value("${av-kafka.sasl.mechanism}")
|
||||
@Value("${av.kafka.sasl.mechanism}")
|
||||
private String saslMechanism;
|
||||
|
||||
@Bean("av-factory")
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ import org.springframework.stereotype.Component;
|
|||
@Component
|
||||
public class EsnsiOkopfClient {
|
||||
|
||||
@Value("${esnsi.okopf.url:#{null}}")
|
||||
@Value("${esnsi.okopf.url}")
|
||||
private String uri;
|
||||
|
||||
@Retryable(value = {TimeoutException.class}, backoff =
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
package ervu.service.fileupload;
|
||||
package ervu.model.fileupload;
|
||||
|
||||
/**
|
||||
* @author Alexandr Shalaginov
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package ervu.service.fileupload.model;
|
||||
package ervu.model.fileupload;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package ervu.service.fileupload.model;
|
||||
package ervu.model.fileupload;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package ervu.service.fileupload.model;
|
||||
package ervu.model.fileupload;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
|
@ -1,19 +1,21 @@
|
|||
package ervu.service.fileupload.model;
|
||||
package ervu.model.fileupload;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
import ru.micord.ervu.journal.SenderInfo;
|
||||
|
||||
/**
|
||||
* @author Alexandr Shalaginov
|
||||
*/
|
||||
public class OrgInfo {
|
||||
private final String orgName;
|
||||
private final String orgId;
|
||||
private final String prnOid;
|
||||
private final SenderInfo senderInfo;
|
||||
|
||||
public OrgInfo(String orgName, String orgId, String prnOid) {
|
||||
public OrgInfo(String orgName, String orgId, SenderInfo senderInfo) {
|
||||
this.orgName = orgName;
|
||||
this.orgId = orgId;
|
||||
this.prnOid = prnOid;
|
||||
this.senderInfo = senderInfo;
|
||||
}
|
||||
|
||||
public String getOrgName() {
|
||||
|
|
@ -24,8 +26,8 @@ public class OrgInfo {
|
|||
return orgId;
|
||||
}
|
||||
|
||||
public String getPrnOid() {
|
||||
return prnOid;
|
||||
public SenderInfo getPrnOid() {
|
||||
return senderInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -35,12 +37,12 @@ public class OrgInfo {
|
|||
OrgInfo orgInfo = (OrgInfo) o;
|
||||
return Objects.equals(orgName, orgInfo.orgName) && Objects.equals(orgId,
|
||||
orgInfo.orgId
|
||||
) && Objects.equals(prnOid, orgInfo.prnOid);
|
||||
) && Objects.equals(senderInfo, orgInfo.senderInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(orgName, orgId, prnOid);
|
||||
return Objects.hash(orgName, orgId, senderInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -48,7 +50,7 @@ public class OrgInfo {
|
|||
return "OrgInfo{" +
|
||||
"orgName='" + orgName + '\'' +
|
||||
", orgId='" + orgId + '\'' +
|
||||
", prnOid='" + prnOid + '\'' +
|
||||
", senderInfo='" + senderInfo + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
@ -9,8 +9,9 @@ import java.util.UUID;
|
|||
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 ervu.model.fileupload.EmployeeInfoFileFormType;
|
||||
import ervu.model.fileupload.EmployeeInfoKafkaMessage;
|
||||
import ervu.model.fileupload.FileStatus;
|
||||
import org.apache.kafka.clients.producer.ProducerRecord;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
|
@ -41,7 +42,7 @@ public class EmployeeInfoFileUploadService {
|
|||
private final UlDataService ulDataService;
|
||||
private final JwtTokenService jwtTokenService;
|
||||
|
||||
@Value("${av-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;
|
||||
|
|
@ -78,6 +79,10 @@ public class EmployeeInfoFileUploadService {
|
|||
String fileId = UUID.randomUUID().toString();
|
||||
String fileName = multipartFile.getOriginalFilename();
|
||||
EmployeeInfoFileFormType employeeInfoFileFormType = EmployeeInfoFileFormType.valueOf(formType);
|
||||
EmployeeModel employeeModel = ulDataService.getEmployeeModel(accessToken);
|
||||
PersonModel personModel = employeeModel.getPerson();
|
||||
Token token = jwtTokenService.getToken(authToken);
|
||||
String[] ids = token.getUserAccountId().split(":");
|
||||
String jsonMessage = getJsonKafkaMessage(
|
||||
employeeInfoKafkaMessageService.getKafkaMessage(
|
||||
fileId,
|
||||
|
|
@ -85,13 +90,14 @@ public class EmployeeInfoFileUploadService {
|
|||
fileName,
|
||||
employeeInfoFileFormType,
|
||||
departureDateTime,
|
||||
accessToken, authToken, timeZone, fileStatus
|
||||
)
|
||||
accessToken,
|
||||
timeZone,
|
||||
fileStatus,
|
||||
ids[1],
|
||||
ids[0],
|
||||
personModel
|
||||
)
|
||||
);
|
||||
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]);
|
||||
|
|
|
|||
|
|
@ -1,14 +1,15 @@
|
|||
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.model.fileupload.EmployeeInfoFileFormType;
|
||||
import ervu.model.fileupload.EmployeeInfoKafkaMessage;
|
||||
import ervu.model.fileupload.FileInfo;
|
||||
import ervu.model.fileupload.FileStatus;
|
||||
import ervu.model.fileupload.OrgInfo;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.micord.ervu.journal.SenderInfo;
|
||||
import ru.micord.ervu.security.esia.model.OrganizationModel;
|
||||
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;
|
||||
|
||||
/**
|
||||
* @author Alexandr Shalaginov
|
||||
|
|
@ -16,19 +17,17 @@ import ru.micord.ervu.security.webbpm.jwt.service.JwtTokenService;
|
|||
@Service
|
||||
public class EmployeeInfoKafkaMessageService {
|
||||
private final UlDataService ulDataService;
|
||||
private final JwtTokenService jwtTokenService;
|
||||
|
||||
|
||||
public EmployeeInfoKafkaMessageService(UlDataService ulDataService, JwtTokenService jwtTokenService) {
|
||||
public EmployeeInfoKafkaMessageService(UlDataService ulDataService) {
|
||||
this.ulDataService = ulDataService;
|
||||
this.jwtTokenService = jwtTokenService;
|
||||
}
|
||||
|
||||
public EmployeeInfoKafkaMessage getKafkaMessage(String fileId, String fileUrl, String fileName,
|
||||
EmployeeInfoFileFormType formType, String departureDateTime, String accessToken,
|
||||
String authToken, String timeZone, FileStatus fileStatus) {
|
||||
String timeZone, FileStatus fileStatus, String ervuId, String prnOid, PersonModel personModel) {
|
||||
return new EmployeeInfoKafkaMessage(
|
||||
getOrgInfo(accessToken, authToken),
|
||||
getOrgInfo(accessToken, ervuId, prnOid, personModel),
|
||||
getFileInfo(
|
||||
fileId,
|
||||
fileUrl,
|
||||
|
|
@ -56,10 +55,13 @@ public class EmployeeInfoKafkaMessageService {
|
|||
);
|
||||
}
|
||||
|
||||
private OrgInfo getOrgInfo(String accessToken, String authToken) {
|
||||
private OrgInfo getOrgInfo(String accessToken, String ervuId, String prnOid, PersonModel personModel) {
|
||||
OrganizationModel organizationModel = ulDataService.getOrganizationModel(accessToken);
|
||||
Token token = jwtTokenService.getToken(authToken);
|
||||
String[] ids = token.getUserAccountId().split(":");
|
||||
return new OrgInfo(organizationModel.getFullName(), ids[1], ids[0]);
|
||||
SenderInfo senderInfo = new SenderInfo();
|
||||
senderInfo.setFirstName(personModel.getFirstName());
|
||||
senderInfo.setLastName(personModel.getLastName());
|
||||
senderInfo.setMiddleName(personModel.getMiddleName());
|
||||
senderInfo.setPrnOid(prnOid);
|
||||
return new OrgInfo(organizationModel.getFullName(), ervuId, senderInfo);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
package ervu.service.okopf;
|
||||
|
||||
import ervu.dao.okopf.OkopfDao;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
|
@ -12,7 +10,6 @@ import org.springframework.transaction.annotation.Transactional;
|
|||
*/
|
||||
@Service
|
||||
public class OkopfServiceImpl implements OkopfService {
|
||||
private final static Logger logger = LoggerFactory.getLogger(OkopfServiceImpl.class);
|
||||
|
||||
@Autowired
|
||||
private OkopfDao okopfDao;
|
||||
|
|
|
|||
|
|
@ -1,20 +1,23 @@
|
|||
package ervu.service.scheduer;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import java.util.stream.Stream;
|
||||
import javax.annotation.PostConstruct;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import ervu.client.okopf.EsnsiOkopfClient;
|
||||
import ervu.dao.okopf.OkopfDao;
|
||||
import ervu.model.okopf.*;
|
||||
import ervu.model.okopf.OkopfAttributeValueModel;
|
||||
import ervu.model.okopf.OkopfDataModel;
|
||||
import ervu.model.okopf.OkopfModel;
|
||||
import ervu.model.okopf.OkopfOrgModel;
|
||||
import net.javacrumbs.shedlock.core.SchedulerLock;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.DependsOn;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
|
@ -23,6 +26,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|||
* @author Artyom Hackimullin
|
||||
*/
|
||||
@Service
|
||||
@DependsOn({"liquibase"})
|
||||
public class EsnsiOkopfSchedulerServiceImpl implements EsnsiOkopfSchedulerService {
|
||||
private static final Logger logger = LoggerFactory.getLogger(
|
||||
EsnsiOkopfSchedulerServiceImpl.class);
|
||||
|
|
@ -41,6 +45,7 @@ public class EsnsiOkopfSchedulerServiceImpl implements EsnsiOkopfSchedulerServic
|
|||
}
|
||||
|
||||
@Scheduled(cron = "${esnsi.okopf.cron:0 0 */1 * * *}")
|
||||
@SchedulerLock(name = "loadOkopf")
|
||||
@Transactional
|
||||
public void load() {
|
||||
String data = esnsiOkopfClient.getJsonOkopFormData();
|
||||
|
|
@ -58,14 +63,13 @@ public class EsnsiOkopfSchedulerServiceImpl implements EsnsiOkopfSchedulerServic
|
|||
}
|
||||
|
||||
private List<OkopfModel> mapToOkopfRecords(OkopfDataModel dataModel) {
|
||||
Map<String, String> okopfMap = new HashMap<>();
|
||||
for (OkopfDetailsModel detail : dataModel.getDetails()) {
|
||||
OkopfAttributeValueModel[] attributeValues = detail.getAttributeValues();
|
||||
String key = attributeValues[0].getValue();
|
||||
String value = attributeValues[1].getValue();
|
||||
okopfMap.put(key, value);
|
||||
}
|
||||
return okopfMap.entrySet().stream()
|
||||
.map(e -> new OkopfModel(e.getKey(), e.getValue())).collect(Collectors.toList());
|
||||
return Arrays.stream(dataModel.getDetails())
|
||||
.flatMap(detail -> {
|
||||
OkopfAttributeValueModel[] attributeValues = detail.getAttributeValues();
|
||||
String key = attributeValues[0].getValue();
|
||||
String value = attributeValues[1].getValue();
|
||||
return Stream.of(new OkopfModel(key, value));
|
||||
})
|
||||
.toList();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,27 +24,27 @@ import java.util.Map;
|
|||
@EnableKafka
|
||||
public class ReplyingKafkaConfig {
|
||||
|
||||
@Value("${ervu-kafka.bootstrap-servers}")
|
||||
@Value("${ervu.kafka.bootstrap.servers}")
|
||||
private String bootstrapServers;
|
||||
@Value("${ervu-kafka.org-reply-topic}")
|
||||
@Value("${ervu.kafka.org.reply.topic}")
|
||||
private String orgReplyTopic;
|
||||
@Value("${ervu-kafka.journal-reply-topic}")
|
||||
@Value("${ervu.kafka.journal.reply.topic}")
|
||||
private String journalReplyTopic;
|
||||
@Value("${ervu-kafka.group-id}")
|
||||
@Value("${ervu.kafka.group.id}")
|
||||
private String groupId;
|
||||
@Value("${ervu-kafka.reply-timeout:30}")
|
||||
@Value("${ervu.kafka.reply.timeout:30}")
|
||||
private long replyTimeout;
|
||||
@Value("${ervu-kafka.excerpt-reply-topic}")
|
||||
private String excerptReplyTopic;
|
||||
@Value("${ervu-kafka.send.security.protocol}")
|
||||
@Value("${ervu.kafka.send.security.protocol}")
|
||||
private String securityProtocol;
|
||||
@Value("${ervu-kafka.send.login.module:org.apache.kafka.common.security.scram.ScramLoginModule}")
|
||||
@Value("${ervu.kafka.send.login.module:org.apache.kafka.common.security.scram.ScramLoginModule}")
|
||||
private String loginModule;
|
||||
@Value("${ervu-kafka.send.username}")
|
||||
@Value("${ervu.kafka.send.username}")
|
||||
private String username;
|
||||
@Value("${ervu-kafka.send.password}")
|
||||
@Value("${ervu.kafka.send.password}")
|
||||
private String password;
|
||||
@Value("${ervu-kafka.sasl.mechanism}")
|
||||
@Value("${ervu.kafka.sasl.mechanism}")
|
||||
private String saslMechanism;
|
||||
|
||||
@Bean("ervu")
|
||||
|
|
|
|||
|
|
@ -11,43 +11,43 @@ import org.springframework.stereotype.Component;
|
|||
@Component
|
||||
public class EsiaConfig {
|
||||
|
||||
@Value("${esia-scopes:#{null}}")
|
||||
@Value("${esia.scopes}")
|
||||
private String esiaScopes;
|
||||
|
||||
@Value("${esia-org-scopes:#{null}}")
|
||||
@Value("${esia.org.scopes}")
|
||||
private String esiaOrgScopes;
|
||||
|
||||
@Value("${esia-org-scope-url:#{null}}")
|
||||
@Value("${esia.org.scope.url}")
|
||||
private String orgScopeUrl;
|
||||
|
||||
@Value("${esia-uri.base-uri:#{null}}")
|
||||
@Value("${esia.base.uri}")
|
||||
private String esiaBaseUri;
|
||||
|
||||
@Value("${esia-client-id:#{null}}")
|
||||
@Value("${esia.client.id}")
|
||||
private String clientId;
|
||||
|
||||
@Value("${esia-redirect-url:#{null}}")
|
||||
@Value("${esia.redirect.url}")
|
||||
private String redirectUrl;
|
||||
|
||||
@Value("${sign-url:#{null}}")
|
||||
@Value("${sign.url}")
|
||||
private String signUrl;
|
||||
|
||||
@Value("${client-cert-hash:#{null}}")
|
||||
@Value("${esia.client.cert.hash}")
|
||||
private String clientCertHash;
|
||||
|
||||
@Value("${esia.request-timeout:60}")
|
||||
@Value("${esia.request.timeout:60}")
|
||||
private long requestTimeout;
|
||||
|
||||
@Value("${esia.connection-timeout:30}")
|
||||
@Value("${esia.connection.timeout:30}")
|
||||
private long connectionTimeout;
|
||||
|
||||
@Value("${esia.logout-url:idp/ext/Logout}")
|
||||
@Value("${esia.logout.url:idp/ext/Logout}")
|
||||
private String esiaLogoutUrl;
|
||||
|
||||
@Value("${esia.code-url:aas/oauth2/v2/ac}")
|
||||
@Value("${esia.code.url:aas/oauth2/v2/ac}")
|
||||
private String esiaCodeUrl;
|
||||
|
||||
@Value("${esia.token-url:aas/oauth2/v3/te}")
|
||||
@Value("${esia.token.url:aas/oauth2/v3/te}")
|
||||
private String esiaTokenUrl;
|
||||
|
||||
public String getEsiaOrgScopes() {
|
||||
|
|
|
|||
|
|
@ -72,10 +72,10 @@ public class EsiaAuthService {
|
|||
@Autowired
|
||||
private OkopfService okopfService;
|
||||
|
||||
@Value("${ervu-kafka.org-reply-topic}")
|
||||
@Value("${ervu.kafka.org.reply.topic}")
|
||||
private String requestReplyTopic;
|
||||
|
||||
@Value("${ervu-kafka.org-request-topic}")
|
||||
@Value("${ervu.kafka.org.request.topic}")
|
||||
private String requestTopic;
|
||||
|
||||
public String generateAuthCodeUrl() {
|
||||
|
|
|
|||
|
|
@ -31,11 +31,11 @@ public class JournalInMemoryStaticGridLoadService implements
|
|||
private final ReplyingKafkaService ervuReplyingKafkaService;
|
||||
private final ObjectMapper objectMapper;
|
||||
|
||||
@Value("${ervu-kafka.journal-request-topic}")
|
||||
@Value("${ervu.kafka.journal.request.topic}")
|
||||
private String requestTopic;
|
||||
@Value("${ervu-kafka.journal-reply-topic}")
|
||||
@Value("${ervu.kafka.journal.reply.topic}")
|
||||
private String replyTopic;
|
||||
@Value("${db-journal-excluded-statuses:}")
|
||||
@Value("${db.journal.excluded.statuses:}")
|
||||
private String[] excludedStatuses;
|
||||
|
||||
public JournalInMemoryStaticGridLoadService(JwtTokenService jwtTokenService,
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
<constraints primaryKey="true"/>
|
||||
</column>
|
||||
<column name="name" type="varchar">
|
||||
<constraints unique="true"/>
|
||||
<constraints unique="true" nullable="false"/>
|
||||
</column>
|
||||
<column name="version" type="int">
|
||||
<constraints nullable="false"/>
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd">
|
||||
|
||||
<changeSet id="create-table-shedlock" author="a.khakimullin">
|
||||
<comment>add table for jobs sync by locking</comment>
|
||||
<createTable tableName="shedlock">
|
||||
<column name="name" type="varchar(255)">
|
||||
<constraints primaryKey="true" primaryKeyName="shedlock_pk"/>
|
||||
</column>
|
||||
<column name="lock_until" type="timestamp without time zone"/>
|
||||
<column name="locked_at" type="timestamp without time zone"/>
|
||||
<column name="locked_by" type="varchar(255)"/>
|
||||
</createTable>
|
||||
</changeSet>
|
||||
</databaseChangeLog>
|
||||
|
|
@ -5,7 +5,8 @@
|
|||
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
|
||||
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd">
|
||||
|
||||
<include file="2024-29-08--01-create-table-okopf-records.xml" relativeToChangelogFile="true"/>
|
||||
<include file="2024-08-29--01-create-table-okopf-records.xml" relativeToChangelogFile="true"/>
|
||||
<include file="2024-09-11--01-create-table-interaction-log.xml" relativeToChangelogFile="true"/>
|
||||
<include file="2024-09-18--02-add-shedlock-table.xml" relativeToChangelogFile="true"/>
|
||||
|
||||
</databaseChangeLog>
|
||||
3
backend/src/main/resources/create-database.sql
Normal file
3
backend/src/main/resources/create-database.sql
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
CREATE DATABASE "ervu-lkrp-ul"
|
||||
WITH
|
||||
OWNER = "ervu-lkrp-ul";
|
||||
8
backend/src/main/resources/create-role.sql
Normal file
8
backend/src/main/resources/create-role.sql
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
CREATE ROLE "ervu-lkrp-ul" WITH
|
||||
LOGIN
|
||||
NOSUPERUSER
|
||||
INHERIT
|
||||
NOCREATEDB
|
||||
NOCREATEROLE
|
||||
NOREPLICATION
|
||||
PASSWORD 'ervu-lkrp-ul';
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
ARG BUILDER_IMAGE=registry.altlinux.org/basealt/altsp:c10f1
|
||||
ARG RUNTIME_IMAGE=repo.micord.ru/alt/alt-tomcat:c10f1-9.0.59-20240903
|
||||
ARG RUNTIME_IMAGE=repo.micord.ru/alt/alt-tomcat:c10f1-9.0.59-20240917
|
||||
|
||||
FROM $BUILDER_IMAGE AS builder
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
ARG BUILDER_IMAGE=registry.altlinux.org/basealt/altsp:c10f1
|
||||
ARG RUNTIME_IMAGE=docker.angie.software/angie:latest
|
||||
ARG RUNTIME_IMAGE=nginx:1.24-alpine-slim
|
||||
|
||||
FROM $BUILDER_IMAGE AS builder
|
||||
|
||||
|
|
@ -25,5 +25,5 @@ RUN mkdir -p $HOME/.m2 \
|
|||
|
||||
FROM $RUNTIME_IMAGE
|
||||
|
||||
COPY config/angie.conf /etc/angie/angie.conf
|
||||
COPY config/nginx.conf /etc/nginx/nginx.conf
|
||||
COPY --from=builder /app/frontend/dist /frontend
|
||||
|
|
|
|||
|
|
@ -5,3 +5,38 @@ DB_APP_PASSWORD=ervu-lkrp-ul
|
|||
DB_APP_HOST=10.10.31.119
|
||||
DB_APP_PORT=5432
|
||||
DB_APP_NAME=ervu-lkrp-ul
|
||||
|
||||
FILE_WEBDAV_UPLOAD_URL=https://ervu-webdav.k8s.micord.ru
|
||||
FILE_WEBDAV_UPLOAD_USERNAME=test
|
||||
FILE_WEBDAV_UPLOAD_PASSWORD=test
|
||||
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
|
||||
|
||||
ESIA_SCOPES=fullname, snils, id_doc, birthdate, usr_org, openid
|
||||
ESIA_ORG_SCOPES=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
|
||||
ESIA_ORG_SCOPE_URL=http://esia.gosuslugi.ru/
|
||||
ESIA_BASE_URI=https://esia-portal1.test.gosuslugi.ru/
|
||||
ESIA_CLIENT_ID=MNSV89
|
||||
ESIA_REDIRECT_URL=https://lkrp-dev.micord.ru/ul/
|
||||
SIGN_URL=https://ervu-sign-dev.k8s.micord.ru/sign
|
||||
ESIA_CLIENT_CERT_HASH=04508B4B0B58776A954A0E15F574B4E58799D74C61EE020B3330716C203E3BDD
|
||||
ERVU_KAFKA_BOOTSTRAP_SERVERS=localhost:9092
|
||||
ERVU_KAFKA_ORG_REPLY_TOPIC=ervu.organization.response
|
||||
ERVU_KAFKA_GROUP_ID=1
|
||||
ERVU_KAFKA_ORG_REQUEST_TOPIC=ervu.organization.request
|
||||
ERVU_KAFKA_REPLY_TIMEOUT=30
|
||||
ERVU_KAFKA_JOURNAL_REQUEST_TOPIC=ervu.organization.journal.request
|
||||
ERVU_KAFKA_JOURNAL_REPLY_TOPIC=ervu.organization.journal.response
|
||||
ESNSI_OKOPF_URL=https://esnsi.gosuslugi.ru/rest/ext/v1/classifiers/11465/file?extension=JSON&encoding=UTF_8
|
||||
ESNSI_OKOPF_CRON_LOAD=0 0 */1 * * *
|
||||
ERVU_KAFKA_SEND_SECURITY_PROTOCOL=SASL_PLAINTEXT
|
||||
ERVU_KAFKA_SASL_MECHANISM=SCRAM-SHA-256
|
||||
ERVU_KAFKA_SEND_USERNAME=user1
|
||||
ERVU_KAFKA_SEND_PASSWORD=Blfi9d2OFG
|
||||
|
|
|
|||
84
config/nginx.conf
Normal file
84
config/nginx.conf
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
include /etc/nginx/modules-enabled.d/*.conf;
|
||||
|
||||
worker_processes 10;
|
||||
|
||||
error_log /var/log/nginx/error.log;
|
||||
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
include /etc/nginx/conf-enabled.d/*.conf;
|
||||
|
||||
http {
|
||||
include /etc/nginx/mime.types;
|
||||
default_type application/octet-stream;
|
||||
|
||||
sendfile on;
|
||||
|
||||
gzip on;
|
||||
|
||||
# text/html doesn't need to be defined there, it's compressed always
|
||||
gzip_types text/plain text/css text/xml application/x-javascript application/atom+xml;
|
||||
|
||||
# gzip_comp_level 9;
|
||||
include /etc/nginx/sites-enabled.d/*.conf;
|
||||
|
||||
log_format nginx_main
|
||||
'$remote_addr - $remote_user [$time_local] $request '
|
||||
'"$status" $body_bytes_sent "$http_referer" '
|
||||
'"$http_user_agent" "$http_x_forwarded_for" '
|
||||
'"$request_filename" "$gzip_ratio" $upstream_response_time server: $host : $document_root $fastcgi_script_name ';
|
||||
|
||||
server {
|
||||
listen 80 default;
|
||||
|
||||
access_log /var/log/nginx/access.log nginx_main;
|
||||
error_log /var/log/nginx/error.log error;
|
||||
|
||||
charset utf-8;
|
||||
|
||||
client_max_body_size 32m;
|
||||
|
||||
##
|
||||
# `gzip` Settings
|
||||
#
|
||||
#
|
||||
gzip on;
|
||||
gzip_disable "msie6";
|
||||
|
||||
gzip_vary on;
|
||||
gzip_proxied any;
|
||||
gzip_comp_level 6;
|
||||
gzip_buffers 16 8k;
|
||||
gzip_http_version 1.1;
|
||||
gzip_min_length 256;
|
||||
gzip_types
|
||||
application/atom+xml
|
||||
application/geo+json
|
||||
application/javascript
|
||||
application/x-javascript
|
||||
application/json
|
||||
application/ld+json
|
||||
application/manifest+json
|
||||
application/rdf+xml
|
||||
application/rss+xml
|
||||
application/xhtml+xml
|
||||
application/xml
|
||||
font/eot
|
||||
font/otf
|
||||
font/ttf
|
||||
image/svg+xml
|
||||
text/css
|
||||
text/javascript
|
||||
text/plain
|
||||
text/xml;
|
||||
|
||||
location / {
|
||||
root /frontend;
|
||||
index index.html;
|
||||
expires -1;
|
||||
try_files $uri $uri/ $uri/index.html;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -57,37 +57,37 @@
|
|||
<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="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="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"/>
|
||||
<property name="esia-scopes" value="fullname, snils, id_doc, birthdate, usr_org, openid"/>
|
||||
<property name="esia-org-scopes" value="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"/>
|
||||
<property name="esia-org-scope-url" value="http://esia.gosuslugi.ru/"/>
|
||||
<property name="esia-uri.base-uri" value="https://esia-portal1.test.gosuslugi.ru/"/>
|
||||
<property name="esia-client-id" value="MNSV89"/>
|
||||
<property name="esia-redirect-url" value="https://lkrp.micord.ru"/>
|
||||
<property name="sign-url" value="https://ervu-sign-dev.k8s.micord.ru/sign"/>
|
||||
<property name="ervu-kafka.bootstrap-servers" value="localhost:9092"/>
|
||||
<property name="ervu-kafka.org-reply-topic" value="ervu.organization.response"/>
|
||||
<property name="ervu-kafka.group-id" value="1"/>
|
||||
<property name="ervu-kafka.org-request-topic" value="ervu.organization.request"/>
|
||||
<property name="ervu-kafka.reply-timeout" value="30"/>
|
||||
<property name="client-cert-hash" value="04508B4B0B58776A954A0E15F574B4E58799D74C61EE020B3330716C203E3BDD"/>
|
||||
<property name="esia.scopes" value="fullname, snils, id_doc, birthdate, usr_org, openid"/>
|
||||
<property name="esia.org.scopes" value="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"/>
|
||||
<property name="esia.org.scope.url" value="http://esia.gosuslugi.ru/"/>
|
||||
<property name="esia.base.uri" value="https://esia-portal1.test.gosuslugi.ru/"/>
|
||||
<property name="esia.client.id" value="MNSV89"/>
|
||||
<property name="esia.redirect.url" value="https://lkrp.micord.ru"/>
|
||||
<property name="sign.url" value="https://ervu-sign-dev.k8s.micord.ru/sign"/>
|
||||
<property name="ervu.kafka.bootstrap.servers" value="localhost:9092"/>
|
||||
<property name="ervu.kafka.org.reply.topic" value="ervu.organization.response"/>
|
||||
<property name="ervu.kafka.group.id" value="1"/>
|
||||
<property name="ervu.kafka.org.request.topic" value="ervu.organization.request"/>
|
||||
<property name="ervu.kafka.reply.timeout" value="30"/>
|
||||
<property name="esia.client.cert.hash" value="04508B4B0B58776A954A0E15F574B4E58799D74C61EE020B3330716C203E3BDD"/>
|
||||
<property name="bpmn.enable" value="false"/>
|
||||
<property name="ervu-kafka.send.security.protocol" value="SASL_PLAINTEXT"/>
|
||||
<property name="ervu-kafka.sasl.mechanism" value="SCRAM-SHA-256"/>
|
||||
<property name="ervu-kafka.send.username" value="user1"/>
|
||||
<property name="ervu-kafka.send.password" value="Blfi9d2OFG"/>
|
||||
<property name="ervu.kafka.send.security.protocol" value="SASL_PLAINTEXT"/>
|
||||
<property name="ervu.kafka.sasl.mechanism" value="SCRAM-SHA-256"/>
|
||||
<property name="ervu.kafka.send.username" value="user1"/>
|
||||
<property name="ervu.kafka.send.password" value="Blfi9d2OFG"/>
|
||||
<property name="esnsi.okopf.cron.load" value="0 0 */1 * * *"/>
|
||||
<property name="esnsi.okopf.url" value="https://esnsi.gosuslugi.ru/rest/ext/v1/classifiers/11465/file?extension=JSON&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"/>
|
||||
<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>
|
||||
|
|
|
|||
|
|
@ -16,39 +16,3 @@ webbpm.mode=production
|
|||
webbpm.jbpm.hibernate_statistics.enabled=false
|
||||
webbpm.cache.hazelcast.hosts=127.0.0.1
|
||||
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
|
||||
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
|
||||
|
||||
esia-scopes=fullname, snils, id_doc, birthdate, usr_org, openid
|
||||
esia-org-scopes=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
|
||||
esia-org-scope-url=http://esia.gosuslugi.ru/
|
||||
esia-uri.base-uri=https://esia-portal1.test.gosuslugi.ru/
|
||||
esia-client-id=MNSV89
|
||||
esia-redirect-url=https://lkrp-dev.micord.ru/ul/
|
||||
sign-url=https://ervu-sign-dev.k8s.micord.ru/sign
|
||||
client-cert-hash=04508B4B0B58776A954A0E15F574B4E58799D74C61EE020B3330716C203E3BDD
|
||||
ervu-kafka.bootstrap-servers=localhost:9092
|
||||
ervu-kafka.org-reply-topic=ervu.organization.response
|
||||
ervu-kafka.group-id=1
|
||||
ervu-kafka.org-request-topic=ervu.organization.request
|
||||
ervu-kafka.reply-timeout=30
|
||||
ervu-kafka.journal-request-topic=ervu.organization.journal.request
|
||||
ervu-kafka.journal-reply-topic=ervu.organization.journal.response
|
||||
esnsi.okopf.url=https://esnsi.gosuslugi.ru/rest/ext/v1/classifiers/11465/file?extension=JSON&encoding=UTF_8
|
||||
esnsi.okopf.cron.load=0 0 */1 * * *
|
||||
ervu-kafka.send.security.protocol=SASL_PLAINTEXT
|
||||
ervu-kafka.sasl.mechanism=SCRAM-SHA-256
|
||||
ervu-kafka.send.username=user1
|
||||
ervu-kafka.send.password=Blfi9d2OFG
|
||||
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
|
@ -401,7 +401,6 @@
|
|||
<componentRootId>a6c5ce4e-9773-45ee-9153-9cd79ef13a97</componentRootId>
|
||||
<name>Hbox_9</name>
|
||||
<container>true</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
|
||||
<properties>
|
||||
|
|
@ -547,7 +546,6 @@
|
|||
<componentRootId>ea3e7a6d-e69c-4ef0-8a80-d8fd038a8c1e</componentRootId>
|
||||
<name>Hbox_9_</name>
|
||||
<container>true</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
|
||||
<properties>
|
||||
|
|
@ -772,7 +770,6 @@
|
|||
<componentRootId>1a3543a3-3797-4d65-8319-d88e8ccd34e1</componentRootId>
|
||||
<name>Диалог - выбор файла и отправка</name>
|
||||
<container>true</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c">
|
||||
<properties>
|
||||
|
|
@ -1163,7 +1160,7 @@
|
|||
<entry>
|
||||
<key>htmlAsString</key>
|
||||
<value>
|
||||
<simple>"\u003ca class\u003d\"link\" href\u003d\"doc/Прил.9_Прием(зачисление)_увольнение(отчисление).xlsx\"\u003eПример заполнения формы (xlsx)\u003c/a\u003e"</simple>
|
||||
<simple>"\u003ca class\u003d\"link\" href\u003d\"doc/example/Прил.9_Прием(зачисление)_увольнение(отчисление).xlsx\"\u003eПример заполнения формы (xlsx)\u003c/a\u003e"</simple>
|
||||
</value>
|
||||
</entry>
|
||||
<entry>
|
||||
|
|
@ -1186,7 +1183,7 @@
|
|||
<entry>
|
||||
<key>htmlAsString</key>
|
||||
<value>
|
||||
<simple>"\u003ca class\u003d\"link\" href\u003d\"doc/Прил.9_Прием(зачисление)_увольнение(отчисление).csv\"\u003eПример заполнения формы (csv)\u003c/a\u003e"</simple>
|
||||
<simple>"\u003ca class\u003d\"link\" href\u003d\"doc/example/Прил.9_Прием(зачисление)_увольнение(отчисление).csv\"\u003eПример заполнения формы (csv)\u003c/a\u003e"</simple>
|
||||
</value>
|
||||
</entry>
|
||||
<entry>
|
||||
|
|
@ -2468,7 +2465,6 @@
|
|||
<componentRootId>be4863fe-d25f-4965-ae52-8552ab5e8cf9</componentRootId>
|
||||
<name>Hbox_2</name>
|
||||
<container>true</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
|
||||
<properties>
|
||||
|
|
@ -2620,7 +2616,6 @@
|
|||
<componentRootId>52b1c7dd-7763-4f50-84ed-0471a83dd0b4</componentRootId>
|
||||
<name>Hbox_2_</name>
|
||||
<container>true</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
|
||||
<properties>
|
||||
|
|
@ -2810,7 +2805,6 @@
|
|||
<componentRootId>921014e5-1420-4aae-8cba-119dbb4459c7</componentRootId>
|
||||
<name>Диалог - выбор файла и отправка</name>
|
||||
<container>true</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c">
|
||||
<properties>
|
||||
|
|
@ -3201,7 +3195,7 @@
|
|||
<entry>
|
||||
<key>htmlAsString</key>
|
||||
<value>
|
||||
<simple>"\u003ca class\u003d\"link\" href\u003d\"doc/example/Прил.13_Внесение_изменений.xlsx\"\u003eПример заполнения формы (xlsx)\u003c/a\u003e"</simple>
|
||||
<simple>"\u003ca class\u003d\"link\" href\u003d\"doc/example/Прил.2_Внесение_изменений.xlsx\"\u003eПример заполнения формы (xlsx)\u003c/a\u003e"</simple>
|
||||
</value>
|
||||
</entry>
|
||||
<entry>
|
||||
|
|
@ -3224,7 +3218,7 @@
|
|||
<entry>
|
||||
<key>htmlAsString</key>
|
||||
<value>
|
||||
<simple>"\u003ca class\u003d\"link\" href\u003d\"doc/example/Прил.13_Внесение_изменений.csv\"\u003eПример заполнения формы (csv)\u003c/a\u003e"</simple>
|
||||
<simple>"\u003ca class\u003d\"link\" href\u003d\"doc/example/Прил.2_Внесение_изменений.csv\"\u003eПример заполнения формы (csv)\u003c/a\u003e"</simple>
|
||||
</value>
|
||||
</entry>
|
||||
<entry>
|
||||
|
|
@ -4506,7 +4500,6 @@
|
|||
<componentRootId>47a51ceb-a4db-4caf-a234-4389e2456f66</componentRootId>
|
||||
<name>Hbox_10</name>
|
||||
<container>true</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
|
||||
<properties>
|
||||
|
|
@ -4651,7 +4644,6 @@
|
|||
<componentRootId>fb8317a8-f9ed-4da3-8018-be3d8efbc469</componentRootId>
|
||||
<name>Hbox_10_</name>
|
||||
<container>true</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
|
||||
<properties>
|
||||
|
|
@ -4789,7 +4781,6 @@
|
|||
<componentRootId>89fcffd4-3cf5-4c26-9b49-f8a366aa6f27</componentRootId>
|
||||
<name>Диалог - выбор файла и отправка</name>
|
||||
<container>true</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c">
|
||||
<properties>
|
||||
|
|
@ -6540,7 +6531,6 @@
|
|||
<componentRootId>87d2523e-91a0-49ef-9f87-2adc4ff1165a</componentRootId>
|
||||
<name>Hbox_11</name>
|
||||
<container>true</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
|
||||
<properties>
|
||||
|
|
@ -6685,7 +6675,6 @@
|
|||
<componentRootId>a072a677-36d0-4616-a0bd-3541ebae45c8</componentRootId>
|
||||
<name>Hbox_11_</name>
|
||||
<container>true</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
|
||||
<properties>
|
||||
|
|
@ -6876,7 +6865,6 @@
|
|||
<componentRootId>55c1ec96-9697-4547-a00d-e451c683f6d7</componentRootId>
|
||||
<name>Диалог - выбор файла и отправка</name>
|
||||
<container>true</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c">
|
||||
<properties>
|
||||
|
|
@ -8572,7 +8560,6 @@
|
|||
<componentRootId>025b7644-c658-49b2-a740-188668b8b81e</componentRootId>
|
||||
<name>Hbox_12</name>
|
||||
<container>true</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
|
||||
<properties>
|
||||
|
|
@ -8717,7 +8704,6 @@
|
|||
<componentRootId>7be4de32-b967-4629-9801-425457e4b9c5</componentRootId>
|
||||
<name>Hbox_12_</name>
|
||||
<container>true</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="bf098f19-480e-44e4-9084-aa42955c4d0f">
|
||||
<properties>
|
||||
|
|
@ -8908,7 +8894,6 @@
|
|||
<componentRootId>b8b9ed07-04e0-47ca-9820-671145d744da</componentRootId>
|
||||
<name>Диалог - выбор файла и отправка</name>
|
||||
<container>true</container>
|
||||
<expanded>false</expanded>
|
||||
<childrenReordered>false</childrenReordered>
|
||||
<scripts id="cf4526a1-96ab-4820-8aa9-62fb54c2b64c">
|
||||
<properties>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue