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 |   81 ++++++++++++++++++++++++++++++++++++----
 1 files changed, 73 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..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,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
@@ -132,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)
@@ -262,10 +278,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
@@ -371,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 {
@@ -390,4 +405,54 @@
     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