diff --git a/api/build.gradle b/api/build.gradle index 33b3fbf..ccd138f 100644 --- a/api/build.gradle +++ b/api/build.gradle @@ -30,8 +30,8 @@ repositories { } dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" - implementation 'org.apache.commons:commons-lang3:3.6' + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10" + implementation 'org.apache.commons:commons-lang3:3.10' implementation 'com.github.evotor:query-api:1.0.0' } diff --git a/api/src/main/java/ru/evotor/egais/api/model/dictionary/QueryRestBCodeRequestType.kt b/api/src/main/java/ru/evotor/egais/api/model/dictionary/QueryRestBCodeRequestType.kt new file mode 100644 index 0000000..4f29ebe --- /dev/null +++ b/api/src/main/java/ru/evotor/egais/api/model/dictionary/QueryRestBCodeRequestType.kt @@ -0,0 +1,7 @@ +package ru.evotor.egais.api.model.dictionary + +enum class QueryRestBCodeRequestType { + AUTO_REQUEST, + MANUAL_REQUEST, + UNKNOWN +} \ No newline at end of file diff --git a/api/src/main/java/ru/evotor/egais/api/model/dictionary/QueryStatus.kt b/api/src/main/java/ru/evotor/egais/api/model/dictionary/QueryStatus.kt new file mode 100644 index 0000000..a7bf5f7 --- /dev/null +++ b/api/src/main/java/ru/evotor/egais/api/model/dictionary/QueryStatus.kt @@ -0,0 +1,8 @@ +package ru.evotor.egais.api.model.dictionary + +enum class QueryStatus { + NOT_PROCESSED, + FINISH, + REJECTED, + UNKNOWN +} \ No newline at end of file diff --git a/api/src/main/java/ru/evotor/egais/api/model/document/rest_b_code/QueryRestBCode.kt b/api/src/main/java/ru/evotor/egais/api/model/document/rest_b_code/QueryRestBCode.kt new file mode 100644 index 0000000..1ea0f77 --- /dev/null +++ b/api/src/main/java/ru/evotor/egais/api/model/document/rest_b_code/QueryRestBCode.kt @@ -0,0 +1,16 @@ +package ru.evotor.egais.api.model.document.rest_b_code + +import ru.evotor.egais.api.model.dictionary.QueryRestBCodeRequestType +import ru.evotor.egais.api.model.dictionary.QueryStatus +import ru.evotor.egais.api.model.document.EgaisDocument +import java.util.UUID + +class QueryRestBCode( + val uuid: UUID, + val owner: String, + val informF2RegId: String, + val status: QueryStatus, + val rejectComment: String?, + val utmDocumentUuid: UUID, + val requestType: QueryRestBCodeRequestType? +) : EgaisDocument() \ No newline at end of file diff --git a/api/src/main/java/ru/evotor/egais/api/model/document/rest_b_code/ReplyRestBCode.kt b/api/src/main/java/ru/evotor/egais/api/model/document/rest_b_code/ReplyRestBCode.kt new file mode 100644 index 0000000..26dd110 --- /dev/null +++ b/api/src/main/java/ru/evotor/egais/api/model/document/rest_b_code/ReplyRestBCode.kt @@ -0,0 +1,13 @@ +package ru.evotor.egais.api.model.document.rest_b_code + +import ru.evotor.egais.api.model.document.EgaisDocument +import java.util.Date +import java.util.UUID + +class ReplyRestBCode( + val uuid: UUID, + val owner: String, + val restsDate: Date?, + val informF2RegId: String, + val utmDocumentUuid: UUID +) : EgaisDocument() \ No newline at end of file diff --git a/api/src/main/java/ru/evotor/egais/api/provider/rest_b_code/QueryRestBCodeContract.kt b/api/src/main/java/ru/evotor/egais/api/provider/rest_b_code/QueryRestBCodeContract.kt new file mode 100644 index 0000000..cec5073 --- /dev/null +++ b/api/src/main/java/ru/evotor/egais/api/provider/rest_b_code/QueryRestBCodeContract.kt @@ -0,0 +1,31 @@ +package ru.evotor.egais.api.provider.rest_b_code + +import android.net.Uri +import ru.evotor.egais.api.provider.MainContract + +internal object QueryRestBCodeContract { + const val AUTHORITY = "${MainContract.AUTHORITY_PREFIX}.queryrestbcode" + + @JvmField + val BASE_URI = Uri.parse("content://$AUTHORITY") + + @JvmField + val PATH = "QueryRestBCode" + + @JvmField + val URI = Uri.withAppendedPath(BASE_URI, PATH) + + const val COLUMN_UUID = "UUID" + + const val COLUMN_OWNER = "OWNER" + + const val COLUMN_INFORM_F2_REG_ID = "INFORM_F2_REG_ID" + + const val COLUMN_STATUS = "STATUS" + + const val COLUMN_REJECT_COMMENT = "REJECT_COMMENT" + + const val COLUMN_UTM_DOCUMENT_UUID = "UTM_DOCUMENT_UUID" + + const val COLUMN_REQUEST_TYPE = "REQUEST_TYPE" +} \ No newline at end of file diff --git a/api/src/main/java/ru/evotor/egais/api/provider/rest_b_code/ReplyRestBCodeContract.kt b/api/src/main/java/ru/evotor/egais/api/provider/rest_b_code/ReplyRestBCodeContract.kt new file mode 100644 index 0000000..da52726 --- /dev/null +++ b/api/src/main/java/ru/evotor/egais/api/provider/rest_b_code/ReplyRestBCodeContract.kt @@ -0,0 +1,27 @@ +package ru.evotor.egais.api.provider.rest_b_code + +import android.net.Uri +import ru.evotor.egais.api.provider.MainContract + +internal object ReplyRestBCodeContract { + const val AUTHORITY = "${MainContract.AUTHORITY_PREFIX}.replyrestbcode" + + @JvmField + val BASE_URI = Uri.parse("content://$AUTHORITY") + + @JvmField + val PATH = "ReplyRestBCode" + + @JvmField + val URI = Uri.withAppendedPath(BASE_URI, PATH) + + const val COLUMN_UUID = "UUID" + + const val COLUMN_OWNER = "OWNER" + + const val COLUMN_RESTS_DATE = "RESTS_DATE" + + const val COLUMN_INFORM_F2_REG_ID = "INFORM_F2_REG_ID" + + const val COLUMN_UTM_DOCUMENT_UUID = "UTM_DOCUMENT_UUID" +} \ No newline at end of file diff --git a/api/src/main/java/ru/evotor/egais/api/query/rest_b_code/QueryRestBCodeQuery.kt b/api/src/main/java/ru/evotor/egais/api/query/rest_b_code/QueryRestBCodeQuery.kt new file mode 100644 index 0000000..0ce3484 --- /dev/null +++ b/api/src/main/java/ru/evotor/egais/api/query/rest_b_code/QueryRestBCodeQuery.kt @@ -0,0 +1,133 @@ +package ru.evotor.egais.api.query.rest_b_code + +import ru.evotor.egais.api.model.dictionary.QueryRestBCodeRequestType +import ru.evotor.egais.api.model.dictionary.QueryStatus +import ru.evotor.egais.api.model.document.rest_b_code.QueryRestBCode +import ru.evotor.egais.api.provider.rest_b_code.QueryRestBCodeContract +import ru.evotor.query.Cursor +import ru.evotor.query.FilterBuilder +import java.util.* + +/** + * Класс для формирования запроса на получение + * запросов на получение марок по справке 2 (справка Б) + */ +class QueryRestBCodeQuery : + FilterBuilder( + QueryRestBCodeContract.URI + ) { + + /** + * UUID документа. + */ + @JvmField + val uuid = addFieldFilter(QueryRestBCodeContract.COLUMN_UUID) + + /** + * Отправитель запроса + */ + @JvmField + val owner = addFieldFilter(QueryRestBCodeContract.COLUMN_OWNER) + + /** + * uuid справки 2 для накладной. + */ + @JvmField + val informF2RegId = addFieldFilter(QueryRestBCodeContract.COLUMN_INFORM_F2_REG_ID) + + /** + * Статус запроса + */ + @JvmField + val status = addFieldFilter(QueryRestBCodeContract.COLUMN_STATUS) + + /** + * Комментарий от ЕГАИС + */ + @JvmField + val rejectComment = addFieldFilter(QueryRestBCodeContract.COLUMN_REJECT_COMMENT) + + /** + * ID утм документа для накладной + */ + @JvmField + val utmDocumentUuid = addFieldFilter(QueryRestBCodeContract.COLUMN_UTM_DOCUMENT_UUID) + + /** + * Тип запроса + */ + @JvmField + val requestType = + addFieldFilter(QueryRestBCodeContract.COLUMN_REQUEST_TYPE) + + override val currentQuery: QueryRestBCodeQuery + get() = this + + /** + * Класс для сортировки полей в результе запроса + */ + class SortOrder : FilterBuilder.SortOrder() { + override val currentSortOrder: SortOrder + get() = this + + @JvmField + val uuid = addFieldSorter(QueryRestBCodeContract.COLUMN_UUID) + + @JvmField + val owner = addFieldSorter(QueryRestBCodeContract.COLUMN_OWNER) + + @JvmField + val informF2RegId = addFieldSorter(QueryRestBCodeContract.COLUMN_INFORM_F2_REG_ID) + + @JvmField + val status = addFieldSorter(QueryRestBCodeContract.COLUMN_STATUS) + + @JvmField + val rejectComment = addFieldSorter(QueryRestBCodeContract.COLUMN_REJECT_COMMENT) + + @JvmField + val utmDocumentUuid = addFieldSorter(QueryRestBCodeContract.COLUMN_UTM_DOCUMENT_UUID) + + @JvmField + val requestType = addFieldSorter(QueryRestBCodeContract.COLUMN_REQUEST_TYPE) + } + + override fun getValue(cursor: Cursor): QueryRestBCode { + return createQueryRestBCode(cursor) + } + + private fun createQueryRestBCode(cursor: Cursor): QueryRestBCode { + val columnIndexUuid = + cursor.getColumnIndexOrThrow(QueryRestBCodeContract.COLUMN_UUID) + val columnIndexOwner = + cursor.getColumnIndexOrThrow(QueryRestBCodeContract.COLUMN_OWNER) + val columnIndexInformF2RegId = + cursor.getColumnIndexOrThrow(QueryRestBCodeContract.COLUMN_INFORM_F2_REG_ID) + val columnIndexStatus = + cursor.getColumnIndexOrThrow(QueryRestBCodeContract.COLUMN_STATUS) + val columnIndexRejectComment = + cursor.getColumnIndexOrThrow(QueryRestBCodeContract.COLUMN_REJECT_COMMENT) + val columnIndexUtmDocumentUuid = + cursor.getColumnIndexOrThrow(QueryRestBCodeContract.COLUMN_UTM_DOCUMENT_UUID) + val columnRequestType = + cursor.getColumnIndexOrThrow(QueryRestBCodeContract.COLUMN_REQUEST_TYPE) + + return QueryRestBCode( + UUID.fromString(cursor.getString(columnIndexUuid)), + cursor.getString(columnIndexOwner), + cursor.getString(columnIndexInformF2RegId), + try { + QueryStatus.valueOf(cursor.getString(columnIndexStatus)) + } catch (e: Exception) { + QueryStatus.UNKNOWN + }, + cursor.getString(columnIndexRejectComment), + UUID.fromString(cursor.getString(columnIndexUtmDocumentUuid)), + try { + QueryRestBCodeRequestType.valueOf(cursor.getString(columnRequestType)) + } catch (e: Exception) { + QueryRestBCodeRequestType.UNKNOWN + } + ) + } +} \ No newline at end of file diff --git a/api/src/main/java/ru/evotor/egais/api/query/rest_b_code/ReplyRestBCodeQuery.kt b/api/src/main/java/ru/evotor/egais/api/query/rest_b_code/ReplyRestBCodeQuery.kt new file mode 100644 index 0000000..9038b6e --- /dev/null +++ b/api/src/main/java/ru/evotor/egais/api/query/rest_b_code/ReplyRestBCodeQuery.kt @@ -0,0 +1,102 @@ +package ru.evotor.egais.api.query.rest_b_code + +import ru.evotor.egais.api.model.document.rest_b_code.ReplyRestBCode +import ru.evotor.egais.api.provider.rest_b_code.ReplyRestBCodeContract +import ru.evotor.query.Cursor +import ru.evotor.query.FilterBuilder +import java.text.SimpleDateFormat +import java.util.* + +/** + * Класс для формирования запроса на получение результатов отправки + * запросов на получение марок по справке 2 (справка Б) + */ +class ReplyRestBCodeQuery: FilterBuilder( + ReplyRestBCodeContract.URI +) { + + private val dateFormat by lazy(LazyThreadSafetyMode.NONE) { + SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()) + } + + /** + * UUID документа. + */ + @JvmField + val uuid = addFieldFilter(ReplyRestBCodeContract.COLUMN_UUID) + + /** + * Отправитель запроса + */ + @JvmField + val owner = addFieldFilter(ReplyRestBCodeContract.COLUMN_OWNER) + + /** + * Дата обновления марок + */ + @JvmField + val restsDate = addFieldFilter(ReplyRestBCodeContract.COLUMN_RESTS_DATE) + + /** + * uuid справки 2 для накладной. + */ + @JvmField + val informF2RegId = addFieldFilter(ReplyRestBCodeContract.COLUMN_INFORM_F2_REG_ID) + + + /** + * ID утм документа для ответа на запрос + */ + @JvmField + val utmDocumentUuid = addFieldFilter(ReplyRestBCodeContract.COLUMN_UTM_DOCUMENT_UUID) + + override val currentQuery: ReplyRestBCodeQuery + get() = this + + /** + * Класс для сортировки полей в результе запроса + */ + class SortOrder : FilterBuilder.SortOrder() { + override val currentSortOrder: SortOrder + get() = this + + @JvmField + val uuid = addFieldSorter(ReplyRestBCodeContract.COLUMN_UUID) + + @JvmField + val owner = addFieldSorter(ReplyRestBCodeContract.COLUMN_OWNER) + + @JvmField + val restsDate = addFieldSorter(ReplyRestBCodeContract.COLUMN_RESTS_DATE) + + @JvmField + val informF2RegId = addFieldSorter(ReplyRestBCodeContract.COLUMN_INFORM_F2_REG_ID) + + @JvmField + val utmDocumentUuid = addFieldSorter(ReplyRestBCodeContract.COLUMN_UTM_DOCUMENT_UUID) + } + + override fun getValue(cursor: Cursor): ReplyRestBCode { + return createReplyRestBCode(cursor) + } + + private fun createReplyRestBCode(cursor: Cursor): ReplyRestBCode { + val columnUuid = + cursor.getColumnIndexOrThrow(ReplyRestBCodeContract.COLUMN_UUID) + val columnOwner = + cursor.getColumnIndexOrThrow(ReplyRestBCodeContract.COLUMN_OWNER) + val columnRestsDate = + cursor.getColumnIndexOrThrow(ReplyRestBCodeContract.COLUMN_RESTS_DATE) + val columnInformF2RegId = cursor.getColumnIndexOrThrow(ReplyRestBCodeContract.COLUMN_INFORM_F2_REG_ID) + val columnUtmDocumentUuid = + cursor.getColumnIndexOrThrow(ReplyRestBCodeContract.COLUMN_UTM_DOCUMENT_UUID) + + return ReplyRestBCode( + UUID.fromString(cursor.getString(columnUuid)), + cursor.getString(columnOwner), + dateFormat.parse(cursor.getString(columnRestsDate)) ?: Date(), + cursor.getString(columnInformF2RegId), + UUID.fromString(cursor.getString(columnUtmDocumentUuid)) + ) + } +} \ No newline at end of file diff --git a/build.gradle b/build.gradle deleted file mode 100644 index d12c114..0000000 --- a/build.gradle +++ /dev/null @@ -1,27 +0,0 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. - -buildscript { - ext.kotlin_version = '1.6.0' - repositories { - jcenter() - google() - } - - dependencies { - classpath 'com.android.tools.build:gradle:4.2.1' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.6.0" - } -} - -allprojects { - repositories { - google() - jcenter() - maven { url 'https://jitpack.io' } - } -} - -task clean(type: Delete) { - delete rootProject.buildDir -} diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..7b9955c --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,28 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + repositories { + mavenCentral() + google() + + } + + dependencies { + classpath("com.android.tools.build:gradle:4.2.2") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10") + classpath("org.jetbrains.dokka:dokka-gradle-plugin:1.6.0") + } +} + +allprojects { + repositories { + mavenCentral() + google() + maven { + url = uri("https://jitpack.io") + } + } +} + +tasks.register("clean",Delete::class){ + delete(rootProject.buildDir) +}