feiyu02
2024-08-15 196bb14112448857a885e32dc4149e308e00b01a
src/main/kotlin/cn/flightfeather/supervision/lightshare/vo/LedgerVo.kt
@@ -1,7 +1,13 @@
package cn.flightfeather.supervision.lightshare.vo
import cn.flightfeather.supervision.domain.entity.LedgerRecord
import cn.flightfeather.supervision.domain.entity.LedgerSubType
import cn.flightfeather.supervision.domain.entity.Userinfo
import cn.flightfeather.supervision.domain.enumeration.SceneType
import cn.flightfeather.supervision.infrastructure.utils.UUIDGenerator
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
import java.time.LocalDateTime
import java.time.ZoneId
import java.util.*
/**
@@ -11,34 +17,62 @@
 */
@JsonIgnoreProperties(ignoreUnknown = true)
data class LedgerVo constructor(
        //台账记录id
        var id: String? = null,
        //台账子类型ID
        var ledgerSubTypeId: Int? = null,
        //台账名称
        var ledgerName: String? = null,
        //台账类型ID
        var ledgerTypeId: Int? = null,
        //台账类型
        var ledgerType: String? = null,
        //台账是否本地填写完成
        var ledgerFinished: Boolean = false,
        //台账是否上传
        var isUpLoad: Boolean = false,
        //台账更新日期
        var updateDate: Date? = null,
        //台账更新类型(0部分更新(部分缺失、遗失)、1已更新、2无更新等)
        var updateType: Byte? = null,
        //台账多媒体文件类型
        var fileType: Int? = null,
        //台账基础多媒体文件路径
        var path1: String? = null,
        //台账基础多媒体文件备注
        var remark1: String? = null,
        //台账补充多媒体文件路径
        var path2: String? = null,
        //台账补充多媒体文件备注
        var remark2: String? = null,
        //台账所属的场景类型
        var sceneType: Int = SceneType.NoType.value
)
    //台账记录id
    var id: String? = null,
    //台账子类型ID
    var ledgerSubTypeId: Int? = null,
    //台账名称
    var ledgerName: String? = null,
    //台账类型ID
    var ledgerTypeId: Int? = null,
    //台账类型
    var ledgerType: String? = null,
    //台账是否本地填写完成
    var ledgerFinished: Boolean = false,
    //台账是否上传
    var isUpLoad: Boolean = false,
    //台账更新日期
    var updateDate: Date? = null,
    //台账更新类型(0部分更新(部分缺失、遗失)、1已更新、2无更新等)
    var updateType: Byte? = null,
    //台账多媒体文件类型
    var fileType: Int? = null,
    //台账基础多媒体文件路径
    var path1: String? = null,
    //台账基础多媒体文件备注
    var remark1: String? = null,
    //台账补充多媒体文件路径
    var path2: String? = null,
    //台账补充多媒体文件备注
    var remark2: String? = null,
    //台账所属的场景类型
    var sceneType: Int = SceneType.NoType.value,
) {
    companion object {
        fun fromLedgerSubtype(ledger: LedgerSubType?) = LedgerVo().apply {
            ledgerSubTypeId = ledger?.lsSubtypeid
            ledgerName = ledger?.lsName
            ledgerTypeId = ledger?.getlTypeid()
            ledgerType = ledger?.getlTypename()
            updateDate = Date()
            fileType = 1
        }
    }
    fun toLedgerRecord(userInfo: Userinfo?) = LedgerRecord().apply {
        val updateTime = LocalDateTime.ofInstant(updateDate?.toInstant(), ZoneId.systemDefault())
        lrGuid = UUIDGenerator.generate16ShortUUID()
        lsSubtypeid = ledgerSubTypeId
        lsSubtypename = ledgerName
        lrYear = updateTime.year
        lrMonth = updateTime.monthValue.toByte()
        lrDay = updateTime.dayOfMonth.toByte()
        lrEasubmitkind = fileType?.toByte() ?: 1
        lrSubmitid = userInfo?.guid
        lrSubmitname = userInfo?.acountname
        lrIssubmitontime = updateTime.dayOfMonth <= 10
        lrSubmitdate = Date()
        lrUpdatetype = updateType
        lrExtension1 = sceneType.toString()
    }
}