From 52a0c16de9b0955a5f092560b73f16e41684f97b Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期二, 31 十二月 2024 10:13:35 +0800
Subject: [PATCH] 1. 环信码生成时,如果在线场景当期没有评估(未巡查)结果,则延用历史最新一次的结果; 2. 新增跨时间跨月度的历史整改记录查询逻辑 3. 优化获取顶层任务和日任务的获取逻辑

---
 src/main/kotlin/cn/flightfeather/supervision/lightshare/service/impl/ScenseServiceImpl.kt |  119 +++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 95 insertions(+), 24 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 09bde16..8bf1dba 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,28 +1,45 @@
 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.common.utils.Constant
+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(
-        val scenseMapper: ScenseMapper,
-        val sceneConstructionSiteMapper: SceneConstructionSiteMapper,
-        val sceneDeviceMapper: SceneDeviceMapper,
-        val sceneMixingPlantMapper: SceneMixingPlantMapper,
-        val sceneStorageYardMapper: SceneStorageYardMapper,
-        val sceneWharfMapper: SceneWharfMapper,
-        val userinfoService: UserinfoService
+    val scenseMapper: ScenseMapper,
+    val sceneConstructionSiteMapper: SceneConstructionSiteMapper,
+    val sceneDeviceMapper: SceneDeviceMapper,
+    val sceneMixingPlantMapper: SceneMixingPlantMapper,
+    val sceneStorageYardMapper: SceneStorageYardMapper,
+    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
@@ -130,12 +147,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)
@@ -260,14 +278,14 @@
     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()) {
-            Constant.ScenseType.TYPE1.value -> sceneConstructionSiteMapper
-            Constant.ScenseType.TYPE2.value -> sceneWharfMapper
-            Constant.ScenseType.TYPE3.value -> sceneMixingPlantMapper
-            Constant.ScenseType.TYPE14.value -> sceneStorageYardMapper
+        val mapper = when (scene?.typeid.toString()) {
+            Constant.SceneType.TYPE1.value -> sceneConstructionSiteMapper
+            Constant.SceneType.TYPE2.value -> sceneWharfMapper
+            Constant.SceneType.TYPE3.value -> sceneMixingPlantMapper
+            Constant.SceneType.TYPE14.value -> sceneStorageYardMapper
             else -> null
         }
 
@@ -304,7 +322,7 @@
             var r = 0
             var isUpdate = true
             when (typeId.toString()) {
-                Constant.ScenseType.TYPE1.value -> {
+                Constant.SceneType.TYPE1.value -> {
                     val subScene = Gson().fromJson(sceneDetailStr.subScene, SceneConstructionSite::class.java)
                     if (subScene.getsGuid() != null) {
                         val record = sceneConstructionSiteMapper.selectByPrimaryKey(subScene.getsGuid())
@@ -316,7 +334,7 @@
                         }
                     }
                 }
-                Constant.ScenseType.TYPE2.value -> {
+                Constant.SceneType.TYPE2.value -> {
                     val subScene = Gson().fromJson(sceneDetailStr.subScene, SceneWharf::class.java)
                     if (subScene.getsGuid() != null) {
                         val record = sceneWharfMapper.selectByPrimaryKey(subScene.getsGuid())
@@ -328,7 +346,7 @@
                         }
                     }
                 }
-                Constant.ScenseType.TYPE3.value -> {
+                Constant.SceneType.TYPE3.value -> {
                     val subScene = Gson().fromJson(sceneDetailStr.subScene, SceneMixingPlant::class.java)
                     if (subScene.getsGuid() != null) {
                         val record = sceneMixingPlantMapper.selectByPrimaryKey(subScene.getsGuid())
@@ -340,7 +358,7 @@
                         }
                     }
                 }
-                Constant.ScenseType.TYPE14.value -> {
+                Constant.SceneType.TYPE14.value -> {
                     val subScene = Gson().fromJson(sceneDetailStr.subScene, SceneStorageYard::class.java)
                     if (subScene.getsGuid() != null) {
                         val record = sceneStorageYardMapper.selectByPrimaryKey(subScene.getsGuid())
@@ -369,7 +387,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 {
@@ -384,4 +401,58 @@
         })
         return BaseResponse(true, head = DataHead(p.pageNum, p.pages, p.total), data = list)
     }
+
+    override fun searchByCoordinate(lng: Double, lat: Double, radius: Double): List<Scense> {
+        return locationRoadNearby.searchByRadius(Pair(lng, lat), radius)
+    }
+
+    override fun importSceneInfo(file: MultipartFile): Boolean {
+        val f = ByteArrayInputStream(file.bytes)
+        val scenes = sceneImport.readFromFile(f)
+        // 鏌ユ壘鍦烘櫙鍚嶇О鏄惁閲嶅
+        val names = scenes.map { it.name }
+        sceneRep.findSceneList(names).map { it?.name }.ifNotEmpty {
+            val str = this.joinToString("锛�")
+            throw BizException("瀛樺湪閲嶅鍦烘櫙锛屽涓嬶細${str}")
+        }
+        scenes.forEach {
+            createOneScene(it)
+        }
+        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