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.打通人人网框架方法
待完善