package com.flightfeather.grid.service.impl
|
|
import com.flightfeather.grid.config.exception.BizException
|
import com.flightfeather.grid.domain.ds1.entity.ClueConclusion
|
import com.flightfeather.grid.domain.ds1.entity.ClueQuestion
|
import com.flightfeather.grid.domain.ds1.mapper.ClueConclusionMapper
|
import com.flightfeather.grid.domain.ds1.mapper.ClueMapper
|
import com.flightfeather.grid.external.ClueHttpService
|
import com.flightfeather.grid.service.ClueConclusionService
|
import com.flightfeather.grid.vo.BaseResponse
|
import org.springframework.stereotype.Service
|
import tk.mybatis.mapper.entity.Example
|
import java.util.*
|
|
@Service
|
class ClueConclusionServiceImpl(
|
val clueConclusionMapper: ClueConclusionMapper,
|
val clueMapper: ClueMapper,
|
val clueHttpService: ClueHttpService,
|
) : ClueConclusionService {
|
|
override fun uploadConclusion(clueConclusion: ClueConclusion): Boolean {
|
clueConclusion.cId ?: throw BizException("线索id缺失")
|
clueConclusion.ccUploaded = false
|
clueConclusion.ccCreateTime = Date()
|
try {
|
val conclusion = clueConclusionMapper.selectOne(ClueConclusion().apply { cId = clueConclusion.cId })
|
// 更新
|
return if (conclusion != null) {
|
if (conclusion.ccUploaded) throw BizException("线索结论已推送,无法修改")
|
clueConclusion.ccId = conclusion.ccId
|
val res = clueConclusionMapper.updateByPrimaryKeySelective(clueConclusion)
|
res == 1
|
}
|
// 插入
|
else {
|
val res = clueConclusionMapper.insert(clueConclusion)
|
res == 1
|
}
|
} catch (e: Exception) {
|
throw BizException("每条线索最多能有一条结论,该线索结论存在多条,请检查系统逻辑")
|
}
|
}
|
|
override fun getClueConclusion(clueId: String): ClueConclusion? {
|
val res = clueConclusionMapper.selectByExample(Example(ClueConclusion::class.java).apply {
|
createCriteria().andEqualTo("cId", clueId)
|
})
|
return if (res.isNotEmpty()) res[0] else null
|
}
|
|
override fun pushConclusion(conclusionIdList: List<String>?): Boolean {
|
clueConclusionMapper.selectByExample(Example(ClueConclusion::class.java).apply {
|
createCriteria().andEqualTo("ccUploaded", false).apply {
|
conclusionIdList?.let {
|
andIn("ccId", it)
|
}
|
}
|
}).forEach {
|
it?.let {
|
clueHttpService.uploadConclusion(it)
|
}
|
}
|
return true
|
}
|
}
|