| | |
| | | package cn.flightfeather.supervision.lightshare.service.impl |
| | | |
| | | import cn.flightfeather.supervision.business.autooutput.dataanalysis.AopDataDeviceMap |
| | | import cn.flightfeather.supervision.common.exception.BizException |
| | | 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.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.UserMap |
| | | import cn.flightfeather.supervision.domain.ds2.entity.UserinfoTZ |
| | | import cn.flightfeather.supervision.domain.ds2.mapper.UserMapMapper |
| | | import cn.flightfeather.supervision.domain.ds2.mapper.UserinfoTZMapper |
| | | import cn.flightfeather.supervision.domain.ds2.repository.UserInfoTZRep |
| | | import cn.flightfeather.supervision.domain.ds2.repository.UserMapRep |
| | | import cn.flightfeather.supervision.lightshare.service.UserMapService |
| | | import cn.flightfeather.supervision.lightshare.vo.AreaVo |
| | | import cn.flightfeather.supervision.lightshare.vo.DataHead |
| | | import cn.flightfeather.supervision.lightshare.vo.DeviceMapVo |
| | | import cn.flightfeather.supervision.lightshare.vo.DeviceSiteVo |
| | | import org.springframework.stereotype.Service |
| | | import tk.mybatis.mapper.entity.Example |
| | | import java.util.* |
| | | |
| | | @Service |
| | | class UserMapServiceImpl( |
| | | private val userMapMapper: UserMapMapper, |
| | | private val userinfoMapper: UserinfoMapper, |
| | | private val userinfoTZMapper: UserinfoTZMapper |
| | | ) : UserMapService { |
| | | private val userinfoTZMapper: UserinfoTZMapper, |
| | | private val sceneRep: SceneRep, |
| | | private val taskRep: TaskRep, |
| | | private val userInfoSVRep: UserInfoSVRep, |
| | | private val userInfoTZRep: UserInfoTZRep, |
| | | private val userMapRep: UserMapRep, |
| | | private val aopDataDeviceMap: AopDataDeviceMap, |
| | | ) : UserMapService { |
| | | |
| | | override fun getTZIdBySceneId(sceneId: String): UserMap { |
| | | val list = userinfoMapper.selectByExample(Example(Userinfo::class.java).apply { |
| | | createCriteria().andEqualTo("dGuid", sceneId) |
| | | }) |
| | | if (list.isEmpty()) return UserMap() |
| | | val userId = list[0].guid |
| | | val user = userInfoSVRep.findUser(sceneId) |
| | | val userId = user?.guid |
| | | val result = userMapMapper.selectByExample(Example(UserMap::class.java).apply { |
| | | createCriteria().andEqualTo("svUserId", userId) |
| | | }) |
| | | return if (result.isNotEmpty()) result[0] else UserMap() |
| | | } |
| | | |
| | | override fun autoCreateMap() { |
| | | override fun getSceneByTZId(tzUserId: String): Scense? { |
| | | return userMapRep.findFromSupervision(tzUserId) |
| | | } |
| | | |
| | | override fun autoCreateMap(userList: List<Userinfo?>) { |
| | | // 选择需要处理的账户 |
| | | val userList = userinfoMapper.selectByExample(Example(Userinfo::class.java).apply { |
| | | createCriteria().andEqualTo("remark", "静安区") |
| | | }) |
| | | // val userList = userinfoMapper.selectByExample(Example(Userinfo::class.java).apply { |
| | | // createCriteria().andEqualTo("remark", "徐汇区") |
| | | // }) |
| | | userList.forEach { |
| | | it ?: return@forEach |
| | | // 查找是否已经有账户匹配记录 |
| | | val records = userMapMapper.selectByExample(Example(UserMap::class.java).apply { |
| | | createCriteria().andEqualTo("svUserId", it.guid) |
| | |
| | | tzUserName = tzU.realname |
| | | svUserId = it.guid |
| | | svUserName = it.realname |
| | | umCreateTime = Date() |
| | | }) |
| | | } |
| | | } |
| | | // 2、 无法精确匹配的,采用默认的编号,插入记录。后续人工修改(暂定) |
| | | else { |
| | | if (userMapMapper.selectByExample(Example(UserMap::class.java).apply { |
| | | createCriteria().andEqualTo("svUserId", it.guid) |
| | | createCriteria().andEqualTo("svUserId", it.guid) |
| | | }).isEmpty()) { |
| | | val id = "temp" + UUIDGenerator.generateShortUUID() |
| | | userMapMapper.insert(UserMap().apply { |
| | |
| | | tzUserName = id |
| | | svUserId = it.guid |
| | | svUserName = it.realname |
| | | umCreateTime = Date() |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | override fun fetchDeviceMap(page: Int?, perPage: Int?, areaVo: AreaVo): List<DeviceMapVo?> { |
| | | // 1.通过区域条件获取主体用户 |
| | | val userIdList = when (areaVo.sourceType) { |
| | | //以飞羽环境系统中的用户为主体 |
| | | 1 -> { |
| | | val u = userInfoTZRep.findEnterpriseUser(areaVo.districtname, areaVo.scensetypeid?.toInt()) |
| | | u.map { it?.guid to it?.realname } |
| | | } |
| | | //以飞羽监管系统中的用户为主体 |
| | | 2 -> { |
| | | val task = taskRep.findOneTask(areaVo) ?: throw BizException("当前查询条件下未找到对应顶层任务") |
| | | val scenes = sceneRep.findSceneList(task.tguid!!, areaVo.scensetypeid?.toInt(), areaVo.towncode) |
| | | .map { it?.guid } |
| | | userInfoSVRep.findUser(scenes).map { it?.guid to it?.realname } |
| | | } |
| | | else -> emptyList() |
| | | } |
| | | // 2.通过区域条件决定匹配的数据来源 |
| | | val mapSet = aopDataDeviceMap.findMapSet(areaVo, userIdList.map { it.first }) |
| | | val result = mutableListOf<DeviceMapVo>() |
| | | // 将不在mapSet中的用户,添加到结果集中 |
| | | userIdList.forEach {u -> |
| | | val ddm = mapSet.find { m-> |
| | | when (areaVo.sourceType) { |
| | | //以飞羽环境系统中的用户为主体 |
| | | 1 -> m.tzUserId == u.first |
| | | //以飞羽监管系统中的用户为主体 |
| | | 2 -> m.svUserId == u.first |
| | | else -> false |
| | | } |
| | | } |
| | | if (ddm == null) { |
| | | result.add(DeviceMapVo().apply { |
| | | when (areaVo.sourceType) { |
| | | //以飞羽环境系统中的用户为主体 |
| | | 1 -> { |
| | | tzUserId = u.first |
| | | tzUserName = u.second |
| | | } |
| | | //以飞羽监管系统中的用户为主体 |
| | | 2 -> { |
| | | svUserId = u.first |
| | | svUserName = u.second |
| | | |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | // 将mapSet中的数据添加到结果集中 |
| | | result.addAll(mapSet) |
| | | return result.sortedBy { it.svUserId } |
| | | } |
| | | |
| | | override fun insertOrUpdate(param: Pair<AreaVo, DeviceMapVo>): Int { |
| | | return aopDataDeviceMap.insertOrUpdate(param.first, listOf(param.second)) |
| | | } |
| | | |
| | | override fun searchThirdPartyDevice( |
| | | areaVo: AreaVo, |
| | | keyword: String, |
| | | page: Int?, |
| | | perPage: Int?, |
| | | ): Pair<DataHead, List<DeviceSiteVo>> { |
| | | return aopDataDeviceMap.searchDevice(areaVo, keyword, page ?: 1, perPage ?: 30) |
| | | } |
| | | } |