From f373bbf83d9d2a7e5f96118d7dcd658c9fea8bc8 Mon Sep 17 00:00:00 2001
From: feiyu02 <risaku@163.com>
Date: 星期四, 14 八月 2025 17:27:44 +0800
Subject: [PATCH] 2025.8.14 1. 新增文件导入场景信息接口 2. 新增导出接口文档接口

---
 src/main/kotlin/cn/flightfeather/supervision/business/import/SceneImport.kt |  141 +++++++++++++++++++++++++++++++++-------------
 1 files changed, 100 insertions(+), 41 deletions(-)

diff --git a/src/main/kotlin/cn/flightfeather/supervision/business/import/SceneImport.kt b/src/main/kotlin/cn/flightfeather/supervision/business/import/SceneImport.kt
index 71e8712..a015e47 100644
--- a/src/main/kotlin/cn/flightfeather/supervision/business/import/SceneImport.kt
+++ b/src/main/kotlin/cn/flightfeather/supervision/business/import/SceneImport.kt
@@ -3,8 +3,10 @@
 import cn.flightfeather.supervision.common.exception.BizException
 import cn.flightfeather.supervision.common.utils.Constant
 import cn.flightfeather.supervision.common.utils.ExcelUtil
-import cn.flightfeather.supervision.domain.ds1.entity.Scense
+import cn.flightfeather.supervision.domain.ds1.entity.*
 import cn.flightfeather.supervision.domain.ds1.repository.RegionRep
+import cn.flightfeather.supervision.lightshare.vo.SceneDetail
+import com.google.gson.Gson
 import org.apache.poi.ss.usermodel.CellType
 import org.springframework.stereotype.Component
 import java.io.InputStream
@@ -17,9 +19,10 @@
 class SceneImport(
     private val regionRep: RegionRep,
 ) {
+    // 鍦烘櫙鍏辨湁淇℃伅
     private val headers =
         listOf(
-            ExcelUtil.MyHeader("缂栧彿锛堣嫢涓嶅~鍐欙紝鍒欐寜鐓ч『搴忚嚜鍔ㄦ坊鍔狅級", CellType.NUMERIC),
+            ExcelUtil.MyHeader("缂栧彿锛堝彲鐪佺暐锛�", CellType.NUMERIC, true),
             ExcelUtil.MyHeader("鍚嶇О", CellType.STRING),
             ExcelUtil.MyHeader("绫诲瀷", CellType.STRING),
             ExcelUtil.MyHeader("鍦板潃", CellType.STRING),
@@ -33,51 +36,107 @@
             ExcelUtil.MyHeader("鑱旂郴鐢佃瘽", CellType.STRING)
         )
 
+    // 宸ュ湴淇℃伅
+    private val headersType1 = listOf(
+        ExcelUtil.MyHeader("宸ョ▼绫诲瀷", CellType.STRING),
+        ExcelUtil.MyHeader("寤鸿鐘舵��", CellType.STRING),
+        ExcelUtil.MyHeader("鏂藉伐闃舵", CellType.STRING),
+        ExcelUtil.MyHeader("寮�宸ユ椂闂�", CellType.STRING),
+        ExcelUtil.MyHeader("瀹屽伐鏃堕棿", CellType.STRING),
+        ExcelUtil.MyHeader("鍓╀綑宸ユ湡", CellType.STRING),
+        ExcelUtil.MyHeader("鍗犲湴闈㈢Н", CellType.NUMERIC),
+        ExcelUtil.MyHeader("鏂藉伐闈㈢Н", CellType.NUMERIC),
+        ExcelUtil.MyHeader("姣忔湀鏂藉伐闈㈢Н", CellType.NUMERIC),
+        ExcelUtil.MyHeader("涓氫富鍗曚綅", CellType.STRING),
+        ExcelUtil.MyHeader("涓氫富鍗曚綅鑱旂郴浜�", CellType.STRING),
+        ExcelUtil.MyHeader("涓氫富鍗曚綅鑱旂郴鐢佃瘽", CellType.STRING),
+        ExcelUtil.MyHeader("鏂藉伐鍗曚綅", CellType.STRING),
+        ExcelUtil.MyHeader("鏂藉伐鍗曚綅鑱旂郴浜�", CellType.STRING),
+        ExcelUtil.MyHeader("鏂藉伐鍗曚綅鑱旂郴鐢佃瘽", CellType.STRING),
+        ExcelUtil.MyHeader("瀹夊叏鍛�", CellType.STRING),
+        ExcelUtil.MyHeader("瀹夊叏鍛樼數璇�", CellType.STRING),
+    )
+
     /**
      * 閫氳繃鏂囦欢璇诲彇鍦烘櫙淇℃伅
      */
-    fun readFromFile(file: InputStream): List<Scense> {
-        val result = mutableListOf<Scense>()
+    fun readFromFile(file: InputStream): List<SceneDetail> {
+        val result = mutableListOf<SceneDetail>()
         try {
             ExcelUtil.readXLXS(file, headers) {
-                val data = Scense().apply {
-                    guid = null
-                    name = it.getCell(1)?.stringCellValue?.trim()
-                    typeid = null
-                    type = it.getCell(2)?.stringCellValue?.trim()
-                    scensesubtypeid = null
-                    scensesubtype = null
-                    location = it.getCell(3)?.stringCellValue?.trim()
-                    longitude = it.getCell(4)?.numericCellValue?.toBigDecimal()
-                    latitude = it.getCell(5)?.numericCellValue?.toBigDecimal()
-                    provincecode = null
-                    provincename = it.getCell(6)?.stringCellValue?.trim()
-                    citycode = null
-                    cityname = it.getCell(7)?.stringCellValue?.trim()
-                    districtcode = null
-                    districtname = it.getCell(8)?.stringCellValue?.trim()
-                    towncode = null
-                    townname = it.getCell(9)?.stringCellValue?.trim()
-                    contactst = it.getCell(11)?.stringCellValue?.trim()
-                    contactswx = null
-                    contacts = it.getCell(10)?.stringCellValue?.trim()
-                    createdate = Date()
-                    updatedate = Date()
-                    extension1 = "1"
-                    extension2 = null
-                    index = it.getCell(5)?.stringCellValue?.trim()?.toInt()
-                    remark = null
+                val data = SceneDetail().apply {
+                    scense = Scense().apply {
+                        guid = null
+                        name = it.getCell(1)?.stringCellValue?.trim()
+                        typeid = null
+                        type = it.getCell(2)?.stringCellValue?.trim()
+                        scensesubtypeid = null
+                        scensesubtype = null
+                        location = it.getCell(3)?.stringCellValue?.trim()
+                        longitude = it.getCell(4)?.numericCellValue?.toBigDecimal()
+                        latitude = it.getCell(5)?.numericCellValue?.toBigDecimal()
+                        provincecode = null
+                        provincename = it.getCell(6)?.stringCellValue?.trim()
+                        citycode = null
+                        cityname = it.getCell(7)?.stringCellValue?.trim()
+                        districtcode = null
+                        districtname = it.getCell(8)?.stringCellValue?.trim()
+                        towncode = null
+                        townname = it.getCell(9)?.stringCellValue?.trim()
+                        contactst = it.getCell(11)?.stringCellValue?.trim()
+                        contactswx = null
+                        contacts = it.getCell(10)?.stringCellValue?.trim()
+                        createdate = Date()
+                        updatedate = Date()
+                        extension1 = "1"
+                        extension2 = null
+                        index = it.getCell(0)?.numericCellValue?.toInt()
+                        remark = null
+                    }
+                    scense?.typeid = Constant.SceneType.getByName(scense?.type)?.value?.toByte()
+                        ?: throw BizException(errorStr(it.rowNum + 1, 3, "鍦烘櫙绫诲瀷涓嶅瓨鍦�"))
+                    scense?.provincecode = regionRep.findProvince(scense?.provincename)?.provincecode
+                        ?: throw BizException(errorStr(it.rowNum + 1, 7, "鐪佷唤閿欒鎴栫郴缁熸湭鏇鹃厤缃�"))
+                    scense?.citycode = regionRep.findCity(scense?.cityname)?.citycode
+                        ?: throw BizException(errorStr(it.rowNum + 1, 8, "鍩庡競閿欒鎴栫郴缁熸湭鏇鹃厤缃�"))
+                    scense?.districtcode = regionRep.findDistrict(scense?.districtname)?.districtcode
+                        ?: throw BizException(errorStr(it.rowNum + 1, 9, "鍖哄幙閿欒鎴栫郴缁熸湭鏇鹃厤缃�"))
+                    scense?.towncode = regionRep.findTown(scense?.townname)?.towncode
+                        ?: throw BizException(errorStr(it.rowNum + 1, 10, "琛楅晣閿欒鎴栫郴缁熸湭鏇鹃厤缃�"))
+
+                    when (scense?.typeid.toString()) {
+                        Constant.SceneType.TYPE1.value -> {
+                            subScene = SceneConstructionSite().apply {
+                                csProjectType = it.getCell(12)?.stringCellValue?.trim()
+                                csStatus = it.getCell(13)?.stringCellValue?.trim()
+                                siExtension1 = it.getCell(14)?.stringCellValue?.trim()
+                                csStartTime = it.getCell(15)?.stringCellValue?.trim()
+                                csEndTime = it.getCell(16)?.stringCellValue?.trim()
+                                csLeftTime = it.getCell(17)?.stringCellValue?.trim()
+                                csFloorSpace = it.getCell(18)?.numericCellValue?.toString()
+                                csConstructionArea = it.getCell(19)?.numericCellValue?.toString()
+                                csConstructionAreaPerMonth = it.getCell(20)?.numericCellValue?.toString()
+                                csEmployerUnit = it.getCell(21)?.stringCellValue?.trim()
+                                csEmployerContacts = it.getCell(22)?.stringCellValue?.trim()
+                                csEmployerContactsTel = it.getCell(23)?.stringCellValue?.trim()
+                                csConstructionUnit = it.getCell(24)?.stringCellValue?.trim()
+                                csConstructionContacts = it.getCell(25)?.stringCellValue?.trim()
+                                csConstructionContactsTel = it.getCell(26)?.stringCellValue?.trim()
+                                csSecurityOfficer = it.getCell(27)?.stringCellValue?.trim()
+                                csSecurityOfficerTel = it.getCell(28)?.stringCellValue?.trim()
+                            }
+                        }
+                        Constant.SceneType.TYPE2.value -> {
+
+                        }
+                        Constant.SceneType.TYPE3.value -> {
+
+                        }
+                        Constant.SceneType.TYPE14.value -> {
+
+                        }
+                    }
                 }
-                data.typeid = Constant.SceneType.getByName(data.type)?.value?.toByte()
-                    ?: throw BizException(errorStr(it.rowNum + 1, 2, "鍦烘櫙绫诲瀷涓嶅瓨鍦�"))
-                data.provincecode = regionRep.findProvince(data.provincename)?.provincecode
-                    ?: throw BizException(errorStr(it.rowNum + 1, 6, "鐪佷唤閿欒鎴栫郴缁熸湭鏇鹃厤缃�"))
-                data.citycode = regionRep.findCity(data.cityname)?.citycode
-                    ?: throw BizException(errorStr(it.rowNum + 1, 7, "鍩庡競閿欒鎴栫郴缁熸湭鏇鹃厤缃�"))
-                data.districtcode = regionRep.findDistrict(data.districtname)?.districtcode
-                    ?: throw BizException(errorStr(it.rowNum + 1, 8, "鍖哄幙閿欒鎴栫郴缁熸湭鏇鹃厤缃�"))
-                data.towncode = regionRep.findTown(data.townname)?.towncode
-                    ?: throw BizException(errorStr(it.rowNum + 1, 9, "琛楅晣閿欒鎴栫郴缁熸湭鏇鹃厤缃�"))
 
                 result.add(data)
             }

--
Gitblit v1.9.3