Merge branch 'SUPPORT-8943_seamlessness' of 10.10.31.70:/ervu-account-applications into SUPPORT-8943_seamlessness
This commit is contained in:
commit
84585e9965
160 changed files with 952 additions and 371 deletions
|
|
@ -224,6 +224,10 @@
|
|||
<groupId>org.hibernate.validator</groupId>
|
||||
<artifactId>hibernate-validator</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.retry</groupId>
|
||||
<artifactId>spring-retry</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<finalName>${project.parent.artifactId}</finalName>
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import org.springframework.context.annotation.Configuration;
|
|||
import org.springframework.context.annotation.EnableAspectJAutoProxy;
|
||||
import org.springframework.context.annotation.FilterType;
|
||||
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
|
||||
import org.springframework.retry.annotation.EnableRetry;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
|
@ -47,6 +48,7 @@ import org.springframework.web.servlet.config.annotation.EnableWebMvc;
|
|||
@EnableAspectJAutoProxy(proxyTargetClass = true)
|
||||
@EnableWebMvc
|
||||
@EnableScheduling
|
||||
@EnableRetry
|
||||
public class AppConfig {
|
||||
|
||||
@Bean
|
||||
|
|
|
|||
|
|
@ -32,9 +32,9 @@ import ru.micord.ervu.account_applications.dto.Person;
|
|||
import ru.micord.ervu.account_applications.dto.ProcessResponse;
|
||||
import ru.micord.ervu.account_applications.dto.Role;
|
||||
import ru.micord.ervu.account_applications.dto.Roles;
|
||||
import ru.micord.ervu.account_applications.dto.deactivate.DeactivateData;
|
||||
import ru.micord.ervu.account_applications.dto.deactivate.DeactivateDto;
|
||||
import ru.micord.ervu.account_applications.dto.deactivate.DeactivateProcessRequest;
|
||||
import ru.micord.ervu.account_applications.dto.activation.ChangeActivationData;
|
||||
import ru.micord.ervu.account_applications.dto.activation.ChangeActivationDto;
|
||||
import ru.micord.ervu.account_applications.dto.activation.ChangeActivationProcessRequest;
|
||||
import ru.micord.ervu.account_applications.dto.edit.EditAccountDto;
|
||||
import ru.micord.ervu.account_applications.dto.edit.EditData;
|
||||
import ru.micord.ervu.account_applications.dto.edit.EditRolesDto;
|
||||
|
|
@ -44,10 +44,12 @@ import ru.micord.ervu.account_applications.dto.password.ResetPasswordData;
|
|||
import ru.micord.ervu.account_applications.dto.password.ResetPasswordDto;
|
||||
import ru.micord.ervu.account_applications.dto.password.ResetPasswordProcessRequest;
|
||||
import ru.micord.ervu.account_applications.dto.password.UserIdInfo;
|
||||
import ru.micord.ervu.account_applications.enums.ProcessKey;
|
||||
import ru.micord.ervu.account_applications.security.context.SecurityContext;
|
||||
import ru.micord.ervu.account_applications.service.RoleServiceImpl;
|
||||
import ru.micord.ervu.account_applications.service.UserApplicationListService;
|
||||
|
||||
import static ru.micord.ervu.account_applications.enums.ProcessKey.*;
|
||||
|
||||
/**
|
||||
* @author gulnaz
|
||||
*/
|
||||
|
|
@ -60,15 +62,17 @@ public class AdminController {
|
|||
private final RestTemplate restTemplate;
|
||||
private final SecurityContext securityContext;
|
||||
private final UserApplicationListService applicationListService;
|
||||
private final RoleServiceImpl roleService;
|
||||
|
||||
@Value("${ervu.url}")
|
||||
private String ervuUrl;
|
||||
|
||||
public AdminController(RestTemplate restTemplate, SecurityContext securityContext,
|
||||
UserApplicationListService applicationListService) {
|
||||
UserApplicationListService applicationListService, RoleServiceImpl roleService) {
|
||||
this.restTemplate = restTemplate;
|
||||
this.securityContext = securityContext;
|
||||
this.applicationListService = applicationListService;
|
||||
this.roleService = roleService;
|
||||
}
|
||||
|
||||
@PostMapping(value = "", consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||
|
|
@ -83,7 +87,7 @@ public class AdminController {
|
|||
.collect(Collectors.toList());
|
||||
Roles roles = new Roles(rolesList);
|
||||
CreateProcessRequest request = new CreateProcessRequest(
|
||||
ProcessKey.CREATE.getValue(), getUserId(), new CreateData(credential, account, person, roles));
|
||||
CREATE.getValue(), getUserId(), new CreateData(credential, account, person, roles));
|
||||
return doRequestAndSaveTraceId(request, dto.appNumber());
|
||||
}
|
||||
|
||||
|
|
@ -91,7 +95,7 @@ public class AdminController {
|
|||
public ResponseEntity<?> editPerson(@RequestBody @Valid EditPersonDto dto) {
|
||||
Person person = new Person(dto.id(), dto.surname(), dto.firstname(), dto.middlename(), dto.sex(),
|
||||
dto.email(), dto.birthdate(), dto.snils(), dto.ipAddresses());
|
||||
EditPersonProcessRequest request = new EditPersonProcessRequest(ProcessKey.EDIT_PERSON.getValue(),
|
||||
EditPersonProcessRequest request = new EditPersonProcessRequest(EDIT_PERSON.getValue(),
|
||||
getUserId(), new EditData(dto.accountId(), person));
|
||||
return doRequestAndSaveTraceId(request, dto.appNumber());
|
||||
}
|
||||
|
|
@ -99,7 +103,7 @@ public class AdminController {
|
|||
@PostMapping(value = "/account", consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<?> editAccount(@RequestBody @Valid EditAccountDto dto) {
|
||||
Account account = new Account(dto.accountId(), dto.userDomain(), dto.position());
|
||||
EditPersonProcessRequest request = new EditPersonProcessRequest(ProcessKey.EDIT_ACCOUNT.getValue(),
|
||||
EditPersonProcessRequest request = new EditPersonProcessRequest(EDIT_ACCOUNT.getValue(),
|
||||
getUserId(), new EditData(account));
|
||||
return doRequestAndSaveTraceId(request, dto.appNumber());
|
||||
}
|
||||
|
|
@ -110,16 +114,25 @@ public class AdminController {
|
|||
.stream()
|
||||
.map(Role::new)
|
||||
.collect(Collectors.toList());
|
||||
Account account = new Account(dto.accountId(), dto.removeRoles(), rolesList);
|
||||
EditPersonProcessRequest request = new EditPersonProcessRequest(ProcessKey.EDIT_ROLES.getValue(),
|
||||
List<String> removedRoleIds = roleService.fetchRemovedRoleIds(dto.accountId(), dto.roles());
|
||||
|
||||
Account account = new Account(dto.accountId(), removedRoleIds, rolesList);
|
||||
EditPersonProcessRequest request = new EditPersonProcessRequest(EDIT_ROLES.getValue(),
|
||||
getUserId(), new EditData(account));
|
||||
return doRequestAndSaveTraceId(request, dto.appNumber());
|
||||
}
|
||||
|
||||
@PostMapping(value = "/deactivation", consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<?> deactivate(@RequestBody @Valid DeactivateDto dto) {
|
||||
DeactivateProcessRequest request = new DeactivateProcessRequest(ProcessKey.DEACTIVATE.getValue(),
|
||||
getUserId(), new DeactivateData(Collections.singletonList(dto.accountId())));
|
||||
public ResponseEntity<?> deactivate(@RequestBody @Valid ChangeActivationDto dto) {
|
||||
ChangeActivationProcessRequest request = new ChangeActivationProcessRequest(DEACTIVATE.getValue(),
|
||||
getUserId(), new ChangeActivationData(Collections.singletonList(dto.accountId())));
|
||||
return doRequestAndSaveTraceId(request, dto.appNumber());
|
||||
}
|
||||
|
||||
@PostMapping(value = "/activation", consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||
public ResponseEntity<?> activate(@RequestBody @Valid ChangeActivationDto dto) {
|
||||
ChangeActivationProcessRequest request = new ChangeActivationProcessRequest(ACTIVATE.getValue(),
|
||||
getUserId(), new ChangeActivationData(Collections.singletonList(dto.accountId())));
|
||||
return doRequestAndSaveTraceId(request, dto.appNumber());
|
||||
}
|
||||
|
||||
|
|
@ -134,7 +147,7 @@ public class AdminController {
|
|||
UserIdInfo userIdInfo = new UserIdInfo(dto.accountId());
|
||||
ResetPasswordData resetPasswordData = new ResetPasswordData(userIdInfo);
|
||||
ResetPasswordProcessRequest request = new ResetPasswordProcessRequest(
|
||||
ProcessKey.RESET_PASSWORD.getValue(),
|
||||
RESET_PASSWORD.getValue(),
|
||||
getUserId(), resetPasswordData
|
||||
);
|
||||
return doRequestAndSaveTraceId(request, dto.appNumber());
|
||||
|
|
|
|||
|
|
@ -2,13 +2,14 @@ package ru.micord.ervu.account_applications.dao;
|
|||
|
||||
import java.sql.Timestamp;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Optional;
|
||||
|
||||
import org.jooq.DSLContext;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import ru.micord.ervu.account_applications.enums.ApplicationStatus;
|
||||
|
||||
import static ru.micord.ervu.account_applications.db_beans.public_.tables.UserApplicationList.USER_APPLICATION_LIST;
|
||||
import static ru.micord.ervu.account_applications.enums.ApplicationStatus.ACCEPTED;
|
||||
import static ru.micord.ervu.account_applications.enums.ApplicationStatus.AGREED;
|
||||
import static ru.micord.ervu.account_applications.enums.ApplicationStatus.SENT;
|
||||
|
||||
/**
|
||||
* @author gulnaz
|
||||
|
|
@ -25,13 +26,14 @@ public class UserApplicationListDao {
|
|||
public void saveTraceId(String traceId, long appNumber) {
|
||||
dslContext.update(USER_APPLICATION_LIST)
|
||||
.set(USER_APPLICATION_LIST.TRACE_ID, traceId)
|
||||
.set(USER_APPLICATION_LIST.SENT_DATE, Timestamp.valueOf(LocalDateTime.now()))
|
||||
.where(USER_APPLICATION_LIST.NUMBER_APP.eq(appNumber))
|
||||
.execute();
|
||||
}
|
||||
|
||||
public void savePassword(String traceId, String encodedPass) {
|
||||
dslContext.update(USER_APPLICATION_LIST)
|
||||
.set(USER_APPLICATION_LIST.APPLICATION_STATUS, ApplicationStatus.ACCEPTED.name())
|
||||
.set(USER_APPLICATION_LIST.APPLICATION_STATUS, ACCEPTED.name())
|
||||
.set(USER_APPLICATION_LIST.USER_PASSWORD, encodedPass)
|
||||
.where(USER_APPLICATION_LIST.TRACE_ID.eq(traceId))
|
||||
.execute();
|
||||
|
|
@ -39,14 +41,14 @@ public class UserApplicationListDao {
|
|||
|
||||
public void saveAcceptedStatus(String traceId) {
|
||||
dslContext.update(USER_APPLICATION_LIST)
|
||||
.set(USER_APPLICATION_LIST.APPLICATION_STATUS, ApplicationStatus.ACCEPTED.name())
|
||||
.set(USER_APPLICATION_LIST.APPLICATION_STATUS, ACCEPTED.name())
|
||||
.where(USER_APPLICATION_LIST.TRACE_ID.eq(traceId))
|
||||
.execute();
|
||||
}
|
||||
|
||||
public void saveError(String traceId, String errorMsg) {
|
||||
dslContext.update(USER_APPLICATION_LIST)
|
||||
.set(USER_APPLICATION_LIST.APPLICATION_STATUS, ApplicationStatus.AGREED.name())
|
||||
.set(USER_APPLICATION_LIST.APPLICATION_STATUS, AGREED.name())
|
||||
.set(USER_APPLICATION_LIST.EDIT_COMMENT, errorMsg)
|
||||
.where(USER_APPLICATION_LIST.TRACE_ID.eq(traceId))
|
||||
.execute();
|
||||
|
|
@ -58,4 +60,13 @@ public class UserApplicationListDao {
|
|||
.from(USER_APPLICATION_LIST)
|
||||
.where(USER_APPLICATION_LIST.USER_LOGIN.eq(login)));
|
||||
}
|
||||
|
||||
public void saveAgreedStatusForSentAppsOlderThan(long minutes) {
|
||||
dslContext.update(USER_APPLICATION_LIST)
|
||||
.set(USER_APPLICATION_LIST.APPLICATION_STATUS, AGREED.name())
|
||||
.where(USER_APPLICATION_LIST.APPLICATION_STATUS.eq(SENT.name())
|
||||
.and(USER_APPLICATION_LIST.SENT_DATE.lessOrEqual(
|
||||
Timestamp.valueOf(LocalDateTime.now().minusMinutes(minutes)))))
|
||||
.execute();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import ru.micord.ervu.account_applications.db_beans.public_.tables.LinkUserAppli
|
|||
import ru.micord.ervu.account_applications.db_beans.public_.tables.LinkUserApplicationUserApplicationRole;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.LinkUserApplicationUserApplicationUpdateRole;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.Recruitment;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.Shedlock;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.UserApplicationDocument;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.UserApplicationList;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.UserApplicationRole;
|
||||
|
|
@ -27,6 +28,7 @@ import ru.micord.ervu.account_applications.db_beans.public_.tables.records.LinkU
|
|||
import ru.micord.ervu.account_applications.db_beans.public_.tables.records.LinkUserApplicationUserApplicationRoleRecord;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.records.LinkUserApplicationUserApplicationUpdateRoleRecord;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.records.RecruitmentRecord;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.records.ShedlockRecord;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.records.UserApplicationDocumentRecord;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.records.UserApplicationListRecord;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.records.UserApplicationRoleRecord;
|
||||
|
|
@ -55,6 +57,7 @@ public class Keys {
|
|||
public static final UniqueKey<LinkUserApplicationUserApplicationUpdateRoleRecord> UNI_USER_APPLICATION_UPDATE_ROLE = Internal.createUniqueKey(LinkUserApplicationUserApplicationUpdateRole.LINK_USER_APPLICATION_USER_APPLICATION_UPDATE_ROLE, DSL.name("uni_user_application_update_role"), new TableField[] { LinkUserApplicationUserApplicationUpdateRole.LINK_USER_APPLICATION_USER_APPLICATION_UPDATE_ROLE.USER_APPLICATION_LIST_ID, LinkUserApplicationUserApplicationUpdateRole.LINK_USER_APPLICATION_USER_APPLICATION_UPDATE_ROLE.USER_UPDATE_ROLE_ID }, true);
|
||||
public static final UniqueKey<RecruitmentRecord> RECRUITMENT_IDM_ID_KEY = Internal.createUniqueKey(Recruitment.RECRUITMENT, DSL.name("recruitment_idm_id_key"), new TableField[] { Recruitment.RECRUITMENT.IDM_ID }, true);
|
||||
public static final UniqueKey<RecruitmentRecord> RECRUITMENT_PKEY = Internal.createUniqueKey(Recruitment.RECRUITMENT, DSL.name("recruitment_pkey"), new TableField[] { Recruitment.RECRUITMENT.ID }, true);
|
||||
public static final UniqueKey<ShedlockRecord> SHEDLOCK_PK = Internal.createUniqueKey(Shedlock.SHEDLOCK, DSL.name("shedlock_pk"), new TableField[] { Shedlock.SHEDLOCK.NAME }, true);
|
||||
public static final UniqueKey<UserApplicationDocumentRecord> PK_USER_APPLICATION_DOCUMENT = Internal.createUniqueKey(UserApplicationDocument.USER_APPLICATION_DOCUMENT, DSL.name("pk_user_application_document"), new TableField[] { UserApplicationDocument.USER_APPLICATION_DOCUMENT.USER_APPLICATION_DOCUMENT_ID }, true);
|
||||
public static final UniqueKey<UserApplicationListRecord> PK_USER_APPLICATION_LIST = Internal.createUniqueKey(UserApplicationList.USER_APPLICATION_LIST, DSL.name("pk_user_application_list"), new TableField[] { UserApplicationList.USER_APPLICATION_LIST.USER_APPLICATION_LIST_ID }, true);
|
||||
public static final UniqueKey<UserApplicationRoleRecord> USER_APPLICATION_ROLE_PKEY = Internal.createUniqueKey(UserApplicationRole.USER_APPLICATION_ROLE, DSL.name("user_application_role_pkey"), new TableField[] { UserApplicationRole.USER_APPLICATION_ROLE.USER_ROLE_ID }, true);
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import ru.micord.ervu.account_applications.db_beans.public_.tables.LinkUserAppli
|
|||
import ru.micord.ervu.account_applications.db_beans.public_.tables.LinkUserApplicationUserApplicationRole;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.LinkUserApplicationUserApplicationUpdateRole;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.Recruitment;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.Shedlock;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.UserApplicationDocument;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.UserApplicationList;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.UserApplicationRole;
|
||||
|
|
@ -81,6 +82,11 @@ public class Public extends SchemaImpl {
|
|||
*/
|
||||
public final Recruitment RECRUITMENT = Recruitment.RECRUITMENT;
|
||||
|
||||
/**
|
||||
* The table <code>public.shedlock</code>.
|
||||
*/
|
||||
public final Shedlock SHEDLOCK = Shedlock.SHEDLOCK;
|
||||
|
||||
/**
|
||||
* Документы в заявке пользователя
|
||||
*/
|
||||
|
|
@ -130,6 +136,7 @@ public class Public extends SchemaImpl {
|
|||
LinkUserApplicationUserApplicationRole.LINK_USER_APPLICATION_USER_APPLICATION_ROLE,
|
||||
LinkUserApplicationUserApplicationUpdateRole.LINK_USER_APPLICATION_USER_APPLICATION_UPDATE_ROLE,
|
||||
Recruitment.RECRUITMENT,
|
||||
Shedlock.SHEDLOCK,
|
||||
UserApplicationDocument.USER_APPLICATION_DOCUMENT,
|
||||
UserApplicationList.USER_APPLICATION_LIST,
|
||||
UserApplicationRole.USER_APPLICATION_ROLE
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import ru.micord.ervu.account_applications.db_beans.public_.tables.LinkUserAppli
|
|||
import ru.micord.ervu.account_applications.db_beans.public_.tables.LinkUserApplicationUserApplicationRole;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.LinkUserApplicationUserApplicationUpdateRole;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.Recruitment;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.Shedlock;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.UserApplicationDocument;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.UserApplicationList;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.UserApplicationRole;
|
||||
|
|
@ -65,6 +66,11 @@ public class Tables {
|
|||
*/
|
||||
public static final Recruitment RECRUITMENT = Recruitment.RECRUITMENT;
|
||||
|
||||
/**
|
||||
* The table <code>public.shedlock</code>.
|
||||
*/
|
||||
public static final Shedlock SHEDLOCK = Shedlock.SHEDLOCK;
|
||||
|
||||
/**
|
||||
* Документы в заявке пользователя
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -0,0 +1,234 @@
|
|||
/*
|
||||
* This file is generated by jOOQ.
|
||||
*/
|
||||
package ru.micord.ervu.account_applications.db_beans.public_.tables;
|
||||
|
||||
|
||||
import java.sql.Timestamp;
|
||||
import java.util.Collection;
|
||||
|
||||
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;
|
||||
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.Keys;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.Public;
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.records.ShedlockRecord;
|
||||
|
||||
|
||||
/**
|
||||
* This class is generated by jOOQ.
|
||||
*/
|
||||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class Shedlock extends TableImpl<ShedlockRecord> {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* The reference instance of <code>public.shedlock</code>
|
||||
*/
|
||||
public static final Shedlock SHEDLOCK = new Shedlock();
|
||||
|
||||
/**
|
||||
* The class holding records for this type
|
||||
*/
|
||||
@Override
|
||||
public Class<ShedlockRecord> getRecordType() {
|
||||
return ShedlockRecord.class;
|
||||
}
|
||||
|
||||
/**
|
||||
* The column <code>public.shedlock.name</code>.
|
||||
*/
|
||||
public final TableField<ShedlockRecord, String> NAME = createField(DSL.name("name"), SQLDataType.VARCHAR(255).nullable(false), this, "");
|
||||
|
||||
/**
|
||||
* The column <code>public.shedlock.lock_until</code>.
|
||||
*/
|
||||
public final TableField<ShedlockRecord, Timestamp> LOCK_UNTIL = createField(DSL.name("lock_until"), SQLDataType.TIMESTAMP(0), this, "");
|
||||
|
||||
/**
|
||||
* The column <code>public.shedlock.locked_at</code>.
|
||||
*/
|
||||
public final TableField<ShedlockRecord, Timestamp> LOCKED_AT = createField(DSL.name("locked_at"), SQLDataType.TIMESTAMP(0), this, "");
|
||||
|
||||
/**
|
||||
* The column <code>public.shedlock.locked_by</code>.
|
||||
*/
|
||||
public final TableField<ShedlockRecord, String> LOCKED_BY = createField(DSL.name("locked_by"), SQLDataType.VARCHAR(255), this, "");
|
||||
|
||||
private Shedlock(Name alias, Table<ShedlockRecord> aliased) {
|
||||
this(alias, aliased, (Field<?>[]) null, null);
|
||||
}
|
||||
|
||||
private Shedlock(Name alias, Table<ShedlockRecord> aliased, Field<?>[] parameters, Condition where) {
|
||||
super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table(), where);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an aliased <code>public.shedlock</code> table reference
|
||||
*/
|
||||
public Shedlock(String alias) {
|
||||
this(DSL.name(alias), SHEDLOCK);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an aliased <code>public.shedlock</code> table reference
|
||||
*/
|
||||
public Shedlock(Name alias) {
|
||||
this(alias, SHEDLOCK);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a <code>public.shedlock</code> table reference
|
||||
*/
|
||||
public Shedlock() {
|
||||
this(DSL.name("shedlock"), null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Schema getSchema() {
|
||||
return aliased() ? null : Public.PUBLIC;
|
||||
}
|
||||
|
||||
@Override
|
||||
public UniqueKey<ShedlockRecord> getPrimaryKey() {
|
||||
return Keys.SHEDLOCK_PK;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Shedlock as(String alias) {
|
||||
return new Shedlock(DSL.name(alias), this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Shedlock as(Name alias) {
|
||||
return new Shedlock(alias, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Shedlock as(Table<?> alias) {
|
||||
return new Shedlock(alias.getQualifiedName(), this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename this table
|
||||
*/
|
||||
@Override
|
||||
public Shedlock rename(String name) {
|
||||
return new Shedlock(DSL.name(name), null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename this table
|
||||
*/
|
||||
@Override
|
||||
public Shedlock rename(Name name) {
|
||||
return new Shedlock(name, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename this table
|
||||
*/
|
||||
@Override
|
||||
public Shedlock rename(Table<?> name) {
|
||||
return new Shedlock(name.getQualifiedName(), null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an inline derived table from this table
|
||||
*/
|
||||
@Override
|
||||
public Shedlock where(Condition condition) {
|
||||
return new Shedlock(getQualifiedName(), aliased() ? this : null, null, condition);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an inline derived table from this table
|
||||
*/
|
||||
@Override
|
||||
public Shedlock where(Collection<? extends Condition> conditions) {
|
||||
return where(DSL.and(conditions));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an inline derived table from this table
|
||||
*/
|
||||
@Override
|
||||
public Shedlock where(Condition... conditions) {
|
||||
return where(DSL.and(conditions));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an inline derived table from this table
|
||||
*/
|
||||
@Override
|
||||
public Shedlock where(Field<Boolean> condition) {
|
||||
return where(DSL.condition(condition));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an inline derived table from this table
|
||||
*/
|
||||
@Override
|
||||
@PlainSQL
|
||||
public Shedlock where(SQL condition) {
|
||||
return where(DSL.condition(condition));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an inline derived table from this table
|
||||
*/
|
||||
@Override
|
||||
@PlainSQL
|
||||
public Shedlock where(@Stringly.SQL String condition) {
|
||||
return where(DSL.condition(condition));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an inline derived table from this table
|
||||
*/
|
||||
@Override
|
||||
@PlainSQL
|
||||
public Shedlock where(@Stringly.SQL String condition, Object... binds) {
|
||||
return where(DSL.condition(condition, binds));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an inline derived table from this table
|
||||
*/
|
||||
@Override
|
||||
@PlainSQL
|
||||
public Shedlock where(@Stringly.SQL String condition, QueryPart... parts) {
|
||||
return where(DSL.condition(condition, parts));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an inline derived table from this table
|
||||
*/
|
||||
@Override
|
||||
public Shedlock whereExists(Select<?> select) {
|
||||
return where(DSL.exists(select));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an inline derived table from this table
|
||||
*/
|
||||
@Override
|
||||
public Shedlock whereNotExists(Select<?> select) {
|
||||
return where(DSL.notExists(select));
|
||||
}
|
||||
}
|
||||
|
|
@ -242,6 +242,12 @@ public class UserApplicationList extends TableImpl<UserApplicationListRecord> {
|
|||
*/
|
||||
public final TableField<UserApplicationListRecord, String> TRACE_ID = createField(DSL.name("trace_id"), SQLDataType.VARCHAR(36), this, "Идентификатор процесса");
|
||||
|
||||
/**
|
||||
* The column <code>public.user_application_list.sent_date</code>. Дата
|
||||
* отправки заявки в ЕРВУ
|
||||
*/
|
||||
public final TableField<UserApplicationListRecord, Timestamp> SENT_DATE = createField(DSL.name("sent_date"), SQLDataType.TIMESTAMP(0), this, "Дата отправки заявки в ЕРВУ");
|
||||
|
||||
private UserApplicationList(Name alias, Table<UserApplicationListRecord> aliased) {
|
||||
this(alias, aliased, (Field<?>[]) null, null);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,111 @@
|
|||
/*
|
||||
* This file is generated by jOOQ.
|
||||
*/
|
||||
package ru.micord.ervu.account_applications.db_beans.public_.tables.records;
|
||||
|
||||
|
||||
import java.sql.Timestamp;
|
||||
|
||||
import org.jooq.Record1;
|
||||
import org.jooq.impl.UpdatableRecordImpl;
|
||||
|
||||
import ru.micord.ervu.account_applications.db_beans.public_.tables.Shedlock;
|
||||
|
||||
|
||||
/**
|
||||
* This class is generated by jOOQ.
|
||||
*/
|
||||
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
|
||||
public class ShedlockRecord extends UpdatableRecordImpl<ShedlockRecord> {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* Setter for <code>public.shedlock.name</code>.
|
||||
*/
|
||||
public void setName(String value) {
|
||||
set(0, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>public.shedlock.name</code>.
|
||||
*/
|
||||
public String getName() {
|
||||
return (String) get(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for <code>public.shedlock.lock_until</code>.
|
||||
*/
|
||||
public void setLockUntil(Timestamp value) {
|
||||
set(1, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>public.shedlock.lock_until</code>.
|
||||
*/
|
||||
public Timestamp getLockUntil() {
|
||||
return (Timestamp) get(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for <code>public.shedlock.locked_at</code>.
|
||||
*/
|
||||
public void setLockedAt(Timestamp value) {
|
||||
set(2, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>public.shedlock.locked_at</code>.
|
||||
*/
|
||||
public Timestamp getLockedAt() {
|
||||
return (Timestamp) get(2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for <code>public.shedlock.locked_by</code>.
|
||||
*/
|
||||
public void setLockedBy(String value) {
|
||||
set(3, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>public.shedlock.locked_by</code>.
|
||||
*/
|
||||
public String getLockedBy() {
|
||||
return (String) get(3);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Primary key information
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public Record1<String> key() {
|
||||
return (Record1) super.key();
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Constructors
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Create a detached ShedlockRecord
|
||||
*/
|
||||
public ShedlockRecord() {
|
||||
super(Shedlock.SHEDLOCK);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a detached, initialised ShedlockRecord
|
||||
*/
|
||||
public ShedlockRecord(String name, Timestamp lockUntil, Timestamp lockedAt, String lockedBy) {
|
||||
super(Shedlock.SHEDLOCK);
|
||||
|
||||
setName(name);
|
||||
setLockUntil(lockUntil);
|
||||
setLockedAt(lockedAt);
|
||||
setLockedBy(lockedBy);
|
||||
resetChangedOnNotNull();
|
||||
}
|
||||
}
|
||||
|
|
@ -506,6 +506,22 @@ public class UserApplicationListRecord extends UpdatableRecordImpl<UserApplicati
|
|||
return (String) get(30);
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter for <code>public.user_application_list.sent_date</code>. Дата
|
||||
* отправки заявки в ЕРВУ
|
||||
*/
|
||||
public void setSentDate(Timestamp value) {
|
||||
set(31, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter for <code>public.user_application_list.sent_date</code>. Дата
|
||||
* отправки заявки в ЕРВУ
|
||||
*/
|
||||
public Timestamp getSentDate() {
|
||||
return (Timestamp) get(31);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Primary key information
|
||||
// -------------------------------------------------------------------------
|
||||
|
|
@ -529,7 +545,7 @@ public class UserApplicationListRecord extends UpdatableRecordImpl<UserApplicati
|
|||
/**
|
||||
* Create a detached, initialised UserApplicationListRecord
|
||||
*/
|
||||
public UserApplicationListRecord(Long userApplicationListId, String applicationKind, String userLogin, String userPassword, String secondname, String firstname, String middlename, String phone, Timestamp startDate, Timestamp closeDate, String userStatus, String applicationStatus, String comment, Long jobPositionId, Long userRoleId, UUID recruitmentId, String userAccountId, String sex, Date birthDate, String snils, String jobPosition, Long numberApp, String editComment, String personId, String updateSecondname, String updateFirstname, String updateMiddlename, String updateSex, Date updateBirthDate, String updateJobPosition, String traceId) {
|
||||
public UserApplicationListRecord(Long userApplicationListId, String applicationKind, String userLogin, String userPassword, String secondname, String firstname, String middlename, String phone, Timestamp startDate, Timestamp closeDate, String userStatus, String applicationStatus, String comment, Long jobPositionId, Long userRoleId, UUID recruitmentId, String userAccountId, String sex, Date birthDate, String snils, String jobPosition, Long numberApp, String editComment, String personId, String updateSecondname, String updateFirstname, String updateMiddlename, String updateSex, Date updateBirthDate, String updateJobPosition, String traceId, Timestamp sentDate) {
|
||||
super(UserApplicationList.USER_APPLICATION_LIST);
|
||||
|
||||
setUserApplicationListId(userApplicationListId);
|
||||
|
|
@ -563,6 +579,7 @@ public class UserApplicationListRecord extends UpdatableRecordImpl<UserApplicati
|
|||
setUpdateBirthDate(updateBirthDate);
|
||||
setUpdateJobPosition(updateJobPosition);
|
||||
setTraceId(traceId);
|
||||
setSentDate(sentDate);
|
||||
resetChangedOnNotNull();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
package ru.micord.ervu.account_applications.dto.activation;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author gulnaz
|
||||
*/
|
||||
public record ChangeActivationData(List<String> accountIdList) {
|
||||
}
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
package ru.micord.ervu.account_applications.dto.deactivate;
|
||||
package ru.micord.ervu.account_applications.dto.activation;
|
||||
|
||||
import java.util.List;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
|
|
@ -9,5 +8,5 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|||
* @author gulnaz
|
||||
*/
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public record DeactivateDto(@NotNull long appNumber, @NotNull String accountId) {
|
||||
public record ChangeActivationDto(@NotNull long appNumber, @NotNull String accountId) {
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
package ru.micord.ervu.account_applications.dto.activation;
|
||||
|
||||
import ru.micord.ervu.account_applications.dto.ProcessRequest;
|
||||
|
||||
/**
|
||||
* @author gulnaz
|
||||
*/
|
||||
public class ChangeActivationProcessRequest extends ProcessRequest<ChangeActivationData> {
|
||||
|
||||
public ChangeActivationProcessRequest(String processKey, String userId, ChangeActivationData data) {
|
||||
super(processKey, userId, data);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
package ru.micord.ervu.account_applications.dto.deactivate;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author gulnaz
|
||||
*/
|
||||
public record DeactivateData(List<String> accountIdList) {
|
||||
}
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
package ru.micord.ervu.account_applications.dto.deactivate;
|
||||
|
||||
import ru.micord.ervu.account_applications.dto.ProcessRequest;
|
||||
|
||||
/**
|
||||
* @author gulnaz
|
||||
*/
|
||||
public class DeactivateProcessRequest extends ProcessRequest<DeactivateData> {
|
||||
|
||||
public DeactivateProcessRequest(String processKey, String userId, DeactivateData data) {
|
||||
super(processKey, userId, data);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package ru.micord.ervu.account_applications.dto.edit;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
|
@ -9,6 +9,5 @@ import javax.validation.constraints.NotNull;
|
|||
* @author Emir Suleimanov
|
||||
*/
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public record EditRolesDto(@NotNull long appNumber, @NotNull String accountId,
|
||||
List<String> removeRoles, List<String> roles) {
|
||||
public record EditRolesDto(@NotNull long appNumber, @NotNull String accountId, Set<String> roles) {
|
||||
}
|
||||
|
|
@ -5,9 +5,9 @@ import ru.micord.ervu.account_applications.dto.ProcessRequest;
|
|||
/**
|
||||
* @author Adel Kalimullin
|
||||
*/
|
||||
public class ResetPasswordProcessRequest extends ProcessRequest {
|
||||
public class ResetPasswordProcessRequest extends ProcessRequest<ResetPasswordData> {
|
||||
|
||||
public ResetPasswordProcessRequest(String processKey, String userId, Object data) {
|
||||
public ResetPasswordProcessRequest(String processKey, String userId, ResetPasswordData data) {
|
||||
super(processKey, userId, data);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,5 +5,6 @@ package ru.micord.ervu.account_applications.enums;
|
|||
*/
|
||||
public enum ApplicationStatus {
|
||||
AGREED,
|
||||
ACCEPTED
|
||||
ACCEPTED,
|
||||
SENT
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ public enum ProcessKey {
|
|||
EDIT_ACCOUNT("milBaseEditAccountIDMProcess"),
|
||||
EDIT_ROLES("milBaseEditAccountRolesIDMSubProcess"),
|
||||
DEACTIVATE("milBaseMassDeActivateAccountIDMProcess"),
|
||||
ACTIVATE("milBaseMassActivateAccountIDMProcess"),
|
||||
RESET_PASSWORD("milBaseResetPasswordProcess");
|
||||
|
||||
private final String value;
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ import java.lang.invoke.MethodHandles;
|
|||
import java.net.URLDecoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.Executors;
|
||||
import javax.servlet.FilterChain;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
|
@ -16,7 +15,6 @@ import org.slf4j.LoggerFactory;
|
|||
import org.springframework.security.authentication.AuthenticationManager;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.AuthenticationException;
|
||||
import org.springframework.security.core.context.SecurityContext;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.filter.OncePerRequestFilter;
|
||||
|
|
@ -44,13 +42,7 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
|
|||
try {
|
||||
Authentication authentication = attemptAuthentication(request);
|
||||
if (authentication != null) {
|
||||
SecurityContext context = SecurityContextHolder.getContext();
|
||||
context.setAuthentication(authentication);
|
||||
//TODO SUPPORT-9009 connection by duty user
|
||||
new Thread(() -> {
|
||||
SecurityContextHolder.setContext(context);
|
||||
webSocketService.connectToSocket();
|
||||
}).start();
|
||||
SecurityContextHolder.getContext().setAuthentication(authentication);
|
||||
}
|
||||
}
|
||||
catch (AuthenticationException e) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
package ru.micord.ervu.account_applications.security.listener;
|
||||
|
||||
import org.springframework.context.ApplicationListener;
|
||||
import org.springframework.security.authentication.event.AuthenticationSuccessEvent;
|
||||
import org.springframework.stereotype.Component;
|
||||
import ru.micord.ervu.account_applications.security.model.jwt.UserSession;
|
||||
import ru.micord.ervu.account_applications.security.model.jwt.authentication.JwtTokenAuthentication;
|
||||
import ru.micord.ervu.account_applications.websocket.service.WebSocketService;
|
||||
|
||||
/**
|
||||
* @author gulnaz
|
||||
*/
|
||||
@Component
|
||||
public class SuccessfulAuthListener implements ApplicationListener<AuthenticationSuccessEvent> {
|
||||
private static final String ADMIN_ROLE = "security_administrator";
|
||||
|
||||
private final WebSocketService webSocketService;
|
||||
|
||||
public SuccessfulAuthListener(WebSocketService webSocketService) {
|
||||
this.webSocketService = webSocketService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onApplicationEvent(AuthenticationSuccessEvent event) {
|
||||
JwtTokenAuthentication authentication = (JwtTokenAuthentication) event.getAuthentication();
|
||||
UserSession userSession = authentication.getUserSession();
|
||||
boolean isAdmin = userSession.roles().stream()
|
||||
.anyMatch(ervuRoleAuthority -> ervuRoleAuthority.getAuthority().equals(ADMIN_ROLE));
|
||||
|
||||
if (isAdmin) {
|
||||
webSocketService.connectToSocket(userSession.userId(), authentication.getCredentials().toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
package ru.micord.ervu.account_applications.service;
|
||||
|
||||
import net.javacrumbs.shedlock.core.SchedulerLock;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.DependsOn;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Service;
|
||||
import ru.micord.ervu.account_applications.dao.UserApplicationListDao;
|
||||
|
||||
/**
|
||||
* @author gulnaz
|
||||
*/
|
||||
@Service
|
||||
@DependsOn("liquibase")
|
||||
public class ApplicationStatusUpdateSchedulerService {
|
||||
|
||||
private final UserApplicationListDao applicationListDao;
|
||||
|
||||
@Value("${scheduler.status_update.app_age.minutes:5}")
|
||||
private long minutes;
|
||||
|
||||
public ApplicationStatusUpdateSchedulerService(UserApplicationListDao applicationListDao) {
|
||||
this.applicationListDao = applicationListDao;
|
||||
}
|
||||
|
||||
@Scheduled(cron = "${scheduler.status_update.cron:0 */5 * * * *}")
|
||||
@SchedulerLock(name = "updateApplicationStatus")
|
||||
public void update() {
|
||||
applicationListDao.saveAgreedStatusForSentAppsOlderThan(minutes);
|
||||
}
|
||||
}
|
||||
|
|
@ -6,12 +6,15 @@ import java.util.ArrayList;
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.type.CollectionType;
|
||||
import model.grid.GridRow;
|
||||
import model.grid.GridRows;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.util.UriComponentsBuilder;
|
||||
import ru.micord.ervu.account_applications.component.exception.UserDataLoadException;
|
||||
import ru.micord.ervu.account_applications.component.model.Role;
|
||||
import ru.micord.ervu.account_applications.security.context.SecurityContext;
|
||||
import ru.micord.ervu.account_applications.service.constant.PathConstant;
|
||||
|
|
@ -19,6 +22,7 @@ import ru.micord.ervu.account_applications.service.constant.PathConstant;
|
|||
/**
|
||||
* @author Adel Kalimullin
|
||||
*/
|
||||
@Service
|
||||
public class RoleServiceImpl extends AbstractUserDataService {
|
||||
private static final String ROLES = "roles";
|
||||
|
||||
|
|
@ -33,6 +37,18 @@ public class RoleServiceImpl extends AbstractUserDataService {
|
|||
return objectToMap(roles);
|
||||
}
|
||||
|
||||
public List<String> fetchRemovedRoleIds(String accountId, Set<String> newRoleIds) {
|
||||
try {
|
||||
return fetchRolesByAccountId(accountId).stream()
|
||||
.map(Role::getId)
|
||||
.filter(id -> !newRoleIds.contains(id))
|
||||
.toList();
|
||||
}
|
||||
catch (Exception e) {
|
||||
throw new UserDataLoadException("Ошибка при получении ролей пользователя", e);
|
||||
}
|
||||
}
|
||||
|
||||
private List<Role> fetchRolesByAccountId(Object accountId) throws IOException, InterruptedException {
|
||||
String url = UriComponentsBuilder.fromHttpUrl(ervuUrl)
|
||||
.path(PathConstant.ACCOUNTS_PATH)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
package ru.micord.ervu.account_applications.websocket.exception;
|
||||
|
||||
/**
|
||||
* @author gulnaz
|
||||
*/
|
||||
public class WebSocketConnectionException extends RuntimeException {
|
||||
|
||||
public WebSocketConnectionException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
|
|
@ -15,7 +15,6 @@ import org.springframework.web.socket.CloseStatus;
|
|||
import org.springframework.web.socket.WebSocketMessage;
|
||||
import org.springframework.web.socket.WebSocketSession;
|
||||
import org.springframework.web.socket.handler.TextWebSocketHandler;
|
||||
import ru.micord.ervu.account_applications.security.context.SecurityContext;
|
||||
import ru.micord.ervu.account_applications.security.service.EncryptionService;
|
||||
import ru.micord.ervu.account_applications.service.UserApplicationListService;
|
||||
import ru.micord.ervu.account_applications.websocket.dto.ProcessResponseDto;
|
||||
|
|
@ -28,23 +27,21 @@ import ru.micord.ervu.account_applications.websocket.service.WebSocketService;
|
|||
public class ClientSocketHandler extends TextWebSocketHandler {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(TextWebSocketHandler.class);
|
||||
private static final Map<String, WebSocketSession> sessionByUserId = new ConcurrentHashMap<>();
|
||||
private static final Map<String, UserData> userDataBySessionId = new ConcurrentHashMap<>();
|
||||
|
||||
private final ObjectMapper objectMapper;
|
||||
private final UserApplicationListService applicationService;
|
||||
private final EncryptionService encryptionService;
|
||||
private final WebSocketService webSocketService;
|
||||
private final SecurityContext securityContext;
|
||||
|
||||
public ClientSocketHandler(ObjectMapper objectMapper,
|
||||
UserApplicationListService applicationService,
|
||||
EncryptionService encryptionService,
|
||||
@Lazy WebSocketService webSocketService,
|
||||
SecurityContext securityContext) {
|
||||
@Lazy WebSocketService webSocketService) {
|
||||
this.objectMapper = objectMapper;
|
||||
this.applicationService = applicationService;
|
||||
this.encryptionService = encryptionService;
|
||||
this.webSocketService = webSocketService;
|
||||
this.securityContext = securityContext;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -104,7 +101,10 @@ public class ClientSocketHandler extends TextWebSocketHandler {
|
|||
LOGGER.error("Failed to close session on afterConnectionClosed ", e);
|
||||
}
|
||||
}
|
||||
webSocketService.connectToSocket();
|
||||
String sessionId = session.getId();
|
||||
UserData userData = userDataBySessionId.get(sessionId);
|
||||
userDataBySessionId.remove(sessionId);
|
||||
webSocketService.connectToSocket(userData.userId(), userData.token());
|
||||
}
|
||||
|
||||
public boolean isSessionOpen(String userId) {
|
||||
|
|
@ -114,4 +114,10 @@ public class ClientSocketHandler extends TextWebSocketHandler {
|
|||
public void putSession(String userId, WebSocketSession session) {
|
||||
sessionByUserId.put(userId, session);
|
||||
}
|
||||
|
||||
public void putUserData(String sessionId, String userId, String token) {
|
||||
userDataBySessionId.put(sessionId, new UserData(userId, token));
|
||||
}
|
||||
|
||||
private record UserData(String userId, String token) {}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,12 +9,14 @@ import java.util.concurrent.TimeoutException;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.retry.annotation.Retryable;
|
||||
import org.springframework.retry.support.RetrySynchronizationManager;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.socket.WebSocketHandler;
|
||||
import org.springframework.web.socket.WebSocketHttpHeaders;
|
||||
import org.springframework.web.socket.WebSocketSession;
|
||||
import org.springframework.web.socket.client.WebSocketClient;
|
||||
import ru.micord.ervu.account_applications.security.context.SecurityContext;
|
||||
import ru.micord.ervu.account_applications.websocket.exception.WebSocketConnectionException;
|
||||
import ru.micord.ervu.account_applications.websocket.handler.ClientSocketHandler;
|
||||
|
||||
/**
|
||||
|
|
@ -26,7 +28,6 @@ public class WebSocketService {
|
|||
|
||||
private final WebSocketClient webSocketClient;
|
||||
private final WebSocketHandler webSocketHandler;
|
||||
private final SecurityContext securityContext;
|
||||
|
||||
@Value("${ervu.url}")
|
||||
private String ervuUrl;
|
||||
|
|
@ -35,22 +36,22 @@ public class WebSocketService {
|
|||
@Value("${ervu.socket.connection_timeout:30}")
|
||||
private long timeout;
|
||||
|
||||
public WebSocketService(WebSocketClient webSocketClient, WebSocketHandler webSocketHandler,
|
||||
SecurityContext securityContext) {
|
||||
public WebSocketService(WebSocketClient webSocketClient, WebSocketHandler webSocketHandler) {
|
||||
this.webSocketClient = webSocketClient;
|
||||
this.webSocketHandler = webSocketHandler;
|
||||
this.securityContext = securityContext;
|
||||
}
|
||||
|
||||
public void connectToSocket() {
|
||||
@Retryable(
|
||||
retryFor = {WebSocketConnectionException.class},
|
||||
maxAttemptsExpression = "${socket.connect.max_attempts:3}")
|
||||
public void connectToSocket(String userId, String token) {
|
||||
ClientSocketHandler socketHandler = (ClientSocketHandler) this.webSocketHandler;
|
||||
|
||||
if (socketHandler.isSessionOpen(securityContext.getUserId())) {
|
||||
if (socketHandler.isSessionOpen(userId)) {
|
||||
return;
|
||||
}
|
||||
WebSocketHttpHeaders headers = new WebSocketHttpHeaders();
|
||||
headers.set("Content-Type", "application/json");
|
||||
String token = securityContext.getToken();
|
||||
headers.add("Authorization", "Bearer " + token);
|
||||
headers.add("Cookie", "JWT=" + token); // to listen private messages
|
||||
|
||||
|
|
@ -58,10 +59,16 @@ public class WebSocketService {
|
|||
String host = new URI(ervuUrl).getHost();
|
||||
WebSocketSession session = webSocketClient.doHandshake(this.webSocketHandler, headers,
|
||||
URI.create("wss://" + host + socketQueue)).get(timeout, TimeUnit.SECONDS);
|
||||
socketHandler.putSession(securityContext.getUserId(), session);
|
||||
socketHandler.putSession(userId, session);
|
||||
socketHandler.putUserData(session.getId(), userId, token);
|
||||
}
|
||||
catch (InterruptedException | ExecutionException | URISyntaxException | TimeoutException e) {
|
||||
LOGGER.error("Failed to connect socket", e);
|
||||
catch (InterruptedException | ExecutionException | TimeoutException e) {
|
||||
LOGGER.error("Failed to connect socket on retry {}",
|
||||
RetrySynchronizationManager.getContext().getRetryCount());
|
||||
throw new WebSocketConnectionException(e.getMessage());
|
||||
}
|
||||
catch (URISyntaxException e) {
|
||||
LOGGER.error("Failed to parse url: {}", ervuUrl, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<databaseChangeLog
|
||||
xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.9"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.9
|
||||
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9.xsd">
|
||||
|
||||
<changeSet id="0001" author="gulnaz">
|
||||
<comment>add sent_date column to user_application_list table</comment>
|
||||
<sql>
|
||||
ALTER TABLE user_application_list ADD COLUMN IF NOT EXISTS sent_date timestamp without time zone;
|
||||
COMMENT ON COLUMN user_application_list.sent_date IS 'Дата отправки заявки в ЕРВУ';
|
||||
|
||||
UPDATE user_application_list SET sent_date = now()
|
||||
WHERE application_status = 'SENT' and sent_date is null;
|
||||
</sql>
|
||||
</changeSet>
|
||||
|
||||
</databaseChangeLog>
|
||||
|
|
@ -17,4 +17,5 @@
|
|||
<include file="20250312-SUPPORT-8696_add_column_role.xml" relativeToChangelogFile="true"/>
|
||||
<include file="20250313-SUPPORT-8957_add_trace_id.xml" relativeToChangelogFile="true"/>
|
||||
<include file="20250317-SUPPORT-8696_add_shedlock.xml" relativeToChangelogFile="true"/>
|
||||
</databaseChangeLog>
|
||||
<include file="20250324-SUPPORT-9023_add_sent_date.xml" relativeToChangelogFile="true"/>
|
||||
</databaseChangeLog>
|
||||
|
|
|
|||
6
frontend/package-lock.json
generated
6
frontend/package-lock.json
generated
|
|
@ -1726,9 +1726,9 @@
|
|||
}
|
||||
},
|
||||
"@webbpm/base-package": {
|
||||
"version": "3.192.4",
|
||||
"resolved": "https://repo.micord.ru/repository/npm-all/@webbpm/base-package/-/base-package-3.192.4.tgz",
|
||||
"integrity": "sha512-x2SFa7O/aUf4fyfiHrJMVuQZAMMOuQoqHuuVJiuBUI3nLTfUmdb+Pnqu+nCcKc+qahT6PYzzJ0t0Wub3bw/JGQ==",
|
||||
"version": "3.192.5",
|
||||
"resolved": "https://repo.micord.ru/repository/npm-all/@webbpm/base-package/-/base-package-3.192.5.tgz",
|
||||
"integrity": "sha512-XR4POXXWmhlFOdd+yIR+1HIslOfFXnyPsmizcrzVRE3feVLJ8Hle+uQT1a2KsHD6bfdTGErVHfes/IKfmUZImg==",
|
||||
"requires": {
|
||||
"tslib": "^1.9.0"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
"@angular/platform-browser-dynamic": "7.2.15",
|
||||
"@angular/router": "7.2.15",
|
||||
"@ng-bootstrap/ng-bootstrap": "4.2.2-micord.1",
|
||||
"@webbpm/base-package": "3.192.4",
|
||||
"@webbpm/base-package": "3.192.5",
|
||||
"ag-grid-angular": "29.0.0-micord.4",
|
||||
"ag-grid-community": "29.0.0-micord.4",
|
||||
"angular-calendar": "0.28.28",
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import {
|
|||
NotNull,
|
||||
ObjectRef,
|
||||
SaveButton,
|
||||
TextField
|
||||
TextField, Visible
|
||||
} from "@webbpm/base-package";
|
||||
import {HttpClient} from "@angular/common/http";
|
||||
import {FormField} from "../field/FormField";
|
||||
|
|
@ -21,6 +21,7 @@ export class UserManagementService extends Behavior {
|
|||
private button: SaveButton;
|
||||
private httpClient: HttpClient;
|
||||
private onClickFunction: Function;
|
||||
private sendToErvu: boolean = false;
|
||||
|
||||
initialize() {
|
||||
super.initialize();
|
||||
|
|
@ -28,7 +29,7 @@ export class UserManagementService extends Behavior {
|
|||
this.httpClient = this.injector.get(HttpClient);
|
||||
let authService = this.injector.get(AuthorizationService);
|
||||
this.onClickFunction = () => {
|
||||
if (!authService.hasRole('security_administrator')) {
|
||||
if (!authService.hasRole('security_administrator') || !this.sendToErvu) {
|
||||
return;
|
||||
}
|
||||
let jsonObj = this.collectData();
|
||||
|
|
@ -50,6 +51,9 @@ export class UserManagementService extends Behavior {
|
|||
case ApplicationKind.BLOCK_USER:
|
||||
this.doRequest("user/deactivation", jsonObj);
|
||||
break;
|
||||
case ApplicationKind.UNBLOCK_USER:
|
||||
this.doRequest("user/activation", jsonObj);
|
||||
break;
|
||||
case ApplicationKind.RESET_PASSWORD:
|
||||
this.doRequest("user/password/reset", jsonObj);
|
||||
break;
|
||||
|
|
@ -57,6 +61,11 @@ export class UserManagementService extends Behavior {
|
|||
}
|
||||
}
|
||||
|
||||
@Visible()
|
||||
public allowSendToErvu(): void {
|
||||
this.sendToErvu = true;
|
||||
}
|
||||
|
||||
private collectData(): any {
|
||||
let jsonObj = {};
|
||||
let fields: FormField[] = this.button.form.getScriptsInChildren(FormField);
|
||||
|
|
|
|||
|
|
@ -4,5 +4,6 @@ export enum ApplicationKind {
|
|||
EDIT_USER_ACCOUNT = "EDIT_USER_ACCOUNT",
|
||||
EDIT_USER_ROLES = "EDIT_USER_ROLES",
|
||||
BLOCK_USER = "BLOCK_USER",
|
||||
UNBLOCK_USER = "UNBLOCK_USER",
|
||||
RESET_PASSWORD = "RESET_PASSWORD"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -62,6 +62,7 @@
|
|||
'ngx-international-phone-number': 'npm:ngx-international-phone-number/ngx-international-phone-number.umd.js',
|
||||
'google-libphonenumber': 'npm:google-libphonenumber/dist/libphonenumber.js',
|
||||
'ng2-dropdown-treeview': 'npm:ng2-dropdown-treeview',
|
||||
'ngx-treeview': 'npm:ngx-treeview',
|
||||
},
|
||||
packages: {
|
||||
'preview': { main: './modules/preview/preview.main', defaultExtension: 'js'},
|
||||
|
|
@ -86,7 +87,7 @@
|
|||
main: 'dist/inputmask.js',
|
||||
defaultExtension: 'js'
|
||||
},
|
||||
'ng2-dropdown-treeview':{ main: "bundles/ng2-dropdown-treeview.umd.js", defaultExtension: 'js'}
|
||||
'ngx-treeview': { main: "bundles/ngx-treeview.umd.js", defaultExtension: 'js'}
|
||||
}
|
||||
});
|
||||
})(this);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>ru.cg.webbpm.packages.base</groupId>
|
||||
<artifactId>resources</artifactId>
|
||||
<version>3.192.4</version>
|
||||
<version>3.192.5</version>
|
||||
<organization>
|
||||
<name>Micord</name>
|
||||
</organization>
|
||||
|
|
@ -28,13 +28,13 @@
|
|||
<jooq.version>3.19.3</jooq.version>
|
||||
<jupiter.version>5.10.2</jupiter.version>
|
||||
<enforcer.manageVersions>true</enforcer.manageVersions>
|
||||
<webbpm-platform.version>3.192.4</webbpm-platform.version>
|
||||
<webbpm-platform.version>3.192.5</webbpm-platform.version>
|
||||
<h2.version>1.4.200</h2.version>
|
||||
<build.timestamp>0324074119</build.timestamp>
|
||||
<build.timestamp>0325075738</build.timestamp>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<junit.platform.version>1.10.0</junit.platform.version>
|
||||
<enforcer.manageExclusions>true</enforcer.manageExclusions>
|
||||
<revision>3.192.4</revision>
|
||||
<revision>3.192.5</revision>
|
||||
<metadata.ts.filename>typescript.metadata.json</metadata.ts.filename>
|
||||
<package.repository.url>https://repo.micord.ru</package.repository.url>
|
||||
<maven.build.timestamp.format>MMddHHmmss</maven.build.timestamp.format>
|
||||
|
|
@ -47,19 +47,19 @@
|
|||
<dependency>
|
||||
<groupId>ru.cg.webbpm.packages.base</groupId>
|
||||
<artifactId>converters</artifactId>
|
||||
<version>3.192.4</version>
|
||||
<version>3.192.5</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.cg.webbpm.packages.base</groupId>
|
||||
<artifactId>backend</artifactId>
|
||||
<version>3.192.4</version>
|
||||
<version>3.192.5</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ru.cg.webbpm.packages.base</groupId>
|
||||
<artifactId>frontend</artifactId>
|
||||
<version>3.192.4</version>
|
||||
<version>3.192.5</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@
|
|||
<ul>
|
||||
|
||||
<li>Образец внешней ссылки: <code>https://www.wildberries.ru/catalog/${sku}/detail.aspx</code></li>
|
||||
<li>Образец внутренней ссылки: <code>products/ru.cg.webbpm.packages.base:resources:jar:3.192.4</code></li>
|
||||
<li>Образец внутренней ссылки: <code>products/ru.cg.webbpm.packages.base:resources:jar:3.192.5</code></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
|
|
|
|||
|
|
@ -4,17 +4,17 @@
|
|||
<description>Base webbpm package</description>
|
||||
<groupId>ru.cg.webbpm.packages.base</groupId>
|
||||
<artifactId>resources</artifactId>
|
||||
<version>3.192.4</version>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<version>3.192.5</version>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
|
||||
<backendModule>
|
||||
<groupId>ru.cg.webbpm.packages.base</groupId>
|
||||
<artifactId>backend</artifactId>
|
||||
<version>3.192.4</version>
|
||||
<version>3.192.5</version>
|
||||
</backendModule>
|
||||
<frontendModule>
|
||||
<packageName>@webbpm/base-package</packageName>
|
||||
<version>3.192.4</version>
|
||||
<version>3.192.5</version>
|
||||
</frontendModule>
|
||||
</packageInfo>
|
||||
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_отмены.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_очистки_фильтра.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_удаления.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_загрузки.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_вызова_ошибки.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<documentation>component/buttons/Кнопка_выполнения_бизнес-процесса.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_выполнения_SQL.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_для_фильтрации.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_навигации.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_сохранения.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_выбора.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_подписи.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/Кнопка_запуска_бизнес-процесса.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/reporting/Кнопка_печати_из_графа_сущности.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/buttons/reporting/Кнопка_печати_отчета_из_формы.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/containers/Сворачиваемая_панель.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/containers/Диалог.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/containers/Контейнер_с_кнопками.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/containers/Группа_полей.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/containers/Набор_фильтров.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/containers/Форма.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/containers/Горизонтальный_контейнер.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/containers/Контейнер_вкладок.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/containers/Вкладка.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/containers/Вертикальный_контейнер.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/containers/Окно.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/editable-grids/EditableGrid.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/autocomplete</localization>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/check-box</localization>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/combo-box</localization>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/date-time-picker</localization>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/money-field</localization>
|
||||
<internal>true</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/number-field</localization>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/one-to-many</localization>
|
||||
<internal>true</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/one-to-many</localization>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -6,11 +6,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/read-only</localization>
|
||||
<internal>true</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@
|
|||
<category>editable-grids</category>
|
||||
<internal>true</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>Статичный_выпадающий_список_колонки_таблицы.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/text-area</localization>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/text-field</localization>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
<localization>META-INF/components/localization/editable-grids/time-picker</localization>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/ФИАС.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Поле_ввода_с_подбором_значения.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Флаг.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Выпадающий_список.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Дата.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/EditableOneToMany.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Файл.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Файл.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/ManyToMany.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/ManyToManyField.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Денежное_поле.html</documentation>
|
||||
<internal>true</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Числовое_поле.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/OneToMany.html</documentation>
|
||||
<internal>true</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/OneToMany.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Переключатель.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/SignVerification.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Статичный_выпадающий_список.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Статичный_переключатель.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Текст.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Многострочное_поле.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
|
|
@ -8,11 +8,11 @@
|
|||
<documentation>component/fields/Текстовое_поле.html</documentation>
|
||||
<internal>false</internal>
|
||||
<versions>
|
||||
<studioVersion>3.192.4</studioVersion>
|
||||
<studioVersion>3.192.5</studioVersion>
|
||||
<packageVersions>
|
||||
<entry>
|
||||
<key>ru.cg.webbpm.packages.base.resources</key>
|
||||
<value>3.192.4</value>
|
||||
<value>3.192.5</value>
|
||||
</entry>
|
||||
</packageVersions>
|
||||
</versions>
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue