feiyu02
2025-11-14 c03e1d823eb86c856ecbe40d8d2180ffce7c7b0f
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package cn.flightfeather.supervision.lightshare.service.impl
 
import cn.flightfeather.supervision.common.exception.BizException
import cn.flightfeather.supervision.common.utils.Constant
import cn.flightfeather.supervision.common.utils.UUIDGenerator
import cn.flightfeather.supervision.domain.ds1.entity.*
import cn.flightfeather.supervision.domain.ds1.mapper.*
import cn.flightfeather.supervision.lightshare.service.DomaincatalogService
import cn.flightfeather.supervision.lightshare.vo.AreaVo
import cn.flightfeather.supervision.lightshare.vo.DomaincatalogVo
import org.springframework.beans.BeanUtils
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import tk.mybatis.mapper.entity.Example
import java.util.*
 
@Service
class DomaincatalogServiceImpl(
    private val domaincatalogMapper: DomaincatalogMapper,
    private val problemtypeMapper: ProblemtypeMapper,
    private val changeAdviceMapper: ChangeAdviceMapper,
    private val evaluationruleMapper: EvaluationruleMapper,
    private val evaluationsubruleMapper: EvaluationsubruleMapper,
) : DomaincatalogService {
    //根据name查询
    override fun findOneByName(name: String): Domaincatalog? {
        val domaincatalog = Domaincatalog()
        domaincatalog.name = name
        return domaincatalogMapper.selectOne(domaincatalog)
    }
 
    override fun findOne(id: String): Domaincatalog = domaincatalogMapper.selectByPrimaryKey(id)
 
    //获取全部
    override fun findAll(): MutableList<DomaincatalogVo> {
        val domaincatalogVoList = mutableListOf<DomaincatalogVo>()
        val domaincatalogList = domaincatalogMapper.selectByExample(Example(Domaincatalog::class.java).apply {
            orderBy("name")
        })
        domaincatalogList.forEach {
            val domaincatalogVo = DomaincatalogVo()
            BeanUtils.copyProperties(it,domaincatalogVo)
            domaincatalogVoList.add(domaincatalogVo)
        }
        return domaincatalogVoList
    }
 
    override fun save(domaincatalog: Domaincatalog): Domaincatalog{
        if (domaincatalog.guid == null) {
            domaincatalog.guid = UUIDGenerator.generate16ShortUUID()
        }
        if (domaincatalogMapper.insert(domaincatalog) == 1) {
            return domaincatalog
        } else {
            throw BizException("值域项新增失败")
        }
    }
 
    override fun update(domaincatalog: Domaincatalog): Domaincatalog{
        // 2025.11.11 新增版本号对比逻辑,若更新的配置信息版本号等于数据历史版本号,才能更新
        val oldOne = domaincatalogMapper.selectByPrimaryKey(domaincatalog.guid)
        if ((domaincatalog.version == oldOne.version)) {
            // 更新时,版本号递增
            domaincatalog.version = (domaincatalog.version ?: 0) + 1
            domaincatalogMapper.updateByPrimaryKey(domaincatalog)
 
            return domaincatalog
        } else {
            throw BizException("版本号不一致,更新失败")
        }
    }
 
    override fun delete(id: String): Int = domaincatalogMapper.deleteByPrimaryKey(id)
 
    @Transactional
    override fun quickConfiguration(
        target: Constant.SceneType,
        targetArea: AreaVo,
        source: Constant.SceneType,
        sourceArea: AreaVo,
    ): Boolean {
        //1. 问题类型和整改建议
        val adviceList = changeAdviceMapper.selectByExample(Example(ChangeAdvice::class.java).apply {
            createCriteria().andEqualTo("adExtension1", sourceArea.districtname)
                .andEqualTo("adExtension2", source.text)
        })
        problemtypeMapper.selectByExample(Example(Problemtype::class.java).apply {
            createCriteria().andEqualTo("scensetypeid", source.value.toByte())
                .andEqualTo("districtname", sourceArea.districtname)
        }).forEach {
            val newProblemGuid = UUIDGenerator.generate16ShortUUID()
            adviceList.find { ad -> ad.adProblemtypeguid == it.guid }?.let { ad ->
                ad.adGuid = UUIDGenerator.generate16ShortUUID()
                ad.adProblemtypeguid = newProblemGuid
                ad.adCreatedate = Date()
                ad.adUpdatedate = Date()
                ad.adExtension1 = targetArea.districtname
                ad.adExtension2 = target.text
                changeAdviceMapper.insert(ad)
            }
 
            it.guid = newProblemGuid
            it.scensetypeid = target.value.toByte()
            it.scensetype = target.text
            it.createdate = Date()
            it.updatedate = Date()
            it.provincecode = targetArea.provincecode
            it.provincename = targetArea.provincename
            it.citycode = targetArea.citycode
            it.cityname = targetArea.cityname
            it.districtcode = targetArea.districtcode
            it.districtname = targetArea.districtname
 
            problemtypeMapper.insert(it)
        }
 
        return true
 
        //2. 问题位置(默认工地,可不修改)
        //3. 自评规则表
//        evaluationruleMapper.selectByExample(Example(Evaluationrule::class.java).apply {
//            createCriteria().andEqualTo("tasktypeid", 99)
//                .andEqualTo("scensetypeid", source.value)
//            and(createCriteria().orEqualTo("provincecode", sourceArea.provincecode).orIsNull("provincecode"))
//            and(createCriteria().orEqualTo("citycode", sourceArea.citycode).orIsNull("citycode"))
//            and(createCriteria().orEqualTo("districtcode", sourceArea.districtcode).orIsNull("districtcode"))
//            and(createCriteria().orEqualTo("towncode", sourceArea.towncode).orIsNull("towncode"))
//        }).takeIf { it.isNotEmpty() }?.get(0).let {sourceRule ->
//            if (sourceRule != null) {
//                evaluationsubruleMapper.selectByExample(Example(Evaluationsubrule::class.java).apply {
//                    createCriteria().andEqualTo("", sourceRule)
//                })
//            }
//        }
    }
}