package cn.flightfeather.supervision.datafetch
|
|
import cn.flightfeather.supervision.common.net.NCHttpService
|
import cn.flightfeather.supervision.domain.ds1.entity.NightConstruction
|
import cn.flightfeather.supervision.domain.ds1.mapper.NightConstructionMapper
|
import cn.flightfeather.supervision.common.utils.DateUtil
|
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 com.github.pagehelper.PageHelper
|
import org.springframework.beans.factory.annotation.Autowired
|
import org.springframework.stereotype.Component
|
import org.springframework.transaction.annotation.Transactional
|
import tk.mybatis.mapper.entity.Example
|
import java.util.*
|
import javax.annotation.PostConstruct
|
|
/**
|
* 获取静安区夜间施工许可证信息
|
*/
|
@Component
|
class FetchNightConstruction : FetchData() {
|
|
companion object {
|
private lateinit var instance: FetchNightConstruction
|
|
private const val PROVINCE_CODE = "31"
|
private const val CITY_CODE = "3100"
|
private const val DISTRICT_CODE = "310106"
|
private const val PROVINCE_NAME = "上海市"
|
private const val CITY_NAME = "上海市"
|
private const val DISTRICT_NAME = "静安区"
|
|
private const val DEFAULT_TIME = "2022-01-01 00:00:00"
|
}
|
|
@Autowired
|
lateinit var nightConstructionMapper: NightConstructionMapper
|
|
@Autowired
|
lateinit var scenseMapper: ScenseMapper
|
|
@Autowired
|
lateinit var userinfoMapper: UserinfoMapper
|
|
private val dateUtil = DateUtil()
|
|
@PostConstruct
|
fun init() {
|
instance = this
|
this.nightConstructionMapper = instance.nightConstructionMapper
|
this.scenseMapper = instance.scenseMapper
|
this.userinfoMapper = instance.userinfoMapper
|
}
|
|
override fun fetch() {
|
PageHelper.startPage<NightConstruction>(1, 1)
|
val res = nightConstructionMapper.selectByExample(Example(NightConstruction::class.java).apply {
|
createCriteria().andEqualTo("ncProvinceCode", PROVINCE_CODE)
|
.andEqualTo("ncCityCode", CITY_CODE)
|
.andEqualTo("ncDistrictCode", DISTRICT_CODE)
|
orderBy("ncCreateTime").desc()
|
})
|
res.let {
|
val timeStr = if (it.isNotEmpty()) {
|
val cal = Calendar.getInstance().apply { time = it[0]?.ncCreateTime }
|
cal.add(Calendar.DAY_OF_MONTH, -1)
|
dateUtil.DateToString(cal.time, DateUtil.DateStyle.YYYY_MM_DD_HH_MM_SS) ?: DEFAULT_TIME
|
} else {
|
DEFAULT_TIME
|
}
|
// val timeStr = DEFAULT_TIME
|
|
|
try {
|
NCHttpService.getFile(timeStr)?.forEach {e ->
|
if (e.isJsonObject) {
|
val vo = e.asJsonObject
|
val nightConstruction = NightConstruction().apply {
|
ncNum = vo["nightallnum"].asString
|
ncItemName = vo["itemName"].asString
|
ncItemUnit = vo["itemUnit"].asString
|
ncConstructionUnit = vo["constructionUnit"].asString
|
ncPerson = vo["person"].asString
|
ncApplyContent = vo["applyContent"].asString
|
ncStartDate = dateUtil.StringToDate(vo["startDate"].asString)
|
ncEndDate = dateUtil.StringToDate(vo["endDate"].asString)
|
ncFileName = vo["filename"].asString
|
ncCreateTime = dateUtil.StringToDate(vo["createtime"].asString)
|
ncUrl = vo["url"].asString
|
|
ncProvinceCode = PROVINCE_CODE
|
ncProvinceName = PROVINCE_NAME
|
ncCityCode = CITY_CODE
|
ncCityName = CITY_NAME
|
ncDistrictCode = DISTRICT_CODE
|
ncDistrictName = DISTRICT_NAME
|
}
|
val history = nightConstructionMapper.selectByExample(Example(NightConstruction::class.java)
|
.apply {
|
createCriteria().andEqualTo("ncNum", nightConstruction.ncNum)
|
})
|
// 判断该夜施文件是否存在
|
if (history.isNotEmpty()) return@forEach
|
|
var sceneId: String? = null
|
var userId: String? = null
|
// 获取该夜施对应企业的历史记录
|
val records = nightConstructionMapper.selectByExample(Example(NightConstruction::class.java)
|
.apply {
|
createCriteria().andEqualTo("ncItemName", nightConstruction.ncItemName)
|
})
|
if (records.isNotEmpty()) {
|
sceneId = records[0]?.ncSceneId
|
userId = records[0]?.ncUserId
|
}
|
// 若无历史记录,查找场景表,判断是否有相同名称的场景
|
else {
|
val scenes = scenseMapper.selectByExample(Example(Scense::class.java).apply {
|
createCriteria().andEqualTo("name", nightConstruction.ncItemName)
|
})
|
if (scenes.isNotEmpty()) {
|
sceneId = scenes[0].guid
|
val user = userinfoMapper.selectByExample(Example(Userinfo::class.java).apply {
|
createCriteria().andEqualTo("dGuid", sceneId)
|
})
|
if (user.isNotEmpty()) userId = user[0].guid
|
}
|
}
|
nightConstruction.ncUserId = userId
|
nightConstruction.ncSceneId = sceneId
|
|
nightConstructionMapper.insert(nightConstruction)
|
}
|
}
|
} catch (e: Exception) {
|
e.printStackTrace()
|
}
|
}
|
}
|
}
|