From baf2cc2ce3dfd1235c012a3750132769fcd9ad2f Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期四, 18 九月 2025 17:02:05 +0800 Subject: [PATCH] 2025.9.18 1. 联合前端调试数据产品接口(待完成) --- 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