feiyu02
2022-11-15 909fd8929d7906f1dca68acc05e36e29b0b9192c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package cn.flightfeather.supervision.lightshare.service.impl
 
import cn.flightfeather.supervision.common.utils.UUIDGenerator
import cn.flightfeather.supervision.domain.ds1.entity.Userinfo
import cn.flightfeather.supervision.domain.ds1.mapper.UserinfoMapper
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.lightshare.service.UserMapService
import org.springframework.stereotype.Service
import tk.mybatis.mapper.entity.Example
 
@Service
class UserMapServiceImpl(
    private val userMapMapper: UserMapMapper,
    private val userinfoMapper: UserinfoMapper,
    private val userinfoTZMapper: UserinfoTZMapper
    ) : 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 result = userMapMapper.selectByExample(Example(UserMap::class.java).apply {
            createCriteria().andEqualTo("svUserId", userId)
        })
        return if (result.isNotEmpty()) result[0] else UserMap()
    }
 
    override fun autoCreateMap() {
        // 选择需要处理的账户
        val userList = userinfoMapper.selectByExample(Example(Userinfo::class.java).apply {
            createCriteria().andEqualTo("remark", "静安区")
        })
        userList.forEach {
            // 查找是否已经有账户匹配记录
            val records = userMapMapper.selectByExample(Example(UserMap::class.java).apply {
                createCriteria().andEqualTo("svUserId", it.guid)
            })
            // 没有记录时,创建匹配记录
            if (records.isEmpty()) {
                // 1、 根据两个系统中的用户名称进行精确匹配
                val tzUsers = userinfoTZMapper.selectByExample(Example(UserinfoTZ::class.java).apply {
                    createCriteria().andEqualTo("realname", it.realname)
                })
                if (tzUsers.isNotEmpty()) {
                    val tzU = tzUsers[0]
                    if (userMapMapper.selectByPrimaryKey(tzU.guid) == null) {
                        userMapMapper.insert(UserMap().apply {
                            tzUserId = tzU.guid
                            tzUserName = tzU.realname
                            svUserId = it.guid
                            svUserName = it.realname
                        })
                    }
                }
                // 2、 无法精确匹配的,采用默认的编号,插入记录。后续人工修改(暂定)
                else {
                    if (userMapMapper.selectByExample(Example(UserMap::class.java).apply {
                        createCriteria().andEqualTo("svUserId", it.guid)
                        }).isEmpty()) {
                        val id = "temp" + UUIDGenerator.generateShortUUID()
                        userMapMapper.insert(UserMap().apply {
                            tzUserId = id
                            tzUserName = id
                            svUserId = it.guid
                            svUserName = it.realname
                        })
                    }
                }
            }
        }
    }
}