| | |
| | | package cn.flightfeather.supervision.lightshare.service.impl |
| | | |
| | | import cn.flightfeather.supervision.common.utils.Constant |
| | | import cn.flightfeather.supervision.common.utils.PinYin |
| | | 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.ds1.repository.SceneRep |
| | | import cn.flightfeather.supervision.domain.ds1.repository.TaskRep |
| | | import cn.flightfeather.supervision.domain.ds1.repository.UserInfoSVRep |
| | | import cn.flightfeather.supervision.domain.ds2.entity.UserinfoTZ |
| | | import cn.flightfeather.supervision.domain.ds2.repository.UserInfoTZRep |
| | | import cn.flightfeather.supervision.lightshare.service.UserinfoService |
| | | import cn.flightfeather.supervision.lightshare.vo.AreaVo |
| | | import org.springframework.beans.BeanUtils |
| | | import org.springframework.stereotype.Service |
| | | import tk.mybatis.mapper.entity.Example |
| | | import kotlin.random.Random |
| | | import kotlin.random.nextInt |
| | | |
| | | @Service |
| | | class UserinfoServiceImpl(val userinfoMapper: UserinfoMapper, private val scenseMapper: ScenseMapper) : UserinfoService { |
| | | class UserinfoServiceImpl( |
| | | val userinfoMapper: UserinfoMapper, |
| | | private val scenseMapper: ScenseMapper, |
| | | private val userInfoSVRep: UserInfoSVRep, |
| | | private val userInfoTZRep: UserInfoTZRep, |
| | | ) : UserinfoService { |
| | | |
| | | //根据userinfo条件查询 |
| | | override fun findOneByName(userinfo: Userinfo): Userinfo? { |
| | | val example = Example(Userinfo::class.java) |
| | | val criteria = example.createCriteria() |
| | | criteria.andEqualTo("acountname", userinfo.acountname) |
| | | .andEqualTo("password", userinfo.password) |
| | | .andEqualTo("password", userinfo.password) |
| | | val result = userinfoMapper.selectByExample(example) |
| | | return if (result.isNotEmpty()) { |
| | | result[0] |
| | |
| | | return result |
| | | } |
| | | |
| | | override fun findOne(id: String): Userinfo = userinfoMapper.selectByPrimaryKey(id) |
| | | override fun findOne(id: String): Userinfo? = userinfoMapper.selectByPrimaryKey(id) |
| | | |
| | | override fun findAll(): MutableList<Userinfo> = userinfoMapper.selectAll() |
| | | |
| | | override fun save(userinfo: Userinfo): Int = userinfoMapper.insert(userinfo) |
| | | |
| | | override fun update(userinfo: Userinfo): Int = userinfoMapper.updateByPrimaryKey(userinfo) |
| | | override fun update(userinfo: Userinfo): Int { |
| | | return if (userinfo.guid.isNullOrBlank() || userinfo.acountname.isNullOrBlank() || userinfo.password.isNullOrBlank()) { |
| | | 0 |
| | | } else { |
| | | userinfoMapper.updateByPrimaryKeySelective(userinfo) |
| | | } |
| | | } |
| | | |
| | | override fun delete(id: String): Int = userinfoMapper.deleteByPrimaryKey(id) |
| | | |
| | |
| | | findByScene(sceneId)?.let { return it } |
| | | |
| | | scenseMapper.selectByPrimaryKey(sceneId)?.let { |
| | | createAccount(it) |
| | | } |
| | | return Userinfo() |
| | | } |
| | | |
| | | override fun findByScene(sceneId: String): Userinfo? { |
| | | userinfoMapper.selectByExample(Example(Userinfo::class.java).apply { |
| | | createCriteria().andEqualTo("dGuid", sceneId) |
| | | })?.takeIf { it.isNotEmpty() }?.let { return it[0] } |
| | | return null |
| | | } |
| | | |
| | | override fun getUName(sceneName: String): String { |
| | | var uName = PinYin.getPinYinHeader(sceneName) |
| | | var suffix = "" |
| | | var repeated: Boolean |
| | | var i = 1 |
| | | do { |
| | | userinfoMapper.selectByExample(Example(Userinfo::class.java).apply { |
| | | createCriteria().andEqualTo("acountname", uName + suffix) |
| | | }).let { |
| | | repeated = it.isNotEmpty() |
| | | if (repeated) { |
| | | suffix = Random.nextInt(100..999).toString() |
| | | } |
| | | } |
| | | i++ |
| | | } while (repeated && i < 20) |
| | | if (repeated) uName = UUIDGenerator.generateShortUUID() |
| | | return uName + suffix |
| | | } |
| | | |
| | | override fun autoCreateAccount() { |
| | | val sceneList = scenseMapper.selectNoAccountScene() |
| | | sceneList.forEach { |
| | | createAccount(it) |
| | | } |
| | | } |
| | | |
| | | override fun createAccount(scence: Scense):Userinfo { |
| | | scence.let { |
| | | // 判断该场景是否已有对应账户 |
| | | val user = userInfoSVRep.findUser(it.guid) |
| | | if (user != null) return Userinfo() |
| | | |
| | | val sceneName = it.name ?: return Userinfo() |
| | | val uName = getUName(sceneName) |
| | | |
| | | val userInfo = Userinfo().apply { |
| | | guid = UUIDGenerator.generate16ShortUUID() |
| | | acountname = uName |
| | |
| | | val r = userinfoMapper.insert(userInfo) |
| | | if (r == 1) { |
| | | return userInfo |
| | | } else { |
| | | return Userinfo() |
| | | } |
| | | } |
| | | return Userinfo() |
| | | } |
| | | |
| | | override fun findByScene(sceneId: String): Userinfo? { |
| | | userinfoMapper.selectByExample(Example(Userinfo::class.java).apply { |
| | | createCriteria().andEqualTo("dGuid", sceneId) |
| | | })?.takeIf { it.isNotEmpty() }?.let { return it[0] } |
| | | return null |
| | | } |
| | | |
| | | private fun getUName(sceneName: String): String { |
| | | var uName = PinYin.getPinYinHeader(sceneName) |
| | | var repeated = false |
| | | var i = 1 |
| | | do { |
| | | userinfoMapper.selectByExample(Example(Userinfo::class.java).apply { |
| | | createCriteria().andEqualTo("acountname", uName) |
| | | }).let { |
| | | repeated = it.isNotEmpty() |
| | | if (repeated) { |
| | | uName += i |
| | | } |
| | | } |
| | | i++ |
| | | } while (repeated && i < 20) |
| | | return uName |
| | | } |
| | | |
| | | override fun autoCreateAccount() { |
| | | val sceneList = scenseMapper.selectNoAccountScene() |
| | | sceneList.forEach { |
| | | createAccount(it) |
| | | override fun createAccountTZ(userinfo: Userinfo, scence: Scense): UserinfoTZ { |
| | | val userinfoTZ = UserinfoTZ() |
| | | BeanUtils.copyProperties(userinfo, userinfoTZ) |
| | | // 使用新的id |
| | | userinfoTZ.guid = UUIDGenerator.generate16ShortUUID() |
| | | // 添加区县描述 |
| | | // FIXME: 2024/4/23 目前在BaseInfo基础信息中已存储完整的行政区划,后续应将此处记录去除 |
| | | userinfoTZ.extension1 = userinfoTZ.remark |
| | | userinfoTZ.remark = null |
| | | // 场景类型转换 |
| | | userinfoTZ.extension2 = Constant.SceneType.typeMap(scence.typeid)?.toString() |
| | | // 根据acountname和realname进行重复判断 |
| | | userInfoTZRep.findOne(UserinfoTZ().apply { |
| | | acountname = userinfoTZ.acountname |
| | | realname = userinfoTZ.realname |
| | | }).takeIf { it == null }.run { |
| | | // 当没有查询结果时,插入新账户信息 |
| | | userInfoTZRep.insert(userinfoTZ) |
| | | } |
| | | } |
| | | |
| | | private fun createAccount(sence: Scense) { |
| | | sence.let { |
| | | val sceneName = it.name ?: return |
| | | val uName = getUName(sceneName) |
| | | |
| | | val userInfo = Userinfo().apply { |
| | | guid = UUIDGenerator.generate16ShortUUID() |
| | | acountname = uName |
| | | realname = sceneName |
| | | password = "123456" |
| | | usertypeid = 3 |
| | | usertype = "企业" |
| | | dGuid = it.guid |
| | | departmentname = sceneName |
| | | isenable = true |
| | | remark = it.districtname |
| | | } |
| | | |
| | | val r = userinfoMapper.insert(userInfo) |
| | | if (r == 1) { |
| | | println("${userInfo.guid}--${userInfo.acountname}--${userInfo.realname}") |
| | | } |
| | | } |
| | | return userinfoTZ |
| | | } |
| | | } |