Browse Source

perbaikan default pbx phoneUser

masarif 14 hours ago
parent
commit
597162a25c

+ 1 - 1
config/general-setting.yml

@@ -182,7 +182,7 @@ redirectUrl:
 - http://localhost:4200/oauth2redirect
 - https://cmpd.telmessenger.com/oauth2redirect
 - https://app.insomnia.rest/oauth/redirect
-dataKey: aY6tKotSoUoMIi7JiTBZq0KhtC4bslM0qvnU1EZgmMJ9rsAaBP8fCV3cugOaHB%2BO0rdqCT8BLvRpW3zZRMyaZN%2BOgLPchzBSS4WXWMJ2e%2BWfVKtx1U0WBWevGkoDU3IK
+dataKey: RMyvjTZXDMBnCr3jymw9oHGUUzIJTHCULv9x%2B6xE4De56nu2OlXjkTWuk5%2B3QLfyE5PJQUBl9SIAuZOGmpIJBTHvNBFOUN%2BtwT0FzDUIKfD%2BdOcU4lJzNzo9mc2cMilw
 
 #database: 
 #  type: sqlserver

+ 7 - 5
config/migration.yml

@@ -14,6 +14,7 @@ migration:
     table: pbxlist
     history: null
     group: null
+    unique: code
     attribute:
       code: pbx_code
       name: description
@@ -110,15 +111,16 @@ migration:
       extension: history.default_extension
       organization_id: history.organization_code
       costCenter_id: history.costcenter_code
-      pbx_id: history.pbx_code
       appliedDate: history.app_datetime
       expiredDate: history.exp_datetime
-      pbx__list: group.pbx_list
       budget__maxCost: history.max_cost
       budget__warnCost: history.warn_cost
-      corcosNormal_id: history.pbx_0_day
-      corcosReducing_id: history.pbx_1_day
-      corcosBlock_id: history.pbx_1_day
+      pbx_id: history.pbx_code
+      pbx__list: group.pbx_list
+#      corcosNormal_id: history.pbx_0_day
+#      corcosReducing_id: history.pbx_1_day
+#      corcosBlock_id: history.pbx_1_day
+#      pbx__default: "01"
   - target: callTransaction
     table: calltransaction_20260127
     history: null

+ 28 - 23
src/main/kotlin/com/datacomsolusindo/migration/MigrationEntity.kt

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