|
|
@@ -2,23 +2,11 @@
|
|
|
|
|
|
package com.datacomsolusindo.migration
|
|
|
|
|
|
-import com.datacomsolusindo.cpx_shared_code.entity.Account
|
|
|
-import com.datacomsolusindo.cpx_shared_code.entity.Area
|
|
|
import com.datacomsolusindo.cpx_shared_code.entity.BaseEntity
|
|
|
import com.datacomsolusindo.cpx_shared_code.entity.Budget
|
|
|
-import com.datacomsolusindo.cpx_shared_code.entity.CdrModifier
|
|
|
-import com.datacomsolusindo.cpx_shared_code.entity.Corcos
|
|
|
-import com.datacomsolusindo.cpx_shared_code.entity.CostCenter
|
|
|
-import com.datacomsolusindo.cpx_shared_code.entity.Organization
|
|
|
import com.datacomsolusindo.cpx_shared_code.entity.Pbx
|
|
|
-import com.datacomsolusindo.cpx_shared_code.entity.PhoneUser
|
|
|
import com.datacomsolusindo.cpx_shared_code.entity.PhoneUserPbx
|
|
|
-import com.datacomsolusindo.cpx_shared_code.entity.Provider
|
|
|
-import com.datacomsolusindo.cpx_shared_code.entity.Rate
|
|
|
import com.datacomsolusindo.cpx_shared_code.entity.Rights
|
|
|
-import com.datacomsolusindo.cpx_shared_code.entity.Transaction
|
|
|
-import com.datacomsolusindo.cpx_shared_code.entity.Trunk
|
|
|
-import com.datacomsolusindo.cpx_shared_code.entity.WebUser
|
|
|
import com.datacomsolusindo.cpx_shared_code.service.ApiService
|
|
|
import com.datacomsolusindo.cpx_shared_code.service.CpDecrypt
|
|
|
import com.datacomsolusindo.cpx_shared_code.utility.*
|
|
|
@@ -125,7 +113,7 @@ class MigrationEntity(val passwordEncoder: PasswordEncoder, val queryNativeServi
|
|
|
}
|
|
|
} else {
|
|
|
val chunkData = rootData
|
|
|
-// .take(3)
|
|
|
+// .take(5)
|
|
|
.chunked(1000)
|
|
|
logger.info("data migration class ${clazz.simpleName} chunk data ${chunkData.size}")
|
|
|
chunkData.forEachIndexed { _, data ->
|
|
|
@@ -181,7 +169,12 @@ class MigrationEntity(val passwordEncoder: PasswordEncoder, val queryNativeServi
|
|
|
): MutableMap<String, Any?> {
|
|
|
val data = mutableMapOf<String, Any?>()
|
|
|
// Direct fields
|
|
|
- fieldRoots.forEach { (target, source) -> data[target] = row[source] }
|
|
|
+ fieldRoots.forEach { (target, source) ->
|
|
|
+ data[target] = when {
|
|
|
+ target == "pbx__default" -> source
|
|
|
+ else -> row[source]
|
|
|
+ }
|
|
|
+ }
|
|
|
// Join fields
|
|
|
joinRoots.forEach { (target, sourceFull) ->
|
|
|
val value = when {
|
|
|
@@ -404,20 +397,29 @@ class MigrationEntity(val passwordEncoder: PasswordEncoder, val queryNativeServi
|
|
|
// phoneUserPbx
|
|
|
val phoneUserPbxIds: MutableList<Any> = mutableListOf()
|
|
|
val finalMapEntity = if (clazz.simpleName == "PhoneUser") {
|
|
|
- (finalizer["pbx.list"]?.toString() ?: finalizer["pbx__list"]?.toString())?.let {
|
|
|
- it.split(";").forEach { fi ->
|
|
|
- findUidByCode(Pbx::class.java, fi)?.let { id -> phoneUserPbxIds.add(id) }
|
|
|
+ val pbxId = finalizer["pbx.list"]?.toString() ?: ""
|
|
|
+ val pbxGroup = finalizer["pbx__list"]?.toString() ?: ""
|
|
|
+ if (pbxId.isBlank() && pbxGroup.isBlank()) {
|
|
|
+ finalizer["pbx__default"]?.toString()?.let { pbx ->
|
|
|
+ if (pbx.isNotBlank()) {
|
|
|
+ phoneUserPbxIds.add(pbx)
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- finalizer["pbx_id"]?.toString()?.let {
|
|
|
- if (it.isNotBlank()) {
|
|
|
- phoneUserPbxIds.addAll(it.split(";"))
|
|
|
+ } else {
|
|
|
+ if (pbxId.isNotBlank()) {
|
|
|
+ phoneUserPbxIds.addAll(pbxId.split(";"))
|
|
|
+ }
|
|
|
+ if (pbxGroup.isNotBlank()) {
|
|
|
+ phoneUserPbxIds.addAll(pbxGroup.split(";"))
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
val finalMap = finalizer.filterNot { fi ->
|
|
|
listOf(
|
|
|
"pbx.list",
|
|
|
"pbx__list",
|
|
|
+ "pbx__default",
|
|
|
"pbx_id",
|
|
|
"extension",
|
|
|
"pin",
|
|
|
@@ -725,7 +727,7 @@ class QueryNativeService(
|
|
|
"phoneuserpbx" -> "phone_user_uid;pbx_uid"
|
|
|
"budget" -> "user_uid"
|
|
|
else -> migrationSettingService.schema.firstOrNull {
|
|
|
- it.table.equals(clazz.simpleName, ignoreCase = true)
|
|
|
+ it.target.equals(clazz.simpleName, ignoreCase = true)
|
|
|
}?.unique
|
|
|
}
|
|
|
|
|
|
@@ -736,7 +738,10 @@ class QueryNativeService(
|
|
|
val isUpdate = uidFromDb != null
|
|
|
|
|
|
val fields = mutableListOf("uid")
|
|
|
- val finalMap = mapData.filterNot { it.key == "cpid" }
|
|
|
+ val finalMap = mapData
|
|
|
+ .filterNot { it.key == "cpid" }
|
|
|
+ .mapValues { it.value?.toString()?.ifEmpty { null } }
|
|
|
+
|
|
|
finalMap.keys.forEach {
|
|
|
val t = it.replace("_id", "_uid")
|
|
|
fields.add(t)
|