From aed297a5fbc8df9dab01b28da21f872ee546b43c Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期一, 13 十月 2025 16:15:11 +0800
Subject: [PATCH] 2025.10.13 1. 统一调整controller层的返回类型,通过添加全局响应增强器GlobalResponseAdvice来管理返回结果; 2. 新增mybatis-generator自定义插件,实现给数据库实体entity自动添加swagger注解@ApiModel和@ApiModelProperty
---
src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/ScenseServiceImpl.kt | 92 ++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 84 insertions(+), 8 deletions(-)
diff --git a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/ScenseServiceImpl.kt b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/ScenseServiceImpl.kt
index ea2e3be..c26f05b 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/ScenseServiceImpl.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/ScenseServiceImpl.kt
@@ -1,19 +1,30 @@
package cn.flightfeather.supervision.lightshare.service.impl
+import cn.flightfeather.supervision.business.import.SceneImport
import cn.flightfeather.supervision.business.location.LocationRoadNearby
+import cn.flightfeather.supervision.common.exception.BizException
import cn.flightfeather.supervision.common.utils.Constant
import cn.flightfeather.supervision.domain.ds1.entity.*
import cn.flightfeather.supervision.domain.ds1.mapper.*
+import cn.flightfeather.supervision.domain.ds1.repository.SceneRep
+import cn.flightfeather.supervision.domain.ds2.entity.UserMap
+import cn.flightfeather.supervision.domain.ds2.repository.BaseInfoRep
+import cn.flightfeather.supervision.domain.ds2.repository.UserMapRep
import cn.flightfeather.supervision.lightshare.service.*
import cn.flightfeather.supervision.lightshare.vo.*
import com.github.pagehelper.PageHelper
import com.google.gson.Gson
+import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty
import org.springframework.beans.BeanUtils
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
+import org.springframework.web.multipart.MultipartFile
import tk.mybatis.mapper.entity.Example
import tk.mybatis.mapper.util.StringUtil
+import java.io.ByteArrayInputStream
+import java.util.*
+import kotlin.collections.ArrayList
@Service
class ScenseServiceImpl(
@@ -25,6 +36,10 @@
val sceneWharfMapper: SceneWharfMapper,
val userinfoService: UserinfoService,
private val locationRoadNearby: LocationRoadNearby,
+ private val sceneImport: SceneImport,
+ private val sceneRep: SceneRep,
+ private val baseInfoRep: BaseInfoRep,
+ private val userMapRep: UserMapRep,
) : ScenseService {
@Autowired
@@ -68,6 +83,7 @@
val name = scense.name ?: ""
val example = Example(Scense::class.java)
val criteria = example.createCriteria()
+ criteria.andEqualTo("typeid", scense.typeid)
//濡傛灉鏈塼ype淇℃伅,灏辨瀯寤簍ype鏌ヨ
if (StringUtil.isNotEmpty(scense.type)) {
criteria.andEqualTo("type", scense.type)
@@ -84,6 +100,10 @@
if (StringUtil.isNotEmpty(scense.towncode)) {
criteria.andEqualTo("towncode", scense.towncode)
}
+ if (StringUtil.isNotEmpty(scense.extension1)) {
+ criteria.andEqualTo("extension1", scense.extension1)
+ }
+ criteria.andEqualTo("index", scense.index)
//name鏌ヨ
criteria.andLike("name", "%$name%")
val re = scenseMapper.selectByExample(example)
@@ -132,12 +152,13 @@
}
override fun save(scense: Scense): Int {
- // TODO: 2021/7/20 鏂板鍦烘櫙鐨勫悓鏃剁敓鎴愯处鎴�
- val r = scenseMapper.insert(scense)
- if (r == 1) {
- scense.guid?.let { userinfoService.createAccount(it) }
+ return try {
+ createScene(scense)
+ 1
+ } catch (e: BizException) {
+ println(e.message)
+ 0
}
- return r
}
override fun update(scense: Scense): Int = scenseMapper.updateByPrimaryKeySelective(scense)
@@ -262,10 +283,10 @@
override fun getSceneDetail(sceneId: String): BaseResponse<SceneDetail> {
val sceneDetail = SceneDetail()
- val scene = scenseMapper.selectByPrimaryKey(sceneId)
+ val scene = sceneRep.findScene(sceneId = sceneId)
sceneDetail.scense = scene
- val mapper = when (scene.typeid.toString()) {
+ val mapper = when (scene?.typeid.toString()) {
Constant.SceneType.TYPE1.value -> sceneConstructionSiteMapper
Constant.SceneType.TYPE2.value -> sceneWharfMapper
Constant.SceneType.TYPE3.value -> sceneMixingPlantMapper
@@ -308,6 +329,7 @@
when (typeId.toString()) {
Constant.SceneType.TYPE1.value -> {
val subScene = Gson().fromJson(sceneDetailStr.subScene, SceneConstructionSite::class.java)
+ subScene.csUpdateTime = Date()
if (subScene.getsGuid() != null) {
val record = sceneConstructionSiteMapper.selectByPrimaryKey(subScene.getsGuid())
isUpdate = record != null
@@ -371,7 +393,6 @@
areaVo.towncode?.let { andEqualTo("towncode", it) }
areaVo.scensetypeid?.let { andEqualTo("typeid", it) }
areaVo.sceneName?.let { andLike("name", "%${it}%") }
-
}
areaVo.online?.let {
and(createCriteria().apply {
@@ -390,4 +411,59 @@
override fun searchByCoordinate(lng: Double, lat: Double, radius: Double): List<Scense> {
return locationRoadNearby.searchByRadius(Pair(lng, lat), radius)
}
+
+ override fun importSceneInfo(files: Array<MultipartFile>): Boolean {
+ if (files.isEmpty()) throw BizException("鏈纭笂浼犳枃浠讹紝鎺ュ彛璋冪敤閿欒")
+
+ val f = ByteArrayInputStream(files[0].bytes)
+ val scenes = sceneImport.readFromFile(f)
+ if (scenes.isEmpty()) throw BizException("鏂囦欢鍐呭涓虹┖")
+ // 鏌ユ壘鍦烘櫙鍚嶇О鏄惁閲嶅
+ val names = scenes.map { it.scense?.name }
+ sceneRep.findSceneList(names).map { it?.name }.ifNotEmpty {
+ val str = this.joinToString("锛�")
+ throw BizException("瀛樺湪閲嶅鍦烘櫙锛屽涓嬶細${str}")
+ }
+ scenes.forEach {
+ it.scense ?: return@forEach
+ createOneScene(it.scense!!)
+ sceneRep.insertOrUpdateSubScene(it.scense!!.typeid?.toInt(), it.scense!!.guid, it.subScene)
+ }
+ return true
+ }
+
+ override fun createScene(scense: Scense): Scense {
+ val names = listOf(scense.name)
+ sceneRep.findSceneList(names).map { it?.name }.ifNotEmpty {
+ val str = this.joinToString("锛�")
+ throw BizException("瀛樺湪閲嶅鍦烘櫙锛屽涓嬶細${str}")
+ }
+ createOneScene(scense)
+ return scense
+ }
+
+
+ override fun createOneScene(scense: Scense) {
+ //1. 鎻掑叆鍦烘櫙琛�
+ scense.townname = scense.townname?.trim()
+ sceneRep.insert(scense)
+ //2. 鐢熸垚瀵瑰簲璐︽埛淇℃伅
+ val userInfo = userinfoService.createAccount(scense)
+ createTZUserInfo(userInfo, scense)
+ }
+
+ override fun createTZUserInfo(userInfo: Userinfo, scense: Scense) {
+ //1. 鐢熸垚椋炵窘鐜绯荤粺瀵瑰簲璐︽埛鍜屽熀纭�淇℃伅
+ val userInfoTZ = userinfoService.createAccountTZ(userInfo, scense)
+ val baseInfo = baseInfoRep.create(userInfoTZ, scense)
+ //2. 鐢熸垚鐢ㄦ埛鍖归厤淇℃伅
+ userMapRep.insert(UserMap().apply {
+ tzUserId = userInfoTZ.guid
+ tzUserName = userInfoTZ.realname
+ svUserId = userInfo.guid
+ svUserName = userInfo.realname
+ umCreateTime = Date()
+ })
+ }
+
}
\ No newline at end of file
--
Gitblit v1.9.3