瀏覽代碼

开发说明

zhangweixin 4 年之前
父節點
當前提交
546267ca52

+ 42 - 1
docs/dev/lib/coding/README.md

@@ -1,4 +1,45 @@
-#### 实体类结构规范
+# 开发规范
+
+## 代码文档规范
+* 为保持代码与文档一致,所有代码的类,函数,属性都必需写入相应的注释。注释以javadoc规范为准。
+* 代码文档将使用dokka工具自动化生成。
+
+![开发 dev](./img/dev_001.jpg)
+
+## 实体类定义规范
+* 代码文档注释。使用/** */加注释,不可以使用 //。类对象的注释必需添加作者。
+* Swagger注解
+    * 类使用ApiModel注解,description为描述内容。
+    * 属性使用ApiModelProperty注解,value为描述内容。日期型默认的输出格式与我们要求的数据格式不同,通过加example指写其输出内容。
+      例如:@ApiModelProperty(value = "创建时间", example = "2019-03-01 10:10:10")
+      
+![开发 dev](./img/dev_003.jpg)
+
+![开发 dev](./img/dev_002.jpg)  
+      
+* Json注解(FastJson)
+    * 首字母大小不同,不需要加注解。数据字典定义的首字母大写,实体类属性名的首字母小写(按java命名规范),由应用程序统一控制输出的json属性首字母大写;
+    * 属性名与Json输出名称不一致,要加注解@JSONField。如建筑名称
+    * 不希望生成到json的属性加serialize = false,@JSONField(name = "SpeedSensor",serialize = false )
+* 所有属性默认为空。框架在更新时默认不更新为空的字段
+* 在数据中心中默认所有实体类都有lastUpdate与createTime属性
+* lastUpdate与createTime只从数据库读取。 @Column注解的insertable=false, updateable=false
+* 数据库映射注解(框架使用该注解对数据库进行读写操作)
+    * @Table注释标注该实体类对应的数据库表,如果数据库表有模式,则name=“模式名.表名”。
+    * 属性对应数据库表的主键,使用@Id标注释。
+    * 属性要写入数据库或从数据库读取需加@Column注解,name属性为数据库表对象的字段。
+    * 插入时不插入数据库的字段@Column注解的insertable=false。
+    * 更新时不更新数据库的字段@Column注解的updateable=false。
+* 实体类可以通过文档中数据库表介绍,根据表自动生成,达到 设计即完成的操作。
+
+## 控制类规范
+
+::: details 查看代码
+<<< @/docs/dev/lib/coding/src/PropertyController
+:::
+
+
+
 #### 控制类 、service 规范
 #### 接口使用方式、调用,函数调用,自定义函数使用
 

二進制
docs/dev/lib/coding/img/dev_001.jpg


二進制
docs/dev/lib/coding/img/dev_002.jpg


二進制
docs/dev/lib/coding/img/dev_003.jpg


+ 42 - 0
docs/dev/lib/coding/src/build.gradle

@@ -0,0 +1,42 @@
+
+group 'cn.sagacloud.server'
+version '2.0.0'
+
+buildscript {
+    repositories {
+        maven{url MAVEN_REPO_PUBLIC_URL}
+        maven{ url "http://maven.aliyun.com/nexus/content/groups/public/"}
+        mavenCentral()
+        jcenter()
+    }
+    dependencies {
+        classpath group: 'org.springframework.boot', name: 'spring-boot-gradle-plugin', version: SPRING_BOOT_VERSION
+        classpath group: 'org.jetbrains.kotlin', name: 'kotlin-gradle-plugin', version: KOTLIN_VERSION
+        classpath group: 'org.jetbrains.dokka', name: 'dokka-gradle-plugin', version: DOKKA_VERSION
+        classpath group: 'com.google.protobuf', name: 'protobuf-gradle-plugin', version: PROTOBUF_GRADLE_VERSION
+        // ssh插件, 用于部署
+        classpath 'org.hidetake:gradle-ssh-plugin:2.10.1'
+    }
+}
+
+allprojects {
+    repositories {
+        maven{ url "http://maven.aliyun.com/nexus/content/groups/public/"}
+        maven{
+            url MAVEN_REPO_PUBLIC_URL
+            credentials {
+                username = NEXUS_USERNAME
+                password = NEXUS_PASSWORD
+            }
+        }
+        maven { url "https://repo.spring.io/milestone" }
+        mavenCentral()
+        jcenter()
+    }
+    tasks.withType(Javadoc) {
+        options{ encoding "UTF-8"
+            charSet "UTF-8"
+            links "http://docs.oracle.com/javase/8/docs/api"
+        }
+    }
+}

+ 115 - 0
docs/dev/lib/coding/src/propertycontroller.kt

@@ -0,0 +1,115 @@
+/*
+ * ********************************************************************************************************************
+ *
+ *                     :*$@@%$*:                         ;:                ;;    ;;
+ *                   :@@%!  :!@@%:                       %!             ;%%@@%$ =@@@@@@@%;     @%@@@%%%%@@@@@
+ *                  :@%;       :$=                       %%$$$%$$         ;$$  ;$@=   !@$
+ *                  =@!                                  %!              @ $=;%   !@@@%:      !$$$$$$$$$$$$$$=
+ *                  =@*                                  %!              @ $= % %@=   =%@!      %=
+ *             *$%%! @@=        ;=$%%%$*:                %!              @ $= % =%%%%%%@$      *%:         =%
+ *           %@@!:    !@@@%=$@@@@%!  :*@@$:              %!              @ $= % $*     ;@      @*          :%*
+ *         ;@@!          ;!!!;:         ;@%:      =======@%========*     @ $$ % $%*****$@     :@$=*********=@$
+ *         $@*   ;@@@%=!:                *@*
+ *         =@$    ;;;!=%@@@@=!           =@!
+ *          %@$:      =@%: :*@@@*       %@=                    Copyright (c) 2016-2019.  北京上格云技术有限公司
+ *           ;%@@$=$@@%*       *@@@$=%@@%;
+ *              ::;::             ::;::                                              All rights reserved.
+ *
+ * ********************************************************************************************************************
+ */
+
+package cn.sagacloud.server.datacenter.controllers
+
+import cn.sagacloud.server.datacenter.models.entities.Property
+import cn.sagacloud.server.datacenter.services.PropertyService
+import com.sybotan.base.extensions.toJson
+import com.sybotan.database.SFilter
+import com.sybotan.service.SPageContext
+import com.sybotan.service.models.requests.SCountRequest
+import com.sybotan.service.models.requests.SCreateRequest
+import com.sybotan.service.models.requests.SQueryRequest
+import com.sybotan.service.models.requests.SUpdateRequest
+import com.sybotan.service.models.responses.SBaseResponse
+import com.sybotan.service.models.responses.SCountResponse
+import com.sybotan.service.models.responses.SCreateResponse
+import com.sybotan.service.models.responses.SQueryResponse
+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.RequestBody
+import org.springframework.web.bind.annotation.RequestMapping
+import org.springframework.web.bind.annotation.RestController
+
+/**
+ * 资产接口
+ *
+ * @author 张维新
+ */
+@Api(tags = ["资产接口"])
+@RestController
+@RequestMapping("/object/property")
+open class propertycontroller {
+    companion object {
+        /** 日志 */
+        private val logger = LoggerFactory.getLogger(PropertyController2::class.java)
+    } // Companion object
+
+    /**
+     * 创建资产
+     *
+     * @param   request        资产对象列表
+     * @return                 创建结果信息
+     */
+    @ApiOperation(value = "创建资产信息", notes = "")
+    @PostMapping(value = ["/create"])
+    fun create(@RequestBody request: SCreateRequest<Property>): SCreateResponse<Property> {
+        return PropertyService.createList( request)
+    } // Function create()
+
+    /**
+     * 根据id删除资产
+     *
+     * @param   idList      id数组
+     * @return              删除的结果信息
+     */
+    @ApiOperation(value = "根据id删除资产信息", notes = "")
+    @PostMapping(value = ["/delete"])
+    fun delete(@RequestBody idList: ArrayList<Property>): SBaseResponse {
+        return PropertyService.deleteByKeysList(idList)
+    } // Function delete()
+
+    /**
+     * 更新资产信息
+     *
+     * @param   request     更新的内容对象
+     * @return              更新的结果
+     */
+    @ApiOperation(value = "更新资产信息", notes = "")
+    @PostMapping(value = ["/update"])
+    fun update(@RequestBody request: SUpdateRequest<Property>): SBaseResponse {
+        return PropertyService.updateList(request)
+    } // Function update()
+
+    /**
+     * 查询资产信息
+     *
+     * @param   request     查询信息条件
+     * @return              查询结果
+     */
+    @ApiOperation(value = "查询资产信息", notes = "级联查询对象:项目(project)、建筑(building)、楼层(floor)、设备(equipment)、设备族(equipFamilyList)、设备族名称(familyName)")
+    @PostMapping(value = ["/query"])
+    fun query(@RequestBody request: SQueryRequest): SQueryResponse<Property> {
+        return PropertyService.pageQuery(request)
+    } // Function query()
+
+    /**
+     * 根据条件查询统计数量
+     */
+    @ApiOperation(value = "根据条件查询统计数量", notes = "例子: 已经关联岗位的资产数量(\"Filters\": \" not EquipId isNull\"),未关联岗位的资产数量(\"Filters\": \" EquipId isNull\")")
+    @PostMapping(value = ["/count"])
+    fun count(@RequestBody request: SCountRequest): SCountResponse {
+        return PropertyService.count(request)
+    } // Function count()
+
+} // Class AssetsController

+ 1 - 1
docs/dev/lib/index.js

@@ -16,7 +16,7 @@ const content = [
         ]
     },
     {
-        title: "开发规范介绍",
+        title: "开发介绍",
         path: "/dev/lib/coding/"
     }
 ];