package cn.flightfeather.supervision.lightshare.service.impl
|
|
import cn.flightfeather.supervision.common.utils.Constant
|
import cn.flightfeather.supervision.common.utils.UUIDGenerator
|
import cn.flightfeather.supervision.domain.ds1.entity.Scense
|
import cn.flightfeather.supervision.domain.ds1.entity.Userinfo
|
import cn.flightfeather.supervision.domain.ds1.mapper.ScenseMapper
|
import cn.flightfeather.supervision.domain.ds1.mapper.UserinfoMapper
|
import cn.flightfeather.supervision.domain.ds2.entity.LedgerMediaFile
|
import cn.flightfeather.supervision.domain.ds2.entity.LedgerRecord
|
import cn.flightfeather.supervision.domain.ds2.entity.LedgerSubType
|
import cn.flightfeather.supervision.domain.ds2.entity.UserMap
|
import cn.flightfeather.supervision.domain.ds2.mapper.LedgerMediaFileMapper
|
import cn.flightfeather.supervision.domain.ds2.mapper.LedgerRecordMapper
|
import cn.flightfeather.supervision.domain.ds2.mapper.LedgerSubTypeMapper
|
import cn.flightfeather.supervision.domain.ds2.mapper.UserMapMapper
|
import cn.flightfeather.supervision.lightshare.service.LedgerService
|
import cn.flightfeather.supervision.lightshare.vo.BaseResponse
|
import cn.flightfeather.supervision.lightshare.vo.CopyLedgerVo
|
import cn.flightfeather.supervision.lightshare.vo.SceneLedgerSummary
|
import org.springframework.stereotype.Service
|
import tk.mybatis.mapper.entity.Example
|
import java.util.*
|
|
@Service
|
class LedgerServiceImpl(
|
private val scenseMapper: ScenseMapper,
|
private val userMapMapper: UserMapMapper,
|
private val userinfoMapper: UserinfoMapper,
|
private val ledgerSubTypeMapper: LedgerSubTypeMapper,
|
private val ledgerRecordMapper: LedgerRecordMapper,
|
private val ledgerMediaFileMapper: LedgerMediaFileMapper
|
) : LedgerService {
|
|
|
override fun getLedgerSummary(time: String, districtCode: String, sceneType: Byte): List<SceneLedgerSummary> {
|
val result = mutableListOf<SceneLedgerSummary>()
|
val year = time.split("-")[0]
|
val month = time.split("-")[1]
|
scenseMapper.selectByExample(Example(Scense::class.java).apply {
|
createCriteria().andEqualTo("districtcode", districtCode)
|
.andEqualTo("typeid", sceneType)
|
.andNotEqualTo("extension1", "0")
|
}).forEach {
|
// 记录场景信息
|
val sceneLedgerSummary = SceneLedgerSummary().apply {
|
scene = it
|
this.time = time
|
}
|
// 查询本系统和飞羽环境系统的各自用户信息
|
userinfoMapper.selectByExample(Example(Userinfo::class.java).apply {
|
createCriteria().andEqualTo("dGuid", it.guid)
|
})?.takeIf { i-> i.isNotEmpty() }?.let {
|
val user = it[0]
|
userMapMapper.selectByExample(Example(UserMap::class.java).apply {
|
createCriteria().andEqualTo("svUserId", user.guid)
|
})?.takeIf { m ->m.isNotEmpty() }?.let { m->
|
// 记录飞羽环境系统中的用户id
|
sceneLedgerSummary.tzUserId = m[0].tzUserId
|
|
// 查询用户的台账完成情况
|
val typeCount = ledgerSubTypeMapper.selectCountByExample(Example(LedgerSubType::class.java).apply {
|
createCriteria().andEqualTo(
|
"lScenetype",
|
Constant.SceneType.typeMap(sceneLedgerSummary.scene?.typeid)
|
)
|
.andEqualTo("lNeedupdate", true)
|
})
|
|
val ledgerCount = ledgerRecordMapper.getNeedUpdateCount(
|
sceneLedgerSummary.tzUserId,
|
year.toInt(),
|
month.toByte()
|
)
|
|
sceneLedgerSummary.summary = when (typeCount - ledgerCount) {
|
typeCount -> 0
|
in 1 until typeCount -> 1
|
0 -> 2
|
else -> 2
|
}
|
}
|
}
|
|
result.add(sceneLedgerSummary)
|
}
|
|
return result
|
}
|
|
override fun copyLedger(userId: String, time: String, copyLedgerList: List<CopyLedgerVo>): BaseResponse<String> {
|
val year = time.split("-")[0]
|
val month = time.split("-")[1]
|
copyLedgerList.forEach {
|
//去重判断
|
val r = ledgerRecordMapper.selectByExample(Example(LedgerRecord::class.java).apply {
|
createCriteria().andEqualTo("lrSubmitid", userId)
|
.andEqualTo("lsSubtypeid", it.subTypeId)
|
.andEqualTo("lrYear", year)
|
.andEqualTo("lrMonth", month)
|
})
|
if (r.size > 0) {
|
return@forEach
|
}
|
|
val y = it.time?.split("-")?.get(0) ?: return@forEach
|
val m = it.time?.split("-")?.get(1) ?: return@forEach
|
ledgerRecordMapper.selectByExample(Example(LedgerRecord::class.java).apply {
|
createCriteria().andEqualTo("lrSubmitid", userId)
|
.andEqualTo("lsSubtypeid", it.subTypeId)
|
.andEqualTo("lrYear", y)
|
.andEqualTo("lrMonth", m)
|
}).forEach record@ {lr ->
|
//获取记录对应的文件信息
|
val fileList = ledgerMediaFileMapper.selectByExample(Example(LedgerMediaFile::class.java).apply {
|
createCriteria().andEqualTo("lrGuid", lr.lrGuid)
|
})
|
if (fileList.size == 0) return@record
|
val file = fileList[0] ?: return@record
|
|
//修改记录信息,复制为新的台账
|
lr.lrGuid = UUIDGenerator.generate16ShortUUID()
|
lr.lrYear = year.toInt()
|
lr.lrMonth = month.toByte()
|
lr.lrIssubmitontime = true
|
lr.lrSubmitdate = Date()
|
lr.lrExtension2 = "copy"//表明是复制的台账
|
ledgerRecordMapper.insert(lr)
|
|
//修改对应的文件信息
|
file.apply {
|
mfGuid = UUIDGenerator.generate16ShortUUID()
|
lrGuid = lr.lrGuid
|
mfSavetime = Date()
|
}
|
ledgerMediaFileMapper.insert(file)
|
}
|
}
|
|
return BaseResponse(true)
|
}
|
}
|