diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml index 44f93a1..bd5e86e 100644 --- a/.idea/inspectionProfiles/Project_Default.xml +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -13,5 +13,8 @@ + + + \ No newline at end of file diff --git a/src/backend/src/main/kotlin/club/itstudio/itmanager/mapper/typehandler/TimeTypeHandler.kt b/src/backend/src/main/kotlin/club/itstudio/itmanager/mapper/typehandler/TimeTypeHandler.kt new file mode 100644 index 0000000..8e96dea --- /dev/null +++ b/src/backend/src/main/kotlin/club/itstudio/itmanager/mapper/typehandler/TimeTypeHandler.kt @@ -0,0 +1,49 @@ +package club.itstudio.itmanager.mapper.typehandler + +import kotlinx.datetime.LocalDateTime +import kotlinx.datetime.toJavaLocalDateTime +import kotlinx.datetime.toKotlinLocalDateTime +import org.apache.ibatis.type.BaseTypeHandler +import org.apache.ibatis.type.JdbcType +import org.apache.ibatis.type.MappedJdbcTypes +import org.apache.ibatis.type.MappedTypes +import java.sql.CallableStatement +import java.sql.PreparedStatement +import java.sql.ResultSet + +@MappedTypes(LocalDateTime::class) +@MappedJdbcTypes(JdbcType.TIMESTAMP) +class TimeTypeHandler : BaseTypeHandler() { + override fun setNonNullParameter( + ps: PreparedStatement, + i: Int, + parameter: LocalDateTime, + jdbcType: JdbcType? + ) { + ps.setObject(i, parameter.toJavaLocalDateTime()) + } + + override fun getNullableResult( + rs: ResultSet, + columnName: String + ): LocalDateTime? = + rs.getTimestamp(columnName) + ?.toLocalDateTime() + ?.toKotlinLocalDateTime() + + override fun getNullableResult( + rs: ResultSet, + columnIndex: Int + ): LocalDateTime? = + rs.getTimestamp(columnIndex) + ?.toLocalDateTime() + ?.toKotlinLocalDateTime() + + override fun getNullableResult( + cs: CallableStatement, + columnIndex: Int + ): LocalDateTime? = + cs.getTimestamp(columnIndex) + ?.toLocalDateTime() + ?.toKotlinLocalDateTime() +} \ No newline at end of file diff --git a/src/backend/src/main/kotlin/club/itstudio/itmanager/service/impl/FinanceRecordServiceImpl.kt b/src/backend/src/main/kotlin/club/itstudio/itmanager/service/impl/FinanceRecordServiceImpl.kt index 22863bd..a8dbb0f 100644 --- a/src/backend/src/main/kotlin/club/itstudio/itmanager/service/impl/FinanceRecordServiceImpl.kt +++ b/src/backend/src/main/kotlin/club/itstudio/itmanager/service/impl/FinanceRecordServiceImpl.kt @@ -3,13 +3,13 @@ package club.itstudio.itmanager.service.impl import club.itstudio.itmanager.entity.dto.FinanceRecord import club.itstudio.itmanager.mapper.FinanceRecordMapper import club.itstudio.itmanager.service.FinanceRecordService +import com.baomidou.mybatisplus.extension.kotlin.KtQueryWrapper import com.baomidou.mybatisplus.extension.plugins.pagination.Page import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl import org.slf4j.LoggerFactory import org.springframework.stereotype.Service import reactor.core.publisher.Mono import reactor.core.scheduler.Schedulers -import java.util.NoSuchElementException @Service class FinanceRecordServiceImpl : ServiceImpl(), FinanceRecordService { @@ -36,7 +36,7 @@ class FinanceRecordServiceImpl : ServiceImpl ): Mono> = blockingCall { logger.info("Paging finance records") - val wrapper = ktQuery() + val wrapper = KtQueryWrapper(FinanceRecord()) if (!keyword.isNullOrBlank()) { wrapper.and { it.like(FinanceRecord::recordNo, keyword) diff --git a/src/backend/src/main/kotlin/club/itstudio/itmanager/service/impl/ItemServiceImpl.kt b/src/backend/src/main/kotlin/club/itstudio/itmanager/service/impl/ItemServiceImpl.kt index 7d73c58..181114c 100644 --- a/src/backend/src/main/kotlin/club/itstudio/itmanager/service/impl/ItemServiceImpl.kt +++ b/src/backend/src/main/kotlin/club/itstudio/itmanager/service/impl/ItemServiceImpl.kt @@ -3,13 +3,13 @@ package club.itstudio.itmanager.service.impl import club.itstudio.itmanager.entity.dto.Item import club.itstudio.itmanager.mapper.ItemMapper import club.itstudio.itmanager.service.ItemService +import com.baomidou.mybatisplus.extension.kotlin.KtQueryWrapper import com.baomidou.mybatisplus.extension.plugins.pagination.Page import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl import org.slf4j.LoggerFactory import org.springframework.stereotype.Service import reactor.core.publisher.Mono import reactor.core.scheduler.Schedulers -import java.util.NoSuchElementException @Service class ItemServiceImpl : ServiceImpl(), ItemService { @@ -22,7 +22,7 @@ class ItemServiceImpl : ServiceImpl(), ItemService { override fun pageItems(page: Page, keyword: String?, status: String?): Mono> = blockingCall { logger.info("Paging items with keyword and status") - val wrapper = ktQuery() + val wrapper = KtQueryWrapper(Item()) if (!keyword.isNullOrBlank()) { wrapper.and { it.like(Item::name, keyword).or().like(Item::code, keyword) diff --git a/src/backend/src/main/resources/application.yaml b/src/backend/src/main/resources/application.yaml index 59787a9..588bb68 100644 --- a/src/backend/src/main/resources/application.yaml +++ b/src/backend/src/main/resources/application.yaml @@ -1,7 +1,7 @@ spring: profiles: active: private - + webflux: base-path: / @@ -37,6 +37,9 @@ spring: #username: root #password: 123456 +mybatis-plus: + type-handlers-package: club.itstudio.itmanager.mapper.typehandler + app: flow-limit: count: 1000