审计记录

张雷 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217
# 1.框架说明

### 1.1框架说明

本框架基于 **JeecgBoot** 框架进行二次开发,整体架构图见同级目录【技术架构图.png】, **JeecgBoot** 框架请http://doc.jeecg.com/1273752自行学习

### 1.2打包方式

项目基于maven构建,应用 clean package即可完成项目打包,生成的部署包在sk-module-system模块的target下,打出的部署包包含两种,第一种为tar.gz型,第二种为fatjar型

#### 1.2.1运行fatjar型部署包

运行打出的jar

#nohup java -jar 你的jar &  

查看运行日志

#tail -f -n 5000 nohup.out 

#### 1.2.2运行tar.gz型部署包

运行打出的tar.gz包

#tar -xzvf xxx.tar.gz -C 你的部署路径

进入解压后的文件夹内,找到bin文件夹

启动

#./startup.sh

停止

#./shutdown.sh

#### 1.2.3线上问题远程调试

##### 1.2.3.1.部署使用tar.gz包的情况

当使用框架打出的tar.gz包,启动项目是,启动脚本内已经内置了远程调试选项开关,若线上有问题需要远程调试,需要修改启动脚本,vim bin/startup.sh 找到SKBOOT_DEBUG_ENABLE参数将false改为true,重启系统,远程调试端口为8787

eclipse远程调试:

右键项目--Debug As--Debug Configurations--Remote Java Application,在connect面板上配置远程服务器ip、远程调试端口8787,在source面板上,将项目源代码添加进来,即可开启eclipse远程调试,若调试结束需要关闭,请点击在debug透视图的工具栏上,停止服务边上的Disconnect,即可断开远程调试

idea远程调试:

##### 1.2.3.2.部署使用fatjar的情况

服务端启动脚本请自行添加开启远程调试配置,远程调试配置为【        -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=y  】,eclipse、idea端的使用方式参考上面操作



# 2.模块结构

## 2.1模块说明

### 2.1.1 sk-module-system

说明:框架基础模块,包含用户权限管理字典管理等,框架的所有配置文件也在此模块,此包依赖了其他业务包,若基于此框架开发,务必带着此maven模块

### 2.1.2 sk-base-common

说明:该包提供了系统需要的一些公共组件及底层配置,若基于此框架开发,务必带着此maven模块


### 2.1.4 sk-module-datafill

说明:数据填报

### 2.1.5 sk-module-equipment

说明:设备管理

### 2.1.6 sk-module-expert

说明:专家系统

### 2.1.7 sk-module-inspection

说明:巡检系统


### 2.1.9 sk-module-third

说明:三方平台对接接口

# 3.开发说明

### 3.1代码生成

代码生成使用方式,请参照http://doc.jeecg.com/1273752

### 3.2建表注意事项

在创建业务表的时候,请默认包含下列字段,请用id字段作为表主键,下列字段数据框架会自动填充

CREATE TABLE `equip_biaod_stand` (
  `id` varchar(40) NOT NULL COMMENT '主键',
  `depart_id` varchar(40) NOT NULL COMMENT '机构id',
  `tenant_id` varchar(40) DEFAULT NULL COMMENT '租户id',
  `create_by` varchar(40) DEFAULT NULL COMMENT '创建人id',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(40) DEFAULT NULL COMMENT '修改人id',
  `update_time` datetime DEFAULT NULL COMMENT '修改时间',
  `del_flag` int(1) DEFAULT '0' COMMENT '删除标识,0有效,1删除',
) 

# 4.工具及组件

## 4.1 本框架多数据源操作方式

### 4.1.1 手动切换

​		在application.yml配置文件中配置数据库相关信息,在system系统管理模块的config包下JdbcTempleteConfig中添加数据源初始化bean
​		在业务代码中使用时,从spring容器中获取对应实例即可,例如
​		JdbcTemplate masterDB = (JdbcTemplate)SpringContextUtils.getBean("bean的名字");


### 4.1.2 注解方式

​		直接在方法上或类上添加@DM注解,详见http://doc.jeecg.com/1273932

## 4.2 获取当前登陆用户信息相关信息

​		BaseContextHandler里面使用threadLocal存储数据,可以本线程的里的各个类中进行使用,源代码在sk-base-common模块下BaseContextHandler类中, 使用方式如下:

​		BaseContextHandler.getUserId();//获取登陆名
​		BaseContextHandler.getUserName();//获取登陆用户真实名字
​		BaseContextHandler.getToken();//获取登陆用户的token

​		BaseContextHandler.get("id");//获取登陆用户的id

## 4.3 excel的导入导出操作

### 4.3.1针对复杂excel操作

详见sk-base-common模块下com.skua.common.system.excel包下面的类,里面包含使用实例

### 4.3.2针对简单的excel操作

可直接使用框架提供的@excel注解接口,代码生成后的即可使用

excel导出普通字典的翻译方法
@Excel(name = "性别", width = 15,dicCode="sex")

excel导出业务字典的翻译方法
@Excel(name = "性别", width = 15, dictTable = "字典业务表名" , dicText = "字典值")

## 4.4 通用树形结构算法类

详见sk-base-common模块下com.skua.common.system.util.TreeUtils.java工具类,
使用方法参照com.skua.modules.system.controller.CustomDictController类里面的queryDictTree方法

## 4.5根据厂获取点实时数据、计算数据组件

详见sk-base-common模块下com.skua.modules.system.controller.FactoryInfoController类,如果在自己的service层需要根据厂获取点的实时或计算数据,可以注入com.skua.modules.system.service.IFactoryInfoService,里面方法的使用,请看注释

## 4.6 ios版APP版本检测更新

ios开发工程师直接调用/v1/app/editionCheck/check接口即可范围上架的APP版本号

详见sk-module-app模块下的com.skua.modules.editioncheck.EditionCheckController类,当app申请上架通过后将提供的id值配置到application-dev.yml、application-prod.yml配置文件中的skua.iosUpdateUrl地址上,若苹果提供的版本检测网址发生变化,请注意更新application-dev.yml、application-prod.yml配置文件中的skua.iosUpdateUrl地址

## 4.7 计算框架组件

标准算法库的计算框架采用aviator,模仿sql中的sum、avg、min、max已封装成工具方法,具体用法详见sk-base-common模块下的com.skua.common.util.aviator.TestAviator示例,后期如果继续封装自定计算函数,请将工具类丰富到com.skua.common.util.aviator包下

## 4.8 @AutoLog、@Dict、@CustomDateFormat注解的使用

1.在类上添加@AutoLog注解,会将这个类里所有方法的访问日志存储的数据库的日志表,可做操作留痕

2.在实体的属相上添加@Dict注解可以实现字典的翻译,前提是需要将字典录入到系统字典管理中,翻译后的字典,在前端vue页面上使用字段_dictText即可获取翻译结果,另外这个注解也可以使用业务表作为字典,例如:@Dict(dicCode = "编码",dictTable = "表名",dicText = "名称")

3.当数据库存储日期的字段为varchar型时,使用@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")无法实现日期格式化,使用@CustomDateFormat注解加到实体的属性上,即可实现字符串日期的格式化效果

## 4.9定时器的使用-定时器表达式

此框架定时器整合的是开源的quartz定时框架

配置定时器表达式方式

方式1:使用系统管理-定时任务功能中自带的界面话配合功能

方式2:直接手写定时器表达式,可自行百度quartz定时器表达式,也可参照https://www.cnblogs.com/lvlv/p/11368448.html这篇博客完成表达式编写

quartz表达式在线验证网址:http://cron.qqe2.com/

## 4.10工作流组件

### 4.10.1工作流组件源码

源代码:在sk-module-datafill模块下的com.skua.modules.audit、com.skua.modules.process包下,节点监听类接口在sk-base-common模块下的com.skua.common.system.listener下

### 4.10.2工作流组件使用

​		第一步,在你的业务表中添加complete_flag字段,这个字段存储 yes、no、bysl,分别代表已办结、未办结、不予受理

​		第二步,在系统管理-库表管理模块中,新建你的表信息,并初始化该表所有字段,这一步是为了节点中配字段权限使用

​		第三步,在系统管理-流程配置模块中,输入你的表名,生成流程信息,并进行流程节点配置,在节点中有一个监听类的概念,这个意思是,当这个节点审批通过时,可以自动调用你这个类里面写的doService方法中的逻辑,你可以在节点审批通过后做写其他的工作,前提是你的类一定要实现ProcessHandleService这个接口,并且交由spirng容器管理

​		第四步,在你的sql语句中关联view_audit_info视图进行查询,详细代码参照设备管理-设备故障报修模块代码,代码在sk-module-equip模块下的com.skua.modules.equip.fault包下

​		第五步,开发前端vue页面,同理页面参照该框架配套的sk-view,设备管理-设备故障报修,列表页和表单页进行开发

## 4.11 一些其他工具方法

平台或业务开发中会封装一些小工具类,请根据自己需求在sk-base-common模块下的com.skua.common.util包下自行查找,若没有可使用的,可自行进行方法封装形成组件化,并完善到该包下,方便其他开发人员使用



# 5.打通人人网框架方法

待完善