Merge branch 'SUPPORT-8943_seamlessness' of 10.10.31.70:/ervu-account-applications into SUPPORT-8943_seamlessness

This commit is contained in:
kochetkov 2025-03-26 12:40:26 +03:00
commit 84585e9965
160 changed files with 952 additions and 371 deletions

View file

@ -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>

View file

@ -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

View file

@ -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());

View file

@ -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();
}
}

View file

@ -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);

View file

@ -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

View file

@ -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;
/**
* Документы в заявке пользователя
*/

View file

@ -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));
}
}

View file

@ -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);
}

View file

@ -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();
}
}

View file

@ -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();
}
}

View file

@ -0,0 +1,9 @@
package ru.micord.ervu.account_applications.dto.activation;
import java.util.List;
/**
* @author gulnaz
*/
public record ChangeActivationData(List<String> accountIdList) {
}

View file

@ -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) {
}

View file

@ -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);
}
}

View file

@ -1,9 +0,0 @@
package ru.micord.ervu.account_applications.dto.deactivate;
import java.util.List;
/**
* @author gulnaz
*/
public record DeactivateData(List<String> accountIdList) {
}

View file

@ -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);
}
}

View file

@ -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) {
}

View file

@ -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);
}
}

View file

@ -5,5 +5,6 @@ package ru.micord.ervu.account_applications.enums;
*/
public enum ApplicationStatus {
AGREED,
ACCEPTED
ACCEPTED,
SENT
}

View file

@ -9,6 +9,7 @@ public enum ProcessKey {
EDIT_ACCOUNT("milBaseEditAccountIDMProcess"),
EDIT_ROLES("milBaseEditAccountRolesIDMSubProcess"),
DEACTIVATE("milBaseMassDeActivateAccountIDMProcess"),
ACTIVATE("milBaseMassActivateAccountIDMProcess"),
RESET_PASSWORD("milBaseResetPasswordProcess");
private final String value;

View file

@ -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) {

View file

@ -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());
}
}
}

View file

@ -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);
}
}

View file

@ -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)

View file

@ -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);
}
}

View file

@ -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) {}
}

View file

@ -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);
}
}
}

View file

@ -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>

View file

@ -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"/>
<include file="20250324-SUPPORT-9023_add_sent_date.xml" relativeToChangelogFile="true"/>
</databaseChangeLog>

View file

@ -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"
}

View file

@ -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",

View file

@ -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);

View file

@ -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"
}

View file

@ -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);

View file

@ -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>

View file

@ -60,7 +60,7 @@
<ul>
<li>&#x41e;&#x431;&#x440;&#x430;&#x437;&#x435;&#x446; &#x432;&#x43d;&#x435;&#x448;&#x43d;&#x435;&#x439; &#x441;&#x441;&#x44b;&#x43b;&#x43a;&#x438;: <code>https://www.wildberries.ru/catalog/${sku}/detail.aspx</code></li>
<li>&#x41e;&#x431;&#x440;&#x430;&#x437;&#x435;&#x446; &#x432;&#x43d;&#x443;&#x442;&#x440;&#x435;&#x43d;&#x43d;&#x435;&#x439; &#x441;&#x441;&#x44b;&#x43b;&#x43a;&#x438;: <code>products/ru.cg.webbpm.packages.base:resources:jar:3.192.4</code></li>
<li>&#x41e;&#x431;&#x440;&#x430;&#x437;&#x435;&#x446; &#x432;&#x43d;&#x443;&#x442;&#x440;&#x435;&#x43d;&#x43d;&#x435;&#x439; &#x441;&#x441;&#x44b;&#x43b;&#x43a;&#x438;: <code>products/ru.cg.webbpm.packages.base:resources:jar:3.192.5</code></li>
</ul>
</li>
<li>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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