Explorar o código

********************WX************************
数据同步调整

zhangweixin %!s(int64=4) %!d(string=hai) anos
pai
achega
abf22e6f3b
Modificáronse 21 ficheiros con 4229 adicións e 486 borrados
  1. 1 0
      data-center/src/main/kotlin/com/persagy/server/services/dict/dictnew/DictDefClassService.kt
  2. 0 14
      data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/assistant/AttPic.kt
  3. 0 4
      data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/assistant/PointPosition.kt
  4. 0 14
      data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/assistant/TaskPic.kt
  5. 9 20
      data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/objects/Building.kt
  6. 17 72
      data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/objects/Equipment.kt
  7. 26 38
      data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/objects/Floor.kt
  8. 22 24
      data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/objects/Project.kt
  9. 497 0
      datasyn/dictLabel
  10. 2 2
      datasyn/src/main/kotlin/com/persagy/server/syn/controllers/dict/DictControllers.kt
  11. 212 2
      datasyn/src/main/kotlin/com/persagy/server/syn/controllers/obj/ObjectFromToControllers.kt
  12. 41 0
      datasyn/src/main/kotlin/com/persagy/server/syn/models/api/obj/BuildingApi.kt
  13. 38 0
      datasyn/src/main/kotlin/com/persagy/server/syn/models/api/obj/EquipApi.kt
  14. 13 6
      datasyn/src/main/kotlin/com/persagy/server/syn/models/api/obj/ProjectApi.kt
  15. 18 0
      datasyn/src/main/kotlin/com/persagy/server/syn/models/obj/MiddleGroundDataRespose.kt
  16. 323 0
      datasyn/src/main/kotlin/com/persagy/server/syn/models/tools/BuildingUtil.kt
  17. 2333 0
      datasyn/src/main/kotlin/com/persagy/server/syn/models/tools/EquipUtil.kt
  18. 122 0
      datasyn/src/main/kotlin/com/persagy/server/syn/models/tools/FloorUtil.kt
  19. 278 0
      datasyn/src/main/kotlin/com/persagy/server/syn/models/tools/ProjectUtil.kt
  20. 0 13
      datasyn/src/main/kotlin/com/persagy/server/syn/services/object/ProjectService.kt
  21. 277 277
      datasyn/src/main/kotlin/com/persagy/server/syn/utils/ParamTools.kt

+ 1 - 0
data-center/src/main/kotlin/com/persagy/server/services/dict/dictnew/DictDefClassService.kt

@@ -53,6 +53,7 @@ object DictDefClassService : SObjectService<DefClass>(SMybatisDao(DefClass::clas
     private val defFuncIdProjectService = SObjectService(SMybatisDao(DefFuncIdProject::class.java))
     /** 设备族和设备类型对应表服务 */
     private val equipFamilyService = SObjectService(SMybatisDao(EquipFamily::class.java))
+    /** 设备族 */
     private val familyService = SObjectService(SMybatisDao(Family::class.java))
 
     /**

+ 0 - 14
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/assistant/AttPic.kt

@@ -20,8 +20,6 @@
 
 package com.persagy.server.datacenter.models.entities.assistant
 
-import com.alibaba.fastjson.annotation.JSONField
-import com.google.gson.annotations.SerializedName
 import io.swagger.annotations.ApiModel
 import io.swagger.annotations.ApiModelProperty
 import java.io.Serializable
@@ -39,41 +37,29 @@ class AttPic: Serializable {
     /** id */
     @ApiModelProperty(value = "id")
     @Column(name = "id")
-    @JSONField(name =  "id")
-    @SerializedName("id")
     var id: String? = null
 
     /** 名称 */
     @ApiModelProperty(value = "名称")
     @Column(name = "name")
-    @JSONField(name =  "name")
-    @SerializedName("name")
     var name: String? = null
 
     /** key */
     @ApiModelProperty(value = "key")
     @Column(name = "key")
-    @JSONField(name =  "key")
-    @SerializedName("key")
     var key: String? = null
 
     /** 类型 */
     @ApiModelProperty(value = "类型")
     @Column(name = "type")
-    @JSONField(name =  "type")
-    @SerializedName("type")
     var type: String? = null
 
     /** 系统id */
     @ApiModelProperty(value = "系统id")
     @Column(name = "system_id")
-    @JSONField(name =  "systemId")
-    @SerializedName("systemId")
     var systemId: String? = null
 
     @ApiModelProperty(value = "创建时间")
-    @JSONField(name =  "createTime")
-    @SerializedName("createTime")
     var createTime: String? = null
 
 } // Class AttPic

+ 0 - 4
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/assistant/PointPosition.kt

@@ -1,6 +1,5 @@
 package com.persagy.server.datacenter.models.entities.assistant
 
-import com.google.gson.annotations.SerializedName
 import io.swagger.annotations.ApiModelProperty
 import java.io.Serializable
 
@@ -13,17 +12,14 @@ class PointPosition : Serializable{
 
     /** 坐标x */
     @ApiModelProperty(value = "坐标x",required = true)
-    @SerializedName("X")
     var x: Double? = null
 
     /** 坐标y */
     @ApiModelProperty(value = "坐标y",required = true)
-    @SerializedName("Y")
     var y: Double? = null
 
     /** 坐标z */
     @ApiModelProperty(value = "坐标z",required = true)
-    @SerializedName("Z")
     var z: Double? = null
 
 } // Class PointPosition

+ 0 - 14
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/assistant/TaskPic.kt

@@ -1,7 +1,5 @@
 package com.persagy.server.datacenter.models.entities.assistant
 
-import com.alibaba.fastjson.annotation.JSONField
-import com.google.gson.annotations.SerializedName
 import io.swagger.annotations.ApiModel
 import io.swagger.annotations.ApiModelProperty
 import java.io.Serializable
@@ -16,37 +14,25 @@ class TaskPic : Serializable {
 
     /** id */
     @ApiModelProperty(value = "id")
-    @JSONField(name =  "Id",serialize = false)
-    @SerializedName("Id")
     var id: String? = null
 
     /** 名称 */
     @ApiModelProperty(value = "名称")
-    @JSONField(name =  "Name")
-    @SerializedName("Name")
     var name: String? = null
 
     /** key */
     @ApiModelProperty(value = "key")
-    @JSONField(name =  "Key")
-    @SerializedName("Key")
     var key: String? = null
 
     /** 类型 */
     @ApiModelProperty(value = "类型")
-    @JSONField(name =  "Type")
-    @SerializedName("Type")
     var type: String? = null
 
     /** 系统id */
     @ApiModelProperty(value = "系统id")
-    @JSONField(name =  "SystemId")
-    @SerializedName("SystemId")
     var systemId: String? = null
 
     /** 创建时间 */
     @ApiModelProperty(value = "创建时间")
-    @JSONField(name =  "CreateTime")
-    @SerializedName("CreateTime")
     var createTime: String? = null
 } // Class TaskPic

+ 9 - 20
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/objects/Building.kt

@@ -20,7 +20,6 @@
 
 package com.persagy.server.datacenter.models.entities.objects
 
-import com.alibaba.fastjson.annotation.JSONField
 import com.persagy.server.datacenter.models.entities.base.BaseInfo
 import com.persagy.service.models.annotations.SCascade
 import io.swagger.annotations.ApiModel
@@ -42,91 +41,81 @@ open class Building : BaseInfo() {
     @ApiModelProperty(value = "建筑体ID")
     @Id
     @Column(name = "id")
-    @JSONField(name = "BuildID")
     var id: String? = null
 
     /** 建筑体名称 */
     @ApiModelProperty(value = "建筑体名称")
     @Column(name = "name")
-    @JSONField(name = "BuildName")
     var name: String? = null
 
     /** 建筑本地编码 */
     @ApiModelProperty(value = "建筑本地编码")
     @Column(name = "local_id")
-    @JSONField(name = "BuildLocalID")
     var localId: String? = null
 
     /** 建筑本地名称 */
     @ApiModelProperty(value = "建筑本地名称")
     @Column(name = "local_name")
-    @JSONField(name = "BuildLocalName")
     var localName: String? = null
 
     /** 项目id */
     @ApiModelProperty(value = "项目id")
     @Column(name = "project_id")
-    @JSONField(name = "ProjectID")
     var projectId: String? = null
 
-    /** BIM模型中编码 */
-    @ApiModelProperty(value = "BIM模型中编码")
-    @Column(name = "bim_id")
-    @JSONField(name = "BIMID")
-    var bimId: String? = null
+    /** 平台默认二维码 */
+    @ApiModelProperty(value = "平台默认二维码")
+    @Column(name = "default_qr_code")
+    var defaultQRCode: String? = null
+
+    /** 建筑二维码图片 */
+    @ApiModelProperty(value = "建筑二维码图片")
+    @Column(name = "build_qr_code")
+    var buildQRCode: String? = null
 
     /** 建筑信息 */
     @ApiModelProperty(value = "建筑信息")
     @Column(name = "building_info")
-    @JSONField(name = "BuildingInfo")
     var buildingInfo: HashMap<String,Any?>? = null
 
     /** 工作历 */
     @ApiModelProperty(value = "工作历")
     @Column(name = "schedule")
-    @JSONField(name = "Schedule")
     var schedule: HashMap<String,Any?>? = null
 
     /** 人员信息 */
     @ApiModelProperty(value = "人员信息")
     @Column(name = "people_info")
-    @JSONField(name = "PeopleInfo")
     var peopleInfo: HashMap<String,Any?>? = null
 
     /** 能耗信息 */
     @ApiModelProperty(value = "能耗信息")
     @Column(name = "consumption_info")
-    @JSONField(name = "ConsumptionInfo")
     var consumptionInfo: HashMap<String,Any?>? = null
 
     /** 自定义 */
     @ApiModelProperty(value = "自定义")
     @Column(name = "custom_param")
-    @JSONField(name = "CustomParam")
     var customParam: HashMap<String,Any?>? = null
 
     /** 建筑文档 */
     @ApiModelProperty(value = "建筑文档")
     @Column(name = "building_doc")
-    @JSONField(name = "BuildingDoc")
     var buildingDoc: HashMap<String,Any?>? = null
 
     /** 对象类型 */
     @ApiModelProperty(value = "对象类型")
     @Column(name = "object_type")
-    @JSONField(name = "ObjectType")
     override var objectType: String? = "Building"
 
     /** 楼层   table  对应关系表   idColumn 对应 本类的关系id    childIdColumn 级联对象的关系id */
     @ApiModelProperty(value = "级联-楼层")
     @SCascade(table="floor", idColumn="building_id", childIdColumn="id")
-    @JSONField(name = "Floor")
     var floor: ArrayList<Floor>? = null
 
     /** 项目 */
     @ApiModelProperty(value = "级联-项目")
     @SCascade(table="building", idColumn="id", childIdColumn="project_id")
-    @JSONField(name = "Project")
     var project: Project? = null
 
 

+ 17 - 72
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/objects/Equipment.kt

@@ -22,8 +22,8 @@ package com.persagy.server.datacenter.models.entities.objects
 
 import com.alibaba.fastjson.annotation.JSONField
 import com.persagy.server.datacenter.models.entities.assistant.BIMLocation
-import com.persagy.server.datacenter.models.entities.dict.EquipCategory
 import com.persagy.server.datacenter.models.entities.base.BaseInfo
+import com.persagy.server.datacenter.models.entities.dict.EquipCategory
 import com.persagy.server.datacenter.models.entities.task.SchemeUtils
 import com.persagy.service.models.annotations.SCascade
 import io.swagger.annotations.ApiModel
@@ -45,61 +45,60 @@ open class Equipment : BaseInfo() {
     @ApiModelProperty(value = "设备id",required = true)
     @Id
     @Column(name = "id")
-    @JSONField(name = "EquipID")
     var id: String? = null
 
     /** 设备名称 */
     @ApiModelProperty(value = "设备名称",required = true)
     @Column(name = "name")
-    @JSONField(name = "EquipName")
     var name: String? = null
 
     /** 设备本地编码 */
     @ApiModelProperty(value = "设备本地编码")
     @Column(name = "local_id")
-    @JSONField(name = "EquipLocalID")
     var localId: String? = null
 
     /** 设备本地名称 */
     @ApiModelProperty(value = "设备本地名称")
     @Column(name = "local_name")
-    @JSONField(name = "EquipLocalName")
     var localName: String? = null
 
-    /** 设备二维码照片 */
-    @ApiModelProperty(value = "设备二维码照片")
-    @Column(name = "qr_code")
-    @JSONField(name = "EquipQRCode")
-    var qrCode: String? = null
+    /** 二维码图片 */
+    @ApiModelProperty(value = "二维码图片")
+    @Column(name = "qr_code_pic")
+    var qRCodePic: String? = null
+
+    /** 二维码内容 */
+    @ApiModelProperty(value = "二维码内容")
+    @Column(name = "default_qr_code")
+    var defaultQRCode: String? = null
 
     /** 设计图纸中编码 */
     @ApiModelProperty(value = "设计图纸中编码")
     @Column(name = "cad_id")
-    @JSONField(name = "CADID")
     var cadId: String? = null
 
+    /** RFID标识 */
+    @ApiModelProperty(value = "RFID标识")
+    @Column(name = "rf_id")
+    var rfId: String? = null
+
     /** BIM模型中编码 */
     @ApiModelProperty(value = "BIM模型中编码")
     @Column(name = "bim_id")
-    @JSONField(name = "BIMID")
     var bimId: String? = null
 
     /** BIM构建编码 */
     @ApiModelProperty(value = "BIM构建编码")
     @Column(name = "bim_type_id")
-    @JSONField(name = "BIMTypeID")
     var bimTypeId: String? = null
 
     /** BIM模型中坐标 */
     @ApiModelProperty(value = "BIM模型中坐标")
     @Column(name = "bim_location")
-    @JSONField(name = "BIMLocation")
     var bimLocation: String? = null
 
     /** BIM模型中坐标 */
     @ApiModelProperty(value = "BIM模型中坐标json")
-//    @Column(name = "location_json")
-    @JSONField(name = "LocationJson")
     var locationJson: BIMLocation? = null
         get() {
             if (!bimLocation.isNullOrEmpty()){
@@ -124,13 +123,11 @@ open class Equipment : BaseInfo() {
     /** 项目id */
     @ApiModelProperty(value = "项目id",required = true)
     @Column(name = "project_id")
-    @JSONField(name = "ProjectId")
     var projectId: String? = null
 
     /** 设备类型code */
     @ApiModelProperty(value = "设备类型code")
     @Column(name = "category")
-    @JSONField(name = "Category")
     var category: String? = null
 
     /** 设备所在建筑id */
@@ -142,252 +139,210 @@ open class Equipment : BaseInfo() {
     /** 设备所在楼层id */
     @ApiModelProperty(value = "设备所在楼层id")
     @Column(name = "floor_id")
-    @JSONField(name = "FloorId")
     var floorId: String? = null
 
     //    /** 设备关联的资产id */
     @ApiModelProperty(value = "设备关联的资产id")
     @Column(name = "property_id",insertable = false,updatable = false )
-    @JSONField(name = "PropertyId")
     var propertyId: String? = null
 
     /** Revit族 */
     @ApiModelProperty(value = "Revit族 ")
     @Column(name = "family_name")
-    @JSONField(name = "BIMFamilyName")
-    var familyName: String? = null
+    var bimFamilyName: String? = null
 
     /** Revit族类型 */
     @ApiModelProperty(value = "Revit族类型 ")
     @Column(name = "family_symbol")
-    @JSONField(name = "BIMFamilySymbol")
-    var familySymbol: String? = null
+    var bimFamilySymbol: String? = null
 
     /** 设备序号 */
     @ApiModelProperty(value = "设备序号 ")
     @Column(name = "equip_serial")
-    @JSONField(name = "EquipSerial")
     var equipSerial: Double? = null
 
     /** 生产厂家ID */  //生产商的id
     @ApiModelProperty(value = "生产厂家id")
     @Column(name = "dp_manufacturer_id")
-    @JSONField(name = "DPManufacturerID")
     var dpManufacturerID: String? = null
 
     /** 供应商信息id */
     @ApiModelProperty(value = "供应商信息id")
     @Column(name = "dp_supplier_id")
-    @JSONField(name = "DPSupplierID")
     var dpSupplierID: String? = null
 
     /** 维修商信息id */
     @ApiModelProperty(value = "维修商信息id")
     @Column(name = "dp_maintainer_id")
-    @JSONField(name = "DPMaintainerID")
     var dpMaintainerID: String? = null
 
     /** 保险公司信息id */
     @ApiModelProperty(value = "保险公司信息id")
     @Column(name = "dp_insurer_id")
-    @JSONField(name = "DPInsurerID")
     var dpInsurerID: String? = null
 
     /** 设备型号id */
     @ApiModelProperty(value = "设备型号id")
     @Column(name = "dp_specification_id")
-    @JSONField(name = "DPSpecificationID")
     var dpSpecificationID: String? = null
 
     /** 品牌id */
     @ApiModelProperty(value = "品牌id")
     @Column(name = "dp_brand_id")
-    @JSONField(name = "DPBrandID")
     var dpBrandID: String? = null
 
     /** 台账参数 */
     @ApiModelProperty(value = "台账参数")
     @Column(name = "ledger_param")
-    @JSONField(name = "LedgerParam")
     var ledgerParam: HashMap<String,Any?>? = null
 
     /** 通讯参数 */
     @ApiModelProperty(value = "通讯参数")
     @Column(name = "comm_param")
-    @JSONField(name = "CommParam")
     var commParam: HashMap<String,Any?>? = null
 
     /** 技术参数 */
     @ApiModelProperty(value = "技术参数")
     @Column(name = "tech_param")
-    @JSONField(name = "TechParam")
     var techParam: HashMap<String,Any?>? = null
 
     /** 运行参数 */
     @ApiModelProperty(value = "运行参数")
     @Column(name = "run_param")
-    @JSONField(name = "RunParam")
     var runParam: HashMap<String,Any?>? = null
 
     /** 设定参数 */
     @ApiModelProperty(value = "设定参数")
     @Column(name = "setting_param")
-    @JSONField(name = "SettingParam")
     var settingParam: HashMap<String,Any?>? = null
 
     /** 报警信息 */
     @ApiModelProperty(value = "报警信息")
     @Column(name = "alram")
-    @JSONField(name = "Alram")
     var alram: HashMap<String,Any?>? = null
 
     /** 自定义 */
     @ApiModelProperty(value = "自定义")
     @Column(name = "custom_param")
-    @JSONField(name = "CustomParam")
     var customParam: HashMap<String,Any?>? = null
 
     /** 部件关联设备id */
     @ApiModelProperty(value = "部件关联设备id")
     @Column(name = "parent_id")
-    @JSONField(name = "ParentId")
     var parentId: String? = null
 
     /** 温度传感器 */
     @ApiModelProperty(value = "温度传感器")
     @Column(name = "temp_sensor")
-    @JSONField(name = "TempSensor")
     var tempSensor: HashMap<String,Any?>? = null
 
     /** 技术参数-通用 */
     @ApiModelProperty(value = "技术参数-通用")
     @Column(name = "tech_param_general")
-    @JSONField(name = "TechParamGeneral")
     var techParamGeneral: HashMap<String,Any?>? = null
 
     /** 运行参数-通用 */
     @ApiModelProperty(value = "运行参数-通用")
     @Column(name = "run_param_general")
-    @JSONField(name = "RunParamGeneral")
     var runParamGeneral: HashMap<String,Any?>? = null
 
     /** 速度传感器 */
     @ApiModelProperty(value = "速度传感器")
     @Column(name = "speed_sensor")
-    @JSONField(name = "SpeedSensor",serialize = false )
     var speedSensor: HashMap<String,Any?>? = null
 
     /** 声音传感器 */
     @ApiModelProperty(value = "声音传感器")
     @Column(name = "sound_sensor")
-    @JSONField(name = "SoundSensor")
     var soundSensor: HashMap<String,Any?>? = null
 
     /** 湿度传感器 */
     @ApiModelProperty(value = "湿度传感器")
     @Column(name = "humidity_sensor")
-    @JSONField(name = "HumiditySensor")
     var humiditySensor: HashMap<String,Any?>? = null
 
     /** 压力传感器 */
     @ApiModelProperty(value = "压力传感器")
     @Column(name = "press_transd")
-    @JSONField(name = "PressTransd")
     var pressTransd: HashMap<String,Any?>? = null
 
     /** 热量传感器 */
     @ApiModelProperty(value = "热量传感器")
     @Column(name = "heat_sensor")
-    @JSONField(name = "HeatSensor")
     var heatSensor: HashMap<String,Any?>? = null
 
     /** 流量传感器 */
     @ApiModelProperty(value = "流量传感器")
     @Column(name = "flow_sensor")
-    @JSONField(name = "FlowSensor")
     var flowSensor: HashMap<String,Any?>? = null
 
     /** 电度传感器 */
     @ApiModelProperty(value = "电度传感器")
     @Column(name = "electricity_sensor")
-    @JSONField(name = "ElectricitySensor")
     var electricitySensor: HashMap<String,Any?>? = null
 
     /** 位移传感器 */
     @ApiModelProperty(value = "位移传感器")
     @Column(name = "displ_sensor")
-    @JSONField(name = "DisplSensor")
     var displSensor: HashMap<String,Any?>? = null
 
     /** 浓度传感器 */
     @ApiModelProperty(value = "浓度传感器")
     @Column(name = "concent_sensor")
-    @JSONField(name = "ConcentSensor")
     var concentSensor: HashMap<String,Any?>? = null
 
     /** 图像传感器 */
     @ApiModelProperty(value = "图像传感器")
     @Column(name = "image_sensor")
-    @JSONField(name = "ImageSensor")
     var imageSensor: HashMap<String,Any?>? = null
 
     /** 系统id集合 */
     @ApiModelProperty(value = "系统id集合")
-    @JSONField(name = "SystemList")
     var systemList: List<String>? = null
 
     /** 对象类型 */
     @ApiModelProperty(value = "对象类型")
     @Column(name = "object_type")
-    @JSONField(name = "ObjectType")
     override var objectType: String? = "Equipment"
 
     /** 项目自定义类型 */
     @ApiModelProperty(value = "项目自定义类型")
     @Column(name = "custom_category")
-    @JSONField(name = "CustomCategory")
     var customCategory: String? = null
 
     /** 任务状态 待验证1、已验证0、未找到-1  */
     @ApiModelProperty(value = "任务状态-待验证1、已验证0、未找到-1")
     @Column(name = "task_state")
-    @JSONField(name = "TaskState")
     var taskState: Int? = null
 
     /** 模型文件id */
     @ApiModelProperty(value = "模型文件id")
     @Column(name = "model_id")
-    @JSONField(name = "ModelId")
     var modelId: String? = null
 
     /** 反馈参数 */
     @ApiModelProperty(value = "反馈参数")
     @Column(name = "feedback_param")
-    @JSONField(name = "FeedbackParam")
     var feedbackParam: HashMap<String,Any?>? = null
 
     /** 人流量传感器 */
     @ApiModelProperty(value = "人流量传感器")
     @Column(name = "man_flow_sensor")
-    @JSONField(name = "ManFlowSensor")
     var manFlowSensor: HashMap<String,Any?>? = null
 
     /** 撕码贴码状态 */
     @ApiModelProperty(value = "撕码贴码状态")
     @Column(name = "code_type")
-    @JSONField(name = "CodeType")
     var codeType: Int? = null
 
     /** 备注 */
     @ApiModelProperty(value = "备注")
     @Column(name = "note")
-    @JSONField(name = "Note")
     var note: Int? = null
 
     /** 方案id */
     @ApiModelProperty(value = "方案id")
 //    @Column(name = "scheme_id")
-    @JSONField(name = "SchemeId")
     var schemeId: String? = null
     get() {
         if (!category.isNullOrEmpty()){
@@ -399,60 +354,50 @@ open class Equipment : BaseInfo() {
     /** 资产 */
     @ApiModelProperty(value = "级联-资产")
     @SCascade(table="property", idColumn="equip_id", childIdColumn="id")
-    @JSONField(name = "Property")
     var property: Property? = null
 
     /** 建筑   table  对应关系表   idColumn 对应 本类的id    childIdColumn 级联对象的关系id */
     @ApiModelProperty(value = "级联-建筑")
     @SCascade(table="equipment", idColumn="id", childIdColumn="building_id")
-    @JSONField(name = "Building")
     var building: Building? = null
 
     /** 级联-楼层   table  对应关系表   idColumn 对应 本类的id    childIdColumn 级联对象的关系id */
     @ApiModelProperty(value = "级联-楼层")
     @SCascade(table="equipment", idColumn="id", childIdColumn="floor_id")
-    @JSONField(name = "Floor")
     var floor: Floor? = null
 
     /** 级联-项目 */
     @ApiModelProperty(value = "级联-项目")
     @SCascade(table="equipment", idColumn="id", childIdColumn="project_id")
-    @JSONField(name = "Project")
     var project: Project? = null
 
     /** 级联-设备分类 */
     @ApiModelProperty(value = "级联-设备分类")
     @SCascade(table="equipment", idColumn="id", childIdColumn="category")
-    @JSONField(name = "EquipCategory")
     var equipCategory: EquipCategory? = null
 
     /** 级联-设备服务的空间的 */
     @ApiModelProperty(value = "级联-设备服务的空间的")
     @SCascade(table="relationship.r_eq2sp", idColumn="eq_id", childIdColumn="sp_id",filter = "type = 'eq2sp_for'")
-    @JSONField(name = "ZoneSpaceBaseFor")
     var zoneSpaceForBase: ArrayList<ZoneSpace>? = null
 
     /** 级联-设备所在的空间的 */
     @ApiModelProperty(value = "级联-设备所在的空间的")
     @SCascade(table="relationship.r_eq2sp", idColumn="eq_id", childIdColumn="sp_id",filter = "type = 'eq2sp_in'")
-    @JSONField(name = "ZoneSpaceBaseIn")
     var zoneSpaceInBase: ArrayList<ZoneSpace>? = null
 
     /** 级联-设备所在的竖井 */
     @ApiModelProperty(value = "级联-设备所在的竖井")
     @SCascade(table="r_eq_in_sh", idColumn="equip_id", childIdColumn="shaft_id")
-    @JSONField(name = "ShaftList")
     var shaftList: ArrayList<Shaft>? = null
 
     /** 资产列表 */
     @ApiModelProperty(value = "资产列表")
-    @JSONField(name = "PropertyList")
     var propertyList: ArrayList<Property>? = null
 
     /** 级联-部件   table  对应关系表   idColumn 对应 本类的id    childIdColumn 级联对象的关系id */
     @ApiModelProperty(value = "级联-部件")
     @SCascade(table="equipment", idColumn="parent_id", childIdColumn="id")
-    @JSONField(name = "Component")
     var component: ArrayList<Equipment>? = null
 
 } // Class Equipment

+ 26 - 38
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/objects/Floor.kt

@@ -20,7 +20,6 @@
 
 package com.persagy.server.datacenter.models.entities.objects
 
-import com.alibaba.fastjson.annotation.JSONField
 import com.persagy.server.datacenter.models.entities.assistant.PointPosition
 import com.persagy.server.datacenter.models.entities.base.BaseInfo
 import com.persagy.service.models.annotations.SCascade
@@ -43,114 +42,106 @@ open class Floor : BaseInfo() {
     @ApiModelProperty(value = "楼层ID")
     @Id
     @Column(name = "id")
-    @JSONField(name = "FloorID")
     var id: String? = null
 
     /** 楼层名称 */
     @ApiModelProperty(value = "楼层名称")
     @Column(name = "name")
-    @JSONField(name = "FloorName")
     var name: String? = null
 
     /** 楼层本地编码 */
     @ApiModelProperty(value = "楼层本地编码")
     @Column(name = "local_id")
-    @JSONField(name = "FloorLocalID")
     var localId: String? = null
 
     /** 楼层本地名称 */
     @ApiModelProperty(value = "楼层本地名称")
     @Column(name = "local_name")
-    @JSONField(name = "FloorLocalName")
     var localName: String? = null
 
-    /** 樓層二維碼圖片 */
-    @ApiModelProperty(value = "樓層二維碼圖片")
-    @Column(name = "qr_code")
-    @JSONField(name = "FloorQRCode")
-    var qr_code: String? = null
+    /** 二维码内容 */
+    @ApiModelProperty(value = "二维码内容")
+    @Column(name = "default_or_code")
+    var defaultQRCode: String? = null
+
+    /** 二维码图片 */
+    @ApiModelProperty(value = "二维码图片")
+    @Column(name = "qr_code_pic")
+    var qRCodePic: String? = null
 
     /** 项目id */
     @ApiModelProperty(value = "项目id")
     @Column(name = "project_id")
-    @JSONField(name = "ProjectID")
     var projectId: String? = null
 
     /** 建筑id */
     @ApiModelProperty(value = "建筑id")
     @Column(name = "building_id")
-    @JSONField(name = "BuildID")
-    var buildId: String? = null
+    var buildingId: String? = null
+
+    /** BIM模型中坐标 */
+    @ApiModelProperty(value = "BIM模型中坐标")
+    @Column(name = "bim_location")
+    var bimLocation: String? = null
 
     /** BIM模型中编码 */
     @ApiModelProperty(value = "BIM模型中编码")
     @Column(name = "bim_id")
-    @JSONField(name = "BIMID")
     var bimId: String? = null
 
     /** BIM模型中编码 */
     @ApiModelProperty(value = "BIM模型中编码")
     @Column(name = "bim_id_pre")
-    @JSONField(name = "BIMIDPre")
     var bimIdPre: String? = null
 
     /** 楼层顺序码 */
     @ApiModelProperty(value = "楼层顺序码")
     @Column(name = "sequence_id")
-    @JSONField(name = "FloorSequenceID")
-    var sequenceId: Int? = null
+    var floorSequenceId: Int? = null
+
+    /** 楼层常驻人数 */
+    @ApiModelProperty(value = "楼层常驻人数")
+    @Column(name = "permanent_people_num")
+    var permanentPeopleNum: Int? = null
+
+    /** 楼层编码 */
+    @ApiModelProperty(value = "楼层编码")
+    @Column(name = "floor_identity")
+    var floorIdentity: String? = null
 
     /** 结构信息 */
     @ApiModelProperty(value = "结构信息")
     @Column(name = "structure_info")
-    @JSONField(name = "StructureInfo")
     var structureInfo: HashMap<String,Any?>? = null
 
     /** 人员信息 */
     @ApiModelProperty(value = "结构信息")
     @Column(name = "people_info")
-    @JSONField(name = "PeopleInfo")
     var peopleInfo: HashMap<String,Any?>? = null
 
-    /** 自定义 */
-    @ApiModelProperty(value = "自定义")
-    @Column(name = "custom_param")
-    @JSONField(name = "CustomParam")
-    var customParam: HashMap<String,Any?>? = null
-
-//    @ApiModelProperty(value = "楼板标高")
-//    @Column(name = "floor_elevation")
-//    @JSONField(name = "FloorElevation")
-//    var floorElevation: Double? = null
-
     /** 对象类型 */
     @ApiModelProperty(value = "对象类型")
     @Column(name = "object_type")
-    @JSONField(name = "ObjectType")
     override var objectType: String? = "Floor"
 
     /** 工作历信息 */
     @ApiModelProperty(value = "工作历信息")
     @Column(name = "work_calendar")
-    @JSONField(name = "WorkCalendar")
     var workCalendar: HashMap<String,Any?>? = null
 
     /** 建筑   table  对应关系表   idColumn 对应 本类的关系id    childIdColumn 级联对象的关系id */
     @ApiModelProperty(value = "级联-楼层")
     @SCascade(table="floor", idColumn="id", childIdColumn="building_id")
-    @JSONField(name = "Building")
     var building: Building? = null
 
     /** 项目 */
     @ApiModelProperty(value = "级联-项目")
     @SCascade(table="floor", idColumn="id", childIdColumn="project_id")
-    @JSONField(name = "Project")
     var project: Project? = null
 
     /** 贯通关系   self = true  同样的对象查询时 id可以互相调换查询   */
     @ApiModelProperty(value = "级联-贯通关系")
     @SCascade(table="r_fl_through_fl", idColumn="floor_id", childIdColumn="floor_other_id", self = true)
-    @JSONField(name = "FloorThroughList")
     var floorThroughList: ArrayList<Floor>? = null
 
 //    /** 项目 */
@@ -162,18 +153,15 @@ open class Floor : BaseInfo() {
     /** 模型文件id */
     @ApiModelProperty(value = "模型文件id")
     @Column(name = "model_id")
-    @JSONField(name = "ModelID")
     var modelId: String? = null
 
     /** 轮廓线 */
     @ApiModelProperty(value = "轮廓线")
     @Column(name = "outline")
-    @JSONField(name = "Outline")
     var outline: ArrayList<PointPosition>? = null
 
     /** 数量 */
     @ApiModelProperty(value = "数量")
-    @JSONField(name = "Count")
     var count: Int = 0
 
 

+ 22 - 24
data-core/src/main/kotlin/com/persagy/server/datacenter/models/entities/objects/Project.kt

@@ -40,85 +40,83 @@ open class Project : BaseInfo() {
     @ApiModelProperty(value = "项目ID",position = 1)
     @Id
     @Column(name = "id")
-    @JSONField(name = "ProjID")
     var id: String? = null
 
     /** 项目名称 */
     @ApiModelProperty(value = "项目名称",position = 2)
     @Column(name = "name")
-    @JSONField(name = "ProjName")
     var name: String? = null
 
-    @ApiModelProperty(value = "项目名称",position = 3)
-    @Column(name = "password")
-    @JSONField(name = "PassWord")
-    var password: String? = null
+//    @ApiModelProperty(value = "项目名称",position = 3)
+//    @Column(name = "password")
+//    @JSONField(name = "PassWord")
+//    var password: String? = null
 
     /** 项目本地编码 */
     @ApiModelProperty(value = "项目本地编码",position = 4)
     @Column(name = "local_id")
-    @JSONField(name = "ProjLocalID")
     var localId: String? = null
 
     /** 项目本地名称 */
     @ApiModelProperty(value = "项目本地名称",position = 5)
     @Column(name = "local_name")
-    @JSONField(name = "ProjLocalName")
     var localName: String? = null
 
-    /** BIM模型中编码 */
-    @ApiModelProperty(value = "BIM模型中编码",position = 6)
-    @Column(name = "bim_id")
-    @JSONField(name = "BIMID")
-    var bimId: String? = null
+    /** 项目介绍 */
+    @ApiModelProperty(value = "项目介绍",position = 5)
+    @Column(name = "introduction")
+    var introduction: String? = null
+
+    /** 商业层数 */
+    @ApiModelProperty(value = "商业层数",position = 5)
+    @Column(name = "business_floor_num")
+    var businessFloorNum: String? = null
+
+    /** 办公层数 */
+    @ApiModelProperty(value = "办公层数",position = 5)
+    @Column(name = "office_floor_num")
+    var officeFloorNum: String? = null
 
     /** 地理位置 */
     @ApiModelProperty(value = "地理位置",position = 7)
     @Column(name = "geo_info")
-    @JSONField(name = "GeoInfo")
     var geoInfo: HashMap<String,Any?>? = null
 
     /** 项目信息 */
     @ApiModelProperty(value = "项目信息",position = 8)
     @Column(name = "project_info")
-    @JSONField(name = "ProjectInfo")
     var projectInfo: HashMap<String,Any?>? = null
 
     /** 商业信息 */
     @ApiModelProperty(value = "商业信息")
     @Column(name = "commercial_info")
-    @JSONField(name = "CommercialInfo")
     var commercialInfo: HashMap<String,Any?>? = null
 
     /** 能源价格 */
     @ApiModelProperty(value = "能源价格")
     @Column(name = "energy_cost")
-    @JSONField(name = "EnergyCost")
     var energyCost: HashMap<String,Any?>? = null
 
     /** 室外环境 */
     @ApiModelProperty(value = "室外环境")
     @Column(name = "outdoor_env")
-    @JSONField(name = "OutdoorEnv")
     var outdoorEnv: HashMap<String,Any?>? = null
 
     /** 天气预报 */
     @ApiModelProperty(value = "天气预报")
     @Column(name = "weather")
-    @JSONField(name = "Weather")
     var weather: HashMap<String,Any?>? = null
 
     /** 能耗信息 */
     @ApiModelProperty(value = "能耗信息")
     @Column(name = "consumption_info")
-    @JSONField(name = "ConsumptionInfo")
     var consumptionInfo: HashMap<String,Any?>? = null
 
     /** 自定义 */
-    @ApiModelProperty(value = "自定义")
-    @Column(name = "custom_param")
-    @JSONField(name = "CustomParam")
-    var customParam: HashMap<String,Any?>? = null
+//    @ApiModelProperty(value = "自定义")
+//    @Column(name = "custom_param")
+//    @JSONField(name = "CustomParam")
+//    var customParam: HashMap<String,Any?>? = null
 
     /** 对象类型 */
     @ApiModelProperty(value = "对象类型")

+ 497 - 0
datasyn/dictLabel

@@ -0,0 +1,497 @@
+# 数据字典 参数值:
+## 一级标签:
+台账参数 LedgerParam
+
+通讯参数 CommParam
+
+技术参数 TechParam
+
+运行参数 RunParam
+
+设定参数 SettingParam
+
+报警消息 Alram
+
+温度传感器    TempSensor
+
+技术参数-通用 TechParamGeneral
+
+运行参数-通用 RunParamGeneral
+
+速度传感器    SpeedSensor
+
+声音传感器    SoundSensor
+
+湿度传感器    HumiditySensor
+
+压力传感器   PressTransd
+
+热量传感器   HeatSensor
+
+流量传感器  FlowSensor
+
+电度传感器  ElectricitySensor
+
+位移传感器   DisplSensor
+
+浓度传感器   ConcentSensor
+
+图像传感器   ImageSensor
+
+结构信息 StructureInfo
+
+人员信息 PeopleInfo
+
+地理位置 GeoInfo
+
+项目信息 ProjectInfo
+
+商业信息 CommercialInfo
+
+能源价格 energyCost
+
+室外环境 outdoorEnv
+
+天气预报 weather
+
+能耗信息 consumptionInfo
+
+建筑信息 BuildingInfo
+
+建筑文档 BuildingDoc
+
+工作历 Schedule
+
+环境参数 EnvParam
+
+租赁信息 leaseInfo
+
+租户信息 TenantInfo
+
+运行状态 RunningState
+
+反馈参数 FeedbackParam
+
+动态信息 DynamicInfor
+
+## 二级标签:
+建筑类型  	BuildingType
+
+设计指标  	DesignIndex
+
+结构参数	StructureParam
+
+面积信息	AreaInfo
+
+工作作息	WorkRest
+
+电			Electric
+
+燃气		Gas
+
+燃油		Fuel
+
+自来水		TapWater
+
+供热		HeatSupply
+
+供冷		Cooling
+
+生活热水	    DomesticHotWater
+
+季节		Season
+
+空气质量	    AirQuality
+
+蒸汽		Steam
+
+未来第1天	DayOne
+
+未来第2天	DayTwo
+
+未来第3天	DayThree
+
+累计		Cumulative
+
+逐时	Hourly
+
+风速	WindSpeed
+
+声强	SoundIntensity
+
+光照	Illumination
+
+温湿度	TemperatureHumidity
+
+加热器	Heater
+
+技术参数-噪声传感器 NoiseSensor
+
+无负压稳流机组	PressureSteadyFlow
+
+保险文件	    InsuranceDoc
+
+发射指标	    LaunchIndex
+
+毛发过滤器	HairFilter
+
+压缩机		Compressor
+
+烟气余热回收装置	    FlueGasWasteHeat
+
+膜处理系统			MembraneProcessingSystem
+
+制动器		Brake
+
+矩阵		Matrix
+
+CPU状态		CPUStates
+
+制冷工况	    RefrigCondition
+
+分支分配器	BranchDis
+
+接线端子	    ConnectionTerminal
+
+输入		Input
+
+漏电保护器	LeakageProtector
+
+发热地膜设备 	FeverFilmEquip
+
+传输	transmission
+
+整体	Whole
+
+龙骨	keel
+
+清水灭火器	CleanWaterExting
+
+扁圆形风管	FlatCircularDuct
+
+电加热		ElectricHeating
+
+隔离/接地开关	EarthingSwitch
+
+调节池		RegulatingPool
+
+送风段		AirSupply
+
+租户管理	        TenantManag
+
+通用电气指标	GeneralElecIndex
+
+热回收段		HeatRecoverySection
+
+备用电源		EmergencySupply
+
+软件系统		softwareSystem
+
+协议			Agreement
+
+冷凝器			condenser
+
+卤代烷灭火器	    HalogAgentExting
+
+加湿段			HumidSection
+
+CD录放盘		CDRecording 
+
+泡沫灭火器		FoamExtinguisher
+
+辅助设备		AuxiliaryEquip
+
+客流探测	    PasseFlowDetec
+
+设备厂家	    EquipManufactor
+
+技术参数-热电偶温度传感器 ThermTemperSensor
+
+水地暖设备	WaterHeatingEquip
+
+柴油机		DieselEngine
+
+排水		Drainage
+
+通讯地址	    PostalAddress
+
+混合器		Mixer
+
+性能		performance
+
+运行维保	    OperationMainte
+
+核心层		CoreLayer
+
+发热电缆设备	ThermCableEquip
+
+车库出入口		GarageEntraExit
+
+整机			completeMachine
+
+电流			ElectricCurrent
+
+供应购买		SupplyPurchase
+
+塑料管			PlasticPipe
+
+技术参数-录音	SoundRecording
+
+现场安装		Siteinstall
+
+技术参数		TechParam
+
+累计指标		CumulaIndex
+
+频率			Freque
+
+活性炭罐		Canister
+
+再热段			ReheaSection
+
+接口			Interf
+
+变频机组		FrequeUnit
+
+调节阀			RegulValve
+
+矩形风管		RectDuct
+
+减速器			Retarder
+
+加压泵			PressPump
+
+圆形风管		CircularDuct
+
+断路器			CircuitBreaker
+
+电压互感器		VoltageTrans
+
+止回阀			CheckValve
+
+园林			Gardens
+
+消毒设备		DisinfeEquip
+
+总体			Population
+
+发电机组		GeneratorSet
+
+表冷段			SurfaceCoolSection
+
+喷泉			Fountain
+
+低压			LowPress
+
+播放器			Player
+
+玻璃破碎探测器	GlassCrushDetec
+
+末端			End
+
+密码键盘	PasswordKeyb
+
+灯具		LampsLanterns
+
+网络		Network
+
+出口水质	ExportWaterQuality
+
+输出		Output
+
+排风		ExhaustAir
+
+视频式		VideoType
+
+显示屏		Display
+
+总谐波		TotalHarmonic
+
+混风段		MixingSection
+
+电梯		Elevator
+
+汇聚层		DistriLayer
+
+摄像头		Camera
+
+电池		Battery
+
+电流互感器		CurrentTrans
+
+技术参数-玻璃管式温度计		GlassTubeTherm
+
+显示		Display
+
+应急照明	    EmerLighting
+
+技术参数-压力式温度计	PressureThermo
+
+空间辐射指标			SpatialRadiIndex
+
+照片文档		PhotoDoc
+
+其他设备		OtherEquip
+
+指纹识别仪 		FingerIdent
+
+电压			Voltage
+
+开关状态		SwitchingState
+
+对讲系统		IntercomSystem
+
+反渗透			ReverseOsmosis
+
+电源			PowerSupply
+
+接入层			AccessLayer
+
+保温材料		ThermalInsulMaterial
+
+高频头			Tuner
+
+打印机			Printer
+
+碳晶地暖设备	    CarCryGroHeatEquip
+
+干粉灭火器		DryPowderExti
+
+技术参数-电阻温度传感器  ResisTempeSensor
+
+瞬时参数		InstantParam
+
+运行参数		RunParam
+
+紫外线杀菌器    UltravSteri
+
+吸收器			Absorber
+
+前置功放		Preamplifier
+
+通用			Currency
+
+紫外线发生器	    UltravGener
+
+技术参数-声音通用	GeneralVoice
+
+寻车		CarSearching
+
+排放标准		EmissStand
+
+水侧			WaterSide
+
+塔盘水位		TrayWater
+
+开关保护		SwitchProte
+
+太阳能			SolarEnergy
+
+蒸汽锅炉		SteamBoiler
+
+继电器			Relay
+
+疏散指示		EvacuaInstr
+
+车位			ParkingLot
+
+接收指标		ReceiIndex
+
+臭氧发生器		OzoneGenerator
+
+电视信号		TVSignal
+
+畸变率			DistortRate
+
+熔断器			Fuse
+
+风机			Fan
+
+技术参数-温度通用		TempGeneral
+
+蒸汽冷凝水回收装置  	SteamConde
+
+内胆			InternalBladder
+
+累计参数		CumuParam
+
+主机			Host
+
+消毒剂			Disinf
+
+无线模块		WirelessModule
+
+安全阀			SafetyValve
+
+IC读卡机		ICCardReader
+
+终端设备		TerminalEquip
+
+无线			Wireless
+
+新风段			FreshAir 
+
+触点			Contact
+低压断路器(空气开关) LowBreaker
+前端			FrontEnd
+红外探测器		InfraredDetector
+供水			WaterSupply
+柴发机组		ChaiFa
+减压阀			PressRreliefValve
+提升泵			LiftingPump
+中水回用池		ReclaWater
+监视器			Monitor
+移动信号放大    MobileSignal 
+软件厂家		SoftwareManu
+调制器			Modulator
+水质要求		WaterQuality
+接收器			Receiver
+二氧化碳灭火器			CarbonExting
+技术参数-红外测温仪		InfraredTempInstru
+光端机		OpticalTerminal
+水处理		WaterTreatment
+空气侧		AirSide
+热水锅炉		HotWaterBoiler
+基本设定参数	BasicSetParam
+蒸发器			Evaporator
+发生器			Generator
+高压			HighPressure
+过滤器			Filter
+节流元件		ThrotElement
+外壳			Shell
+瞬时状态		InstanState
+配电柜			PowerCabinet
+过滤段			FilterSegment
+负荷开关		LoadSwitch
+保护			Protect
+功能			Function
+保温层			InsulLayer
+制热工况		HeatingCondi
+接触器			Contactor
+沉淀池			SedimenTank
+身份证阅读器	IDCardReader
+软化器			Softener
+水泵			WaterPump
+技术参数-IC温度传感器  IC TempSensor
+组件		Assembly
+技术参数-热敏电阻温度传感器  ThermTempeSensor
+联轴器		Coupling
+集热板		CollectorPlate
+线圈		Coil
+功放		PowerAmpli
+嵌板		Panel
+盘管		Conduits
+换热器		HeatExcha
+盖板		CoverPlate
+VLAN		Vlan
+储水箱		WaterStoragetank
+施肥器		FertiApplicator
+其他		Other
+功率		Power
+关键指标    KeyIndic
+通断阀		OnOffValve
+细格栅		FineScreens
+电动机		Motor
+瞬时指标	InstanIndex
+压力		Pressure
+工作历信息   WorkCalendar

+ 2 - 2
datasyn/src/main/kotlin/com/persagy/server/syn/controllers/dict/DictControllers.kt

@@ -29,7 +29,7 @@ class DictControllers {
     /**
      * 集团数据-存入数据中心
      */
-    @ApiOperation(value = "001、集团数据-存入数据中心", notes = "",position = 1)
+    @ApiOperation(value = "001、集团数据-存入数据中心", notes = "",position = 1,tags = ["001"])
     @GetMapping(value = ["/group-info"])
     fun groupInfo(): SBaseResponse {
         return DClassDefService.groupQuerys()
@@ -38,7 +38,7 @@ class DictControllers {
     /**
      * 集团下项目-存入数据中心
      */
-    @ApiOperation(value = "002、集团下项目-存入数据中心", notes = "",position = 2)
+    @ApiOperation(value = "002、集团下项目-存入数据中心", notes = "",position = 2,tags = ["002"])
     @GetMapping(value = ["/dict-project"])
     fun dictProject(): SBaseResponse{
         return DClassDefService.dictProject()

+ 212 - 2
datasyn/src/main/kotlin/com/persagy/server/syn/controllers/obj/ObjectFromToControllers.kt

@@ -1,19 +1,229 @@
 package com.persagy.server.syn.controllers.obj
 
+import com.persagy.base.extensions.toJson
+import com.persagy.database.SFilter
+import com.persagy.mybatis.SMybatisDao
+import com.persagy.server.datacenter.models.entities.dictnew.DictProject
+import com.persagy.server.datacenter.models.entities.dictnew.Group
+import com.persagy.server.datacenter.models.entities.objects.Building
+import com.persagy.server.datacenter.models.entities.objects.Equipment
+import com.persagy.server.datacenter.models.entities.objects.Floor
+import com.persagy.server.datacenter.models.entities.objects.Project
+import com.persagy.server.syn.models.api.obj.BuildingApi
+import com.persagy.server.syn.models.api.obj.EquipApi
+import com.persagy.server.syn.models.api.obj.ProjectApi
+import com.persagy.server.syn.models.tools.BuildingUtil
+import com.persagy.server.syn.models.tools.EquipUtil
+import com.persagy.server.syn.models.tools.FloorUtil
+import com.persagy.server.syn.models.tools.ProjectUtil
+import com.persagy.server.syn.services.dict.DClassDefService
+import com.persagy.service.SBaseService
+import com.persagy.service.SObjectService
+import com.persagy.service.models.enums.SResponseType
+import com.persagy.service.models.responses.SBaseResponse
+import io.swagger.annotations.Api
+import io.swagger.annotations.ApiOperation
+import org.slf4j.LoggerFactory
+import org.springframework.web.bind.annotation.PostMapping
+import org.springframework.web.bind.annotation.RequestMapping
+import org.springframework.web.bind.annotation.RestController
+
 /**
  * 对象,中台到数据中心
  *
  * @author wx  <zhangweixin@sagacloud.com>
  * @date  2020/10/18 10:06
  */
+@Api(tags = ["0003、对象-中台到数据中心"])
+@RestController
+@RequestMapping("/project/sync")
 class ObjectFromToControllers {
+    companion object {
+        // 日志
+        private val logger = LoggerFactory.getLogger(ObjectFromToControllers::class.java)
+    } // Companion object
+
+    /** 集团服务 */
+    private val groupService = SBaseService(SMybatisDao(Group::class.java))
+    /** 字典项目服务 */
+    private val dictProjectService = SBaseService(SMybatisDao(DictProject::class.java))
+    /** 数据中心项目服务 */
+    private val projectService = SObjectService(SMybatisDao(Project::class.java))
+    /** 数据中心建筑服务 */
+    private val buildingService = SObjectService(SMybatisDao(Building::class.java))
+    /** 数据中心楼层服务 */
+    private val floorService = SObjectService(SMybatisDao(Floor::class.java))
+    /** 数据中心设备服务 */
+    private val equipmentService = SObjectService(SMybatisDao(Equipment::class.java))
+
+    /**
+     * 项目信息 - 数据中台存储到数据中心,根据集团获取集团写所有项目
+     */
+    @ApiOperation(value = "项目信息-数据中台存储到数据中心,根据集团获取集团写所有项目 ", notes = "")
+    @PostMapping(value = ["/create"])
+    fun projectGroupAll(): SBaseResponse {
+        return try {
+            /** 集团数据 */
+            DClassDefService.groupQuerys()
+            /** 项目数据 */
+            DClassDefService.dictProject()
+
+            val groupList = dictProjectService.selectAll().exec()
+            for (group in groupList) {
+                val projectQueryList = ProjectApi.projectQuery(group.id!!)
+
+                if (projectQueryList.size > 0) {
+                    for (projectQuery in projectQueryList) {
+                        val projectDataConversion = ProjectUtil.projectDataConversion(group.groupCode!!, projectQuery)
+                        logger.debug("项目:  ${projectDataConversion.toJson()} ")
+                        projectService.replace(projectDataConversion)
+                    }
+                }
+            }
+
+            SBaseResponse(SResponseType.success)
+        } catch (e: Exception) {
+            e.printStackTrace()
+            SBaseResponse(SResponseType.failure, e.message!!)
+        }
+
+    }
 
     /**
-     * 项目信息-数据中台存储到数据中心,根据集团获取集团写所有项目
+     * 建筑信息 - 数据中台存储到数据中心
      */
-    fun projectGroupAll(){
+    @ApiOperation(value = "建筑信息-数据中台存储到数据中心 ", notes = "switch true  根据输入的项目 id  同步建筑,false 同步所有项目的 建筑")
+    @PostMapping(value = ["/building-syn"])
+    fun buildingSyn(projectId: String, switch: Boolean = true): SBaseResponse {
+        return try {
+            if (switch) {
+                val dictProject = dictProjectService.select(SFilter.eq("id", projectId)).entity()
+                val buildingSynList = BuildingApi.buildingSyn(projectId,"building")
+                if (buildingSynList.size > 0) {
+                    for (buildingSyn in buildingSynList) {
+                        val buildingDataConversion =
+                            BuildingUtil.buildingDataConversion(projectId, dictProject!!.groupCode!!, buildingSyn)
+                        logger.debug("建筑:  ${buildingDataConversion.toJson()} ")
+//                        buildingService.replace(buildingDataConversion)
+
+                    }
+                }
+
+            } else {
+                /** 查询所有的项目 */
+                val projectList = projectService.selectAll().exec()
+                for (project in projectList){
+                    val dictProject = dictProjectService.select(SFilter.eq("id", project.id!!)).entity()
+                    val buildingSynList = BuildingApi.buildingSyn(projectId,"building")
+                    if (buildingSynList.size > 0) {
+                        for (buildingSyn in buildingSynList) {
+                            val buildingDataConversion =
+                                BuildingUtil.buildingDataConversion(project.id!!, dictProject!!.groupCode!!, buildingSyn)
+                            logger.debug("建筑:  ${buildingDataConversion.toJson()} ")
+                            buildingService.replace(buildingDataConversion)
+                        }
+                    }
+                }
+            }
+            SBaseResponse(SResponseType.success)
+        } catch (e: Exception) {
+            e.printStackTrace()
+            SBaseResponse(SResponseType.failure, e.message!!)
+        }
 
     }
 
 
+    /**
+     * 楼层 - 中台楼层同步到数据中心
+     */
+    @ApiOperation(value = "楼层信息-数据中台存储到数据中心 ", notes = "switch true  根据输入的项目 id  同步楼层,false 同步所有项目的 楼层")
+    @PostMapping(value = ["/floor-syn"])
+    fun floorSyn(projectId: String,switch: Boolean = true): SBaseResponse {
+        return try {
+            if (switch){
+                val dictProject = dictProjectService.select(SFilter.eq("id", projectId)).entity()
+                val floorSynList = BuildingApi.buildingSyn(projectId, "floor")
+                if (floorSynList.size>0) {
+                    for (floorSyn in floorSynList){
+                        val floor = FloorUtil.floorSyn(projectId, dictProject!!.groupCode!!, floorSyn)
+                        floorService.replace(floor)
+                    }
+                }
+            } else {
+                /** 查询所有的项目 */
+                val projectList = projectService.selectAll().exec()
+                for (project in projectList){
+                    val dictProject = dictProjectService.select(SFilter.eq("id", project.id!!)).entity()
+                    val floorSynList = BuildingApi.buildingSyn(projectId, "floor")
+                    if (floorSynList.size>0) {
+                        for (floorSyn in floorSynList){
+                            val floor = FloorUtil.floorSyn(project.id!!, dictProject!!.groupCode!!, floorSyn)
+                            floorService.replace(floor)
+                        }
+                    }
+                }
+            }
+            SBaseResponse(SResponseType.success)
+        } catch (e: Exception) {
+            e.printStackTrace()
+            SBaseResponse(SResponseType.failure, e.message!!)
+        }
+    }
+
+
+    /**
+     * 设备
+     */
+    @ApiOperation(value = "设备信息-数据中台存储到数据中心 ", notes = "switch true  根据输入的项目 id  同步楼层,false 同步所有项目的 楼层")
+    @PostMapping(value = ["/equip-syn"])
+    fun equipSyn(projectId: String,switch: Boolean = true,isBuildingFloor:Boolean = true,page: Int = 1): SBaseResponse {
+        return try {
+            var num = page
+            if (switch) {
+                val dictProject = dictProjectService.select(SFilter.eq("id", projectId)).entity()
+                val equipSynApi = EquipApi.equipSynApi(projectId, page)
+                val equipDataList = equipSynApi.data
+                for (equipData in equipDataList!!){
+                    val equipSyn = EquipUtil.equipSyn(projectId, dictProject!!.groupCode!!, equipData)
+                    if (isBuildingFloor){
+                        /** 查询建筑 */
+                        /** 查询楼层 */
+
+                    }
+                    equipmentService.replace(equipSyn)
+                }
+                if (equipSynApi.data!!.size>= 1000){
+                    num ++
+                    equipSyn(projectId,switch,isBuildingFloor,num)
+                }
+            } else {
+                val projectList = projectService.selectAll().exec()
+                for (project in projectList){
+
+                    val dictProject = dictProjectService.select(SFilter.eq("id", project.id!!)).entity()
+                    val equipSynApi = EquipApi.equipSynApi(project.id!!, page)
+                    val equipDataList = equipSynApi.data
+                    for (equipData in equipDataList!!){
+                        val equipSyn = EquipUtil.equipSyn(projectId, dictProject!!.groupCode!!, equipData)
+                        if (isBuildingFloor){
+                            /** 查询建筑 */
+                            /** 查询楼层 */
+
+                        }
+                        equipmentService.replace(equipSyn)
+                    }
+                    if (equipSynApi.data!!.size>= 1000){
+                        num ++
+                        equipSyn(projectId,switch,isBuildingFloor,num)
+                    }
+                }
+            }
+            SBaseResponse(SResponseType.success)
+        } catch (e: Exception) {
+            e.printStackTrace()
+            SBaseResponse(SResponseType.failure, e.message!!)
+        }
+    }
+
 }

+ 41 - 0
datasyn/src/main/kotlin/com/persagy/server/syn/models/api/obj/BuildingApi.kt

@@ -0,0 +1,41 @@
+package com.persagy.server.syn.models.api.obj
+
+import com.alibaba.fastjson.JSONObject
+import com.persagy.base.utils.SHttpUtil
+import com.persagy.server.syn.Opts
+import com.persagy.server.syn.models.obj.MiddleGroundDataRespose
+import com.persagy.service.utils.SSpringContextUtil
+
+/**
+ * 建筑 api 中台至数据中心
+ *
+ * @author wx  <zhangweixin@sagacloud.com>
+ * @date  2020/10/19 9:10
+ */
+object BuildingApi {
+
+    /** 配置实例 */
+    private val opts: Opts by lazy {
+        SSpringContextUtil.getBean(Opts::class.java) as Opts
+    } // opts
+
+    /**
+     * 获取建筑
+     *
+     * @param projectId     项目 id
+     */
+    fun buildingSyn(projectId: String,type: String): ArrayList<HashMap<String, Any?>> {
+        val url = "${opts.dataPlatform}/instance/object/query?projectId=${projectId}"
+        val jsonObject = JSONObject()
+        val jsonObject2 = JSONObject()
+        jsonObject2["classCode"] = type
+        jsonObject2["valid"] = 1
+        jsonObject["criteria"] = jsonObject2
+        val postObject = SHttpUtil.postObject<MiddleGroundDataRespose>(url, jsonObject)
+        if (postObject.result == "success"&&!postObject.data.isNullOrEmpty()) {
+            return postObject.data!!
+        }
+        return ArrayList<HashMap<String, Any?>>()
+    }
+
+}

+ 38 - 0
datasyn/src/main/kotlin/com/persagy/server/syn/models/api/obj/EquipApi.kt

@@ -0,0 +1,38 @@
+package com.persagy.server.syn.models.api.obj
+
+import com.alibaba.fastjson.JSONObject
+import com.persagy.base.utils.SHttpUtil
+import com.persagy.server.syn.Opts
+import com.persagy.server.syn.models.obj.MiddleGroundDataRespose
+import com.persagy.service.utils.SSpringContextUtil
+
+/**
+ *
+ * @author wx  <zhangweixin@sagacloud.com>
+ * @date  2020/10/19 17:50
+ */
+object EquipApi {
+    /** 配置实例 */
+    private val opts: Opts by lazy {
+        SSpringContextUtil.getBean(Opts::class.java) as Opts
+    } // opts
+    /**
+     * 获取中台设备数据
+     */
+    fun equipSynApi(projectId: String,page: Int): MiddleGroundDataRespose{
+        val url = "${opts.dataPlatform}/instance/object/query?projectId=${projectId}"
+        val jsonObject = JSONObject()
+        val jsonObject2 = JSONObject()
+        jsonObject2["objType"] = "equipment"
+        jsonObject2["valid"] = 1
+        jsonObject["criteria"] = jsonObject2
+        jsonObject["page"] = page
+        jsonObject["size"] = 1000
+        val postObject = SHttpUtil.postObject<MiddleGroundDataRespose>(url, jsonObject)
+        if (postObject.result == "success"&&!postObject.data.isNullOrEmpty()) {
+            return postObject
+        }
+        return postObject
+    }
+
+}

+ 13 - 6
datasyn/src/main/kotlin/com/persagy/server/syn/models/api/obj/ProjectApi.kt

@@ -1,7 +1,9 @@
 package com.persagy.server.syn.models.api.obj
 
 import com.alibaba.fastjson.JSONObject
+import com.persagy.base.utils.SHttpUtil
 import com.persagy.server.syn.Opts
+import com.persagy.server.syn.models.obj.MiddleGroundDataRespose
 import com.persagy.service.utils.SSpringContextUtil
 
 /**
@@ -18,19 +20,24 @@ object ProjectApi {
     } // opts
 
     /**
+     * 根据集团查询集团下所有的项目
      *
+     * @param projectId     集团编码
+     * @return
      */
-    fun projectQuery(groupCode: String){
-        val url = "${opts.dataPlatform}/instance/object/query?groupCode=${groupCode}"
+    fun projectQuery(projectId: String): ArrayList<HashMap<String, Any?>> {
+        val url = "${opts.dataPlatform}/instance/object/query?projectId=${projectId}"
         val jsonObject = JSONObject()
         val jsonObject2 = JSONObject()
-        jsonObject2["classCode"] = groupCode
+        jsonObject2["classCode"] = "project"
         jsonObject2["valid"] = 1
         jsonObject["criteria"] = jsonObject2
 
-//        SHttpUtil.postObject<GroupResponse>(url, jsonObject)
-
-
+        val postObject = SHttpUtil.postObject<MiddleGroundDataRespose>(url, jsonObject)
+        if (postObject.result == "success"&&!postObject.data.isNullOrEmpty()) {
+            return postObject.data!!
+        }
+        return ArrayList<HashMap<String, Any?>>()
     }
 
 

+ 18 - 0
datasyn/src/main/kotlin/com/persagy/server/syn/models/obj/MiddleGroundDataRespose.kt

@@ -0,0 +1,18 @@
+package com.persagy.server.syn.models.obj
+
+import java.io.Serializable
+
+/**
+ * 数据中台数据 - 应答类
+ * @author wx  <zhangweixin@sagacloud.com>
+ * @date  2020/10/18 18:47
+ */
+class MiddleGroundDataRespose: Serializable {
+    /** 返回标记 */
+    var result: String? = null
+    /** 数量 */
+    var count: Int? = null
+    /** 返回的数据 */
+    var data: ArrayList<HashMap<String,Any?>>? = null
+
+}

+ 323 - 0
datasyn/src/main/kotlin/com/persagy/server/syn/models/tools/BuildingUtil.kt

@@ -0,0 +1,323 @@
+package com.persagy.server.syn.models.tools
+
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.persagy.database.SFilter
+import com.persagy.mybatis.SMybatisDao
+import com.persagy.server.datacenter.models.entities.assistant.AttPic
+import com.persagy.server.datacenter.models.entities.assistant.TaskPic
+import com.persagy.server.datacenter.models.entities.dictnew.DefFuncId
+import com.persagy.server.datacenter.models.entities.objects.Building
+import com.persagy.server.syn.Opts
+import com.persagy.service.SObjectService
+import com.persagy.service.utils.SSpringContextUtil
+
+/**
+ * 建筑信息转换 - 中台转数据中心
+ *
+ * @author wx  <zhangweixin@sagacloud.com>
+ * @date  2020/10/19 9:43
+ */
+object BuildingUtil {
+    /** 信息点 */
+    private val dictDefFuncIdService = SObjectService(SMybatisDao(DefFuncId::class.java))
+    /** 配置 */
+    private val opts: Opts by lazy {
+        SSpringContextUtil.getBean(Opts::class.java) as Opts
+    }
+
+    /**
+     * 中台建筑转数据中心
+     */
+    fun buildingDataConversion(projectId: String,groupCode: String, mapObj: HashMap<String, Any?>): Building {
+        /** 查建筑类型字典 */
+        val dictDefFuncIdList = dictDefFuncIdService.select(SFilter.eq("groupCode", groupCode), SFilter.eq("classCode", "building")).exec()
+        val mapEx = HashMap<String, Any?>()
+        val mapCode = HashMap<String, Any?>()
+
+        for (explainProject in dictDefFuncIdList) {
+            mapEx[explainProject.code!!] = explainProject.firstName
+            if (!explainProject.secondName.isNullOrEmpty()) {
+                mapCode[explainProject.code!!] = explainProject.secondName
+            }
+        }
+
+        /** 建筑信息 */
+        val buildingInfo = HashMap<String, Any?>()
+        /** 工作历 */
+        val schedule = HashMap<String, Any?>()
+        /** 人员信息 */
+        val peopleInfo = HashMap<String, Any?>()
+        /** 能耗信息 */
+        val consumptionInfo = HashMap<String, Any?>()
+        /** 自定义 */
+        val customParam = HashMap<String, Any?>()
+        /** 建筑文档 */
+        val buildingDoc = HashMap<String, Any?>()
+
+        /** 建筑类型 */
+        var buildingType = HashMap<String, Any?>()
+        /** 设计指标 */
+        var designIndex = HashMap<String, Any?>()
+        /** 结构参数 */
+        var structureParam = HashMap<String, Any?>()
+        /** 面积信息 */
+        var areaInfo = HashMap<String, Any?>()
+        /** 人员信息 */
+        val peopleInfoTwo = HashMap<String, Any?>()
+
+        /** 工作作息 */
+        var workRest = HashMap<String, Any?>()
+        /** 季节 */
+        var season = HashMap<String, Any?>()
+        /** 工作历信息 */
+        var workCalendar = HashMap<String, Any?>()
+
+        /** 逐时 */
+        var hourly = HashMap<String, Any?>()
+        /** 累计 */
+        var cumulative = HashMap<String, Any?>()
+
+        /** 建筑对象 */
+        val building = Building()
+        building.projectId = projectId
+        /** id 是否存在 */
+        val containsKeyId = mapObj.containsKey("id")
+        if(containsKeyId){
+            building.id = mapObj["id"].toString()
+        }
+        /** name 是否存在 */
+        val containsKeyName = mapObj.containsKey("name")
+        if(containsKeyName){
+            building.name = mapObj["name"].toString()
+        }
+
+        for (key in mapObj!!.keys) {
+            val containsKey = mapEx.containsKey(key)
+            if (containsKey) {
+                val value = mapEx[key]
+                if (value == opts.BuildingInfo) {
+                    /** 建筑信息 */
+                    val contains = mapCode.containsKey(key)
+                    if (contains) {
+                        val any = mapCode[key].toString()
+                        if (any == "建筑类型") {
+
+                            /** 安装图纸 安装照片 安装质检报告 */
+                            if (key == "Pic" ){
+                                try {
+                                    val gson = Gson()
+                                    val type = object : TypeToken<ArrayList<AttPic>>() {
+                                    }.type
+                                    val attPicList = gson.fromJson<ArrayList<AttPic>>(mapObj[key].toString(),type)
+                                    if (attPicList.isNotEmpty()){
+                                        val listPic =ArrayList<TaskPic>()
+                                        for (attPic in attPicList){
+                                            val taskPic = TaskPic()
+                                            taskPic.key = attPic.key
+                                            taskPic.name = attPic.name
+                                            taskPic.systemId = attPic.systemId
+                                            taskPic.type = attPic.type
+                                            listPic.add(taskPic)
+                                        }
+                                        buildingType[key] = listPic
+                                    }
+                                } catch (e: Exception) {
+                                    e.printStackTrace()
+                                }
+                            }else{
+                                buildingType[key] = mapObj[key]
+                            }
+                        } else if (any == "设计指标") {
+                            designIndex[key] = mapObj[key]
+                        } else if (any == "结构参数") {
+                            structureParam[key] = mapObj[key]
+                        } else if (any == "面积信息") {
+                            areaInfo[key] = mapObj[key]
+                        } else if(any == "人员信息"){
+                            peopleInfo[key]= mapObj[key]
+                        }else {
+                            buildingInfo[key] = mapObj[key]
+                        }
+                    } else {
+                        buildingInfo[key] = mapObj[key]
+                    }
+                } else if (value == opts.Schedule) {
+                    /** 工作历 */
+                    val contains = mapCode.containsKey(key)
+                    if (contains) {
+                        val any = mapCode[key].toString()
+                        if (any == "工作作息") {
+                            workRest[key] = mapObj[key]
+                        } else if (any == "季节") {
+                            season[key] = mapObj[key]
+                        } else if (any == "工作历信息") {
+                            workCalendar[key] = mapObj[key]
+                        } else {
+                            schedule[key] = mapObj[key]
+                        }
+                    } else {
+                        schedule[key] = mapObj[key]
+                    }
+//
+                } else if (value == opts.PeopleInfo) {
+                    /** 人员信息 */
+                    peopleInfo[key] = mapObj[key]
+                } else if (value == opts.ConsumptionInfo) {
+                    /** 能耗信息 */
+                    val contains = mapCode.containsKey(key)
+                    if (contains) {
+                        val any = mapCode[key].toString()
+                        if (any == "逐时") {
+                            hourly[key] = mapObj[key]
+                        } else if (any == "累计") {
+                            cumulative[key] = mapObj[key]
+                        } else {
+                            consumptionInfo[key] = mapObj[key]
+                        }
+                    } else {
+                        consumptionInfo[key] = mapObj[key]
+                    }
+                } else if (value == "建筑文档") {
+
+                    if (key == "drawing" ){
+                        try {
+                            val gson = Gson()
+                            val type = object : TypeToken<ArrayList<AttPic>>() {
+                            }.type
+                            val attPicList = gson.fromJson<ArrayList<AttPic>>(mapObj[key].toString(),type)
+                            if (attPicList.isNotEmpty()){
+                                val listPic =ArrayList<TaskPic>()
+                                for (attPic in attPicList){
+                                    val taskPic = TaskPic()
+                                    taskPic.key = attPic.key
+                                    taskPic.name = attPic.name
+                                    taskPic.systemId = attPic.systemId
+                                    taskPic.type = attPic.type
+                                    listPic.add(taskPic)
+                                }
+                                buildingType[key] = listPic
+                            }
+                        } catch (e: Exception) {
+                            e.printStackTrace()
+                        }
+                    }else if (key == "archive"){
+                        try {
+                            val gson = Gson()
+                            val type = object : TypeToken<ArrayList<AttPic>>() {
+                            }.type
+                            val attPicList = gson.fromJson<ArrayList<AttPic>>(mapObj[key].toString(),type)
+                            if (attPicList.isNotEmpty()){
+                                val listPic =ArrayList<TaskPic>()
+                                for (attPic in attPicList){
+                                    val taskPic = TaskPic()
+                                    taskPic.key = attPic.key
+                                    taskPic.name = attPic.name
+                                    taskPic.systemId = attPic.systemId
+                                    taskPic.type = attPic.type
+                                    listPic.add(taskPic)
+                                }
+                                buildingType[key] = listPic
+                            }
+                        } catch (e: Exception) {
+                            e.printStackTrace()
+                        }
+                    }else if (key == "simulationModel"){
+                        try {
+                            val gson = Gson()
+                            val type = object : TypeToken<ArrayList<AttPic>>() {
+                            }.type
+                            val attPicList = gson.fromJson<ArrayList<AttPic>>(mapObj[key].toString(),type)
+                            if (attPicList.isNotEmpty()){
+                                val listPic =ArrayList<TaskPic>()
+                                for (attPic in attPicList){
+                                    val taskPic = TaskPic()
+                                    taskPic.key = attPic.key
+                                    taskPic.name = attPic.name
+                                    taskPic.systemId = attPic.systemId
+                                    taskPic.type = attPic.type
+                                    listPic.add(taskPic)
+                                }
+                                buildingType[key] = listPic
+                            }
+                        } catch (e: Exception) {
+                            e.printStackTrace()
+                        }
+                    }else{
+                        buildingDoc[key] = mapObj[key]
+                    }
+
+                } else {
+                    when (key) {
+                        "localID" -> building.localId = mapObj[key].toString()
+                        "localName" -> building.localName = mapObj[key].toString()
+                        "defaultQRCode" -> building.defaultQRCode.toString()
+                        "buildQRCode" -> building.buildQRCode.toString()
+                    }
+                }
+            }
+        }
+
+        if (buildingType.size > 0) {
+            buildingInfo.put("BuildingType", buildingType)
+        }
+        if (designIndex.size > 0) {
+            buildingInfo.put("DesignIndex", designIndex)
+        }
+        if (structureParam.size > 0) {
+            buildingInfo.put("StructureParam", structureParam)
+        }
+        if (areaInfo.size > 0) {
+            buildingInfo.put("AreaInfo", areaInfo)
+        }
+        if (peopleInfoTwo.size>0){
+            buildingInfo.put("PeopleInfo", peopleInfoTwo)
+        }
+
+        if (workRest.size > 0) {
+            schedule.put("WorkRest", workRest)
+        }
+        if (season.size > 0) {
+            schedule.put("Season", season)
+        }
+
+        if (hourly.size > 0) {
+            consumptionInfo.put("Hourly", hourly)
+        }
+        if (cumulative.size > 0) {
+            consumptionInfo.put("Cumulative", cumulative)
+        }
+
+        if (workCalendar.size > 0) {
+            schedule.put("WorkCalendar", workCalendar)
+        }
+
+        if (buildingDoc.size > 0) {
+            building.buildingDoc = buildingDoc
+        }
+
+        if (buildingInfo.size > 0) {
+            building.buildingInfo = buildingInfo
+        }
+
+        if (schedule.size > 0) {
+            building.schedule = schedule
+        }
+
+        if (peopleInfo.size > 0) {
+            building.peopleInfo = peopleInfo
+        }
+        if (consumptionInfo.size > 0) {
+            building.consumptionInfo = consumptionInfo
+        }
+
+        if (customParam.size > 0) {
+            building.customParam = customParam
+        }
+
+        return building
+    }
+
+
+
+}

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 2333 - 0
datasyn/src/main/kotlin/com/persagy/server/syn/models/tools/EquipUtil.kt


+ 122 - 0
datasyn/src/main/kotlin/com/persagy/server/syn/models/tools/FloorUtil.kt

@@ -0,0 +1,122 @@
+package com.persagy.server.syn.models.tools
+
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.persagy.base.extensions.toInt
+import com.persagy.database.SFilter
+import com.persagy.mybatis.SMybatisDao
+import com.persagy.server.datacenter.models.entities.assistant.PointPosition
+import com.persagy.server.datacenter.models.entities.dictnew.DefFuncId
+import com.persagy.server.datacenter.models.entities.objects.Floor
+import com.persagy.server.syn.Opts
+import com.persagy.service.SObjectService
+import com.persagy.service.utils.SSpringContextUtil
+
+/**
+ * 楼层 - 中台转数据中心
+ *
+ * @author wx  <zhangweixin@sagacloud.com>
+ * @date  2020/10/19 15:01
+ */
+object FloorUtil {
+    /** 信息点 */
+    private val dictDefFuncIdService = SObjectService(SMybatisDao(DefFuncId::class.java))
+    /** 配置 */
+    private val opts: Opts by lazy {
+        SSpringContextUtil.getBean(Opts::class.java) as Opts
+    }
+
+    /**
+     * 楼层数据转换
+     */
+    fun floorSyn(projectId: String,groupCode: String, mapObj: HashMap<String, Any?>): Floor {
+        /** 查建楼层型字典 */
+        val dictDefFuncIdList = dictDefFuncIdService.select(SFilter.eq("groupCode", groupCode), SFilter.eq("classCode", "floor")).exec()
+        val mapEx = HashMap<String, Any?>()
+        val mapCode = HashMap<String, Any?>()
+
+        for (explainProject in dictDefFuncIdList) {
+            mapEx[explainProject.code!!] = explainProject.firstName
+            if (!explainProject.secondName.isNullOrEmpty()) {
+                mapCode[explainProject.code!!] = explainProject.secondName
+            }
+        }
+
+        /** 结构信息 */
+        val structureInfo = HashMap<String, Any?>()
+        /** 人员信息 */
+        val peopleInfo = HashMap<String, Any?>()
+        /** 工作历信息 */
+        val workCalendar = HashMap<String, Any?>()
+
+        val floor = Floor()
+        floor.projectId = projectId
+        /** id 是否存在 */
+        val containsKeyId = mapObj.containsKey("id")
+        if(containsKeyId){
+            floor.id = mapObj["id"].toString()
+        }
+        /** name 是否存在 */
+        val containsKeyName = mapObj.containsKey("name")
+        if(containsKeyName){
+            floor.name = mapObj["name"].toString()
+        }
+
+        for (key in mapObj.keys) {
+            val containsKey = mapEx.containsKey(key)
+            if (containsKey) {
+                val value = mapEx[key]
+                if (value == opts.StructureInfo) {
+                    /** 结构信息 */
+                    structureInfo[key] = mapObj[key]
+                } else if (value == opts.PeopleInfo) {
+                    /** 人员信息 */
+                    peopleInfo[key] = mapObj[key]
+                } else if (value == "工作历信息") {
+                    workCalendar[key] = mapObj[key]
+                } else {
+                    when (key) {
+                        "localId" -> floor.localId = mapObj[key].toString()
+                        "localName" -> floor.localName = mapObj[key].toString()
+                        "bimId" -> floor.bimId = mapObj[key].toString()
+                        "defaultQRCode" -> floor.defaultQRCode = mapObj[key].toString()
+                        "qRCodePic" -> floor.qRCodePic = mapObj[key].toString()
+                        "bimIdPre"  -> floor.bimIdPre = mapObj[key].toString()
+                        "modelId"  ->  floor.modelId = mapObj[key].toString()
+                        "bimLocation" -> floor.bimLocation = mapObj[key].toString()
+                        "permanentPeopleNum" -> floor.permanentPeopleNum = mapObj[key]?.toInt()
+                        "floorIdentity" -> floor.floorIdentity = mapObj[key].toString()
+                        "floorSequenceId" -> {
+                            if (!mapObj[key].toString().isNullOrEmpty() && mapObj[key].toString() != "null") {
+                                floor.floorSequenceId = mapObj[key]?.toString()?.toInt()
+//                                logger.debug("FloorSequenceID =${infos[key]!!.toString().toInt()}")
+                            }
+                        }
+                        "outline" -> {
+                            try {
+                                val type = object : TypeToken<ArrayList<PointPosition>>() {
+                                }.getType()
+                                var outline=  Gson().fromJson<ArrayList<PointPosition>>(mapObj[key].toString(),type)
+                                floor.outline = outline
+                            } catch (e: Exception) {
+                                e.printStackTrace()
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        if (structureInfo.size > 0) {
+            floor.structureInfo = structureInfo
+        }
+        if (peopleInfo.size > 0) {
+            floor.peopleInfo = peopleInfo
+        }
+        if (workCalendar.size > 0) {
+            floor.workCalendar = workCalendar
+        }
+
+        return floor
+    }
+
+}

+ 278 - 0
datasyn/src/main/kotlin/com/persagy/server/syn/models/tools/ProjectUtil.kt

@@ -0,0 +1,278 @@
+package com.persagy.server.syn.models.tools
+
+import com.persagy.database.SFilter
+import com.persagy.mybatis.SMybatisDao
+import com.persagy.server.datacenter.models.entities.dictnew.DefFuncId
+import com.persagy.server.datacenter.models.entities.dictnew.Group
+import com.persagy.server.datacenter.models.entities.objects.Project
+import com.persagy.server.syn.Opts
+import com.persagy.service.SBaseService
+import com.persagy.service.SObjectService
+import com.persagy.service.utils.SSpringContextUtil
+import org.slf4j.LoggerFactory
+
+/**
+ * 中台数据转换为数据中心,项目
+ *
+ * @author wx  <zhangweixin@sagacloud.com>
+ * @date  2020/10/18 19:03
+ */
+object ProjectUtil {
+    /** 日志 */
+    private val logger = LoggerFactory.getLogger(ProjectUtil::class.java)
+
+    /** 集团服务 */
+    private val groupService = SBaseService(SMybatisDao(Group::class.java))
+    /** 信息点 */
+    private val dictDefFuncIdService = SObjectService(SMybatisDao(DefFuncId::class.java))
+    /** 配置 */
+    private val opts: Opts by lazy {
+        SSpringContextUtil.getBean(Opts::class.java) as Opts
+    }
+
+    /**
+     * 项目
+     *
+     * @param groupCode     集团编码
+     * @param mapObj        中台信息点
+     * @return 返回项目对象
+     */
+    fun projectDataConversion(groupCode: String, mapObj: HashMap<String, Any?>): Project {
+
+        /** 查询项目类型字典 */
+        val dictDefFuncIdList = dictDefFuncIdService.select(SFilter.eq("groupCode", groupCode), SFilter.eq("classCode", "project")).exec()
+        val mapEx = HashMap<String, Any?>()
+        val mapCode = HashMap<String, Any?>()
+        /** 遍历项目类型字典 */
+        for (explainProject in dictDefFuncIdList) {
+            /** 一级标签 */
+            mapEx[explainProject.code!!] = explainProject.firstName
+            /** 二级标签不为空 */
+            if (!explainProject.secondName.isNullOrEmpty()) {
+                mapCode[explainProject.code!!] = explainProject.secondName
+            }
+        }
+        /** 项目对象 */
+        val project = Project()
+        /** id 是否存在 */
+        val containsKeyId = mapObj.containsKey("id")
+        if(containsKeyId){
+            project.id = mapObj["id"].toString()
+        }
+        /** name 是否存在 */
+        val containsKeyName = mapObj.containsKey("name")
+        if(containsKeyName){
+            project.name = mapObj["name"].toString()
+        }
+
+        /** 地理位置 */
+        val geoInfoParamMap = HashMap<String, Any?>()
+        /** 项目信息 */
+        val projectInfoMap = HashMap<String, Any?>()
+        /** 商业信息 */
+        val commercialInfoMap = HashMap<String, Any?>()
+        /** 能源价格 */
+        val energyCostMap = HashMap<String, Any?>()
+        /** 室外环境 */
+        val outdoorEnvMap = HashMap<String, Any?>()
+        /** 天气预报 */
+        val weatherMap = HashMap<String, Any?>()
+        /** 能耗信息 */
+        val consumptionInfoMap = HashMap<String, Any?>()
+        /** 自定义参数 */
+        val customParamMap = HashMap<String, Any?>()
+
+        /** 电 */
+        val electricMap = HashMap<String, Any?>()
+        /** 燃气 */
+        val gasMap = HashMap<String, Any?>()
+        /** 燃油 */
+        val fuelMap = HashMap<String, Any?>()
+        /** 自来水 */
+        val tapWaterMap = HashMap<String, Any?>()
+        /** 供热 */
+        val heatSupplyMap = HashMap<String, Any?>()
+        /** 供冷 */
+        val coolingMap = HashMap<String, Any?>()
+        /** 生活热水 */
+        val domesticHotWaterMap = HashMap<String, Any?>()
+        /** 蒸汽 */
+        val steamMap = HashMap<String, Any?>()
+
+        /** 未来第1天 */
+        val dayOneMap = HashMap<String, Any?>()
+        /** 未来第2天 */
+        val dayTwoMap = HashMap<String, Any?>()
+        /** 未来第3天 */
+        val dayThreeMap = HashMap<String, Any?>()
+
+        /** 逐时 */
+        val hourlyMap = HashMap<String, Any?>()
+        /** 累计 */
+        val cumulativeMap = HashMap<String, Any?>()
+
+        for (key in mapObj.keys) {
+
+            val containsKey = mapEx.containsKey(key)
+            if (containsKey) {
+                val value = mapEx[key]
+                logger.debug("value = ${value}")
+                if (value == opts.GeoInfo) {
+                    /** 地理位置 */
+                    geoInfoParamMap[key] = mapObj[key]
+                } else if (value == opts.ProjectInfo) {
+                    /** 项目信息 */
+                    projectInfoMap[key] = mapObj[key]
+                } else if (value == opts.CommercialInfo) {
+                    /** 商业信息 */
+                    commercialInfoMap[key] = mapObj[key]
+                } else if (value == opts.EnergyCost) {
+                    /** 能源价格 */
+                    val contains = mapCode.containsKey(key)
+                    if (contains) {
+                        val any = mapCode[key].toString()
+                        if (any == "电") {
+                            electricMap[key] = mapObj[key]
+                        } else if (any == "燃气") {
+                            gasMap[key] = mapObj[key]
+                        } else if (any == "燃油") {
+                            fuelMap[key] = mapObj[key]
+                        } else if (any == "自来水") {
+                            tapWaterMap[key] = mapObj[key]
+                        } else if (any == "供热") {
+                            heatSupplyMap[key] = mapObj[key]
+                        } else if (any == "供冷") {
+                            coolingMap[key] = mapObj[key]
+                        } else if (any == "生活热水") {
+                            domesticHotWaterMap[key] = mapObj[key]
+                        } else if (any == "蒸汽") {
+                            steamMap[key] = mapObj[key]
+                        } else {
+                            energyCostMap[key] = mapObj[key]
+                        }
+                    } else {
+                        energyCostMap[key] = mapObj[key]
+                    }
+                } else if (value == opts.OutdoorEnv) {
+                    /** 室外环境 */
+                    outdoorEnvMap[key] = mapObj[key]
+                } else if (value == opts.Weather) {
+                    /** 天气预报 */
+
+                    val contains = mapCode.containsKey(key)
+                    if (contains) {
+                        val any = mapCode[key].toString()
+                        if (any == "未来第1天") {
+                            dayOneMap[key] = mapObj[key]
+                        } else if (any == "未来第2天") {
+                            dayTwoMap[key] = mapObj[key]
+                        } else if (any == "未来第3天") {
+                            dayThreeMap[key] = mapObj[key]
+                        } else {
+                            weatherMap[key] = mapObj[key]
+                        }
+                    } else {
+                        weatherMap[key] = mapObj[key]
+                    }
+                } else if (value == opts.ConsumptionInfo) {
+                    /** 能耗信息 */
+                    val contains = mapCode.containsKey(key)
+                    if (contains) {
+                        val any = mapCode[key].toString()
+                        if (any == "逐时") {
+                            hourlyMap[key] = mapObj[key]
+                        } else if (any == "累计") {
+                            cumulativeMap[key] = mapObj[key]
+                        } else {
+                            consumptionInfoMap[key] = mapObj[key]
+                        }
+                    } else {
+                        consumptionInfoMap[key] = mapObj[key]
+                    }
+                } else {
+                    when (key) {
+//                        "ProjName" -> project.name = projectInfo[key].toString()
+//                        "ProjLocalID" -> project.localId = projectInfo[key].toString()
+//                        "ProjLocalName" -> project.localName = projectInfo[key].toString()
+//                        "BIMID" -> project.bimId = projectInfo[key].toString()
+                          "introduction" -> project.introduction = mapObj[key].toString()
+                          "businessFloorNum" -> project.businessFloorNum = mapObj[key].toString()
+                          "officeFloorNum" -> project.officeFloorNum = mapObj[key].toString()
+                          "localId" -> project.localId = mapObj[key].toString()
+                          "localName" -> project.localName = mapObj[key].toString()
+                    }
+                }
+
+            }
+//            else if (key.startsWith("ctm-")) {
+//                /** 自定义 */
+//                customParamMap[key] = projectInfo[key]
+//            }
+        }
+
+
+        if (electricMap.size > 0) {
+            energyCostMap.put("electric", electricMap)
+        }
+        if (gasMap.size > 0) {
+            energyCostMap.put("gas", gasMap)
+        }
+        if (fuelMap.size > 0) {
+            energyCostMap.put("fuel", fuelMap)
+        }
+        if (tapWaterMap.size > 0) {
+            energyCostMap.put("tapWater", tapWaterMap)
+        }
+        if (heatSupplyMap.size > 0) {
+            energyCostMap.put("heatSupply", heatSupplyMap)
+        }
+        if (domesticHotWaterMap.size > 0) {
+            energyCostMap.put("domesticHotWater", domesticHotWaterMap)
+        }
+        if (coolingMap.size > 0) {
+            energyCostMap.put("cooling", coolingMap)
+        }
+        if (steamMap.size > 0) {
+            energyCostMap.put("steam", steamMap)
+        }
+        if (dayOneMap.size > 0) {
+            weatherMap.put("dayOne", dayOneMap)
+        }
+        if (dayTwoMap.size > 0) {
+            weatherMap.put("dayTwo", dayTwoMap)
+        }
+        if (dayThreeMap.size > 0) {
+            weatherMap.put("dayThreeMap", dayThreeMap)
+        }
+        if (hourlyMap.size > 0) {
+            consumptionInfoMap.put("hourly", hourlyMap)
+        }
+        if (cumulativeMap.size > 0) {
+            consumptionInfoMap.put("cumulative", cumulativeMap)
+        }
+        if (commercialInfoMap.size>0){
+            project.commercialInfo = commercialInfoMap
+        }
+        if (consumptionInfoMap.size>0){
+            project.consumptionInfo = consumptionInfoMap
+        }
+        if (energyCostMap.size>0){
+            project.energyCost = energyCostMap
+        }
+        if (geoInfoParamMap.size>0){
+            project.geoInfo = geoInfoParamMap
+        }
+        if (outdoorEnvMap.size>0){
+            project.outdoorEnv = outdoorEnvMap
+        }
+        if (projectInfoMap.size>0){
+            project.projectInfo = projectInfoMap
+        }
+        if (weatherMap.size>0){
+            project.weather = weatherMap
+        }
+        return project
+    }
+
+
+}

+ 0 - 13
datasyn/src/main/kotlin/com/persagy/server/syn/services/object/ProjectService.kt

@@ -1,15 +1,2 @@
 package com.persagy.server.syn.services.`object`
 
-/**
- * 项目服务
- *
- * @author wx  <zhangweixin@sagacloud.com>
- * @date  2020/10/18 10:12
- */
-class ProjectService {
-
-
-
-
-
-}

+ 277 - 277
datasyn/src/main/kotlin/com/persagy/server/syn/utils/ParamTools.kt

@@ -17,290 +17,290 @@ object ParamTools {
     fun TwoLevelCode(name: String): String? {
         return when (name) {
             /** 一级 */
-            "台账参数" -> "LedgerParam"
-            "通讯参数" -> "CommParam"
-            "技术参数" -> "TechParam"
-            "技术参数" -> "TechParam"
-            "运行参数" -> "RunParam"
-            "设定参数" -> "SettingParam"
-            "报警消息" -> "Alram"
-            "结构信息" -> "StructureInfo"
-            "人员信息" -> "PeopleInfo"
-            "地理位置" -> "GeoInfo"
-            "项目信息" -> "ProjectInfo"
-            "商业信息" -> "CommercialInfo"
-            "能源价格" -> "EnergyCost"
-            "室外环境" -> "OutdoorEnv"
-            "天气预报" -> "Weather"
-            "能耗信息" -> "ConsumptionInfo"
-            "建筑信息" -> "BuildingInfo"
-            "建筑文档" -> "BuildingDoc"
-            "工作历" -> "Schedule"
-            "环境参数" -> "EnvParam"
-            "租赁信息" -> "LeaseInfo"
-            "租户信息" -> "TenantInfo"
-            "温度传感器" -> "TempSensor"
-            "技术参数-通用" -> "TechParamGeneral"
-            "运行参数-通用" -> "RunParamGeneral"
-            "速度传感器" -> "SpeedSensor"
-            "声音传感器" -> "SoundSensor"
-            "湿度传感器" -> "HumiditySensor"
-            "压力传感器" -> "PressTransd"
-            "热量传感器" -> "HeatSensor"
-            "流量传感器" -> "FlowSensor"
-            "电度传感器" -> "ElectricitySensor"
-            "位移传感器" -> "DisplSensor"
-            "浓度传感器" -> "ConcentSensor"
-            "图像传感器" -> "ImageSensor"
-            "运行状态"   -> "RunningState"
-            "反馈参数"  ->  "FeedbackParam"
-            "人流量传感器" -> "ManFlowSensor"
-            "动态信息" -> "DynamicInfor"
+            "台账参数" -> "ledgerParam"
+            "通讯参数" -> "commParam"
+            "技术参数" -> "techParam"
+            "技术参数" -> "techParam"
+            "运行参数" -> "runParam"
+            "设定参数" -> "settingParam"
+            "报警消息" -> "alram"
+            "结构信息" -> "structureInfo"
+            "人员信息" -> "peopleInfo"
+            "地理位置" -> "geoInfo"
+            "项目信息" -> "projectInfo"
+            "商业信息" -> "commercialInfo"
+            "能源价格" -> "energyCost"
+            "室外环境" -> "outdoorEnv"
+            "天气预报" -> "weather"
+            "能耗信息" -> "consumptionInfo"
+            "建筑信息" -> "buildingInfo"
+            "建筑文档" -> "buildingDoc"
+            "工作历" -> "schedule"
+            "环境参数" -> "envParam"
+            "租赁信息" -> "leaseInfo"
+            "租户信息" -> "tenantInfo"
+            "温度传感器" -> "tempSensor"
+            "技术参数-通用" -> "techParamGeneral"
+            "运行参数-通用" -> "runParamGeneral"
+            "速度传感器" -> "speedSensor"
+            "声音传感器" -> "soundSensor"
+            "湿度传感器" -> "humiditySensor"
+            "压力传感器" -> "pressTransd"
+            "热量传感器" -> "heatSensor"
+            "流量传感器" -> "flowSensor"
+            "电度传感器" -> "electricitySensor"
+            "位移传感器" -> "displSensor"
+            "浓度传感器" -> "concentSensor"
+            "图像传感器" -> "imageSensor"
+            "运行状态"   -> "runningState"
+            "反馈参数"  ->  "feedbackParam"
+            "人流量传感器" -> "manFlowSensor"
+            "动态信息" -> "dynamicInfor"
 
 
             /** 二级 */
-            "建筑类型" -> "BuildingType"
-            "设计指标" -> "DesignIndex"
-            "结构参数" -> "StructureParam"
-            "面积信息" -> "AreaInfo"
-            "工作作息" -> "WorkRest"
-            "电" -> "Electric"
-            "燃气" -> "Gas"
-            "燃油" -> "Fuel"
-            "自来水" -> "TapWater"
-            "供热" -> "HeatSupply"
-            "供冷" -> "Cooling"
-            "生活热水" -> "DomesticHotWater"
-            "季节" -> "Season"
-            "空气质量" -> "AirQuality"
-            "蒸汽" -> "Steam"
-            "未来第1天" -> "DayOne"
-            "未来第2天" -> "DayTwo"
-            "未来第3天" -> "DayThree"
-            "累计" -> "Cumulative"
-            "逐时" -> "Hourly"
-            "风速" -> "WindSpeed"
-            "声强" -> "SoundIntensity"
-            "光照" -> "Illumination"
-            "温湿度" -> "TemperatureHumidity"
-            "加热器" -> "Heater"
-            "技术参数-噪声传感器" -> "NoiseSensor"
-            "无负压稳流机组" -> "PressureSteadyFlow"
-            "保险文件" -> "InsuranceDoc"
-            "发射指标" -> "LaunchIndex"
-            "毛发过滤器" -> "HairFilter"
-            "压缩机" -> "Compressor"
-            "烟气余热回收装置" -> "FlueGasWasteHeat"
-            "膜处理系统" -> "MembraneProcessingSystem"
-            "制动器" -> "Brake"
-            "矩阵" -> "Matrix"
-            "CPU状态" -> "CPUStates"
-            "制冷工况" -> "RefrigCondition"
-            "分支分配器" -> "BranchDis"
-            "接线端子" -> "ConnectionTerminal"
-            "输入" -> "Input"
-            "漏电保护器" -> "LeakageProtector"
-            "发热地膜设备" -> "FeverFilmEquip"
+            "建筑类型" -> "buildingType"
+            "设计指标" -> "designIndex"
+            "结构参数" -> "structureParam"
+            "面积信息" -> "areaInfo"
+            "工作作息" -> "workRest"
+            "电" -> "electric"
+            "燃气" -> "gas"
+            "燃油" -> "fuel"
+            "自来水" -> "tapWater"
+            "供热" -> "heatSupply"
+            "供冷" -> "cooling"
+            "生活热水" -> "domesticHotWater"
+            "季节" -> "season"
+            "空气质量" -> "airQuality"
+            "蒸汽" -> "steam"
+            "未来第1天" -> "dayOne"
+            "未来第2天" -> "dayTwo"
+            "未来第3天" -> "dayThree"
+            "累计" -> "cumulative"
+            "逐时" -> "hourly"
+            "风速" -> "windSpeed"
+            "声强" -> "soundIntensity"
+            "光照" -> "illumination"
+            "温湿度" -> "temperatureHumidity"
+            "加热器" -> "heater"
+            "技术参数-噪声传感器" -> "noiseSensor"
+            "无负压稳流机组" -> "pressureSteadyFlow"
+            "保险文件" -> "insuranceDoc"
+            "发射指标" -> "launchIndex"
+            "毛发过滤器" -> "hairFilter"
+            "压缩机" -> "compressor"
+            "烟气余热回收装置" -> "flueGasWasteHeat"
+            "膜处理系统" -> "membraneProcessingSystem"
+            "制动器" -> "brake"
+            "矩阵" -> "matrix"
+            "CPU状态" -> "cpuStates"
+            "制冷工况" -> "refrigCondition"
+            "分支分配器" -> "branchDis"
+            "接线端子" -> "connectionTerminal"
+            "输入" -> "input"
+            "漏电保护器" -> "leakageProtector"
+            "发热地膜设备" -> "feverFilmEquip"
             "传输" -> "transmission"
-            "整体" -> "Whole"
+            "整体" -> "whole"
             "龙骨" -> "keel"
-            "清水灭火器" -> "CleanWaterExting"
-            "扁圆形风管" -> "FlatCircularDuct"
-            "电加热" -> "ElectricHeating"
-            "隔离/接地开关" -> "EarthingSwitch"
-            "调节池" -> "RegulatingPool"
-            "送风段" -> "AirSupply"
-            "租户管理" -> "TenantManag"
-            "通用电气指标" -> "GeneralElecIndex"
-            "热回收段" -> "HeatRecoverySection"
-            "备用电源" -> "EmergencySupply"
-            "软件系统" -> "SoftwareSystem"
-            "协议" -> "Agreement"
+            "清水灭火器" -> "cleanWaterExting"
+            "扁圆形风管" -> "flatCircularDuct"
+            "电加热" -> "electricHeating"
+            "隔离/接地开关" -> "earthingSwitch"
+            "调节池" -> "regulatingPool"
+            "送风段" -> "airSupply"
+            "租户管理" -> "tenantManag"
+            "通用电气指标" -> "generalElecIndex"
+            "热回收段" -> "heatRecoverySection"
+            "备用电源" -> "emergencySupply"
+            "软件系统" -> "softwareSystem"
+            "协议" -> "agreement"
             "冷凝器" -> "condenser"
-            "卤代烷灭火器" -> "HalogAgentExting"
-            "加湿段" -> "HumidSection"
-            "CD录放盘" -> "CDRecording"
-            "泡沫灭火器" -> "FoamExtinguisher"
-            "辅助设备" -> "AuxiliaryEquip"
-            "客流探测" -> "PasseFlowDetec"
-            "设备厂家" -> "EquipManufactor"
-            "技术参数-热电偶温度传感器" -> "ThermTemperSensor"
-            "水地暖设备" -> "WaterHeatingEquip"
-            "柴油机" -> "DieselEngine"
-            "排水" -> "Drainage"
-            "通讯地址" -> "PostalAddress"
-            "混合器" -> "Mixer"
+            "卤代烷灭火器" -> "halogAgentExting"
+            "加湿段" -> "humidSection"
+            "CD录放盘" -> "cdRecording"
+            "泡沫灭火器" -> "foamExtinguisher"
+            "辅助设备" -> "auxiliaryEquip"
+            "客流探测" -> "passeFlowDetec"
+            "设备厂家" -> "equipManufactor"
+            "技术参数-热电偶温度传感器" -> "thermTemperSensor"
+            "水地暖设备" -> "waterHeatingEquip"
+            "柴油机" -> "dieselEngine"
+            "排水" -> "drainage"
+            "通讯地址" -> "postalAddress"
+            "混合器" -> "mixer"
             "性能" -> "performance"
-            "运行维保" -> "OperationMainte"
-            "核心层" -> "CoreLayer"
-            "发热电缆设备" -> "ThermCableEquip"
-            "车库出入口" -> "GarageEntraExit"
-            "整机" -> "CompleteMachine"
-            "电流" -> "ElectricCurrent"
-            "供应购买" -> "SupplyPurchase"
-            "塑料管" -> "PlasticPipe"
-            "技术参数-录音" -> "SoundRecording"
-            "现场安装" -> "Siteinstall"
-            "技术参数" -> "TechParam"
-            "累计指标" -> "CumulaIndex"
-            "频率" -> "Freque"
-            "活性炭罐" -> "Canister"
-            "再热段" -> "ReheaSection"
-            "接口" -> "Interf"
-            "变频机组" -> "FrequeUnit"
-            "调节阀" -> "RegulValve"
-            "矩形风管" -> "RectDuct"
-            "减速器" -> "Retarder"
-            "加压泵" -> "PressPump"
-            "圆形风管" -> "CircularDuct"
-            "断路器" -> "CircuitBreaker"
-            "电压互感器" -> "VoltageTrans"
-            "止回阀" -> "CheckValve"
-            "园林" -> "Gardens"
-            "消毒设备" -> "DisinfeEquip"
-            "总体" -> "Population"
-            "发电机组" -> "GeneratorSet"
-            "表冷段" -> "SurfaceCoolSection"
-            "喷泉" -> "Fountain"
-            "低压" -> "LowPress"
-            "播放器" -> "Player"
-            "玻璃破碎探测器" -> "GlassCrushDetec"
-            "末端" -> "End"
-            "密码键盘" -> "PasswordKeyb"
-            "灯具" -> "LampsLanterns"
-            "网络" -> "Network"
-            "出口水质" -> "ExportWaterQuality"
-            "输出" -> "Output"
-            "排风" -> "ExhaustAir"
-            "视频式" -> "VideoType"
-            "显示屏" -> "Display"
-            "总谐波" -> "TotalHarmonic"
-            "混风段" -> "MixingSection"
-            "电梯" -> "Elevator"
-            "汇聚层" -> "DistriLayer"
-            "摄像头" -> "Camera"
-            "电池" -> "Battery"
-            "电流互感器" -> "CurrentTrans"
-            "技术参数-玻璃管式温度计" -> "GlassTubeTherm"
-            "显示" -> "Display"
-            "应急照明" -> "EmerLighting"
-            "技术参数-压力式温度计" -> "PressureThermo"
-            "空间辐射指标" -> "SpatialRadiIndex"
-            "照片文档" -> "PhotoDoc"
-            "其他设备" -> "OtherEquip"
-            "指纹识别仪" -> "FingerIdent"
-            "电压" -> "Voltage"
-            "开关状态" -> "SwitchingState"
-            "对讲系统" -> "IntercomSystem"
-            "反渗透" -> "ReverseOsmosis"
-            "电源" -> "PowerSupply"
-            "接入层" -> "AccessLayer"
-            "保温材料" -> "ThermalInsulMaterial"
-            "高频头" -> "Tuner"
-            "打印机" -> "Printer"
-            "碳晶地暖设备" -> "CarCryGroHeatEquip"
-            "干粉灭火器" -> "DryPowderExti"
-            "技术参数-电阻温度传感器" -> "ResisTempeSensor"
-            "瞬时参数" -> "InstantParam"
-            "运行参数" -> "RunParam"
-            "紫外线杀菌器" -> "UltravSteri"
-            "吸收器" -> "Absorber"
-            "前置功放" -> "Preamplifier"
-            "通用" -> "Currency"
-            "紫外线发生器" -> "UltravGener"
-            "技术参数-声音通用" -> "GeneralVoice"
-            "寻车" -> "CarSearching"
-            "排放标准" -> "EmissStand"
-            "水侧" -> "WaterSide"
-            "塔盘水位" -> "TrayWater"
-            "开关保护" -> "SwitchProte"
-            "太阳能" -> "SolarEnergy"
-            "蒸汽锅炉" -> "SteamBoiler"
-            "继电器" -> "Relay"
-            "疏散指示" -> "EvacuaInstr"
-            "车位" -> "ParkingLot"
-            "接收指标" -> "ReceiIndex"
-            "臭氧发生器" -> "OzoneGenerator"
-            "电视信号" -> "TVSignal"
-            "畸变率" -> "DistortRate"
-            "熔断器" -> "Fuse"
-            "风机" -> "Fan"
-            "技术参数-温度通用" -> "TempGeneral"
-            "蒸汽冷凝水回收装置" -> "SteamConde"
-            "内胆" -> "InternalBladder"
-            "累计参数" -> "CumuParam"
-            "主机" -> "Host"
-            "消毒剂" -> "Disinf"
-            "无线模块" -> "WirelessModule"
-            "安全阀" -> "SafetyValve"
-            "IC读卡机" -> "ICCardReader"
-            "终端设备" -> "TerminalEquip"
-            "无线" -> "Wireless"
-            "新风段" -> "FreshAir"
-            "触点" -> "Contact"
-            "低压断路器(空气开关)" -> "LowBreaker"
-            "前端" -> "FrontEnd"
-            "红外探测器" -> "InfraredDetector"
-            "供水" -> "WaterSupply"
-            "柴发机组" -> "ChaiFa"
-            "减压阀" -> "PressRreliefValve"
-            "提升泵" -> "LiftingPump"
-            "中水回用池" -> "ReclaWater"
-            "监视器" -> "Monitor"
-            "移动信号放大" -> "MobileSignal"
-            "软件厂家" -> "SoftwareManu"
-            "调制器" -> "Modulator"
-            "水质要求" -> "WaterQuality"
-            "接收器" -> "Receiver"
-            "二氧化碳灭火器" -> "CarbonExting"
-            "技术参数-红外测温仪" -> "InfraredTempInstru"
-            "光端机" -> "OpticalTerminal"
-            "水处理" -> "WaterTreatment"
-            "空气侧" -> "AirSide"
-            "热水锅炉" -> "HotWaterBoiler"
-            "基本设定参数" -> "BasicSetParam"
-            "蒸发器" -> "Evaporator"
-            "发生器" -> "Generator"
-            "高压" -> "HighPressure"
-            "过滤器" -> "Filter"
-            "节流元件" -> "ThrotElement"
-            "外壳" -> "Shell"
-            "瞬时状态" -> "InstanState"
-            "配电柜" -> "PowerCabinet"
-            "过滤段" -> "FilterSegment"
-            "负荷开关" -> "LoadSwitch"
-            "保护" -> "Protect"
-            "功能" -> "Function"
-            "保温层" -> "InsulLayer"
-            "制热工况" -> "HeatingCondi"
-            "接触器" -> "Contactor"
-            "沉淀池" -> "SedimenTank"
-            "身份证阅读器" -> "IDCardReader"
-            "软化器" -> "Softener"
-            "水泵" -> "WaterPump"
-            "技术参数-IC温度传感器" -> "ICTempSensor"
-            "组件" -> "Assembly"
-            "技术参数-热敏电阻温度传感器" -> "ThermTempeSensor"
-            "联轴器" -> "Coupling"
-            "集热板" -> "CollectorPlate"
-            "线圈" -> "Coil"
-            "功放" -> "PowerAmpli"
-            "嵌板" -> "Panel"
-            "盘管" -> "Conduits"
-            "换热器" -> "HeatExcha"
-            "盖板" -> "CoverPlate"
-            "VLAN" -> "Vlan"
-            "储水箱" -> "WaterStoragetank"
-            "施肥器" -> "FertiApplicator"
-            "其他" -> "Other"
-            "功率" -> "Power"
-            "关键指标" -> "KeyIndic"
-            "通断阀" -> "OnOffValve"
-            "细格栅" -> "FineScreens"
-            "电动机" -> "Motor"
-            "瞬时指标" -> "InstanIndex"
-            "压力" -> "Pressure"
-            "工作历信息" -> "WorkCalendar"
+            "运行维保" -> "operationMainte"
+            "核心层" -> "coreLayer"
+            "发热电缆设备" -> "thermCableEquip"
+            "车库出入口" -> "garageEntraExit"
+            "整机" -> "completeMachine"
+            "电流" -> "electricCurrent"
+            "供应购买" -> "supplyPurchase"
+            "塑料管" -> "plasticPipe"
+            "技术参数-录音" -> "soundRecording"
+            "现场安装" -> "siteinstall"
+            "技术参数" -> "techParam"
+            "累计指标" -> "cumulaIndex"
+            "频率" -> "freque"
+            "活性炭罐" -> "canister"
+            "再热段" -> "reheaSection"
+            "接口" -> "interf"
+            "变频机组" -> "frequeUnit"
+            "调节阀" -> "regulValve"
+            "矩形风管" -> "rectDuct"
+            "减速器" -> "retarder"
+            "加压泵" -> "pressPump"
+            "圆形风管" -> "circularDuct"
+            "断路器" -> "circuitBreaker"
+            "电压互感器" -> "voltageTrans"
+            "止回阀" -> "checkValve"
+            "园林" -> "gardens"
+            "消毒设备" -> "disinfeEquip"
+            "总体" -> "population"
+            "发电机组" -> "generatorSet"
+            "表冷段" -> "surfaceCoolSection"
+            "喷泉" -> "fountain"
+            "低压" -> "lowPress"
+            "播放器" -> "player"
+            "玻璃破碎探测器" -> "glassCrushDetec"
+            "末端" -> "end"
+            "密码键盘" -> "passwordKeyb"
+            "灯具" -> "lampsLanterns"
+            "网络" -> "network"
+            "出口水质" -> "exportWaterQuality"
+            "输出" -> "output"
+            "排风" -> "exhaustAir"
+            "视频式" -> "videoType"
+            "显示屏" -> "display"
+            "总谐波" -> "totalHarmonic"
+            "混风段" -> "mixingSection"
+            "电梯" -> "elevator"
+            "汇聚层" -> "distriLayer"
+            "摄像头" -> "camera"
+            "电池" -> "battery"
+            "电流互感器" -> "currentTrans"
+            "技术参数-玻璃管式温度计" -> "glassTubeTherm"
+            "显示" -> "display"
+            "应急照明" -> "emerLighting"
+            "技术参数-压力式温度计" -> "pressureThermo"
+            "空间辐射指标" -> "spatialRadiIndex"
+            "照片文档" -> "photoDoc"
+            "其他设备" -> "otherEquip"
+            "指纹识别仪" -> "fingerIdent"
+            "电压" -> "voltage"
+            "开关状态" -> "switchingState"
+            "对讲系统" -> "intercomSystem"
+            "反渗透" -> "reverseOsmosis"
+            "电源" -> "powerSupply"
+            "接入层" -> "accessLayer"
+            "保温材料" -> "thermalInsulMaterial"
+            "高频头" -> "tuner"
+            "打印机" -> "printer"
+            "碳晶地暖设备" -> "carCryGroHeatEquip"
+            "干粉灭火器" -> "dryPowderExti"
+            "技术参数-电阻温度传感器" -> "resisTempeSensor"
+            "瞬时参数" -> "instantParam"
+            "运行参数" -> "runParam"
+            "紫外线杀菌器" -> "ultravSteri"
+            "吸收器" -> "absorber"
+            "前置功放" -> "preamplifier"
+            "通用" -> "currency"
+            "紫外线发生器" -> "ultravGener"
+            "技术参数-声音通用" -> "generalVoice"
+            "寻车" -> "carSearching"
+            "排放标准" -> "emissStand"
+            "水侧" -> "waterSide"
+            "塔盘水位" -> "trayWater"
+            "开关保护" -> "switchProte"
+            "太阳能" -> "solarEnergy"
+            "蒸汽锅炉" -> "steamBoiler"
+            "继电器" -> "relay"
+            "疏散指示" -> "evacuaInstr"
+            "车位" -> "parkingLot"
+            "接收指标" -> "receiIndex"
+            "臭氧发生器" -> "ozoneGenerator"
+            "电视信号" -> "tvSignal"
+            "畸变率" -> "distortRate"
+            "熔断器" -> "fuse"
+            "风机" -> "fan"
+            "技术参数-温度通用" -> "tempGeneral"
+            "蒸汽冷凝水回收装置" -> "steamConde"
+            "内胆" -> "internalBladder"
+            "累计参数" -> "cumuParam"
+            "主机" -> "host"
+            "消毒剂" -> "disinf"
+            "无线模块" -> "wirelessModule"
+            "安全阀" -> "safetyValve"
+            "IC读卡机" -> "icCardReader"
+            "终端设备" -> "terminalEquip"
+            "无线" -> "wireless"
+            "新风段" -> "freshAir"
+            "触点" -> "contact"
+            "低压断路器(空气开关)" -> "lowBreaker"
+            "前端" -> "frontEnd"
+            "红外探测器" -> "infraredDetector"
+            "供水" -> "waterSupply"
+            "柴发机组" -> "chaiFa"
+            "减压阀" -> "pressRreliefValve"
+            "提升泵" -> "liftingPump"
+            "中水回用池" -> "reclaWater"
+            "监视器" -> "monitor"
+            "移动信号放大" -> "mobileSignal"
+            "软件厂家" -> "softwareManu"
+            "调制器" -> "modulator"
+            "水质要求" -> "waterQuality"
+            "接收器" -> "receiver"
+            "二氧化碳灭火器" -> "carbonExting"
+            "技术参数-红外测温仪" -> "infraredTempInstru"
+            "光端机" -> "opticalTerminal"
+            "水处理" -> "waterTreatment"
+            "空气侧" -> "airSide"
+            "热水锅炉" -> "hotWaterBoiler"
+            "基本设定参数" -> "basicSetParam"
+            "蒸发器" -> "evaporator"
+            "发生器" -> "generator"
+            "高压" -> "highPressure"
+            "过滤器" -> "filter"
+            "节流元件" -> "throtElement"
+            "外壳" -> "shell"
+            "瞬时状态" -> "instanState"
+            "配电柜" -> "powerCabinet"
+            "过滤段" -> "filterSegment"
+            "负荷开关" -> "loadSwitch"
+            "保护" -> "protect"
+            "功能" -> "function"
+            "保温层" -> "insulLayer"
+            "制热工况" -> "heatingCondi"
+            "接触器" -> "contactor"
+            "沉淀池" -> "sedimenTank"
+            "身份证阅读器" -> "idCardReader"
+            "软化器" -> "softener"
+            "水泵" -> "waterPump"
+            "技术参数-IC温度传感器" -> "icTempSensor"
+            "组件" -> "assembly"
+            "技术参数-热敏电阻温度传感器" -> "thermTempeSensor"
+            "联轴器" -> "coupling"
+            "集热板" -> "collectorPlate"
+            "线圈" -> "coil"
+            "功放" -> "powerAmpli"
+            "嵌板" -> "panel"
+            "盘管" -> "conduits"
+            "换热器" -> "heatExcha"
+            "盖板" -> "coverPlate"
+            "VLAN" -> "vlan"
+            "储水箱" -> "waterStoragetank"
+            "施肥器" -> "fertiApplicator"
+            "其他" -> "other"
+            "功率" -> "power"
+            "关键指标" -> "keyIndic"
+            "通断阀" -> "onOffValve"
+            "细格栅" -> "fineScreens"
+            "电动机" -> "motor"
+            "瞬时指标" -> "instanIndex"
+            "压力" -> "pressure"
+            "工作历信息" -> "workCalendar"
             else -> {
                 ""
             }