S

skboot-zhongye

中冶项目线上迁移

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

待完善