You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
13 KiB
13 KiB
代码提交审查清单
代码风格
- 所有文件的换行符使用 Unix 格式(LF或
/n),禁止使用 Windows 格式(CRLF或/r/n) - 在Linux/Mac下提交时,文件不得设置
x执行权限 - Java文件import类禁止使用
* - 不需要的代码直接删除
SQL
- 所有SQL不能放在业务代码中,必须写在独立的SQL文件中
- SQL必须兼容Oracle和MySQL,无法兼容需使用Clause区别差异
- SQL中所有主句的变量,在Param参数中设置为非空
- SQL中in绑定变量,必须使用ArrayList参数
- 所有SQL必须有单元测试案例
- SQL中有Clause的,必须有多个单元测试案例测试不同的SQL组合
Controller
- 使用VO对象接受前端参数
单元测试验证
- 提交主线版本的代码必须完整的执行SQL单元测试进行SQL验证
- 需要先将lis-framework-base中的SysConst的下面变量设置成true
- SQL_JUNIT_TEST_IND
- SQL_JUNIT_TEST_GRP
- SQL_JUNIT_TEST_EASYQUERY
- 使用maven命令`mvn clean`清除已有编译结果
- 因上述变量为final,必须执行清除
- 使用maven命令`mvn test`执行单元测试
- 检查所有输出中没有fail的执行结果。如果有,则需要进行修正
- MySQL和Oracle两个不同数据库下都需要执行通过
LIS 代码规范
LIS 2022 技术框架更新
- Springboot升级到 2.6.6
- JDK最低版本 8,不再支持 JDK7
- Tomcat最低版本 8.5
LIS 2021 技术框架更新
- 文件路径开发规范
- 严禁使用数据库LDSysVar存储文件路径信息
- 严禁使用以下方式获取物理路径:
request.getSession().getServletContext().getResource("/").getPath()session.getServletContext().getRealPath("/")application.getRealPath("/")
- 具体规范参见 文件路径开发规范.md
LIS 2020 技术框架更新
- 全面使用VO对象
- 前端MulLine定义必须以Grid结尾
- 否则当MulLine只有一行数据时,后端VO将无法以数组形式获取数据
- 其他变化详见新版 Controller使用规范.md
- 前端MulLine定义必须以Grid结尾
- 全面取消UI类,不再需要开发
- SQL全面从业务代码中剥离,与Schema一同构成独立的DAO层
- 所有SQL必须在独立的SQL文件中
- 禁止使用
new SQLwithBindVariables产生SQL,全部从SQL类中获取 - 需要区分 单表SQL 和 多表SQL
- 详见 SQL开发规范.md
-
打印模版文件后移
- 放在service模块的
/src/main/resources下 - 不再放在web模块下
- 放在service模块的
-
Schema支持@Version乐观锁注解
- 表现:
- Schema在Version控制字段上有@Version注解
- 当前仅支持数字版本记录
- 定义:
-
对需要并发控制的表,新增一个int类型的字段,该字段必须设置默认值且为1。
- 不能使用0作为默认值,否则与Schema int类型默认值相同,在使用db.query方法时会失效
-
如果使用PDM生成Schema,需要在PMD的Column的Keyword信息中增加关键词
@Vesion -
如果连接数据库生成Schema,需要在数据库的列注释上增加关键词
@Version -
@Version标记的几种写法
写法 是否锁行 是否允许执行Update语句 控制效果 @Version 否 是 最弱 @Version(lock) 是 是 弱 @Version(nosql) 否 否 强 @Version(nosql+lock) 是 否 最强 - SQL操作限制
暂缓实现- @Version的sqlExecution参数如果为false,则该表无法执行SQL Update语句,只能使用Schema方式更新
- Lock锁表限制
暂缓实现- @Version的lock参数如果为true,该行数据在Schema执行
update前先执行select for update
- @Version的lock参数如果为true,该行数据在Schema执行
- SQL操作限制
-
- 使用:
- 没有明显不同,开发者不用关心@Version字段,由系统自动处理。
- DB.update() / DBSet.update() / MMap.put(Schema, Update) / MMap.put(Set, Update)
- 通常需要先查询,再更新(MMap.put默认支持自动查询)
- 未查询的更新会报错
- 表现:
- SchemaSet支持forEach方式遍历
- 可以使用
for (XXXSchema schema : XXXSet)遍历了Set中的Schema对象了
- 可以使用
- SSRS支持forEach方式遍历
- 使用
for (SSRS.RowData rowData : ssrs)遍历了SSRS中的行数据- 使用
int rowNum = rowData.getRowNum()获取行号(从0开始,而不是1) - 使用
String colI = rowData.getData(i)获取本行第i列数据(从0开始,而不是1) - 使用
String[] row = rowData.getData()获取本行所有数据
- 使用
- 使用
- VData变化
- 用法改为
mInputData.get(GlobalInput.class, 0) - 不再支持
(GlobalInput) mInputData.getObjectByObjectName("GlobalInput", 0)
- 用法改为
- MMap变化
- 用法改为
mMap.put(xxxSchema, MMap.Action.INSERT) - 不再支持
mMap.put(xxxSchema, "INSERT")用法 - MMap可放入的对象
- Schema
- SchemaSet
- SQLwithBindVariables
- MMap.Action支持的Action包括:
- INSERT、DROP、TRUNCATE、CREATE、UPDATE、DELETE
- SELECT
- DELETE_INSERT
- BLOBINSERT、BLOBUPDATE、BLOBDELETE
- 用法改为
- @Transaction事务统一管理
- 事务统一管理是指:或者全部提交,或者全部回退。
- 在Controller中请求方法上增加@Transaction注解,在整个调用链中将统一事务管理。
- 有异常,全部rollback;
- 执行过程中有一个rollback,全部rollback;
- 其他情况下,默认提交。
- 如果业务逻辑需要手动rollback,请使用
DBConnPool.rollback();
- 不支持自定义线程的事务统一管理。
LIS 2020
- LIS7业务功能升级,包括多主险、多投保人、家庭单、豁免责任、主流重疾等业务功能。
LIS 2019
- 版本号使用规范
- 只允许在主POM文件中设置版本号
- 其他任何子模块都不得使用具体版本号
- 包括第三方依赖,Maven插件等
- EasyScan 解耦调用规范
- 通过Java API调用
- 直接使用的模块
- pom中引入依赖:lis-component-easyscan-api
- 通过EasyScanFactory获取所需的API接口类后,使用所需的API方法即可。
- 通过看API上的Swagger注解了解使用说明
- 部署:
- 在lis-web中增加补充依赖:lis-component-easyscan-impl
- 直接使用的模块
- 通过URL调用的
- 通过Java API调用
- Maven须使用3.5.0以上版本
- 所有pom文件使用了${revision}占位符统一管理LIS版本号,${revision}需要Maven3.5.0以上版本支持
- IntelliJ IDEA等IDE内置Maven低于3.5.0的,需要修改其配置
- 使用JDK7可能出现“Failed to execute goal org.codehaus.mojo:flatten-maven-plugin:1.1.0:flatten (flatten)”错误
- 切换到JDK8运行,成功一次后,再继续使用JDK7
- flatten-maven-plugin插件主要用与在mvn install/depoly时将${revision}变量自动替换成指定的版本号,确保仓库中pom文件正确
- Schema及Maker升级
- 最新版本的LIS使用了lombok,使用IDE开发需要安装对应插件
- 下载地址: https://projectlombok.org/download
- Eclipse安装: https://projectlombok.org/setup/eclipse
- IntelliJ IDEA安装: https://projectlombok.org/setup/intellij
- 最新版本的LIS使用了lombok,使用IDE开发需要安装对应插件
- LIS从2019开始是多语言版本,所有开发(WEB/JAVA/SQL)都必须支持多语言
- 参看 多语言开发规范.md
- LIS从2019开始使用Spring Controller,不再使用Save.jsp形式
- JSP中禁止书写Java逻辑
- JSP中只能使用JDK中的类,以及lis-framework-base中的LIS系统Java类,其他任何Java类都不能使用!
- 参看 Controller使用规范.md
- SQL书写规范升级
- 参看 SQL新规范.md
- ExeSQL、SchemaDB类、MMap(PubSubmit)不再支持String的SQL操作,LIS所有SQL必须使用绑定变量形式!
- 前台SQL查询升级(EasyQuery)
- JS中直接写完整SQL查询不再支持,已无法使用
- 参看 EasyQuery新规范.md
- "双击下拉选择"控件升级(ShowCodeList和CodeQueryBL)
- 读写分离支持
- 在SchemaDB和ExeSQL中可以传入只读数据源的标志
- 在@SQL注解中可以通过设置readOnly属性
- 在Controller的方法上增加@ReadOnly注解
- 整个调用链全部会使用只读数据源
- 日志记录统一使用slf4j
注意:BusinessDelegate不再使用,直接new对象即可!
LIS 简易使用说明
- 不使用IDE
- 使用
git checkout合适的分支 - 修改
lis-framework-common/src/main/resources/datasource.yml数据库相关信息 - 在根目录下使用
mvn package命令编译打包 lis-web/target/lis.war即是最终的应用!
- 使用
- 使用IDEA开发
- 在IDEA中增加"Lombok"插件
- 在IDEA中使用"Open"指向本项目所在目录直接打开
- 调整IDEA的Maven(Newest)、SDK(1.8+)为合适版本
- 在"Run/Debug Configurations"中增加Tomcat配置
- 设置合适的Tomcat版本
- 设置"On 'Update' action"和"On frame deactivation"为"Update classes and resources"
- 设置"Deployment"为"lis-web:war: exploded"
- 设置"Application context"为合适的路径
- 启动Tomcat配置Run/Debug
- IDEA控制台在Windows下乱码
- 在点击菜单"Help->Edit Custom VM Options",在"idea.vmoptions"中增加一行:-Dfile.encoding=UTF-8
- 在Tomcat配置"Vm options"中添加:-Dfile.encoding=UTF-8
- 管理员账号:001/admin001
LIS7 2018 编译说明
JDK7编译不再支持JDK7需要调整JDK的Classpath设置,将jre/lib/plugin.jar放在jre/lib/jfxrt.jar之前两个系统jar中都存在netscape.javascript.JSObject类,但我们使用的是plugin.jar下的
- OpenJDK编译
- 缺少netscape.javascript.JSObject类,需要复制OracleJDK下jre/lib/plugin.jar到OpenJDK里
- 第三方Jar说明
- 公网非中央库
- ojdbc6-11.2.0.3.jar
- kaptcha-2.3.2.jar
- itextasian-1.5.2.jar
- QRCode_swetake-3.0.0.jar
- jimi-1.0.jar
- 润乾报表私有
- dm-1.0.jar
- guide-1.0.jar
- report-1.0.jar
- icu4j-3.4.5.jar
- report5StaticHtml-1.0.jar
- itext2_rq-1.0.jar
- LIS私有
- F1J9Swing-1.0.jar
- im-1.0.jar等
- 公网中央库
- 其他所有
- 公网非中央库
LIS7 2018 部署说明
- 单个Web并不能直接运行,需要合并公共Web才可运行
- lis-web 为合并部署运行设计,根据需要在lis-web的dependency中添加所需的模块即可
- 每个模块可以在自己的web中增加依赖对应的service,在这里只引用web
- 也可以在模块自己的web中不含service,在这里使用"Web+Service"组合的模块引用
- 建议使用此模式,能大大降低项目部署打包占用的磁盘空间(20G -> 3G),提高打包速度
- 默认使用配置
- 最基本的Web(+Service)
- lis-framework-web(+service) 公共页面
- lis-logon-web(+service) 登录框架
- 本项目结构是研发使用,正式项目部署请根据项目情况拆分此项目
- Websphere与Weblogic部署
- 在Websphere下部署时需要删除web.xml文件(WAS9下测试)
- 在Weblogic下部署需要确保存在web.xml文件和weblogic.xml文件(Weblogic12c下测试)
- web.xml和weblogic.xml文件在"lis-framework-web/src/main/webapp/WEB-INF/"下
LIS7 2018 架构说明
- 详见 代码规范之项目结构规范
